2022-06-17 21:56:08 +00:00
# Launches the builds of ISOs
import argparse
2022-06-19 04:00:02 +00:00
import datetime
2022-06-17 21:56:08 +00:00
from empanadas . common import *
from empanadas . common import _rootdir
from jinja2 import Environment , FileSystemLoader
2022-06-28 13:29:49 +00:00
parser = argparse . ArgumentParser ( description = " Generate Kubernetes Jobs to run lorax in mock and upload the result. Pipe into kubectl for the appropriate cluster " )
2022-06-17 21:56:08 +00:00
2022-06-28 13:29:49 +00:00
parser . add_argument ( ' --release ' , type = str , help = " Major Release Version: (8|9) " , required = True )
parser . add_argument ( ' --env ' , type = str , help = " environment: one of (eks|ext|all). presently jobs are scheduled on different kubernetes clusters " , required = True )
parser . add_argument ( ' --rc ' , action = ' store_true ' , help = " Release Candidate, Beta, RLN " )
2022-06-17 21:56:08 +00:00
results = parser . parse_args ( )
rlvars = rldict [ results . release ]
major = rlvars [ ' major ' ]
EXTARCH = [ " s390x " , " ppc64le " ]
EKSARCH = [ " amd64 " , " arm64 " ]
def run ( ) :
file_loader = FileSystemLoader ( f " { _rootdir } /templates " )
tmplenv = Environment ( loader = file_loader )
job_template = tmplenv . get_template ( ' kube/Job.tmpl ' )
arches = EKSARCH
if results . env == " ext " and results . env != " all " :
arches = EXTARCH
elif results . env == " all " :
arches = EKSARCH + EXTARCH
2022-07-11 08:06:26 +00:00
command = [ " build-iso " , " --release " , f " { results . release } " , " --isolation " , " simple " , " --hashed " ]
2022-06-21 00:12:20 +00:00
if results . rc :
command + = [ " --rc " ]
buildstamp = datetime . datetime . utcnow ( )
2022-06-19 04:00:02 +00:00
2022-06-17 21:56:08 +00:00
out = " "
2022-06-21 00:12:20 +00:00
for architecture in arches :
copy_command = ( f " aws s3 cp --recursive --exclude=* --include=lorax* "
f " /var/lib/mock/rocky- { major } -$(uname -m)/root/builddir/ "
f " s3://resf-empanadas/buildiso- { major } - { architecture } / { buildstamp . strftime ( ' %s ' ) } / "
)
2022-06-17 21:56:08 +00:00
out + = job_template . render (
2022-06-21 00:12:20 +00:00
architecture = architecture ,
2022-06-17 21:56:08 +00:00
backoffLimit = 4 ,
2022-06-21 00:12:20 +00:00
buildTime = buildstamp . strftime ( " %s " ) ,
command = [ command , copy_command ] ,
2022-06-28 14:04:23 +00:00
imageName = " ghcr.io/rocky-linux/sig-core-toolkit:latest " ,
2022-06-21 00:12:20 +00:00
jobname = " buildiso " ,
2022-06-17 21:56:08 +00:00
namespace = " empanadas " ,
2022-06-18 19:03:53 +00:00
major = major ,
2022-06-17 21:56:08 +00:00
restartPolicy = " Never " ,
)
print ( out )