예제 #1
0
    def test_should_remove_san_manager(self):
        self.resource.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        self.mock_ansible_module.params = self.PARAMS_FOR_ABSENT

        SanManagerModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True, msg=SAN_MANAGER_DELETED)
예제 #2
0
    def test_should_do_nothing_when_san_manager_not_exist(self):
        self.resource.get_by_provider_display_name.return_value = None

        self.mock_ansible_module.params = self.PARAMS_FOR_ABSENT

        SanManagerModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False, msg=SAN_MANAGER_ALREADY_ABSENT)
    def test_should_fail_when_provider_display_name_not_found(self):
        self.resource.get_by_provider_display_name.return_value = None
        self.resource.get_provider_uri.return_value = None

        self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT

        SanManagerModule().run()

        self.mock_ansible_module.fail_json.assert_called_once_with(
            msg="The provider 'Brocade Network Advisor' was not found.")
예제 #4
0
    def test_should_not_update_when_data_is_equals(self):
        self.resource.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT

        SanManagerModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            msg=SAN_MANAGER_ALREADY_EXIST,
            ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE))
예제 #5
0
    def test_should_load_config_from_file(self, mock_ansible_module,
                                          mock_ov_client_from_env_vars,
                                          mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock({'config': 'config.json'})
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule()

        mock_ov_client_from_json_file.assert_called_once_with('config.json')
        mock_ov_client_from_env_vars.not_been_called()
예제 #6
0
    def test_should_add_new_san_manager(self):
        self.resource.get_by_provider_display_name.return_value = None
        self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
        self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT

        SanManagerModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            msg=SAN_MANAGER_CREATED,
            ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE))
예제 #7
0
    def test_should_find_provider_uri_to_add(self):
        self.resource.get_by_provider_display_name.return_value = None
        self.resource.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
        self.resource.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        self.mock_ansible_module.params = self.PARAMS_FOR_PRESENT

        SanManagerModule().run()

        provider_display_name = DEFAULT_SAN_MANAGER_TEMPLATE[
            'providerDisplayName']
        self.resource.get_provider_uri.assert_called_once_with(
            provider_display_name)
예제 #8
0
    def test_should_do_nothing_when_san_manager_not_exist(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = None

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_ABSENT)
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=False, msg=SAN_MANAGER_ALREADY_ABSENT)
예제 #9
0
    def test_should_remove_san_manager(self, mock_ansible_module,
                                       mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_ABSENT)
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True, msg=SAN_MANAGER_DELETED)
예제 #10
0
    def test_should_fail_when_add_raises_exception(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = None
        mock_ov_instance.san_managers.add.side_effect = Exception(
            FAKE_MSG_ERROR)

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_PRESENT)
        mock_ansible_module.return_value = mock_ansible_instance

        self.assertRaises(Exception, SanManagerModule().run())

        mock_ansible_instance.fail_json.assert_called_once_with(
            msg=FAKE_MSG_ERROR)
예제 #11
0
    def test_update_when_data_has_modified_attributes(self):
        data_merged = DEFAULT_SAN_MANAGER_TEMPLATE.copy()
        data_merged['fabricType'] = 'DirectAttach'

        self.resource.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        self.resource.update.return_value = data_merged
        self.mock_ansible_module.params = self.PARAMS_WITH_CHANGES

        SanManagerModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            msg=SAN_MANAGER_UPDATED,
            ansible_facts=dict(san_manager=data_merged))
예제 #12
0
    def test_should_fail_when_update_raises_exception(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
        mock_ov_instance.san_managers.update.side_effect = Exception(
            FAKE_MSG_ERROR)

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_WITH_CHANGES)
        mock_ansible_module.return_value = mock_ansible_instance

        self.assertRaises(Exception, SanManagerModule().run())

        mock_ansible_instance.fail_json.assert_called_once_with(
            msg=FAKE_MSG_ERROR)
예제 #13
0
    def test_should_not_update_when_data_is_equals(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_PRESENT)
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=False,
            msg=SAN_MANAGER_ALREADY_EXIST,
            ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE))
예제 #14
0
    def test_should_find_provider_uri_to_add(self, mock_ansible_module,
                                             mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = None
        mock_ov_instance.san_managers.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
        mock_ov_instance.san_managers.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_PRESENT)
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule().run()

        provider_display_name = DEFAULT_SAN_MANAGER_TEMPLATE[
            'providerDisplayName']
        mock_ov_instance.san_managers.get_provider_uri.assert_called_once_with(
            provider_display_name)
예제 #15
0
    def test_should_add_new_san_manager(self, mock_ansible_module,
                                        mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = None
        mock_ov_instance.san_managers.get_provider_uri.return_value = '/rest/fc-sans/providers/123/device-managers'
        mock_ov_instance.san_managers.add.return_value = DEFAULT_SAN_MANAGER_TEMPLATE

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_PRESENT)
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True,
            msg=SAN_MANAGER_CREATED,
            ansible_facts=dict(san_manager=DEFAULT_SAN_MANAGER_TEMPLATE))
예제 #16
0
    def test_should_fail_when_remove_raises_exception(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by.return_value = [
            DEFAULT_SAN_MANAGER_TEMPLATE
        ]
        mock_ov_instance.san_managers.remove.side_effect = Exception(
            FAKE_MSG_ERROR)

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_FOR_ABSENT)
        mock_ansible_module.return_value = mock_ansible_instance

        self.assertRaises(Exception, SanManagerModule().run())

        mock_ansible_instance.fail_json.assert_called_once_with(
            msg=FAKE_MSG_ERROR)
예제 #17
0
    def test_update_when_data_has_modified_attributes(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        data_merged = DEFAULT_SAN_MANAGER_TEMPLATE.copy()
        data_merged['fabricType'] = 'DirectAttach'

        mock_ov_instance = mock.Mock()
        mock_ov_instance.san_managers.get_by_provider_display_name.return_value = DEFAULT_SAN_MANAGER_TEMPLATE
        mock_ov_instance.san_managers.update.return_value = data_merged

        mock_ov_client_from_json_file.return_value = mock_ov_instance
        mock_ansible_instance = create_ansible_mock(PARAMS_WITH_CHANGES)
        mock_ansible_module.return_value = mock_ansible_instance

        SanManagerModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True,
            msg=SAN_MANAGER_UPDATED,
            ansible_facts=dict(san_manager=data_merged))