Merge "db api: add service_get_by_uuid"

This commit is contained in:
Jenkins 2017-05-07 01:25:05 +00:00 committed by Gerrit Code Review
commit 8c5b27a534
3 changed files with 34 additions and 0 deletions

View File

@ -112,6 +112,13 @@ def service_get(context, service_id):
return IMPL.service_get(context, service_id)
def service_get_by_uuid(context, service_uuid):
"""Get a service by it's uuid or raise ServiceNotFound if it does not
exist.
"""
return IMPL.service_get_by_uuid(context, service_uuid)
def service_get_minimum_version(context, binary):
"""Get the minimum service version in the database."""
return IMPL.service_get_minimum_version(context, binary)

View File

@ -475,6 +475,17 @@ def service_get(context, service_id):
return result
@pick_context_manager_reader
def service_get_by_uuid(context, service_uuid):
query = model_query(context, models.Service).filter_by(uuid=service_uuid)
result = query.first()
if not result:
raise exception.ServiceNotFound(service_id=service_uuid)
return result
@pick_context_manager_reader_allow_async
def service_get_minimum_version(context, binaries):
min_versions = context.session.query(

View File

@ -3572,6 +3572,22 @@ class ServiceTestCase(test.TestCase, ModelsObjectComparatorMixin):
self._assertEqualObjects(service1, real_service1,
ignored_keys=['compute_node'])
def test_service_get_by_uuid(self):
service1 = self._create_service({'uuid': uuidsentinel.service1_uuid})
self._create_service({'host': 'some_other_fake_host',
'uuid': uuidsentinel.other_uuid})
real_service1 = db.service_get_by_uuid(
self.ctxt, uuidsentinel.service1_uuid)
self._assertEqualObjects(service1, real_service1,
ignored_keys=['compute_node'])
def test_service_get_by_uuid_not_found(self):
"""Asserts that ServiceNotFound is raised if a service is not found by
a given uuid.
"""
self.assertRaises(exception.ServiceNotFound, db.service_get_by_uuid,
self.ctxt, uuidsentinel.service_not_found)
def test_service_get_minimum_version(self):
self._create_service({'version': 1,
'host': 'host3',