diff options
Diffstat (limited to 'roles')
3 files changed, 63 insertions, 25 deletions
| diff --git a/roles/openshift_sanitize_inventory/filter_plugins/openshift_logging.py b/roles/openshift_sanitize_inventory/filter_plugins/openshift_logging.py deleted file mode 100644 index d42c9bdb9..000000000 --- a/roles/openshift_sanitize_inventory/filter_plugins/openshift_logging.py +++ /dev/null @@ -1,25 +0,0 @@ -''' - Openshift Logging class that provides useful filters used in Logging. - - This should be removed after map_from_pairs is no longer used in __deprecations_logging.yml -''' - - -def map_from_pairs(source, delim="="): -    ''' Returns a dict given the source and delim delimited ''' -    if source == '': -        return dict() - -    return dict(item.split(delim) for item in source.split(",")) - - -# pylint: disable=too-few-public-methods -class FilterModule(object): -    ''' OpenShift Logging Filters ''' - -    # pylint: disable=no-self-use, too-few-public-methods -    def filters(self): -        ''' Returns the names of the filters provided by this class ''' -        return { -            'map_from_pairs': map_from_pairs -        } diff --git a/roles/openshift_sanitize_inventory/filter_plugins/openshift_sanitize_inventory.py b/roles/openshift_sanitize_inventory/filter_plugins/openshift_sanitize_inventory.py new file mode 100644 index 000000000..d8515528c --- /dev/null +++ b/roles/openshift_sanitize_inventory/filter_plugins/openshift_sanitize_inventory.py @@ -0,0 +1,43 @@ +import re + +''' + Openshift Sanitize inventory class that provides useful filters used in Logging. +''' + + +# This should be removed after map_from_pairs is no longer used in __deprecations_logging.yml +def map_from_pairs(source, delim="="): +    ''' Returns a dict given the source and delim delimited ''' +    if source == '': +        return dict() + +    return dict(item.split(delim) for item in source.split(",")) + + +def vars_with_pattern(source, pattern=""): +    ''' Returns a list of variables whose name matches the given pattern ''' +    if source == '': +        return list() + +    var_list = list() + +    var_pattern = re.compile(pattern) + +    for item in source: +        if var_pattern.match(item): +          var_list.append(item) + +    return var_list + + +# pylint: disable=too-few-public-methods +class FilterModule(object): +    ''' OpenShift Logging Filters ''' + +    # pylint: disable=no-self-use, too-few-public-methods +    def filters(self): +        ''' Returns the names of the filters provided by this class ''' +        return { +            'map_from_pairs': map_from_pairs, +            'vars_with_pattern': vars_with_pattern +        } diff --git a/roles/openshift_sanitize_inventory/tasks/unsupported.yml b/roles/openshift_sanitize_inventory/tasks/unsupported.yml index 24e44ea85..9059cf1ea 100644 --- a/roles/openshift_sanitize_inventory/tasks/unsupported.yml +++ b/roles/openshift_sanitize_inventory/tasks/unsupported.yml @@ -10,3 +10,23 @@        Starting in 3.6 openshift_use_dnsmasq must be true or critical features        will not function. This also means that NetworkManager must be installed        enabled and responsible for management of the primary interface. + +- set_fact: +    __using_dynamic: True +  when: +  - hostvars[inventory_hostname][item] in ['dynamic'] +  with_items: +  - "{{ hostvars[inventory_hostname] | vars_with_pattern(pattern='openshift_.*_storage_kind') }}" + +- name: Ensure that dynamic provisioning is set if using dynamic storage +  when: +  - not openshift_master_dynamic_provisioning_enabled | default(false) | bool +  - not openshift_cloudprovider_kind is defined +  - __using_dynamic | bool +  fail: +    msg: |- +      Using a storage kind of 'dynamic' without enabling dynamic provisioning nor +      setting a cloud provider will cause generated PVCs to not be able to bind as +      intended. Either update to not use a dynamic storage or set +      openshift_master_dynamic_provisioning_enabled to True and set an +      openshift_cloudprovider_kind. | 
