def _on_my_suppliers_all_hired(self, evt): from logs import lg from services import driver if driver.is_enabled('service_list_files'): if not driver.is_started('service_list_files'): lg.info('all my suppliers are hired, starting service_list_files()') driver.start_single('service_list_files') from customer import list_files_orator list_files_orator.A('need-files')
def start(self): from logs import lg from customer import fire_hire if not fire_hire.IsAllHired(): lg.warn('service_list_files() can not start right now, not all suppliers hired yet') return False from customer import list_files_orator list_files_orator.A('init') return True
def doCheckAndRun(self, *args, **kwargs): """ Action method. """ from customer import list_files_orator if list_files_orator.A().state in ['SAW_FILES', 'NO_FILES', ]: self.automat('run') else: reactor.callLater(5, self.automat, 'sync') # @UndefinedVariable
def A(self, event, *args, **kwargs): from customer import fire_hire from customer import data_sender from customer import list_files_orator from storage import backup_rebuilder from storage import index_synchronizer #---READY--- if self.state == 'READY': if event == 'timer-5sec': self.doOverallCheckUp(*args, **kwargs) elif event == 'restart' or event == 'suppliers-changed' or ( event == 'instant' and self.RestartAgain): self.state = 'FIRE_HIRE' self.RestartAgain = False self.doRememberSuppliers(*args, **kwargs) fire_hire.A('restart') #---LIST_FILES--- elif self.state == 'LIST_FILES': if (event == 'list_files_orator.state' and args[0] == 'NO_FILES'): self.state = 'READY' elif (event == 'list_files_orator.state' and args[0] == 'SAW_FILES'): self.state = 'LIST_BACKUPS' index_synchronizer.A('pull') data_sender.A('restart') self.doPrepareListBackups(*args, **kwargs) elif event == 'restart': self.RestartAgain = True elif event == 'suppliers-changed': self.state = 'READY' self.RestartAgain = True #---LIST_BACKUPS--- elif self.state == 'LIST_BACKUPS': if event == 'list-backups-done': self.state = 'REBUILDING' backup_rebuilder.A('start') elif event == 'restart': self.RestartAgain = True elif event == 'suppliers-changed': self.state = 'READY' self.RestartAgain = True elif event == 'restart': self.state = 'FIRE_HIRE' fire_hire.A('restart') #---REBUILDING--- elif self.state == 'REBUILDING': if (event == 'backup_rebuilder.state' and args[0] in ['DONE', 'STOPPED']): self.state = 'READY' self.doCleanUpBackups(*args, **kwargs) data_sender.A('restart') elif event == 'restart' or event == 'suppliers-changed': self.state = 'FIRE_HIRE' backup_rebuilder.SetStoppedFlag() fire_hire.A('restart') #---FIRE_HIRE--- elif self.state == 'FIRE_HIRE': if event == 'suppliers-changed' and self.isSuppliersNumberChanged( *args, **kwargs): self.state = 'LIST_FILES' self.doDeleteAllBackups(*args, **kwargs) self.doRememberSuppliers(*args, **kwargs) list_files_orator.A('need-files') elif event == 'fire-hire-finished': self.state = 'LIST_FILES' list_files_orator.A('need-files') elif event == 'suppliers-changed' and not self.isSuppliersNumberChanged( *args, **kwargs): self.state = 'LIST_FILES' self.doUpdateSuppliers(*args, **kwargs) self.doRememberSuppliers(*args, **kwargs) list_files_orator.A('need-files') elif event == 'restart': self.RestartAgain = True #---AT_STARTUP--- elif self.state == 'AT_STARTUP': if event == 'init': self.state = 'READY' self.RestartAgain = False return None
def start(self): from customer import list_files_orator list_files_orator.A('init') return True