Merge "Refactor db.service_destroy and db.service_update methods"

This commit is contained in:
Jenkins 2013-03-20 06:48:12 +00:00 committed by Gerrit Code Review
commit 8e2a7a3b62
1 changed files with 24 additions and 12 deletions

View File

@ -324,27 +324,38 @@ class InequalityCondition(object):
def service_destroy(context, service_id): def service_destroy(context, service_id):
session = get_session() session = get_session()
with session.begin(): with session.begin():
service_ref = service_get(context, service_id, session=session) count = model_query(context, models.Service, session=session).\
service_ref.soft_delete(session=session) filter_by(id=service_id).\
soft_delete(synchronize_session=False)
if (service_ref.topic == CONF.compute_topic and if count == 0:
service_ref.compute_node): raise exception.ServiceNotFound(service_id=service_id)
for c in service_ref.compute_node:
c.soft_delete(session=session) model_query(context, models.ComputeNode, session=session).\
filter_by(service_id=service_id).\
soft_delete(synchronize_session=False)
@require_admin_context @require_admin_context
def service_get(context, service_id, session=None): def _service_get(context, service_id, with_compute_node=True, session=None):
result = model_query(context, models.Service, session=session).\ query = model_query(context, models.Service, session=session).\
options(joinedload('compute_node')).\ filter_by(id=service_id)
filter_by(id=service_id).\
first() if with_compute_node:
query = query.options(joinedload('compute_node'))
result = query.first()
if not result: if not result:
raise exception.ServiceNotFound(service_id=service_id) raise exception.ServiceNotFound(service_id=service_id)
return result return result
@require_admin_context
def service_get(context, service_id):
return _service_get(context, service_id)
@require_admin_context @require_admin_context
def service_get_all(context, disabled=None): def service_get_all(context, disabled=None):
query = model_query(context, models.Service) query = model_query(context, models.Service)
@ -420,7 +431,8 @@ def service_create(context, values):
def service_update(context, service_id, values): def service_update(context, service_id, values):
session = get_session() session = get_session()
with session.begin(): with session.begin():
service_ref = service_get(context, service_id, session=session) service_ref = _service_get(context, service_id,
with_compute_node=False, session=session)
service_ref.update(values) service_ref.update(values)
service_ref.save(session=session) service_ref.save(session=session)
return service_ref return service_ref