Fix dynamic inventory for vagrant does not work on python3 (#37631)

* Fix dynamic inventory for vagrant does not work on python3 #35129
pull/37626/merge
Hideki Saito 6 years ago committed by Toshio Kuratomi
parent a4a2b4a381
commit 1b121fc9e4

@ -38,14 +38,17 @@ import os.path
import subprocess import subprocess
import re import re
from paramiko import SSHConfig from paramiko import SSHConfig
from cStringIO import StringIO
from optparse import OptionParser from optparse import OptionParser
from collections import defaultdict from collections import defaultdict
try: try:
import json import json
except: except Exception:
import simplejson as json 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 _group = 'vagrant' # a default group
_ssh_to_ansible = [('user', 'ansible_ssh_user'), _ssh_to_ansible = [('user', 'ansible_ssh_user'),
('hostname', 'ansible_ssh_host'), ('hostname', 'ansible_ssh_host'),
@ -74,7 +77,8 @@ def get_ssh_config():
# list all the running boxes # list all the running boxes
def list_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 = [] boxes = []
@ -90,7 +94,7 @@ def list_running_boxes():
def get_a_ssh_config(box_name): def get_a_ssh_config(box_name):
"""Gives back a map of all the machine's ssh configurations""" """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 = SSHConfig()
config.parse(StringIO(output)) config.parse(StringIO(output))
host_config = config.lookup(box_name) 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) return dict((v, host_config[k]) for k, v in _ssh_to_ansible)
# List out servers that vagrant has running # List out servers that vagrant has running
# ------------------------------ # ------------------------------
if options.list: if options.list:

Loading…
Cancel
Save