Skip to content

Commit 1faa348

Browse files
committed
experiment: edit-prowjobs adds wg-k8s-infra-gcb to jobs
1 parent 0a8e859 commit 1faa348

File tree

1 file changed

+44
-19
lines changed

1 file changed

+44
-19
lines changed

experiment/edit-prowjobs.py

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@
2525
done, rather that developing a general purpose language to do this
2626
"""
2727

28-
import re
2928
import argparse
3029
import glob
30+
import re
31+
import sys
32+
3133
from os import path, walk
34+
3235
import ruamel.yaml
3336

3437
# Prow files that will be ignored
@@ -61,51 +64,69 @@ def setup_yaml():
6164
yaml.width = MAX_WIDTH
6265
return yaml
6366

64-
def edit_job_config(yaml, prow_job_file_name):
67+
def edit_job_config(yaml, prow_job_file_name, force_rewrite=False):
6568
with open(prow_job_file_name, "r") as job_fp:
6669
prow_config = yaml.load(job_fp)
6770

6871
def should_edit(job):
69-
return job["name"] == "a-specific-job-to-edit"
72+
image = job["spec"]["containers"][0]["image"]
73+
cluster = job["cluster"]
74+
uses_image_builder = image.startswith("gcr.io/k8s-testimages/image-builder")
75+
return uses_image_builder and cluster == "k8s-infra-prow-build-trusted"
76+
7077

7178
def edit(job):
72-
return job
79+
edited = False
80+
name = job["name"]
81+
print(f' handling job: {name}')
82+
annotations = job["annotations"]
83+
dashboard_list = re.split('[, ]+', annotations["testgrid-dashboards"])
84+
if 'wg-k8s-infra-gcb' not in dashboard_list:
85+
dashboard_list.append('wg-k8s-infra-gcb')
86+
annotations["testgrid-dashboards"] = ", ".join(dashboard_list)
87+
edited = True
88+
return edited
89+
90+
should_rewrite = force_rewrite
7391

7492
# For each presubmit, postsubmit, and periodic
7593
# presubmits -> <any repository> -> [{name: prowjob}]
7694
if "presubmits" in prow_config:
7795
for _, jobs in prow_config["presubmits"].items():
7896
for job in jobs:
79-
if should_edit(job):
80-
edit(job)
97+
if edit(job):
98+
should_rewrite=True
8199

82100
# postsubmits -> <any repository> -> [{name: prowjob}]
83101
if "postsubmits" in prow_config:
84102
for _, jobs in prow_config["postsubmits"].items():
85103
for job in jobs:
86-
if should_edit(job):
87-
edit(job)
104+
if edit(job):
105+
should_rewrite=True
88106

89107
# periodics -> [{name: prowjob}]
90108
if "periodics" in prow_config:
91109
for job in prow_config["periodics"]:
92-
if should_edit(job):
93-
edit(job)
110+
if edit(job):
111+
should_rewrite=True
94112

95113
# Dump ProwConfig to prowJobFile
96-
with open(prow_job_file_name, "w") as job_fp:
97-
yaml.dump(prow_config, job_fp)
98-
job_fp.truncate()
114+
if should_rewrite:
115+
print(f' writing {prow_job_file_name}')
116+
with open(prow_job_file_name, "w") as job_fp:
117+
yaml.dump(prow_config, job_fp)
118+
job_fp.truncate()
99119

100-
def main(prow_job_dir):
120+
def main(prow_job_dir, force_rewrite):
101121
yaml = setup_yaml()
102122
for f in glob.glob(f'{prow_job_dir}/**/*.yaml', recursive=True):
103123
if path.basename(f) not in PROW_BLACKLIST:
104124
try:
105-
print(f'editing {f}')
106-
edit_job_config(yaml, f)
107-
except:
108-
print(f'ERROR: could not edit {f}')
125+
print(f'processing config: {f}')
126+
edit_job_config(yaml, f, force_rewrite)
127+
except Exception as e:
128+
# e = sys.exc_info()[0]
129+
print(f'ERROR: could not edit {f}: {e}')
109130

110131
if __name__ == '__main__':
111132
PARSER = argparse.ArgumentParser(
@@ -114,6 +135,10 @@ def main(prow_job_dir):
114135
'--prow-job-dir',
115136
default='../config/jobs',
116137
help='Path to Prow Job Directory')
138+
PARSER.add_argument(
139+
'--force',
140+
default=True,
141+
help='Force rewrite of all job configs')
117142
ARGS = PARSER.parse_args()
118143

119-
main(ARGS.prow_job_dir)
144+
main(ARGS.prow_job_dir, ARGS.force)

0 commit comments

Comments
 (0)