Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python
import optparse
import httplib
import json
import time
import os
import sys
import math
class api_response():
__status = None
__data = None
__msg = None
def __init__(self, status, data, msg):
self.setStatus(status)
self.setData(data)
self.setMsg(msg)
def setStatus(self, status):
self.__status = status
def getStatus(self):
return self.__status
def setData(self, data):
self.__data = data
def getData(self):
return self.__data
def setMsg(self, msg):
self.__msg = msg
def getMsg(self):
return self.__msg
class api_request():
@staticmethod
def httpGet(url, host, port, header):
conn = httplib.HTTPConnection(host, port)
conn.request("GET", url, headers = header)
res = conn.getresponse()
response = api_response(res.status, res.read(), res.msg)
return response
@staticmethod
def httpsGet(url, host, port, header):
conn = httplib.HTTPSConnection(host, port)
conn.request("GET", url, headers = header)
res = conn.getresponse()
response = api_response(res.status, res.read(), res.msg)
return response
@staticmethod
def httpPost(url, host, port, params, headers):
conn = httplib.HTTPConnection(host, port)
conn.request("POST", url, params, headers)
res = conn.getresponse()
response = api_response(res.status, res.read(), res.msg)
return response
@staticmethod
def httpsPost(url, host, port, params, headers):
conn = httplib.HTTPSConnection(host, port)
conn.request("POST", url, params, headers)
res = conn.getresponse()
response = api_response(res.status, res.read(), res.msg)
return response
class Ceilometer:
__username = ''
__tenant = ''
__token = ''
__password = ''
__tenantID = None
__server = ''
def __init__(self, tenant, username, password, server, port):
auth = '{"auth": {"tenantName": "%s", "passwordCredentials": {"username": "%s", "password": "%s"}}}' % (tenant, username, password)
header = {"Content-Type": "application/json", "Accept": "application/json"}
res = api_request.httpsPost('/v2.0/tokens', server, port, auth, header)
res_json = json.loads(res.getData())
# print json.dumps(res_json, sort_keys=True, indent=4)
self.setUsername(username)
self.setTenant(tenant)
self.setTenantID(res_json['access']['token']['tenant']['id'])
self.setToken(res_json['access']['token']['id'])
self.setPassword(password)
self.__server=server
def setUsername(self, username):
self.__username = username
def setPassword(self, password):
self.__password = password
def setTenant(self, tenant):
self.__tenant = tenant
def getTenant(self):
return self.__tenant
def setTenantID(self, tenantID):
self.__tenantID = tenantID
def getTenantID(self):
return self.__tenantID
def setToken(self, token):
self.__token = token
def getToken(self):
return self.__token
def getAuth(self):
return {"X-Auth-Token": self.__token}
def getMeter(self, meter, resource_id):
url = "/v2/meters/%s?q.field=resource_id&q.op=eq&q.value=%s&limit=1" % (meter, resource_id )
res = api_request.httpGet(url, self.__server, 8777, self.getAuth())
# print res.getStatus(), res.getMsg()
res_json = json.loads(res.getData())
# print json.dumps(res_json, sort_keys=True, indent=4)
# return res_json[0]['counter_volume']
meter = res_json[0]['counter_volume']
# if type(meter) is float:
# meter = math.floor(meter)
return meter
def main():
ceilometer=Ceilometer('service', 'ceilometer', 'PASSWORD', 'prisma-cloud.ba.infn.it', 5000)
# print ceilometer.getMeter('cpu_util', '407480dd-7ba2-40d2-8686-2be78c93c6d6')
print ceilometer.getMeter(sys.argv[1], sys.argv[2])
if __name__ == "__main__":
main()