예제 #1
0
 def get_routertype_db_by_id_name(self, context, id_or_name):
     query = context.session.query(l3_models.RouterType)
     query = query.filter(l3_models.RouterType.id == id_or_name)
     try:
         return query.one()
     except exc.MultipleResultsFound:
         with excutils.save_and_reraise_exception():
             LOG.error(
                 _LE('Database inconsistency: Multiple router types '
                     'with same id %s'), id_or_name)
             raise routertype.RouterTypeNotFound(router_type=id_or_name)
     except exc.NoResultFound:
         query = context.session.query(l3_models.RouterType)
         query = query.filter(l3_models.RouterType.name == id_or_name)
         try:
             return query.one()
         except exc.MultipleResultsFound:
             with excutils.save_and_reraise_exception():
                 LOG.debug(
                     'Multiple router types with name %s found. '
                     'Id must be specified to allow arbitration.',
                     id_or_name)
                 raise routertype.MultipleRouterTypes(name=id_or_name)
         except exc.NoResultFound:
             with excutils.save_and_reraise_exception():
                 LOG.error(_LE('No router type with name %s found.'),
                           id_or_name)
                 raise routertype.RouterTypeNotFound(id=id_or_name)
예제 #2
0
 def update_routertype(self, context, id, routertype):
     LOG.debug("update_routertype() called")
     rt = routertype['routertype']
     with context.session.begin(subtransactions=True):
         rt_query = context.session.query(l3_models.RouterType)
         if not rt_query.filter_by(id=id).update(rt):
             raise routertype.RouterTypeNotFound(id=id)
     return self.get_routertype(context, id)
예제 #3
0
 def delete_routertype(self, context, id):
     LOG.debug("delete_routertype() called")
     try:
         with context.session.begin(subtransactions=True):
             routertype_query = context.session.query(l3_models.RouterType)
             if not routertype_query.filter_by(id=id).delete():
                 raise routertype.RouterTypeNotFound(id=id)
     except db_exc.DBError as e:
         with excutils.save_and_reraise_exception() as ctxt:
             if isinstance(e.inner_exception, sql_exc.IntegrityError):
                 ctxt.reraise = False
                 raise routertype.RouterTypeInUse(id=id)
예제 #4
0
 def _get_routertype(self, context, id):
     try:
         return self._get_by_id(context, l3_models.RouterType, id)
     except exc.NoResultFound:
         raise routertype.RouterTypeNotFound(id=id)