def idrac_mock(self, mocker):
     omsdk_mock = MagicMock()
     idrac_obj = MagicMock()
     omsdk_mock.config_mgr = idrac_obj
     type(idrac_obj).LCStatus = PropertyMock(return_value="lcstatus")
     type(idrac_obj).LCReady = PropertyMock(return_value="lcready")
     return idrac_obj
Example #2
0
 def test_run_idrac_eventing_config_success_case05(self, idrac_connection_configure_eventing_mock,
                                                   idrac_file_manager_config_eventing_mock, idrac_default_args):
     idrac_default_args.update({"share_name": "sharename", "share_mnt": "mountname", "share_user": "******",
                                "share_password": "******", "destination_number": None, "destination": None,
                                "snmp_v3_username": None, "snmp_trap_state": None, "alert_number": None,
                                "email_alert_state": None, "address": None, "custom_message": None,
                                "enable_alerts": None, "authentication": None,
                                "smtp_ip_address": None, "smtp_port": None, "username": None,
                                "password": None})
     message = {"changes_applicable": False, "Message": "No changes were applied", "changed": False,
                "Status": "Success"}
     obj = MagicMock()
     idrac_connection_configure_eventing_mock.config_mgr = obj
     type(obj).configure_snmp_trap_destination = PropertyMock(return_value=message)
     type(obj).configure_email_alerts = PropertyMock(return_value=message)
     type(obj).configure_idrac_alerts = PropertyMock(return_value=message)
     type(obj).configure_smtp_server_settings = PropertyMock(return_value=message)
     idrac_connection_configure_eventing_mock.config_mgr.apply_changes.return_value = message
     f_module = self.get_module_mock(params=idrac_default_args)
     f_module.check_mode = False
     msg, err = self.module.run_idrac_eventing_config(idrac_connection_configure_eventing_mock, f_module)
     assert msg == {'msg': {'Status': 'Success', 'Message': 'No changes were applied', 'changed': False,
                            'changes_applicable': False}, 'failed': False, 'changed': False}
     assert msg['changed'] is False
     assert msg['failed'] is False
 def test_main_get_lcstatus_failed_case01(self, idrac_connection_lcstatus_mock, idrac_default_args):
     error_msg = "Error in Runtime"
     obj2 = MagicMock()
     idrac_connection_lcstatus_mock.config_mgr = obj2
     type(obj2).LCStatus = PropertyMock(side_effect=Exception(error_msg))
     type(obj2).LCReady = PropertyMock(side_effect=Exception(error_msg))
     msg = self._run_module_with_fail_json(idrac_default_args)
     assert msg['failed'] is True
     assert msg['msg'] == "Error: {0}".format(error_msg)
 def test_run_get_lcstatus_failed_case01(self, idrac_connection_lcstatus_mock, idrac_default_args):
     f_module = self.get_module_mock(params=idrac_default_args)
     error_msg = "Error in Runtime"
     obj2 = MagicMock()
     idrac_connection_lcstatus_mock.config_mgr = obj2
     type(obj2).LCStatus = PropertyMock(side_effect=Exception(error_msg))
     type(obj2).LCReady = PropertyMock(side_effect=Exception(error_msg))
     msg, err = self.module.run_get_lc_status(idrac_connection_lcstatus_mock, f_module)
     assert msg['failed'] is True
     assert msg['msg'] == "Error: {0}".format(error_msg)
     assert err is True
 def test_run_get_lcstatus_success_case01(self, idrac_connection_lcstatus_mock, idrac_default_args):
     obj2 = MagicMock()
     idrac_connection_lcstatus_mock.config_mgr = obj2
     type(obj2).LCStatus =PropertyMock(return_value="lcstatus")
     type(obj2).LCReady = PropertyMock(return_value="lcready")
     f_module = self.get_module_mock(params=idrac_default_args)
     msg, err = self.module.run_get_lc_status(idrac_connection_lcstatus_mock, f_module)
     assert msg['msg']['LCReady'] == "lcready"
     assert msg['msg']['LCStatus'] == "lcstatus"
     assert msg['failed'] is False
     assert err is False
Example #6
0
 def test_main_configure_eventing_failure_case(self, idrac_connection_configure_eventing_mock, idrac_default_args,
                                               idrac_file_manager_config_eventing_mock):
     idrac_default_args.update({"share_name": "sharename"})
     error_msg = "Error in Runtime"
     obj2 = MagicMock()
     idrac_connection_configure_eventing_mock.file_share_manager = obj2
     idrac_connection_configure_eventing_mock.config_mgr = obj2
     type(obj2).create_share_obj = PropertyMock(side_effect=Exception(error_msg))
     type(obj2).set_liason_share = PropertyMock(side_effect=Exception(error_msg))
     msg = self._run_module_with_fail_json(idrac_default_args)
     assert msg['failed'] is True
     assert msg['msg'] == "Error: {0}".format(error_msg)
Example #7
0
    def test_run_bios_config_status_success_changed_false_case02(
            self, idrac_connection_configure_bios_mock, mocker,
            idrac_default_args, idrac_file_manager_config_bios_mock):
        idrac_default_args.update({
            "share_name": "sharename",
            "share_mnt": "mountname",
            "share_user": "******",
            "share_password": "******",
            "boot_sources": None,
            "boot_mode": "Bios",
            "nvme_mode": "NonRaid",
            "secure_boot_mode": "AuditMode",
            "onetime_boot_mode": "OneTimeBootSeq",
            "attributes": [""],
            "boot_sequence": None
        })
        message = {
            "Status": "Success",
            "Message": "No changes found to apply."
        }
        f_module = self.get_module_mock(params=idrac_default_args)
        f_module.deprecate.return_value = "boot_mode, nvme_mode, secure_boot_mode, onetime_boot_mode and " \
                                          "boot_sequence options have been deprecated, and will be removed. ' \
                                  'Please use the attributes option for Bios attributes configuration instead."

        f_module.check_mode = False
        obj = MagicMock()
        obj1 = MagicMock()
        obj2 = MagicMock()
        obj3 = MagicMock()
        idrac_connection_configure_bios_mock.config_mgr.configure_boot_mode = obj
        type(obj).BootModeTypes = PropertyMock(return_value="Bios")
        idrac_connection_configure_bios_mock.config_mgr.configure_nvme_mode = obj1
        type(obj).NvmeModeTypes = PropertyMock(return_value="NonRaid")
        idrac_connection_configure_bios_mock.config_mgr.configure_secure_boot_mode = obj2
        type(obj).SecureBootModeTypes = PropertyMock(return_value="AuditMode")
        idrac_connection_configure_bios_mock.config_mgr.configure_onetime_boot_mode = obj3
        type(obj).OneTimeBootModeTypes = PropertyMock(
            return_value="OneTimeBootSeq")
        idrac_connection_configure_bios_mock.config_mgr.configure_bios.return_value = message
        idrac_connection_configure_bios_mock.config_mgr.apply_changes.return_value = message
        msg, err = self.module.run_server_bios_config(
            idrac_connection_configure_bios_mock, f_module)
        assert msg == {
            'msg': {
                'Status': 'Success',
                "Message": "No changes found to apply."
            },
            'failed': False,
            'changed': False
        }
        assert err is False
        assert msg['changed'] is False
Example #8
0
    def test_multiple_failures(self, monkeypatch):
        monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False)
        monkeypatch.setattr(C, 'ANSIBLE_SSH_RETRIES', 9)

        monkeypatch.setattr('time.sleep', lambda x: None)

        self.mock_popen_res.stdout.read.side_effect = [b""] * 10
        self.mock_popen_res.stderr.read.side_effect = [b""] * 10
        type(self.mock_popen_res).returncode = PropertyMock(side_effect=[255] *
                                                            30)

        self.mock_selector.select.side_effect = [
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ],
                          None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ],
                          None), EVENT_READ)],
            [],
        ] * 10
        self.mock_selector.get_map.side_effect = lambda: True

        self.conn._build_command = MagicMock()
        self.conn._build_command.return_value = 'ssh'
        self.conn.get_option = MagicMock()
        self.conn.get_option.return_value = True

        pytest.raises(AnsibleConnectionFailure, self.conn.exec_command, 'ssh',
                      'some data')
        assert self.mock_popen.call_count == 10
Example #9
0
    def test_incorrect_password(self, monkeypatch):
        monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False)
        monkeypatch.setattr(C, 'ASSIBLE_SSH_RETRIES', 5)
        monkeypatch.setattr('time.sleep', lambda x: None)

        self.mock_popen_res.stdout.read.side_effect = [b'']
        self.mock_popen_res.stderr.read.side_effect = [b'Permission denied, please try again.\r\n']
        type(self.mock_popen_res).returncode = PropertyMock(side_effect=[5] * 4)

        self.mock_selector.select.side_effect = [
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)],
            [],
        ]

        self.mock_selector.get_map.side_effect = lambda: True

        self.conn._build_command = MagicMock()
        self.conn._build_command.return_value = [b'sshpass', b'-d41', b'ssh', b'-C']
        self.conn.get_option = MagicMock()
        self.conn.get_option.return_value = True

        exception_info = pytest.raises(AssibleAuthenticationFailure, self.conn.exec_command, 'sshpass', 'some data')
        assert exception_info.value.message == ('Invalid/incorrect username/password. Skipping remaining 5 retries to prevent account lockout: '
                                                'Permission denied, please try again.')
        assert self.mock_popen.call_count == 1
Example #10
0
    def test_retry_then_success(self, monkeypatch):
        monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False)
        monkeypatch.setattr(C, 'ASSIBLE_SSH_RETRIES', 3)

        monkeypatch.setattr('time.sleep', lambda x: None)

        self.mock_popen_res.stdout.read.side_effect = [b"", b"my_stdout\n", b"second_line"]
        self.mock_popen_res.stderr.read.side_effect = [b"", b"my_stderr"]
        type(self.mock_popen_res).returncode = PropertyMock(side_effect=[255] * 3 + [0] * 4)

        self.mock_selector.select.side_effect = [
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)],
            [],
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)],
            []
        ]
        self.mock_selector.get_map.side_effect = lambda: True

        self.conn._build_command = MagicMock()
        self.conn._build_command.return_value = 'ssh'
        self.conn.get_option = MagicMock()
        self.conn.get_option.return_value = True

        return_code, b_stdout, b_stderr = self.conn.exec_command('ssh', 'some data')
        assert return_code == 0
        assert b_stdout == b'my_stdout\nsecond_line'
        assert b_stderr == b'my_stderr'
 def idrac_change_powerstate_mock(self, mocker):
     omsdk_mock = MagicMock()
     idrac_obj = MagicMock()
     omsdk_mock.config_mgr.ComputerSystemResetTypesEnum = idrac_obj
     type(idrac_obj).change_power = PropertyMock(
         return_value="change_power")
     return idrac_obj
Example #12
0
    def test_fetch_file_retries(self, monkeypatch):
        monkeypatch.setattr(C, 'HOST_KEY_CHECKING', False)
        monkeypatch.setattr(C, 'ASSIBLE_SSH_RETRIES', 3)

        monkeypatch.setattr('time.sleep', lambda x: None)
        monkeypatch.setattr('assible.plugins.connection.ssh.os.path.exists', lambda x: True)

        self.mock_popen_res.stdout.read.side_effect = [b"", b"my_stdout\n", b"second_line"]
        self.mock_popen_res.stderr.read.side_effect = [b"", b"my_stderr"]
        type(self.mock_popen_res).returncode = PropertyMock(side_effect=[255] * 4 + [0] * 4)

        self.mock_selector.select.side_effect = [
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)],
            [],
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stdout, 1001, [EVENT_READ], None), EVENT_READ)],
            [(SelectorKey(self.mock_popen_res.stderr, 1002, [EVENT_READ], None), EVENT_READ)],
            []
        ]
        self.mock_selector.get_map.side_effect = lambda: True

        self.conn._build_command = MagicMock()
        self.conn._build_command.return_value = 'sftp'

        return_code, b_stdout, b_stderr = self.conn.fetch_file('/path/to/in/file', '/path/to/dest/file')
        assert return_code == 0
        assert b_stdout == b"my_stdout\nsecond_line"
        assert b_stderr == b"my_stderr"
        assert self.mock_popen.call_count == 2
 def test_run_change_powerstate_success_case01(
         self, idrac_change_power_state_connection_mock, idrac_default_args,
         mocker):
     idrac_default_args.update({"change_power": "GracefulRestart"})
     message = {
         'Status': 'Success',
         'Message': 'Changes found to commit!',
         'changes_applicable': True
     }
     obj2 = MagicMock()
     idrac_change_power_state_connection_mock.config_mgr = obj2
     type(obj2).change_power = PropertyMock(return_value=message)
     f_module = self.get_module_mock(params=idrac_default_args,
                                     check_mode=True)
     result = self.module.run_change_power_state(
         idrac_change_power_state_connection_mock, f_module)
     assert result == ({
         'changed': True,
         'failed': False,
         'msg': {
             'Message': 'Changes found to commit!',
             'Status': 'Success',
             'changes_applicable': True
         }
     }, False)
 def test_main_idrac_get_firmware_inventory_faild_case01(
         self, idrac_get_firmware_inventory_connection_mock,
         idrac_default_args):
     error_msg = "Error occurs"
     obj2 = MagicMock()
     idrac_get_firmware_inventory_connection_mock.update_mgr = obj2
     type(obj2).InstalledFirmware = PropertyMock(
         side_effect=Exception(error_msg))
     result = self._run_module_with_fail_json(idrac_default_args)
     assert result['failed'] is True
     assert result['msg'] == "Error: {0}".format(error_msg)
 def test_run_change_powerstate_failed_case02(
         self, idrac_change_power_state_connection_mock,
         idrac_default_args):
     idrac_default_args.update({"change_power": "GracefulRestart"})
     error_msg = "Error in Runtime"
     obj2 = MagicMock()
     idrac_change_power_state_connection_mock.config_mgr = obj2
     type(obj2).change_power = PropertyMock(
         side_effect=Exception(error_msg))
     msg = self._run_module_with_fail_json(idrac_default_args)
     assert msg['failed'] is True
     assert msg['msg'] == "Error: {0}".format(error_msg)
Example #16
0
 def test_main_get_lc_job_status_failed_case01(
         self, idrac_get_lc_job_status_connection_mock, idrac_default_args):
     idrac_default_args.update({"job_id": "job_id"})
     error_msg = "Error occurs"
     obj2 = MagicMock()
     idrac_get_lc_job_status_connection_mock.job_mgr = obj2
     type(obj2).get_job_status = PropertyMock(
         side_effect=Exception(error_msg))
     result = self._run_module_with_fail_json(idrac_default_args)
     assert result['changed'] is False
     assert result['failed'] is True
     assert result['msg'] == "Error: {0}".format(error_msg)
 def test_run_get_firmware_inventory_failed_case01(
         self, idrac_get_firmware_inventory_connection_mock,
         idrac_default_args):
     f_module = self.get_module_mock(params=idrac_default_args)
     error_msg = "Error in Runtime"
     obj2 = MagicMock()
     idrac_get_firmware_inventory_connection_mock.update_mgr = obj2
     type(obj2).InstalledFirmware = PropertyMock(
         side_effect=Exception(error_msg))
     msg, err = self.module.run_get_firmware_inventory(
         idrac_get_firmware_inventory_connection_mock, f_module)
     assert msg['failed'] is True
     assert msg['msg'] == "Error: {0}".format(error_msg)
     assert err is True
Example #18
0
 def test_run_delete_lc_job_failed_case01(
         self, idrac_connection_delete_lc_job_mock, idrac_default_args):
     idrac_default_args.update({"job_id": "job_id"})
     f_module = self.get_module_mock(params=idrac_default_args,
                                     check_mode=True)
     idrac_connection_delete_lc_job_mock.job_mgr.get_job_status.return_value = {
         "status": "Fault"
     }
     obj2 = MagicMock()
     idrac_connection_delete_lc_job_mock.job_mgr = obj2
     type(obj2).get_job_status = PropertyMock(side_effect=Exception())
     msg, err = self.module.run_delete_lc_job(
         idrac_connection_delete_lc_job_mock, f_module)
     assert msg['failed'] is True
     assert err is True
Example #19
0
    def test_netconf_exec_command(self):
        pc = PlayContext()
        conn = connection_loader.get('netconf', pc, '/dev/null')

        conn._connected = True

        mock_reply = MagicMock(name='reply')
        type(mock_reply).data_xml = PropertyMock(return_value='<test/>')

        mock_manager = MagicMock(name='self._manager')
        mock_manager.rpc.return_value = mock_reply
        conn._manager = mock_manager

        out = conn.exec_command('<test/>')

        self.assertEqual('<test/>', out)
Example #20
0
 def test_run_get_lc_job_status_success_case01(
         self, idrac_get_lc_job_status_connection_mock, idrac_default_args):
     idrac_default_args.update({"job_id": "job_id"})
     obj2 = MagicMock()
     idrac_get_lc_job_status_connection_mock = obj2
     type(obj2).get_job_status = PropertyMock(return_value="job_id")
     f_module = self.get_module_mock(params=idrac_default_args)
     msg, err = self.module.run_get_lc_job_status(
         idrac_get_lc_job_status_connection_mock, f_module)
     assert msg == {
         'changed': False,
         'failed': False,
         'msg':
         idrac_get_lc_job_status_connection_mock.job_mgr.get_job_status()
     }
     assert msg['failed'] is False
     assert err is False
 def test_run_get_firmware_inventory_success_case01(
         self, idrac_get_firmware_inventory_connection_mock,
         idrac_default_args):
     obj2 = MagicMock()
     idrac_get_firmware_inventory_connection_mock.update_mgr = obj2
     type(obj2).InstalledFirmware = PropertyMock(return_value="msg")
     f_module = self.get_module_mock(params=idrac_default_args)
     msg, err = self.module.run_get_firmware_inventory(
         idrac_get_firmware_inventory_connection_mock, f_module)
     assert msg == {
         'failed':
         False,
         'msg':
         idrac_get_firmware_inventory_connection_mock.update_mgr.
         InstalledFirmware
     }
     assert msg['failed'] is False
     assert err is False
 def test_run_get_firmware_inventory_failed_case02(
         self, idrac_get_firmware_inventory_connection_mock,
         idrac_default_args):
     message = {'Status': "Failed", "Message": "Fetched..."}
     obj2 = MagicMock()
     idrac_get_firmware_inventory_connection_mock.update_mgr = obj2
     type(obj2).InstalledFirmware = PropertyMock(return_value=message)
     f_module = self.get_module_mock(params=idrac_default_args)
     result = self.module.run_get_firmware_inventory(
         idrac_get_firmware_inventory_connection_mock, f_module)
     assert result == ({
         'msg': {
             'Status': 'Failed',
             'Message': 'Fetched...'
         },
         'failed': True
     }, False)
     if "Status" in result[0]['msg']:
         if not result[0]['msg']['Status'] == "Success":
             assert result[0]['failed'] is True
Example #23
0
 def idrac_mock(self, mocker):
     omsdk_mock = MagicMock()
     idrac_obj = MagicMock()
     omsdk_mock.job_mgr = idrac_obj
     type(idrac_obj).get_job_status = PropertyMock(return_value="job_id")
     return idrac_obj
 def idrac_firmware_mock(self, mocker):
     omsdk_mock = MagicMock()
     idrac_obj = MagicMock()
     omsdk_mock.update_mgr = idrac_obj
     type(idrac_obj).InstalledFirmware = PropertyMock(return_value="msg")
     return idrac_obj
Example #25
0
 def idrac_lc_job_mock(self, mocker):
     omsdk_mock = MagicMock()
     idrac_obj = MagicMock()
     omsdk_mock.job_mgr = idrac_obj
     type(idrac_obj).delete_job = PropertyMock(return_value="msg")
     return idrac_obj