q36988 发表于 2018-5-28 12:48:39

格式化输出docker registry中所有的tag以及tag链接

  最近在研究kubernetes,docker仓库用到的比较多,每次查询都得curl好麻烦,所以才写了这个。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
author = 'Perling'
time = '2016/11/10'
"""
import urllib2
import json
registry="172.31.14.229:5000"
registry_url = "http://%s"%registry

def http_get(url):
    req = urllib2.Request(url)
    req.add_header("Content-Type","application/json-rpc")
    resp = urllib2.urlopen(req)
    resp_json = json.loads(resp.read())
    return resp_json
def get_repository_list():
    data = http_get(registry_url+"/v2/_catalog")
    repository_list = data['repositories']
    return repository_list
def get_repository_tags(repository):
    data = http_get("%s/v2/%s/tags/list"%(registry_url,repository))
    tags = data['tags']
    return tags
def get_all_repository_tags():
    data = {}
    for repositoary in get_repository_list():
      data=get_repository_tags(repositoary)
    return data
if __name__ == '__main__':
    data = get_all_repository_tags()
    print "/"
    print "|"
    for key in data:
      print "|--- %s"%key
      for tag in data:
            print "|    |--- %-15s %s/%s:%s"%(tag,registry,key,tag)  

  为了看上去比较清晰 更新一版带颜色的
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
author = 'Perling'
time = '2016/11/15'
"""
import urllib2
import json
registry="172.31.14.229:5000"
registry_url = "http://%s"%registry

def http_get(url):
    req = urllib2.Request(url)
    req.add_header("Content-Type","application/json-rpc")
    resp = urllib2.urlopen(req)
    resp_json = json.loads(resp.read())
    return resp_json
def print_color(color,string):
    if color == 'red':
      print "\033[5;31;40m%s\033[0m" % string ,
    elif color == 'green':
      print "\033[1;32;40m%s\033[0m" % string ,
    else:
      print "\033[1;32;40m%s\033[0m" % string ,
def get_repository_list():
    data = http_get(registry_url+"/v2/_catalog")
    repository_list = data['repositories']
    return repository_list
def get_repository_tags(repository):
    data = http_get("%s/v2/%s/tags/list"%(registry_url,repository))
    tags = data['tags']
    return tags
def get_all_repository_tags():
    data = {}
    for repositoary in get_repository_list():
      data=get_repository_tags(repositoary)
    return data
if __name__ == '__main__':
    data = get_all_repository_tags()
    print "/"
    print "|"
    for key in data:
      print_color('green',"|--- %s"%key)
      print
      for tag in data:
    print_color('green',"|    |---")
    print " %-15s %s/%s:%s"%(tag,registry,key,tag)  效果如下:
页: [1]
查看完整版本: 格式化输出docker registry中所有的tag以及tag链接