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.
>>
>

Reply via email to