On 2016-08-04 16:31, GBANE FETIGUE wrote:
Hi,
I am running a python script to run some CURL commands, and return the response
which is the applicationId and the versionId. I was able to do it. Now the
versionId value supposed to be used on the second CURL as a value of the
applications key which is an array. but it doesn't work.I 'll post the error
after running the command as well as the script. It seems like I have an error
somewhere because the curl works manually if i run.
What do you put on the command line when you do it manually?
ec2-user@ip-172-31-21-77 playbooks]$ python mmc-uploader.py
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2318 0 119 100 2199 496 9173 --:--:-- --:--:-- --:--:-- 9200
Your applicationId is: local$fc9277b0-a5b1-4602-8730-714ab7472744
Your versionId is: local$423da1c8-c4e1-47af-9395-57300f839670
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 1259 100 1091 100 168 100k 15868 --:--:-- --:--:-- --:--:-- 106k
Final response<!DOCTYPE html><html><head><title>Apache Tomcat/8.0.26 - Error report</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY
{font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name
{color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> </head><body><h1>HTTP Status 415 - </h1><div class="line"></div><p><b>type</b> Status
report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server refused this request because the request entity is in a format not supported by the req
ue
sted resource for the requested method.</u></p><hr class="line"><h3>Apache
Tomcat/8.0.26</h3></body></html>
Seems the named id already exists!
That's the script :
from subprocess import check_output, STDOUT
import json
response = check_output(["curl", "--basic", "-u", "admin:admin", "-F",
"file=@/var/lib/jenkins/workspace/Demo-Ci-cd-automation/playbooks/ms3-simple-hello-world-app-1.0.0-SNAPSHOT.zip", "-F", "name=ms3-simple-hello-world-app", "-F",
"version=1.0.0", "--header", "\"Content-Type: multipart/form-data\"", "http://52.73.56.141:8080/mmc-console-3.6.2/api/repository"])
try:
parsed_response = json.loads(response)
print "Your applicationId is: " + parsed_response[u'applicationId']
version_id = parsed_response[u'versionId']
print "Your versionId is: " + version_id
Don't use a bare except because it'll catch _ANY_ exception, including
NameError, which could happen if you accidentally misspell a name.
except:
print 'Seems the named application already exists!'
print 'Seems the named versionId already exists!'
This look likes it passes curl some JSON wrapped in "'", so curl won't
see something like this:
{"key": "value"}
(a dict), it'll see something like this:
'{"key": "value"}'
(a string delimited by '...') which isn't valid JSON.
response = check_output(["curl", "--basic", "-u", "admin:admin", "-d", "'{\"name\" : \"ms3-simple-hello-world-app\" , \"servers\": [
\"local$d50bdc24-ff04-4327-9284-7bb708e21c25\" ], \"applications\": [ \"" + version_id + "\"]}'", "--header", "\'Content-Type: application/json\'",
"http://52.73.56.141:8080/mmc-console-3.6.2/api/deployments"])
print 'Final response' + response
try:
parsed_response = json.loads(response)
deployid = parsed_response[u'id']
print "Your deployid is: " + deployid
Another bare except!
except:
print 'Seems the named id already exists!'
'check_output' and related functions/methods will do the quoting for you.
--
https://mail.python.org/mailman/listinfo/python-list