@@ -11,57 +11,66 @@ def generate_init(init_path):
1111 init_path = init_path + '/' + '__init__.py'
1212 open (init_path , mode = 'a' ).close ()
1313
14+
1415# generate_csv creates the experiment chartserviceversion manifest
1516def generate_csv (csv_parent_path , csv_name , csv_config , litmus_env ):
16-
17- csv_filename = csv_parent_path + '/' + csv_name + '.' + 'experiment_chartserviceversion.yaml'
17+ csv_filename = csv_parent_path + '/' + csv_name + '.chartserviceversion.yaml'
1818 # Load Jinja2 template
19- template = litmus_env .get_template ('./templates/experiment_chartserviceversion .tmpl' )
19+ template = litmus_env .get_template ('./templates/experiment-chartserviceversion .tmpl' )
2020 output_from_parsed_template = template .render (csv_config )
21+
2122 with open (csv_filename , "w" ) as f :
2223 f .write (output_from_parsed_template )
2324
25+
2426# generate_csv creates the category chartserviceversion manifest
2527def generate_csv_cat (csv_parent_path , csv_name , csv_config , litmus_env ):
26-
27- csv_filename = csv_parent_path + '/' + csv_name + '.' + 'category_chartserviceversion.yaml'
28+ csv_filename = csv_parent_path + '/' + csv_name + '.chartserviceversion.yaml'
2829
2930 # Load Jinja2 template
30- template = litmus_env .get_template ('./templates/category_chartserviceversion .tmpl' )
31+ template = litmus_env .get_template ('./templates/category-chartserviceversion .tmpl' )
3132 output_from_parsed_template = template .render (csv_config )
33+
3234 with open (csv_filename , "w" ) as f :
3335 f .write (output_from_parsed_template )
3436
37+
3538# generate_chart creates the experiment custom resource manifest
3639def generate_chart (chart_parent_path , chart_config , litmus_env ):
3740 chart_filename = chart_parent_path + '/' + 'experiment.yaml'
3841
3942 # Load Jinja2 template
40- template = litmus_env .get_template ('./templates/experiment_custom_resource .tmpl' )
43+ template = litmus_env .get_template ('./templates/experiment-custom-resource .tmpl' )
4144 output_from_parsed_template = template .render (chart_config )
45+
4246 with open (chart_filename , "w" ) as f :
4347 f .write (output_from_parsed_template )
4448
49+
4550# generate_rbac creates the rbac for the experiment
4651def generate_rbac (chart_parent_path , chart_config , litmus_env ):
4752 rbac_filename = chart_parent_path + '/' + 'rbac.yaml'
4853
4954 # Load Jinja2 template
50- template = litmus_env .get_template ('./templates/experiment_rbac .tmpl' )
55+ template = litmus_env .get_template ('./templates/experiment-rbac .tmpl' )
5156 output_from_parsed_template = template .render (chart_config )
57+
5258 with open (rbac_filename , "w" ) as f :
5359 f .write (output_from_parsed_template )
5460
61+
5562# generate_engine creates the chaos engine for the experiment
5663def generate_engine (chart_parent_path , chart_config , litmus_env ):
5764 engine_filename = chart_parent_path + '/' + 'engine.yaml'
5865
5966 # Load Jinja2 template
60- template = litmus_env .get_template ('./templates/experiment_engine .tmpl' )
67+ template = litmus_env .get_template ('./templates/experiment-engine .tmpl' )
6168 output_from_parsed_template = template .render (chart_config )
69+
6270 with open (engine_filename , "w" ) as f :
6371 f .write (output_from_parsed_template )
6472
73+
6574# generate_chaoslib creates the chaosLib for the experiment
6675def generate_chaoslib (chaoslib_parent_path , chaoslib_name , chaoslib_config , litmus_env ):
6776 chaoslib_filename = chaoslib_parent_path + '/' + chaoslib_name + '.py'
@@ -71,12 +80,14 @@ def generate_chaoslib(chaoslib_parent_path, chaoslib_name, chaoslib_config, litm
7180 # Load Jinja2 template
7281 template = litmus_env .get_template ('./templates/chaoslib.tmpl' )
7382 output_from_parsed_template = template .render (chaoslib_config )
83+
7484 with open (chaoslib_filename , "w" ) as f :
7585 f .write (output_from_parsed_template )
7686
7787 # generate __init__.py file
7888 generate_init (chaoslib_parent_path )
7989
90+
8091# generate_environment creates the environment for the experiment
8192def generate_environment (environment_parent_path , environment_config , litmus_env ):
8293 environment_filename = environment_parent_path + '/environment.py'
@@ -86,12 +97,14 @@ def generate_environment(environment_parent_path, environment_config, litmus_env
8697 # Load Jinja2 template
8798 template = litmus_env .get_template ('./templates/environment.tmpl' )
8899 output_from_parsed_template = template .render (environment_config )
100+
89101 with open (environment_filename , "w" ) as f :
90102 f .write (output_from_parsed_template )
91103
92104 # generate __init__.py file
93105 generate_init (environment_parent_path )
94106
107+
95108# generate_types creates the types.py for the experiment
96109def generate_types (types_parent_path , types_config , litmus_env ):
97110 types_filename = types_parent_path + '/types.py'
@@ -101,51 +114,60 @@ def generate_types(types_parent_path, types_config, litmus_env):
101114 # Load Jinja2 template
102115 template = litmus_env .get_template ('./templates/types.tmpl' )
103116 output_from_parsed_template = template .render (types_config )
117+
104118 with open (types_filename , "w" ) as f :
105119 f .write (output_from_parsed_template )
106120
107121 # generate __init__.py file
108122 generate_init (types_parent_path )
109123
124+
110125# generate_k8s_deployment creates the experiment kubernetes deployment manifest
111126def generate_k8s_deployment (k8s_parent_path , k8s_config , litmus_env ):
112127 k8s_filename = k8s_parent_path + '/' + 'test.yml'
113128
114129 # Load Jinja2 template
115- template = litmus_env .get_template ('./templates/experiment_k8s_deployment .tmpl' )
130+ template = litmus_env .get_template ('./templates/experiment-k8s-deployment .tmpl' )
116131 output_from_parsed_template = template .render (k8s_config )
132+
117133 with open (k8s_filename , "w" ) as f :
118134 f .write (output_from_parsed_template )
119135
136+
120137# generate_experiment creates the expriment.py file
121138def generate_experiment (experiment_parent_path , experiment_name , experiment_config , litmus_env ):
122139 experiment_filename = experiment_parent_path + '/' + experiment_name + '.py'
123140
124141 # Load Jinja2 template
125142 template = litmus_env .get_template ('./templates/experiment.tmpl' )
126143 output_from_parsed_template = template .render (experiment_config )
144+
127145 with open (experiment_filename , "w+" ) as f :
128146 f .write (output_from_parsed_template )
129147
130148 # generate __init__.py file
131149 generate_init (experiment_parent_path )
132150
151+
133152# generate_package creates the package manifest
134153def generate_package (package_parent_path , config , package_name , litmus_env ):
135154 package_filename = package_parent_path + '/' + package_name + '.package.yaml'
136155
137156 # Load Jinja2 template
138157 template = litmus_env .get_template ('./templates/package.tmpl' )
139158 output_package = template .render (config )
159+
140160 with open (package_filename , "w" ) as f :
141161 f .write (output_package )
142162
163+
143164# create_dir create new directory
144165def create_dir (path ):
145166 if os .path .isdir (path ) != True :
146167 os .makedirs (path )
147168
148- def generate_icon (chart_parent_path , litmus_root , image_name , litmus_env ):
169+
170+ def generate_icon (chart_parent_path , litmus_root , image_name ):
149171 src_dir = litmus_root + "/contribute/developer-guide/icons/"
150172 dst_dir = chart_parent_path + '/' + "icons/"
151173 create_dir (dst_dir )
@@ -154,6 +176,7 @@ def generate_icon(chart_parent_path, litmus_root, image_name, litmus_env):
154176 shutil .copy (jpgfile , dst_dir )
155177 os .rename (dst_dir + '/' + 'k8s.png' , dst_dir + '/' + image_name + '.png' )
156178
179+
157180def main ():
158181
159182 parser = argparse .ArgumentParser ()
@@ -178,17 +201,27 @@ def main():
178201 # get name and category
179202 entity_name = config ['name' ]
180203 category_name = config ['category' ]
204+
205+ # Replace underscore (_) with hyphen (-)
206+ # in entity_name_yaml and category_name_yaml
207+ # for chart filenames and k8s objects
208+ # like service-accounts, chart file names etc.
209+ entity_name_k8s = entity_name .replace ("_" , "-" )
210+ category_name_k8s = category_name .replace ("_" , "-" )
181211
182212 env = Environment (loader = FileSystemLoader ('./' ), trim_blocks = True , lstrip_blocks = True , autoescape = select_autoescape (['yaml' ]))
183213
184214 # store the litmus root from bootstrap folder
185215 litmus_root = os .path .abspath (os .path .join (".." , os .pardir ))
186216
187217 # initilise directories
188- exp_root_dir = litmus_root + '/experiments/' + '/' + config [ 'category' ]
218+ exp_root_dir = litmus_root + '/experiments/' + '/' + category_name
189219 create_dir (exp_root_dir )
190- experiment_root_dir = exp_root_dir + '/' + config ['name' ]
220+
221+ experiment_root_dir = exp_root_dir + '/' + entity_name
191222 create_dir (experiment_root_dir )
223+
224+ # Generate init files
192225 generate_init (exp_root_dir )
193226
194227 # if generate_type is chart, only generate the chart(top)-level CSV & package manifests
@@ -201,21 +234,21 @@ def main():
201234 if chartType == "category" or chartType == "all" :
202235
203236 # generate icon for category
204- generate_icon (chart_dir , litmus_root , category_name , env )
237+ generate_icon (chart_dir , litmus_root , category_name_k8s )
205238
206239 # generate category chartserviceversion
207- generate_csv_cat (chart_dir , category_name , config , env )
240+ generate_csv_cat (chart_dir , category_name_k8s , config , env )
208241
209242 # generate package
210- generate_package (chart_dir , config , category_name , env )
243+ generate_package (chart_dir , config , category_name_k8s , env )
211244
212245 if chartType == "experiment" or chartType == "all" :
213246
214247 # generate icon for category
215- generate_icon (chart_dir , litmus_root , entity_name , env )
248+ generate_icon (chart_dir , litmus_root , entity_name_k8s )
216249
217250 # generate experiment charts
218- generate_csv (chart_dir , entity_name , config , env )
251+ generate_csv (chart_dir , entity_name_k8s , config , env )
219252
220253 # generate experiment-custom-resource
221254 generate_chart (chart_dir , config , env )
@@ -245,13 +278,13 @@ def main():
245278 generate_init (experiment_root_dir )
246279
247280 # initialise chaosLib, environment and types directory
248- chaoslib_dir = litmus_root + '/chaosLib/litmus/' + config [ 'name' ] + '/lib'
249- environment_dir = litmus_root + '/pkg/' + config [ 'category' ] + '/environment'
250- types_dir = litmus_root + '/pkg/' + config [ 'category' ] + '/types'
281+ chaoslib_dir = litmus_root + '/chaosLib/litmus/' + entity_name + '/lib'
282+ environment_dir = litmus_root + '/pkg/' + category_name + '/environment'
283+ types_dir = litmus_root + '/pkg/' + category_name + '/types'
251284
252285 # create and generate __init__.py file in chaosLib experiment dir
253- create_dir (litmus_root + '/chaosLib/litmus/' + config [ 'name' ] )
254- generate_init (litmus_root + '/chaosLib/litmus/' + config [ 'name' ] )
286+ create_dir (litmus_root + '/chaosLib/litmus/' + entity_name )
287+ generate_init (litmus_root + '/chaosLib/litmus/' + entity_name )
255288
256289 # generate experiment.py
257290 generate_experiment (experiment_dir , entity_name , config , env )
@@ -268,7 +301,7 @@ def main():
268301 # generate k8s deployment
269302 generate_k8s_deployment (test_dir , config , env )
270303
271- generate_init (litmus_root + '/pkg/' + config [ 'category' ] )
304+ generate_init (litmus_root + '/pkg/' + category_name )
272305
273306 print ("experiment created successfully" )
274307 else :
0 commit comments