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")
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.")