1. #/bin/python
    # -*- coding: utf-8 -*-
    import requests
    from urllib import parse
    from requests.auth import HTTPBasicAuth
    import time
    import json
    import re

    class HarborAapi(object):
    def __init__(self,url,auth):
    '''
    @Author: xiajinqi
    :param url:
    '''
    self.url = url
    self.auth=auth
    self.header = {
    'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
    'Content-Type': 'application/json'
    }

    def setting(self):
    ###定义会话保持s并且设置s的auth 属性
    self.session=requests.session()
    self.session.auth=self.auth

    ###根据工程名字获取ID
    def get_projects(self):
    req_url = '%s/api/projects?page=1&page_size=15' % (self.url)
    req_dict={
    'page': '1',
    'page_size': '15'
    }
    req_data=parse.urlencode(req_dict)
    try:
    r = self.session.get(req_url, data=req_dict, headers=self.header)
    if r.status_code==200:
    r.text
    return r.text
    except:
    raise Exception('Input is error')
    exit(0)

    ### 根据输入PEOJECTIC 和版本号查询对应的服务名字
    def get_version_image(self,project_id,query):
    req_url = '%s/api/repositories?project_id=%s&q=%s'% (self.url,project_id,query)
    req_dict = {
    'project_id':project_id ,
    'q': query
    }
    req_data = parse.urlencode(req_dict)
    print(req_dict)
    try:
    r = self.session.get(req_url, data=req_dict, headers=self.header)
    if r.status_code == 200:
    return r.text
    except:
    raise Exception('Input is error')
    exit(0)

    ####根据服务名字获取最新镜像tag
    def get_tags(self,q):
    req_url = '%s/api/repositories/%s/tags?' % (self.url, q)
    try:
    r = self.session.get(req_url, headers=self.header)
    if r.status_code == 200:
    return r.text
    except:
    raise Exception('Input is error')
    exit(0)

    def main(url, auth):
    project_name='test' ###工程名字
    version='9.6.0' ####版本号
    # start = time()
    project_id=-1
    tag_last=[]
    try:
    # begin开始
    harbor = HarborAapi('xxxxxxxxx', auth)
    harbor.setting()

    #### 根据传入的project_name 获取 project_id
    projects = json.loads(harbor.get_projects())
    for i in range(0,len(projects)):
    if projects[i]['name'] == project_name :
    project_id=projects[i]['project_id']
    break

    #####
    if project_id != -1:
    print("根据project_id 和 version查找所需要的服务")
    servcie_tags_list=json.loads(harbor.get_version_image(project_id,version))
    find_res=''
    if len(servcie_tags_list):

    for i in range(0,len(servcie_tags_list)):
    q=servcie_tags_list[i]['name']
    tags_list= json.loads(harbor.get_tags(q))
    ###排序取最大
    aa = []
    for j in range(0,len(tags_list)):
    tag = tags_list[j]['name']
    if tags_list[j]['name'] !='latest':
    aa.append(int(tag))

    ####获取最新版本号
    aa.sort()
    latest_version=aa[-1]
    ########## 获取服务名字 获取服务名字
    service_name=re.split(r'(\d+)',str.split(q,'/')[1])[0]
    tmp_service_latest_version=service_name+"="+str(latest_version)
    find_res=find_res + tmp_service_latest_version+'\r\n'
    print("""你今天需要发布的版本号:""")
    print(find_res)

    except:
    # end = time()
    # allTime = end - start
    # traceback.print_exc()
    print('输入信息不正确!')

    if __name__ == '__main__':
    auth = HTTPBasicAuth('admin', 'xxxxx')
    url = 'xxxxxx'
    main(url, auth)

python 镜像仓库获取最新版本号的更多相关文章

  1. maven设置每次构建获取最新版本号

    build.gradle中的依赖是通过设置maven依赖实现.我们知道,maven可以说是通过一个坐标定位来确定唯一一个包的,所说的坐标定位分别是groupId,artifactId和version三 ...

  2. Docker 镜像&仓库 获取及推送镜像

    docker查看.删除镜像 docker镜像存储位置: /var/lib/docker 查看docker信息也可以查看保存位置 docker info 1.列出镜像 docker images -aa ...

  3. Python爬虫案例-获取最新的中国行政区域划分

    源网页:中国统计局标准 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/ 打开网页后可以分析出行政区域划分共分为5层 根据传入参数,生成网页 ...

  4. 我了解到的新知识之----如何使用Python获取最新外汇汇率信息

    这个需求本来是来源于公司同事工作中需求,用户需要使用数据分析工具Power BI抓取多页的中国银行官网上当天的外汇数据.但是没能研究出来. 我就开始在网络上找关于使用python来抓取当天汇率的案例分 ...

  5. 【Selenium + Python】之如何获取最新的报告以及os.path.getmtime与os.path.getctime的区别

    import os def new_file(test_dir): #列举test_dir目录下的所有文件(名),结果以列表形式返回. lists=os.listdir(test_dir) #sort ...

  6. k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)

    k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...

  7. Python获取最新电影的信息

    这次将从电影天堂获取最新的电影的详细信息,这里电影的信息罗列的比较详细. 本来只是想获取电影的迅雷链接,然后用迅雷去下载.但看到这里的电影的信息比较完整和详细,忍不住把所有信息都爬取下来了. 下图是& ...

  8. 使用镜像仓库托管自己构建的Docker镜像

    自己构建的Docker镜像,默认存储在本机中,Docker有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神. 本文介绍如何使用GitHub托管Dockerfile:使用 ...

  9. Docker镜像的获取与删除

    Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Dicker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库 ...

随机推荐

  1. Android开发----RecyclerView视图的学习

    RecyclerView RecyclerView是什么? RecyclerView是如今Android开发中最常用的控件,其相较于ListView和GridView的功能更为强大,优化了两者的各种不 ...

  2. 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录

    目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...

  3. 执行df hang住

    突然有一天发现df执行卡住了,一直不显示结果. $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 221G 100G 121G ...

  4. C++ STL:std::unorderd_map 物理结构详解

    拉链法的 unordered_map 和你想象中的不一样 根据数组+拉链法的描述,我们很快能想到下面这样的拉链法实现的哈希表,但真的是这样吗?一起看下源码里的实现是怎么样的. 深入STL源码 代码不会 ...

  5. JavaScript闭包的那些事

    JavaScript闭包 1.函数在JavaScript中的地位 在介绍闭包之前,可以先聊聊函数在JavaScript中的地位,因为闭包的存在是与函数息息相关的. JavaScript之所以可以称之为 ...

  6. 诗和远方-target

    学习也是这样:不以结婚为目的的谈恋爱,都是耍流氓!

  7. SQLite 基础不扎实造成的:error code 19: constraint failed

    感谢大佬:https://www.cnblogs.com/flintlovesam/p/5241866.html (https://www.cnblogs.com/flintlovesam/p/524 ...

  8. 直播流媒体ums

    准备工具 下载  UltrantMediaServer服务器 FlashMediaLiveEncoder测试直播工具 第一步 安装 UltrantMediaServer服务器 第二步 打开网也输入   ...

  9. iOS团队代码规范

    iOS团队代码规范 工程之始可能需要的工具: 1.使用CocoaPods类库管理工具.CocoaPods安装和使用教程. 2.下载安装注释插件VVDocumenter-Xcode. 一.项目结构管理 ...

  10. Spark算子 - reduce

    释义 reduce将partition内所有记录最终计算成1个记录,结果类型与reduce 时数据类型一致 方法签名如下: def reduce(f: (T, T) => T): T = wit ...