Skip to content
Snippets Groups Projects
Commit 979ea630 authored by Daniele Belfiore's avatar Daniele Belfiore
Browse files

Added http/https protocol support for Ceilometer API and Keystone API

parent 66c7e3f7
No related branches found
No related tags found
No related merge requests found
ceilometer 100755 → 100644
......@@ -71,19 +71,7 @@ class api_request():
response = api_response(res.status, res.read(), res.msg)
return response
def getMeter(token_id, server, meter, resource_id):
if meter in ('cpu', 'cpu_util', 'disk.ephemeral.size', 'disk.root.size', 'memory', 'vcpus'):
url = "/v2/meters/%s?q.field=resource_id&q.op=eq&q.value=%s&limit=1" % (meter, resource_id)
elif meter in ('network.incoming.bytes', 'network.outgoing.bytes'):
url = "/v2/meters/%s?q.field=metadata.instance_id&q.op=eq&q.value=%s&limit=1" % (meter, resource_id)
else:
return "Error: unknown meter!"
res_json = json.loads(api_request.httpGet(url, server, 8777, {"X-Auth-Token": token_id}).getData())
return res_json[0]['counter_volume']
def getToken(server, tenant, username, password, port):
def getToken(server, tenant, username, password, port, protocol):
token_file_path = os.path.join(os.path.dirname(__file__), 'token_backup')
parser_token = ConfigParser.SafeConfigParser()
......@@ -93,7 +81,11 @@ def getToken(server, tenant, username, password, port):
if (not parser_token.get('token', 'expires')) or (int(float(parser_token.get('token', 'expires')) - time.time()) <= 0):
auth = '{"auth": {"tenantName": "%s", "passwordCredentials": {"username": "%s", "password": "%s"}}}' % (tenant, username, password)
header = {"Content-Type": "application/json", "Accept": "application/json"}
res = api_request.httpPost('/v2.0/tokens', server, port, auth, header)
if protocol == 'http':
res = api_request.httpPost('/v2.0/tokens', server, port, auth, header)
else:
res = api_request.httpsPost('/v2.0/tokens', server, port, auth, header)
res_json = json.loads(res.getData())
timestamp = calendar.timegm(time.strptime(res_json['access']['token']['expires'],"%Y-%m-%dT%H:%M:%SZ"))
......@@ -107,6 +99,21 @@ def getToken(server, tenant, username, password, port):
return parser_token.get('token', 'id')
def getMeter(token_id, server, protocol, meter, resource_id):
if meter in ('cpu', 'cpu_util', 'disk.ephemeral.size', 'disk.root.size', 'memory', 'vcpus'):
url = "/v2/meters/%s?q.field=resource_id&q.op=eq&q.value=%s&limit=1" % (meter, resource_id)
elif meter in ('network.incoming.bytes', 'network.outgoing.bytes'):
url = "/v2/meters/%s?q.field=metadata.instance_id&q.op=eq&q.value=%s&limit=1" % (meter, resource_id)
else:
return "Error: unknown meter!"
if protocol == 'http':
res_json = json.loads(api_request.httpGet(url, server, 8777, {"X-Auth-Token": token_id}).getData())
else:
res_json = json.loads(api_request.httpsGet(url, server, 8777, {"X-Auth-Token": token_id}).getData())
return res_json[0]['counter_volume']
def main():
config_file_path = os.path.join(os.path.dirname(__file__), 'proxy.conf')
parser_config = ConfigParser.SafeConfigParser()
......@@ -117,10 +124,13 @@ def main():
username = parser_config.get('ceilometer', 'username')
password = parser_config.get('ceilometer', 'password')
port = parser_config.get('ceilometer', 'port')
protocol = parser_config.get('ceilometer', 'protocol')
protocol_keystone = parser_config.get('keystone', 'protocol')
token_id = getToken(server, tenant, username, password, port)
token_id = getToken(server, tenant, username, password, port, protocol_keystone)
print getMeter(token_id, server, sys.argv[1], sys.argv[2])
print getMeter(token_id, server, protocol, sys.argv[1], sys.argv[2])
if __name__ == "__main__":
main()
File mode changed from 100644 to 100755
prisma-iaas.sh 100644 → 100755
File mode changed from 100644 to 100755
......@@ -4,3 +4,7 @@ tenant =
username =
password =
port =
protocol =
[keystone]
protocol =
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment