def action_change_process_state(self): resp = dict() thread_handler = self.mbean.thread_handlers[self.process_name] document = thread_handler.args[1] # of type SchedulerConfigurationEntry state = self.request.args.get('state') if state is None: # request was performed with undefined "state", what means that checkbox was unselected # thus - turning off the process thread_handler.cancel() document.set_process_state(SchedulerConfigurationEntry.STATE_OFF) message = 'Stopped RepeatTimer for %s' % document.get_process_name() elif not thread_handler.is_alive(): document.set_process_state(SchedulerConfigurationEntry.STATE_ON) thread_handler = RepeatTimer(thread_handler.interval_current, thread_handler.callable, thread_handler.args, thread_handler.kwargs) thread_handler.start() self.mbean.thread_handlers[self.process_name] = thread_handler message = 'Started RepeatTimer for %s, triggering every %d seconds' \ % (document.get_process_name(), document.get_interval()) else: message = 'RepeatTimer for %s is already active. Ignoring request.' % document.get_process_name() scheduler_configuration_helper.update(self.logger, document) self.logger.info(message) resp['status'] = message return resp
def action_change_interval(self): resp = dict() new_interval = self.request.args.get('interval') if new_interval is not None: new_interval = int(new_interval) thread_handler = self.mbean.thread_handlers[self.process_name] thread_handler.change_interval(new_interval) document = thread_handler.args[1] # of type SchedulerConfigurationEntry document.set_interval(new_interval) scheduler_configuration_helper.update(self.logger, document) resp['status'] = 'changed interval for %r to %r' % (self.process_name, new_interval) return resp