def do_list(cs, args):
    """Get repositories accompany with relevant project and repo name."""
    project_id = args.project_id
    if not project_id:
        project_id = cs.client.project
    repositories = cs.repositories.list(project_id)
    data = []
    for repo in repositories:
        tags = cs.repositories.list_tags(repo['name'])
        for tag in tags:
            item = repo.copy()
            manifest = cs.repositories.get_manifests(item['name'], tag['name'])
            size = 0

            for layer in manifest['manifest']['layers']:
                size += layer['size']
            item['size'] = size

            if tag['name'] != 'latest':
                item['name'] = repo['name'] + ":" + tag['name']
            data.append(item)
    fields = [
        "name", 'project_id', 'size', "tags_count", "star_count", "pull_count",
        "update_time"
    ]
    utils.print_list(data, fields, sortby=args.sortby)
Exemple #2
0
def do_list_tags(cs, args):
    """Get tags of a relevant repository."""
    tags = cs.repositories.list_tags(args.repository)
    fields = [
        "name", 'author', 'architecture', 'os', 'docker_version', 'created'
    ]
    utils.print_list(tags, fields, sortby="name")
Exemple #3
0
def do_target_list(cs, args):
    """List filters targets."""
    targets = cs.targets.list()
    fields = [
        'id', 'name', 'endpoint', 'username', 'password', 'creation_time'
    ]
    utils.print_list(targets, fields)
Exemple #4
0
def do_policy_list(cs, args):
    """List filters policies by name and project_id."""
    target = None
    if is_id(args.target):
        target = args.target
    else:
        targets = cs.targets.list()
        for t in targets:
            if t['name'] == args.target:
                target = t['id']
                break
    if not target:
        print("target '%s' not found!" % args.target)
        return 1
    try:
        policies = cs.targets.list_policies(target)
    except exp.NotFound:
        print("target '%s' not found!" % args.target)
        return 1
    if not policies:
        policies = []
    fields = [
        "id", "name", "description", "enabled", "start_time", "cron_str",
        "creation_time"
    ]
    utils.print_list(policies, fields, sortby='id')
Exemple #5
0
def do_job_list(cs, args):
    """List filters jobs according to the policy and repository."""
    jobs = cs.jobs.list(args.policy_id)
    for job in jobs:
        if job['tags']:
            job['name'] += ":" + job['tags']
    fields = ['id', 'repository', 'operation', 'status', 'update_time']
    utils.print_list(jobs, fields, sortby='id')
Exemple #6
0
 def _dump_timings(self, timings):
     results = [{
         "url": url,
         "seconds": end - start
     } for url, start, end in timings]
     total = 0.0
     for tyme in results:
         total += tyme['seconds']
     results.append({"url": "Total", "seconds": total})
     utils.print_list(results, ["url", "seconds"], align='l')
     print("Total: %s seconds" % total)
Exemple #7
0
 def _dump_timings(self, timings):
     results = [{
         "url": url,
         "seconds": end - start
     } for url, start, end in timings]
     total = 0.0
     for tyme in results:
         total += tyme['seconds']
     results.append({"url": "Total", "seconds": total})
     utils.print_list(results, ["url", "seconds"], align='l')
     print("Total: %s seconds" % total)
Exemple #8
0
def do_logs(cs, args):
    """Get logs. """
    _, logs = cs.logs.list()
    for log in logs:
        repo = log['repo_name']
        tag = None
        if log['repo_tag'] != 'N/A':
            tag = log['repo_tag']
        if tag:
            repo += ":%s" % tag
        log['repository'] = repo
    fields = ['op_time', 'username', 'operation', 'repository']
    utils.print_list(logs, fields, sortby=args.sortby)
Exemple #9
0
def do_project_list(cs, args):
    """List projects."""
    projects = cs.projects.list()
    fields = [
        'project_id',
        'name',
        'owner_id',
        'current_user_role_id',
        'repo_count',
        'creation_time',
        'public',
    ]
    utils.print_list(projects, fields, formatters={}, sortby=args.sortby)
Exemple #10
0
def do_top(cs, args):
    """Get public repositories which are accessed most."""
    try:
        count = int(args.count)
    except ValueError:
        print("'%s' is not a valid number." % args.count)
        return 1
    if count < 1:
        print("invalid count %s, count must > 0." % args.count)
        return 1
    data = cs.repositories.get_top(count)
    utils.print_list(data, ['name', 'pull_count', 'star_count'],
                     sortby='pull_count')
Exemple #11
0
def do_member_list(cs, args):
    """List a project's relevant role members."""
    project = args.project_id
    if not project:
        project = cs.client.project
    members = cs.projects.get_members(project)
    fields = [
        'username',
        'role_name',
        'user_id',
        'role_id',
    ]
    utils.print_list(members, fields, formatters={}, sortby='user_id')
Exemple #12
0
def do_get_conf(cs, args):
    """Get system configurations."""
    try:
        configurations = cs.configurations.get()
    except exp.Forbidden:
        raise exp.CommandError("Only admin can perform this operation.")
    data = []
    for key in configurations:
        item = {}
        item['name'] = key
        item['value'] = configurations[key]['value']
        item['editable'] = configurations[key]['editable']
        data.append(item)
    utils.print_list(data, ['name', 'value', 'editable'], sortby='name')
Exemple #13
0
def do_logs(cs, args):
    """Get recent logs of the projects which the user is a member of."""
    logs = cs.logs.list() or []
    for log in logs:
        repo = log['repo_name']
        tag = None
        if log['repo_tag'] != 'N/A':
            tag = log['repo_tag']
        if tag:
            repo += ":%s" % tag
        log['repository'] = repo
    fields = [
        'log_id', 'op_time', 'username', 'project_id', 'operation',
        'repository'
    ]
    utils.print_list(logs, fields, sortby=args.sortby)
Exemple #14
0
def do_search(cs, args):
    """Search for projects and repositories """
    resp, data = cs.searcher.search(args.query)
    project_fields = ['id', 'name', 'public']
    print("Find %d Projects: " % len(data['project']))
    utils.print_list(
        data['project'], project_fields, formatters={}, sortby='id')
    repository_fields = [
        'repository_name', 'project_name', 'project_id', 'project_public'
    ]
    print("\n")
    print("Find %d Repositories: " % len(data['repository']))
    utils.print_list(
        data['repository'],
        repository_fields,
        formatters={},
        sortby='repository_name')
Exemple #15
0
def do_user_list(cs, args):
    """Get registered users of Harbor."""
    try:
        users = cs.users.list()
    except exp.Forbidden as e:
        raise exp.CommandError(e.message)
    # Get admin user
    try:
        admin = cs.users.get(1)
        users.append(admin)
    except Exception:
        pass
    fields = [
        'user_id', 'username', 'is_admin', 'email', 'realname', 'comment'
    ]
    formatters = {"is_admin": 'has_admin_role'}
    utils.print_list(users, fields, formatters=formatters, sortby=args.sortby)
Exemple #16
0
def do_list(cs, args):
    """Print a list of available 'repositories'."""
    data = []
    _, repositories = cs.repositories.list(args.project_id)
    for repo in repositories:
        _, tags = cs.repositories.list_tags(repo)
        for tag in tags:
            _, manifests = cs.repositories.get_manifests(repo, tag)
            manifests['Name'] = repo
            manifests['Tag'] = tag
            manifests['Project'] = args.project_id
            manifests['Id'] = manifests['Id'][0:12]
            data.append(manifests)
    fields = [
        "Id", "Name", "Tag", "Author", 'Project', "Created", "Docker Version",
        "Architecture", "OS"
    ]
    utils.print_list(data, fields, sortby=args.sortby)
Exemple #17
0
def do_top(cs, args):
    """Get top accessed repositories. """
    resp, data = cs.repositories.get_top(args.count)
    utils.print_list(data, ['name', 'count'], sortby='count')
Exemple #18
0
def do_user_list(cs, args):
    """Print a list of available 'users'."""
    _, users = cs.users.list()
    fields = ['user_id', 'username', 'email', 'realname', 'comment']
    utils.print_list(users, fields, sortby=args.sortby)
Exemple #19
0
def do_list_tags(cs, args):
    """Get tags of a relevant repository."""
    resp, tags = cs.repositories.list_tags(args.repository)
    tags = [{"Tag": t} for t in tags]
    utils.print_list(tags, ["Tag"], sortby="Tag")