Support ssl cert verification on outgoing https
Added the verify parameter to HttpAction class so that a ca bundle can be used to verify ssl certs when making outgoing https calls via HttpAction Modified unit tests to expect added parameter Corrected name of test_inspect_utils.py as it was under the knife in any case Change-Id: I444b22eabf7c48db62f29a59421aaa290b5f0cd7 Closes-Bug: #1421167
This commit is contained in:
parent
568dd2cebb
commit
65a9d16a60
|
@ -118,6 +118,8 @@ class HTTPAction(base.Action):
|
|||
redirect following is allowed.
|
||||
:param proxies: (optional) Dictionary mapping protocol to the URL of
|
||||
the proxy.
|
||||
:param verify: (optional) if ``True``, the SSL cert will be verified.
|
||||
A CA_BUNDLE path can also be provided.
|
||||
"""
|
||||
|
||||
def __init__(self,
|
||||
|
@ -130,7 +132,8 @@ class HTTPAction(base.Action):
|
|||
auth=None,
|
||||
timeout=None,
|
||||
allow_redirects=None,
|
||||
proxies=None):
|
||||
proxies=None,
|
||||
verify=None):
|
||||
|
||||
if auth and len(auth.split(':')) == 2:
|
||||
self.auth = (auth.split(':')[0], auth.split(':')[1])
|
||||
|
@ -146,12 +149,13 @@ class HTTPAction(base.Action):
|
|||
self.timeout = timeout
|
||||
self.allow_redirects = allow_redirects
|
||||
self.proxies = proxies
|
||||
self.verify = verify
|
||||
|
||||
def run(self):
|
||||
LOG.info("Running HTTP action "
|
||||
"[url=%s, method=%s, params=%s, body=%s, headers=%s,"
|
||||
" cookies=%s, auth=%s, timeout=%s, allow_redirects=%s,"
|
||||
" proxies=%s]" %
|
||||
" proxies=%s, verify=%s]" %
|
||||
(self.url,
|
||||
self.method,
|
||||
self.params,
|
||||
|
@ -161,7 +165,8 @@ class HTTPAction(base.Action):
|
|||
self.auth,
|
||||
self.timeout,
|
||||
self.allow_redirects,
|
||||
self.proxies))
|
||||
self.proxies,
|
||||
self.verify))
|
||||
|
||||
try:
|
||||
resp = requests.request(
|
||||
|
@ -174,7 +179,8 @@ class HTTPAction(base.Action):
|
|||
auth=self.auth,
|
||||
timeout=self.timeout,
|
||||
allow_redirects=self.allow_redirects,
|
||||
proxies=self.proxies
|
||||
proxies=self.proxies,
|
||||
verify=self.verify
|
||||
)
|
||||
except Exception as e:
|
||||
raise exc.ActionException("Failed to send HTTP request: %s" % e)
|
||||
|
@ -216,7 +222,8 @@ class MistralHTTPAction(HTTPAction):
|
|||
auth=None,
|
||||
timeout=None,
|
||||
allow_redirects=None,
|
||||
proxies=None):
|
||||
proxies=None,
|
||||
verify=None):
|
||||
headers = headers or {}
|
||||
headers.update({
|
||||
'Mistral-Workflow-Name': action_context.get('workflow_name'),
|
||||
|
@ -235,6 +242,7 @@ class MistralHTTPAction(HTTPAction):
|
|||
timeout,
|
||||
allow_redirects,
|
||||
proxies,
|
||||
verify,
|
||||
)
|
||||
|
||||
def is_sync(self):
|
||||
|
|
|
@ -80,7 +80,8 @@ class HTTPActionTest(base.BaseTest):
|
|||
timeout=20,
|
||||
auth=None,
|
||||
allow_redirects=True,
|
||||
proxies=None
|
||||
proxies=None,
|
||||
verify=None
|
||||
)
|
||||
|
||||
@mock.patch.object(requests, "request")
|
||||
|
@ -115,5 +116,6 @@ class HTTPActionTest(base.BaseTest):
|
|||
timeout=None,
|
||||
auth=('user', 'password'),
|
||||
allow_redirects=None,
|
||||
proxies=None
|
||||
proxies=None,
|
||||
verify=None
|
||||
)
|
||||
|
|
|
@ -92,4 +92,4 @@ class ActionContextTest(base.EngineTestCase):
|
|||
requests.request.assert_called_with(
|
||||
'GET', 'https://wiki.openstack.org/wiki/mistral',
|
||||
params=None, data=None, headers=headers, cookies=None, auth=None,
|
||||
timeout=None, allow_redirects=None, proxies=None)
|
||||
timeout=None, allow_redirects=None, proxies=None, verify=None)
|
||||
|
|
|
@ -134,7 +134,8 @@ class ActionDefaultTest(base.EngineTestCase):
|
|||
requests.request.assert_called_with(
|
||||
'GET', 'https://api.library.org/books',
|
||||
params=None, data=None, headers=None, cookies=None,
|
||||
allow_redirects=None, proxies=None, auth=EXPECTED_ENV_AUTH,
|
||||
allow_redirects=None, proxies=None, verify=None,
|
||||
auth=EXPECTED_ENV_AUTH,
|
||||
timeout=ENV['__actions']['std.http']['timeout'])
|
||||
|
||||
@mock.patch.object(
|
||||
|
@ -158,7 +159,8 @@ class ActionDefaultTest(base.EngineTestCase):
|
|||
requests.request.assert_called_with(
|
||||
'GET', 'https://api.library.org/books',
|
||||
params=None, data=None, headers=None, cookies=None,
|
||||
allow_redirects=None, proxies=None, auth=EXPECTED_ENV_AUTH,
|
||||
allow_redirects=None, proxies=None, verify=None,
|
||||
auth=EXPECTED_ENV_AUTH,
|
||||
timeout=60)
|
||||
|
||||
@mock.patch.object(
|
||||
|
@ -191,7 +193,7 @@ class ActionDefaultTest(base.EngineTestCase):
|
|||
calls = [mock.call('GET', url, params=None, data=None,
|
||||
headers=None, cookies=None,
|
||||
allow_redirects=None, proxies=None,
|
||||
auth=EXPECTED_ENV_AUTH,
|
||||
auth=EXPECTED_ENV_AUTH, verify=None,
|
||||
timeout=ENV['__actions']['std.http']['timeout'])
|
||||
for url in wf_input['links']]
|
||||
|
||||
|
@ -227,7 +229,8 @@ class ActionDefaultTest(base.EngineTestCase):
|
|||
calls = [mock.call('GET', url, params=None, data=None,
|
||||
headers=None, cookies=None,
|
||||
allow_redirects=None, proxies=None,
|
||||
auth=EXPECTED_ENV_AUTH, timeout=60)
|
||||
auth=EXPECTED_ENV_AUTH, verify=None,
|
||||
timeout=60)
|
||||
for url in wf_input['links']]
|
||||
|
||||
requests.request.assert_has_calls(calls, any_order=True)
|
||||
|
|
|
@ -25,7 +25,7 @@ class ActionManagerTest(base.DbTestCase):
|
|||
"url, method=GET, params=None, body=None, "
|
||||
"headers=None, cookies=None, auth=None, "
|
||||
"timeout=None, allow_redirects=None, "
|
||||
"proxies=None"
|
||||
"proxies=None, verify=None"
|
||||
)
|
||||
|
||||
self.assertEqual(http_action_input, std_http.input)
|
||||
|
|
|
@ -26,7 +26,7 @@ class InspectUtilsTest(base.BaseTest):
|
|||
"url, method=GET, params=None, body=None, "
|
||||
"headers=None, cookies=None, auth=None, "
|
||||
"timeout=None, allow_redirects=None, "
|
||||
"proxies=None"
|
||||
"proxies=None, verify=None"
|
||||
)
|
||||
|
||||
self.assertEqual(http_action_params, parameters_str)
|
Loading…
Reference in New Issue