diff --git a/keystone/catalog/core.py b/keystone/catalog/core.py index ef35921fdc..98b5ae9d79 100644 --- a/keystone/catalog/core.py +++ b/keystone/catalog/core.py @@ -133,7 +133,10 @@ def get_service(self, context, service_id): return {'OS-KSADM:service': service_ref} def delete_service(self, context, service_id): - service_ref = self.catalog_api.delete_service(context, service_id) + service_ref = self.catalog_api.get_service(context, service_id) + if not service_ref: + raise exception.ServiceNotFound(service_id=service_id) + self.catalog_api.delete_service(context, service_id) def create_service(self, context, OS_KSADM_service): service_id = uuid.uuid4().hex diff --git a/tests/test_keystoneclient.py b/tests/test_keystoneclient.py index 457d241f7a..d18ba90d28 100644 --- a/tests/test_keystoneclient.py +++ b/tests/test_keystoneclient.py @@ -550,6 +550,20 @@ def test_service_crud(self): services = [x for x in client.services.list() if x.id == service.id] self.assertEquals(len(services), 0) + def test_service_delete_404(self): + from keystoneclient import exceptions as client_exceptions + client = self.get_client(admin=True) + self.assertRaises(client_exceptions.NotFound, + client.services.delete, + id=uuid.uuid4().hex) + + def test_service_get_404(self): + from keystoneclient import exceptions as client_exceptions + client = self.get_client(admin=True) + self.assertRaises(client_exceptions.NotFound, + client.services.get, + id=uuid.uuid4().hex) + def test_admin_requires_adminness(self): from keystoneclient import exceptions as client_exceptions # FIXME(ja): this should be Unauthorized