def main(): p = Prompt() pic.connect() pic.LOG_BODIES = True title(p, "Consumer Applicability Generation APIs Demo") pause(p) p.write("\n------------------------------------------------------------------------\n") title(p, "Demo with consumer_criteria") content_applicability1() title(p, "Demo with repo_criteria") content_applicability2()
def main(): p = Prompt() pic.connect() pic.LOG_BODIES = True title(p, 'Consumer Applicability Generation APIs Demo') pause(p) p.write('\n------------------------------------------------------------------------\n') title(p, 'Demo with consumer_criteria') content_applicability1() title(p, 'Demo with repo_criteria') content_applicability2()
def run_publish(): p = prompt.Prompt() # Configure the REST interface pic.LOG_BODIES = False pic.PATH_PREFIX = '/pulp/api/v2/' pic.connect() # Punch out early if there aren't any repos to publish status, repos = _list_repos() if status != 200: p.write('No repositories found to publish') return os.EX_OK # Determine which distributors should be published distributors_to_publish = [] for repo in repos: repo_id = repo['id'] status, repo_distributors = _get_repo_distributors(repo_id) valid_distributors = [d for d in repo_distributors if d['id'] not in INVALID_DISTRIBUTORS] for distributor in valid_distributors: distributor_id, override_config = distributor['id'], distributor['config'] data = { 'id' : distributor_id, 'override_config' : override_config, } distributors_to_publish.append((repo_id, data)) # Request a publish for each found distributor p.write('Queuing %s publish tasks' % len(distributors_to_publish)) bar = progress.ProgressBar(p) for index, task in enumerate(distributors_to_publish): repo_id, data = task _publish(repo_id, data) bar.render(index + 1, len(distributors_to_publish)) p.write('') # Poll until the publish requests are finished p.write('Waiting on publish tasks to complete') bar = progress.ProgressBar(p) def _get_pending_reports(call_reports): return [report for report in call_reports if (report['state'] in ['running', 'waiting'])] status, call_reports = _publish_status() pending_call_reports = _get_pending_reports(call_reports) while len(pending_call_reports) > 0: status, call_reports = _publish_status() pending_call_reports = _get_pending_reports(call_reports) bar.render(len(call_reports) - len(pending_call_reports), len(call_reports)) p.write('') # Display any failed publish operations failed_publishes = [r for r in call_reports if (r['state'] == 'error')] if len(failed_publishes) > 0: p.write('The following publish operations failed:') for r in failed_publishes: # Figure out the ID of the repo from the task tags task_tags = r['tags'] repo_id = _repo_id_from_tags(task_tags) p.write(' %s' % repo_id) p.write('') p.write('Run the sync command on the repositories list above to ' 'get more information on the errors.') return os.EX_SOFTWARE else: p.write('Completed publishing repositories') return os.EX_OK