33import argparse
44import uuid
55
6- def readTemplate (template ):
6+ def read_template (template ):
77 with open (template , "r" ) as stream :
88 try :
99 return yaml .safe_load (stream )
@@ -23,7 +23,7 @@ def update_names(yaml, item, appwrapper_name, cluster_name):
2323 lower_meta ["labels" ]["appwrapper.mcad.ibm.com" ] = appwrapper_name
2424 lower_meta ["name" ] = cluster_name
2525
26- def updateCustompodresources (item , cpu , memory , gpu , workers ):
26+ def update_custompodresources (item , cpu , memory , gpu , workers ):
2727 if 'custompodresources' in item .keys ():
2828 custompodresources = item .get ('custompodresources' )
2929 for resource in custompodresources :
@@ -44,6 +44,7 @@ def updateCustompodresources(item, cpu, memory, gpu, workers):
4444def update_affinity (spec , appwrapper_name ):
4545 node_selector_terms = spec .get ("affinity" ).get ("nodeAffinity" ).get ("requiredDuringSchedulingIgnoredDuringExecution" ).get ("nodeSelectorTerms" )
4646 node_selector_terms [0 ]["matchExpressions" ][0 ]["values" ][0 ] = appwrapper_name
47+ node_selector_terms [0 ]["matchExpressions" ][0 ]["key" ] = appwrapper_name
4748
4849def update_resources (spec , cpu , memory , gpu ):
4950 container = spec .get ("containers" )
@@ -74,24 +75,24 @@ def update_nodes(item, appwrapper_name, cpu, memory, gpu, workers):
7475 update_affinity (spec , appwrapper_name )
7576 update_resources (spec , cpu , memory , gpu )
7677
77- def generateAppwrapper (cpu , memory , gpu , workers , template ):
78- user_yaml = readTemplate (template )
78+ def write_user_appwrapper (user_yaml , appwrapper_name ):
79+ with open (f'{ appwrapper_name } .yaml' ,'w' ) as outfile :
80+ yaml .dump (user_yaml , outfile , default_flow_style = False )
81+
82+ def generate_appwrapper (cpu , memory , gpu , workers , template ):
83+ user_yaml = read_template (template )
7984 appwrapper_name , cluster_name = gen_names ()
8085 resources = user_yaml .get ("spec" ,"resources" )
8186 item = resources ["resources" ].get ("GenericItems" )[0 ]
8287 update_names (user_yaml , item , appwrapper_name , cluster_name )
83- updateCustompodresources (item , cpu , memory , gpu , workers )
88+ update_custompodresources (item , cpu , memory , gpu , workers )
8489 update_nodes (item , appwrapper_name , cpu , memory , gpu , workers )
85- writeUserAppwrapper (user_yaml , appwrapper_name )
86-
87- def writeUserAppwrapper (user_yaml , appwrapper_name ):
88- with open (f'{ appwrapper_name } .yaml' ,'w' ) as outfile :
89- yaml .dump (user_yaml , outfile , default_flow_style = False )
90+ write_user_appwrapper (user_yaml , appwrapper_name )
9091
9192def main ():
9293 parser = argparse .ArgumentParser (description = 'Generate user AppWrapper' )
9394 parser .add_argument ("--cpu" , type = int , required = True , help = "number of CPU(s) in a worker required for running job" )
94- parser .add_argument ("--memory" , required = True , help = "RAM required in a worker for running job" )
95+ parser .add_argument ("--memory" , type = int , required = True , help = "RAM required in a worker for running job, in GB " )
9596 parser .add_argument ("--gpu" ,type = int , required = True , help = "GPU(s) required in a worker for running job" )
9697 parser .add_argument ("--workers" , type = int , required = True , help = "How many workers are required in the cluster" )
9798 parser .add_argument ("--template" , required = True , help = "Template AppWrapper yaml file" )
@@ -103,7 +104,7 @@ def main():
103104 workers = args .workers
104105 template = args .template
105106
106- generateAppwrapper (cpu , memory , gpu , workers , template )
107+ generate_appwrapper (cpu , memory , gpu , workers , template )
107108
108109if __name__ == "__main__" :
109110 main ()
0 commit comments