def destroy_bay(self, bay_id): def destroy_bay_resources(session, bay_uuid): """Checks whether the bay does not have resources.""" query = model_query(models.Pod, session=session) query = self._add_pods_filters(query, {'bay_uuid': bay_uuid}) if query.count() != 0: query.delete() query = model_query(models.Service, session=session) query = self._add_services_filters(query, {'bay_uuid': bay_uuid}) if query.count() != 0: query.delete() query = model_query(models.ReplicationController, session=session) query = self._add_rcs_filters(query, {'bay_uuid': bay_uuid}) if query.count() != 0: query.delete() query = model_query(models.Container, session=session) query = self._add_containers_filters(query, {'bay_uuid': bay_uuid}) if query.count() != 0: query.delete() session = get_session() with session.begin(): query = model_query(models.Bay, session=session) query = add_identity_filter(query, bay_id) try: bay_ref = query.one() except NoResultFound: raise exception.BayNotFound(bay=bay_id) destroy_bay_resources(session, bay_ref['uuid']) query.delete()
def get_bay_by_uuid(self, context, bay_uuid): query = model_query(models.Bay) query = self._add_tenant_filters(context, query) query = query.filter_by(uuid=bay_uuid) try: return query.one() except NoResultFound: raise exception.BayNotFound(bay=bay_uuid)
def get_bay_by_name(self, context, bay_name): query = model_query(models.Bay) query = self._add_tenant_filters(context, query) query = query.filter_by(name=bay_name) try: return query.one() except MultipleResultsFound: raise exception.Conflict('Multiple bays exist with same name.' ' Please use the bay uuid instead.') except NoResultFound: raise exception.BayNotFound(bay=bay_name)
def _do_update_bay(self, bay_id, values): session = get_session() with session.begin(): query = model_query(models.Bay, session=session) query = add_identity_filter(query, bay_id) try: ref = query.with_lockmode('update').one() except NoResultFound: raise exception.BayNotFound(bay=bay_id) if 'provision_state' in values: values['provision_updated_at'] = timeutils.utcnow() ref.update(values) return ref
def get_pods_by_bay_uuid(self, bay_uuid): query = model_query(models.Pod).filter_by(bay_uuid=bay_uuid) try: return query.all() except NoResultFound: raise exception.BayNotFound(bay=bay_uuid)
def get_x509keypair_by_bay_uuid(self, context, bay_uuid): query = model_query(models.X509KeyPair).filter_by(bay_uuid=bay_uuid) try: return query.one() except NoResultFound: raise exception.BayNotFound(bay=bay_uuid)
def test_BayNotFound(self): self.assertRaises(exception.BayNotFound, lambda: self.raise_(exception.BayNotFound()))