@@ -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,16 @@ 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+ for reponame , repodata in source_repos .items ():
71+ synced_releases = repodata .get ('synced_releases' , [])
72+ if not set (synced_releases ) <= set (maintained_releases ):
73+ issues .append (f"Repo \" { reponame } \" is trying to sync releases that are not maintained: { synced_releases } is not a subset of { maintained_releases } " )
74+ return issues
75+
6876def main ():
69- terraform_repos , ansible_repos = read_repos_data ()
77+ terraform_repos , ansible_repos , maintained_releases = read_repos_data ()
7078
7179 repos_missing = get_repos_diff (terraform_repos , ansible_repos )
7280
@@ -80,7 +88,13 @@ def main():
8088 'the Ansible source-repositories and the Terraform tfvars: '
8189 f'{ mismatched_repos } ' )
8290
83- return len (repos_missing ) > 0 or len (mismatched_repos ) > 0
91+ source_repos_issues = validate_source_repositories (ansible_repos , maintained_releases )
92+ for issue in source_repos_issues :
93+ print (issue )
94+
95+ assert len (repos_missing ) == 0
96+ assert len (mismatched_repos ) == 0
97+ assert len (source_repos_issues ) == 0
8498
8599
86100if __name__ == "__main__" :
0 commit comments