summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorjctanner <tanner.jc@gmail.com>2018-10-15 21:40:51 -0400
committerGitHub <noreply@github.com>2018-10-15 21:40:51 -0400
commit1ded3f9890148b974d2f65c6f3df1bbdbfbaed43 (patch)
tree3ba65fb6894fd161250515b4718355c86f713466 /contrib
parent96db9a55e25024078c6fd3a782af3513cd4c015b (diff)
downloadansible-1ded3f9890148b974d2f65c6f3df1bbdbfbaed43.tar.gz
Handle non-ascii characters in foreman.py (#46779)
* Handle non-ascii characters in foreman.py * Add test to validate non-ascii results
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/inventory/foreman.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/contrib/inventory/foreman.py b/contrib/inventory/foreman.py
index 99200168f6..7c431933e0 100755
--- a/contrib/inventory/foreman.py
+++ b/contrib/inventory/foreman.py
@@ -46,6 +46,8 @@ if LooseVersion(requests.__version__) < LooseVersion('1.1.0'):
from requests.auth import HTTPBasicAuth
+from ansible.module_utils._text import to_text
+
def json_format_dict(data, pretty=False):
"""Converts a dict to a JSON object and dumps it as a formatted string"""
@@ -285,20 +287,32 @@ class ForemanInventory(object):
group = 'hostgroup'
val = host.get('%s_title' % group) or host.get('%s_name' % group)
if val:
- safe_key = self.to_safe('%s%s_%s' % (self.group_prefix, group, val.lower()))
+ safe_key = self.to_safe('%s%s_%s' % (
+ to_text(self.group_prefix),
+ group,
+ to_text(val).lower()
+ ))
self.inventory[safe_key].append(dns_name)
# Create ansible groups for environment, location and organization
for group in ['environment', 'location', 'organization']:
val = host.get('%s_name' % group)
if val:
- safe_key = self.to_safe('%s%s_%s' % (self.group_prefix, group, val.lower()))
+ safe_key = self.to_safe('%s%s_%s' % (
+ to_text(self.group_prefix),
+ group,
+ to_text(val).lower()
+ ))
self.inventory[safe_key].append(dns_name)
for group in ['lifecycle_environment', 'content_view']:
val = host.get('content_facet_attributes', {}).get('%s_name' % group)
if val:
- safe_key = self.to_safe('%s%s_%s' % (self.group_prefix, group, val.lower()))
+ safe_key = self.to_safe('%s%s_%s' % (
+ to_text(self.group_prefix),
+ group,
+ to_text(val).lower()
+ ))
self.inventory[safe_key].append(dns_name)
params = self._resolve_params(host_params)
@@ -307,7 +321,7 @@ class ForemanInventory(object):
# attributes.
groupby = dict()
for k, v in params.items():
- groupby[k] = self.to_safe(str(v))
+ groupby[k] = self.to_safe(to_text(v))
# The name of the ansible groups is given by group_patterns:
for pattern in self.group_patterns: