def add_level(lib_env, level, target_type, target_value, devices, force_device=False, force_node=False): """ Validate and add a new fencing level LibraryError lib_env -- environment int|string level -- level (index) of the new fencing level constant target_type -- the new fencing level target value type mixed target_value -- the new fencing level target value Iterable devices -- list of stonith devices for the new fencing level bool force_device -- continue even if a stonith device does not exist bool force_node -- continue even if a node (target) does not exist """ version_check = None if target_type == TARGET_TYPE_REGEXP: version_check = (2, 3, 0) elif target_type == TARGET_TYPE_ATTRIBUTE: version_check = (2, 4, 0) cib = lib_env.get_cib(version_check) cib_fencing_topology.add_level( lib_env.report_processor, get_fencing_topology(cib), get_resources(cib), level, target_type, target_value, devices, ClusterState(get_cluster_status_xml( lib_env.cmd_runner())).node_section.nodes, force_device, force_node) lib_env.report_processor.send() lib_env.push_cib()
def test_success( self, mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, mock_append, ): lib.add_level( self.reporter, self.topology_el, self.resources_el, self.level, self.target_type, self.target_value, self.devices, self.cluster_status_nodes, self.force_device, self.force_node, ) self.assert_validators_called(mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl) mock_append.assert_called_once_with( self.topology_el, "valid_level", self.target_type, self.target_value, self.devices, )
def assert_called_invalid( self, mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, mock_append, dupl_called=True, report_list=None, ): report_list = report_list or [] with self.assertRaises(LibraryError): lib.add_level( self.reporter, self.topology_el, self.resources_el, self.level, self.target_type, self.target_value, self.devices, self.cluster_status_nodes, self.force_device, self.force_node, ) assert_report_item_list_equal(self.reporter.report_item_list, report_list) self.assert_validators_called( mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, dupl_called, ) mock_append.assert_not_called()
def test_success(self, mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, mock_append): lib.add_level(self.reporter, "topology_el", "resources_el", "level", "target_type", "target_value", "devices", "cluster_status_nodes", "force_device", "force_node") self.assert_validators_called(mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl) mock_append.assert_called_once_with("topology_el", "valid_level", "target_type", "target_value", "devices")
def test_success( self, mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, mock_append ): lib.add_level( self.reporter, "topology_el", "resources_el", "level", "target_type", "target_value", "devices", "cluster_status_nodes", "force_device", "force_node" ) self.assert_validators_called( mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl ) mock_append.assert_called_once_with( "topology_el", "valid_level", "target_type", "target_value", "devices" )
def add_level( lib_env, level, target_type, target_value, devices, force_device=False, force_node=False ): """ Validate and add a new fencing level LibraryEnvironment lib_env -- environment int|string level -- level (index) of the new fencing level constant target_type -- the new fencing level target value type mixed target_value -- the new fencing level target value Iterable devices -- list of stonith devices for the new fencing level bool force_device -- continue even if a stonith device does not exist bool force_node -- continue even if a node (target) does not exist """ version_check = None if target_type == TARGET_TYPE_REGEXP: version_check = Version(2, 3, 0) elif target_type == TARGET_TYPE_ATTRIBUTE: version_check = Version(2, 4, 0) cib = lib_env.get_cib(version_check) cib_fencing_topology.add_level( lib_env.report_processor, get_fencing_topology(cib), get_resources(cib), level, target_type, target_value, devices, ClusterState( get_cluster_status_xml(lib_env.cmd_runner()) ).node_section.nodes, force_device, force_node ) lib_env.report_processor.send() lib_env.push_cib()
def add_level( lib_env: LibraryEnvironment, level, target_type, target_value, devices, force_device=False, force_node=False, ): """ Validate and add a new fencing level LibraryEnvironment lib_env -- environment int|string level -- level (index) of the new fencing level constant target_type -- the new fencing level target value type mixed target_value -- the new fencing level target value Iterable devices -- list of stonith devices for the new fencing level bool force_device -- continue even if a stonith device does not exist bool force_node -- continue even if a node (target) does not exist """ cib = lib_env.get_cib() cib_fencing_topology.add_level( lib_env.report_processor, get_fencing_topology(cib), get_resources(cib), level, target_type, target_value, devices, ClusterState(lib_env.get_cluster_state()).node_section.nodes, force_device, force_node, ) if lib_env.report_processor.has_errors: raise LibraryError() lib_env.push_cib()
def assert_called_invalid( self, mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, mock_append, dupl_called=True ): self.assertRaises( LibraryError, lambda: lib.add_level( self.reporter, "topology_el", "resources_el", "level", "target_type", "target_value", "devices", "cluster_status_nodes", "force_device", "force_node" ) ) self.assert_validators_called( mock_val_level, mock_val_target, mock_val_devices, mock_val_dupl, dupl_called ) mock_append.assert_not_called()