Miscellaneous ansible-test updates. (#27937)
* Add keep alives to ansible-test ssh delegation. * Improve ansible-test JSON parsing error messages. * Increase ansible-test delegation sleep and retry. * Update ansible-test to recognize .psm1 files.pull/4420/head
parent
875c8e4f3e
commit
a40cb5a47f
|
@ -260,7 +260,7 @@ class PathMapper(object):
|
||||||
return minimal
|
return minimal
|
||||||
|
|
||||||
if path.startswith('lib/ansible/module_utils/'):
|
if path.startswith('lib/ansible/module_utils/'):
|
||||||
if ext == '.ps1':
|
if ext in ('.ps1', '.psm1'):
|
||||||
return {
|
return {
|
||||||
'windows-integration': self.integration_all_target,
|
'windows-integration': self.integration_all_target,
|
||||||
}
|
}
|
||||||
|
|
|
@ -181,7 +181,7 @@ class AnsibleCoreCI(object):
|
||||||
|
|
||||||
raise self._create_http_error(response)
|
raise self._create_http_error(response)
|
||||||
|
|
||||||
def get(self, tries=2, sleep=10, always_raise_on=None):
|
def get(self, tries=3, sleep=15, always_raise_on=None):
|
||||||
"""
|
"""
|
||||||
Get instance connection information.
|
Get instance connection information.
|
||||||
:type tries: int
|
:type tries: int
|
||||||
|
@ -290,8 +290,8 @@ class AnsibleCoreCI(object):
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
}
|
}
|
||||||
|
|
||||||
tries = 2
|
tries = 3
|
||||||
sleep = 10
|
sleep = 15
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
tries -= 1
|
tries -= 1
|
||||||
|
|
|
@ -86,7 +86,7 @@ class HttpClient(object):
|
||||||
stdout, _ = run_command(self.args, cmd, capture=True, always=self.always, cmd_verbosity=2)
|
stdout, _ = run_command(self.args, cmd, capture=True, always=self.always, cmd_verbosity=2)
|
||||||
|
|
||||||
if self.args.explain and not self.always:
|
if self.args.explain and not self.always:
|
||||||
return HttpResponse(200, '')
|
return HttpResponse(method, url, 200, '')
|
||||||
|
|
||||||
header, body = stdout.split('\r\n\r\n', 1)
|
header, body = stdout.split('\r\n\r\n', 1)
|
||||||
|
|
||||||
|
@ -95,16 +95,20 @@ class HttpClient(object):
|
||||||
http_response = first_line.split(' ')
|
http_response = first_line.split(' ')
|
||||||
status_code = int(http_response[1])
|
status_code = int(http_response[1])
|
||||||
|
|
||||||
return HttpResponse(status_code, body)
|
return HttpResponse(method, url, status_code, body)
|
||||||
|
|
||||||
|
|
||||||
class HttpResponse(object):
|
class HttpResponse(object):
|
||||||
"""HTTP response from curl."""
|
"""HTTP response from curl."""
|
||||||
def __init__(self, status_code, response):
|
def __init__(self, method, url, status_code, response):
|
||||||
"""
|
"""
|
||||||
|
:type method: str
|
||||||
|
:type url: str
|
||||||
:type status_code: int
|
:type status_code: int
|
||||||
:type response: str
|
:type response: str
|
||||||
"""
|
"""
|
||||||
|
self.method = method
|
||||||
|
self.url = url
|
||||||
self.status_code = status_code
|
self.status_code = status_code
|
||||||
self.response = response
|
self.response = response
|
||||||
|
|
||||||
|
@ -115,7 +119,7 @@ class HttpResponse(object):
|
||||||
try:
|
try:
|
||||||
return json.loads(self.response)
|
return json.loads(self.response)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
raise HttpError(self.status_code, 'Cannot parse response as JSON:\n%s' % self.response)
|
raise HttpError(self.status_code, 'Cannot parse response to %s %s as JSON:\n%s' % (self.method, self.url, self.response))
|
||||||
|
|
||||||
|
|
||||||
class HttpError(ApplicationError):
|
class HttpError(ApplicationError):
|
||||||
|
|
|
@ -110,7 +110,18 @@ class ManagePosixCI(object):
|
||||||
:type core_ci: AnsibleCoreCI
|
:type core_ci: AnsibleCoreCI
|
||||||
"""
|
"""
|
||||||
self.core_ci = core_ci
|
self.core_ci = core_ci
|
||||||
self.ssh_args = ['-o', 'BatchMode=yes', '-o', 'StrictHostKeyChecking=no', '-i', self.core_ci.ssh_key.key]
|
self.ssh_args = ['-i', self.core_ci.ssh_key.key]
|
||||||
|
|
||||||
|
ssh_options = dict(
|
||||||
|
BatchMode='yes',
|
||||||
|
StrictHostKeyChecking='no',
|
||||||
|
UserKnownHostsFile='/dev/null',
|
||||||
|
ServerAliveInterval=15,
|
||||||
|
ServerAliveCountMax=4,
|
||||||
|
)
|
||||||
|
|
||||||
|
for ssh_option in sorted(ssh_options):
|
||||||
|
self.ssh_args += ['-o', '%s=%s' % (ssh_option, ssh_options[ssh_option])]
|
||||||
|
|
||||||
if self.core_ci.platform == 'freebsd':
|
if self.core_ci.platform == 'freebsd':
|
||||||
self.become = ['su', '-l', 'root', '-c']
|
self.become = ['su', '-l', 'root', '-c']
|
||||||
|
|
Loading…
Reference in New Issue