def provide_felix_config(self): """Specify the prefix of the TAP interfaces that Felix should look for and work with. This config setting does not have a default value, because different cloud systems will do different things. Here we provide the prefix that Neutron uses. """ LOG.info("Providing Felix configuration") # First read the config values, so as to avoid unnecessary # writes. prefix = None reporting_enabled = None ready = None iface_pfx_key = key_for_config('InterfacePrefix') reporting_key = key_for_config('EndpointReportingEnabled') try: prefix = self.client.read(iface_pfx_key).value reporting_enabled = self.client.read(reporting_key).value ready = self.client.read(READY_KEY).value except etcd.EtcdKeyNotFound: LOG.info('%s values are missing', CONFIG_DIR) # Now write the values that need writing. if prefix != 'tap': LOG.info('%s -> tap', iface_pfx_key) self.client.write(iface_pfx_key, 'tap') if reporting_enabled != "true": LOG.info('%s -> true', reporting_enabled) self.client.write(reporting_key, 'true') if ready != 'true': # TODO Set this flag only once we're really ready! LOG.info('%s -> true', READY_KEY) self.client.write(READY_KEY, 'true')