Hi Krzysztof,
You can do everything that the UI does with the API.
The best way to learn what API calls the UI is making is to use the browser's
developer tool and watch the network traffic.
Stop all services:
curl -i -uadmin:admin -H "X-Requested-By: ambari" -X PUT -d '
{"RequestInfo":{"context":"Stop all
services","operation_level":{"level":"CLUSTER","cluster_name":"ing_hdp"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}
' http://ambari:8080/api/v1/clusters/ing_hdp/services
Start all services:
curl -i -uadmin:admin -H "X-Requested-By: ambari" -X PUT -d '
{"RequestInfo":{"context":"Start all
services","operation_level":{"level":"CLUSTER","cluster_name":"ing_hdp"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}
' http://ambari:8080/api/v1/clusters/ing_hdp/services
I hope this helps.
Yusaku
From: Krzysztof Adamski
<[email protected]<mailto:[email protected]>>
Reply-To: "[email protected]<mailto:[email protected]>"
<[email protected]<mailto:[email protected]>>
Date: Tuesday, April 7, 2015 12:15 AM
To: "[email protected]<mailto:[email protected]>"
<[email protected]<mailto:[email protected]>>
Subject: Start/stop all services programmatically
Hello,
I am busy implementing a manual job to stop all hosts services via script
before rebooting the OS. The examples I found in wiki are per service or
component.
1. Is there any way to invoke the stop/start for all hosts components just like
from a web interface?
2. How ambari determines the proper order for the services to start/stop e.g.
first stop hiveserver before stopping mysql etc.
curl -s --user admin:admin -H "X-Requested-By: ambari" -X GET
"http://ambari:8080/api/v1/clusters/ing_hdp/components/?ServiceComponentInfo/category.in(SLAVE,MASTER)&host_components/HostRoles/host_name=host1&fields=host_components/HostRoles/component_name,host_components/HostRoles/state"
| jq -r '[[.items[].host_components[].HostRoles.component_name]]|tostring' |
sed -r 's/[\["]//g' | sed -r 's/[]]//g'
function stop(){
curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":
{"context" :"Stop '"$1"' via REST"}, "Body": {"HostRoles": {"state":
"INSTALLED"}}}'
http://ambari:8080/api/v1/clusters/ing_hdp/hosts/host1/host_components/$1
}
Thanks for any guide.