summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHideki Saito <saito@fgrep.org>2018-03-23 07:13:43 +0900
committerToshio Kuratomi <a.badger@gmail.com>2018-03-29 17:32:47 -0700
commit2ae7a892b969bafbc0990a27c4a6c5b5f4d2293c (patch)
treef5a8459ebee572dd47bd3fac54c396d45e8ef248
parent5025cdb6a27867307974f6561c2983c960f803c5 (diff)
downloadansible-2ae7a892b969bafbc0990a27c4a6c5b5f4d2293c.tar.gz
Fix dynamic inventory for vagrant does not work on python3 (#37631)
* Fix dynamic inventory for vagrant does not work on python3 #35129 (cherry picked from commit 1b121fc9e405cc31638357cc869768aa106cf534)
-rwxr-xr-xcontrib/inventory/vagrant.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/contrib/inventory/vagrant.py b/contrib/inventory/vagrant.py
index 37a6741b09..746758f99c 100755
--- a/contrib/inventory/vagrant.py
+++ b/contrib/inventory/vagrant.py
@@ -38,14 +38,17 @@ import os.path
import subprocess
import re
from paramiko import SSHConfig
-from cStringIO import StringIO
from optparse import OptionParser
from collections import defaultdict
try:
import json
-except:
+except Exception:
import simplejson as json
+from ansible.module_utils._text import to_text
+from ansible.module_utils.six.moves import StringIO
+
+
_group = 'vagrant' # a default group
_ssh_to_ansible = [('user', 'ansible_ssh_user'),
('hostname', 'ansible_ssh_host'),
@@ -74,7 +77,8 @@ def get_ssh_config():
# list all the running boxes
def list_running_boxes():
- output = subprocess.check_output(["vagrant", "status"]).split('\n')
+
+ output = to_text(subprocess.check_output(["vagrant", "status"]), errors='surrogate_or_strict').split('\n')
boxes = []
@@ -90,7 +94,7 @@ def list_running_boxes():
def get_a_ssh_config(box_name):
"""Gives back a map of all the machine's ssh configurations"""
- output = subprocess.check_output(["vagrant", "ssh-config", box_name])
+ output = to_text(subprocess.check_output(["vagrant", "ssh-config", box_name]), errors='surrogate_or_strict')
config = SSHConfig()
config.parse(StringIO(output))
host_config = config.lookup(box_name)
@@ -104,6 +108,7 @@ def get_a_ssh_config(box_name):
return dict((v, host_config[k]) for k, v in _ssh_to_ansible)
+
# List out servers that vagrant has running
# ------------------------------
if options.list: