Pass cookies along with crumb in Jenkins API requests
PROD-34651
Change-Id: Iff820929b33f192cce4ec720d5cc9c9dbf80329f
diff --git a/_modules/jenkins_common.py b/_modules/jenkins_common.py
index 225042f..64cede6 100644
--- a/_modules/jenkins_common.py
+++ b/_modules/jenkins_common.py
@@ -62,7 +62,7 @@
if not jenkins_url:
raise SaltInvocationError('No Jenkins URL found.')
- token_obj = get_api_crumb(jenkins_url, jenkins_user, jenkins_password)
+ token_obj, req_cookies = get_api_crumb(jenkins_url, jenkins_user, jenkins_password)
req_data = {"script": render_groovy_script(script, props)}
if token_obj:
req_data[token_obj["crumbRequestField"]] = token_obj["crumb"]
@@ -70,7 +70,7 @@
logger.debug("Calling Jenkins script API with URL: %s", jenkins_url)
req = requests.post('%s/scriptText' % jenkins_url,
auth=(jenkins_user, jenkins_password) if jenkins_user else None,
- data=req_data)
+ data=req_data, cookies=req_cookies)
ret["code"] = req.status_code
ret["msg"] = req.text
if req.status_code in success_status_codes:
@@ -112,14 +112,14 @@
auth=(jenkins_user, jenkins_password) if jenkins_user else None)
if tokenReq.status_code == 200:
logger.debug("Got Jenkins API crumb: %s", tokenReq.json())
- return tokenReq.json()
+ return tokenReq.json(), tokenReq.cookies
elif tokenReq.status_code in [404, 401, 502, 503]:
# 404 means CSRF security is disabled, so api crumb is not necessary,
# 401 means unauthorized
# 50x means jenkins is unavailabe - fail in call_groovy_script, but
# not here, to handle exception in state
logger.debug("Got error %s: %s", str(tokenReq.status_code), tokenReq.reason)
- return None
+ return None, None
else:
raise Exception("Cannot obtain Jenkins API crumb. Status code: %s. Text: %s" %
(tokenReq.status_code, tokenReq.text))