def __init__(self, root_helper=None, **kwargs): self.opflex_networks = kwargs['opflex_networks'] if self.opflex_networks and self.opflex_networks[0] == '*': self.opflex_networks = None self.root_helper = root_helper self.notify_worker = opflex_notify.worker() self.host = cfg.CONF.host agent_conf = cfg.CONF.AGENT ovs_conf = cfg.CONF.OVS try: bridge_mappings = q_utils.parse_mappings(ovs_conf.bridge_mappings) except ValueError as e: raise ValueError(_("Parsing bridge_mappings failed: %s.") % e) self.agent_state = { 'binary': 'neutron-opflex-agent', 'host': self.host, 'topic': n_constants.L2_AGENT_TOPIC, 'configurations': { 'bridge_mappings': bridge_mappings, 'opflex_networks': self.opflex_networks }, 'agent_type': ofcst.AGENT_TYPE_OPFLEX_OVS, 'start_flag': True } # Initialize OVS Manager self.bridge_manager = ovs_manager.OvsManager().initialize( self.host, ovs_conf) # Stores port update notifications for processing in main rpc loop self.updated_ports = set() # Stores port delete notifications self.deleted_ports = set() # Stores VRF update notifications self.updated_vrf = set() self.setup_rpc() self.local_ip = ovs_conf.local_ip self.polling_interval = agent_conf.polling_interval self.config_apply_interval = kwargs['config_apply_interval'] self.minimize_polling = agent_conf.minimize_polling self.ovsdb_monitor_respawn_interval = ( agent_conf.ovsdb_monitor_respawn_interval or constants.DEFAULT_OVSDBMON_RESPAWN) self.setup_report() self.supported_pt_network_types = [ofcst.TYPE_OPFLEX] # Initialize iteration counter self.iter_num = 0 self.run_daemon_loop = True # The initialization is complete; we can start receiving messages self.connection.consume_in_threads() self.quitting_rpc_timeout = agent_conf.quitting_rpc_timeout # Initialize the Endpoint Manager. # TODO(ivar): make these components pluggable. self.ep_manager = ep_manager.EndpointFileManager().initialize( self.host, self.bridge_manager, kwargs) self.port_manager = port_manager.AsyncPortManager().initialize( self.host, self, kwargs)
def __init__(self, root_helper=None, **kwargs): self.hybrid_mode = kwargs['hybrid_mode'] separator = (kwargs['epg_mapping_dir'][-1] if kwargs['epg_mapping_dir'] else '') self.epg_mapping_file = (kwargs['epg_mapping_dir'] + ('/' if separator != '/' else '') + FILE_NAME_FORMAT) self.vrf_mapping_file = (kwargs['epg_mapping_dir'] + ('/' if separator != '/' else '') + VRF_FILE_NAME_FORMAT) self.file_formats = [self.epg_mapping_file, self.vrf_mapping_file] self.opflex_networks = kwargs['opflex_networks'] if self.opflex_networks and self.opflex_networks[0] == '*': self.opflex_networks = None self.int_fip_pool = { 4: netaddr.IPSet(kwargs['internal_floating_ip_pool']), 6: netaddr.IPSet(kwargs['internal_floating_ip6_pool'])} if METADATA_DEFAULT_IP in self.int_fip_pool[4]: self.int_fip_pool[4].remove(METADATA_DEFAULT_IP) self.int_fip_alloc = {4: {}, 6: {}} self._load_es_next_hop_info(kwargs['external_segment']) self.es_port_dict = {} self.vrf_dict = {} self.vif_to_vrf = {} self.updated_vrf = set() self.backup_updated_vrf = set() self.dhcp_domain = kwargs['dhcp_domain'] self.root_helper = root_helper del kwargs['hybrid_mode'] del kwargs['epg_mapping_dir'] del kwargs['opflex_networks'] del kwargs['internal_floating_ip_pool'] del kwargs['internal_floating_ip6_pool'] del kwargs['external_segment'] del kwargs['dhcp_domain'] self.notify_worker = opflex_notify.worker() self.metadata_mgr = as_metadata_manager.AsMetadataManager( LOG, self.root_helper) super(GBPOvsAgent, self).__init__(**kwargs) self.supported_pt_network_types = [ofcst.TYPE_OPFLEX] self.setup_pt_directory()