package_availability.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. """Check that required RPM packages are available."""
  2. from openshift_checks import OpenShiftCheck
  3. from openshift_checks.mixins import NotContainerizedMixin
  4. class PackageAvailability(NotContainerizedMixin, OpenShiftCheck):
  5. """Check that required RPM packages are available."""
  6. name = "package_availability"
  7. tags = ["preflight"]
  8. def is_active(self):
  9. """Run only when yum is the package manager as the code is specific to it."""
  10. return super(PackageAvailability, self).is_active() and self.get_var("ansible_pkg_mgr") == "yum"
  11. def run(self):
  12. rpm_prefix = self.get_var("openshift_service_type")
  13. if self._templar is not None:
  14. rpm_prefix = self._templar.template(rpm_prefix)
  15. group_names = self.get_var("group_names", default=[])
  16. packages = set()
  17. if "oo_masters_to_config" in group_names:
  18. packages.update(self.master_packages(rpm_prefix))
  19. if "oo_nodes_to_config" in group_names:
  20. packages.update(self.node_packages(rpm_prefix))
  21. args = {"packages": sorted(set(packages))}
  22. return self.execute_module_with_retries("check_yum_update", args)
  23. @staticmethod
  24. def master_packages(rpm_prefix):
  25. """Return a list of RPMs that we expect a master install to have available."""
  26. return [
  27. "{rpm_prefix}".format(rpm_prefix=rpm_prefix),
  28. "{rpm_prefix}-clients".format(rpm_prefix=rpm_prefix),
  29. "{rpm_prefix}-hyperkube".format(rpm_prefix=rpm_prefix),
  30. "bash-completion",
  31. "cockpit-bridge",
  32. "cockpit-docker",
  33. "cockpit-system",
  34. "cockpit-ws",
  35. "httpd-tools",
  36. ]
  37. @staticmethod
  38. def node_packages(rpm_prefix):
  39. """Return a list of RPMs that we expect a node install to have available."""
  40. return [
  41. "{rpm_prefix}".format(rpm_prefix=rpm_prefix),
  42. "{rpm_prefix}-node".format(rpm_prefix=rpm_prefix),
  43. "bind",
  44. "ceph-common",
  45. "dnsmasq",
  46. "docker",
  47. "firewalld",
  48. "flannel",
  49. "glusterfs-fuse",
  50. "iptables-services",
  51. "iptables",
  52. "iscsi-initiator-utils",
  53. "libselinux-python",
  54. "nfs-utils",
  55. "ntp",
  56. "openssl",
  57. "pyparted",
  58. "python-httplib2",
  59. "PyYAML",
  60. "yum-utils",
  61. ]