def destroy_container(self, context, container_id): session = get_session() with session.begin(): query = model_query(models.Container, session=session) query = add_identity_filter(query, container_id) count = query.delete() if count != 1: raise exception.ContainerNotFound(container_id)
def get_container_by_uuid(self, context, container_uuid): query = model_query(models.Container) query = self._add_project_filters(context, query) query = query.filter_by(uuid=container_uuid) try: return query.one() except NoResultFound: raise exception.ContainerNotFound(container=container_uuid)
def get_container_by_name(self, context, container_name): try: filters = self._add_project_filters(context, {'name': container_name}) containers = self.list_containers(context, filters=filters) except etcd.EtcdKeyNotFound: raise exception.ContainerNotFound(container=container_name) except Exception as e: LOG.error('Error occurred while retrieving container: %s', six.text_type(e)) raise if len(containers) > 1: raise exception.Conflict('Multiple containers exist with same ' 'name. Please use the container uuid ' 'instead.') elif len(containers) == 0: raise exception.ContainerNotFound(container=container_name) return containers[0]
def _do_update_container(self, container_id, values): session = get_session() with session.begin(): query = model_query(models.Container, session=session) query = add_identity_filter(query, container_id) try: ref = query.with_lockmode('update').one() except NoResultFound: raise exception.ContainerNotFound(container=container_id) ref.update(values) return ref
def get_container_by_name(self, context, container_name): query = model_query(models.Container) query = self._add_tenant_filters(context, query) query = query.filter_by(name=container_name) try: return query.one() except NoResultFound: raise exception.ContainerNotFound(container=container_name) except MultipleResultsFound: raise exception.Conflict('Multiple containers exist with same ' 'name. Please use the container uuid ' 'instead.')