Refactor Zone Import Internals
In preparation for async zone exports, move imports to be their own objects, away from zone tasks. This is essentially a giant renaming. Change-Id: If6eefbf5553d0fc09e638e879b88c73c133c56fe
This commit is contained in:
parent
7ac4cb4759
commit
523395dec0
|
@ -34,7 +34,7 @@ class ZoneImportController(rest.RestController):
|
|||
@pecan.expose(template='json:', content_type='application/json')
|
||||
@utils.validate_uuid('import_id')
|
||||
def get_one(self, import_id):
|
||||
"""Get imports"""
|
||||
"""Get Zone Imports"""
|
||||
|
||||
request = pecan.request
|
||||
context = request.environ['context']
|
||||
|
@ -47,7 +47,7 @@ class ZoneImportController(rest.RestController):
|
|||
|
||||
@pecan.expose(template='json:', content_type='application/json')
|
||||
def get_all(self, **params):
|
||||
"""List ZoneImports"""
|
||||
"""List Zone Imports"""
|
||||
request = pecan.request
|
||||
context = request.environ['context']
|
||||
marker, limit, sort_key, sort_dir = utils.get_paging_params(
|
||||
|
@ -67,7 +67,7 @@ class ZoneImportController(rest.RestController):
|
|||
|
||||
@pecan.expose(template='json:', content_type='application/json')
|
||||
def post_all(self):
|
||||
"""Create ZoneImport"""
|
||||
"""Create Zone Import"""
|
||||
request = pecan.request
|
||||
response = pecan.response
|
||||
context = request.environ['context']
|
||||
|
@ -95,7 +95,7 @@ class ZoneImportController(rest.RestController):
|
|||
@pecan.expose(template='json:', content_type='application/json')
|
||||
@utils.validate_uuid('zone_import_id')
|
||||
def delete_one(self, zone_import_id):
|
||||
"""Delete Zone"""
|
||||
"""Delete Zone Import"""
|
||||
request = pecan.request
|
||||
response = pecan.response
|
||||
context = request.environ['context']
|
||||
|
|
|
@ -2501,9 +2501,9 @@ class Service(service.RPCService, service.Service):
|
|||
'tenant_id': context.tenant,
|
||||
'task_type': 'IMPORT'
|
||||
}
|
||||
zone_import = objects.ZoneTask(**values)
|
||||
zone_import = objects.ZoneImport(**values)
|
||||
|
||||
created_zone_import = self.storage.create_zone_task(context,
|
||||
created_zone_import = self.storage.create_zone_import(context,
|
||||
zone_import)
|
||||
|
||||
self.tg.add_thread(self._import_zone, context, created_zone_import,
|
||||
|
@ -2582,13 +2582,13 @@ class Service(service.RPCService, service.Service):
|
|||
criterion = {
|
||||
'task_type': 'IMPORT'
|
||||
}
|
||||
return self.storage.find_zone_tasks(context, criterion, marker,
|
||||
return self.storage.find_zone_imports(context, criterion, marker,
|
||||
limit, sort_key, sort_dir)
|
||||
|
||||
def get_zone_import(self, context, zone_import_id):
|
||||
target = {'tenant_id': context.tenant}
|
||||
policy.check('get_zone_import', context, target)
|
||||
return self.storage.get_zone_task(context, zone_import_id)
|
||||
return self.storage.get_zone_import(context, zone_import_id)
|
||||
|
||||
@notification('dns.zone_import.update')
|
||||
def update_zone_import(self, context, zone_import):
|
||||
|
@ -2597,7 +2597,7 @@ class Service(service.RPCService, service.Service):
|
|||
}
|
||||
policy.check('update_zone_import', context, target)
|
||||
|
||||
return self.storage.update_zone_task(context, zone_import)
|
||||
return self.storage.update_zone_import(context, zone_import)
|
||||
|
||||
@notification('dns.zone_import.delete')
|
||||
@transaction
|
||||
|
@ -2608,6 +2608,6 @@ class Service(service.RPCService, service.Service):
|
|||
}
|
||||
policy.check('delete_zone_import', context, target)
|
||||
|
||||
zone_import = self.storage.delete_zone_task(context, zone_import_id)
|
||||
zone_import = self.storage.delete_zone_import(context, zone_import_id)
|
||||
|
||||
return zone_import
|
||||
|
|
|
@ -286,8 +286,8 @@ class DuplicatePoolNsRecord(Duplicate):
|
|||
error_type = 'duplicate_pool_ns_record'
|
||||
|
||||
|
||||
class DuplicateZoneTask(Duplicate):
|
||||
error_type = 'duplicate_zone_task'
|
||||
class DuplicateZoneImport(Duplicate):
|
||||
error_type = 'duplicate_zone_import'
|
||||
|
||||
|
||||
class MethodNotAllowed(Base):
|
||||
|
@ -378,8 +378,8 @@ class ZoneTransferAcceptNotFound(NotFound):
|
|||
error_type = 'zone_transfer_accept_not_found'
|
||||
|
||||
|
||||
class ZoneTaskNotFound(NotFound):
|
||||
error_type = 'zone_task_not_found'
|
||||
class ZoneImportNotFound(NotFound):
|
||||
error_type = 'zone_import_not_found'
|
||||
|
||||
|
||||
class LastServerDeleteNotAllowed(BadRequest):
|
||||
|
|
|
@ -43,7 +43,7 @@ from designate.objects.validation_error import ValidationError # noqa
|
|||
from designate.objects.validation_error import ValidationErrorList # noqa
|
||||
from designate.objects.zone_transfer_request import ZoneTransferRequest, ZoneTransferRequestList # noqa
|
||||
from designate.objects.zone_transfer_accept import ZoneTransferAccept, ZoneTransferAcceptList # noqa
|
||||
from designate.objects.zone_task import ZoneTask, ZoneTaskList # noqa
|
||||
from designate.objects.zone_import import ZoneImport, ZoneImportList # noqa
|
||||
|
||||
# Record Types
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ LOG = logging.getLogger(__name__)
|
|||
|
||||
class ZoneImportAPIv2Adapter(base.APIv2Adapter):
|
||||
|
||||
ADAPTER_OBJECT = objects.ZoneTask
|
||||
ADAPTER_OBJECT = objects.ZoneImport
|
||||
|
||||
MODIFICATIONS = {
|
||||
'fields': {
|
||||
|
@ -60,7 +60,7 @@ class ZoneImportAPIv2Adapter(base.APIv2Adapter):
|
|||
|
||||
class ZoneImportListAPIv2Adapter(base.APIv2Adapter):
|
||||
|
||||
ADAPTER_OBJECT = objects.ZoneTaskList
|
||||
ADAPTER_OBJECT = objects.ZoneImportList
|
||||
|
||||
MODIFICATIONS = {
|
||||
'options': {
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
from designate.objects import base
|
||||
|
||||
|
||||
class ZoneTask(base.DictObjectMixin, base.PersistentObjectMixin,
|
||||
class ZoneImport(base.DictObjectMixin, base.PersistentObjectMixin,
|
||||
base.DesignateObject):
|
||||
FIELDS = {
|
||||
'status': {
|
||||
|
@ -56,6 +56,6 @@ class ZoneTask(base.DictObjectMixin, base.PersistentObjectMixin,
|
|||
}
|
||||
|
||||
|
||||
class ZoneTaskList(base.ListObjectMixin, base.DesignateObject,
|
||||
class ZoneImportList(base.ListObjectMixin, base.DesignateObject,
|
||||
base.PagedListObjectMixin):
|
||||
LIST_ITEM_TYPE = ZoneTask
|
||||
LIST_ITEM_TYPE = ZoneImport
|
|
@ -631,28 +631,28 @@ class Storage(DriverPlugin):
|
|||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def create_zone_task(self, context, zone_task):
|
||||
def create_zone_import(self, context, zone_import):
|
||||
"""
|
||||
Create a Zone Task.
|
||||
Create a Zone Import.
|
||||
|
||||
:param context: RPC Context.
|
||||
:param zone_task: Tld object with the values to be created.
|
||||
:param zone_import: Zone Import object with the values to be created.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def get_zone_task(self, context, zone_task_id):
|
||||
def get_zone_import(self, context, zone_import_id):
|
||||
"""
|
||||
Get a Zone Task via ID.
|
||||
Get a Zone Import via ID.
|
||||
|
||||
:param context: RPC Context.
|
||||
:param zone_task_id: Zone Task ID to get.
|
||||
:param zone_import_id: Zone Import ID to get.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def find_zone_tasks(self, context, criterion=None, marker=None,
|
||||
def find_zone_imports(self, context, criterion=None, marker=None,
|
||||
limit=None, sort_key=None, sort_dir=None):
|
||||
"""
|
||||
Find Zone Tasks
|
||||
Find Zone Imports
|
||||
|
||||
:param context: RPC Context.
|
||||
:param criterion: Criteria to filter by.
|
||||
|
@ -665,30 +665,30 @@ class Storage(DriverPlugin):
|
|||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def find_zone_task(self, context, criterion):
|
||||
def find_zone_import(self, context, criterion):
|
||||
"""
|
||||
Find a single Zone Task.
|
||||
Find a single Zone Import.
|
||||
|
||||
:param context: RPC Context.
|
||||
:param criterion: Criteria to filter by.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def update_zone_task(self, context, zone_task):
|
||||
def update_zone_import(self, context, zone_import):
|
||||
"""
|
||||
Update a Zone Task
|
||||
Update a Zone Import
|
||||
|
||||
:param context: RPC Context.
|
||||
:param zone_task: Zone Task to update.
|
||||
:param zone_import: Zone Import to update.
|
||||
"""
|
||||
|
||||
@abc.abstractmethod
|
||||
def delete_zone_task(self, context, zone_task_id):
|
||||
def delete_zone_import(self, context, zone_import_id):
|
||||
"""
|
||||
Delete a Zone Task via ID.
|
||||
Delete a Zone Import via ID.
|
||||
|
||||
:param context: RPC Context.
|
||||
:param zone_task_id: Delete a Zone Task via ID
|
||||
:param zone_import_id: Delete a Zone Import via ID
|
||||
"""
|
||||
|
||||
def ping(self, context):
|
||||
|
|
|
@ -1259,42 +1259,45 @@ class SQLAlchemyStorage(sqlalchemy_base.SQLAlchemy, storage_base.Storage):
|
|||
zone_transfer_accept,
|
||||
exceptions.ZoneTransferAcceptNotFound)
|
||||
|
||||
# Zone Task Methods
|
||||
def _find_zone_tasks(self, context, criterion, one=False, marker=None,
|
||||
# Zone Import Methods
|
||||
def _find_zone_imports(self, context, criterion, one=False, marker=None,
|
||||
limit=None, sort_key=None, sort_dir=None):
|
||||
if not criterion:
|
||||
criterion = {}
|
||||
criterion['task_type'] = 'IMPORT'
|
||||
return self._find(
|
||||
context, tables.zone_tasks, objects.ZoneTask,
|
||||
objects.ZoneTaskList, exceptions.ZoneTaskNotFound, criterion,
|
||||
context, tables.zone_tasks, objects.ZoneImport,
|
||||
objects.ZoneImportList, exceptions.ZoneImportNotFound, criterion,
|
||||
one, marker, limit, sort_key, sort_dir)
|
||||
|
||||
def create_zone_task(self, context, zone_task):
|
||||
def create_zone_import(self, context, zone_import):
|
||||
return self._create(
|
||||
tables.zone_tasks, zone_task, exceptions.DuplicateZoneTask)
|
||||
tables.zone_tasks, zone_import, exceptions.DuplicateZoneImport)
|
||||
|
||||
def get_zone_task(self, context, zone_task_id):
|
||||
return self._find_zone_tasks(context, {'id': zone_task_id},
|
||||
def get_zone_import(self, context, zone_import_id):
|
||||
return self._find_zone_imports(context, {'id': zone_import_id},
|
||||
one=True)
|
||||
|
||||
def find_zone_tasks(self, context, criterion=None, marker=None,
|
||||
def find_zone_imports(self, context, criterion=None, marker=None,
|
||||
limit=None, sort_key=None, sort_dir=None):
|
||||
return self._find_zone_tasks(context, criterion, marker=marker,
|
||||
return self._find_zone_imports(context, criterion, marker=marker,
|
||||
limit=limit, sort_key=sort_key,
|
||||
sort_dir=sort_dir)
|
||||
|
||||
def find_zone_task(self, context, criterion):
|
||||
return self._find_zone_tasks(context, criterion, one=True)
|
||||
def find_zone_import(self, context, criterion):
|
||||
return self._find_zone_imports(context, criterion, one=True)
|
||||
|
||||
def update_zone_task(self, context, zone_task):
|
||||
def update_zone_import(self, context, zone_import):
|
||||
return self._update(
|
||||
context, tables.zone_tasks, zone_task,
|
||||
exceptions.DuplicateZoneTask, exceptions.ZoneTaskNotFound)
|
||||
context, tables.zone_tasks, zone_import,
|
||||
exceptions.DuplicateZoneImport, exceptions.ZoneImportNotFound)
|
||||
|
||||
def delete_zone_task(self, context, zone_task_id):
|
||||
# Fetch the existing zone_task, we'll need to return it.
|
||||
zone_task = self._find_zone_tasks(context, {'id': zone_task_id},
|
||||
def delete_zone_import(self, context, zone_import_id):
|
||||
# Fetch the existing zone_import, we'll need to return it.
|
||||
zone_import = self._find_zone_imports(context, {'id': zone_import_id},
|
||||
one=True)
|
||||
return self._delete(context, tables.zone_tasks, zone_task,
|
||||
exceptions.ZoneTaskNotFound)
|
||||
return self._delete(context, tables.zone_tasks, zone_import,
|
||||
exceptions.ZoneImportNotFound)
|
||||
|
||||
# diagnostics
|
||||
def ping(self, context):
|
||||
|
|
|
@ -245,7 +245,7 @@ class TestCase(base.BaseTestCase):
|
|||
"target_tenant_id": "target_tenant_id"
|
||||
}]
|
||||
|
||||
zone_task_fixtures = [{
|
||||
zone_import_fixtures = [{
|
||||
'status': 'PENDING',
|
||||
'domain_id': None,
|
||||
'message': None,
|
||||
|
@ -528,10 +528,10 @@ class TestCase(base.BaseTestCase):
|
|||
_values.update(values)
|
||||
return _values
|
||||
|
||||
def get_zone_task_fixture(self, fixture=0, values=None):
|
||||
def get_zone_import_fixture(self, fixture=0, values=None):
|
||||
values = values or {}
|
||||
|
||||
_values = copy.copy(self.zone_task_fixtures[fixture])
|
||||
_values = copy.copy(self.zone_import_fixtures[fixture])
|
||||
_values.update(values)
|
||||
return _values
|
||||
|
||||
|
@ -678,15 +678,15 @@ class TestCase(base.BaseTestCase):
|
|||
return self.central_service.create_zone_transfer_accept(
|
||||
context, objects.ZoneTransferAccept.from_dict(values))
|
||||
|
||||
def create_zone_task(self, **kwargs):
|
||||
def create_zone_import(self, **kwargs):
|
||||
context = kwargs.pop('context', self.admin_context)
|
||||
fixture = kwargs.pop('fixture', 0)
|
||||
|
||||
zone_task = self.get_zone_task_fixture(fixture=fixture,
|
||||
zone_import = self.get_zone_import_fixture(fixture=fixture,
|
||||
values=kwargs)
|
||||
|
||||
return self.storage.create_zone_task(
|
||||
context, objects.ZoneTask.from_dict(zone_task))
|
||||
return self.storage.create_zone_import(
|
||||
context, objects.ZoneImport.from_dict(zone_import))
|
||||
|
||||
def wait_for_import(self, zone_import_id, errorok=False):
|
||||
"""
|
||||
|
|
|
@ -3036,6 +3036,6 @@ class CentralServiceTest(CentralTestCase):
|
|||
|
||||
# Fetch the zone_import again, ensuring an exception is raised
|
||||
self.assertRaises(
|
||||
exceptions.ZoneTaskNotFound,
|
||||
exceptions.ZoneImportNotFound,
|
||||
self.central_service.get_zone_import,
|
||||
context, zone_import['id'])
|
||||
|
|
|
@ -2348,14 +2348,14 @@ class StorageTestCase(object):
|
|||
self.create_pool_attribute(fixture=0)
|
||||
|
||||
# Zone Import Tests
|
||||
def test_create_zone_task(self):
|
||||
def test_create_zone_import(self):
|
||||
values = {
|
||||
'status': 'PENDING',
|
||||
'task_type': 'IMPORT'
|
||||
}
|
||||
|
||||
result = self.storage.create_zone_task(
|
||||
self.admin_context, objects.ZoneTask.from_dict(values))
|
||||
result = self.storage.create_zone_import(
|
||||
self.admin_context, objects.ZoneImport.from_dict(values))
|
||||
|
||||
self.assertIsNotNone(result['id'])
|
||||
self.assertIsNotNone(result['created_at'])
|
||||
|
@ -2365,104 +2365,105 @@ class StorageTestCase(object):
|
|||
self.assertEqual(result['domain_id'], None)
|
||||
self.assertEqual(result['message'], None)
|
||||
|
||||
def test_find_zone_tasks(self):
|
||||
def test_find_zone_imports(self):
|
||||
|
||||
actual = self.storage.find_zone_tasks(self.admin_context)
|
||||
actual = self.storage.find_zone_imports(self.admin_context)
|
||||
self.assertEqual(0, len(actual))
|
||||
|
||||
# Create a single ZoneTask
|
||||
zone_task = self.create_zone_task(fixture=0)
|
||||
# Create a single ZoneImport
|
||||
zone_import = self.create_zone_import(fixture=0)
|
||||
|
||||
actual = self.storage.find_zone_tasks(self.admin_context)
|
||||
actual = self.storage.find_zone_imports(self.admin_context)
|
||||
self.assertEqual(1, len(actual))
|
||||
|
||||
self.assertEqual(zone_task['status'], actual[0]['status'])
|
||||
self.assertEqual(zone_task['message'], actual[0]['message'])
|
||||
self.assertEqual(zone_task['domain_id'], actual[0]['domain_id'])
|
||||
self.assertEqual(zone_import['status'], actual[0]['status'])
|
||||
self.assertEqual(zone_import['message'], actual[0]['message'])
|
||||
self.assertEqual(zone_import['domain_id'], actual[0]['domain_id'])
|
||||
|
||||
def test_find_zone_tasks_paging(self):
|
||||
# Create 10 ZoneTasks
|
||||
created = [self.create_zone_task() for i in range(10)]
|
||||
def test_find_zone_imports_paging(self):
|
||||
# Create 10 ZoneImports
|
||||
created = [self.create_zone_import() for i in range(10)]
|
||||
|
||||
# Ensure we can page through the results.
|
||||
self._ensure_paging(created, self.storage.find_zone_tasks)
|
||||
self._ensure_paging(created, self.storage.find_zone_imports)
|
||||
|
||||
def test_find_zone_tasks_with_criterion(self):
|
||||
zone_task_one = self.create_zone_task(fixture=0)
|
||||
zone_task_two = self.create_zone_task(fixture=1)
|
||||
def test_find_zone_imports_with_criterion(self):
|
||||
zone_import_one = self.create_zone_import(fixture=0)
|
||||
zone_import_two = self.create_zone_import(fixture=1)
|
||||
|
||||
criterion_one = dict(status=zone_task_one['status'])
|
||||
criterion_one = dict(status=zone_import_one['status'])
|
||||
|
||||
results = self.storage.find_zone_tasks(self.admin_context,
|
||||
results = self.storage.find_zone_imports(self.admin_context,
|
||||
criterion_one)
|
||||
self.assertEqual(len(results), 1)
|
||||
|
||||
self.assertEqual(results[0]['status'], zone_task_one['status'])
|
||||
self.assertEqual(results[0]['status'], zone_import_one['status'])
|
||||
|
||||
criterion_two = dict(status=zone_task_two['status'])
|
||||
criterion_two = dict(status=zone_import_two['status'])
|
||||
|
||||
results = self.storage.find_zone_tasks(self.admin_context,
|
||||
results = self.storage.find_zone_imports(self.admin_context,
|
||||
criterion_two)
|
||||
self.assertEqual(len(results), 1)
|
||||
|
||||
self.assertEqual(results[0]['status'], zone_task_two['status'])
|
||||
self.assertEqual(results[0]['status'], zone_import_two['status'])
|
||||
|
||||
def test_get_zone_task(self):
|
||||
# Create a zone_task
|
||||
expected = self.create_zone_task()
|
||||
actual = self.storage.get_zone_task(self.admin_context,
|
||||
def test_get_zone_import(self):
|
||||
# Create a zone_import
|
||||
expected = self.create_zone_import()
|
||||
actual = self.storage.get_zone_import(self.admin_context,
|
||||
expected['id'])
|
||||
|
||||
self.assertEqual(actual['status'], expected['status'])
|
||||
|
||||
def test_get_zone_task_missing(self):
|
||||
with testtools.ExpectedException(exceptions.ZoneTaskNotFound):
|
||||
def test_get_zone_import_missing(self):
|
||||
with testtools.ExpectedException(exceptions.ZoneImportNotFound):
|
||||
uuid = '4c8e7f82-3519-4bf7-8940-a66a4480f223'
|
||||
self.storage.get_zone_task(self.admin_context, uuid)
|
||||
self.storage.get_zone_import(self.admin_context, uuid)
|
||||
|
||||
def test_find_zone_task_criterion_missing(self):
|
||||
expected = self.create_zone_task()
|
||||
def test_find_zone_import_criterion_missing(self):
|
||||
expected = self.create_zone_import()
|
||||
|
||||
criterion = dict(status=expected['status'] + "NOT FOUND")
|
||||
|
||||
with testtools.ExpectedException(exceptions.ZoneTaskNotFound):
|
||||
self.storage.find_zone_task(self.admin_context, criterion)
|
||||
with testtools.ExpectedException(exceptions.ZoneImportNotFound):
|
||||
self.storage.find_zone_import(self.admin_context, criterion)
|
||||
|
||||
def test_update_zone_task(self):
|
||||
# Create a zone_task
|
||||
zone_task = self.create_zone_task(status='PENDING', task_type='IMPORT')
|
||||
def test_update_zone_import(self):
|
||||
# Create a zone_import
|
||||
zone_import = self.create_zone_import(status='PENDING',
|
||||
task_type='IMPORT')
|
||||
|
||||
# Update the zone_task
|
||||
zone_task.status = 'COMPLETE'
|
||||
# Update the zone_import
|
||||
zone_import.status = 'COMPLETE'
|
||||
|
||||
# Update storage
|
||||
zone_task = self.storage.update_zone_task(self.admin_context,
|
||||
zone_task)
|
||||
zone_import = self.storage.update_zone_import(self.admin_context,
|
||||
zone_import)
|
||||
|
||||
# Verify the new value
|
||||
self.assertEqual('COMPLETE', zone_task.status)
|
||||
self.assertEqual('COMPLETE', zone_import.status)
|
||||
|
||||
# Ensure the version column was incremented
|
||||
self.assertEqual(2, zone_task.version)
|
||||
self.assertEqual(2, zone_import.version)
|
||||
|
||||
def test_update_zone_task_missing(self):
|
||||
zone_task = objects.ZoneTask(
|
||||
def test_update_zone_import_missing(self):
|
||||
zone_import = objects.ZoneImport(
|
||||
id='486f9cbe-b8b6-4d8c-8275-1a6e47b13e00')
|
||||
with testtools.ExpectedException(exceptions.ZoneTaskNotFound):
|
||||
self.storage.update_zone_task(self.admin_context, zone_task)
|
||||
with testtools.ExpectedException(exceptions.ZoneImportNotFound):
|
||||
self.storage.update_zone_import(self.admin_context, zone_import)
|
||||
|
||||
def test_delete_zone_task(self):
|
||||
# Create a zone_task
|
||||
zone_task = self.create_zone_task()
|
||||
def test_delete_zone_import(self):
|
||||
# Create a zone_import
|
||||
zone_import = self.create_zone_import()
|
||||
|
||||
# Delete the zone_task
|
||||
self.storage.delete_zone_task(self.admin_context, zone_task['id'])
|
||||
# Delete the zone_import
|
||||
self.storage.delete_zone_import(self.admin_context, zone_import['id'])
|
||||
|
||||
# Verify that it's deleted
|
||||
with testtools.ExpectedException(exceptions.ZoneTaskNotFound):
|
||||
self.storage.get_zone_task(self.admin_context, zone_task['id'])
|
||||
with testtools.ExpectedException(exceptions.ZoneImportNotFound):
|
||||
self.storage.get_zone_import(self.admin_context, zone_import['id'])
|
||||
|
||||
def test_delete_zone_task_missing(self):
|
||||
with testtools.ExpectedException(exceptions.ZoneTaskNotFound):
|
||||
def test_delete_zone_import_missing(self):
|
||||
with testtools.ExpectedException(exceptions.ZoneImportNotFound):
|
||||
uuid = 'cac1fc02-79b2-4e62-a1a4-427b6790bbe6'
|
||||
self.storage.delete_zone_task(self.admin_context, uuid)
|
||||
self.storage.delete_zone_import(self.admin_context, uuid)
|
||||
|
|
Loading…
Reference in New Issue