Example #1
0
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()
Example #2
0
 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,
     )
Example #3
0
 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()
Example #4
0
 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"
     )
Example #6
0
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()
Example #7
0
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()
Example #9
0
 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()