def __init__(self, dm_logger=None, args=None): DeviceManager._device_manager = self self._args = args PushConfigState.set_push_mode(int(self._args.push_mode)) PushConfigState.set_repush_interval(int(self._args.repush_interval)) PushConfigState.set_repush_max_interval( int(self._args.repush_max_interval)) PushConfigState.set_push_delay_per_kb( float(self._args.push_delay_per_kb)) PushConfigState.set_push_delay_max(int(self._args.push_delay_max)) PushConfigState.set_push_delay_enable( bool(self._args.push_delay_enable)) self._chksum = "" if self._args.collectors: self._chksum = hashlib.md5(''.join( self._args.collectors)).hexdigest() # Initialize logger self.logger = dm_logger or DeviceManagerLogger(args) # Register Plugins try: DeviceConf.register_plugins() except DeviceConf.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error("Internal error while registering plugins: " + str(e) + tb) # Register Ansible Plugins try: AnsibleBase.register_plugins() except AnsibleBase.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering ansible plugins: " + str(e) + tb) # Retry till API server is up connected = False self.connection_state_update(ConnectionStatus.INIT) api_server_list = args.api_server_ip.split(',') while not connected: try: self._vnc_lib = VncApi( args.admin_user, args.admin_password, args.admin_tenant_name, api_server_list, args.api_server_port, api_server_use_ssl=args.api_server_use_ssl) connected = True self.connection_state_update(ConnectionStatus.UP) except requests.exceptions.ConnectionError as e: # Update connection info self.connection_state_update(ConnectionStatus.DOWN, str(e)) time.sleep(3) except ResourceExhaustionError: # haproxy throws 503 time.sleep(3) """ @sighup Handle of SIGHUP for collector list config change """ gevent.signal(signal.SIGHUP, self.sighup_handler) # Initialize amqp self._vnc_amqp = DMAmqpHandle(self.logger, self.REACTION_MAP, self._args) self._vnc_amqp.establish() # Initialize cassandra self._object_db = DMCassandraDB.get_instance(self, _zookeeper_client) DBBaseDM.init(self, self.logger, self._object_db) DBBaseDM._sandesh = self.logger._sandesh for obj in GlobalSystemConfigDM.list_obj(): GlobalSystemConfigDM.locate(obj['uuid'], obj) for obj in NodeProfileDM.list_obj(): NodeProfileDM.locate(obj['uuid'], obj) for obj in RoleConfigDM.list_obj(): RoleConfigDM.locate(obj['uuid'], obj) for obj in GlobalVRouterConfigDM.list_obj(): GlobalVRouterConfigDM.locate(obj['uuid'], obj) for obj in VirtualNetworkDM.list_obj(): VirtualNetworkDM.locate(obj['uuid'], obj) for obj in FabricDM.list_obj(): FabricDM.locate(obj['uuid'], obj) for obj in FabricNamespaceDM.list_obj(): FabricNamespaceDM.locate(obj['uuid'], obj) for obj in LogicalRouterDM.list_obj(): LogicalRouterDM.locate(obj['uuid'], obj) for obj in RoutingInstanceDM.list_obj(): RoutingInstanceDM.locate(obj['uuid'], obj) for obj in BgpRouterDM.list_obj(): BgpRouterDM.locate(obj['uuid'], obj) for obj in PortTupleDM.list_obj(): PortTupleDM.locate(obj['uuid'], obj) for obj in PhysicalInterfaceDM.list_obj(): PhysicalInterfaceDM.locate(obj['uuid'], obj) for obj in LinkAggregationGroupDM.list_obj(): LinkAggregationGroupDM.locate(obj['uuid'], obj) for obj in LogicalInterfaceDM.list_obj(): LogicalInterfaceDM.locate(obj['uuid'], obj) pr_obj_list = PhysicalRouterDM.list_obj() for obj in pr_obj_list: PhysicalRouterDM.locate(obj['uuid'], obj) pr_uuid_set = set([pr_obj['uuid'] for pr_obj in pr_obj_list]) self._object_db.handle_pr_deletes(pr_uuid_set) for obj in VirtualMachineInterfaceDM.list_obj(): VirtualMachineInterfaceDM.locate(obj['uuid'], obj) for obj in SecurityGroupDM.list_obj(): SecurityGroupDM.locate(obj['uuid'], obj) for obj in AccessControlListDM.list_obj(): AccessControlListDM.locate(obj['uuid'], obj) for obj in pr_obj_list: pr = PhysicalRouterDM.locate(obj['uuid'], obj) li_set = pr.logical_interfaces vmi_set = set() for pi_id in pr.physical_interfaces: pi = PhysicalInterfaceDM.locate(pi_id) if pi: li_set |= pi.logical_interfaces vmi_set |= pi.virtual_machine_interfaces for li_id in li_set: li = LogicalInterfaceDM.locate(li_id) if li and li.virtual_machine_interface: vmi_set |= set([li.virtual_machine_interface]) for vmi_id in vmi_set: vmi = VirtualMachineInterfaceDM.locate(vmi_id) si_obj_list = ServiceInstanceDM.list_obj() si_uuid_set = set([si_obj['uuid'] for si_obj in si_obj_list]) self._object_db.handle_pnf_resource_deletes(si_uuid_set) for obj in si_obj_list: ServiceInstanceDM.locate(obj['uuid'], obj) for obj in InstanceIpDM.list_obj(): InstanceIpDM.locate(obj['uuid'], obj) for obj in FloatingIpDM.list_obj(): FloatingIpDM.locate(obj['uuid'], obj) for vn in VirtualNetworkDM.values(): vn.update_instance_ip_map() for obj in ServiceEndpointDM.list_obj(): ServiceEndpointDM.locate(obj['uuid'], obj) for obj in ServiceConnectionModuleDM.list_obj(): ServiceConnectionModuleDM.locate(obj['uuid'], obj) for obj in ServiceObjectDM.list_obj(): ServiceObjectDM.locate(obj['uuid'], obj) for obj in NetworkDeviceConfigDM.list_obj(): NetworkDeviceConfigDM.locate(obj['uuid'], obj) for obj in E2ServiceProviderDM.list_obj(): E2ServiceProviderDM.locate(obj['uuid'], obj) for obj in PeeringPolicyDM.list_obj(): PeeringPolicyDM.locate(obj['uuid'], obj) for pr in PhysicalRouterDM.values(): pr.set_config_state() pr.uve_send() self._vnc_amqp._db_resync_done.set() try: gevent.joinall(self._vnc_amqp._vnc_kombu.greenlets()) except KeyboardInterrupt: DeviceManager.destroy_instance() raise
def __init__(self, dm_logger=None, args=None, zookeeper_client=None, amqp_client=None): """Physical Router init routine.""" DeviceManager._instance = self self._args = args self._amqp_client = amqp_client self.logger = dm_logger or DeviceManagerLogger(args) self._vnc_amqp = DMAmqpHandle(self.logger, self.REACTION_MAP, self._args) PushConfigState.set_push_mode(int(self._args.push_mode)) PushConfigState.set_repush_interval(int(self._args.repush_interval)) PushConfigState.set_repush_max_interval( int(self._args.repush_max_interval)) PushConfigState.set_push_delay_per_kb( float(self._args.push_delay_per_kb)) PushConfigState.set_push_delay_max(int(self._args.push_delay_max)) PushConfigState.set_push_delay_enable( bool(self._args.push_delay_enable)) self._chksum = "" if self._args.collectors: self._chksum = hashlib.md5(''.join( self._args.collectors)).hexdigest() # Register Plugins try: DeviceConf.register_plugins() except DeviceConf.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error("Internal error while registering plugins: " + str(e) + tb) # Register Ansible Plugins try: AnsibleBase.register_plugins() except AnsibleBase.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering ansible plugins: " + str(e) + tb) # Register Feature Plugins try: FeatureBase.register_plugins() except FeatureBase.PluginRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering feature plugins: " + str(e) + tb) raise e # Retry till API server is up connected = False self.connection_state_update(ConnectionStatus.INIT) api_server_list = args.api_server_ip.split(',') while not connected: try: self._vnc_lib = VncApi( args.admin_user, args.admin_password, args.admin_tenant_name, api_server_list, args.api_server_port, api_server_use_ssl=args.api_server_use_ssl) connected = True self.connection_state_update(ConnectionStatus.UP) except requests.exceptions.ConnectionError as e: # Update connection info self.connection_state_update(ConnectionStatus.DOWN, str(e)) time.sleep(3) except ResourceExhaustionError: # haproxy throws 503 time.sleep(3) if PushConfigState.is_push_mode_ansible(): FabricManager.initialize(args, dm_logger, self._vnc_lib) # Initialize amqp self._vnc_amqp.establish() # Initialize cassandra self._object_db = DMCassandraDB.get_instance(zookeeper_client, self._args, self.logger) DBBaseDM.init(self, self.logger, self._object_db) DBBaseDM._sandesh = self.logger._sandesh GlobalSystemConfigDM.locate_all() FeatureDM.locate_all() PhysicalRoleDM.locate_all() OverlayRoleDM.locate_all() RoleDefinitionDM.locate_all() FeatureConfigDM.locate_all() NodeProfileDM.locate_all() RoleConfigDM.locate_all() GlobalVRouterConfigDM.locate_all() VirtualNetworkDM.locate_all() DataCenterInterconnectDM.locate_all() FabricDM.locate_all() FabricNamespaceDM.locate_all() LogicalRouterDM.locate_all() RoutingInstanceDM.locate_all() FloatingIpPoolDM.locate_all() BgpRouterDM.locate_all() PhysicalInterfaceDM.locate_all() LogicalInterfaceDM.locate_all() PhysicalRouterDM.locate_all() LinkAggregationGroupDM.locate_all() VirtualPortGroupDM.locate_all() PortDM.locate_all() TagDM.locate_all() NetworkIpamDM.locate_all() VirtualMachineInterfaceDM.locate_all() SecurityGroupDM.locate_all() AccessControlListDM.locate_all() PortProfileDM.locate_all() StormControlProfileDM.locate_all() ServiceInstanceDM.locate_all() ServiceApplianceSetDM.locate_all() ServiceApplianceDM.locate_all() ServiceTemplateDM.locate_all() PortTupleDM.locate_all() InstanceIpDM.locate_all() FloatingIpDM.locate_all() for vn in VirtualNetworkDM.values(): vn.update_instance_ip_map() ServiceEndpointDM.locate_all() ServiceConnectionModuleDM.locate_all() ServiceObjectDM.locate_all() NetworkDeviceConfigDM.locate_all() E2ServiceProviderDM.locate_all() PeeringPolicyDM.locate_all() pr_obj_list = PhysicalRouterDM.list_obj() pr_uuid_set = set([pr_obj['uuid'] for pr_obj in pr_obj_list]) self._object_db.handle_pr_deletes(pr_uuid_set) dci_obj_list = DataCenterInterconnectDM.list_obj() dci_uuid_set = set([dci_obj['uuid'] for dci_obj in dci_obj_list]) self._object_db.handle_dci_deletes(dci_uuid_set) si_obj_list = ServiceInstanceDM.list_obj() si_uuid_set = set([si_obj['uuid'] for si_obj in si_obj_list]) self._object_db.handle_pnf_resource_deletes(si_uuid_set) for pr in PhysicalRouterDM.values(): pr.set_config_state() pr.uve_send() self._vnc_amqp._db_resync_done.set() gevent.joinall(self._vnc_amqp._vnc_kombu.greenlets())
def __init__(self, dm_logger=None, args=None, object_db=None, amqp_client=None): DeviceManager._instance = self self._args = args self._amqp_client = amqp_client self._object_db = object_db PushConfigState.set_push_mode(int(self._args.push_mode)) PushConfigState.set_repush_interval(int(self._args.repush_interval)) PushConfigState.set_repush_max_interval( int(self._args.repush_max_interval)) PushConfigState.set_push_delay_per_kb( float(self._args.push_delay_per_kb)) PushConfigState.set_push_delay_max(int(self._args.push_delay_max)) PushConfigState.set_push_delay_enable( bool(self._args.push_delay_enable)) self._chksum = "" if self._args.collectors: self._chksum = hashlib.md5( ''.join(self._args.collectors)).hexdigest() # Initialize logger self.logger = dm_logger or DeviceManagerLogger(args) # Register Plugins try: DeviceConf.register_plugins() except DeviceConf.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering plugins: " + str(e) + tb) # Register Ansible Plugins try: AnsibleBase.register_plugins() except AnsibleBase.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering ansible plugins: " + str(e) + tb) # Retry till API server is up connected = False self.connection_state_update(ConnectionStatus.INIT) api_server_list = args.api_server_ip.split(',') while not connected: try: self._vnc_lib = VncApi( args.admin_user, args.admin_password, args.admin_tenant_name, api_server_list, args.api_server_port, api_server_use_ssl=args.api_server_use_ssl) connected = True self.connection_state_update(ConnectionStatus.UP) except requests.exceptions.ConnectionError as e: # Update connection info self.connection_state_update(ConnectionStatus.DOWN, str(e)) time.sleep(3) except ResourceExhaustionError: # haproxy throws 503 time.sleep(3) # Initialize amqp self._vnc_amqp = DMAmqpHandle(self.logger, self.REACTION_MAP, self._args) self._vnc_amqp.establish() DBBaseDM.init(self, self.logger, self._object_db) DBBaseDM._sandesh = self.logger._sandesh for obj in GlobalSystemConfigDM.list_obj(): GlobalSystemConfigDM.locate(obj['uuid'], obj) for obj in NodeProfileDM.list_obj(): NodeProfileDM.locate(obj['uuid'], obj) for obj in RoleConfigDM.list_obj(): RoleConfigDM.locate(obj['uuid'], obj) for obj in GlobalVRouterConfigDM.list_obj(): GlobalVRouterConfigDM.locate(obj['uuid'], obj) for obj in VirtualNetworkDM.list_obj(): VirtualNetworkDM.locate(obj['uuid'], obj) dci_obj_list = DataCenterInterconnectDM.list_obj() for obj in dci_obj_list or []: DataCenterInterconnectDM.locate(obj['uuid'], obj) for obj in FabricDM.list_obj(): FabricDM.locate(obj['uuid'], obj) for obj in FabricNamespaceDM.list_obj(): FabricNamespaceDM.locate(obj['uuid'], obj) for obj in LogicalRouterDM.list_obj(): LogicalRouterDM.locate(obj['uuid'], obj) for obj in RoutingInstanceDM.list_obj(): RoutingInstanceDM.locate(obj['uuid'], obj) for obj in FloatingIpPoolDM.list_obj(): FloatingIpPoolDM.locate(obj['uuid'], obj) for obj in BgpRouterDM.list_obj(): BgpRouterDM.locate(obj['uuid'], obj) for obj in PortTupleDM.list_obj(): PortTupleDM.locate(obj['uuid'], obj) for obj in PhysicalInterfaceDM.list_obj(): PhysicalInterfaceDM.locate(obj['uuid'], obj) for obj in LogicalInterfaceDM.list_obj(): LogicalInterfaceDM.locate(obj['uuid'], obj) pr_obj_list = PhysicalRouterDM.list_obj() for obj in pr_obj_list: PhysicalRouterDM.locate(obj['uuid'], obj) pr_uuid_set = set([pr_obj['uuid'] for pr_obj in pr_obj_list]) self._object_db.handle_pr_deletes(pr_uuid_set) dci_uuid_set = set([dci_obj['uuid'] for dci_obj in dci_obj_list]) self._object_db.handle_dci_deletes(dci_uuid_set) for obj in LinkAggregationGroupDM.list_obj(): LinkAggregationGroupDM.locate(obj['uuid'], obj) for obj in VirtualPortGroupDM.list_obj(): VirtualPortGroupDM.locate(obj['uuid'], obj) for obj in VirtualMachineInterfaceDM.list_obj(): VirtualMachineInterfaceDM.locate(obj['uuid'], obj) for obj in SecurityGroupDM.list_obj(): SecurityGroupDM.locate(obj['uuid'], obj) for obj in AccessControlListDM.list_obj(): AccessControlListDM.locate(obj['uuid'], obj) for obj in pr_obj_list: pr = PhysicalRouterDM.locate(obj['uuid'], obj) li_set = pr.logical_interfaces vmi_set = set() for pi_id in pr.physical_interfaces: pi = PhysicalInterfaceDM.locate(pi_id) if pi: li_set |= pi.logical_interfaces vmi_set |= pi.virtual_machine_interfaces for li_id in li_set: li = LogicalInterfaceDM.locate(li_id) if li and li.virtual_machine_interface: vmi_set |= set([li.virtual_machine_interface]) for vmi_id in vmi_set: vmi = VirtualMachineInterfaceDM.locate(vmi_id) si_obj_list = ServiceInstanceDM.list_obj() si_uuid_set = set([si_obj['uuid'] for si_obj in si_obj_list]) self._object_db.handle_pnf_resource_deletes(si_uuid_set) for obj in si_obj_list: ServiceInstanceDM.locate(obj['uuid'], obj) for obj in InstanceIpDM.list_obj(): InstanceIpDM.locate(obj['uuid'], obj) for obj in FloatingIpDM.list_obj(): FloatingIpDM.locate(obj['uuid'], obj) for vn in VirtualNetworkDM.values(): vn.update_instance_ip_map() for obj in ServiceEndpointDM.list_obj(): ServiceEndpointDM.locate(obj['uuid'], obj) for obj in ServiceConnectionModuleDM.list_obj(): ServiceConnectionModuleDM.locate(obj['uuid'], obj) for obj in ServiceObjectDM.list_obj(): ServiceObjectDM.locate(obj['uuid'], obj) for obj in NetworkDeviceConfigDM.list_obj(): NetworkDeviceConfigDM.locate(obj['uuid'], obj) for obj in E2ServiceProviderDM.list_obj(): E2ServiceProviderDM.locate(obj['uuid'], obj) for obj in PeeringPolicyDM.list_obj(): PeeringPolicyDM.locate(obj['uuid'], obj) for pr in PhysicalRouterDM.values(): pr.set_config_state() pr.uve_send() self._vnc_amqp._db_resync_done.set() gevent.joinall(self._vnc_amqp._vnc_kombu.greenlets())
def __init__(self, dm_logger=None, args=None, zookeeper_client=None, amqp_client=None): DeviceManager._instance = self self._args = args self._amqp_client = amqp_client self.logger = dm_logger or DeviceManagerLogger(args) self._vnc_amqp = DMAmqpHandle(self.logger, self.REACTION_MAP, self._args) PushConfigState.set_push_mode(int(self._args.push_mode)) PushConfigState.set_repush_interval(int(self._args.repush_interval)) PushConfigState.set_repush_max_interval( int(self._args.repush_max_interval)) PushConfigState.set_push_delay_per_kb( float(self._args.push_delay_per_kb)) PushConfigState.set_push_delay_max(int(self._args.push_delay_max)) PushConfigState.set_push_delay_enable( bool(self._args.push_delay_enable)) self._chksum = "" if self._args.collectors: self._chksum = hashlib.md5( ''.join(self._args.collectors)).hexdigest() # Register Plugins try: DeviceConf.register_plugins() except DeviceConf.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering plugins: " + str(e) + tb) # Register Ansible Plugins try: AnsibleBase.register_plugins() except AnsibleBase.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering ansible plugins: " + str(e) + tb) # Register Feature Plugins try: FeatureBase.register_plugins() except FeatureBase.PluginRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error( "Internal error while registering feature plugins: " + str(e) + tb) raise e # Retry till API server is up connected = False self.connection_state_update(ConnectionStatus.INIT) api_server_list = args.api_server_ip.split(',') while not connected: try: self._vnc_lib = VncApi( args.admin_user, args.admin_password, args.admin_tenant_name, api_server_list, args.api_server_port, api_server_use_ssl=args.api_server_use_ssl) connected = True self.connection_state_update(ConnectionStatus.UP) except requests.exceptions.ConnectionError as e: # Update connection info self.connection_state_update(ConnectionStatus.DOWN, str(e)) time.sleep(3) except ResourceExhaustionError: # haproxy throws 503 time.sleep(3) if PushConfigState.is_push_mode_ansible(): FabricManager.initialize(args, dm_logger, self._vnc_lib) # Initialize amqp self._vnc_amqp.establish() # Initialize cassandra self._object_db = DMCassandraDB.get_instance(zookeeper_client, self._args, self.logger) DBBaseDM.init(self, self.logger, self._object_db) DBBaseDM._sandesh = self.logger._sandesh GlobalSystemConfigDM.locate_all() FeatureDM.locate_all() PhysicalRoleDM.locate_all() OverlayRoleDM.locate_all() RoleDefinitionDM.locate_all() FeatureConfigDM.locate_all() NodeProfileDM.locate_all() RoleConfigDM.locate_all() GlobalVRouterConfigDM.locate_all() VirtualNetworkDM.locate_all() DataCenterInterconnectDM.locate_all() FabricDM.locate_all() FabricNamespaceDM.locate_all() LogicalRouterDM.locate_all() RoutingInstanceDM.locate_all() FloatingIpPoolDM.locate_all() BgpRouterDM.locate_all() PhysicalInterfaceDM.locate_all() LogicalInterfaceDM.locate_all() PhysicalRouterDM.locate_all() LinkAggregationGroupDM.locate_all() VirtualPortGroupDM.locate_all() PortDM.locate_all() TagDM.locate_all() NetworkIpamDM.locate_all() VirtualMachineInterfaceDM.locate_all() SecurityGroupDM.locate_all() AccessControlListDM.locate_all() ServiceInstanceDM.locate_all() ServiceApplianceSetDM.locate_all() ServiceApplianceDM.locate_all() ServiceTemplateDM.locate_all() PortTupleDM.locate_all() InstanceIpDM.locate_all() FloatingIpDM.locate_all() for vn in VirtualNetworkDM.values(): vn.update_instance_ip_map() ServiceEndpointDM.locate_all() ServiceConnectionModuleDM.locate_all() ServiceObjectDM.locate_all() NetworkDeviceConfigDM.locate_all() E2ServiceProviderDM.locate_all() PeeringPolicyDM.locate_all() pr_obj_list = PhysicalRouterDM.list_obj() pr_uuid_set = set([pr_obj['uuid'] for pr_obj in pr_obj_list]) self._object_db.handle_pr_deletes(pr_uuid_set) dci_obj_list = DataCenterInterconnectDM.list_obj() dci_uuid_set = set([dci_obj['uuid'] for dci_obj in dci_obj_list]) self._object_db.handle_dci_deletes(dci_uuid_set) si_obj_list = ServiceInstanceDM.list_obj() si_uuid_set = set([si_obj['uuid'] for si_obj in si_obj_list]) self._object_db.handle_pnf_resource_deletes(si_uuid_set) for pr in PhysicalRouterDM.values(): pr.set_config_state() pr.uve_send() self._vnc_amqp._db_resync_done.set() gevent.joinall(self._vnc_amqp._vnc_kombu.greenlets())
def __init__(self, dm_logger=None, args=None): self._args = args PushConfigState.set_repush_interval(int(self._args.repush_interval)) PushConfigState.set_repush_max_interval(int(self._args.repush_max_interval)) PushConfigState.set_push_delay_per_kb(float(self._args.push_delay_per_kb)) PushConfigState.set_push_delay_max(int(self._args.push_delay_max)) PushConfigState.set_push_delay_enable(bool(self._args.push_delay_enable)) self._chksum = ""; if self._args.collectors: self._chksum = hashlib.md5(''.join(self._args.collectors)).hexdigest() # Initialize logger self.logger = dm_logger or DeviceManagerLogger(args) # Register Plugins try: DeviceConf.register_plugins() except DeviceConf.PluginsRegistrationFailed as e: self.logger.error("Exception: " + str(e)) except Exception as e: tb = traceback.format_exc() self.logger.error("Internal error while registering plugins: " + str(e) + tb) # Retry till API server is up connected = False self.connection_state_update(ConnectionStatus.INIT) while not connected: try: self._vnc_lib = VncApi( args.admin_user, args.admin_password, args.admin_tenant_name, args.api_server_ip, args.api_server_port, api_server_use_ssl=args.api_server_use_ssl) connected = True self.connection_state_update(ConnectionStatus.UP) except requests.exceptions.ConnectionError as e: # Update connection info self.connection_state_update(ConnectionStatus.DOWN, str(e)) time.sleep(3) except ResourceExhaustionError: # haproxy throws 503 time.sleep(3) """ @sighup Handle of SIGHUP for collector list config change """ gevent.signal(signal.SIGHUP, self.sighup_handler) # Initialize amqp self._vnc_amqp = DMAmqpHandle(self.logger, self.REACTION_MAP, self._args) self._vnc_amqp.establish() # Initialize cassandra self._object_db = DMCassandraDB.get_instance(self, _zookeeper_client) DBBaseDM.init(self, self.logger, self._object_db) DBBaseDM._sandesh = self.logger._sandesh for obj in GlobalSystemConfigDM.list_obj(): GlobalSystemConfigDM.locate(obj['uuid'], obj) for obj in GlobalVRouterConfigDM.list_obj(): GlobalVRouterConfigDM.locate(obj['uuid'], obj) for obj in VirtualNetworkDM.list_obj(): VirtualNetworkDM.locate(obj['uuid'], obj) for obj in LogicalRouterDM.list_obj(): LogicalRouterDM.locate(obj['uuid'], obj) for obj in RoutingInstanceDM.list_obj(): RoutingInstanceDM.locate(obj['uuid'], obj) for obj in BgpRouterDM.list_obj(): BgpRouterDM.locate(obj['uuid'], obj) pr_obj_list = PhysicalRouterDM.list_obj() for obj in pr_obj_list: PhysicalRouterDM.locate(obj['uuid'],obj) pr_uuid_set = set([pr_obj['uuid'] for pr_obj in pr_obj_list]) self._object_db.handle_pr_deletes(pr_uuid_set) for obj in PortTupleDM.list_obj(): PortTupleDM.locate(obj['uuid'],obj) for obj in PhysicalInterfaceDM.list_obj(): PhysicalInterfaceDM.locate(obj['uuid'],obj) for obj in LogicalInterfaceDM.list_obj(): LogicalInterfaceDM.locate(obj['uuid'],obj) for obj in VirtualMachineInterfaceDM.list_obj(): VirtualMachineInterfaceDM.locate(obj['uuid'],obj) for obj in pr_obj_list: pr = PhysicalRouterDM.locate(obj['uuid'], obj) li_set = pr.logical_interfaces vmi_set = set() for pi_id in pr.physical_interfaces: pi = PhysicalInterfaceDM.locate(pi_id) if pi: li_set |= pi.logical_interfaces vmi_set |= pi.virtual_machine_interfaces for li_id in li_set: li = LogicalInterfaceDM.locate(li_id) if li and li.virtual_machine_interface: vmi_set |= set([li.virtual_machine_interface]) for vmi_id in vmi_set: vmi = VirtualMachineInterfaceDM.locate(vmi_id) si_obj_list = ServiceInstanceDM.list_obj() si_uuid_set = set([si_obj['uuid'] for si_obj in si_obj_list]) self._object_db.handle_pnf_resource_deletes(si_uuid_set) for obj in si_obj_list: ServiceInstanceDM.locate(obj['uuid'], obj) for obj in InstanceIpDM.list_obj(): InstanceIpDM.locate(obj['uuid'], obj) for obj in FloatingIpDM.list_obj(): FloatingIpDM.locate(obj['uuid'], obj) for vn in VirtualNetworkDM.values(): vn.update_instance_ip_map() for obj in ServiceEndpointDM.list_obj(): ServiceEndpointDM.locate(obj['uuid'], obj) for obj in ServiceConnectionModuleDM.list_obj(): ServiceConnectionModuleDM.locate(obj['uuid'], obj) for obj in ServiceObjectDM.list_obj(): ServiceObjectDM.locate(obj['uuid'], obj) for obj in NetworkDeviceConfigDM.list_obj(): NetworkDeviceConfigDM.locate(obj['uuid'], obj) for obj in E2ServiceProviderDM.list_obj(): E2ServiceProviderDM.locate(obj['uuid'], obj) for obj in PeeringPolicyDM.list_obj(): PeeringPolicyDM.locate(obj['uuid'], obj) for pr in PhysicalRouterDM.values(): pr.set_config_state() DeviceManager._device_manager = self self._vnc_amqp._db_resync_done.set() try: gevent.joinall(self._vnc_amqp._vnc_kombu.greenlets()) except KeyboardInterrupt: DeviceManager.destroy_instance() raise