Exemplo n.º 1
0
 def __init__(self, host=None):
     super(DhcpAgent, self).__init__(host=host)
     self.needs_resync = False
     self.conf = cfg.CONF
     self.cache = NetworkCache()
     self.root_helper = config.get_root_helper(self.conf)
     self.dhcp_driver_cls = importutils.import_class(self.conf.dhcp_driver)
     ctx = context.get_admin_context_without_session()
     self.plugin_rpc = DhcpPluginApi(topics.PLUGIN,
                                     ctx, self.conf.use_namespaces)
     # create dhcp dir to store dhcp info
     dhcp_dir = os.path.dirname("/%s/dhcp/" % self.conf.state_path)
     if not os.path.isdir(dhcp_dir):
         os.makedirs(dhcp_dir, 0o755)
     self.dhcp_version = self.dhcp_driver_cls.check_version()
     self._populate_networks_cache()
Exemplo n.º 2
0
 def _init_state_reporting(self):
     self.context = context.get_admin_context_without_session()
     self.state_rpc = agent_rpc.PluginReportStateAPI(topics.PLUGIN)
     self.agent_state = {
         "binary": "neutron-metadata-agent",
         "host": cfg.CONF.host,
         "topic": "N/A",
         "configurations": {
             "metadata_proxy_socket": cfg.CONF.metadata_proxy_socket,
             "nova_metadata_ip": cfg.CONF.nova_metadata_ip,
             "nova_metadata_port": cfg.CONF.nova_metadata_port,
         },
         "start_flag": True,
         "agent_type": n_const.AGENT_TYPE_METADATA,
     }
     report_interval = cfg.CONF.AGENT.report_interval
     if report_interval:
         self.heartbeat = loopingcall.FixedIntervalLoopingCall(self._report_state)
         self.heartbeat.start(interval=report_interval)
Exemplo n.º 3
0
 def _report_state(self):
     try:
         self.agent_state.get('configurations').update(
             self.cache.get_state())
         ctx = context.get_admin_context_without_session()
         self.state_rpc.report_state(ctx, self.agent_state, self.use_call)
         self.use_call = False
     except AttributeError:
         # This means the server does not support report_state
         LOG.warn(_("Crd server does not support state report."
                    " State report for this agent will be disabled."))
         self.heartbeat.stop()
         self.run()
         return
     except Exception:
         LOG.exception(_("Failed reporting state!"))
         return
     if self.agent_state.pop('start_flag', None):
         self.run()
Exemplo n.º 4
0
    def __init__(self, conf):
        self.conf = conf
        self.context = context.get_admin_context_without_session()
        self.plugin_rpc = agent_api.LbaasAgentApi(
            topics.LOADBALANCER_PLUGIN,
            self.context,
            self.conf.host
        )
        self._load_drivers()

        self.agent_state = {
            'binary': 'neutron-lbaas-agent',
            'host': conf.host,
            'topic': topics.LOADBALANCER_AGENT,
            'configurations': {'device_drivers': self.device_drivers.keys()},
            'agent_type': n_const.AGENT_TYPE_LOADBALANCER,
            'start_flag': True}
        self.admin_state_up = True

        self._setup_state_rpc()
        self.needs_resync = False
        # pool_id->device_driver_name mapping used to store known instances
        self.instance_mapping = {}
Exemplo n.º 5
0
    def __init__(self, host, conf=None):
        if conf:
            self.conf = conf
        else:
            self.conf = cfg.CONF
        self.root_helper = config.get_root_helper(self.conf)
        self.router_info = {}

        self._check_config_params()

        try:
            self.driver = importutils.import_object(
                self.conf.interface_driver,
                self.conf
            )
        except Exception:
            msg = _("Error importing interface driver "
                    "'%s'") % self.conf.interface_driver
            LOG.error(msg)
            raise SystemExit(msg)

        self.context = context.get_admin_context_without_session()
        self.plugin_rpc = L3PluginApi(topics.L3PLUGIN, host)
        self.fullsync = True
        self.updated_routers = set()
        self.removed_routers = set()
        self.sync_progress = False

        self._delete_stale_namespaces = (self.conf.use_namespaces and
                                         self.conf.router_delete_namespaces)

        self.rpc_loop = loopingcall.FixedIntervalLoopingCall(
            self._rpc_loop)
        self.rpc_loop.start(interval=RPC_LOOP_INTERVAL)
        super(L3NATAgent, self).__init__(conf=self.conf)

        self.target_ex_net_id = None