That's it. A clever solution indeed. How about starting the services then? How to quickly exclude client components? "message" : "java.lang.IllegalArgumentException: Invalid desired state for a client component"
There is a filter like this ServiceComponentInfo/category.in(SLAVE,MASTER) On Thu, Apr 9, 2015 at 7:41 AM Sumit Mohanty <[email protected]> wrote: > You can try something like this .... > > > curl -u admin:admin -H "X-Requested-By: ambari" -i -X PUT -d > '{"RequestInfo":{"context":"Stop All Host > Components"},"Body":{"HostRoles":{"state":"INSTALLED"}}}' " > http://u1201.ambari.apache.org:8080/api/v1/clusters/c1/host_components?HostRoles/host_name=u1201.ambari.apache.org&HostRoles/state=STARTED > " > > > Predicates such as "HostRoles/host_name=u1201.ambari.apache.org& > HostRoles/state=STARTED" will help narrow down the choices. > > > ------------------------------ > *From:* Krzysztof Adamski <[email protected]> > *Sent:* Wednesday, April 08, 2015 10:11 PM > *To:* [email protected] > > *Subject:* Re: Start/stop all services programmatically > Hi Yusaku, > > Many thanks for pointing me to the dependancies file. It would help a > lot. > > The problem with the *stop all* command you sent is that this for all > services within the cluster and I want to do this explicitly on a host > basis to perform a rolling OS patching. > Another issue is that specifying *state:INSTALL *would result in > installing client components on the hosts where I do not want to have them > e.g. data nodes. > Unless I did something wrong. > > Regards, > Krzysztof > > > On Thu, Apr 9, 2015 at 2:34 AM Yusaku Sako <[email protected]> wrote: > >> Sorry, forgot to answer your second question regarding dependencies. >> Such dependencies are specified in a file called role_command_order.json >> as part of the stack defintion. >> >> https://github.com/apache/ambari/blob/trunk/ambari- >> server/src/main/resources/stacks/HDP/2.0.6/role_command_order.json >> >> If you try to start/stop all services in bulk, the command order rules >> will be followed automatically by the server. >> >> Yusaku >> >> From: Yusaku Sako <[email protected]> >> Reply-To: "[email protected]" <[email protected]> >> Date: Wednesday, April 8, 2015 5:27 PM >> To: "[email protected]" <[email protected]> >> Subject: Re: Start/stop all services programmatically >> >> 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]> >> Reply-To: "[email protected]" <[email protected]> >> Date: Tuesday, April 7, 2015 12:15 AM >> To: "[email protected]" <[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/?Serv >> iceComponentInfo/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/clus >> ters/ing_hdp/hosts/host1/host_components/$1 >> >> } >> >> Thanks for any guide. >> >
