python 镜像仓库获取最新版本号
#/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 镜像仓库获取最新版本号的更多相关文章
- maven设置每次构建获取最新版本号
build.gradle中的依赖是通过设置maven依赖实现.我们知道,maven可以说是通过一个坐标定位来确定唯一一个包的,所说的坐标定位分别是groupId,artifactId和version三 ...
- Docker 镜像&仓库 获取及推送镜像
docker查看.删除镜像 docker镜像存储位置: /var/lib/docker 查看docker信息也可以查看保存位置 docker info 1.列出镜像 docker images -aa ...
- Python爬虫案例-获取最新的中国行政区域划分
源网页:中国统计局标准 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2016/ 打开网页后可以分析出行政区域划分共分为5层 根据传入参数,生成网页 ...
- 我了解到的新知识之----如何使用Python获取最新外汇汇率信息
这个需求本来是来源于公司同事工作中需求,用户需要使用数据分析工具Power BI抓取多页的中国银行官网上当天的外汇数据.但是没能研究出来. 我就开始在网络上找关于使用python来抓取当天汇率的案例分 ...
- 【Selenium + Python】之如何获取最新的报告以及os.path.getmtime与os.path.getctime的区别
import os def new_file(test_dir): #列举test_dir目录下的所有文件(名),结果以列表形式返回. lists=os.listdir(test_dir) #sort ...
- k8s kubernetes 核心笔记 镜像仓库 项目k8s改造(含最新k8s v1.16.2版本)
k8s kubernetes 核心笔记 镜像仓库 项目k8s改造 2019/10/24 Chenxin 一 基本资料 一 参考: https://kubernetes.io/ 官网 https://k ...
- Python获取最新电影的信息
这次将从电影天堂获取最新的电影的详细信息,这里电影的信息罗列的比较详细. 本来只是想获取电影的迅雷链接,然后用迅雷去下载.但看到这里的电影的信息比较完整和详细,忍不住把所有信息都爬取下来了. 下图是& ...
- 使用镜像仓库托管自己构建的Docker镜像
自己构建的Docker镜像,默认存储在本机中,Docker有提供某些方式分享这些镜像,但不是主流的镜像分享方式,也有违于开源社区的共享精神. 本文介绍如何使用GitHub托管Dockerfile:使用 ...
- Docker镜像的获取与删除
Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认镜像仓库下载(默认使用Dicker Hub公共注册服务器中的仓库),用户也可以通过配置,使用自定义的镜像仓库 ...
随机推荐
- linux创建用户与登录提示motd与系统运行状态目录
目录 一:登录提示文件 二:linux创建用户 三:系统日志目录 四:保存系统运行状态的目录 一:登录提示文件 登录成功之后显示的信息. 进入文本编辑 /etc/motd 文件中内容,会在用户登录系统 ...
- 学习MyBatis必知必会(2)~MyBatis基本介绍和MyBatis基本使用
一.MyBatis框架基本介绍: 1.认识 MyBatis: MyBatis 是支持普通 SQL 查询,存储过程和高级映射的持久层框架,严格上说应该是一个 SQL 映射框架. 其前身是 iBatis, ...
- jstl split 分割字符串?
1. 在已经获得数据的前提下,对数据进行分割,分割后的结果是一个数组,可以通过数组获得我们需要的数据 2. value 是获得值 需要${} 的方式获取, var 是设置变量. var = " ...
- django之百度Ueditor富文本编辑器后台集成
Python3 + Django2.0 百度Ueditor 富文本编辑器的集成 百度富文本编辑器官网地址:http://fex.baidu.com/ueditor/ 疑问:为什么要二次集成? 答案:因 ...
- 带你读AI论文:NDSS2020 UNICORN: Runtime Provenance-Based Detector
摘要:这篇文章将详细介绍NDSS2020的<UNICORN: Runtime Provenance-Based Detector for Advanced Persistent Threats& ...
- JVM常用命令(九)
前面东西说完后,现在可以说一些和我们平时进行性能调优相关的东西了,那怎么看和我们JVM性能调优相关的东西呢,其实这对我们开发来说是一个比较头痛的问题,其实我们JDK官网给了一些我们相关的指令,我们可以 ...
- js-小知识点
强类型定义语言和弱类型定义语言1)强类型定义语言: 强制数据类型定义的语言.也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了.举个例子:如果你定义了一个整型 ...
- js将HTML中table导出到EXCEL word (只支持IE) 另用php 配合AJAX可以支持所有浏览器
转载请注明来源:https://www.cnblogs.com/hookjc/ <HTML> <HEAD> <title>WEB页面导出为EXC ...
- C++ XML解析之TinyXML
转载请注明来源:https://www.cnblogs.com/hookjc/ 使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析 ...
- 在zabbix中实现发送带有图片的邮件和微信告警
1 python实现在4.2版本zabbix发送带有图片的报警邮件 我们通常收到的报警,都是文字,是把动作中的消息内容当成了正文参数传给脚本,然后邮件或者微信进行接收,往往只能看到当前值,无法直观的获 ...