Make image clients use rest_client
Now service_client is unnecessary because that is the same as rest_client. This patch makes image clients use the rest_client, and we will remove service_client for the cleanup in the future. This patch removes these clients from a certain test because this test is just for service_client, not rest_client as the test name. We have added this test for verifying all arguments are passed into rest_client via service_client. However, this patch some clients use rest_client directly, so this test becomes meaningless for these clients. That is a reason why the migrated clients(into tempest.lib before) are not contained in this test. NOTE: This patch changes __init__() of images_client to use **kwargs because service_client removed them if each value is None, but rest_client doesn't do it. The purpose of the __init__() is just for calling self.skip_path(), so this change is more readable also. Partially implements blueprint consistent-service-method-names Change-Id: I6655b31239d4f3d0c4601b875a4a26778fc9dd2d
This commit is contained in:
parent
90d446a34d
commit
e76510d0eb
@ -24,34 +24,22 @@ import six
|
||||
from six.moves.urllib import parse as urllib
|
||||
|
||||
from tempest.common import glance_http
|
||||
from tempest.common import service_client
|
||||
from tempest import exceptions
|
||||
from tempest.lib.common import rest_client
|
||||
from tempest.lib.common.utils import misc as misc_utils
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class ImagesClient(service_client.ServiceClient):
|
||||
class ImagesClient(rest_client.RestClient):
|
||||
|
||||
def __init__(self, auth_provider, catalog_type, region, endpoint_type=None,
|
||||
build_interval=None, build_timeout=None,
|
||||
disable_ssl_certificate_validation=None,
|
||||
ca_certs=None, trace_requests=None):
|
||||
def __init__(self, auth_provider, catalog_type, region, **kwargs):
|
||||
super(ImagesClient, self).__init__(
|
||||
auth_provider,
|
||||
catalog_type,
|
||||
region,
|
||||
endpoint_type=endpoint_type,
|
||||
build_interval=build_interval,
|
||||
build_timeout=build_timeout,
|
||||
disable_ssl_certificate_validation=(
|
||||
disable_ssl_certificate_validation),
|
||||
ca_certs=ca_certs,
|
||||
trace_requests=trace_requests)
|
||||
auth_provider, catalog_type, region, **kwargs)
|
||||
self._http = None
|
||||
self.dscv = disable_ssl_certificate_validation
|
||||
self.ca_certs = ca_certs
|
||||
self.dscv = kwargs.get("disable_ssl_certificate_validation")
|
||||
self.ca_certs = kwargs.get("ca_certs")
|
||||
|
||||
def _image_meta_from_headers(self, headers):
|
||||
meta = {'properties': {}}
|
||||
@ -130,7 +118,7 @@ class ImagesClient(service_client.ServiceClient):
|
||||
self._error_checker('POST', '/v1/images', headers, data, resp,
|
||||
body_iter)
|
||||
body = json.loads(''.join([c for c in body_iter]))
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def _update_with_data(self, image_id, headers, data):
|
||||
url = '/v1/images/%s' % image_id
|
||||
@ -139,7 +127,7 @@ class ImagesClient(service_client.ServiceClient):
|
||||
self._error_checker('PUT', url, headers, data,
|
||||
resp, body_iter)
|
||||
body = json.loads(''.join([c for c in body_iter]))
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
@property
|
||||
def http(self):
|
||||
@ -158,7 +146,7 @@ class ImagesClient(service_client.ServiceClient):
|
||||
resp, body = self.post('v1/images', None, headers)
|
||||
self.expected_success(201, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def update_image(self, image_id, **kwargs):
|
||||
headers = {}
|
||||
@ -172,13 +160,13 @@ class ImagesClient(service_client.ServiceClient):
|
||||
resp, body = self.put(url, None, headers)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_image(self, image_id):
|
||||
url = 'v1/images/%s' % image_id
|
||||
resp, body = self.delete(url)
|
||||
self.expected_success(200, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def list_images(self, detail=False, **kwargs):
|
||||
"""Return a list of all images filtered by input parameters.
|
||||
@ -208,20 +196,20 @@ class ImagesClient(service_client.ServiceClient):
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def get_image_meta(self, image_id):
|
||||
url = 'v1/images/%s' % image_id
|
||||
resp, __ = self.head(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = self._image_meta_from_headers(resp)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def show_image(self, image_id):
|
||||
url = 'v1/images/%s' % image_id
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
return service_client.ResponseBodyData(resp, body)
|
||||
return rest_client.ResponseBodyData(resp, body)
|
||||
|
||||
def is_resource_deleted(self, id):
|
||||
try:
|
||||
@ -240,7 +228,7 @@ class ImagesClient(service_client.ServiceClient):
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def list_shared_images(self, tenant_id):
|
||||
"""List shared images with the specified tenant"""
|
||||
@ -248,7 +236,7 @@ class ImagesClient(service_client.ServiceClient):
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def add_member(self, member_id, image_id, **kwargs):
|
||||
"""Add a member to an image.
|
||||
@ -260,13 +248,13 @@ class ImagesClient(service_client.ServiceClient):
|
||||
body = json.dumps({'member': kwargs})
|
||||
resp, __ = self.put(url, body)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp)
|
||||
return rest_client.ResponseBody(resp)
|
||||
|
||||
def delete_member(self, member_id, image_id):
|
||||
url = 'v1/images/%s/members/%s' % (image_id, member_id)
|
||||
resp, __ = self.delete(url)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp)
|
||||
return rest_client.ResponseBody(resp)
|
||||
|
||||
# NOTE(afazekas): just for the wait function
|
||||
def _get_image_status(self, image_id):
|
||||
|
@ -17,30 +17,18 @@ from oslo_serialization import jsonutils as json
|
||||
from six.moves.urllib import parse as urllib
|
||||
|
||||
from tempest.common import glance_http
|
||||
from tempest.common import service_client
|
||||
from tempest.lib.common import rest_client
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
|
||||
|
||||
class ImagesClientV2(service_client.ServiceClient):
|
||||
class ImagesClientV2(rest_client.RestClient):
|
||||
|
||||
def __init__(self, auth_provider, catalog_type, region, endpoint_type=None,
|
||||
build_interval=None, build_timeout=None,
|
||||
disable_ssl_certificate_validation=None, ca_certs=None,
|
||||
trace_requests=None):
|
||||
def __init__(self, auth_provider, catalog_type, region, **kwargs):
|
||||
super(ImagesClientV2, self).__init__(
|
||||
auth_provider,
|
||||
catalog_type,
|
||||
region,
|
||||
endpoint_type=endpoint_type,
|
||||
build_interval=build_interval,
|
||||
build_timeout=build_timeout,
|
||||
disable_ssl_certificate_validation=(
|
||||
disable_ssl_certificate_validation),
|
||||
ca_certs=ca_certs,
|
||||
trace_requests=trace_requests)
|
||||
auth_provider, catalog_type, region, **kwargs)
|
||||
self._http = None
|
||||
self.dscv = disable_ssl_certificate_validation
|
||||
self.ca_certs = ca_certs
|
||||
self.dscv = kwargs.get("disable_ssl_certificate_validation")
|
||||
self.ca_certs = kwargs.get("ca_certs")
|
||||
|
||||
def _get_http(self):
|
||||
return glance_http.HTTPClient(auth_provider=self.auth_provider,
|
||||
@ -66,7 +54,7 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.patch('v2/images/%s' % image_id, data, headers)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def create_image(self, **kwargs):
|
||||
"""Create an image.
|
||||
@ -78,25 +66,25 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.post('v2/images', data)
|
||||
self.expected_success(201, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def deactivate_image(self, image_id):
|
||||
url = 'v2/images/%s/actions/deactivate' % image_id
|
||||
resp, body = self.post(url, None)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def reactivate_image(self, image_id):
|
||||
url = 'v2/images/%s/actions/reactivate' % image_id
|
||||
resp, body = self.post(url, None)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_image(self, image_id):
|
||||
url = 'v2/images/%s' % image_id
|
||||
resp, _ = self.delete(url)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp)
|
||||
return rest_client.ResponseBody(resp)
|
||||
|
||||
def list_images(self, params=None):
|
||||
url = 'v2/images'
|
||||
@ -107,14 +95,14 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def show_image(self, image_id):
|
||||
url = 'v2/images/%s' % image_id
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def is_resource_deleted(self, id):
|
||||
try:
|
||||
@ -134,32 +122,32 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.http.raw_request('PUT', url, headers=headers,
|
||||
body=data)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def show_image_file(self, image_id):
|
||||
url = 'v2/images/%s/file' % image_id
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
return service_client.ResponseBodyData(resp, body)
|
||||
return rest_client.ResponseBodyData(resp, body)
|
||||
|
||||
def add_image_tag(self, image_id, tag):
|
||||
url = 'v2/images/%s/tags/%s' % (image_id, tag)
|
||||
resp, body = self.put(url, body=None)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_image_tag(self, image_id, tag):
|
||||
url = 'v2/images/%s/tags/%s' % (image_id, tag)
|
||||
resp, _ = self.delete(url)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp)
|
||||
return rest_client.ResponseBody(resp)
|
||||
|
||||
def list_image_members(self, image_id):
|
||||
url = 'v2/images/%s/members' % image_id
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def create_image_member(self, image_id, **kwargs):
|
||||
"""Create an image member.
|
||||
@ -172,7 +160,7 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.post(url, data)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def update_image_member(self, image_id, member_id, **kwargs):
|
||||
"""Update an image member.
|
||||
@ -185,33 +173,33 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.put(url, data)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def show_image_member(self, image_id, member_id):
|
||||
url = 'v2/images/%s/members/%s' % (image_id, member_id)
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
return service_client.ResponseBody(resp, json.loads(body))
|
||||
return rest_client.ResponseBody(resp, json.loads(body))
|
||||
|
||||
def delete_image_member(self, image_id, member_id):
|
||||
url = 'v2/images/%s/members/%s' % (image_id, member_id)
|
||||
resp, _ = self.delete(url)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp)
|
||||
return rest_client.ResponseBody(resp)
|
||||
|
||||
def show_schema(self, schema):
|
||||
url = 'v2/schemas/%s' % schema
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def list_resource_types(self):
|
||||
url = '/v2/metadefs/resource_types'
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def create_namespace(self, **kwargs):
|
||||
"""Create a namespace.
|
||||
@ -223,14 +211,14 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.post('/v2/metadefs/namespaces', data)
|
||||
self.expected_success(201, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def show_namespace(self, namespace):
|
||||
url = '/v2/metadefs/namespaces/%s' % namespace
|
||||
resp, body = self.get(url)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def update_namespace(self, namespace, **kwargs):
|
||||
"""Update a namespace.
|
||||
@ -247,10 +235,10 @@ class ImagesClientV2(service_client.ServiceClient):
|
||||
resp, body = self.put(url, body=data)
|
||||
self.expected_success(200, resp.status)
|
||||
body = json.loads(body)
|
||||
return service_client.ResponseBody(resp, body)
|
||||
return rest_client.ResponseBody(resp, body)
|
||||
|
||||
def delete_namespace(self, namespace):
|
||||
url = '/v2/metadefs/namespaces/%s' % namespace
|
||||
resp, _ = self.delete(url)
|
||||
self.expected_success(204, resp.status)
|
||||
return service_client.ResponseBody(resp)
|
||||
return rest_client.ResponseBody(resp)
|
||||
|
@ -25,8 +25,6 @@ from tempest.services.identity.v3.json import identity_client as \
|
||||
from tempest.services.identity.v3.json import policies_client
|
||||
from tempest.services.identity.v3.json import regions_client
|
||||
from tempest.services.identity.v3.json import services_client
|
||||
from tempest.services.image.v1.json import images_client
|
||||
from tempest.services.image.v2.json import images_client as images_v2_client
|
||||
from tempest.services.network.json import network_client
|
||||
from tempest.tests import base
|
||||
|
||||
@ -44,8 +42,6 @@ class TestServiceClient(base.TestCase):
|
||||
policies_client.PoliciesClient,
|
||||
regions_client.RegionsClient,
|
||||
services_client.ServicesClient,
|
||||
images_client.ImagesClient,
|
||||
images_v2_client.ImagesClientV2
|
||||
]
|
||||
|
||||
for client in test_clients:
|
||||
|
Loading…
Reference in New Issue
Block a user