def test_searching_again_in_other_ov_when_resource_cached_is_not_found( self, _, get_oneview_client, oneview_client_mockup, request, get_config): self.config_obj.set('oneview_config', 'ip', '10.0.0.1, 10.0.0.2, 10.0.0.3') self.config_obj.set('redfish', 'authentication_mode', 'session') get_config.return_value = self.config_obj client_session._set_new_client_by_token(self.redfish_token, self.ov_tokens) # Mocking redfish token on request property request.headers.get.return_value = self.redfish_token with open( 'oneview_redfish_toolkit/mockups/oneview/Enclosure.json') as f: enclosure = json.load(f) oneview_client_mockup.enclosures.get.side_effect = [ self.not_found_error, # 10.0.0.1 enclosure, # 10.0.0.2 found the resource here self.not_found_error, # 10.0.0.2 self.not_found_error, # 10.0.0.1 enclosure, # 10.0.0.3 found the resource here (2th time) self.not_found_error, # 10.0.0.3 self.not_found_error, # 10.0.0.1 self.not_found_error # 10.0.0.2 ] get_oneview_client.return_value = oneview_client_mockup handler_multiple_ov = \ handler_multiple_oneview.MultipleOneViewResource() handler_multiple_ov.enclosures.get('UUID_1') mapped_ov_ip = multiple_oneview.get_ov_ip_by_resource('UUID_1') # Check OneView IP matchs the mapped one self.assertEqual(mapped_ov_ip, '10.0.0.2') get_oneview_client.assert_has_calls( [call("10.0.0.1"), call("10.0.0.2")]) handler_multiple_ov.enclosures.get('UUID_1') mapped_ov_ip = multiple_oneview.get_ov_ip_by_resource('UUID_1') self.assertEqual(mapped_ov_ip, '10.0.0.3') get_oneview_client.assert_has_calls( [call("10.0.0.2"), call("10.0.0.1"), call("10.0.0.3")]) with self.assertRaises(HPOneViewException): handler_multiple_ov.enclosures.get('UUID_1') get_oneview_client.assert_has_calls( [call("10.0.0.3"), call("10.0.0.1"), call("10.0.0.2")])
def _run_action(resource_id, resource_get, function_get, resource, function, *args, **kwargs): # Check if the resource_id is already mapped if not multiple_oneview.get_ov_ip_by_resource(resource_id): # Mapping OneView for the resource_id multiple_oneview.query_ov_client_by_resource(resource_id, resource_get, function_get, resource_id, **{}) # Running action on OneView already mapped for resource_id return multiple_oneview.query_ov_client_by_resource( resource_id, resource, function, *args, **kwargs)
def test_get_storage_resource_block_single_ov(self, get_oneview_multiple_ips): multiple_oneview.init_map_resources() category_resource.init_map_category_resources() list_ips = ['10.0.0.1', '10.0.0.2', '10.0.0.3'] get_oneview_multiple_ips.return_value = list_ips self.oneview_client.server_hardware.get.side_effect = [ self.resource_not_found, self.resource_not_found, self.resource_not_found, ] self.oneview_client.server_profile_templates.get.side_effect = [ self.resource_not_found, self.resource_not_found, self.resource_not_found, ] self.oneview_client.index_resources.get.side_effect = [ self.resource_not_found, self.resource_not_found, self.drive, ] self.oneview_client.connection.get.return_value = self.drive_index_tree self.oneview_client.server_profile_templates.get_all.return_value = \ self.server_profile_templates self.oneview_client.\ logical_enclosures.get_all.return_value = self.log_encl_list self.oneview_client.drive_enclosures.get_all.return_value = \ self.drive_enclosure_list uri = "/redfish/v1/CompositionService/ResourceBlocks"\ "/c4f0392d-fae9-4c2e-a2e6-b22e6bb7533e" uuid = uri.split('/')[-1] response = self.client.get(uri) 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.expected_resource_block, result) self.oneview_client.server_hardware.get.assert_has_calls( [call(uuid), call(uuid), call(uuid)]) self.oneview_client.server_profile_templates.get.assert_has_calls( [call(uuid), call(uuid), call(uuid)]) self.oneview_client.index_resources.get.assert_has_calls([ call(self.drive["uri"]), call(self.drive["uri"]), call(self.drive["uri"]), ]) conn_uri = "/rest/index/trees/rest/drives/"\ "c4f0392d-fae9-4c2e-a2e6-b22e6bb7533e?parentDepth=3" # Check for single calls on OneView context self.oneview_client.connection.get.assert_called_once_with(conn_uri) self.oneview_client.\ server_profile_templates.get_all.assert_called_once_with() self.oneview_client.logical_enclosures.get_all.\ assert_called_once_with() self.oneview_client.drive_enclosures.get_all.\ assert_called_once_with() ov_ip_cached_drive = multiple_oneview.get_ov_ip_by_resource( self.drive['uri']) self.assertEqual(ov_ip_cached_drive, list_ips[2]) ov_ip_cached_conn_drive = multiple_oneview.get_ov_ip_by_resource( conn_uri) self.assertTrue(ov_ip_cached_conn_drive, list_ips[2])
def test_search_mapped_after_search_in_all(self, req_context, get_oneview_client, oneview_client_mockup, request, get_config): # Mocking configuration read from config file self.config_obj.set('oneview_config', 'ip', '10.0.0.1, 10.0.0.2, 10.0.0.3') self.config_obj.set('redfish', 'authentication_mode', 'session') # Mocking globals['config'] of config file get_config.return_value = self.config_obj # Mocking redfish->Oneview tokens client_session._set_new_client_by_token(self.redfish_token, self.ov_tokens) # Mocking redfish token on request property request.headers.get.return_value = self.redfish_token # Mocking OneView client call returning resource just for the last # one, ip: 10.0.0.3 oneview_client_mockup.server_profiles.get.side_effect = [ self.not_found_server_profile, self.not_found_server_profile, self.server_profile, ] # Mocking connection.get_oneview_client() to return mocked # OneView Client get_oneview_client.return_value = oneview_client_mockup # Create new handler for multiple OneView support handler_multiple_ov = \ handler_multiple_oneview.MultipleOneViewResource() # Query resource handler_multiple_ov.server_profiles.get(self.sp_uuid) # Check if resource was queried for all OneViews before found on # last one oneview_client_mockup.server_profiles.get.assert_has_calls( [call(self.sp_uuid), call(self.sp_uuid), call(self.sp_uuid)]) # Check if resource was queried on each one for all OneViews get_oneview_client.assert_has_calls( [call("10.0.0.1"), call("10.0.0.2"), call("10.0.0.3")]) # Mocking OneView client call returning resource oneview_client_mockup.server_profiles.get.side_effect = [ self.server_profile, ] # Query resource again, now already mapped on cache handler_multiple_ov.server_profiles.get(self.sp_uuid) # Check if resource was queried on just one OneView, the mapped one # for the resource oneview_client_mockup.server_profiles.get.assert_has_calls( [call(self.sp_uuid)]) # Check if resource was queried on just one OneViews that was mapped # for the resource get_oneview_client.assert_has_calls([call("10.0.0.3")]) # Get the OneView IP mapped for the resource mapped_ov_ip = multiple_oneview.get_ov_ip_by_resource(self.sp_uuid) # Check OneView IP matchs the mapped one self.assertEqual(mapped_ov_ip, "10.0.0.3")