diff options
| author | Eric Wolinetz <ewolinet@redhat.com> | 2017-09-27 17:03:19 -0500 | 
|---|---|---|
| committer | Eric Wolinetz <ewolinet@redhat.com> | 2017-09-27 17:11:17 -0500 | 
| commit | 23c44b36cce3f944a07f4960aa1e1b58f6b12756 (patch) | |
| tree | c1556db4b6d788689438e44e51a5efd477ddda7b /roles | |
| parent | 3462d2dcf1a35d0cb81314de4cee44863e9cd85d (diff) | |
| download | openshift-23c44b36cce3f944a07f4960aa1e1b58f6b12756.tar.gz openshift-23c44b36cce3f944a07f4960aa1e1b58f6b12756.tar.bz2 openshift-23c44b36cce3f944a07f4960aa1e1b58f6b12756.tar.xz openshift-23c44b36cce3f944a07f4960aa1e1b58f6b12756.zip  | |
Checking if any openshift_*_storage_kind variables are set to dynamic without enabling dynamic provisioning
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.  | 
