Openstack-Aodh plugin
[osm/MON.git] / plugins / OpenStack / Aodh / aodh_common.py
1 """Common methods for the Aodh Sender/Receiver."""
2
3 import threading
4 import os
5 import requests
6
7 from keystoneauth1.identity import v3
8 from keystoneauth1.identity.v3 import AuthMethod
9 from keystoneauth1 import session
10 from keystoneclient.v3 import client
11 from keystoneclient.service_catalog import ServiceCatalog
12
13 from plugins.Openstack.settings import Config
14
15
16 class Aodh_Common(object):
17 """Common calls for Aodh Sender/Receiver."""
18
19 def __init__(self):
20 """Create the common instance."""
21 self._auth_token = None
22 self._endpoint = None
23 self._ks = None
24
25 def _authenticate(self):
26 """Authenticate and/or renew the authentication token"""
27
28 if self._auth_token is not None:
29 return self._auth_token
30
31 try:
32 cfg = Config.instance()
33 self._ks = client.Client(auth_url=cfg.OS_AUTH_URL,
34 username=cfg.OS_USERNAME,
35 password=cfg.OS_PASSWORD,
36 tenant_name=cfg.OS_TENANT_NAME)
37 self._auth_token = self._ks.auth_token
38 except Exception as exc:
39
40 # TODO: Log errors
41 self._auth_token = None
42
43 return self._auth_token
44
45 def get_endpoint(self):
46 endpoint = self._ks.service_catalog.url_for(
47 service_type='alarming',
48 endpoint_type='internalURL',
49 region_name='RegionOne')
50 return endpoint
51
52 @classmethod
53 def _perform_request(cls, url, auth_token, req_type="get", payload=None):
54 """Perform the POST/PUT/GET/DELETE request."""
55
56 # request headers
57 headers = {'X-Auth-Token': auth_token,
58 'Content-type': 'application/json'}
59 # perform request and return its result
60 try:
61 if req_type == "put":
62 response = requests.put(
63 url, data=payload, headers=headers,
64 timeout=1)
65 elif req_type == "post":
66 response = requests.post(
67 url, data=payload, headers=headers,
68 timeout=1)
69 elif req_type == "get":
70 response = requests.get(
71 url, headers=headers, timeout=1)
72 elif req_type == "delete":
73 response = requests.delete(
74 url, headers=headers, timeout=1)
75 else:
76 print("Invalid request type")
77
78 except Exception as e:
79 # Log info later
80 print("Exception thrown on request", e)
81
82 return response