Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]
Created 07-28-2017 06:51 AM
Hi, I am just trying to automate the deployment using blueprints.
Step 1, I am exporting blueprint of my existing cluster by invoking below url
HTTP Get
http://<ambariserverhost>:8080/api/v1/clusters/:<myclusterName>?format=blueprint
Using basic authentication with ambari console admin user and password
Step 2, I am trying the register this exported blueprint to ambari. The url I try to post is,
http://<ambariserverhost>:8080/api/v1/blueprints/:testblueprint
And then I got the exception of "405 Method Not Allowed"
What could be the possible reason? I also tried to post the same body to another ambari which the cluster has not been created, same exception. (because I want to confirm that it's not because when I tried to register the blue print, I've already got an existing cluster).
Created 07-28-2017 06:59 AM
Why do you have an extra : colon in the step2 url ? (here: /api/v1/blueprint/:testblueprint )
Ideally the HTTP method should be "POST" and the post url should be something like following:
# curl -H "X-Requested-By: ambari" -X POST -u admin:admin http://<ambari-hostname>:8080/api/v1/blueprints/<blueprint-name>; -d @cluster_configuration.json Example: # curl -H "X-Requested-By: ambari" -X POST -u admin:admin http://erie1.example.com:8080/api/v1/blueprints/testblueprint -d @/PATH/TO/cluster_configuration.json
.
More details: https://community.hortonworks.com/articles/47170/automate-hdp-installation-using-ambari-blueprints.h...
Created 07-28-2017 06:59 AM
Why do you have an extra : colon in the step2 url ? (here: /api/v1/blueprint/:testblueprint )
Ideally the HTTP method should be "POST" and the post url should be something like following:
# curl -H "X-Requested-By: ambari" -X POST -u admin:admin http://<ambari-hostname>:8080/api/v1/blueprints/<blueprint-name>; -d @cluster_configuration.json Example: # curl -H "X-Requested-By: ambari" -X POST -u admin:admin http://erie1.example.com:8080/api/v1/blueprints/testblueprint -d @/PATH/TO/cluster_configuration.json
.
More details: https://community.hortonworks.com/articles/47170/automate-hdp-installation-using-ambari-blueprints.h...
Created 07-28-2017 07:40 AM
Hi, Jay, thanks for your reply. Problem solved using curl and change the payload a little bit.
I followed the instruction documented at,
https://cwiki.apache.org/confluence/display/AMBARI/Blueprints
And I noticed the difference when I switching the tools.
When using Postman,
I have to add ":" when trigger the GET request to get blueprint, so my url is like
http://testambarihost:8080/api/v1/clusters/:mycluster?format=blueprint
And if I change the url to
http://testambarihost:8080/api/v1/clusters/mycluster?format=blueprint
I will get below exception
{ "status" : 404, "message" : "The requested resource doesn't exist: Cluster not found, clusterName=mycluster" }
When using curl,
no ":" is needed, and the post request you've mentioned works.
BTW, another modification I found required, the response body I get from step one, I need to manually remove the top level wrapper which wraps the blueprint as array items, after removing the top level wrapper of the body, I can post without issue.