def test_get_computer_system_sht_exception(self):
        """Tests ComputerSystem with ServerHardwareTypes exception"""

        profile_obj = ServerProfiles(self.oneview_client, {
                'serverHardwareTypeUri': 'invalidUri',
                'serverHardwareUri': 'validUri',
                'category': 'server-profiles'
            })
        self.oneview_client.server_profiles.get_by_id.return_value = \
            profile_obj
        self.oneview_client.\
            server_hardware.get_by_id.return_value = {}  # some object
        self.oneview_client.server_hardware_types.get_by_uri.side_effect = \
            self.internal_error

        response = self.client.get(
            "/redfish/v1/Systems/0303437-3034-4D32-3230-313133364752"
        )

        self.assertEqual(
            status.HTTP_500_INTERNAL_SERVER_ERROR,
            response.status_code
        )
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id \
            .assert_called_with("0303437-3034-4D32-3230-313133364752")
    def test_get_ethernet_interface_when_it_has_only_one_vlan(self):
        """Tests request a valid EthernetInterface when it has one vlan"""

        with open('oneview_redfish_toolkit/mockups/redfish/'
                  'EthernetInterfaceWithOnlyOneVlan.json') as f:
            ethernet_interface_mockup = json.load(f)

        with open('oneview_redfish_toolkit/mockups/oneview/'
                  'NetworkForEthernetInterface.json') as f:
            network = json.load(f)

        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.index_resources.get.return_value = network

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "EthernetInterfaces/1")

        result = json.loads(response.data.decode("utf-8"))

        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(ethernet_interface_mockup, result)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])

        # if verifies the URI of connection from ServerProfile.json mockup
        self.oneview_client.index_resources.get.assert_called_with(
            "/rest/ethernet-networks/19638712-679d-4232-9743-c7cb6c7bf718")
    def test_get_ethernet_interface_when_it_has_only_a_list_of_vlan(self):
        """Tests request a valid EthernetInterface when it has a vlans list"""

        with open('oneview_redfish_toolkit/mockups/oneview/'
                  'NetworkSetForEthernetInterface.json') as f:
            network_set = json.load(f)

        with open('oneview_redfish_toolkit/mockups/redfish/'
                  'EthernetInterfaceWithListOfVlans.json') as f:
            ethernet_interface_mockup = json.load(f)

        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.index_resources.get.return_value = network_set

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "EthernetInterfaces/2")

        result = json.loads(response.data.decode("utf-8"))

        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(ethernet_interface_mockup, result)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])

        # if verifies the URI of connection from ServerProfile.json mockup
        self.oneview_client.index_resources.get.assert_called_with(
            "/rest/network-sets/76f584da-1f9d-40b8-9b9d-5ccb09810142")
Пример #4
0
    def test_get_computer_system_sht_not_found(self):
        """Tests ComputerSystem with ServerHardwareType not found"""
        profile_obj = ServerProfiles(
            self.oneview_client, {
                "category": "server-profiles",
                "serverHardwareUri": "validURI",
                "serverHardwareTypeUri": "notFoundURI"
            })

        self.oneview_client.server_profiles.get_by_id.return_value = \
            profile_obj
        self.oneview_client.server_hardware.get_by_uri.return_value = \
            ServerHardware(self.oneview_client)
        self.oneview_client.server_hardware_types.get_by_uri.side_effect = \
            self.not_found_error

        response = self.client.get(
            "/redfish/v1/Systems/0303437-3034-4D32-3230-313133364752")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_hardware.get_by_uri.assert_called_with(
            "validURI")
        self.oneview_client.server_hardware_types.get_by_uri\
            .assert_called_with("notFoundURI")
    def test_remove_computer_system(self, sp_delete, power_state):
        """Tests delete computer system"""

        profile_obj = ServerProfiles(self.oneview_client, {
            'serverHardwareUri': '/rest/server-hardware/uuid_1'
        })
        sp_delete.return_value = True

        self.oneview_client.server_profiles.get_by_id.return_value = profile_obj
        ServerProfiles.delete.return_value = sp_delete.return_value
        serverhw_obj = ServerHardware(self.oneview_client, {"uri":"/rest/server-hardware/uuid_1"})

        response = self.client.delete(
            "/redfish/v1/Systems/"
            "e7f93fa2-0cb4-11e8-9060-e839359bc36b")

        self.assertEqual(
            status.HTTP_204_NO_CONTENT,
            response.status_code
        )
        self.oneview_client.server_hardware.get_by_uri.return_value = serverhw_obj
        ServerHardware.update_power_state\
            .has_calls({
                'powerControl': 'PressAndHold', 'powerState': 'Off'
            }, )
    def test_get_network_interface_collection(self):
        """Tests NetworkInterfaceCollection"""

        with open('oneview_redfish_toolkit/mockups/redfish/'
                  'NetworkInterfaceCollection.json') as f:
            network_interface_collection_mockup = json.load(f)

        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        serverhw_obj = ServerHardware(self.oneview_client,
                                      self.server_hardware)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.server_hardware.get_by_uri.return_value = \
            serverhw_obj

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "NetworkInterfaces/")

        result = json.loads(response.data.decode("utf-8"))

        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(network_interface_collection_mockup, result)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])
        self.oneview_client.server_hardware.get_by_uri.assert_called_with(
            self.server_profile["serverHardwareUri"])
Пример #7
0
    def test_change_power_state_invalid_value(self):
        """Tests change SH power state with invalid power value"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        serverhw_obj = ServerHardware(self.oneview_client,
                                      self.server_hardware)

        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.server_hardware.get_by_uri.return_value = \
            serverhw_obj
        try:
            self.client.post(
                "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2"
                "/Actions/ComputerSystem.Reset",
                data=json.dumps(dict(ResetType="INVALID_TYPE")),
                content_type='application/json')
        except OneViewRedfishException as e:
            self.assertEqual(status.HTTP_404_NOT_FOUND, e.status_code_error)
            self.assertIn('There is no mapping for ForceOffff on the OneView',
                          str(e.msg))

        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            "b425802b-a6a5-4941-8885-aab68dfa2ee2")
        self.oneview_client.server_hardware.get_by_uri.assert_called_with(
            "/rest/server-hardware/30303437-3034-4D32-3230-313130304752")
    def test_composed_system_without_drives(self):
        """Tests Storage when it does not have drives"""
        server_profile = copy.deepcopy(self.server_profile)
        server_profile["localStorage"]["sasLogicalJBODs"] = []
        storage_mockup_without_drives = copy.deepcopy(self.storage_mockup)
        storage_mockup_without_drives["Drives"] = []
        storage_mockup_without_drives["*****@*****.**"] = 0
        del storage_mockup_without_drives["Volumes"]
        profile_obj = ServerProfiles(self.oneview_client, server_profile)
        self.oneview_client.server_profiles.get_by_id.return_value = profile_obj
        server_hardware_type_obj = ServerHardwareTypes(
            self.oneview_client, self.server_hardware_type)
        self.oneview_client.server_hardware_types.get_by_uri.return_value \
            = server_hardware_type_obj

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1")

        # Gets json from response
        result = json.loads(response.data.decode("utf-8"))

        # Tests response
        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(storage_mockup_without_drives, result)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])
        self.oneview_client.server_hardware_types.get_by_uri.assert_called_with(
            self.server_hardware_type["uri"])
        self.oneview_client.sas_logical_jbods.get.assert_not_called()
Пример #9
0
    def test_change_power_state_unable_reset(self, power_state):
        """Tests change SH power state with SH unable to reset"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        serverhw_obj = ServerHardware(self.oneview_client,
                                      self.server_hardware)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.server_hardware.get_by_id.return_value = \
            serverhw_obj
        power_state.side_effect = \
            self.internal_error

        response = self.client.post(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2"
            "/Actions/ComputerSystem.Reset",
            data=json.dumps(dict(ResetType="ForceRestart")),
            content_type='application/json')
        self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR,
                         response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            "b425802b-a6a5-4941-8885-aab68dfa2ee2")
        self.oneview_client.server_hardware.get_by_uri.has_calls([
            call("/rest/server-hardware/"
                 "30303437-3034-4D32-3230-313130304752"),
            call("/rest/server-hardware/"
                 "30303437-3034-4D32-3230-313130304752")
        ])
    def test_get_sp_vlan_network_interface_collection(self):
        with open('oneview_redfish_toolkit/mockups/'
                  'redfish/VLanNetworkInterfaceCollectionSP.json') as f:
            expected_vlan_network_interface_collection = json.load(f)

        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.server_profiles.get_by_id.return_value = \
            profile_obj

        network_set_obj = NetworkSets(self.oneview_client,
                                      self.network_set_mockup)
        self.oneview_client.network_sets.get_by_uri.return_value = \
            network_set_obj

        response = self.client.get("/redfish/v1/Systems"
                                   "/1f0ca9ef-7f81-45e3-9d64-341b46cf87e0/"
                                   "EthernetInterfaces/1/VLANs")

        result = json.loads(response.data.decode("utf-8"))

        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(expected_vlan_network_interface_collection,
                               result)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uri"].split("/")[-1])
        self.oneview_client.network_sets.get_by_uri.assert_called_with(
            self.network_set_mockup["uri"])
    def test_get_storage(self):
        """Tests Storage"""
        server_hardware_type_obj = ServerHardwareTypes(
            self.oneview_client, self.server_hardware_type)
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)

        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.server_hardware_types.get_by_uri.return_value \
            = server_hardware_type_obj
        self.oneview_client.\
            sas_logical_jbods.get.side_effect = self.logical_jbods

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1")

        # Gets json from response
        result = json.loads(response.data.decode("utf-8"))

        # Tests response
        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(self.storage_mockup, result)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])
        self.oneview_client.server_hardware_types.get_by_uri.assert_called_with(
            self.server_hardware_type["uri"])
        self.oneview_client.sas_logical_jbods.get.assert_has_calls([
            call(self.logical_jbods[0]["uri"]),
            call(self.logical_jbods[1]["uri"])
        ])
    def server_profiles(self):
        """
        Gets the ServerProfiles API client.

        Returns:
            ServerProfiles:
        """
        return ServerProfiles(self.__connection)
    def test_change_power_state(self, power_state):
        """Tests change SH power state with valid power values

            Valid Power Values:
                - On
                - ForceOff
                - GracefulShutdown
                - GracefulRestart
                - ForceRestart
                - PushPowerButton
        """
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        serverhw_obj = ServerHardware(self.oneview_client, self.server_hardware)
        power_state.return_value = {"status": "OK"}
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.server_hardware.get_by_uri.return_value = \
            serverhw_obj

        ServerHardware.update_power_state.return_value = \
            power_state.return_value

        reset_types = ["On", "ForceOff", "GracefulShutdown",
                       "GracefulRestart", "ForceRestart", "PushPowerButton"]

        for reset_type in reset_types:
            response = self.client.post(
                "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2"
                "/Actions/ComputerSystem.Reset",
                data=json.dumps(dict(ResetType=reset_type)),
                content_type='application/json')

            # Tests response
            self.assertEqual(status.HTTP_200_OK, response.status_code)
            self.assertEqual("application/json", response.mimetype)

            json_str = response.data.decode("utf-8")

            self.assertEqual(json_str, '{"ResetType": "%s"}' % reset_type)

        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            "b425802b-a6a5-4941-8885-aab68dfa2ee2"
        )

        self.oneview_client.server_hardware.get_by_uri.has_calls(
            [call("/rest/server-hardware/"
                  "30303437-3034-4D32-3230-313130304752"),
             call("30303437-3034-4D32-3230-313130304752")]
        )
        serverhw_obj = ServerHardware(self.oneview_client, {
                    'uri': '/rest/server-hardware/30303437-3034-4D32-3230-313130304752'})
        self.oneview_client.server_hardware.get_by_uri = serverhw_obj

        ServerHardware.update_power_state \
            .has_calls({
                'powerControl': 'MomentaryPress',
                'powerState': 'Off'
            })
Пример #14
0
    def server_profiles(self):
        """
        Gets the ServerProfiles API client.

        Returns:
            ServerProfiles:
        """
        if not self.__server_profiles:
            self.__server_profiles = ServerProfiles(self.__connection)
        return self.__server_profiles
Пример #15
0
    def test_remove_computer_system_task_completed(self, sp_delete):
        """Tests remove ComputerSystem with task completed"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.server_profiles.get_by_id.return_value = \
            profile_obj
        sp_delete.return_value = {'taskState': 'Completed'}
        response = self.client.delete("/redfish/v1/Systems/"
                                      "e7f93fa2-0cb4-11e8-9060-e839359bc36b")

        self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
    def test_get_volumeCollection(self):
        """Tests for get volume collection"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Volumes")
        result = json.loads(response.data.decode("utf-8"))
        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(self.volume_collection, result)
    def test_get_volume_without_volumes(self):
        """Tests get volume when volume is not found"""

        server_profile = copy.deepcopy(self.server_profile)
        server_profile["localStorage"]["sasLogicalJBODs"] = []
        profile_obj = ServerProfiles(self.oneview_client, server_profile)
        self.oneview_client.server_profiles.get.return_value = profile_obj

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Volumes/1")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
    def test_get_drive_when_drive_id_is_invalid(self):
        """Tests when drive id is not a number"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get.return_value = profile_obj
        self.oneview_client.\
            sas_logical_jbods.get.side_effect = self.logical_jbods

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Drives/abc")

        self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertIn("Drive id should be a integer", str(response.data))
        self.oneview_client.server_profiles.get_by_id.assert_not_called()
        self.oneview_client.sas_logical_jbods.get.assert_not_called()
Пример #19
0
    def test_get_computer_system_sh_exception(self):
        """Tests ComputerSystem with ServerHardware exception"""

        profile_obj = ServerProfiles(self.oneview_client, {
            "category": "server-profiles",
            "serverHardwareUri": "someURI"
        })
        self.oneview_client.server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.\
            server_hardware.get_by_id.side_effect = self.internal_error

        response = self.client.get(
            "/redfish/v1/Systems/0303437-3034-4D32-3230-313133364752")

        self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR,
                         response.status_code)
        self.assertEqual("application/json", response.mimetype)
Пример #20
0
    def test_all_computer_system_states(self, get_map_appliances,
                                        get_map_resources):
        expected_cs = copy.deepcopy(self.computer_system_mockup)
        server_profile = copy.deepcopy(self.server_profile)
        server_profile["localStorage"]["sasLogicalJBODs"].pop(0)

        for oneview_status, redfish_status in status_mapping.\
                SERVER_PROFILE_STATE_TO_REDFISH_STATE.items():

            server_profile["state"] = oneview_status
            expected_cs["Status"]["State"] = redfish_status

            resource_id = "/rest/server-hardware-types/" \
                          "FE50A6FE-B1AC-4E42-8D40-B73CA8CC0CD2"
            get_map_resources.return_value = OrderedDict({
                resource_id:
                "10.0.0.1",
            })
            get_map_appliances.return_value = self.map_appliance
            profile_obj = ServerProfiles(self.oneview_client, server_profile)
            serverhw_obj = ServerHardware(self.oneview_client,
                                          self.server_hardware)
            server_hardware_type_obj = ServerHardwareTypes(
                self.oneview_client, self.server_hardware_types)
            self.oneview_client.server_profiles.get_by_id.return_value = \
                profile_obj
            self.oneview_client.server_hardware.get_by_uri.return_value = \
                serverhw_obj
            self.oneview_client.server_hardware_types.get_by_uri.return_value = \
                server_hardware_type_obj
            self.oneview_client.sas_logical_jbods.get_drives.return_value = \
                [self.drives[4]]
            self.oneview_client.labels.get_by_resource.return_value = \
                self.label_for_server_profile
            self.oneview_client.appliance_node_information.get_version.return_value = \
                self.appliance_info

            response = self.client.get(
                "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2")

            result = json.loads(response.data.decode("utf-8"))

            self.assertEqual(status.HTTP_200_OK, response.status_code)
            self.assertEqual("application/json", response.mimetype)
            self.assertEqualMockup(expected_cs, result)
    def test_get_sp_vlan_collection_not_found(self):
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.server_profiles.get_by_id.return_value = \
            profile_obj

        self.oneview_client.network_sets.get_by_uri.side_effect = \
            self.resource_not_found

        response = self.client.get("/redfish/v1/Systems"
                                   "/1f0ca9ef-7f81-45e3-9d64-341b46cf87e0"
                                   "/EthernetInterfaces/1/VLANs")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uri"].split("/")[-1])
        self.oneview_client.network_sets.get_by_uri.assert_called_with(
            self.network_set_mockup["uri"])
    def test_get_network_interface_sh_not_found(self):
        """Tests NetworkInterface server hardware not found"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.\
            server_hardware.get_by_uri.side_effect = self.not_found_error

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "NetworkInterfaces/3")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])
        self.oneview_client.server_hardware.get_by_uri.assert_called_with(
            self.server_profile["serverHardwareUri"])
    def test_get_drive_when_sas_logical_jbod_not_found(self):
        """Tests when sas logical jbod not found"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.sas_logical_jbods.get.side_effect = \
            self.not_found_error

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Drives/4")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])
        self.oneview_client.sas_logical_jbods.get.assert_called_with(
            self.logical_jbods[0]["uri"])
    def test_get_network_interface_invalid_id(self):
        """Tests NetworkInterfaceCollection"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        serverhw_obj = ServerHardware(self.oneview_client,
                                      self.server_hardware)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.server_hardware.get_by_uri.return_value = \
            serverhw_obj

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "NetworkInterfaces/invalid_id")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_not_called()
        self.oneview_client.server_hardware.get_by_uri.assert_not_called()
    def test_get_sp_vlan_network_interface_connection_not_found(self):
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.server_profiles.get_by_id.return_value = \
            profile_obj

        connection_id = "999"

        response = self.client.get(
            "/redfish/v1/Systems"
            "/1f0ca9ef-7f81-45e3-9d64-341b46cf87e0"
            "/EthernetInterfaces/" + connection_id +
            "/VLANs/19638712-679d-4232-9743-c7cb6c7bf718")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uri"].split("/")[-1])
        self.oneview_client.ethernet_networks.get_by_id.assert_not_called()
    def test_get_volume(self, get_drive_enclosure_uri, get_drive_mock):
        """Tests for get volume"""
        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get_by_id.return_value = profile_obj
        self.oneview_client.sas_logical_jbods.get.return_value = {
            "sasLogicalInterconnectUri":
            "/rest/sas-logical-interconnects/"
            "63138084-6d81-4b50-b35b-7e01a2390636",
            "logicalDriveBayUris": [
                "/rest/sas-logical-interconnects/63138084-"
                "6d81-4b50-b35b-7e01a2390636/logical-"
                "drive-enclosures/0d1d9142-f5fe-4256-"
                "aff2-d2dd95a0ce8f/logical-drive-bays"
                "/cef5316d-e5ab-4d46-83bc-caba10d954a8",
                "/rest/sas-logical-interconnects/63138084-"
                "6d81-4b50-b35b-7e01a2390636/logical-drive"
                "-enclosures/0d1d9142-f5fe-4256-aff2-d2dd9"
                "5a0ce8f/logical-drive-bays/3918cd02-7c70"
                "-4ef4-9936-ef6bad38c534"
            ],
            "maxSizeGB":
            3276,
            "status":
            "OK",
            "name":
            "SSD_storage",
            "uri":
            "/rest/sas-logical-jbods/473db373-2d9c-4e7f-adca-"
            "a3649df5425d"
        }
        get_drive_mock.return_value = "1:1:1"
        get_drive_enclosure_uri.return_value = "/rest/drive-enclosures/"
        "SN123100"

        self.oneview_client.\
            drive_enclosures.get.return_value = self.drive_enclosures
        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Volumes/1")
        result = json.loads(response.data.decode("utf-8"))
        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(self.volume, result)
    def test_get_external_storage_volumes(self):
        """Tests get external storage volume for computer system"""

        with open('oneview_redfish_toolkit/mockups/redfish/'
                  'VolumesResourceBlock.json') as f:
            expected_storage_details = json.load(f)

        with open('oneview_redfish_toolkit/mockups/oneview/Volumes.json') as f:
            volume = json.load(f)

        expected_storage_details["@odata.id"] = "/redfish/v1/Systems/" + \
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Volumes/" + \
            "B526F59E-9BC7-467F-9205-A9F4015CE296"
        expected_storage_details["Id"] = \
            "B526F59E-9BC7-467F-9205-A9F4015CE296"

        storage_pool_obj = StoragePools(
            self.oneview_client, {
                "uri":
                "/rest/storage-pools/DC8BD64B-9A4E-4722-92D3-A9F4015B0B71",
                "deviceSpecificAttributes": {
                    "supportedRAIDLevel": "RAID6"
                }
            })

        self.oneview_client.storage_pools.get_by_uri.return_value = storage_pool_obj
        server_profile = copy.deepcopy(self.server_profile)
        server_profile["sanStorage"] = self.san_storage

        profile_obj = ServerProfiles(self.oneview_client, server_profile)
        self.oneview_client.server_profiles.get_by_id.return_value = profile_obj
        volume_obj = Volumes(self.oneview_client, volume[0])
        self.oneview_client.volumes.get_by_id.return_value = volume_obj

        response = self.client.get(
            "/redfish/v1/Systems/"
            "b425802b-a6a5-4941-8885-aab68dfa2ee2/Storage/1/Volumes/"
            "B526F59E-9BC7-467F-9205-A9F4015CE296")

        result = json.loads(response.data.decode("utf-8"))
        print(result)
        self.assertEqual(status.HTTP_200_OK, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.assertEqualMockup(expected_storage_details, result)
Пример #28
0
    def test_remove_when_power_off_on_decompose_is_not_configured(
            self, config_mock, sp_delete, power_state):
        """Tests delete that should does not power off server"""
        profile_obj = ServerProfiles(
            self.oneview_client,
            {'serverHardwareUri': '/rest/server-hardware/uuid_1'})
        self.oneview_client.server_profiles.get_by_id.return_value = profile_obj

        config_mock.get_composition_settings.return_value = {
            'PowerOffServerOnDecompose': ''
        }

        sp_delete.return_value = True
        ServerProfiles.delete.return_value = sp_delete.return_value

        response = self.client.delete("/redfish/v1/Systems/"
                                      "e7f93fa2-0cb4-11e8-9060-e839359bc36b")

        self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
        power_state.update_power_state.assert_not_called()
Пример #29
0
    def test_remove_when_power_off_on_decompose_has_wrong_configuration(
            self, config_mock, power_state, sp_delete):
        """Tests delete that should raise a validation error"""

        profile_obj = ServerProfiles(
            self.oneview_client,
            {'serverHardwareUri': '/rest/server-hardware/uuid_1'})
        self.oneview_client.server_profiles.get_by_id.return_value = profile_obj
        config_mock.get_composition_settings.return_value = {
            'PowerOffServerOnDecompose': 'ForceOffff'
        }

        try:
            self.client.delete("/redfish/v1/Systems/"
                               "e7f93fa2-0cb4-11e8-9060-e839359bc36b")

        except OneViewRedfishException as e:
            self.assertEqual(status.HTTP_404_NOT_FOUND, e.status_code_error)
            self.assertIn('There is no mapping for ForceOffff on the OneView',
                          str(e.msg))
        power_state.assert_not_called()
        sp_delete.assert_not_called()
    def test_get_ethernet_interface_when_id_is_not_found(self):
        """Tests request a not found EthernetInterface"""

        profile_obj = ServerProfiles(self.oneview_client, self.server_profile)
        self.oneview_client.\
            server_profiles.get.return_value = profile_obj

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "EthernetInterfaces/3")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
        self.assertEqual("application/json", response.mimetype)
        self.oneview_client.server_profiles.get_by_id.assert_called_with(
            self.server_profile["uuid"])
        self.oneview_client.index_resources.get.assert_not_called()

        response = self.client.get(
            "/redfish/v1/Systems/b425802b-a6a5-4941-8885-aab68dfa2ee2/"
            "EthernetInterfaces/abc")

        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)