@@ -15,8 +15,8 @@ def read_repos_data():
1515 'r' ) as file :
1616 data = yaml .safe_load (file )
1717 ansible_repositories = data ['source_repositories' ]
18-
19- return terraform_repositories , ansible_repositories
18+ maintained_releases = data [ 'maintained_releases' ]
19+ return terraform_repositories , ansible_repositories , maintained_releases
2020
2121
2222def get_repos_diff (tf_repos , ans_repos ):
@@ -65,8 +65,18 @@ def get_mismatched_repos(tf_repos, ans_repos, repos_missing):
6565 return list (set (mismatched_repos ).difference (set (repos_missing )))
6666
6767
68+ def validate_source_repositories (source_repos , maintained_releases ):
69+ issues = []
70+ maintained_set = {str (r ) for r in maintained_releases }
71+ for reponame , repodata in source_repos .items ():
72+ synced_releases = [str (r ) for r in repodata .get ('synced_releases' , [])]
73+ invalid_releases = set (synced_releases ) - maintained_set
74+ if invalid_releases :
75+ issues .append (f'Repo "{ reponame } " is trying to sync releases that are not maintained: { sorted (invalid_releases )} ' )
76+ return issues
77+
6878def main ():
69- terraform_repos , ansible_repos = read_repos_data ()
79+ terraform_repos , ansible_repos , maintained_releases = read_repos_data ()
7080
7181 repos_missing = get_repos_diff (terraform_repos , ansible_repos )
7282
@@ -80,7 +90,13 @@ def main():
8090 'the Ansible source-repositories and the Terraform tfvars: '
8191 f'{ mismatched_repos } ' )
8292
83- return len (repos_missing ) > 0 or len (mismatched_repos ) > 0
93+ source_repos_issues = validate_source_repositories (ansible_repos , maintained_releases )
94+ for issue in source_repos_issues :
95+ print (issue )
96+
97+ if repos_missing or mismatched_repos or source_repos_issues :
98+ return 1
99+ return 0
84100
85101
86102if __name__ == "__main__" :
0 commit comments