Support Questions
Find answers, ask questions, and share your expertise
Announcements
Alert: Welcome to the Unified Cloudera Community. Former HCC members be sure to read and learn how to activate your account here.

how to know if API succeeded to restart all services

Solved Go to solution
Highlighted

how to know if API succeeded to restart all services

with the following API I restart all services in ambari that required restart

curl -sH "X-Requested-By: ambari" -u USER:$PASSWD -i http://$SERVER:8080/api/v1/clusters/$CLUSTER_NAME/requests?fields=Requests/request_status

how to know if API succeeded to restart all services ?

for example

we get true in case all services restart succsfuly

we get false when one or more services are failed

Michael-Bronson
1 ACCEPTED SOLUTION

Accepted Solutions

Re: how to know if API succeeded to restart all services

Super Mentor

@Michael Bronson

You can make the following API call to check whether the "Restart all required services" got successfully COMPLETD or not? Or it got failed? By keep tracking the "request_status".

#  curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests?fields=Requests/id,Requests... | grep -A2 -B3 "Restart all required services"

.

Output Example:

      "Requests" : {
        "cluster_name" : "TestCluster",
        "id" : 789,
        "request_context" : "Restart all required services",
        "request_status" : "COMPLETED"
      }

.

If you want to know what got failed then you have the request id (789) to find out what went wrong:

#  curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests/789

.

In order to get more fine grained output like which Task got failed on which Host during "Restart all required services" operation, you can make the following kind of API call once you know the request id from above calls.

#  curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests/789/tasks?fields=Tasks/comm...

.

8 REPLIES 8

Re: how to know if API succeeded to restart all services

Super Mentor

@Michael Bronson

You can make the following API call to check whether the "Restart all required services" got successfully COMPLETD or not? Or it got failed? By keep tracking the "request_status".

#  curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests?fields=Requests/id,Requests... | grep -A2 -B3 "Restart all required services"

.

Output Example:

      "Requests" : {
        "cluster_name" : "TestCluster",
        "id" : 789,
        "request_context" : "Restart all required services",
        "request_status" : "COMPLETED"
      }

.

If you want to know what got failed then you have the request id (789) to find out what went wrong:

#  curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests/789

.

In order to get more fine grained output like which Task got failed on which Host during "Restart all required services" operation, you can make the following kind of API call once you know the request id from above calls.

#  curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests/789/tasks?fields=Tasks/comm...

.

Re: how to know if API succeeded to restart all services

@Jay I think the following syntax is more fit for my case

 curl -sH "X-Requested-By: ambari" -u admin:admin -i http://$SERVER:8080/api/v1/clusters/$cluster_name/requests?fields=Requests/request_status |  awk '/request_status/' | tail -1  | egrep -iq "FAILED|ABORTED"

it will capture the last status , and if this fail or abort then the status is fail

what you think?

Michael-Bronson

Re: how to know if API succeeded to restart all services

Super Mentor

@Michael Bronson

If you simply wants to know if the "Restart all required services" was successfully completed or not then you can simply make the same old API call as following:

# curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests?fields=Requests/id,Requests... | grep -A2 -B3 "Restart all required services" | grep 'request_status'

.

Either the operation will be COMPLETED or FAILED|ABORTED.

# curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://hdfcluster1.example.com:8080/api/v1/clusters/TestCluster/requests?fields=Requests/id,Requests... | grep -A2 -B3 "Restart all required services" | grep 'request_status'
        "request_status" : "COMPLETED"

.

Re: how to know if API succeeded to restart all services

@Jay in my case we get the following

and the expected results should be only the last line ( last restart results )

curl -sH "X-Requested-By: ambari" -u admin:admin -X GET http://$server:8080/api/v1/clusters/$cluster/requests?fields=Requests/id,Requests/request_status,Req... | grep -A2 -B3 "Restart all required services" | grep 'request_status'
        "request_status" : "COMPLETED"
        "request_status" : "COMPLETED"
        "request_status" : "COMPLETED"
        "request_status" : "FAILED"
        "request_status" : "COMPLETED"
Michael-Bronson

Re: how to know if API succeeded to restart all services

@Jay see also what are the real latest restart status

      "href" : "http://master:8080/api/v1/clusters/HDP/requests/186",
      "Requests" : {
        "cluster_name" : "HDP",
        "id" : 186,
        "request_context" : "Restart all components for ZooKeeper",
        "request_status" : "ABORTED"
      }
    },
    {
      "href" : "http://master:8080/api/v1/clusters/HDP/requests/187",
      "Requests" : {
        "cluster_name" : "HDP",
        "id" : 187,
        "request_context" : "Restart all components for Kafka",
        "request_status" : "COMPLETED"
      }
    },
    {
      "href" : "http://master:8080/api/v1/clusters/HDP/requests/188",
      "Requests" : {
        "cluster_name" : "HDP",
        "id" : 188,
        "request_context" : "Restart all components for Kafka",
        "request_status" : "COMPLETED"
      }
    }
  ]
Michael-Bronson

Re: how to know if API succeeded to restart all services

Super Mentor

@Michael Bronson

By "latest restart status" do you mean a particular "Component" restart (like NameNode, DataNode..etc) Or a particular Service Restart ("HDFS" service / Yarn Service restart status?)

Re: how to know if API succeeded to restart all services

@Jay,

as you know we run the API that restart all req services,

and what we mean is that we want to capture only the last status from restart action , ( so the req ID should be only the last ) ,

for example , if now the last req id is 187 , then on the next restart it will be 188 , so we want to capture only the status of req id - 188 ( fail / ok )

but as I mentioned my syntax is give this

curl -sH "X-Requested-By: ambari" -u admin:admin -i http://$SERVER:8080/api/v1/clusters/$cluster_name/requests?fields=Requests/request_status | awk '/request_status/' | tail -1 | egrep -iq "FAILED|ABORTED"
[[ $? -eq 0 ]] && echo fail || echo ok
Michael-Bronson

Re: how to know if API succeeded to restart all services

Explorer

Is there any way to restart an ABORTED or FAILED request?

Don't have an account?
Coming from Hortonworks? Activate your account here