summaryrefslogtreecommitdiff
path: root/foreman_ansible_inventory.py
diff options
context:
space:
mode:
Diffstat (limited to 'foreman_ansible_inventory.py')
-rw-r--r--[-rwxr-xr-x]foreman_ansible_inventory.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/foreman_ansible_inventory.py b/foreman_ansible_inventory.py
index 5bb16b6..461146c 100755..100644
--- a/foreman_ansible_inventory.py
+++ b/foreman_ansible_inventory.py
@@ -20,6 +20,7 @@
import argparse
import ConfigParser
+import copy
import os
import re
from time import time
@@ -200,12 +201,21 @@ class ForemanInventory(object):
safe_key = self.to_safe('foreman_%s_%s' % (group, val.lower()))
self.push(self.inventory, safe_key, dns_name)
- # Ansible groups by parameters in host groups based
- # on group_patterns in config
params = self._resolve_params(host)
+
+ # Ansible groups by parameters in host groups and Foreman host
+ # attributes.
+ groupby = copy.copy(params)
+ for k, v in host.items():
+ if isinstance(v, basestring):
+ groupby[k] = self.to_safe(v)
+ elif isinstance(v, int):
+ groupby[k] = v
+
+ # The name of the ansible groups is given by group_patterns:
for pattern in self.group_patterns:
try:
- key = pattern.format(**params)
+ key = pattern.format(**groupby)
self.push(self.inventory, key, dns_name)
except KeyError:
pass # Host not part of this group