Merge "De-client-ify Domain Update and Delete"

This commit is contained in:
Jenkins 2017-07-05 13:57:27 +00:00 committed by Gerrit Code Review
commit 95e444f257
3 changed files with 24 additions and 38 deletions

View File

@ -177,16 +177,6 @@ class DomainGet(task_manager.Task):
return client.keystone_client.domains.get(**self.args)
class DomainUpdate(task_manager.Task):
def main(self, client):
return client.keystone_client.domains.update(**self.args)
class DomainDelete(task_manager.Task):
def main(self, client):
return client.keystone_client.domains.delete(**self.args)
class GroupList(task_manager.Task):
def main(self, client):
return client.keystone_client.groups.list()

View File

@ -1112,15 +1112,20 @@ class OperatorCloud(openstackcloud.OpenStackCloud):
)
domain_id = dom['id']
with _utils.shade_exceptions(
"Error in updating domain {domain}".format(domain=domain_id)):
domain = self.manager.submit_task(_tasks.DomainUpdate(
domain=domain_id, name=name, description=description,
enabled=enabled))
domain_ref = {}
domain_ref.update({'name': name} if name else {})
domain_ref.update({'description': description} if description else {})
domain_ref.update({'enabled': enabled} if enabled is not None else {})
error_msg = "Error in updating domain {id}".format(id=domain_id)
data = self._identity_client.patch(
'/domains/{id}'.format(id=domain_id),
json={'domain': domain_ref}, error_message=error_msg)
domain = meta.get_and_munchify('domain', data)
return _utils.normalize_domains([domain])[0]
def delete_domain(self, domain_id=None, name_or_id=None):
"""Delete a Keystone domain.
"""Delete a domain.
:param domain_id: ID of the domain to delete.
:param name_or_id: Name or ID of the domain to delete.
@ -1135,19 +1140,18 @@ class OperatorCloud(openstackcloud.OpenStackCloud):
raise OpenStackCloudException(
"You must pass either domain_id or name_or_id value"
)
dom = self.get_domain(None, name_or_id)
dom = self.get_domain(name_or_id=name_or_id)
if dom is None:
self.log.debug(
"Domain %s not found for deleting", name_or_id)
return False
domain_id = dom['id']
with _utils.shade_exceptions(
"Failed to delete domain {id}".format(id=domain_id)):
# Deleting a domain is expensive, so disabling it first increases
# the changes of success
domain = self.update_domain(domain_id, enabled=False)
self.manager.submit_task(_tasks.DomainDelete(domain=domain['id']))
# A domain must be disabled before deleting
self.update_domain(domain_id, enabled=False)
error_msg = "Failed to delete domain {id}".format(id=domain_id)
self._identity_client.delete('/domains/{id}'.format(id=domain_id),
error_message=error_msg)
return True

View File

@ -112,8 +112,6 @@ class TestDomains(base.RequestsMockTestCase):
self.register_uris([
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
json=new_resp, validate={'domain': {'enabled': False}}),
dict(method='GET', uri=domain_resource_uri, status_code=200,
json=new_resp),
dict(method='DELETE', uri=domain_resource_uri, status_code=204)])
self.op_cloud.delete_domain(domain_data.domain_id)
self.assert_calls()
@ -129,8 +127,6 @@ class TestDomains(base.RequestsMockTestCase):
json={'domains': [domain_data.json_response['domain']]}),
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
json=new_resp, validate={'domain': {'enabled': False}}),
dict(method='GET', uri=domain_resource_uri, status_code=200,
json=new_resp),
dict(method='DELETE', uri=domain_resource_uri, status_code=204)])
self.op_cloud.delete_domain(name_or_id=domain_data.domain_id)
self.assert_calls()
@ -148,11 +144,9 @@ class TestDomains(base.RequestsMockTestCase):
self.register_uris([
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
json=new_resp, validate={'domain': {'enabled': False}}),
dict(method='GET', uri=domain_resource_uri, status_code=200,
json=new_resp),
dict(method='DELETE', uri=domain_resource_uri, status_code=404)])
with testtools.ExpectedException(
shade.OpenStackCloudException,
shade.OpenStackCloudURINotFound,
"Failed to delete domain %s" % domain_data.domain_id
):
self.op_cloud.delete_domain(domain_data.domain_id)
@ -165,9 +159,7 @@ class TestDomains(base.RequestsMockTestCase):
self.register_uris([
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
json=domain_data.json_response,
validate=dict(json=domain_data.json_request)),
dict(method='GET', uri=domain_resource_uri, status_code=200,
json=domain_data.json_response)])
validate=dict(json=domain_data.json_request))])
domain = self.op_cloud.update_domain(
domain_data.domain_id,
name=domain_data.domain_name,
@ -187,9 +179,7 @@ class TestDomains(base.RequestsMockTestCase):
json={'domains': [domain_data.json_response['domain']]}),
dict(method='PATCH', uri=domain_resource_uri, status_code=200,
json=domain_data.json_response,
validate=dict(json=domain_data.json_request)),
dict(method='GET', uri=domain_resource_uri, status_code=200,
json=domain_data.json_response)])
validate=dict(json=domain_data.json_request))])
domain = self.op_cloud.update_domain(
name_or_id=domain_data.domain_id,
name=domain_data.domain_name,
@ -206,9 +196,11 @@ class TestDomains(base.RequestsMockTestCase):
self.register_uris([
dict(method='PATCH',
uri=self.get_mock_url(append=[domain_data.domain_id]),
status_code=409)])
status_code=409,
json=domain_data.json_response,
validate=dict(json={'domain': {'enabled': False}}))])
with testtools.ExpectedException(
shade.OpenStackCloudException,
shade.OpenStackCloudHTTPError,
"Error in updating domain %s" % domain_data.domain_id
):
self.op_cloud.delete_domain(domain_data.domain_id)