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

Reply via email to