// 刷新镜像列表
func (imageService *ImageService) RefreshImageList(image autocode.Image) (err error) {// 先清空现有images表数据err = global.GVA_DB.Delete(&[]autocode.Image{}, "1=1").Errorvar image_slice []autocode.Image// 获取所有project http://192.168.xxx.xxx:8081/api/v2.0/projects?page_size=100000// 根据project获取所有repository  http://192.168.xxx.xxx:8081/api/v2.0/projects/test/repositories?page_size=100000// 根据repository获取所有的artifact http://192.168.xxx.xxx:8081/api/v2.0/projects/test/repositories/zhangxueliang%252Fmyapp/artifacts?pageSize=100000// 【参数不详】根据artifact获取所有的tag http://192.168.xxx.xxx:8081/api/v2.0/projects/test/repositories/zhangxueliang%252Fmyapp/artifacts/xxx/tags?pageSize=100000// 获取所有project http://192.168.xxx.xxx:8081/api/v2.0/projects?page_size=100000project_url := "http://192.168.xxx.xxx:8081/api/v2.0/projects?page_size=100000"project_slice := []string{}repository_slice := []string{}tag_slice := []string{}var project_map_arr []map[string]stringvar repository_map_arr []map[string]stringvar artifact_map_arr []map[string]interface{}project_resp, project_err := http.Get(project_url)if project_err != nil {err = project_errreturn err}defer project_resp.Body.Close()project_resp_body, _ := ioutil.ReadAll(project_resp.Body)// project_resp_body_jsonstr := string(project_resp_body)// fmt.Printf(">>>>>>>>>>>>>>>>>>>>>>>>> %v \n", project_resp_body_jsonstr)json.Unmarshal(project_resp_body, &project_map_arr)for _, p := range project_map_arr {project_name := p["name"]project_slice = append(project_slice, project_name)// 根据project获取所有repository  http://192.168.xxx.xxx:8081/api/v2.0/projects/test/repositories?page_size=100000repository_url := fmt.Sprintf("http://192.168.xxx.xxx:8081/api/v2.0/projects/%v/repositories?page_size=100000", project_name)repository_resp, repository_err := http.Get(repository_url)if repository_err != nil {return repository_err}defer repository_resp.Body.Close()repository_resp_body, _ := ioutil.ReadAll(repository_resp.Body)json.Unmarshal(repository_resp_body, &repository_map_arr)for _, r := range repository_map_arr {rname := r["name"]firstIdx := strings.Index(rname, "/")repository_name := rname[firstIdx+1:]repository_slice = append(repository_slice, repository_name)// 根据repository获取所有的artifact http://192.168.xxx.xxx:8081/api/v2.0/projects/test/repositories/zhangxueliang%252Fmyapp/artifacts?pageSize=100000// "test/zhangxueliang/myapp"r_name := strings.Replace(repository_name, "/", "%252F", -1)artifact_url := fmt.Sprintf("http://192.168.xxx.xxx:8081/api/v2.0/projects/%v/repositories/%v/artifacts?pageSize=100000", project_name, r_name)artifact_resp, artifact_err := http.Get(artifact_url)if artifact_err != nil {return artifact_err}defer artifact_resp.Body.Close()artifact_resp_body, _ := ioutil.ReadAll(artifact_resp.Body)json.Unmarshal(artifact_resp_body, &artifact_map_arr)for _, a := range artifact_map_arr {if a != nil && a["tags"] != nil {tags := a["tags"].([]interface{})tag_map := tags[0].(map[string]interface{})tag_name := tag_map["name"].(string)tag_slice = append(tag_slice, tag_name)image = autocode.Image{HarborUrl:      "http://192.168.xxx.xxx:8081",HarborUser:     "admin",HarborPwd:      "123456pwd",ImageName:      repository_name,ImageTagName:   tag_name,HarborProjName: project_name,AppName:        project_name,}image_slice = append(image_slice, image)}}}}// fmt.Printf(">>>>>>>>>>>>>>>>>>>>>>>>> %v \n", project_slice)// fmt.Printf(">>>>>>>>>>>>>>>>>>>>>>>>> %v \n", repository_slice)// fmt.Printf(">>>>>>>>>>>>>>>>>>>>>>>>> %v \n", tag_slice)// err = global.GVA_DB.Save(&image).Error// 批量插入,提高性能err = global.GVA_DB.CreateInBatches(&image_slice, 100).Errorreturn err
}

go gin gorm获取harbor项目,镜像,tag代码示例相关推荐

  1. 【Groovy】map 集合 ( map 集合定义 | 通过 getClass 函数获取 map 集合的类型 | 代码示例 )

    文章目录 一.map 集合定义 二.获取 map 集合类型 三.代码示例 一.map 集合定义 声明键值对 , 其中 键 Key 可以 不使用引号 , 可以 使用单引号 '' , 也可以 使用双引号 ...

  2. 如何获取Harbor的带tag的镜像清单

    博客主页:https://tomcat.blog.csdn.net 博主昵称:农民工老王 主要领域:Java.Linux.K8S 期待大家的关注

  3. repo 获取各个库的tag代码或者分支代码

    关于mainfest.xml中的参数格式和说明,可以自己查阅,此处不详细写,我们知道project中的reversion可以指定分支,tag,commitid等,那么如何书写呢? 首先克隆mainfe ...

  4. Java客户端操作zookeeper:获取/节点的子节点代码示例

  5. java 获取dataset_Java OHLCDataset.getX方法代码示例

    import org.jfree.data.xy.OHLCDataset; //导入方法依赖的package包/类 /** * Generates a tooltip text item for a ...

  6. java获取textfield_Java TextField.getText方法代码示例

    import com.codename1.ui.TextField; //导入方法依赖的package包/类 public void onLoginAction(Form f) { final Tex ...

  7. ABAP:增强篇-MIGO过账增强之CHECK方法获取行项目

    MIGO中做PO过账的时候,常常需要在MB_MIGO_BADI~CHECK方法里面写代码,这个方法只有两个参数,一个行号,一个返回报错消息 因此如果需要对行项目上的值做检查,则需要获取到行项目上的数据 ...

  8. Gin+Gorm+sessions 搭建 golang web项目

    Gin是用Go(Golang)编写的HTTP web框架.它具有类似Martini的API,但性能比Martini快40倍 Gorm,Golang 出色的ORM库 sessions,具有多后端支持的用 ...

  9. java项目打镜像_docker通过dockerfile打java项目镜像

    环境:centos7 思路:java -jar 启动的项目打包成docker images进行运行 创建dockerfile-->创建shell脚本-->打包images 1.docker ...

最新文章

  1. Java并发编程题库
  2. Oracle通用分页包
  3. Ciruy英雄谭 Chapter 3 杂谈
  4. python计算选手最后得分并取出前三名_MySQL中查询获取每个班级成绩前三名的学生信息...
  5. Php 安装 zend_loader,在Linux系统中为PHP5.x安装Zend Guard Loader
  6. cocos2dx基础篇(24)——基本动画CCAnimation/CCAnimate
  7. 学习JavaScript原型应用
  8. KKR创始人亨利·克拉维斯:像实业家那样思考和行动
  9. 简单c语言程序例子与运行结果图,C语言程序第一次作业
  10. MySQL数据库定期自动备份(定时任务)
  11. myeclipse linux 安装,安装MyEclipse
  12. kubernetes集群中的port、targetPort、nodePort和containerPort区别
  13. html5知识点:HTML5新特性
  14. anaconda 创建虚拟环境、激活,使用的基本方法及安装包的基本方法
  15. 关于日历实现代码里0x04bd8, 0x04ae0, 0x0a570的说明
  16. window服务安装、卸载
  17. IT老兵不死:柳传志隐退留下三大愿景
  18. 雷达原理---脉冲雷达和连续波雷达
  19. H5移动端下拉 - mobileSelect
  20. 视频:《满城尽带黄金甲》精彩预告片曝光

热门文章

  1. python顺序结构实验_Python程序设计实验报告二:顺序结构程序设计(验证性实验)...
  2. php如何知道服务器剩余空间,远程简单地获得每台服务器的cpu与memory使用情况
  3. Python 程序打包 -- 使用pyinstaller
  4. Debug shell: Syntax error: “(“ unexpected
  5. 【机器学习】Auto-Sklearn:使用 AutoML 加速你的机器学习模型
  6. 【深度学习】你不知道的车牌识别系统
  7. 【学术相关】RSPapers | 工业界推荐系统论文合集
  8. 好玩的deep dream(清晰版,pytorch完整代码)
  9. 推荐系统中的Bias/Debias大全
  10. 直播技术:从性能参数到业务大数据,浅谈直播CDN服务监控