diff options
author | Andrew Butcher <abutcher@redhat.com> | 2016-04-18 18:03:33 -0400 |
---|---|---|
committer | Andrew Butcher <abutcher@redhat.com> | 2016-04-20 10:31:41 -0400 |
commit | be00d3399795278ac799fab848918d5bd64a2c46 (patch) | |
tree | c11cf26d7043282f8cd8bc822458395bf04f81f5 /filter_plugins | |
parent | 3fccdb3e55a89597270e4ee2d9cdaf9dd66cb341 (diff) | |
download | openshift-be00d3399795278ac799fab848918d5bd64a2c46.tar.gz openshift-be00d3399795278ac799fab848918d5bd64a2c46.tar.bz2 openshift-be00d3399795278ac799fab848918d5bd64a2c46.tar.xz openshift-be00d3399795278ac799fab848918d5bd64a2c46.zip |
Fix router selector fact migration and match multiple selectors when counting nodes.
Diffstat (limited to 'filter_plugins')
-rw-r--r-- | filter_plugins/oo_filters.py | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/filter_plugins/oo_filters.py b/filter_plugins/oo_filters.py index f6cc2edde..242a5a6fe 100644 --- a/filter_plugins/oo_filters.py +++ b/filter_plugins/oo_filters.py @@ -311,6 +311,16 @@ class FilterModule(object): "color": "red"}}}] selector = 'color=green' returns = ['node1.example.com'] + + nodes = [{"kind": "Node", "metadata": {"name": "node1.example.com", + "labels": {"kubernetes.io/hostname": "node1.example.com", + "color": "green"}}}, + {"kind": "Node", "metadata": {"name": "node2.example.com", + "labels": {"kubernetes.io/hostname": "node2.example.com", + "color": "red"}}}] + selector = 'color=green,color=red' + returns = ['node1.example.com','node2.example.com'] + Args: nodes (list[dict]): list of node definitions selector (str): "label=value" node selector to filter `nodes` by @@ -323,9 +333,15 @@ class FilterModule(object): raise errors.AnsibleFilterError("failed expects selector to be a string") if not re.match('.*=.*', selector): raise errors.AnsibleFilterError("failed selector does not match \"label=value\" format") - label = selector.split('=')[0] - value = selector.split('=')[1] - return FilterModule.oo_oc_nodes_with_label(nodes, label, value) + node_lists = [] + for node_selector in ''.join(selector.split()).split(','): + label = node_selector.split('=')[0] + value = node_selector.split('=')[1] + node_lists.append(FilterModule.oo_oc_nodes_with_label(nodes, label, value)) + nodes = set(node_lists[0]) + for node_list in node_lists[1:]: + nodes.intersection_update(node_list) + return list(nodes) @staticmethod def oo_oc_nodes_with_label(nodes, label, value): |