Beispiel #1
0
def initialize_block_devices(lib_env, device_list, option_dict):
    """
    Initialize SBD devices in device_list with options_dict.

    lib_env -- LibraryEnvironment
    device_list -- list of strings
    option_dict -- dictionary
    """
    report_item_list = []
    if not device_list:
        report_item_list.append(
            reports.required_options_are_missing(["device"]))

    supported_options = sbd.DEVICE_INITIALIZATION_OPTIONS_MAPPING.keys()

    report_item_list += (
        validate.NamesIn(supported_options).validate(option_dict))

    report_item_list += validate.ValidatorAll([
        validate.ValueNonnegativeInteger(key) for key in supported_options
    ]).validate(option_dict)

    if lib_env.report_processor.report_list(report_item_list).has_errors:
        raise LibraryError()
    sbd.initialize_block_devices(lib_env.report_processor,
                                 lib_env.cmd_runner(), device_list,
                                 option_dict)
Beispiel #2
0
def initialize_block_devices(lib_env, device_list, option_dict):
    """
    Initialize SBD devices in device_list with options_dict.

    lib_env -- LibraryEnvironment
    device_list -- list of strings
    option_dict -- dictionary
    """
    report_item_list = []
    if not device_list:
        report_item_list.append(reports.required_option_is_missing(["device"]))

    supported_options = sbd.DEVICE_INITIALIZATION_OPTIONS_MAPPING.keys()

    report_item_list += names_in(supported_options, option_dict.keys())
    validator_list = [
        value_nonnegative_integer(key)
        for key in supported_options
    ]

    report_item_list += run_collection_of_option_validators(
        option_dict, validator_list
    )

    lib_env.report_processor.process_list(report_item_list)
    sbd.initialize_block_devices(
        lib_env.report_processor, lib_env.cmd_runner(), device_list, option_dict
    )
Beispiel #3
0
def initialize_block_devices(lib_env, device_list, option_dict):
    """
    Initialize SBD devices in device_list with options_dict.

    lib_env -- LibraryEnvironment
    device_list -- list of strings
    option_dict -- dictionary
    """
    report_item_list = []
    if not device_list:
        report_item_list.append(reports.required_option_is_missing(["device"]))

    supported_options = sbd.DEVICE_INITIALIZATION_OPTIONS_MAPPING.keys()

    report_item_list += names_in(supported_options, option_dict.keys())
    validator_list = [
        value_nonnegative_integer(key)
        for key in supported_options
    ]

    report_item_list += run_collection_of_option_validators(
        option_dict, validator_list
    )

    lib_env.report_processor.process_list(report_item_list)
    sbd.initialize_block_devices(
        lib_env.report_processor, lib_env.cmd_runner(), device_list, option_dict
    )
Beispiel #4
0
 def test_success(self):
     device_list = ["/dev/sdb", "/dev/vda"]
     option_dict = {
         "watchdog-timeout": "10", # -1
         "loop-timeout": "1", # -3
     }
     self.mock_runner.run.return_value = "", "", 0
     lib_sbd.initialize_block_devices(
         self.mock_rep, self.mock_runner, device_list, option_dict
     )
     cmd = [
         settings.sbd_binary, "-d", "/dev/sdb", "-d", "/dev/vda", "-3", "1",
         "-1", "10", "create"
     ]
     self.mock_runner.run.assert_called_once_with(cmd)
     assert_report_item_list_equal(
         self.mock_rep.report_item_list,
         [
             (
                 Severities.INFO,
                 report_codes.SBD_DEVICE_INITIALIZATION_STARTED,
                 {"device_list": device_list}
             ),
             (
                 Severities.INFO,
                 report_codes.SBD_DEVICE_INITIALIZATION_SUCCESS,
                 {"device_list": device_list}
             ),
         ]
     )
Beispiel #5
0
 def test_success(self):
     device_list = ["/dev/sdb", "/dev/vda"]
     option_dict = {
         "watchdog-timeout": "10", # -1
         "loop-timeout": "1", # -3
     }
     self.mock_runner.run.return_value = "", "", 0
     lib_sbd.initialize_block_devices(
         self.mock_rep, self.mock_runner, device_list, option_dict
     )
     cmd = [
         settings.sbd_binary, "-d", "/dev/sdb", "-d", "/dev/vda", "-3", "1",
         "-1", "10", "create"
     ]
     self.mock_runner.run.assert_called_once_with(cmd)
     assert_report_item_list_equal(
         self.mock_rep.report_item_list,
         [
             (
                 Severities.INFO,
                 report_codes.SBD_DEVICE_INITIALIZATION_STARTED,
                 {"device_list": device_list}
             ),
             (
                 Severities.INFO,
                 report_codes.SBD_DEVICE_INITIALIZATION_SUCCESS,
                 {"device_list": device_list}
             ),
         ]
     )
Beispiel #6
0
 def test_failed(self):
     device_list = ["/dev/sdb", "/dev/vda"]
     option_dict = {
         "watchdog-timeout": "10",  # -1
         "loop-timeout": "1",  # -3
     }
     error_msg = "error"
     self.mock_runner.run.return_value = "", error_msg, 1
     assert_raise_library_error(
         lambda: lib_sbd.initialize_block_devices(
             self.mock_rep, self.mock_runner, device_list, option_dict),
         (Severities.ERROR, report_codes.SBD_DEVICE_INITIALIZATION_ERROR, {
             "device_list": device_list,
             "reason": error_msg,
         }))
     cmd = [
         settings.sbd_binary, "-d", "/dev/sdb", "-d", "/dev/vda", "-3", "1",
         "-1", "10", "create"
     ]
     self.mock_runner.run.assert_called_once_with(cmd)
     assert_report_item_list_equal(self.mock_rep.report_item_list, [
         (Severities.INFO, report_codes.SBD_DEVICE_INITIALIZATION_STARTED, {
             "device_list": device_list
         })
     ])
Beispiel #7
0
 def test_failed(self):
     device_list = ["/dev/sdb", "/dev/vda"]
     option_dict = {
         "watchdog-timeout": "10", # -1
         "loop-timeout": "1", # -3
     }
     error_msg = "error"
     self.mock_runner.run.return_value = "", error_msg, 1
     assert_raise_library_error(
         lambda: lib_sbd.initialize_block_devices(
             self.mock_rep, self.mock_runner, device_list, option_dict
         ),
         (
             Severities.ERROR,
             report_codes.SBD_DEVICE_INITIALIZATION_ERROR,
             {
                 "device_list": device_list,
                 "reason": error_msg,
             }
         )
     )
     cmd = [
         settings.sbd_binary, "-d", "/dev/sdb", "-d", "/dev/vda", "-3", "1",
         "-1", "10", "create"
     ]
     self.mock_runner.run.assert_called_once_with(cmd)
     assert_report_item_list_equal(
         self.mock_rep.report_item_list,
         [(
             Severities.INFO,
             report_codes.SBD_DEVICE_INITIALIZATION_STARTED,
             {"device_list": device_list}
         )]
     )