harbor API

官方swagger

swagger在线查看

harbor tag 清理

python程序

  1. import requests
  2. import json
  3. class RequestClient(object):
  4. def __init__(self, login_url, username, password):
  5. self.username = username
  6. self.password = password
  7. self.login_url = login_url
  8. self.session = requests.Session()
  9. self.login()
  10. def login(self):
  11. self.session.post(self.login_url, params={"principal": self.username, "password": self.password})
  12. class ClearHarbor(object):
  13. def __init__(self, harbor_domain, password, schema="https",
  14. username="admin"):
  15. self.schema = schema
  16. self.harbor_domain = harbor_domain
  17. self.harbor_url = self.schema + "://" + self.harbor_domain
  18. self.login_url = self.harbor_url + "/c/login"
  19. self.api_url = self.harbor_url + "/api"
  20. self.pro_url = self.api_url + "/projects"
  21. self.repos_url = self.api_url + "/repositories"
  22. self.username = username
  23. self.password = password
  24. self.client = RequestClient(self.login_url, self.username, self.password)
  25. def __fetch_pros_obj(self):
  26. # TODO
  27. self.pros_obj = self.client.session.get(self.pro_url).json()
  28. return self.pros_obj
  29. def fetch_pros_id(self):
  30. self.pros_id = []
  31. # TODO
  32. pro_res = self.__fetch_pros_obj()
  33. for i in pro_res:
  34. self.pros_id.append(i['project_id'])
  35. return self.pros_id
  36. def fetch_del_repos_name(self, pro_id):
  37. self.del_repos_name = []
  38. repos_res = self.client.session.get(self.repos_url, params={"project_id": pro_id})
  39. # TODO
  40. for repo in repos_res.json():
  41. if repo["tags_count"] > 30:
  42. self.del_repos_name.append(repo['name'])
  43. return self.del_repos_name
  44. def fetch_del_repos(self, repo_name):
  45. self.del_res = []
  46. tag_url = self.repos_url + "/" + repo_name + "/tags"
  47. # TODO
  48. tags = self.client.session.get(tag_url).json()
  49. tags_sort = sorted(tags, key=lambda a: a["created"])
  50. # print(tags_sort)
  51. del_tags = tags_sort[0:len(tags_sort) - 20]
  52. # print(del_tags)
  53. for tag in del_tags:
  54. del_repo_tag_url = tag_url + "/" + tag['name']
  55. print(del_repo_tag_url)
  56. del_res = self.client.session.delete(del_repo_tag_url)
  57. self.del_res.append(del_res)
  58. return self.del_res
  59. if __name__ == "__main__":
  60. harbor_domain = "harbor.agri-rd.com"
  61. password = "xxxxx"
  62. res = ClearHarbor(harbor_domain, password)
  63. # 循环所有的project id
  64. for i in res.fetch_pros_id():
  65. # 获取所有tag超过30的repos
  66. repos = res.fetch_del_repos_name(i)
  67. if repos:
  68. print(repos)
  69. for repo in repos:
  70. del_repos = res.fetch_del_repos(repo)
  71. print(del_repos)
  72. print("end")

删除tag 后 还需要 对磁盘空间进行清理

  1. # 进入docker-compose 目录
  2. docker-compose stop
  3. # 清理数据目录
  4. docker run -it --name gc --rm --volumes-from registry vmware/registry:2.6.2-photon garbage-collect /etc/registry/config.yml
  5. # 启动
  6. docker-compose start

harbor API 与tag 清理的更多相关文章

  1. Harbor api 操作

    harbor 的版本为 1.5.2 为 Harbor 配置 swagger 官网参考: https://github.com/goharbor/harbor/blob/v1.5.2/docs/conf ...

  2. (二十)VMware Harbor - API

    可以用swagger在线解析 http://editor.swagger.io/将swagger.yaml中的内容拷贝到里面即可. 官方文档说明链接如下:https://github.com/vmwa ...

  3. harbor清理存储

    harbor仓库中镜像按tag清理,删除tag后需要清理gc才能释放空间 #!/bin/bash set -e HARBOR_URL=127.0.0.1 HARBOR_PASSWD=harbor123 ...

  4. harbor自动清理镜像

    harbor定时清理镜像 ​ 分享下最近写harbor仓库镜像自动清理脚本思路,很长时间不写shell脚本,这次的脚本也是匆匆写的,还有很多可优化点,感兴趣的可以参考自己优化下,写的不完善地方也希望指 ...

  5. Harbor之Swagger REST API

    目录 Swagger介绍 Harbor Swagger预览 整合本地Harbor与Swagger Swagger介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTFu ...

  6. Docker镜像仓库Harbor之Swagger REST API整合配置

    转载自:https://cloud.tencent.com/developer/article/1010618 1.Swagger 介绍 Swagger 是一个规范和完整的框架,用于生成.描述.调用和 ...

  7. Harbor镜像删除回收?只看这篇

    最近,公司的技术平台,运维的破事儿颇多.Jira无法访问,ES堆内存不足,Jenkins频繁不工作..等等等,让我这个刚入门的小兵抓心脑肝,夜不能寐,关键时刻方恨经验薄弱呀!!一波未平,一波又起,这不 ...

  8. 构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境

    构建gitlab+Jenkins+harbor+kubernetes的DevOps持续集成持续部署环境 整个环境的结构图. 一.准备工作 gitlab和harbor我是安装在kubernetes集群外 ...

  9. harbor批量导出镜像

    工作中遇到一个问题,要把某个项目的harbor镜像库全部迁移到其他环境的harbor上,由于网络不通,只能导出来,传给同事,让同事导入到他们的harbor上: 记录下我的操作方法. 参考博客园的一篇博 ...

随机推荐

  1. Hive启动报错Terminal initialization failed; falling back to unsupported java.lang.Incomp

    这个报错需要删除hadoop目录下,需要删除下面目录下的文件,重启hadoop和hive即可 $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar

  2. C# WebBrowser使用 网络(二)

    WebBrowser 简单操作 Form 代码 public partial class Form1 : Form { public Form1() { InitializeComponent(); ...

  3. vs2015下载

    VS2015 专业版下载链接http://download.microsoft.com/download/B/8/9/B898E46E-CBAE-4045-A8E2-2D33DD36F3C4/vs20 ...

  4. HDU 6105 - Gameia | 2017 Multi-University Training Contest 6

    /* HDU 6105 - Gameia [ 非平等博弈 ] | 2017 Multi-University Training Contest 6 题意: Bob 可以把一个点和周围所有点都染黑,还有 ...

  5. my_note

    1.C# $ 内插字符串 Console.WriteLine($"The value of pi is {Math.PI}"); 替代string.format 2. switch ...

  6. linux系统编程--信号

    信号的概念 man 7 siganl  查看man手册 信号在我们的生活中随处可见, 如:古代战争中摔杯为号:现代战争中的信号弹:体育比赛中使用的信号枪......他们都有共性:1. 简单 2. 不能 ...

  7. (三)根据向导创建MFC工程,事件的添加和删除

    一,文档视图结构 文档:它是一个类,这个类专门用来存储数据 视图:它是一个类,这个类专门用来显示和修改数据 框架类:一个容器,这个容器装了视图 健完工程之后,类视图: 运行一下: 几个比较重要的函数 ...

  8. jQuery系列(二):jQuery的选择器

    css中的选择器有:

  9. vueApp打包

    本地打包测试 http-server是一个基于node.js的简单的,零配置的命令行http服务器.安装:npm install http-server -g使用:http-server [path] ...

  10. C语言基础语法之指向函数的指针

    指针是C语言的精髓,对于初学者来讲,指针是C语言语法学习中比较难的知识点,而这里面指向函数的指针更是不太容易理解. 下面给大家讲下怎样学习理解C语言中指向函数的指针及编程方法和使用例子. 注意:这是一 ...