diff options
-rw-r--r-- | .tito/packages/openshift-ansible | 2 | ||||
-rwxr-xr-x | inventory/multi_inventory.py | 75 | ||||
-rw-r--r-- | openshift-ansible.spec | 10 |
3 files changed, 63 insertions, 24 deletions
diff --git a/.tito/packages/openshift-ansible b/.tito/packages/openshift-ansible index ba0a6d69d..e6a0b6e80 100644 --- a/.tito/packages/openshift-ansible +++ b/.tito/packages/openshift-ansible @@ -1 +1 @@ -3.0.57-1 ./ +3.0.58-1 ./ diff --git a/inventory/multi_inventory.py b/inventory/multi_inventory.py index 20fc48aa9..57be259f7 100755 --- a/inventory/multi_inventory.py +++ b/inventory/multi_inventory.py @@ -25,6 +25,9 @@ class MultiInventoryException(Exception): '''Exceptions for MultiInventory class''' pass +# pylint: disable=too-many-public-methods +# After a refactor of too-many-branches and placing those branches into +# their own corresponding function, we have passed the allowed amount of functions(20). class MultiInventory(object): ''' MultiInventory class: @@ -282,35 +285,63 @@ class MultiInventory(object): else: return data.get(keys, None) - def apply_account_config(self, acc_config): - ''' Apply account config settings - ''' - results = self.all_inventory_results[acc_config['name']] - results['all_hosts'] = results['_meta']['hostvars'].keys() - + def apply_extra_vars(self, inventory, extra_vars): + ''' Apply the account config extra vars ''' # Extra vars go here - for new_var, value in acc_config.get('extra_vars', {}).items(): - for data in results['_meta']['hostvars'].values(): + for new_var, value in extra_vars.items(): + for data in inventory.values(): self.add_entry(data, new_var, value) + def apply_clone_vars(self, inventory, clone_vars): + ''' Apply the account config clone vars ''' # Clone vars go here - for to_name, from_name in acc_config.get('clone_vars', {}).items(): - for data in results['_meta']['hostvars'].values(): + for to_name, from_name in clone_vars.items(): + for data in inventory.values(): self.add_entry(data, to_name, self.get_entry(data, from_name)) - # Extra groups go here - for new_var, value in acc_config.get('extra_groups', {}).items(): - for data in results['_meta']['hostvars'].values(): - results["%s_%s" % (new_var, value)] = copy.copy(results['all_hosts']) - - # Clone groups go here - # Build a group based on the desired key name - for to_name, from_name in acc_config.get('clone_groups', {}).items(): - for name, data in results['_meta']['hostvars'].items(): + def apply_extra_groups(self, inventory, extra_groups): + ''' Apply the account config for extra groups ''' + _ = self # Here for pylint. wanted an instance method instead of static + for new_var, value in extra_groups.items(): + for _ in inventory['_meta']['hostvars'].values(): + inventory["%s_%s" % (new_var, value)] = copy.copy(inventory['all_hosts']) + + def apply_clone_groups(self, inventory, clone_groups): + ''' Apply the account config for clone groups ''' + for to_name, from_name in clone_groups.items(): + for name, data in inventory['_meta']['hostvars'].items(): key = '%s_%s' % (to_name, self.get_entry(data, from_name)) - if not results.has_key(key): - results[key] = [] - results[key].append(name) + if not inventory.has_key(key): + inventory[key] = [] + inventory[key].append(name) + + def apply_group_selectors(self, inventory, group_selectors): + ''' Apply the account config for clone groups ''' + _ = self # Here for pylint. wanted an instance method instead of static + for selector in group_selectors: + if inventory.has_key(selector['from_group']): + inventory[selector['from_group']].sort() + inventory[selector['name']] = inventory[selector['from_group']][0:selector['count']] + for host in inventory[selector['from_group']]: + if host in inventory[selector['name']]: + inventory['_meta']['hostvars'][host][selector['name']] = True + else: + inventory['_meta']['hostvars'][host][selector['name']] = False + + def apply_account_config(self, acc_config): + ''' Apply account config settings ''' + results = self.all_inventory_results[acc_config['name']] + results['all_hosts'] = results['_meta']['hostvars'].keys() + + self.apply_extra_vars(results['_meta']['hostvars'], acc_config.get('extra_vars', {})) + + self.apply_clone_vars(results['_meta']['hostvars'], acc_config.get('clone_vars', {})) + + self.apply_extra_groups(results, acc_config.get('extra_groups', {})) + + self.apply_clone_groups(results, acc_config.get('clone_groups', {})) + + self.apply_group_selectors(results, acc_config.get('group_selectors', {})) # store the results back into all_inventory_results self.all_inventory_results[acc_config['name']] = results diff --git a/openshift-ansible.spec b/openshift-ansible.spec index 358c346a1..bad7e68b2 100644 --- a/openshift-ansible.spec +++ b/openshift-ansible.spec @@ -5,7 +5,7 @@ } Name: openshift-ansible -Version: 3.0.57 +Version: 3.0.58 Release: 1%{?dist} Summary: Openshift and Atomic Enterprise Ansible License: ASL 2.0 @@ -279,6 +279,14 @@ Atomic OpenShift Utilities includes %changelog +* Tue Mar 15 2016 Kenny Woodson <kwoodson@redhat.com> 3.0.58-1 +- Group selector feature added (kwoodson@redhat.com) +- nfs: replace yum with dnf (efreiber@redhat.com) +- Move common common facts to openshift_facts (jdetiber@redhat.com) +- perform oc client config tasks only once when ansible_ssh_user is root + (jdetiber@redhat.com) +- OSE/Origin < 3.2/1.2 should not get Docker 1.9 (sdodson@redhat.com) + * Mon Mar 14 2016 Brenton Leanhardt <bleanhar@redhat.com> 3.0.57-1 - Docker stderr can break this script if ansible executes it remotely (bleanhar@redhat.com) |