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_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"])
        ])
示例#3
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_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()
示例#5
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")
        ])
示例#6
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_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_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"])
    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_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")
    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 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)
示例#15
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
    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_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_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_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_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_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_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)
class ServerProfilesTest(TestCase):
    def setUp(self):
        host = '127.0.0.1'
        http_connection = connection(host)
        self._resource = ServerProfiles(http_connection)
        self.uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae"
        self._resource.data = {"uri": self.uri}

    @mock.patch.object(ResourceHelper, 'get_all')
    def test_get_all(self, mock_get_all):
        query_filter = 'name=TestName'
        sort = 'name:ascending'

        self._resource.get_all(start=2, count=500, filter=query_filter, sort=sort)
        mock_get_all.assert_called_once_with(start=2, count=500, filter=query_filter, sort=sort)

    @mock.patch.object(ResourceHelper, 'create')
    def test_create(self, mock_create):
        template = dict(name="Server Profile Test")

        expected_template = template.copy()
        default_values = self._resource._get_default_values()
        expected_template.update(default_values)

        self._resource.create(template, timeout=TIMEOUT)
        mock_create.assert_called_once_with(expected_template, force='', timeout=TIMEOUT)

    @mock.patch.object(Resource, 'ensure_resource_data')
    @mock.patch.object(ResourceHelper, 'update')
    def test_update(self, mock_update, mock_ensure_client):
        template = dict(name="Server Profile Test", macType="Virtual",
                        enclosureUri='/rest/fake', enclosureBay=3)

        expected_template = dict(name="Server Profile Test", macType="Virtual")
        expected_template["uri"] = self.uri

        self._resource.update(template)
        mock_update.assert_called_once_with(expected_template, self.uri, '', -1)

    @mock.patch.object(ResourceHelper, 'delete')
    def test_delete(self, mock_delete):
        self._resource.delete(timeout=TIMEOUT)
        mock_delete.assert_called_once_with(self.uri, custom_headers=None,
                                            timeout=TIMEOUT, force=False)

    @mock.patch.object(ResourcePatchMixin, 'patch_request')
    def test_patch(self, mock_pacth):
        self._resource.patch("replace", "/templateCompliance", "Compliant")
        mock_pacth.assert_called_once_with(self.uri, body=[{'path': '/templateCompliance',
                                                            'op': 'replace',
                                                            'value': 'Compliant'}],
                                           custom_headers=None, timeout=-1)

    @mock.patch.object(ResourceHelper, 'delete_all')
    def test_delete_all(self, delete_all):
        query_filter = 'name=TestName'

        self._resource.delete_all(filter=query_filter, force=True, timeout=60)
        delete_all.assert_called_once_with(filter=query_filter, force=True, timeout=60)

    @mock.patch.object(ResourceSchemaMixin, 'get_schema')
    def test_get_schema(self, get_schema):
        self._resource.get_schema()
        get_schema.assert_called_once()

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_compliance_preview(self, mock_get):
        uri = "{}/compliance-preview".format(self.uri)

        self._resource.get_compliance_preview()
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_profile_ports(self, mock_get):
        uri = "/rest/server-profiles/profile-ports" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_profile_ports(enclosureGroupUri=enclosure_group_uri,
                                         serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_messages(self, mock_get):
        uri = "{}/messages".format(self.uri)

        self._resource.get_messages()
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_transformation(self, mock_get):
        uri = "{}/transformation" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226".format(self.uri)

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_transformation(enclosureGroupUri=enclosure_group_uri,
                                          serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_available_networks(self, mock_get):
        uri = "/rest/server-profiles/available-networks" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_networks(enclosureGroupUri=enclosure_group_uri,
                                              serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_available_servers(self, mock_get):
        uri = "/rest/server-profiles/available-servers" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_servers(enclosureGroupUri=enclosure_group_uri,
                                             serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_available_storage_system(self, mock_get):
        uri = "/rest/server-profiles/available-storage-system" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_storage_system(enclosureGroupUri=enclosure_group_uri,
                                                    serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'get_all')
    def test_get_available_storage_systems(self, mock_get):
        uri = "/rest/server-profiles/available-storage-systems" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_storage_systems(enclosureGroupUri=enclosure_group_uri,
                                                     serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(start=0, count=-1, filter='', sort='', uri=uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_available_targets(self, mock_get):
        uri = "/rest/server-profiles/available-targets" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_targets(enclosureGroupUri=enclosure_group_uri,
                                             serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceHelper, 'do_get')
    def test_get_new_profile_template(self, mock_get):
        uri = "{}/new-profile-template".format(self.uri)

        self._resource.get_new_profile_template()
        mock_get.assert_called_once_with(uri)
 def setUp(self):
     host = '127.0.0.1'
     http_connection = connection(host)
     self._resource = ServerProfiles(http_connection)
     self.uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae"
     self._resource.data = {"uri": self.uri}
 def setUp(self):
     host = '127.0.0.1'
     http_connection = connection(host)
     self._resource = ServerProfiles(http_connection)
class ServerProfilesTest(TestCase):
    def setUp(self):
        host = '127.0.0.1'
        http_connection = connection(host)
        self._resource = ServerProfiles(http_connection)

    @mock.patch.object(ResourceClient, 'get_all')
    def test_get_all(self, mock_get_all):
        query_filter = 'name=TestName'
        sort = 'name:ascending'

        self._resource.get_all(start=2, count=500, filter=query_filter, sort=sort)
        mock_get_all.assert_called_once_with(start=2, count=500, filter=query_filter, sort=sort)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_by_id(self, mock_get):
        id = "6fee02f3-b7c7-42bd-a528-04341e16bad6"

        self._resource.get(id)
        mock_get.assert_called_once_with(id_or_uri=id)

    @mock.patch.object(ResourceClient, 'get_by')
    def test_get_by_property(self, mock_get_by):
        profile_property = "name"
        profile_name = "Server Profile Test"

        self._resource.get_by(profile_property, profile_name)
        mock_get_by.assert_called_once_with(profile_property, profile_name)

    @mock.patch.object(ResourceClient, 'get_by_name')
    def test_get_by_name(self, mock_get_by_name):
        profile_name = "Server Profile Test"

        self._resource.get_by_name(profile_name)
        mock_get_by_name.assert_called_once_with(profile_name)

    @mock.patch.object(ResourceClient, 'create')
    def test_create(self, mock_create):
        template = dict(name="Server Profile Test")

        expected_template = template.copy()
        expected_template["type"] = "ServerProfileV5"

        self._resource.create(resource=template, timeout=TIMEOUT)
        mock_create.assert_called_once_with(resource=expected_template, timeout=TIMEOUT)

    @mock.patch.object(ResourceClient, 'update')
    def test_update(self, mock_update):
        uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae"
        template = dict(name="Server Profile Test", macType="Virtual")

        expected_template = template.copy()
        expected_template["type"] = "ServerProfileV5"

        self._resource.update(resource=template, id_or_uri=uri)
        mock_update.assert_called_once_with(resource=expected_template, uri=uri)

    @mock.patch.object(ResourceClient, 'delete')
    def test_delete(self, mock_delete):
        template = dict(name="Server Profile Test")

        self._resource.delete(resource=template, timeout=TIMEOUT)
        mock_delete.assert_called_once_with(resource=template, timeout=TIMEOUT)

    @mock.patch.object(ResourceClient, 'patch')
    def test_patch(self, mock_pacth):
        uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae"

        self._resource.patch(uri, "replace", "/templateCompliance", "Compliant")
        mock_pacth.assert_called_once_with(uri, "replace", "/templateCompliance", "Compliant", -1)

    @mock.patch.object(ResourceClient, 'delete_all')
    def test_delete_all(self, delete_all):
        query_filter = 'name=TestName'

        self._resource.delete_all(filter=query_filter, force=True, timeout=60)
        delete_all.assert_called_once_with(filter=query_filter, force=True, timeout=60)

    @mock.patch.object(ResourceClient, 'get_schema')
    def test_get_schema(self, get_schema):
        self._resource.get_schema()
        get_schema.assert_called_once()

    @mock.patch.object(ResourceClient, 'get')
    def test_get_compliance_preview(self, mock_get):
        server_uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae"
        uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae/compliance-preview"

        self._resource.get_compliance_preview(server_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_profile_ports(self, mock_get):
        uri = "/rest/server-profiles/profile-ports" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_profile_ports(enclosureGroupUri=enclosure_group_uri,
                                         serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_messages(self, mock_get):
        server_uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae"
        uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae/messages"

        self._resource.get_messages(server_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_transformation(self, mock_get):
        server_id = "4ff2327f-7638-4b66-ad9d-283d4940a4ae"
        uri = "/rest/server-profiles/4ff2327f-7638-4b66-ad9d-283d4940a4ae/transformation" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_transformation(server_id, enclosureGroupUri=enclosure_group_uri,
                                          serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_available_networks(self, mock_get):
        uri = "/rest/server-profiles/available-networks" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_networks(enclosureGroupUri=enclosure_group_uri,
                                              serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_available_servers(self, mock_get):
        uri = "/rest/server-profiles/available-servers" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_servers(enclosureGroupUri=enclosure_group_uri,
                                             serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_available_storage_system(self, mock_get):
        uri = "/rest/server-profiles/available-storage-system" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_storage_system(enclosureGroupUri=enclosure_group_uri,
                                                    serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)

    @mock.patch.object(ResourceClient, 'get_all')
    def test_get_available_storage_systems(self, mock_get):
        uri = "/rest/server-profiles/available-storage-systems" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_storage_systems(enclosureGroupUri=enclosure_group_uri,
                                                     serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(start=0, count=-1, filter='', sort='', uri=uri)

    @mock.patch.object(ResourceClient, 'get')
    def test_get_available_targets(self, mock_get):
        uri = "/rest/server-profiles/available-targets" \
              "?enclosureGroupUri=/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4" \
              "&serverHardwareTypeUri=/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"

        server_hardware_type_uri = "/rest/server-hardware-types/C8DEF9A6-9586-465E-A951-3070988BC226"
        enclosure_group_uri = "/rest/enclosure-groups/a0f1c07b-f811-4c85-8e38-ac5ec34ea2f4"

        self._resource.get_available_targets(enclosureGroupUri=enclosure_group_uri,
                                             serverHardwareTypeUri=server_hardware_type_uri)
        mock_get.assert_called_once_with(uri)