Exemple #1
0
    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")])
Exemple #2
0
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])
Exemple #4
0
    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")