52 lines
2.0 KiB
Python
Executable File
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 ""
|