X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=multivimbroker%2Fmultivimbroker%2Fforwarder%2Fviews.py;h=ca93b8e9ecdafbfa14b14d76b0592c7b4d47f0d9;hb=0806baa8146a76eb72dba55bb5340cb20924657f;hp=e1013c71f22011a28181f6d20b0a256fb1ee596c;hpb=a23f23256f9df9a3a46b0ae83c3e07ea17866655;p=multicloud%2Fframework.git diff --git a/multivimbroker/multivimbroker/forwarder/views.py b/multivimbroker/multivimbroker/forwarder/views.py index e1013c7..ca93b8e 100644 --- a/multivimbroker/multivimbroker/forwarder/views.py +++ b/multivimbroker/multivimbroker/forwarder/views.py @@ -34,12 +34,31 @@ def route(request, vimid=''): status_code = status.HTTP_200_OK try: vim = get_vim_by_id(vimid) + if vim["type"] and vim["version"]: + pass - # if vim type is openstack, use latest "newton" version as default - if vim["type"] == "openstack": - vim["type"] = "multivim-newton" + except Exception as e: + logger.error("get_vim_by_id, exception: %s" % e) + return HttpResponse("Not a valid VIM instance", status=status.HTTP_404_NOT_FOUND) + + try: + if vim and vim["type"] == "openstack": + if vim["version"] == "kilo": + multivimdriver = "multivim-kilo" + elif vim["version"] == "newton": + multivimdriver = "multivim-newton" + else: + # if vim type is openstack, use latest "newton" version as default + multivimdriver = "multivim-newton" + elif vim and vim["type"] == "vmware": + multivimdriver = "multivim-vio" + else: + logger.error("wrong vim id: %s, return from extsys:%s" % + vimid, vim) + return HttpResponse("Not support VIM type", status=status.HTTP_404_NOT_FOUND) + + route_uri = re.sub('multivim', multivimdriver, request.get_full_path()) - route_uri = re.sub('multivim', vim["type"], request.get_full_path()) retcode, content, status_code = \ req_by_msb(route_uri, request.method, request.body) if retcode != 0: @@ -49,4 +68,5 @@ def route(request, vimid=''): except Exception as e: content = e status_code = status.HTTP_500_INTERNAL_SERVER_ERROR - return HttpResponse(content, status_code) + logger.error("exception: %s" % e) + return HttpResponse(content, status=status_code)