summaryrefslogtreecommitdiffstats
path: root/filter_plugins/oo_filters.py
diff options
context:
space:
mode:
authorWesley Hearn <whearn@redhat.com>2015-05-20 16:47:07 -0400
committerWesley Hearn <whearn@redhat.com>2015-05-20 16:47:07 -0400
commit970ac423967bbe3806e74de2dfefd7da5bb851d2 (patch)
tree0b9155d3ccca1ab5e273adb99f7b6d7e722d27a1 /filter_plugins/oo_filters.py
parent4da7b790d5eb8e870bd81208f7074bba81a0989b (diff)
downloadopenshift-970ac423967bbe3806e74de2dfefd7da5bb851d2.tar.gz
openshift-970ac423967bbe3806e74de2dfefd7da5bb851d2.tar.bz2
openshift-970ac423967bbe3806e74de2dfefd7da5bb851d2.tar.xz
openshift-970ac423967bbe3806e74de2dfefd7da5bb851d2.zip
Revert "Made a generic set_attr and set_attrs function to reduce dup code"
This reverts commit 4da7b790d5eb8e870bd81208f7074bba81a0989b.
Diffstat (limited to 'filter_plugins/oo_filters.py')
-rw-r--r--filter_plugins/oo_filters.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py
index e02114d9e..8feb53f43 100644
--- a/filter_plugins/oo_filters.py
+++ b/filter_plugins/oo_filters.py
@@ -176,6 +176,38 @@ def oo_ec2_volume_definition(data, host_type, docker_ephemeral=False):
return [root_vol, docker_vol]
return [root_vol]
+def oo_set_node_label(arg, key, value, attr_key=None, attr_value=None):
+ ''' This cycles through openshift node definitions
+ (from "osc get nodes -o json"), and adds a label.
+
+ If attr_key and attr_value are set, this will only set the label on
+ nodes where the attribute matches the specified value.
+
+ Ex:
+ - shell: osc get nodes -o json
+ register: output
+
+ - set_fact:
+ node_facts: "{{ output.stdout
+ | from_json
+ | oo_set_node_label('region', 'infra',
+ 'metadata.name', '172.16.17.43') }}"
+ '''
+
+ for item in arg['items']:
+ if attr_key and attr_value:
+ actual_attr_value = get_attr(item, attr_key)
+
+ if str(attr_value) != str(actual_attr_value):
+ continue # We only want to set the values on hosts with defined attributes
+
+ if 'labels' not in item['metadata']:
+ item['metadata']['labels'] = {}
+
+ item['metadata']['labels'][key] = value
+
+ return arg
+
# disabling pylint checks for too-few-public-methods and no-self-use since we
# need to expose a FilterModule object that has a filters method that returns
# a mapping of filter names to methods.