diff options
author | Yun Huang <yun.huang@windriver.com> | 2018-06-05 16:58:39 +0800 |
---|---|---|
committer | Yun Huang <yun.huang@windriver.com> | 2018-06-05 16:58:39 +0800 |
commit | abd7f8cac14a6873b11d70b68d909819b46ab184 (patch) | |
tree | a32211b7e5861ec22ff85361f38d884134a867fc /newton | |
parent | f79a03eef004b389aa3b9ad93e82f19c0d3aacd2 (diff) |
Fix check capacity exception for newton and ocatav1.1.22.0.0-ONAP2.0.0-ONAP
Change-Id: I6ed7722ee0a8e4148d9a0ed9414c736187bdedf3
Issue-ID: MULTICLOUD-168
Signed-off-by: Yun Huang <yun.huang@windriver.com>
Diffstat (limited to 'newton')
-rw-r--r-- | newton/newton/resource/views/capacity.py | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/newton/newton/resource/views/capacity.py b/newton/newton/resource/views/capacity.py index 8ea37062..973bc980 100644 --- a/newton/newton/resource/views/capacity.py +++ b/newton/newton/resource/views/capacity.py @@ -61,12 +61,28 @@ class CapacityCheck(APIView): resp = sess.get(req_resouce, endpoint_filter=service) content = resp.json() compute_limits = content['limits']['absolute'] - + #get total resource of this cloud region - req_resouce = "/os-hypervisors/statistics" - resp = sess.get(req_resouce, endpoint_filter=service) - content = resp.json() - hypervisor_statistics = content['hypervisor_statistics'] + try: + req_resouce = "/os-hypervisors/statistics" + self._logger.info("check os-hypervisors statistics> URI:%s" % req_resouce) + resp = sess.get(req_resouce, endpoint_filter=service) + self._logger.info("check os-hypervisors statistics> status:%s" % resp.status_code) + content = resp.json() + hypervisor_statistics = content['hypervisor_statistics'] + self._logger.debug("check os-hypervisors statistics> resp data:%s" % content) + except HttpError as e: + if e.http_status == status.HTTP_403_FORBIDDEN: + # Due to non administrator account cannot get hypervisor data, + # so construct enough resource data + conVCPUS = int(resource_demand['vCPU']) + conFreeRamMB = int(resource_demand['Memory']) + conFreeDiskGB = int(resource_demand['Storage']) + self._logger.info("Non administator forbidden to access hypervisor statistics data") + hypervisor_statistics = {'vcpus_used':0, 'vcpus':conVCPUS, 'free_ram_mb':conFreeRamMB, 'free_disk_gb':conFreeDiskGB} + else: + # non forbiden exeption will be redirected + raise e #get storage limit for this tenant service['service_type'] = 'volumev2' @@ -93,11 +109,11 @@ class CapacityCheck(APIView): remainStorage = remainHypervisorStorage # compare resource demanded with available - if (int(resource_demand['vCPU']) >= remainVCPU): + if (int(resource_demand['vCPU']) > remainVCPU): hasEnoughResource = False - elif (int(resource_demand['Memory']) >= remainMEM): + elif (int(resource_demand['Memory']) > remainMEM): hasEnoughResource = False - elif (int(resource_demand['Storage']) >= remainStorage): + elif (int(resource_demand['Storage']) > remainStorage): hasEnoughResource = False else: hasEnoughResource = True |