Chore: Upgrade Jenkins-job-builder to 6.3.0
[releng/global-jjb.git] / jenkins-admin / create_jenkins_global_env_vars.py
1 #!/usr/bin/env python
2
3 import argparse
4 import configparser
5 import sys
6 import os
7 import ruamel.yaml
8 yaml = ruamel.yaml.YAML()
9
10 kvlist = []
11 output = {}
12 envdict = {"env":kvlist}
13
14 def dir_path(path):
15     if os.path.isdir(path):
16         return path
17     else:
18         raise argparse.ArgumentTypeError(f"readable_dir:{path} is not a valid path")
19
20 def parse_arguments():
21     casc_d_dir = "/var/lib/jenkins/casc.d/community.d"
22     parser = argparse.ArgumentParser(
23         description='Create jcasc yaml from path to jenkins config dir.')
24     parser.add_argument('--path', type=dir_path,
25                         help="Path to jenkins-admin directory")
26     parser.add_argument(
27         "-s", "--sandbox",
28         help="Is configuration being created for a sandbox",
29         dest="sandbox", action = "store_true"
30     )
31     parser.add_argument(
32         "--outputvars",
33         type=argparse.FileType("w"),
34         default="{}/jenkins_global_envvars.yaml".format(casc_d_dir),
35         help="Optional custom location for jenkins_global_envvars.yaml",
36     )
37     return parser.parse_args()
38
39 def global_vars(global_var_file):
40     with open(global_var_file) as myfile:
41         for line in myfile:
42             name, var = line.partition("=")[::2]
43             varstripped = var.strip()
44             kvlist.append({"key": name, "value": varstripped})
45     output.update({'jenkins':
46                    {'globalNodeProperties':
47                        [{'envVars':envdict}]
48                    }
49                   })
50     yaml.dump(output, parsed_args.outputvars)
51
52
53 parsed_args = parse_arguments()
54 path = (parsed_args.path)
55 global_var_file = ("{}/global-vars-production.sh".format(parsed_args.path))
56 if parsed_args.sandbox:
57     global_var_file = ("{}/global-vars-sandbox.sh".format(parsed_args.path))
58
59 global_vars(global_var_file)