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)