def append_new_operation(operations_element, options): """ Create op element and apend it to operations_element. etree operations_element is the context element dict options are attributes of operation """ attribute_map = dict((key, value) for key, value in options.items() if key not in OPERATION_NVPAIR_ATTRIBUTES) if "id" in attribute_map: if does_id_exist(operations_element, attribute_map["id"]): raise LibraryError(reports.id_already_exists(attribute_map["id"])) else: attribute_map.update({ "id": create_id(operations_element.getparent(), options["name"], options["interval"]) }) op_element = etree.SubElement( operations_element, "op", attribute_map, ) nvpair_attribute_map = dict((key, value) for key, value in options.items() if key in OPERATION_NVPAIR_ATTRIBUTES) if nvpair_attribute_map: append_new_instance_attributes(op_element, nvpair_attribute_map) return op_element
def append_new_operation(operations_element, options): """ Create op element and apend it to operations_element. etree operations_element is the context element dict options are attributes of operation """ attribute_map = dict( (key, value) for key, value in options.items() if key not in OPERATION_NVPAIR_ATTRIBUTES ) attribute_map.update({ "id": create_id( operations_element.getparent(), options["name"], options["interval"] ) }) op_element = etree.SubElement( operations_element, "op", attribute_map, ) nvpair_attribute_map = dict( (key, value) for key, value in options.items() if key in OPERATION_NVPAIR_ATTRIBUTES ) if nvpair_attribute_map: append_new_instance_attributes(op_element, nvpair_attribute_map) return op_element
def append_new( resources_section, id_provider, resource_id, standard, provider, agent_type, instance_attributes=None, meta_attributes=None, operation_list=None ): # pylint:disable=too-many-arguments """ Append a new primitive element to the resources_section. etree.Element resources_section is place where new element will be appended IdProvider id_provider -- elements' ids generator string resource_id is id of new resource string standard is a standard of resource agent (e.g. ocf) string agent_type is a type of resource agent (e.g. IPaddr2) string provider is a provider of resource agent (e.g. heartbeat) dict instance_attributes will be nvpairs inside instance_attributes element dict meta_attributes will be nvpairs inside meta_attributes element list operation_list contains dicts representing operations (e.g. [{"name": "monitor"}, {"name": "start"}]) """ attributes = { "id": resource_id, "class": standard, "type": agent_type, } if provider: attributes["provider"] = provider primitive_element = etree.SubElement(resources_section, TAG, attributes) if instance_attributes: append_new_instance_attributes( primitive_element, instance_attributes, id_provider ) if meta_attributes: append_new_meta_attributes( primitive_element, meta_attributes, id_provider ) create_operations( primitive_element, id_provider, operation_list if operation_list else [] ) return primitive_element
def append_new( resources_section, resource_id, standard, provider, agent_type, instance_attributes=None, meta_attributes=None, operation_list=None ): """ Append a new primitive element to the resources_section. etree.Element resources_section is place where new element will be appended string resource_id is id of new resource string standard is a standard of resource agent (e.g. ocf) string agent_type is a type of resource agent (e.g. IPaddr2) string provider is a provider of resource agent (e.g. heartbeat) dict instance_attributes will be nvpairs inside instance_attributes element dict meta_attributes will be nvpairs inside meta_attributes element list operation_list contains dicts representing operations (e.g. [{"name": "monitor"}, {"name": "start"}]) """ attributes = { "id": resource_id, "class": standard, "type": agent_type, } if provider: attributes["provider"] = provider primitive_element = etree.SubElement( resources_section, "primitive", attributes ) if instance_attributes: append_new_instance_attributes( primitive_element, instance_attributes ) if meta_attributes: append_new_meta_attributes(primitive_element, meta_attributes) create_operations( primitive_element, operation_list if operation_list else [] ) return primitive_element