Using the Cloudera Manager API to Set Advanced Configuration Snippets (Safety Valves)
You can use the Cloudera Manager API to set service configuration properties.
You must have network access to the Cloudera Manager Admin
Console.
-
Find the name of the configuration property.
- Go to the Cloudera Manager Configuration Property Reference and navigate to the page for the Cloudera Runtime version and service you want to configure.
- Search through the page for the Advanced Configuration Snippet property.
- Copy the value of the API Name.
- Determine whether the Advanced Configuration Snippet property
is defined using name/value pairs or XML:
-
Log into a host with network access to the Cloudera Manager Admin
Console using ssh, and run one of the following commands:
- Snippet is defined using name/value
pairs:
For example, the following command changes the value of the HDFS Replication Environment Advanced Configuration Snippet (Safety Valve) in the HDFS-1 service in Cluster 1 tocurl -X PUT -u username:password "Cloudera_Manager_server_name:Cloudera_Manager_server_port/api/v43/clusters/Cluster_name/services/service_name/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"items\": [ { \"name\": \"API-Name\", \"value\": \"name=value\", \"sensitive\": false } ]}"
test=2
:
Important: The value you enter overwrites all the contents of the Snippet, so you must also include any existing values. For example, if only the following value is currently configured:curl -X PUT -u admin:admin "http://myCMserver.com:7180/api/v43/clusters/Cluster%201/services/HDFS-1/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"items\": [ { \"name\": \"hdfs_replication_env_safety_valve\", \"value\": \"test=2\", \"sensitive\": false } ]}"
foo1=bar1
, then to add an additional name/value pair, you must set the value like this:
This command sets the Advanced Configuration Snippet to the following:\"value\": \"foo1=bar1 foo2=bar2\"
foo1=bar1 foo2=bar2
- Snippet is defined using
XML:
For example:curl -X PUT -u username:password "Cloudera_Manager_server_name:Cloudera_Manager_server_port/api/v43/clusters/Cluster_name/services/service_name/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"items\": [ { \"name\": \"API-Name\", \"value\": \"XML structure\", \"sensitive\": false } ]}"
This call sets the Advanced Configuration Snippet to the following:curl -X PUT -u admin:admin "http://myCMserver.com:7180/api/v43/clusters/Cluster%201/services/HDFS-1/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"items\": [ { \"name\": \"hdfs_replication_env_safety_valve\", \"value\": \"<property><name>foo</name><value>bar</value><description>Example</description></property>\", \"sensitive\": false } ]}"
<property> <name>foo</name> <value>bar</value> <description>Example</description> </property>
- Important: The value you enter overwrites all the
contents of the Snippet, so you must also include any
previously-existing
<property>
elements.
- Snippet is defined using name/value
pairs: