summaryrefslogtreecommitdiffstats
path: root/filter_plugins/oo_filters.py
diff options
context:
space:
mode:
Diffstat (limited to 'filter_plugins/oo_filters.py')
-rw-r--r--filter_plugins/oo_filters.py254
1 files changed, 8 insertions, 246 deletions
diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py
index f9564499d..3eaf2aed5 100644
--- a/filter_plugins/oo_filters.py
+++ b/filter_plugins/oo_filters.py
@@ -375,6 +375,13 @@ def oo_split(string, separator=','):
return string.split(separator)
+def oo_list_to_dict(lst, separator='='):
+ """ This converts a list of ["k=v"] to a dictionary {k: v}.
+ """
+ kvs = [i.split(separator) for i in lst]
+ return {k: v for k, v in kvs}
+
+
def oo_haproxy_backend_masters(hosts, port):
""" This takes an array of dicts and returns an array of dicts
to be used as a backend for the haproxy role
@@ -690,249 +697,6 @@ def to_padded_yaml(data, level=0, indent=2, **kw):
raise errors.AnsibleFilterError('Failed to convert: %s' % my_e)
-def oo_openshift_env(hostvars):
- ''' Return facts which begin with "openshift_" and translate
- legacy facts to their openshift_env counterparts.
-
- Ex: hostvars = {'openshift_fact': 42,
- 'theyre_taking_the_hobbits_to': 'isengard'}
- returns = {'openshift_fact': 42}
- '''
- if not issubclass(type(hostvars), dict):
- raise errors.AnsibleFilterError("|failed expects hostvars is a dict")
-
- facts = {}
- regex = re.compile('^openshift_.*')
- for key in hostvars:
- if regex.match(key):
- facts[key] = hostvars[key]
-
- return facts
-
-
-# pylint: disable=too-many-branches, too-many-nested-blocks, too-many-statements, too-many-locals
-def oo_component_persistent_volumes(hostvars, groups, component, subcomponent=None):
- """ Generate list of persistent volumes based on oo_openshift_env
- storage options set in host variables for a specific component.
- """
- if not issubclass(type(hostvars), dict):
- raise errors.AnsibleFilterError("|failed expects hostvars is a dict")
- if not issubclass(type(groups), dict):
- raise errors.AnsibleFilterError("|failed expects groups is a dict")
-
- persistent_volume = None
-
- if component in hostvars['openshift']:
- if subcomponent is not None:
- storage_component = hostvars['openshift'][component][subcomponent]
- else:
- storage_component = hostvars['openshift'][component]
-
- if 'storage' in storage_component:
- params = storage_component['storage']
- kind = params['kind']
- if 'create_pv' in params:
- create_pv = params['create_pv']
- if kind is not None and create_pv:
- if kind == 'nfs':
- host = params['host']
- if host is None:
- if 'oo_nfs_to_config' in groups and len(groups['oo_nfs_to_config']) > 0:
- host = groups['oo_nfs_to_config'][0]
- else:
- raise errors.AnsibleFilterError("|failed no storage host detected")
- directory = params['nfs']['directory']
- volume = params['volume']['name']
- path = directory + '/' + volume
- size = params['volume']['size']
- if 'labels' in params:
- labels = params['labels']
- else:
- labels = dict()
- access_modes = params['access']['modes']
- persistent_volume = dict(
- name="{0}-volume".format(volume),
- capacity=size,
- labels=labels,
- access_modes=access_modes,
- storage=dict(
- nfs=dict(
- server=host,
- path=path)))
-
- elif kind == 'openstack':
- volume = params['volume']['name']
- size = params['volume']['size']
- if 'labels' in params:
- labels = params['labels']
- else:
- labels = dict()
- access_modes = params['access']['modes']
- filesystem = params['openstack']['filesystem']
- volume_id = params['openstack']['volumeID']
- persistent_volume = dict(
- name="{0}-volume".format(volume),
- capacity=size,
- labels=labels,
- access_modes=access_modes,
- storage=dict(
- cinder=dict(
- fsType=filesystem,
- volumeID=volume_id)))
-
- elif kind == 'glusterfs':
- volume = params['volume']['name']
- size = params['volume']['size']
- if 'labels' in params:
- labels = params['labels']
- else:
- labels = dict()
- access_modes = params['access']['modes']
- endpoints = params['glusterfs']['endpoints']
- path = params['glusterfs']['path']
- read_only = params['glusterfs']['readOnly']
- persistent_volume = 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)))
-
- elif not (kind == 'object' or kind == 'dynamic'):
- msg = "|failed invalid storage kind '{0}' for component '{1}'".format(
- kind,
- component)
- raise errors.AnsibleFilterError(msg)
- return persistent_volume
-
-
-# pylint: disable=too-many-branches, too-many-nested-blocks, too-many-statements
-def oo_persistent_volumes(hostvars, groups, persistent_volumes=None):
- """ Generate list of persistent volumes based on oo_openshift_env
- storage options set in host variables.
- """
- if not issubclass(type(hostvars), dict):
- raise errors.AnsibleFilterError("|failed expects hostvars is a dict")
- if not issubclass(type(groups), dict):
- raise errors.AnsibleFilterError("|failed expects groups is a dict")
- if persistent_volumes is not None and not issubclass(type(persistent_volumes), list):
- raise errors.AnsibleFilterError("|failed expects persistent_volumes is a list")
-
- if persistent_volumes is None:
- persistent_volumes = []
- if 'hosted' in hostvars['openshift']:
- for component in hostvars['openshift']['hosted']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'hosted', component)
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
-
- if 'logging' in hostvars['openshift']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'logging')
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
- if 'loggingops' in hostvars['openshift']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'loggingops')
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
- if 'metrics' in hostvars['openshift']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'metrics')
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
- if 'prometheus' in hostvars['openshift']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'prometheus')
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
- if 'alertmanager' in hostvars['openshift']['prometheus']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'prometheus', 'alertmanager')
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
- if 'alertbuffer' in hostvars['openshift']['prometheus']:
- persistent_volume = oo_component_persistent_volumes(hostvars, groups, 'prometheus', 'alertbuffer')
- if persistent_volume is not None:
- persistent_volumes.append(persistent_volume)
- return persistent_volumes
-
-
-def oo_component_pv_claims(hostvars, component, subcomponent=None):
- """ Generate list of persistent volume claims based on oo_openshift_env
- storage options set in host variables for a speicific component.
- """
- if not issubclass(type(hostvars), dict):
- raise errors.AnsibleFilterError("|failed expects hostvars is a dict")
-
- if component in hostvars['openshift']:
- if subcomponent is not None:
- storage_component = hostvars['openshift'][component][subcomponent]
- else:
- storage_component = hostvars['openshift'][component]
-
- if 'storage' in storage_component:
- params = storage_component['storage']
- kind = params['kind']
- if 'create_pv' in params:
- if 'create_pvc' in params:
- create_pv = params['create_pv']
- create_pvc = params['create_pvc']
- if kind not in [None, 'object'] and create_pv and create_pvc:
- volume = params['volume']['name']
- size = params['volume']['size']
- access_modes = params['access']['modes']
- persistent_volume_claim = dict(
- name="{0}-claim".format(volume),
- capacity=size,
- access_modes=access_modes)
- return persistent_volume_claim
- return None
-
-
-def oo_persistent_volume_claims(hostvars, persistent_volume_claims=None):
- """ Generate list of persistent volume claims based on oo_openshift_env
- storage options set in host variables.
- """
- if not issubclass(type(hostvars), dict):
- raise errors.AnsibleFilterError("|failed expects hostvars is a dict")
- if persistent_volume_claims is not None and not issubclass(type(persistent_volume_claims), list):
- raise errors.AnsibleFilterError("|failed expects persistent_volume_claims is a list")
-
- if persistent_volume_claims is None:
- persistent_volume_claims = []
- if 'hosted' in hostvars['openshift']:
- for component in hostvars['openshift']['hosted']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'hosted', component)
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
-
- if 'logging' in hostvars['openshift']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'logging')
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
- if 'loggingops' in hostvars['openshift']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'loggingops')
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
- if 'metrics' in hostvars['openshift']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'metrics')
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
- if 'prometheus' in hostvars['openshift']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'prometheus')
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
- if 'alertmanager' in hostvars['openshift']['prometheus']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'prometheus', 'alertmanager')
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
- if 'alertbuffer' in hostvars['openshift']['prometheus']:
- persistent_volume_claim = oo_component_pv_claims(hostvars, 'prometheus', 'alertbuffer')
- if persistent_volume_claim is not None:
- persistent_volume_claims.append(persistent_volume_claim)
- return persistent_volume_claims
-
-
def oo_31_rpm_rename_conversion(rpms, openshift_version=None):
""" Filters a list of 3.0 rpms and return the corresponding 3.1 rpms
names with proper version (if provided)
@@ -1212,6 +976,7 @@ class FilterModule(object):
"oo_combine_dict": oo_combine_dict,
"oo_dict_to_list_of_dict": oo_dict_to_list_of_dict,
"oo_split": oo_split,
+ "oo_list_to_dict": oo_list_to_dict,
"oo_filter_list": oo_filter_list,
"oo_parse_heat_stack_outputs": oo_parse_heat_stack_outputs,
"oo_parse_named_certificates": oo_parse_named_certificates,
@@ -1219,9 +984,6 @@ class FilterModule(object):
"oo_pretty_print_cluster": oo_pretty_print_cluster,
"oo_generate_secret": oo_generate_secret,
"oo_nodes_with_label": oo_nodes_with_label,
- "oo_openshift_env": oo_openshift_env,
- "oo_persistent_volumes": oo_persistent_volumes,
- "oo_persistent_volume_claims": oo_persistent_volume_claims,
"oo_31_rpm_rename_conversion": oo_31_rpm_rename_conversion,
"oo_pods_match_component": oo_pods_match_component,
"oo_get_hosts_from_hostvars": oo_get_hosts_from_hostvars,