Exemple #1
0
 def __init__(self,
              router_id,
              router,
              agent_conf,
              interface_driver,
              use_ipv6=False):
     self.router_id = router_id
     self.ex_gw_port = None
     self._snat_enabled = None
     self.fip_map = {}
     self.internal_ports = []
     self.floating_ips = set()
     # Invoke the setter for establishing initial SNAT action
     self.router = router
     self.use_ipv6 = use_ipv6
     ns = namespaces.RouterNamespace(router_id, agent_conf,
                                     interface_driver, use_ipv6)
     self.router_namespace = ns
     self.ns_name = ns.name
     self.available_mark_ids = set(
         range(ADDRESS_SCOPE_MARK_ID_MIN, ADDRESS_SCOPE_MARK_ID_MAX))
     self._address_scope_to_mark_id = {
         DEFAULT_ADDRESS_SCOPE: self.available_mark_ids.pop()
     }
     self.iptables_manager = iptables_manager.IptablesManager(
         use_ipv6=use_ipv6, namespace=self.ns_name)
     self.initialize_address_scope_iptables()
     self.routes = []
     self.agent_conf = agent_conf
     self.driver = interface_driver
     # radvd is a neutron.agent.linux.ra.DaemonMonitor
     self.radvd = None
Exemple #2
0
 def __init__(self,
              router_id,
              router,
              agent_conf,
              interface_driver,
              use_ipv6=False):
     self.router_id = router_id
     self.ex_gw_port = None
     self._snat_enabled = None
     self.internal_ports = []
     self.floating_ips = set()
     # Invoke the setter for establishing initial SNAT action
     self.router = router
     self.use_ipv6 = use_ipv6
     self.ns_name = None
     self.router_namespace = None
     if agent_conf.use_namespaces:
         ns = namespaces.RouterNamespace(
             router_id, agent_conf, interface_driver, use_ipv6)
         self.router_namespace = ns
         self.ns_name = ns.name
     self.iptables_manager = iptables_manager.IptablesManager(
         use_ipv6=use_ipv6,
         namespace=self.ns_name)
     self.routes = []
     self.agent_conf = agent_conf
     self.driver = interface_driver
     # radvd is a neutron.agent.linux.ra.DaemonMonitor
     self.radvd = None
Exemple #3
0
    def __exit__(self, exc_type, value, traceback):
        # TODO(carl) Preserves old behavior of L3 agent where cleaning
        # namespaces was only done once after restart.  Still a good idea?
        if exc_type:
            # An exception occurred in the caller's with statement
            return False
        if not self._clean_stale:
            # No need to cleanup
            return True
        self._clean_stale = False

        for ns in self._all_namespaces:
            _ns_prefix, ns_id = self.get_prefix_and_id(ns)
            if ns_id in self._ids_to_keep:
                continue
            if _ns_prefix == namespaces.NS_PREFIX:
                ns = namespaces.RouterNamespace(ns_id,
                                                self.agent_conf,
                                                self.driver,
                                                use_ipv6=False)
            else:
                ns = dvr_snat_ns.SnatNamespace(ns_id,
                                               self.agent_conf,
                                               self.driver,
                                               use_ipv6=False)
            try:
                if self.metadata_driver:
                    # cleanup stale metadata proxy processes first
                    self.metadata_driver.destroy_monitored_metadata_proxy(
                        self.process_monitor, ns_id, self.agent_conf)
                ns.delete()
            except RuntimeError:
                LOG.exception(_LE('Failed to destroy stale namespace %s'), ns)

        return True
    def __init__(self,
                 router_id,
                 router,
                 agent_conf,
                 interface_driver,
                 use_ipv6=False):
        self.router_id = router_id
        self.ex_gw_port = None
        self._snat_enabled = None
        self._snat_action = None
        self.internal_ports = []
        self.floating_ips = set()
        # Invoke the setter for establishing initial SNAT action
        self.router = router
        self.use_ipv6 = use_ipv6
        self.ns_name = None
        self.router_namespace = None
        if agent_conf.use_namespaces:
            ns = namespaces.RouterNamespace(router_id, agent_conf,
                                            interface_driver, use_ipv6)
            self.router_namespace = ns
            self.ns_name = ns.name
        self.iptables_manager = iptables_manager.IptablesManager(
            use_ipv6=use_ipv6, namespace=self.ns_name)
        self.routes = []
        self.agent_conf = agent_conf
        self.driver = interface_driver
        # Note:these variable is used for floatingip QoS(based on TC in linux)
        self.fip_class_ratelimit_dict = {}
        self.available_classes = set(xrange(11, 65530))

        # radvd is a neutron.agent.linux.ra.DaemonMonitor
        self.radvd = None
Exemple #5
0
 def create_router_namespace_object(
         self, router_id, agent_conf, iface_driver, use_ipv6):
     return namespaces.RouterNamespace(
         router_id, agent_conf, iface_driver, use_ipv6)