summaryrefslogtreecommitdiffstats
path: root/roles/openshift_persistent_volumes
diff options
context:
space:
mode:
Diffstat (limited to 'roles/openshift_persistent_volumes')
-rw-r--r--roles/openshift_persistent_volumes/action_plugins/generate_pv_pvcs_list.py157
-rw-r--r--roles/openshift_persistent_volumes/tasks/main.yml3
2 files changed, 2 insertions, 158 deletions
diff --git a/roles/openshift_persistent_volumes/action_plugins/generate_pv_pvcs_list.py b/roles/openshift_persistent_volumes/action_plugins/generate_pv_pvcs_list.py
deleted file mode 100644
index eb13a58ba..000000000
--- a/roles/openshift_persistent_volumes/action_plugins/generate_pv_pvcs_list.py
+++ /dev/null
@@ -1,157 +0,0 @@
-"""
-Ansible action plugin to generate pv and pvc dictionaries lists
-"""
-
-from ansible.plugins.action import ActionBase
-from ansible import errors
-
-
-class ActionModule(ActionBase):
- """Action plugin to execute health checks."""
-
- def get_templated(self, var_to_template):
- """Return a properly templated ansible variable"""
- return self._templar.template(self.task_vars.get(var_to_template))
-
- def build_common(self, varname=None):
- """Retrieve common variables for each pv and pvc type"""
- volume = self.get_templated(str(varname) + '_volume_name')
- size = self.get_templated(str(varname) + '_volume_size')
- labels = self.task_vars.get(str(varname) + '_labels')
- if labels:
- labels = self._templar.template(labels)
- else:
- labels = dict()
- access_modes = self.get_templated(str(varname) + '_access_modes')
- return (volume, size, labels, access_modes)
-
- def build_pv_nfs(self, varname=None):
- """Build pv dictionary for nfs storage type"""
- host = self.task_vars.get(str(varname) + '_host')
- if host:
- self._templar.template(host)
- elif host is None:
- groups = self.task_vars.get('groups')
- default_group_name = self.get_templated('openshift_persistent_volumes_default_nfs_group')
- if groups and default_group_name and default_group_name in groups and len(groups[default_group_name]) > 0:
- host = groups['oo_nfs_to_config'][0]
- else:
- raise errors.AnsibleModuleError("|failed no storage host detected")
- volume, size, labels, access_modes = self.build_common(varname=varname)
- directory = self.get_templated(str(varname) + '_nfs_directory')
- path = directory + '/' + volume
- return dict(
- name="{0}-volume".format(volume),
- capacity=size,
- labels=labels,
- access_modes=access_modes,
- storage=dict(
- nfs=dict(
- server=host,
- path=path)))
-
- def build_pv_openstack(self, varname=None):
- """Build pv dictionary for openstack storage type"""
- volume, size, labels, access_modes = self.build_common(varname=varname)
- filesystem = self.get_templated(str(varname) + '_openstack_filesystem')
- volume_id = self.get_templated(str(varname) + '_openstack_volumeID')
- return dict(
- name="{0}-volume".format(volume),
- capacity=size,
- labels=labels,
- access_modes=access_modes,
- storage=dict(
- cinder=dict(
- fsType=filesystem,
- volumeID=volume_id)))
-
- def build_pv_glusterfs(self, varname=None):
- """Build pv dictionary for glusterfs storage type"""
- volume, size, labels, access_modes = self.build_common(varname=varname)
- endpoints = self.get_templated(str(varname) + '_glusterfs_endpoints')
- path = self.get_templated(str(varname) + '_glusterfs_path')
- read_only = self.get_templated(str(varname) + '_glusterfs_readOnly')
- return dict(
- name="{0}-volume".format(volume),
- capacity=size,
- labels=labels,
- access_modes=access_modes,
- storage=dict(
- glusterfs=dict(
- endpoints=endpoints,
- path=path,
- readOnly=read_only)))
-
- def build_pv_dict(self, varname=None):
- """Check for the existence of PV variables"""
- kind = self.task_vars.get(str(varname) + '_kind')
- if kind:
- kind = self._templar.template(kind)
- create_pv = self.task_vars.get(str(varname) + '_create_pv')
- if create_pv and self._templar.template(create_pv):
- if kind == 'nfs':
- return self.build_pv_nfs(varname=varname)
-
- elif kind == 'openstack':
- return self.build_pv_openstack(varname=varname)
-
- elif kind == 'glusterfs':
- return self.build_pv_glusterfs(varname=varname)
-
- elif not (kind == 'object' or kind == 'dynamic'):
- msg = "|failed invalid storage kind '{0}' for component '{1}'".format(
- kind,
- varname)
- raise errors.AnsibleModuleError(msg)
- return None
-
- def build_pvc_dict(self, varname=None):
- """Check for the existence of PVC variables"""
- kind = self.task_vars.get(str(varname) + '_kind')
- if kind:
- kind = self._templar.template(kind)
- create_pv = self.task_vars.get(str(varname) + '_create_pv')
- if create_pv:
- create_pv = self._templar.template(create_pv)
- create_pvc = self.task_vars.get(str(varname) + '_create_pvc')
- if create_pvc:
- create_pvc = self._templar.template(create_pvc)
- if kind != 'object' and create_pv and create_pvc:
- volume, size, _, access_modes = self.build_common(varname=varname)
- return dict(
- name="{0}-claim".format(volume),
- capacity=size,
- access_modes=access_modes)
- return None
-
- def run(self, tmp=None, task_vars=None):
- """Run generate_pv_pvcs_list action plugin"""
- result = super(ActionModule, self).run(tmp, task_vars)
- # Ignore settting self.task_vars outside of init.
- # pylint: disable=W0201
- self.task_vars = task_vars or {}
-
- result["changed"] = False
- result["failed"] = False
- result["msg"] = "persistent_volumes list and persistent_volume_claims list created"
- vars_to_check = ['openshift_hosted_registry_storage',
- 'openshift_hosted_router_storage',
- 'openshift_hosted_etcd_storage',
- 'openshift_logging_storage',
- 'openshift_loggingops_storage',
- 'openshift_metrics_storage',
- 'openshift_prometheus_storage',
- 'openshift_prometheus_alertmanager_storage',
- 'openshift_prometheus_alertbuffer_storage']
- persistent_volumes = []
- persistent_volume_claims = []
- for varname in vars_to_check:
- pv_dict = self.build_pv_dict(varname)
- if pv_dict:
- persistent_volumes.append(pv_dict)
- pvc_dict = self.build_pvc_dict(varname)
- if pvc_dict:
- persistent_volume_claims.append(pvc_dict)
- result["persistent_volumes"] = persistent_volumes
- result["persistent_volume_claims"] = persistent_volume_claims
- return result
diff --git a/roles/openshift_persistent_volumes/tasks/main.yml b/roles/openshift_persistent_volumes/tasks/main.yml
index 0b4dd7d1f..b1d9c8cca 100644
--- a/roles/openshift_persistent_volumes/tasks/main.yml
+++ b/roles/openshift_persistent_volumes/tasks/main.yml
@@ -26,7 +26,8 @@
when: openshift_hosted_registry_storage_glusterfs_swap | default(False)
- name: create standard pv and pvc lists
- # generate_pv_pvcs_list is a custom action module defined in ../action_plugins
+ # generate_pv_pvcs_list is a custom action module defined in
+ # roles/lib_utils/action_plugins/generate_pv_pvcs_list.py
generate_pv_pvcs_list: {}
register: l_pv_pvcs_list