summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Wolinetz <ewolinet@redhat.com>2017-09-27 17:03:19 -0500
committerEric Wolinetz <ewolinet@redhat.com>2017-09-27 17:11:17 -0500
commit23c44b36cce3f944a07f4960aa1e1b58f6b12756 (patch)
treec1556db4b6d788689438e44e51a5efd477ddda7b
parent3462d2dcf1a35d0cb81314de4cee44863e9cd85d (diff)
downloadopenshift-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
-rw-r--r--roles/openshift_sanitize_inventory/filter_plugins/openshift_logging.py25
-rw-r--r--roles/openshift_sanitize_inventory/filter_plugins/openshift_sanitize_inventory.py43
-rw-r--r--roles/openshift_sanitize_inventory/tasks/unsupported.yml20
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.