Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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