Add zones ownership transfer request to Designate tempest plugin
This patch adds zone transfer_request_client's methods and tests to Designate tempest plugin. Partially-Implements: blueprint designate-tempest-plugin Change-Id: I0c5b4a5796c398fb1d24cde124203c865ea21833
This commit is contained in:
parent
90946772bb
commit
e9785c919b
|
@ -38,6 +38,8 @@ from designate_tempest_plugin.services.dns.v2.json.tld_client import \
|
|||
TldClient
|
||||
from designate_tempest_plugin.services.dns.query.query_client import \
|
||||
QueryClient
|
||||
from designate_tempest_plugin.services.dns.v2.json.transfer_request_client \
|
||||
import TransferRequestClient
|
||||
|
||||
CONF = config.CONF
|
||||
|
||||
|
@ -92,3 +94,5 @@ class ManagerV2(clients.Manager):
|
|||
build_interval=CONF.dns.build_interval,
|
||||
build_timeout=CONF.dns.build_timeout,
|
||||
)
|
||||
self.transfer_request_client = TransferRequestClient(
|
||||
self.auth_provider, **params)
|
||||
|
|
|
@ -216,3 +216,20 @@ def rand_tld():
|
|||
"name": rand_zone_name(prefix='tld', suffix='')
|
||||
}
|
||||
return data
|
||||
|
||||
|
||||
def rand_transfer_request_data(description=None, target_project_id=None):
|
||||
"""Generate random transfer request data, with optional overrides
|
||||
|
||||
:return: A TransferRequest data
|
||||
"""
|
||||
|
||||
data = {}
|
||||
|
||||
if description is None:
|
||||
data['description'] = data_utils.rand_name(prefix='Description ')
|
||||
|
||||
if target_project_id:
|
||||
data['target_project_id'] = target_project_id
|
||||
|
||||
return data
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
# Copyright 2016 NEC Corporation. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
from designate_tempest_plugin import data_utils as dns_data_utils
|
||||
from designate_tempest_plugin.services.dns.v2.json import base
|
||||
|
||||
|
||||
class TransferRequestClient(base.DnsClientV2Base):
|
||||
|
||||
@base.handle_errors
|
||||
def create_transfer_request(self, uuid, transfer_request_data=None,
|
||||
params=None):
|
||||
"""Create a zone transfer_requests.
|
||||
:param uuid: Unique identifier of the zone in UUID format.
|
||||
:transfer_request_data: A python dictionary representing
|
||||
data for zone transfer request
|
||||
:param params: A Python dict that represents the query paramaters to
|
||||
include in the request URI.
|
||||
:return: Serialized imported zone as a dictionary.
|
||||
"""
|
||||
|
||||
transfer_request_uri = 'zones/{0}/tasks/transfer_requests'.format(uuid)
|
||||
transfer_request_data = (transfer_request_data or
|
||||
dns_data_utils.rand_transfer_request_data())
|
||||
resp, body = self._create_request(
|
||||
transfer_request_uri, transfer_request_data, params=params)
|
||||
|
||||
# Create Transfer request should Return a HTTP 201
|
||||
self.expected_success(201, resp.status)
|
||||
|
||||
return resp, body
|
||||
|
||||
@base.handle_errors
|
||||
def show_transfer_request(self, uuid, params=None):
|
||||
"""Gets a specific transfer_requestsed zone.
|
||||
:param uuid: Unique identifier of the transfer_requestsed zone in
|
||||
UUID format.
|
||||
:param params: A Python dict that represents the query paramaters to
|
||||
include in the request URI.
|
||||
:return: Serialized transfer_requestsed zone as a dictionary.
|
||||
"""
|
||||
return self._show_request(
|
||||
'zones/tasks/transfer_requests', uuid, params=params)
|
||||
|
||||
@base.handle_errors
|
||||
def list_transfer_requests(self, params=None):
|
||||
"""Gets all the transfer_requestsed zones
|
||||
:param params: A Python dict that represents the query paramaters to
|
||||
include in the request URI.
|
||||
:return: Serialized transfer_requestsed zone as a list.
|
||||
"""
|
||||
return self._list_request(
|
||||
'zones/tasks/transfer_requests', params=params)
|
||||
|
||||
@base.handle_errors
|
||||
def delete_transfer_request(self, uuid, params=None):
|
||||
"""Deletes an transfer_requestsed zone having the specified UUID.
|
||||
:param uuid: The unique identifier of the transfer_requestsed zone.
|
||||
:param params: A Python dict that represents the query paramaters to
|
||||
include in the request URI.
|
||||
:return: A tuple with the server response and the response body.
|
||||
"""
|
||||
resp, body = self._delete_request(
|
||||
'zones/tasks/transfer_requests', uuid, params=params)
|
||||
|
||||
# Delete Zone transfer_requests should Return a HTTP 204
|
||||
self.expected_success(204, resp.status)
|
||||
|
||||
return resp, body
|
||||
|
||||
@base.handle_errors
|
||||
def update_transfer_request(self, uuid, transfer_request_data=None,
|
||||
params=None):
|
||||
"""Update a zone transfer_requests.
|
||||
:param uuid: Unique identifier of the zone transfer request in UUID
|
||||
format.
|
||||
:transfer_request_data: A python dictionary representing
|
||||
data for zone transfer request
|
||||
:param params: A Python dict that represents the query paramaters to
|
||||
include in the request URI.
|
||||
:return: Serialized imported zone as a dictionary.
|
||||
"""
|
||||
transfer_request_uri = 'zones/tasks/transfer_requests'
|
||||
transfer_request_data = (transfer_request_data or
|
||||
dns_data_utils.rand_transfer_request_data())
|
||||
resp, body = self._update_request(
|
||||
transfer_request_uri, uuid, transfer_request_data, params=params)
|
||||
|
||||
# Create Transfer request should Return a HTTP 200
|
||||
self.expected_success(200, resp.status)
|
||||
|
||||
return resp, body
|
|
@ -0,0 +1,133 @@
|
|||
# Copyright 2016 NEC Corporation. All rights reserved.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
# not use this file except in compliance with the License. You may obtain
|
||||
# a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
from oslo_log import log as logging
|
||||
from tempest import test
|
||||
from tempest.lib import exceptions as lib_exc
|
||||
|
||||
from designate_tempest_plugin.tests import base
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class BaseTransferRequestTest(base.BaseDnsV2Test):
|
||||
excluded_keys = ['created_at', 'updated_at', 'key', 'links',
|
||||
'zone_name']
|
||||
|
||||
|
||||
class TransferRequestTest(BaseTransferRequestTest):
|
||||
@classmethod
|
||||
def setup_clients(cls):
|
||||
super(TransferRequestTest, cls).setup_clients()
|
||||
|
||||
cls.zone_client = cls.os.zones_client
|
||||
cls.client = cls.os.transfer_request_client
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('2381d489-ad84-403d-b0a2-8b77e4e966bf')
|
||||
def test_create_transfer_request(self):
|
||||
LOG.info('Create a zone')
|
||||
_, zone = self.zone_client.create_zone()
|
||||
self.addCleanup(self.zone_client.delete_zone, zone['id'])
|
||||
|
||||
LOG.info('Create a zone transfer_request')
|
||||
_, transfer_request = self.client.create_transfer_request(zone['id'])
|
||||
self.addCleanup(self.client.delete_transfer_request,
|
||||
transfer_request['id'])
|
||||
|
||||
LOG.info('Ensure we respond with ACTIVE status')
|
||||
self.assertEqual('ACTIVE', transfer_request['status'])
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('64a7be9f-8371-4ce1-a242-c1190de7c985')
|
||||
def test_show_transfer_request(self):
|
||||
LOG.info('Create a zone')
|
||||
_, zone = self.zone_client.create_zone()
|
||||
self.addCleanup(self.zone_client.delete_zone, zone['id'])
|
||||
|
||||
LOG.info('Create a zone transfer_request')
|
||||
_, transfer_request = self.client.create_transfer_request(zone['id'])
|
||||
self.addCleanup(self.client.delete_transfer_request,
|
||||
transfer_request['id'])
|
||||
|
||||
LOG.info('Fetch the transfer_request')
|
||||
_, body = self.client.show_transfer_request(transfer_request['id'])
|
||||
|
||||
LOG.info('Ensure the fetched response matches the '
|
||||
'created transfer_request')
|
||||
self.assertExpected(transfer_request, body, self.excluded_keys)
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('7d81c487-aa15-44c4-b3e5-424ab9e6a3e5')
|
||||
def test_delete_transfer_request(self):
|
||||
LOG.info('Create a zone')
|
||||
_, zone = self.zone_client.create_zone()
|
||||
self.addCleanup(self.zone_client.delete_zone, zone['id'])
|
||||
|
||||
LOG.info('Create a transfer_request')
|
||||
_, transfer_request = self.client.create_transfer_request(zone['id'])
|
||||
self.addCleanup(self.client.delete_transfer_request,
|
||||
transfer_request['id'],
|
||||
ignore_errors=lib_exc.NotFound)
|
||||
|
||||
LOG.info('Delete the transfer_request')
|
||||
_, body = self.client.delete_transfer_request(transfer_request['id'])
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
lambda: self.client.show_transfer_request(transfer_request['id']))
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('ddd42a19-1768-428c-846e-32f9d6493011')
|
||||
def test_list_transfer_requests(self):
|
||||
LOG.info('Create a zone')
|
||||
_, zone = self.zone_client.create_zone()
|
||||
self.addCleanup(self.zone_client.delete_zone, zone['id'])
|
||||
|
||||
LOG.info('Create a zone transfer_request')
|
||||
_, transfer_request = self.client.create_transfer_request(zone['id'])
|
||||
self.addCleanup(self.client.delete_transfer_request,
|
||||
transfer_request['id'])
|
||||
|
||||
LOG.info('List transfer_requests')
|
||||
_, body = self.client.list_transfer_requests()
|
||||
|
||||
self.assertGreater(len(body['transfer_requests']), 0)
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('de5e9d32-c723-4518-84e5-58da9722cc13')
|
||||
def test_update_transfer_request(self):
|
||||
LOG.info('Create a zone')
|
||||
_, zone = self.zone_client.create_zone()
|
||||
self.addCleanup(self.zone_client.delete_zone, zone['id'])
|
||||
|
||||
LOG.info('Create a zone transfer_request')
|
||||
_, transfer_request = self.client.create_transfer_request(zone['id'])
|
||||
self.addCleanup(self.client.delete_transfer_request,
|
||||
transfer_request['id'])
|
||||
|
||||
LOG.info('Update the transfer_request')
|
||||
data = {
|
||||
"description": "demo descripion"
|
||||
}
|
||||
_, transfer_request_patch = self.client.update_transfer_request(
|
||||
transfer_request['id'], transfer_request_data=data)
|
||||
|
||||
self.assertEqual(data['description'],
|
||||
transfer_request_patch['description'])
|
||||
|
||||
@test.attr(type='smoke')
|
||||
@test.idempotent_id('73b754a9-e856-4fd6-80ba-e8d1b80f5dfa')
|
||||
def test_list_transfer_requests_dot_json_fails(self):
|
||||
uri = self.client.get_uri('transfer_requests.json')
|
||||
|
||||
self.assertRaises(lib_exc.NotFound,
|
||||
lambda: self.client.get(uri))
|
Loading…
Reference in New Issue