github.com/rohankumardubey/proxyfs@v0.0.0-20210108201508-653efa9ab00e/ci/ansible/check_pinned_packages (about) 1 #!/usr/bin/env python 2 3 import json 4 import os 5 import subprocess 6 import sys 7 8 9 script_dir = os.path.abspath(os.path.dirname(__file__)) 10 json_path = os.path.join(script_dir, "chef_files", "packages", "rhel_ss.json") 11 12 with open(json_path, "r") as json_file: 13 versions_data = json.load(json_file) 14 15 everything_ok = True 16 for section, packages in versions_data.items(): 17 for package_info in packages: 18 if len(package_info) == 1: 19 continue 20 package, pinned_version = package_info 21 try: 22 yum_versions = subprocess.check_output( 23 "repoquery {} --queryformat '%{{vr}}'".format(package), 24 shell=True, stderr=subprocess.STDOUT) 25 except subprocess.CalledProcessError as e: 26 print("! Error checking {}: {}".format( 27 package, e.output.strip())) 28 everything_ok = False 29 continue 30 yum_versions = yum_versions.strip().split("\n") 31 if pinned_version not in yum_versions: 32 print("{} not ok! pinned: {} | found in yum: {}".format( 33 package, pinned_version, ", ".join(yum_versions))) 34 everything_ok = False 35 36 if everything_ok: 37 print("All pinned packages are installable") 38 else: 39 print("\nFinished with errors") 40 sys.exit(1)