set_version_facts.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """
  2. Ansible action plugin to set version facts
  3. """
  4. # pylint: disable=no-name-in-module, import-error, wrong-import-order
  5. from distutils.version import LooseVersion
  6. from ansible.plugins.action import ActionBase
  7. # pylint: disable=too-many-statements
  8. def set_version_facts_if_unset(version):
  9. """ Set version facts. This currently includes common.version and
  10. common.version_gte_3_x
  11. Args:
  12. version (string): version of openshift installed/to install
  13. Returns:
  14. dict: the facts dict updated with version facts.
  15. """
  16. facts = {}
  17. if version and version != "latest":
  18. version = LooseVersion(version)
  19. version_gte_3_7 = version >= LooseVersion('3.7')
  20. version_gte_3_8 = version >= LooseVersion('3.8')
  21. version_gte_3_9 = version >= LooseVersion('3.9')
  22. version_gte_3_10 = version >= LooseVersion('3.10')
  23. version_gte_3_11 = version >= LooseVersion('3.11')
  24. else:
  25. # 'Latest' version is set to True, 'Next' versions set to False
  26. version_gte_3_7 = True
  27. version_gte_3_8 = True
  28. version_gte_3_9 = True
  29. version_gte_3_10 = True
  30. version_gte_3_11 = False
  31. facts['openshift_version_gte_3_7'] = version_gte_3_7
  32. facts['openshift_version_gte_3_8'] = version_gte_3_8
  33. facts['openshift_version_gte_3_9'] = version_gte_3_9
  34. facts['openshift_version_gte_3_10'] = version_gte_3_10
  35. facts['openshift_version_gte_3_11'] = version_gte_3_11
  36. if version_gte_3_11:
  37. examples_content_version = 'v3.11'
  38. elif version_gte_3_10:
  39. examples_content_version = 'v3.10'
  40. elif version_gte_3_9:
  41. examples_content_version = 'v3.9'
  42. elif version_gte_3_8:
  43. examples_content_version = 'v3.8'
  44. else:
  45. examples_content_version = 'v3.7'
  46. facts['openshift_examples_content_version'] = examples_content_version
  47. return facts
  48. # pylint: disable=too-few-public-methods
  49. class ActionModule(ActionBase):
  50. """Action plugin to set version facts"""
  51. def run(self, tmp=None, task_vars=None):
  52. """Run set_version_facts"""
  53. result = super(ActionModule, self).run(tmp, task_vars)
  54. # Ignore settting self.task_vars outside of init.
  55. # pylint: disable=W0201
  56. self.task_vars = task_vars or {}
  57. result["changed"] = False
  58. result["failed"] = False
  59. result["msg"] = "Version facts set"
  60. version = self._task.args.get('version')
  61. result["ansible_facts"] = set_version_facts_if_unset(version)
  62. return result