shellscripts/aws/emr/cluster-info.py

52 lines
2.0 KiB
Python
Executable File

#!/usr/bin/python
import boto3
client = boto3.client('emr')
clusters = client.list_clusters(
ClusterStates=[
'STARTING','BOOTSTRAPPING','RUNNING','WAITING',
],
)['Clusters']
results = []
for i in range(0,len(clusters)):
clusterId = clusters[i]['Id'].encode('utf-8')
clusterName = clusters[i]['Name'].encode('utf-8')
if len(clusterName) > 24:
clusterName = clusterName[:24][:-3]+"..."
clusterState = clusters[i]['Status']['State'].encode('utf-8')
instanceGroups = client.list_instance_groups(ClusterId=clusterId)['InstanceGroups']
tRun = 0
tReq = 0
tId = ""
cRun = 0
cReq = 0
cId = ""
for j in instanceGroups:
if j['InstanceGroupType'] == "TASK":
tRun = j['RunningInstanceCount']
tReq = j['RequestedInstanceCount']
tId = j['Id'].encode('utf-8')
if j['InstanceGroupType'] == "CORE":
cRun = j['RunningInstanceCount']
cReq = j['RequestedInstanceCount']
cId = j['Id'].encode('utf-8')
if tReq == 0:
tId = "N/A"
if cReq ==0:
cId = "N/A"
data = dict([('ClusterId',clusterId),('Name',clusterName),('State',clusterState),('CoreGroup',cId),('CoreRequested',cReq),('CoreRunning',cRun),('TaskGroup',tId),('TaskRequested',tReq),('TaskRunning',tRun)])
results.append(data)
print ""
print ""
print "{:<16} {:<24} {:<13} {:<16} {:<7} {:<7} {:<16} {:<7} {:<7}".format('Cluster','Name','State','Core','CoreReq','CoreRun','TaskGroup','TaskReq','TaskRun')
print '---------------- ------------------------ ------------- ---------------- ------- ------- ---------------- ------- -------'
for i in results:
print "{:<16} {:<24} {:<13} {:<16} {:<7} {:<7} {:<16} {:<7} {:<7}".format(i['ClusterId'], i['Name'], i['State'], i['CoreGroup'], i['CoreRequested'], i['CoreRunning'], i['TaskGroup'], i['TaskRequested'], i['TaskRunning'])
print ""
print ""