Конвертировать CURL в Python вызов - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь опубликовать через вызов API в Jenkins, следующие команды CURL работают и параметры применяются правильно.

curl -X POST -v http://localhost:8080/job/DNS_Tool_v1/build --user user01:1231121212121212121212 --data-urlencode json='{"parameter": [{"name": "registration_action","value": "DDNS_only"},{"name": "Note:", "value": "test01"},{"name": "entries","value": "add, hostname01.local.example.com, 192.168.1.1/24\nremove, hostname01.local.example.com, 192.168.1.1/24\n" }]}'

Но по какой-то причине запросы POST не выгружают значение из dict. Что не так с этим кодом? Есть идеи? Спасибо.

PYTHON КОД:

params = {'parameter': [{"name": "registration_action", "value": "DDNS_only"}, \
          {"name": "Note:", "value": "test01"}, \
          {"name": "entries","value": "add, hostname01.local.example.com, 192.168.1.1/24\nremove, hostname01.local.example.com, 192.168.1.1/24\n" }]}

data = {'json': json.dumps(params)}
job_url = "http://{0}:{1}@{2}/job/{3}/{4}".format(user, pswd, jenkins_host, jenkins_job, jenking_action)
# output of job_url >> http://user01:1231121212121212121212@localhost:8080/job/DNS_Tool_v1/build
response = requests.post(job_url,headers={'content-type': 'application/json'},data=data)

OUTPUT Ответ Я получаю: <Response [201]> но Когда я вижу созданное задание, параметры не передаются.

КОД ОБНОВЛЕНИЯ, ОШИБКА STILL:

url = "http://localhost:8080"    
auth = (user, pswd)
crumb_data = requests.get("{0}/crumbIssuer/api/json".format(url),auth = auth,headers={'content-type': 'application/json'}, verify=False)
print(crumb_data.content)
print(crumb_data.json()['crumb'])
job_url = "http://{0}:{1}@localhost:8080/buildWithParameters".format(user, pswd)
headers = {'content-type': 'application/json', 'Jenkins-Crumb':crumb_data.json()['crumb']}
response = requests.post(job_url,headers=headers, json=params, verify=False)
print(response.text.encode('UTF-8'))

ОШИБКА

<code>b'<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>\n<title>Error 403 No valid crumb was included in the request</title>\n</head>\n<body><h2>HTTP ERROR 403</h2>\n<p>Problem accessing /job/coreinfra/job/prod/job/DNStool/job/DDNS_Tool_v1/buildWithParameters. Reason:\n<pre>    No valid crumb was included in the request

Работает на Jetty: // 9.4.z-SNAPSHOT \ n \ n \ n \ n '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...