Our Community is getting an upgrade! To get everything ready for the relaunch, we’ll be placing the site in read-only mode starting September 21st.
We really appreciate your understanding while we get things set up behind the scenes. Catch up on all the exciting details about the move here.
Need help or have questions? Drop us a line at [email protected]

Support Questions

Find answers, ask questions, and share your expertise
Announcements
Share your experience with Cloudera on G2 and get a $25 Amazon Gift card.
Hi, I'm CLEO! Something exciting is coming to the Community. Stay Tuned!

AMBARI + how to set value in json REST API

avatar
 

the following API example , will stop the kafka service in ambari

export service=kafka

curl -u admin:admin -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"_PARSE_.STOP.$service","operation_level":{"level":"SERVICE","cluster_name":"$CLUSTER_NAME","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service 

the problem is about the syntax - _PARSE_.STOP.$service

and we see that actually service value - kafka not set in - PARSE.STOP.$service

so ambri saw the name as - PARSE.STOP.$service and not PARSE.STOP.kafka

any idea how we can set the value kafka inside the json syntax?

Michael-Bronson
1 ACCEPTED SOLUTION

avatar
Master Mentor

@mike_bronson7 

Thank you for sharing the screenshot .. it is very clean now.

Please replace the following:

"$CLUSTER_NAME" with "'"$CLUSTER_NAME"'"
"$service" with "'"$service"'"
"_PARSE_.STOP.$service" with "'"_PARSE_.STOP.$service"'"

 

In general, Replace any value which has    $ABCD with a single quote and then quote mark as  '"$ABCD"'

 

So the over all change will be "$ABCD" ----> "'"$ABCD"'"


Stop Kafka Service:

# curl -iLv -u "admin:admin" -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"'"_PARSE_.STOP.$service"'","operation_level":{"level":"SERVICE","cluster_name":"'"$CLUSTER_NAME"'","service_name":"'"$service"'"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service

 

Start Kafka Service

# curl -iLv -u "admin:admin" -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"'"_PARSE_.START.$service"'","operation_level":{"level":"SERVICE","cluster_name":"'"$CLUSTER_NAME"'","service_name":"'"$service"'"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service




 

 

View solution in original post

5 REPLIES 5

avatar
Master Mentor

@mike_bronson7 

I think the only change you will need to make is the "KAFKA" service in Uppercase because "kafka" in lowercase will not exist as a service.

Following is the example which i tested in my cluster and it works pretty fine.

# export service=kafka    (INCORRECT)

# export service=KAFKA

# curl -iLv -u "admin:admin" -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"_PARSE_.STOP.$service","operation_level":{"level":"SERVICE","cluster_name":"$CLUSTER_NAME","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service

 

In order to start KAFKA service.

# curl -iLv -u "admin:admin" -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"_PARSE_.START.$service","operation_level":{"level":"SERVICE","cluster_name":"$CLUSTER_NAME","service_name":"$service"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service

 

.

 

avatar

Dear Jay

 

yes I put KAFKA and not kafka , ( just I wrote by mistake in the post kafka instead KAFKA

but with the same problem

 

Michael-Bronson

avatar

also this is what we get from "ops" in ambari

 

you can see that ambari identify this as "$service" and not as KAFKA

 

Capture.PNG

Michael-Bronson

avatar
Master Mentor

@mike_bronson7 

Thank you for sharing the screenshot .. it is very clean now.

Please replace the following:

"$CLUSTER_NAME" with "'"$CLUSTER_NAME"'"
"$service" with "'"$service"'"
"_PARSE_.STOP.$service" with "'"_PARSE_.STOP.$service"'"

 

In general, Replace any value which has    $ABCD with a single quote and then quote mark as  '"$ABCD"'

 

So the over all change will be "$ABCD" ----> "'"$ABCD"'"


Stop Kafka Service:

# curl -iLv -u "admin:admin" -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"'"_PARSE_.STOP.$service"'","operation_level":{"level":"SERVICE","cluster_name":"'"$CLUSTER_NAME"'","service_name":"'"$service"'"}},"Body":{"ServiceInfo":{"state":"INSTALLED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service

 

Start Kafka Service

# curl -iLv -u "admin:admin" -i -H 'X-Requested-By: ambari' -X PUT -d '{"RequestInfo":{"context":"'"_PARSE_.START.$service"'","operation_level":{"level":"SERVICE","cluster_name":"'"$CLUSTER_NAME"'","service_name":"'"$service"'"}},"Body":{"ServiceInfo":{"state":"STARTED"}}}' http://$HOST:8080/api/v1/clusters/$CLUSTER_NAME/services/$service




 

 

avatar

Dear Jay

 

what to say - you are the best , 

well done 

 

Michael-Bronson