diff options
| -rw-r--r-- | filter_plugins/oo_filters.py | 17 | ||||
| -rw-r--r-- | roles/openshift_common/tasks/main.yml | 6 | 
2 files changed, 22 insertions, 1 deletions
diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py index 3dc3f2fe9..cd67b69a5 100644 --- a/filter_plugins/oo_filters.py +++ b/filter_plugins/oo_filters.py @@ -710,6 +710,22 @@ class FilterModule(object):          return retval +    @staticmethod +    def oo_image_tag_to_rpm_version(version): +        """ Convert an image tag string to an RPM version if necessary +            Empty strings and strings that are already in rpm version format +            are ignored. + +            Ex. v3.2.0.10 -> -3.2.0.10 +        """ +        if not isinstance(version, basestring): +            raise errors.AnsibleFilterError("|failed expects a string or unicode") + +        if version.startswith("v"): +            version = "-" + version.replace("v", "") + +        return version +      def filters(self):          """ returns a mapping of filters to methods """          return { @@ -738,4 +754,5 @@ class FilterModule(object):              "oo_31_rpm_rename_conversion": self.oo_31_rpm_rename_conversion,              "oo_pods_match_component": self.oo_pods_match_component,              "oo_get_hosts_from_hostvars": self.oo_get_hosts_from_hostvars, +            "oo_image_tag_to_rpm_version": self.oo_image_tag_to_rpm_version,          } diff --git a/roles/openshift_common/tasks/main.yml b/roles/openshift_common/tasks/main.yml index 541efe27a..b6074ff64 100644 --- a/roles/openshift_common/tasks/main.yml +++ b/roles/openshift_common/tasks/main.yml @@ -28,8 +28,12 @@        use_manageiq: "{{ openshift_use_manageiq | default(None) }}"        data_dir: "{{ openshift_data_dir | default(None) }}" +# Using oo_image_tag_to_rpm_version here is a workaround for how +# openshift_version is set.  That value is computed based on either RPM +# versions or image tags.  openshift_common's usage requires that it be a RPM +# version and openshift_cli expects it to be an image tag.  - name: Install the base package for versioning -  action: "{{ ansible_pkg_mgr }} name={{ openshift.common.service_type }}{{ openshift_version | default('') }} state=present" +  action: "{{ ansible_pkg_mgr }} name={{ openshift.common.service_type }}{{ openshift_version | default('') | oo_image_tag_to_rpm_version }} state=present"    when: not openshift.common.is_containerized | bool  # This invocation also updates the version facts which are necessary  | 
