Created 04-25-2016 05:35 PM
Is there any single curl command to restart all the services with stale configurations using Ambari API ?
Created 04-25-2016 06:17 PM
Unfortunately this is not a part of the release branch. The patch is committed to trunk and scheduled for 2.4.0.
Created 04-25-2016 06:17 PM
Unfortunately this is not a part of the release branch. The patch is committed to trunk and scheduled for 2.4.0.
Created 04-25-2016 07:48 PM
Thanks @swagle
Created 04-25-2016 07:54 PM
Okay till we get single command, I have created below script which can be useful for others who has same question 🙂
[root@sandbox test12334]# cat ambari.props CLUSTER_NAME=Sandbox AMBARI_ADMIN_USER=admin AMBARI_ADMIN_PASSWORD=admin AMBARI_HOST=sandbox.hortonworks.com
[root@sandbox test12334]# cat restart_services.sh
#!/bin/bash
#Author - Kuldeep Kulkarni (http://crazyadmins.com)
#############
LOC=`pwd`
PROP=ambari.props
source $LOC/$PROP
#############
start_stale_services()
{
echo "curl -u $AMBARI_ADMIN_USER:$AMBARI_ADMIN_PASSWORD http://$AMBARI_HOST:8080/api/v1/clusters/Sandbox/host_components?HostRoles/stale_configs=true&fields=HostRoles/service_name,HostRoles/host_name&minimal_response=false"> /tmp/curl_ambari.sh
sh /tmp/curl_ambari.sh 1 > /tmp/stale_services_json 2>/dev/null
sleep 1
grep host_components /tmp/stale_services_json|grep -v stale|rev|cut -d'"' -f2|rev > /tmp/list_of_components
for URL in `cat /tmp/list_of_components`
do
curl -u $AMBARI_ADMIN_USER:$AMBARI_ADMIN_PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"HostRoles": {"state": "INSTALLED"}}' "$URL"
sleep 0.5
curl -u $AMBARI_ADMIN_USER:$AMBARI_ADMIN_PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"HostRoles": {"state": "STARTED"}}' "$URL"
done
}
start_stale_servicesNote - to run this script, you should have ambari.props and script at the same location.
I tried below curl call to stop all/start all but it did not clear the stale service restart alerts hence I had to come up with above workaround.
curl -u admin:$PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Stop HDFS via REST"}, "Body": {"ServiceInfo": {"state": "INSTALLED"}}}' http://AMBARI_SERVER_HOST:8080/api/v1/clusters/CLUSTER_NAME/servicescurl -u admin:$PASSWORD -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo": {"context" :"Stop HDFS via REST"}, "Body": {"ServiceInfo": {"state": "STARTED"}}}' http://AMBARI_SERVER_HOST:8080/api/v1/clusters/CLUSTER_NAME/services
Created 04-25-2016 07:55 PM
@swagle ^^
Created 04-25-2016 07:58 PM
The Start All/Stop All works just the same although there is a slight delay in updating the state which would mean stae alert not cleared immediately. I believe we send config tags from the agent only after a certain number if heartbeats.
However, what you have in the scrip is exactly what the UI does, so that should work just fine. (+1)
Created 04-25-2016 08:11 PM
@swagle Thank you. I will check with start all/stop all again.