def test_should_add_server(self):
        self.mock_connection.get.side_effect = [{'members': []}, SERVERS]
        self.mock_server_service.add_server.return_value = JOB_RESOURCE
        self.mock_icsp.jobs.return_value = ICSP_JOBS

        self.mock_icsp.common = mock.Mock()
        self.mock_icsp.common.monitor_execution.return_value = {}

        mock_ansible_instance = create_ansible_mock_yaml(YAML_SERVER_PRESENT)
        self.mock_ansible_module.return_value = mock_ansible_instance

        ICspServerModule().run()

        ilo_body = {'ipAddress': "16.124.135.239",
                    'username': "******",
                    'password': "******",
                    'port': 443}
        self.mock_server_service.add_server.assert_called_once_with(ilo_body)
        self.mock_icsp.common.monitor_execution.assert_called_once_with(JOB_RESOURCE, ICSP_JOBS)

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True,
            msg="Server created: '/uri/239'",
            ansible_facts=dict(target_server=DEFAULT_SERVER)
        )
    def test_should_configure_network(self):
        self.mock_connection.get.side_effect = [SERVERS, SERVERS]
        self.mock_connection.post.return_value = JOB_RESOURCE
        self.mock_server_service.get_server.return_value = DEFAULT_SERVER

        mock_ansible_instance = create_ansible_mock_yaml(YAML_NETWORK_CONFIGURED)
        self.mock_ansible_module.return_value = mock_ansible_instance

        ICspServerModule().run()

        network_config_state = yaml.load(YAML_NETWORK_CONFIGURED)

        network_config = {
            "serverData": [
                {"serverUri": DEFAULT_SERVER['uri'], "personalityData": network_config_state['server_personality_data'],
                 "skipReboot": True}],
            "failMode": None,
            "osbpUris": []
        }

        uri = '/rest/os-deployment-jobs/?writeOnly=true'

        self.mock_connection.post.assert_called_once_with(uri, network_config)

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True,
            msg=CUSTOM_ATTR_NETWORK_UPDATED,
            ansible_facts=dict(target_server=DEFAULT_SERVER)
        )
    def test_should_fail_when_try_configure_network_for_not_found_server(self):
        self.mock_connection.get.return_value = {'members': []}

        mock_ansible_instance = create_ansible_mock_yaml(YAML_NETWORK_CONFIGURED)
        self.mock_ansible_module.return_value = mock_ansible_instance

        ICspServerModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(changed=False, msg=SERVER_NOT_FOUND)
    def test_should_fail_with_args_joined_when_common_exception_raised_on_delete(self):
        self.mock_connection.get.return_value = SERVERS
        self.mock_server_service.delete_server.side_effect = Exception("Fake Message", "INVALID_RESOURCE")

        self.mock_ansible_instance.params = yaml.load(YAML_SERVER_ABSENT)

        ICspServerModule().run()

        self.mock_ansible_instance.fail_json.assert_called_once_with(msg='Fake Message; INVALID_RESOURCE')
    def test_should_not_add_server_when_already_present(self):
        self.mock_connection.get.return_value = SERVERS
        self.mock_ansible_instance.params = yaml.load(YAML_SERVER_PRESENT)

        ICspServerModule().run()

        self.mock_ansible_instance.exit_json.assert_called_once_with(
            changed=False,
            msg=ICspServerModule.SERVER_ALREADY_PRESENT,
            ansible_facts=dict(target_server=DEFAULT_SERVER))
    def test_should_not_try_delete_server_when_it_is_already_absent(self):
        self.mock_connection.get.return_value = {'members': []}
        self.mock_server_service.delete_server.return_value = {}
        self.mock_ansible_instance.params = yaml.load(YAML_SERVER_ABSENT)

        ICspServerModule().run()

        self.mock_server_service.delete_server.assert_not_called()

        self.mock_ansible_instance.exit_json.assert_called_once_with(
            changed=False, msg=ICspServerModule.SERVER_ALREADY_ABSENT)
    def test_should_fail_with_all_exe_attr_when_HPICspException_raised_on_delete(self):
        self.mock_connection.get.return_value = SERVERS
        exeption_value = {"message": "Fake Message", "details": "Details", "errorCode": "INVALID_RESOURCE"}
        self.mock_server_service.delete_server.side_effect = HPICspInvalidResource(exeption_value)

        mock_ansible_instance = create_ansible_mock_yaml(YAML_SERVER_ABSENT)
        self.mock_ansible_module.return_value = mock_ansible_instance

        ICspServerModule().run()

        mock_ansible_instance.fail_json.assert_called_once_with(
            msg='{"errorCode": "INVALID_RESOURCE", "message": "Fake Message", "details": "Details"}')
    def test_expect_exception_not_caught_when_create_server_raise_exception(self):
        self.mock_connection.get.side_effect = [{'members': []}, SERVERS]
        self.mock_server_service.add_server.side_effect = Exception("message")

        self.mock_ansible_instance.params = yaml.load(YAML_SERVER_PRESENT)

        try:
            ICspServerModule().run()
        except Exception as e:
            self.assertEqual("message", e.args[0])
        else:
            self.fail("Expected Exception was not raised")
    def test_expect_exception_not_caught_when_configure_network_raise_exception(self):
        self.mock_connection.get.return_value = SERVERS
        self.mock_connection.post.side_effect = Exception("message")

        mock_ansible_instance = create_ansible_mock_yaml(YAML_NETWORK_CONFIGURED)
        self.mock_ansible_module.return_value = mock_ansible_instance

        try:
            ICspServerModule().run()
        except Exception as e:
            self.assertEqual("message", e.args[0])
        else:
            self.fail("Expected Exception was not raised")
Esempio n. 10
0
    def test_should_fail_when_try_configure_network_without_inform_personality_data(self):
        self.mock_connection.get.return_value = SERVERS
        self.mock_server_service.get_server.return_value = DEFAULT_SERVER

        params_config_network = yaml.load(YAML_NETWORK_CONFIGURED)
        params_config_network['server_personality_data'] = {}

        mock_ansible_instance = create_ansible_mock(params_config_network)
        self.mock_ansible_module.return_value = mock_ansible_instance

        ICspServerModule().run()

        mock_ansible_instance.fail_json.assert_called_once_with(msg=SERVER_PERSONALITY_DATA_REQUIRED)
    def test_should_fail_with_all_exe_attr_when_HPICspException_raised_on_delete(self):
        self.mock_connection.get.return_value = SERVERS
        exeption_value = {"message": "Fake Message", "details": "Details", "errorCode": "INVALID_RESOURCE"}
        self.mock_server_service.delete_server.side_effect = HPICspInvalidResource(exeption_value)

        self.mock_ansible_instance.params = yaml.load(YAML_SERVER_ABSENT)

        ICspServerModule().run()

        # Load called args and convert to dict to prevent str comparison with different reordering (Python 3.5)
        fail_json_args_msg = self.mock_ansible_instance.fail_json.call_args[1]['msg']
        error_raised = json.loads(fail_json_args_msg)
        self.assertEqual(error_raised, exeption_value)
    def test_should_delete_server(self):
        self.mock_connection.get.return_value = SERVERS

        self.mock_server_service.delete_server.return_value = {}

        self.mock_ansible_instance.params = yaml.load(YAML_SERVER_ABSENT)

        ICspServerModule().run()

        self.mock_server_service.delete_server.assert_called_once_with(
            "/uri/239")

        self.mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True,
            msg="Server '/uri/239' removed successfully from ICsp.")