コード例 #1
0
ファイル: mech_fortinet.py プロジェクト: samsu/neutron
 def delete_subnet_postcommit(self, mech_context):
     """Noop now, it is left here for future."""
     context = mech_context._plugin_context
     subnet_id = mech_context.current["id"]
     try:
         utils.delete_routerstatic(self, context, subnet_id=subnet_id)
         utils.delete_dhcpserver(self, context, subnet_id=subnet_id)
     except Exception as e:
         resources.Exinfo(e)
         raise ml2_exc.MechanismDriverError(method=sys._getframe().f_code.co_name)
コード例 #2
0
 def delete_subnet_postcommit(self, mech_context):
     """Noop now, it is left here for future."""
     context = mech_context._plugin_context
     subnet_id = mech_context.current['id']
     try:
         utils.delete_routerstatic(self, context, subnet_id=subnet_id)
         utils.delete_dhcpserver(self, context, subnet_id=subnet_id)
     except Exception as e:
         resources.Exinfo(e)
         raise ml2_exc.MechanismDriverError(
             method=sys._getframe().f_code.co_name)
コード例 #3
0
ファイル: l3_fortinet.py プロジェクト: samsu/neutron
    def _release_floatingip(self, context, id):
        """
        :param context:
        :param id: the floatingip id in neutron.db.l3_db.FloatingIP.
        {
                tenant_id=u'3998b33381fb48f694369689065a3760',
                id=u'25e1588a-5ec5-4fbc-bdef-eff8713da8f8',
                floating_ip_address=u'10.160.37.111',
                floating_network_id=u'1c1dbecc-9dac-4311-a346-f147a04c8dc8',
                floating_port_id=u'4b4120d4-77f9-4f82-b823-05876929a1c4',
                fixed_port_id=None,
                fixed_ip_address=None,
                router_id=None,
                last_known_router_id=None,
                status=u'DOWN'
        }
        :return:
        """
        l3db_fip = self._get_floatingip(context, id)
        db_namespace = fortinet_db.query_record(
            context,
            fortinet_db.Fortinet_ML2_Namespace,
            tenant_id=l3db_fip.tenant_id)

        db_fip = fortinet_db.query_record(
            context,
            fortinet_db.Fortinet_FloatingIP_Allocation,
            floating_ip_address=l3db_fip.floating_ip_address,
            allocated=True)
        if not db_fip or not db_namespace:
            return

        int_intf, ext_intf = utils.get_vlink_intf(self,
                                                  context,
                                                  vdom=db_namespace.vdom)
        mappedip = utils.get_ipaddr(db_fip.ip_subnet, 0)

        utils.delete_fwippool(self,
                              context,
                              name=mappedip,
                              vdom=db_namespace.vdom,
                              startip=mappedip)

        utils.delete_fwpolicy(self,
                              context,
                              vdom=const.EXT_VDOM,
                              srcintf=ext_intf,
                              srcaddr=mappedip,
                              dstintf=self._fortigate['ext_interface'],
                              poolname=db_fip.floating_ip_address)

        utils.delete_fwaddress(self,
                               context,
                               name=mappedip,
                               vdom=const.EXT_VDOM,
                               subnet="%s 255.255.255.255" % mappedip)

        utils.delete_fwippool(self,
                              context,
                              name=db_fip.floating_ip_address,
                              vdom=const.EXT_VDOM,
                              startip=db_fip.floating_ip_address)

        utils.delete_routerstatic(self,
                                  context,
                                  vdom=const.EXT_VDOM,
                                  dst="%s 255.255.255.255" % mappedip,
                                  device=ext_intf,
                                  gateway=const.DEF_GW)

        utils.delete_fwpolicy(self,
                              context,
                              vdom=const.EXT_VDOM,
                              dstintf=ext_intf,
                              dstaddr=l3db_fip.floating_ip_address)

        #utils.delete_secondaryip(self, context,
        #                         name=ext_inf,
        #                         vdom=const.EXT_VDOM,
        #                         ip=utils.getip(db_fip.ip_subnet, 1))

        utils.delete_vip(self,
                         context,
                         vdom=const.EXT_VDOM,
                         name=db_fip.vip_name,
                         extip=db_fip.floating_ip_address,
                         extintf='any',
                         mappedip=mappedip)

        fortinet_db.delete_record(
            context,
            fortinet_db.Fortinet_FloatingIP_Allocation,
            vdom=db_namespace.vdom,
            floating_ip_address=db_fip.floating_ip_address,
            vip_name=db_fip.floating_ip_address)
コード例 #4
0
ファイル: l3_fortinet.py プロジェクト: samsu/neutron
    def _release_floatingip(self, context, id):
        """
        :param context:
        :param id: the floatingip id in neutron.db.l3_db.FloatingIP.
        {
                tenant_id=u'3998b33381fb48f694369689065a3760',
                id=u'25e1588a-5ec5-4fbc-bdef-eff8713da8f8',
                floating_ip_address=u'10.160.37.111',
                floating_network_id=u'1c1dbecc-9dac-4311-a346-f147a04c8dc8',
                floating_port_id=u'4b4120d4-77f9-4f82-b823-05876929a1c4',
                fixed_port_id=None,
                fixed_ip_address=None,
                router_id=None,
                last_known_router_id=None,
                status=u'DOWN'
        }
        :return:
        """
        l3db_fip = self._get_floatingip(context, id)
        db_namespace = fortinet_db.query_record(context,
                                fortinet_db.Fortinet_ML2_Namespace,
                                tenant_id=l3db_fip.tenant_id)

        db_fip = fortinet_db.query_record(context,
                            fortinet_db.Fortinet_FloatingIP_Allocation,
                            floating_ip_address=l3db_fip.floating_ip_address,
                            allocated=True)
        if not db_fip or not db_namespace:
            return

        int_intf, ext_intf = utils.get_vlink_intf(self, context,
                                                 vdom=db_namespace.vdom)
        mappedip = utils.get_ipaddr(db_fip.ip_subnet, 0)

        utils.delete_fwippool(self, context,
                              name=mappedip,
                              vdom=db_namespace.vdom,
                              startip=mappedip)

        utils.delete_fwpolicy(self, context,
                              vdom=const.EXT_VDOM,
                              srcintf=ext_intf,
                              srcaddr=mappedip,
                              dstintf=self._fortigate['ext_interface'],
                              poolname=db_fip.floating_ip_address)

        utils.delete_fwaddress(self, context,
                               name=mappedip,
                               vdom=const.EXT_VDOM,
                               subnet="%s 255.255.255.255" % mappedip)

        utils.delete_fwippool(self, context,
                              name=db_fip.floating_ip_address,
                              vdom=const.EXT_VDOM,
                              startip=db_fip.floating_ip_address)

        utils.delete_routerstatic(self, context,
                                  vdom=const.EXT_VDOM,
                                  dst="%s 255.255.255.255" % mappedip,
                                  device=ext_intf,
                                  gateway=const.DEF_GW)

        utils.delete_fwpolicy(self, context,
                              vdom=const.EXT_VDOM,
                              dstintf=ext_intf,
                              dstaddr=l3db_fip.floating_ip_address)

        #utils.delete_secondaryip(self, context,
        #                         name=ext_inf,
        #                         vdom=const.EXT_VDOM,
        #                         ip=utils.getip(db_fip.ip_subnet, 1))


        utils.delete_vip(self, context,
                         vdom=const.EXT_VDOM,
                         name=db_fip.vip_name,
                         extip=db_fip.floating_ip_address,
                         extintf='any',
                         mappedip=mappedip)

        fortinet_db.delete_record(context,
                        fortinet_db.Fortinet_FloatingIP_Allocation,
                        vdom=db_namespace.vdom,
                        floating_ip_address=db_fip.floating_ip_address,
                        vip_name=db_fip.floating_ip_address)