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()