Use connection type supplied from nodepool
For supporting windows nodes we need the connection type to be configurable. This adds the ansible_connection host variable if nodepool defines it. Change-Id: I6d2f81c7586ae0d533add95ea96a9ea8ce8c3ab5
This commit is contained in:
parent
17a4ae8c78
commit
c5043212ea
|
@ -1432,7 +1432,8 @@ class RecordingAnsibleJob(zuul.executor.server.AnsibleJob):
|
||||||
self.log.debug("hostlist")
|
self.log.debug("hostlist")
|
||||||
hosts = super(RecordingAnsibleJob, self).getHostList(args)
|
hosts = super(RecordingAnsibleJob, self).getHostList(args)
|
||||||
for host in hosts:
|
for host in hosts:
|
||||||
host['host_vars']['ansible_connection'] = 'local'
|
if not host['host_vars'].get('ansible_connection'):
|
||||||
|
host['host_vars']['ansible_connection'] = 'local'
|
||||||
|
|
||||||
hosts.append(dict(
|
hosts.append(dict(
|
||||||
name=['localhost'],
|
name=['localhost'],
|
||||||
|
@ -1738,6 +1739,9 @@ class FakeNodepool(object):
|
||||||
executor='fake-nodepool')
|
executor='fake-nodepool')
|
||||||
if 'fakeuser' in node_type:
|
if 'fakeuser' in node_type:
|
||||||
data['username'] = 'fakeuser'
|
data['username'] = 'fakeuser'
|
||||||
|
if 'windows' in node_type:
|
||||||
|
data['connection_type'] = 'winrm'
|
||||||
|
|
||||||
data = json.dumps(data).encode('utf8')
|
data = json.dumps(data).encode('utf8')
|
||||||
path = self.client.create(path, data,
|
path = self.client.create(path, data,
|
||||||
makepath=True,
|
makepath=True,
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
label: default-label
|
label: default-label
|
||||||
- name: fakeuser
|
- name: fakeuser
|
||||||
label: fakeuser-label
|
label: fakeuser-label
|
||||||
|
- name: windows
|
||||||
|
label: windows-label
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: base
|
name: base
|
||||||
|
|
|
@ -119,5 +119,15 @@ class TestInventory(ZuulTestCase):
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
inventory['all']['hosts'][node_name]['ansible_user'], username)
|
inventory['all']['hosts'][node_name]['ansible_user'], username)
|
||||||
|
|
||||||
|
# check if the nodes use the correct or no ansible_connection
|
||||||
|
if node_name == 'windows':
|
||||||
|
self.assertEqual(
|
||||||
|
inventory['all']['hosts'][node_name]['ansible_connection'],
|
||||||
|
'winrm')
|
||||||
|
else:
|
||||||
|
self.assertEqual(
|
||||||
|
'local',
|
||||||
|
inventory['all']['hosts'][node_name]['ansible_connection'])
|
||||||
|
|
||||||
self.executor_server.release()
|
self.executor_server.release()
|
||||||
self.waitUntilSettled()
|
self.waitUntilSettled()
|
||||||
|
|
|
@ -931,6 +931,10 @@ class AnsibleJob(object):
|
||||||
if username:
|
if username:
|
||||||
host_vars['ansible_user'] = username
|
host_vars['ansible_user'] = username
|
||||||
|
|
||||||
|
connection_type = node.get('connection_type')
|
||||||
|
if connection_type:
|
||||||
|
host_vars['ansible_connection'] = connection_type
|
||||||
|
|
||||||
host_keys = []
|
host_keys = []
|
||||||
for key in node.get('host_keys'):
|
for key in node.get('host_keys'):
|
||||||
if port != 22:
|
if port != 22:
|
||||||
|
|
|
@ -384,6 +384,7 @@ class Node(object):
|
||||||
self.private_ipv4 = None
|
self.private_ipv4 = None
|
||||||
self.public_ipv6 = None
|
self.public_ipv6 = None
|
||||||
self.connection_port = 22
|
self.connection_port = 22
|
||||||
|
self.connection_type = None
|
||||||
self._keys = []
|
self._keys = []
|
||||||
self.az = None
|
self.az = None
|
||||||
self.provider = None
|
self.provider = None
|
||||||
|
|
Loading…
Reference in New Issue