X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=plugins%2FOpenStack%2FAodh%2Faodh_common.py;fp=plugins%2FOpenStack%2FAodh%2Faodh_common.py;h=28e44fcee6f92de11e078dd0ff550d43ebcd4693;hb=f358b4fdd006b427e5b653d467c29ae37a47406e;hp=0000000000000000000000000000000000000000;hpb=c0af268b2b9de10384b0a5bf80fa69168bf951d8;p=osm%2FMON.git diff --git a/plugins/OpenStack/Aodh/aodh_common.py b/plugins/OpenStack/Aodh/aodh_common.py new file mode 100644 index 0000000..28e44fc --- /dev/null +++ b/plugins/OpenStack/Aodh/aodh_common.py @@ -0,0 +1,82 @@ +"""Common methods for the Aodh Sender/Receiver.""" + +import threading +import os +import requests + +from keystoneauth1.identity import v3 +from keystoneauth1.identity.v3 import AuthMethod +from keystoneauth1 import session +from keystoneclient.v3 import client +from keystoneclient.service_catalog import ServiceCatalog + +from plugins.Openstack.settings import Config + + +class Aodh_Common(object): + """Common calls for Aodh Sender/Receiver.""" + + def __init__(self): + """Create the common instance.""" + self._auth_token = None + self._endpoint = None + self._ks = None + + def _authenticate(self): + """Authenticate and/or renew the authentication token""" + + if self._auth_token is not None: + return self._auth_token + + try: + cfg = Config.instance() + self._ks = client.Client(auth_url=cfg.OS_AUTH_URL, + username=cfg.OS_USERNAME, + password=cfg.OS_PASSWORD, + tenant_name=cfg.OS_TENANT_NAME) + self._auth_token = self._ks.auth_token + except Exception as exc: + + # TODO: Log errors + self._auth_token = None + + return self._auth_token + + def get_endpoint(self): + endpoint = self._ks.service_catalog.url_for( + service_type='alarming', + endpoint_type='internalURL', + region_name='RegionOne') + return endpoint + + @classmethod + def _perform_request(cls, url, auth_token, req_type="get", payload=None): + """Perform the POST/PUT/GET/DELETE request.""" + + # request headers + headers = {'X-Auth-Token': auth_token, + 'Content-type': 'application/json'} + # perform request and return its result + try: + if req_type == "put": + response = requests.put( + url, data=payload, headers=headers, + timeout=1) + elif req_type == "post": + response = requests.post( + url, data=payload, headers=headers, + timeout=1) + elif req_type == "get": + response = requests.get( + url, headers=headers, timeout=1) + elif req_type == "delete": + response = requests.delete( + url, headers=headers, timeout=1) + else: + print("Invalid request type") + + except Exception as e: + # Log info later + print("Exception thrown on request", e) + + return response