Merge "add get_flow_details and get_atom_details to all backends"

This commit is contained in:
Jenkins
2015-03-03 06:13:30 +00:00
committed by Gerrit Code Review
4 changed files with 60 additions and 0 deletions

View File

@@ -403,3 +403,9 @@ class Connection(base.Connection):
def get_logbook(self, book_uuid):
return self._run_with_process_lock("book",
self._get_logbook, book_uuid)
def get_flow_details(self, fd_uuid):
return self._get_flow_details(fd_uuid)
def get_atom_details(self, ad_uuid):
return self._get_atom_details(ad_uuid)

View File

@@ -234,3 +234,17 @@ class Connection(base.Connection):
yield book
except KeyError:
pass
def get_flow_details(self, fd_uuid):
try:
with self._lock.read_lock():
return self._memory.flow_details[fd_uuid]
except KeyError:
raise exc.NotFound("No flow details found '%s'" % fd_uuid)
def get_atom_details(self, ad_uuid):
try:
with self._lock.read_lock():
return self._memory.atom_details[ad_uuid]
except KeyError:
raise exc.NotFound("No atom details found '%s'" % ad_uuid)

View File

@@ -558,5 +558,35 @@ class Connection(base.Connection):
for book in gathered:
yield book
def get_flow_details(self, fd_uuid):
try:
flowdetails = self._tables.flowdetails
with self._engine.begin() as conn:
q = (sql.select([flowdetails]).
where(flowdetails.c.uuid == fd_uuid))
row = conn.execute(q).first()
if not row:
raise exc.NotFound("No flow details found with uuid"
" '%s'" % fd_uuid)
return self._converter.convert_flow_detail(row)
except sa_exc.SQLAlchemyError as e:
raise exc.StorageFailure("Failed getting flow details with"
" uuid '%s'" % fd_uuid, e)
def get_atom_details(self, ad_uuid):
try:
atomdetails = self._tables.atomdetails
with self._engine.begin() as conn:
q = (sql.select([atomdetails]).
where(atomdetails.c.uuid == ad_uuid))
row = conn.execute(q).first()
if not row:
raise exc.NotFound("No atom details found with uuid"
" '%s'" % ad_uuid)
return self._converter.convert_atom_detail(row)
except sa_exc.SQLAlchemyError as e:
raise exc.StorageFailure("Failed getting atom details with"
" uuid '%s'" % ad_uuid, e)
def close(self):
pass

View File

@@ -118,6 +118,16 @@ class Connection(object):
"""Return an iterable of logbook objects."""
pass
@abc.abstractmethod
def get_flow_details(self, fd_uuid):
"""Fetches a flowdetails object matching the given uuid."""
pass
@abc.abstractmethod
def get_atom_details(self, ad_uuid):
"""Fetches a atomdetails object matching the given uuid."""
pass
def _format_atom(atom_detail):
return {