Пример #1
0
    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
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
 def _get_firewall(self, context, id):
     try:
         return self._get_by_id(context, Firewall, id)
     except exc.NoResultFound:
         raise firewall.FirewallNotFound(firewall_id=id)