def update_firewall(self, context, id, firewall): fw = firewall['firewall'] if ('router_ids' in fw.keys()): current_routers = self.get_router_ids_by_firewall_id(context, id) new_routers = fw.pop('router_ids') routers_to_delete = set(current_routers) - (set(current_routers) & set(new_routers)) routers_to_add = (set(new_routers) ^ set(current_routers)) - set( routers_to_delete) else: new_routers = None with context.session.begin(subtransactions=True): if new_routers: firewall_db = context.session.query(Firewall).filter( Firewall.id == id).first() for router_id in routers_to_delete: firewall_db.routers.remove(context.session.query( Router).filter_by(id=router_id).first()) for router_id in routers_to_add: firewall_db.routers.append(context.session.query( Router).filter_by(id=router_id).first()) updated_fw_count = context.session.query(Firewall).filter_by( id=id).update(fw) if not updated_fw_count: raise firewall.FirewallNotFound(firewall_id=id) fw = self.get_firewall(context, id) if new_routers: fw['router_ids'] = [r for r in fw['router_ids']] return fw
def delete_firewall(self, context, id): LOG.debug(_("delete_firewall() called")) with context.session.begin(subtransactions=True): # Note: Plugin should ensure that it's okay to delete if the # firewall is active count = context.session.query(Firewall).filter_by(id=id).delete() if not count: raise firewall.FirewallNotFound(firewall_id=id)
def update_firewall(self, context, id, firewall): LOG.debug(_("update_firewall() called")) fw = firewall['firewall'] with context.session.begin(subtransactions=True): count = context.session.query(Firewall).filter_by(id=id).update(fw) if not count: raise firewall.FirewallNotFound(firewall_id=id) return self.get_firewall(context, id)
def _get_firewall(self, context, id): try: return self._get_by_id(context, Firewall, id) except exc.NoResultFound: raise firewall.FirewallNotFound(firewall_id=id)