db api: add service_get_by_uuid

This is going to be used by the Service.get_by_uuid method
which will later be used by the HostAPI to uniquely lookup
a service within a cell.

Part of blueprint service-hyper-uuid-in-api

Change-Id: Iff58296d5b05670116d4e0dc7846a260c48d84ed
This commit is contained in:
Matt Riedemann 2017-05-01 11:25:13 -04:00
parent 5b7069f6b5
commit 115e372e1c
2 changed files with 18 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(