def status_label(record): if record.ok: return green(record.last_date.strftime(DATE_FORMAT)) elif not record.exists(): return yellow('Not applied') else: return red(record.status)
def format_output(output, success=True): echo(' │') for level, msg in output: echo(' │ {0}'.format(msg)) echo(' │') echo(' └──[{0}]'.format(green('OK') if success else red('KO'))) echo('')
def get_queues(queue): queues = [q.name for q in current_app.config['CELERY_TASK_QUEUES']] if queue: queues = [q for q in queues if q == queue] if not len(queues): print(red('Error: no queue found')) sys.exit(-1) return queues
def format_output(output, success=True, traceback=None): echo(' │') for level, msg in output: echo(' │ {0}'.format(msg)) echo(' │') if traceback: for tb in traceback.split('\n'): echo(' │ {0}'.format(tb)) echo(' │') echo(' └──[{0}]'.format(green('OK') if success else red('KO'))) echo('')
def status_print_config(queue): if not queue: print(red('--munin-config called without a --queue parameter')) sys.exit(-1) tasks = cache.get(TASKS_LIST_CACHE_KEY) or [] if not tasks: registered = inspect().registered_tasks() if registered: for w, tasks_list in registered.iteritems(): tasks += [t for t in tasks_list if t not in tasks] cache.set(TASKS_LIST_CACHE_KEY, tasks, timeout=TASKS_LIST_CACHE_DURATION) print('graph_title Waiting tasks for queue %s' % queue) print('graph_vlabel Nb of tasks') print('graph_category celery') for task in tasks: print('%s.label %s' % (format_field_for_munin(task), task))
def migrate(record, dry_run=False): '''Perform database migrations''' success = True for migration in migrations.list_available(): if migration.record.ok or not success: log_status(migration, cyan('Skipped')) else: status = magenta('Recorded') if record else yellow('Apply') log_status(migration, status) try: output = migration.execute(recordonly=record, dryrun=dry_run) except migrations.RollbackError as re: format_output(re.migrate_exc.output, False) log_status(migration, red('Rollback')) format_output(re.output, not re.exc) success = False except migrations.MigrationError as me: format_output(me.output, False, traceback=me.traceback) success = False else: format_output(output, True) return success
def execute_migration(plugin, filename, script, dryrun=False): '''Execute and record a migration''' db = get_db(DEFAULT_CONNECTION_NAME) js = SCRIPT_WRAPPER.format(script) lines = script.splitlines() success = True if not dryrun: try: lines = db.eval(js, plugin, filename, script) except OperationFailure as e: log.error(e.details['errmsg'].replace('\n', '\\n')) success = False except PyMongoError as e: log.error('Unable to apply migration: %s', str(e)) success = False print('│') for line in lines: print('│ {0}'.format(line)) print('│') print('└──[{0}]'.format(green('OK') if success else red('KO'))) print('') return success
def is_active(ep, actives): return green(OK) if ep.name in actives else red(KO)