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)
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)
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)
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)