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"]) ])
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()
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_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' })
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 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()
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)
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)
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()
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)