def test_return_none_when_primitive_is_not_pacemaker_remote(self): self.assertIsNone( remote_node.get_node_name_from_resource( etree.fromstring(""" <primitive class="ocf" id="R" provider="heartbeat" type="dummy" /> """)))
def test_return_name(self): self.assertEqual( "R", remote_node.get_node_name_from_resource( etree.fromstring(""" <primitive class="ocf" id="R" provider="pacemaker" type="remote" /> """)))
def node_remove_remote( env, node_identifier, remove_resource, skip_offline_nodes=False, allow_remove_multiple_nodes=False, allow_pacemaker_remote_service_fail=False, ): """ remove a resource representing remote node and destroy remote node LibraryEnvironment env provides all for communication with externals string node_identifier -- node name or hostname callable remove_resource -- function for remove resource bool skip_offline_nodes -- a flag for ignoring when some nodes are offline bool allow_remove_multiple_nodes -- is a flag for allowing remove unexpected multiple occurrence of remote node for node_identifier bool allow_pacemaker_remote_service_fail -- is a flag for allowing successfully finish this command even if stoping/disabling pacemaker_remote not succeeded """ cib = env.get_cib() resource_element_list = _find_resources_to_remove( cib, env.report_processor, "remote", node_identifier, allow_remove_multiple_nodes, remote_node.find_node_resources, ) node_names_list = sorted( { remote_node.get_node_name_from_resource(node_element) for node_element in resource_element_list } ) if not env.is_cib_live: env.report_processor.report_list( _report_skip_live_parts_in_remove(node_names_list) ) else: _destroy_pcmk_remote_env( env, node_names_list, skip_offline_nodes, allow_pacemaker_remote_service_fail, ) # remove node from pcmk caches is currently integrated in remove_resource # function for resource_element in resource_element_list: remove_resource( resource_element.attrib["id"], is_remove_remote_context=True, )
def node_remove_remote( env, node_identifier, remove_resource, skip_offline_nodes=False, allow_remove_multiple_nodes=False, allow_pacemaker_remote_service_fail=False ): """ remove a resource representing remote node and destroy remote node LibraryEnvironment env provides all for communication with externals string node_identifier -- node name or hostname callable remove_resource -- function for remove resource bool skip_offline_nodes -- a flag for ignoring when some nodes are offline bool allow_remove_multiple_nodes -- is a flag for allowing remove unexpected multiple occurence of remote node for node_identifier bool allow_pacemaker_remote_service_fail -- is a flag for allowing successfully finish this command even if stoping/disabling pacemaker_remote not succeeded """ cib = env.get_cib() resource_element_list = _find_resources_to_remove( cib, env.report_processor, "remote", node_identifier, allow_remove_multiple_nodes, remote_node.find_node_resources, ) node_names_list = sorted({ remote_node.get_node_name_from_resource(node_element) for node_element in resource_element_list }) if not env.is_cib_live: env.report_processor.process_list( _report_skip_live_parts_in_remove(node_names_list) ) else: _destroy_pcmk_remote_env( env, node_names_list, skip_offline_nodes, allow_pacemaker_remote_service_fail ) #remove node from pcmk caches is currently integrated in remove_resource #function for resource_element in resource_element_list: remove_resource( resource_element.attrib["id"], is_remove_remote_context=True, )
def test_return_name_ignore_host(self): self.assertEqual( "R", remote_node.get_node_name_from_resource( etree.fromstring(""" <primitive class="ocf" id="R" provider="pacemaker" type="remote" > <instance_attributes> <nvpair name="server" value="HOST"/> </instance_attributes> </primitive> """)))