Browse Source

Fix node labeling. Issue #305

Diego Castro 9 years ago
parent
commit
b497f7a2a7

+ 11 - 0
filter_plugins/oo_filters.py

@@ -130,6 +130,16 @@ class FilterModule(object):
             rval.append("%s%s%s" % (item['key'], joiner, item['value']))
 
         return rval
+    
+    @staticmethod
+    def oo_combine_dict(data, in_joiner='=', out_joiner=' '):
+        '''Take a dict in the form of { 'key': 'value', 'key': 'value' } and
+           arrange them as a string 'key=value key=value'
+        '''
+        if not issubclass(type(data), dict):
+            raise errors.AnsibleFilterError("|failed expects first param is a dict")
+
+        return out_joiner.join([ in_joiner.join([k, v]) for k, v in data.items() ])
 
     @staticmethod
     def oo_ami_selector(data, image_name):
@@ -309,6 +319,7 @@ class FilterModule(object):
             "oo_ami_selector": self.oo_ami_selector,
             "oo_ec2_volume_definition": self.oo_ec2_volume_definition,
             "oo_combine_key_value": self.oo_combine_key_value,
+            "oo_combine_dict": self.oo_combine_dict,
             "oo_split": self.oo_split,
             "oo_filter_list": self.oo_filter_list,
             "oo_parse_heat_stack_outputs": self.oo_parse_heat_stack_outputs

+ 4 - 1
playbooks/common/openshift-node/config.yml

@@ -126,9 +126,12 @@
 - name: Set scheduleability
   hosts: oo_first_master
   vars:
+    openshift_node_labels: "{{ hostvars
+                         | oo_select_keys(groups['oo_nodes_to_config'])
+                         | oo_collect('openshift.node.labels') }}"
     openshift_nodes: "{{ hostvars
                          | oo_select_keys(groups['oo_nodes_to_config'])
-                         | oo_collect('openshift.common.hostname') }}"
+                         | oo_collect('openshift.common.hostname') }}" 
     openshift_unscheduleable_nodes: "{{ hostvars | oo_select_keys(groups['oo_nodes_to_config'] | default([]))
                                       | oo_collect('openshift.common.hostname', {'openshift_scheduleable': False}) }}"
   pre_tasks:

+ 7 - 0
roles/openshift_manage_node/tasks/main.yml

@@ -16,3 +16,10 @@
   command: >
     {{ openshift.common.admin_binary }} manage-node {{ item }} --schedulable=true
   with_items: openshift_scheduleable_nodes
+
+- name: Tag schedulable nodes
+  command: >
+    {{ openshift.common.client_binary }} label --overwrite node {{ item.0 }} {{ item.1 | oo_combine_dict }}
+  with_nested:
+    -  openshift_scheduleable_nodes
+    -  openshift_node_labels