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]

Community Articles

Find and share helpful community-sourced technical articles.
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!
Labels (1)
avatar
Super Guru

Pre-requisites

Hortonworks Data Platform 2.5 on CentOS 7.2

Python distribution that comes with HDP 2.5 - Python 2.7.5

Download and install pip

#wget https://bootstrap.pypa.io/get-pip.py

Install add-on package

#pip install requests

Start Python CLI (default version)

#python

Import pre-reqs

>>>import requests
>>>import json
>>>import sys

Environment Variables

Set Ambari domain variable to the IP address or FQDN of your Ambari node.

>>>AMBARI_DOMAIN = '127.0.0.1'

Set Ambari port, Ambari user and password variables to match your specifics.

>>>AMBARI_PORT = '8080'
>>>AMBARI_USER_ID = 'admin'
>>>AMBARI_USER_PW = 'admin'

Set the following variable to the IP address or FQDN of your ResourceManager node.

>>>RM_DOMAIN = '127.0.0.1'

Set Resource Manager port variable

>>>RM_PORT = '8088'

Ambari REST API Call Examples

Let's find Cluster Name, Cluster Version, Stack and Stack Version:

>>>restAPI='/api/v1/clusters'
>>>url="http://"+AMBARI_DOMAIN+":"+AMBARI_PORT+restAPI
>>>r=requests.get(url, auth=(AMBARI_USER_ID, AMBARI_USER_PW))
>>>json_data=json.loads(r.text)
>>>CLUSTER_NAME = json_data["items"][0]["Clusters"]["cluster_name"]
>>>print(CLUSTER_NAME)
>>>CLUSTER_VERSION =json_data["items"][0]["Clusters"]["version"]
>>>print(CLUSTER_VERSION)
>>>STACK = CLUSTER_VERSION.split('-')[0]
>>>print(STACK)
>>>STACK_VERSION = CLUSTER_VERSION.split('-')[1]
>>>print(STACK_VERSION)
>>>CLUSTER_INFO=json_data
>>>print(CLUSTER_INFO)

Let's find HDP stack repository:

>>>restAPI = "/api/v1/stacks/"+STACK+"/versions/"+STACK_VERSION+"/operating_systems/redhat7/repositories/"+CLUSTER_VERSION
>>>url = "http://"+AMBARI_DOMAIN+":"+AMBARI_PORT+restAPI
>>>r= requests.get(url, auth=(AMBARI_USER_ID, AMBARI_USER_PW))
>>>json_data=json.loads(r.text)
>>>print(json_data)
>>>REPOSITORY_NAME=json_data["Repositories"]["latest_base_url"]
>>>print(REPOSITORY_NAME)

A more elegant approach is to create utility functions. See my repo: https://github.com/cstanca1/HDP-restAPI/

restAPIFunctions.py script in the repo defines a number of useful functions that I have collected over time.

Run restAPIFunctions.py

The same example presented above can now be implemented with a single line call to get CLUSTER_NAME, CLUSTER_VERSION and CLUSTER_INFO using getClusterVersionAndName() function:

>>>CLUSTER_NAME,CLUSTER_VERSION,CLUSTER_INFO = getClusterVersionAndName()
>>>print(CLUSTER_NAME)
>>>print(CLUSTER_VERSION)
>>>print(CLUSTER_INFO)

Resource Manager REST API Call Examples

>>>RM_INFO=getResourceManagerInfo()
>>>RM_SCHEDULER_INFO=getRMschedulerInfo()
>>>print(RM_INFO)
>>>print(RM_SCHEDULER_INFO)

Other Functions

These are other functions included in restAPIFunctions.py script

getServiceActualConfigurations()
getClusterRepository()
getAmbariHosts()
getResourceManagerInfo()
getRMschedulerInfo()
getAppsSummary()
getNodesSummary()
getServiceConfigTypes()
getResourceManagerMetrics()
getCheckClusterForRollingUpgrades()
5,774 Views
Version history
Last update:
‎02-05-2020 12:10 AM
Updated by:
Contributors