X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FMON.git;a=blobdiff_plain;f=osm_mon%2Fcollector%2Fvnf_collectors%2Fvrops%2Fvrops_helper.py;fp=osm_mon%2Fcollector%2Fvnf_collectors%2Fvrops%2Fvrops_helper.py;h=39d3238162c585563730c35e6f2c13731cdd1586;hp=75819fcf6a823875106a4a92cda1507dc4d2964d;hb=881ff3b6660a1608f26712821ae7e22fdf913a70;hpb=4509db85e33d7be00c12548a1d1d93cc94c6ebab diff --git a/osm_mon/collector/vnf_collectors/vrops/vrops_helper.py b/osm_mon/collector/vnf_collectors/vrops/vrops_helper.py index 75819fc..39d3238 100644 --- a/osm_mon/collector/vnf_collectors/vrops/vrops_helper.py +++ b/osm_mon/collector/vnf_collectors/vrops/vrops_helper.py @@ -53,15 +53,32 @@ class vROPS_Helper(): self.vrops_user = vrops_user self.vrops_password = vrops_password + def get_vrops_token(self): + """Fetches token from vrops + """ + auth_url = '/suite-api/api/auth/token/acquire' + headers = {'Content-Type': 'application/json', 'Accept': 'application/json'} + req_body = {"username": self.vrops_user, "password": self.vrops_password} + resp = requests.post(self.vrops_site + auth_url, + json=req_body, verify=False, + headers=headers) + if resp.status_code != 200: + log.error("Failed to get token from vROPS: {} {}".format(resp.status_code, + resp.content)) + return None + + resp_data = json.loads(resp.content.decode('utf-8')) + return resp_data['token'] + def get_vm_resource_list_from_vrops(self): """ Find all known resource IDs in vROPs """ + auth_token = self.get_vrops_token() api_url = '/suite-api/api/resources?resourceKind=VirtualMachine' - headers = {'Accept': 'application/json'} + headers = {'Accept': 'application/json', 'Authorization': 'vRealizeOpsToken {}'.format(auth_token)} resource_list = [] resp = requests.get(self.vrops_site + api_url, - auth=(self.vrops_user, self.vrops_password), verify=False, headers=headers) if resp.status_code != 200: @@ -117,10 +134,12 @@ class vROPS_Helper(): # Now we can make a single call to vROPS to collect all relevant metrics for resources we need to monitor api_url = "/suite-api/api/resources/stats?IntervalType=MINUTES&IntervalCount=1"\ "&rollUpType=MAX¤tOnly=true{}{}".format(stats_key, resource_ids) - headers = {'Accept': 'application/json'} + + auth_token = self.get_vrops_token() + headers = {'Accept': 'application/json', 'Authorization': 'vRealizeOpsToken {}'.format(auth_token)} resp = requests.get(self.vrops_site + api_url, - auth=(self.vrops_user, self.vrops_password), verify=False, headers=headers) + verify=False, headers=headers) if resp.status_code != 200: log.error("Failed to get Metrics data from vROPS for {} {}".format(resp.status_code,