Fixed credentials enforcing in case of disabled jenkins security
diff --git a/_modules/jenkins_common.py b/_modules/jenkins_common.py
index 00698b2..fcb8984 100644
--- a/_modules/jenkins_common.py
+++ b/_modules/jenkins_common.py
@@ -22,23 +22,24 @@
jenkins_url, jenkins_user, jenkins_password = get_jenkins_auth()
if not jenkins_url:
raise SaltInvocationError('No Jenkins URL found.')
- tokenObj = get_api_crumb(jenkins_url, jenkins_user, jenkins_password)
- if tokenObj:
- logger.debug("Calling Jenkins script API with URL: %s",jenkins_url)
- req = requests.post('%s/scriptText' % jenkins_url,
- auth=(jenkins_user, jenkins_password),
- data={tokenObj["crumbRequestField"]: tokenObj["crumb"],
- "script": render_groovy_script(script, props)})
- ret["code"] = req.status_code
- if req.status_code == 200:
- ret["status"] = "SUCCESS"
- logger.debug("Jenkins script API call success")
- ret["msg"] = req.text
- else:
- logger.error("Jenkins script API call failed. \
- Return code %s. Text: %s", req.status_code,req.text)
+
+ token_obj = 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"]
+
+ logger.debug("Calling Jenkins script API with URL: %s", jenkins_url)
+ req = requests.post('%s/scriptText' % jenkins_url,
+ auth=(jenkins_user, jenkins_password),
+ data=req_data)
+ ret["code"] = req.status_code
+ if req.status_code == 200:
+ ret["status"] = "SUCCESS"
+ ret["msg"] = req.text
+ logger.debug("Jenkins script API call success: %s", ret)
else:
- logger.error("Cannot call Jenkins script API, Token is invalid!")
+ logger.error("Jenkins script API call failed. \
+ Return code %s. Text: %s", req.status_code, req.text)
return ret
@@ -68,12 +69,15 @@
jenkins_url, jenkins_user, jenkins_password = get_jenkins_auth()
logger.debug("Obtaining Jenkins API crumb for URL: %s", jenkins_url)
tokenReq = requests.get("%s/crumbIssuer/api/json" % jenkins_url,
- auth=(jenkins_user, jenkins_password) if jenkins_user else None)
+ auth=(jenkins_user, jenkins_password) if jenkins_user else None)
if tokenReq.status_code == 200:
return tokenReq.json()
+ elif tokenReq.status_code == 404:
+ # 404 means CSRF security is disabled, so api crumb is not necessary
+ return None
else:
- logger.error("Cannot obtain Jenkins API crumb. Status code: %s. Text: %s",
- tokenReq.status_code,tokenReq.text)
+ raise Exception("Cannot obtain Jenkins API crumb. Status code: %s. Text: %s" %
+ tokenReq.status_code, tokenReq.text)