```python
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import commands
import requests
cmip = "10.888.888.35"
#填写cm的用户名密码
cmuser = "admin"
cmpasswd = "00000000000"
cluster_name = "Cluster 1"
# 查询任务queryState=EXCEPTION or queryState=RUNNING or queryState=FINISHED & query_duration > 8m
# curl -u admin:00000000000 -X GET --header 'Accept: application/json' 'http://10.888.888.35:7180/api/v17/clusters/Cluster%201/services/impala/impalaQueries'
# curl -u admin:00000000000 -X GET --header 'Accept: application/json' 'http://10.888.888.35:7180/api/v17/clusters/Cluster%201/services/impala/impalaQueries?filter=(queryState=RUNNING or queryState=EXCEPTION)'
# curl -u admin:00000000000 'http://10.888.888.35:7180/api/v17/clusters'
# curl -u admin:00000000000 'http://10.888.888.35:7180/api/v17/clusters/Cluster%201/services'
def get_running_job():
api = "http://%s:7180/api/v17/clusters/%s/services/impala/impalaQueries?filter=(queryState=RUNNING)"%(cmip,cluster_name)
s = requests.session()
s.auth = (cmuser, cmpasswd)
try:
res = s.get(api)
data = res.json()
querys = data['queries']
except Exception:
pass
return querys
# 取消任务
def cancel_job(querys):
for query in querys:
#print query
#print query['queryId']
querytime = query['durationMillis']
queryId = query['queryId']
if querytime > 6000:
print "Use time: " + str(querytime)
canelapi = "http://%s:7180/api/v17/clusters/%s/services/impala/impalaQueries/%s/cancel"%(cmip,cluster_name,queryId)
s = requests.session()
s.auth = (cmuser, cmpasswd)
try:
#canelres = s.post(canelapi)
#caneldata = canelres.json()
print canelapi
except Exception:
pass
else:
print "Not Timeout!"
if __name__ == '__main__':
querys = get_running_job()
cancel_job(querys)