python3实现定时定量删除harbor v2.0 的镜像

需求: harbor测试产生的容器每天新增的速度太快,太多了,每天定时删除,脚本如下;

import requests
import base64
from loguru import logger
logger.add("harbro_del.log", rotation="100 MB")

cangku = "da-test"
xiangmu = []
xianshi = 30
Page = 1
headers = {
    
    
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36"
}

# ID_name_list = []
ID_list = {
    
    }
timct_taim = []
# ID_key = []
# print(xiangmu[5])
# while True:
def  xiangmu1():
    for i in range(10):
        url = "https://regtry.bu.com/api/v2.0/projects/da-test/repositories?page_size=100&page={}".format(i)
        response = requests.get(url, headers=headers)
        dat_sdfji = response.json()
        if len(dat_sdfji) == 0:
            break
        for i in dat_sdfji:
            sss= i["name"]
            oksdf = sss.split('/')
            xiangmu.append(oksdf[1])

xiangmu1()

for oks in xiangmu:
    if oks == "php" or oks == "openresty" or  oks  == "alpine" or oks == "golang":
        continue
    Page +=1
    ID_key = []
    try:
       for i in  range(2,12):
        url = "https://regtry.bu.com/api/v2.0/projects/{}/repositories/{}/artifacts?with_tag=false&with_scan_overview=true&with_label=true&page_size={}&page={}".format(
          cangku, xiangmu[Page], xianshi, i)
        print(url)
        response = requests.get(url, headers=headers)
        dat_sdfji = response.json()
        # print(dat_sdfji)
        if len(dat_sdfji) != 0:
          for i in dat_sdfji:
            # print(i["digest"])
            creat_time = i["extra_attrs"]["created"]
            timct_taim.append(creat_time)
            # ID_name_list.append(xiangmu[Page])
            ID_key.append(i["digest"])
            # print(ID_key)
            ID_name = xiangmu[Page]
            ID_list[ID_name]= ID_key
    except:
        print('11111')



def login():
    headers = {
    
    "Content-Type": "application/json;charset=UTF-8"}
    """获取token"""
    data = {
    
    "principal": "admin",
            "password": "123456"
            }
    url = "https://regtry.bu.com/c/login"

    r = requests.post(url=url, json=data, headers=headers)
    # 将获取到的token返回
    return r.headers["X-Harbor-Csrf-Token"]



def delete_image(del_xiangmu, del_id):
    username = "admin"
    password = "123456"
    user_info_str = username + ":" + password
    user_info = base64.b64encode(user_info_str.encode())
    header_info = {
    
    
        "Authorization" : "Basic " + user_info.decode(),
        "X-Harbor-CSRF-Token": login()
    }
    #
    url = "https://regtry.bu.com/api/v2.0/projects/da-test/repositories/{}/artifacts/{}".format(del_xiangmu,del_id)

    r = requests.delete(url=url,  headers=header_info)
    print(r.status_code)
    print(url)
    if r.status_code == 200:
        logger.debug("{}-{}删除成功".format(del_xiangmu, del_id))

for i in ID_list:
    for i2 in ID_list[i]:
        delete_image(i, i2)

在这里插入图片描述
加一个周期计划任务即可…

猜你喜欢

转载自blog.csdn.net/weixin_43606975/article/details/127908535
今日推荐