def env_set_status(session, uuid, old_status, new_status): count = (session.query(models.Env).filter_by( uuid=uuid, status=old_status).update({"status": new_status})) if count: return True raise exceptions.DBConflict("Env %s should be in status %s actual %s" % (uuid, old_status, env_get_status(uuid)))
def task_delete(session, uuid, status=None): (session.query(models.WorkloadData).filter_by(task_uuid=uuid).delete( synchronize_session=False)) (session.query(models.Workload).filter_by(task_uuid=uuid).delete( synchronize_session=False)) (session.query(models.Subtask).filter_by(task_uuid=uuid).delete( synchronize_session=False)) (session.query(models.Tag).filter_by( uuid=uuid, type=consts.TagType.TASK).delete(synchronize_session=False)) query = session.query(models.Task).filter_by(uuid=uuid) if status: count = query.filter_by(status=status).delete( synchronize_session="fetch") else: count = query.delete(synchronize_session="fetch") if not count: if status is not None: task = query.first() if task: raise exceptions.DBConflict( "Task `%(uuid)s` in `%(actual)s` status but " "`%(require)s` is required." % { "uuid": uuid, "require": status, "actual": task.status }) raise exceptions.DBRecordNotFound(criteria="uuid: %s" % uuid, table="tasks")
def platform_set_status(self, uuid, old_status, new_status): count = (self.model_query(models.Platform).filter_by( uuid=uuid, status=old_status).update({"status": new_status})) if count: return True platform = self.platform_get(uuid) raise exceptions.DBConflict( "Platform %s should be in status %s actual %s" % (uuid, old_status, platform["status"]))
def deployment_delete(self, uuid): session = get_session() with session.begin(): count = (self.model_query( models.Resource, session=session).filter_by(deployment_uuid=uuid).count()) if count: raise exceptions.DBConflict( "There are allocated resources for the deployment %s" % uuid) count = (self.model_query( models.Deployment, session=session).filter_by( uuid=uuid).delete(synchronize_session=False)) if not count: raise exceptions.DBRecordNotFound(criteria="uuid: %s" % uuid, table="deployments")