示例#1
0
文件: api.py 项目: mkscala/magnum
    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()
示例#2
0
文件: api.py 项目: mkscala/magnum
 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)
示例#3
0
文件: api.py 项目: mkscala/magnum
 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)
示例#4
0
文件: api.py 项目: mkscala/magnum
    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
示例#5
0
文件: api.py 项目: mkscala/magnum
 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)
示例#6
0
文件: api.py 项目: Linbing/magnum
 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)
示例#7
0
 def test_BayNotFound(self):
     self.assertRaises(exception.BayNotFound,
                       lambda: self.raise_(exception.BayNotFound()))