diff options
author | Bin Yang <bin.yang@windriver.com> | 2019-04-11 06:03:16 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@onap.org> | 2019-04-11 06:03:16 +0000 |
commit | fb96b874ab584cc7058c7438f193d7ed4580e04f (patch) | |
tree | f73bc095804938d1018cea9a925a1e7cdb2e0ad9 /vio | |
parent | 9e0f9994c0cab7839f09816b7187b2cbd58ad877 (diff) | |
parent | f0775787e6ca6e09a13dbee8d642636e0757b43e (diff) |
Merge "Add API for workload AAI update"
Diffstat (limited to 'vio')
-rw-r--r-- | vio/vio/swagger/views/workload/views.py | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/vio/vio/swagger/views/workload/views.py b/vio/vio/swagger/views/workload/views.py index efcc2f7..a1669c2 100644 --- a/vio/vio/swagger/views/workload/views.py +++ b/vio/vio/swagger/views/workload/views.py @@ -18,7 +18,9 @@ from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView +from vio import heatbridge from vio.pub.msapi import extsys +from vio.pub.utils.restcall import AAIClient from vio.pub.vim.vimapi.heat import OperateStack from vio.pub.exceptions import VimDriverVioException @@ -56,7 +58,7 @@ class CreateStackViewV1(APIView): body = json.loads(request.body) logger.debug("infra_workload post body: %s" % body) template_type = body['template_type'] - if template_type != "heat": + if template_type.lower() != "heat": return Response( data={ "error": "invalid template type %s" % template_type @@ -74,7 +76,9 @@ class CreateStackViewV1(APIView): stack = stack_op.create_vim_stack(**stack_body) rsp = { "template_type": "heat", - "workload_id": stack.id + "workload_id": stack.id, + "workload_status": stack.status, + "workload_status_reason": stack.status_reason, } return Response(data=rsp, status=status.HTTP_201_CREATED) except Exception as e: @@ -87,6 +91,7 @@ class CreateStackViewV1(APIView): class GetDelStackViewV1(APIView): def get(self, request, cloud_owner, cloud_region, workload_id): + # import ipdb; ipdb.set_trace() try: vim_info = extsys.get_vim_by_id(cloud_owner + "_" + cloud_region) # vim_info['tenant'] = tenantid @@ -95,10 +100,12 @@ class GetDelStackViewV1(APIView): try: stack_op = OperateStack.OperateStack(vim_info) stack = stack_op.get_vim_stack(workload_id) + # import ipdb; ipdb.set_trace() rsp = { "template_type": "heat", "workload_id": stack.id, "workload_status": stack.status, + "workload_status_reason": stack.status_reason, } return Response(data=rsp, status=status.HTTP_200_OK) except Exception as e: @@ -108,6 +115,36 @@ class GetDelStackViewV1(APIView): return Response(data={'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) + def post(self, request, cloud_owner, cloud_region, workload_id): + # import ipdb; ipdb.set_trace() + try: + vim_info = extsys.get_vim_by_id(cloud_owner + "_" + cloud_region) + # vim_info['tenant'] = tenantid + except VimDriverVioException as e: + return Response(data={'error': str(e)}, status=e.status_code) + try: + body = json.loads(request.body) + vf_module_id = body.get("vf-module-id") + generic_vnf_id = body.get("generic-vnf-id") + contents = heatbridge.heat_bridge(vim_info, workload_id) + contents['vf-module-id'] = vf_module_id + contents['generic-vnf-id'] = generic_vnf_id + aai_adapter = AAIClient(cloud_owner, cloud_region) + aai_adapter.add_vservers(contents) + rsp = { + "template_type": "heat", + "workload_id": workload_id, + "workload_status": "AAI_IN_PROGRESS", + "workload_status_reason": "Updating AAI relationship", + } + return Response(data=rsp, status=status.HTTP_202_ACCEPTED) + except Exception as e: + if hasattr(e, "http_status"): + return Response(data={'error': str(e)}, status=e.http_status) + else: + return Response(data={'error': str(e)}, + status=status.HTTP_500_INTERNAL_SERVER_ERROR) + def delete(self, request, cloud_owner, cloud_region, workload_id): try: vim_info = extsys.get_vim_by_id(cloud_owner + "_" + cloud_region) |