def test_should_fail_when_enclosure_not_exist(self):
        self.enclosures.get_by.return_value = []

        self.mock_ansible_module.params = PARAMS_FOR_REFRESH
        EnclosureModule().run()

        self.mock_ansible_module.fail_json.assert_called_once_with(msg=ENCLOSURE_NOT_FOUND)
    def test_should_fail_when_enclosure_not_found(self):
        self.enclosures.get_by.return_value = []

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_DEVICE_BAY_POWER_STATE_E_FUSE)

        EnclosureModule().run()

        self.mock_ansible_module.fail_json.assert_called_once_with(msg=ENCLOSURE_NOT_FOUND)
    def test_update_calibrated_max_power_for_existent_enclosure(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = []

        self.mock_ansible_module.params = PARAMS_WITH_CALIBRATED_MAX_POWER

        EnclosureModule().run()

        self.enclosures.update_environmental_configuration.assert_called_once_with(
            "/a/path", {"calibratedMaxPower": 1750})
    def test_replace_rack_name_for_existent_enclosure(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = []

        self.mock_ansible_module.params = PARAMS_WITH_NEW_RACK_NAME

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            "/a/path", "replace", "/rackName", "Another-Rack-Name")
    def test_should_do_nothing_when_enclosure_not_exist(self):
        self.enclosures.get_by.return_value = []

        self.mock_ansible_module.params = PARAMS_FOR_ABSENT

        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            msg=ENCLOSURE_ALREADY_ABSENT
        )
    def test_should_remove_enclosure(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]

        self.mock_ansible_module.params = PARAMS_FOR_ABSENT

        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            msg=ENCLOSURE_REMOVED
        )
    def test_should_fail_when_there_are_not_manager_bays(self):
        enclosure_without_appliance_bays = dict(ENCLOSURE_FROM_ONEVIEW, managerBays=[])
        self.enclosures.get_by.return_value = [enclosure_without_appliance_bays]

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_MANAGER_BAY_UID_OFF)

        EnclosureModule().run()

        self.enclosures.patch.not_been_called()

        self.mock_ansible_module.fail_json.assert_called_once_with(msg=BAY_NOT_FOUND)
    def test_should_fail_when_there_are_not_device_bays(self):
        enclosure_without_appliance_bays = dict(ENCLOSURE_FROM_ONEVIEW, deviceBays=[])
        self.enclosures.get_by.return_value = [enclosure_without_appliance_bays]

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_DEVICE_BAY_POWER_STATE_E_FUSE)

        EnclosureModule().run()

        self.enclosures.patch.not_been_called()

        self.mock_ansible_module.fail_json.assert_called_once_with(msg=BAY_NOT_FOUND)
    def test_should_reconfigure_enclosure(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.update_configuration.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = PARAMS_FOR_RECONFIGURED
        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            msg=ENCLOSURE_RECONFIGURED,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW)
        )
Exemplo n.º 10
0
    def test_should_fail_when_device_bay_not_found(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]

        params_power_on_not_found_bay = yaml.load(self.PARAMS_FOR_DEVICE_BAY_POWER_STATE_E_FUSE)
        params_power_on_not_found_bay['data']['bayNumber'] = 3
        self.mock_ansible_module.params = params_power_on_not_found_bay

        EnclosureModule().run()

        self.enclosures.patch.not_been_called()

        self.mock_ansible_module.fail_json.assert_called_once_with(msg=BAY_NOT_FOUND)
Exemplo n.º 11
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

        EnclosureModule()

        mock_ov_client_from_json_file.assert_called_once_with('config.json')
        mock_ov_client_from_env_vars.not_been_called()
Exemplo n.º 12
0
    def test_should_refresh_enclosure(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.get.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = PARAMS_FOR_REFRESH

        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=ENCLOSURE_REFRESHED
        )
Exemplo n.º 13
0
    def test_should_not_update_when_no_changes_by_name_key(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.get_all.return_value = ALL_ENCLOSURES

        self.mock_ansible_module.params = PARAMS_FOR_PRESENT_NO_HOSTNAME

        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            msg=ENCLOSURE_ALREADY_EXIST,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW)
        )
Exemplo n.º 14
0
    def test_should_do_nothing_when_enclosure_not_exist(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.enclosures.get_by.return_value = []

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

        EnclosureModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=False, msg=ENCLOSURE_NOT_FOUND)
Exemplo n.º 15
0
    def test_replace_name_for_new_enclosure(self):
        self.enclosures.get_by.return_value = []
        self.enclosures.get_all.return_value = []
        self.enclosures.add.return_value = ENCLOSURE_FROM_ONEVIEW
        self.enclosures.patch.return_value = []

        params_ansible = deepcopy(PARAMS_FOR_PRESENT)
        params_ansible['data']['name'] = 'Encl1-Renamed'
        self.mock_ansible_module.params = params_ansible

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            "/a/path", "replace", "/name", "Encl1-Renamed")
Exemplo n.º 16
0
    def test_should_not_set_to_off_when_it_is_already_off(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_UID_OFF)

        EnclosureModule().run()

        self.enclosures.patch.not_been_called()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=UID_ALREADY_POWERED_OFF
        )
Exemplo n.º 17
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.enclosures.get_by.return_value = []
        mock_ov_instance.enclosures.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, EnclosureModule().run())

        mock_ansible_instance.fail_json.assert_called_once_with(
            msg=FAKE_MSG_ERROR)
Exemplo n.º 18
0
    def test_should_remove_enclosure(self, mock_ansible_module,
                                     mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.enclosures.get_by.return_value = [
            ENCLOSURE_FROM_ONEVIEW
        ]

        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

        EnclosureModule().run()

        mock_ansible_instance.exit_json.assert_called_once_with(
            changed=True, msg=ENCLOSURE_REMOVED)
Exemplo n.º 19
0
    def test_replace_rack_name_for_new_enclosure(
            self, mock_ansible_module, mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.enclosures.get_by.return_value = []
        mock_ov_instance.enclosures.add.return_value = ENCLOSURE_FROM_ONEVIEW
        mock_ov_instance.enclosures.patch.return_value = []

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

        EnclosureModule().run()

        mock_ov_instance.enclosures.patch.assert_called_once_with(
            "/a/path", "replace", "/rackName", "Another-Rack-Name")
Exemplo n.º 20
0
    def test_replace_name_for_new_enclosure(self, mock_ansible_module,
                                            mock_ov_client_from_json_file):
        mock_ov_instance = mock.Mock()
        mock_ov_instance.enclosures.get_by.return_value = []
        mock_ov_instance.enclosures.add.return_value = ENCLOSURE_FROM_ONEVIEW
        mock_ov_instance.enclosures.patch.return_value = []

        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

        EnclosureModule().run()

        mock_ov_instance.enclosures.patch.assert_called_once_with(
            "/a/path", "replace", "/name", "OneView-Enclosure")
Exemplo n.º 21
0
    def test_should_not_set_state_when_it_is_already_on_desired_state(self):
        enclosure_uid_on = dict(ENCLOSURE_FROM_ONEVIEW, supportDataCollectionState='PendingCollection')
        self.enclosures.get_by.return_value = [enclosure_uid_on]

        self.mock_ansible_module.params = yaml.load(self.PARAMS)

        EnclosureModule().run()

        self.enclosures.patch.not_been_called()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            ansible_facts=dict(enclosure=enclosure_uid_on),
            msg=SUPPORT_DATA_COLLECTION_STATE_ALREADY_SET
        )
Exemplo n.º 22
0
    def test_should_create_new_enclosure(self):
        self.enclosures.get_by.return_value = []
        self.enclosures.get_all.return_value = []
        self.enclosures.add.return_value = ENCLOSURE_FROM_ONEVIEW
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = PARAMS_FOR_PRESENT

        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            msg=ENCLOSURE_ADDED,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW)
        )
Exemplo n.º 23
0
    def test_should_not_update_when_no_changes_by_standby_ip_key(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.get_all.return_value = ALL_ENCLOSURES

        params = deepcopy(PARAMS_FOR_PRESENT)
        params['data']['hostname'] = STANDBY_IP_ADDRESS
        self.mock_ansible_module.params = params

        EnclosureModule().run()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            msg=ENCLOSURE_ALREADY_EXIST,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW)
        )
Exemplo n.º 24
0
    def test_should_power_on_appliance_bays(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = self.PARAMS_FOR_BAY_POWER_ON

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            ENCLOSURE_FROM_ONEVIEW['uri'], operation='replace', path='/applianceBays/2/power', value='On')

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=APPLIANCE_BAY_POWERED_ON
        )
Exemplo n.º 25
0
    def test_should_perform_an_e_fuse(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_DEVICE_BAY_POWER_STATE_E_FUSE)

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            ENCLOSURE_FROM_ONEVIEW['uri'], operation='replace', path='/deviceBays/1/bayPowerState', value='E-Fuse')

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=DEVICE_BAY_POWER_STATE_E_FUSED
        )
Exemplo n.º 26
0
    def test_should_reset(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_MANAGER_BAY_POWER_STATE_RESET)

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            ENCLOSURE_FROM_ONEVIEW['uri'], operation='replace', path='/managerBays/1/bayPowerState', value='Reset')

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=MANAGER_BAY_POWER_STATE_RESET
        )
Exemplo n.º 27
0
    def test_should_turn_on_uid(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_UID_ON)

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            ENCLOSURE_FROM_ONEVIEW['uri'], operation='replace', path='/uidState', value='On')

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=UID_POWERED_ON
        )
Exemplo n.º 28
0
    def test_should_set_state(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = yaml.load(self.PARAMS)

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(ENCLOSURE_FROM_ONEVIEW['uri'], operation='replace',
                                                      path='/supportDataCollectionState', value='PendingCollection')

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=SUPPORT_DATA_COLLECTION_STATE_SET
        )
Exemplo n.º 29
0
    def test_should_not_power_on_when_state_is_already_on(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]

        params_power_on_do_nothing = deepcopy(self.PARAMS_FOR_BAY_POWER_ON)
        params_power_on_do_nothing['data']['bayNumber'] = 1
        self.mock_ansible_module.params = params_power_on_do_nothing

        EnclosureModule().run()

        self.enclosures.patch.not_been_called()

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=False,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=APPLIANCE_BAY_ALREADY_POWERED_ON
        )
Exemplo n.º 30
0
    def test_should_remove_ipv4(self):
        self.enclosures.get_by.return_value = [ENCLOSURE_FROM_ONEVIEW]
        self.enclosures.patch.return_value = ENCLOSURE_FROM_ONEVIEW

        self.mock_ansible_module.params = yaml.load(self.PARAMS_FOR_DEVICE_BAY_IPV4_RELEASE)

        EnclosureModule().run()

        self.enclosures.patch.assert_called_once_with(
            ENCLOSURE_FROM_ONEVIEW['uri'], operation='remove', path='/interconnectBays/1/ipv4Setting', value='')

        self.mock_ansible_module.exit_json.assert_called_once_with(
            changed=True,
            ansible_facts=dict(enclosure=ENCLOSURE_FROM_ONEVIEW),
            msg=INTERCONNECT_BAY_IPV4_SETTING_REMOVED
        )