2020-06-09 09:33:18 +02:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
import os
|
|
|
|
import base
|
|
|
|
from datetime import datetime
|
|
|
|
|
|
|
|
singularity_cmd = "singularity"
|
|
|
|
timestamp = datetime.now().strftime(r'%m%s')
|
|
|
|
|
|
|
|
def set_singularity_login_env(user, password):
|
|
|
|
os.environ.setdefault('SINGULARITY_DOCKER_USERNAME', user)
|
|
|
|
os.environ.setdefault('SINGULARITY_DOCKER_PASSWORD', password)
|
|
|
|
|
|
|
|
def singularity_push_to_harbor(harbor_server, sif_file, project, image, tag):
|
|
|
|
ret = base.run_command( [singularity_cmd, "push", sif_file, "oras://"+harbor_server + "/" + project + "/" + image+":"+ tag] )
|
|
|
|
|
|
|
|
def singularity_pull(out_file, from_sif_file):
|
2020-09-08 14:09:54 +02:00
|
|
|
ret = base.run_command( [singularity_cmd, "pull", "--allow-unsigned", out_file, from_sif_file] )
|
2020-06-09 09:33:18 +02:00
|
|
|
|
|
|
|
def push_singularity_to_harbor(from_URI, from_namespace, harbor_server, user, password, project, image, tag):
|
|
|
|
tmp_sif_file = image+timestamp+".sif"
|
|
|
|
set_singularity_login_env(user, password)
|
|
|
|
singularity_pull(tmp_sif_file, from_URI+"//"+from_namespace + image+":" + tag)
|
|
|
|
singularity_push_to_harbor(harbor_server, tmp_sif_file, project, image, tag)
|