def __init__(self, event: Event, state: bool = False): scr = SystemConfigReader() database_options = scr.get_all_values_from_section('Database') database = DatabaseManagerMongo(**database_options) super(ExportdThread, self).__init__() self.job = None self.job_id = int(event.get_param("id")) self.type_id = int( event.get_param("type_id")) if event.get_param("type_id") else None self.user_id = int(event.get_param("user_id")) self.event = event self.is_active = state self.exception_handling = None self.object_manager = CmdbObjectManager(database_manager=database) self.log_manager = ExportdLogManager(database_manager=database) self.exportd_job_manager = ExportdJobManagement( database_manager=database) self.user_manager = UserManager(database_manager=database)
def handler(self, event: Event): # get type of Event event_type = event.get_type() # get public_id from Event event_param_id = event.get_param("id") # Remove duplicate entries in the Queue of upcoming events for q in scheduler.queue: arg = q.argument[0] if "cmdb.core.object" in event_type and event_param_id == arg.get_param( "id"): scheduler.cancel(q) elif "cmdb.exportd" in event_type and event_param_id == arg.get_param( "id"): scheduler.cancel(q) if event.get_param("active"): scheduler.enter(10, 1, self.start_thread, argument=(event, )) elif "cmdb.exportd.deleted" != event_type: scheduler.enter(5, 1, self.start_thread, argument=(event, ))
def start_thread(event: Event): event_type = event.get_type() # start new threads if "cmdb.exportd.run_manual" == event_type: new_thread = ExportdThread(event=event, state=True) new_thread.start() elif "cmdb.core.object" in event_type: new_thread = ExportdThread(event=event, state=False) new_thread.start() elif "cmdb.exportd" in event_type: new_thread = ExportdThread(event=event, state=event.get_param("active") in ['true', True]) new_thread.start()