Exemplo n.º 1
0
def get_vnfm_info(vnfm_id):
    ret = req_by_msb((EXTSYS_GET_VNFM) % vnfm_id, "GET")
    if ret[0] != 0:
        return 255, Response(data={'error': ret[1]}, status=ret[2])
    vnfm_info = json.JSONDecoder().decode(ret[1])
    logger.debug("[%s] vnfm_info=%s", fun_name(), vnfm_info)
    return 0, vnfm_info
Exemplo n.º 2
0
def get_vnfpkgs(request, *args, **kwargs):
    logger.info("Enter %s", fun_name())
    ret = req_by_msb("openoapi/nslcm/v1/vnfpackage", "GET")
    if ret[0] != 0:
        return Response(data={'error': ret[1]},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    resp = json.JSONDecoder().decode(ret[1])
    return Response(data=resp, status=status.HTTP_200_OK)
Exemplo n.º 3
0
def get_vnfminfo_from_nslcm(vnfm_id):
    logger.debug("[get_vnfminfo_from_nslcm] vnfm_id=[%s]", vnfm_id)
    ret = req_by_msb("api/aai-esr-server/v1/vnfms/%s" % vnfm_id, "GET")
    logger.debug("[get_vnfminfo_from_nslcm] response=%s", ret)
    if ret[0] != 0:
        logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
        raise CertusvmanagerdriverException(
            "Failed to query vnfm(%s) from nslcm." % vnfm_id)
    return json.JSONDecoder().decode(ret[1])
Exemplo n.º 4
0
    def put(self, request):
        logger.debug("=====GrantVnf post=====")
        try:
            logger.debug("request.data = %s", request.data)

            req_data = {
                "vnfInstanceId": ignorcase_get(request.data, "vnfistanceid"),
                "vnfDescriptorId": "",
                "addresource": [],
                "additionalparam": {
                    "vnfmid": ignorcase_get(request.data, "vnfmid"),
                    "vimid": ignorcase_get(request.data, "vimid"),
                    "tenant": ignorcase_get(request.data, "tenant")
                }
            }
            if ignorcase_get(request.data, "operationright") == 0:
                req_data["lifecycleOperation"] = "Instantiate"
                for vm in ignorcase_get(request.data, "vmlist"):
                    for i in range(int(ignorcase_get(vm, "VMNumber"))):
                        req_data["addresource"].append({
                            "type":
                            "vdu",
                            "resourceDefinitionId":
                            i,
                            "vdu":
                            ignorcase_get(vm, "VMFlavor"),
                            "vimid":
                            ignorcase_get(vm, "vimid"),
                            "tenant":
                            ignorcase_get(vm, "tenant")
                        })

            logger.debug("req_data=%s", req_data)
            ret = req_by_msb('api/nslcm/v1/ns/grantvnf',
                             "POST",
                             content=json.JSONEncoder().encode(req_data))
            logger.info("ret = %s", ret)
            if ret[0] != 0:
                logger.error("grant to nfvo failed: %s", ret[1])

            # resp = json.JSONDecoder().decode(ret[1])
            # resp_data = {
            #    'vimid': ignorcase_get(resp['vim'], 'vimid'),
            #    'tenant': ignorcase_get(ignorcase_get(resp['vim'], 'accessinfo'), 'tenant')
            # }
            resp_data = {'vimid': "1", 'tenant': "mano"}
            logger.debug("[grant_vnf_put]resp_data=%s", resp_data)

            return Response(data=resp_data, status=status.HTTP_201_CREATED)
        except Exception as e:
            logger.error("Error occurred in Grant VNF, error: %s", e.args[0])
            logger.error(traceback.format_exc())
            return Response(data={'error': 'Grant expection'},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemplo n.º 5
0
def grantvnf(request, *args, **kwargs):
    logger.info("=====grantvnf=====")
    try:
        resp_data = {}
        logger.info("req_data = %s", request.data)
        data = mapping_conv(grant_vnf_param_map, request.data)
        logger.info("grant_vnf_url = %s", grant_vnf_url)
        data["vnfDescriptorId"] = ""
        if ignorcase_get(request.data, "operationright") == 0:
            data["lifecycleOperation"] = "Instantiate"
            data["addresource"] = []
            for vm in ignorcase_get(request.data, "vmlist"):
                for i in range(int(ignorcase_get(vm, "vmnumber"))):
                    data["addresource"].append({
                        "type":
                        "vdu",
                        "resourceDefinitionId":
                        i,
                        "vdu":
                        ignorcase_get(vm, "vmflavor"),
                        "vimid":
                        ignorcase_get(vm, "vimid"),
                        "tenant":
                        ignorcase_get(vm, "tenant")
                    })

        data["additionalparam"] = {}
        data["additionalparam"]["vnfmid"] = ignorcase_get(
            request.data, "vnfmid")
        data["additionalparam"]["vimid"] = ignorcase_get(request.data, "vimid")
        data["additionalparam"]["tenant"] = ignorcase_get(
            request.data, "tenant")

        logger.info("data = %s", data)
        ret = req_by_msb(grant_vnf_url,
                         "POST",
                         content=json.JSONEncoder().encode(data))
        logger.info("ret = %s", ret)
        if ret[0] != 0:
            return Response(data={'error': ret[1]}, status=ret[2])
        resp = json.JSONDecoder().decode(ret[1])

        resp_data['vimid'] = ignorcase_get(resp['vim'], 'vimid')
        resp_data['tenant'] = ignorcase_get(
            ignorcase_get(resp['vim'], 'accessinfo'), 'tenant')

        logger.info("[%s]resp_data=%s", fun_name(), resp_data)
    except Exception as e:
        logger.error("Error occurred in Grant VNF.")
        raise e
    return Response(data=resp_data, status=ret[2])
Exemplo n.º 6
0
def notify(request, *args, **kwargs):
    try:
        logger.info("[%s]req_data = %s", fun_name(), request.data)
        ret = req_by_msb(notify_url.format(
            vnfmid=ignorcase_get(request.data, 'VNFMID'),
            vnfInstanceId=ignorcase_get(request.data, 'vnfinstanceid')),
                         "POST",
                         content=json.JSONEncoder().encode(request.data))
        logger.info("[%s]data = %s", fun_name(), ret)
        if ret[0] != 0:
            return Response(data={'error': ret[1]}, status=ret[2])
    except Exception as e:
        logger.error("Error occurred in LCM notification.")
        raise e
    return Response(data=None, status=ret[2])
Exemplo n.º 7
0
def get_vnfpkgs(request, *args, **kwargs):
    try:
        logger.debug("Enter %s", fun_name())
        ret = req_by_msb("api/nslcm/v1/vnfpackage", "GET")
        if ret[0] != 0:
            logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
            raise CertusvmanagerdriverException('Failed to get vnfpkgs.')
        resp = json.JSONDecoder().decode(ret[1])
        return Response(data=resp, status=status.HTTP_200_OK)
    except CertusvmanagerdriverException as e:
        logger.error('Get vnfpkgs failed, detail message: %s' % e.message)
        return Response(data={'error': e.message},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    except:
        logger.error(traceback.format_exc())
        return Response(data={'error': 'unexpected exception'},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemplo n.º 8
0
def notify(request, *args, **kwargs):
    try:
        logger.debug("[%s]req_data = %s", fun_name(), request.data)
        vnfinstanceid = ignorcase_get(request.data, 'vnfinstanceid')
        ret = req_by_msb("api/nslcm/v1/vnfs/%s/Notify" % vnfinstanceid, "POST",
                         json.JSONEncoder().encode(request.data))
        logger.debug("[%s]data = %s", fun_name(), ret)
        if ret[0] != 0:
            logger.error("Status code is %s, detail is %s.", ret[2], ret[1])
            raise CertusvmanagerdriverException('Failed to notify vnf.')
        return Response(data=None, status=ret[2])
    except CertusvmanagerdriverException as e:
        logger.error('Grant vnf failed, detail message: %s' % e.message)
        return Response(data={'error': e.message},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    except:
        logger.error(traceback.format_exc())
        return Response(data={'error': 'unexpected exception'},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemplo n.º 9
0
def grantvnf(request, *args, **kwargs):
    logger.info("=====grantvnf=====")
    try:
        resp_data = {}
        logger.info("req_data = %s", request.data)
        ret = req_by_msb(grant_vnf_url,
                         "POST",
                         content=json.JSONEncoder().encode(request.data))
        logger.info("ret = %s", ret)
        if ret[0] != 0:
            return Response(data={'error': ret[1]}, status=ret[2])
        resp = json.JSONDecoder().decode(ret[1])
        resp_data['vimid'] = ignorcase_get(resp['vim'], 'vimid')
        resp_data['tenant'] = ignorcase_get(
            ignorcase_get(resp['vim'], 'accessinfo'), 'tenant')
        logger.info("[%s]resp_data=%s", fun_name(), resp_data)
    except Exception as e:
        logger.error("Error occurred in Grant VNF.")
        raise e
    return Response(data=resp_data, status=ret[2])
Exemplo n.º 10
0
def vnfd_get(vnfpackageid):
    ret = req_by_msb("openoapi/nslcm/v1/vnfpackage/%s" % vnfpackageid, "GET")
    return ret
Exemplo n.º 11
0
def vnfm_get(vnfmid):
    ret = req_by_msb("openoapi/extsys/v1/vnfms/%s" % vnfmid, "GET")
    return ret
Exemplo n.º 12
0
def notify(request, *args, **kwargs):
    try:
        logger.info("[%s]req_data = %s", fun_name(), request.data)
        data = mapping_conv(notify_param_map, request.data)
        logger.info("[%s]data = %s", fun_name(), data)

        data["status"] = "result"
        data["jobId"] = "notMust"
        data["affectedVnfc"] = []
        data["affectedVl"] = []
        data["affectedVirtualStorage"] = []
        data["affectedCp"] = []

        affectedvnfcs = ignorcase_get(ignorcase_get(request.data, "extension"),
                                      "affectedvnfc")
        affectedvls = ignorcase_get(ignorcase_get(request.data, "extension"),
                                    "affectedvl")
        affectedcps = ignorcase_get(ignorcase_get(request.data, "extension"),
                                    "affectedcp")
        vnfdmodule = ignorcase_get(ignorcase_get(request.data, "extension"),
                                   "vnfdmodule")

        data["vnfdmodule"] = vnfdmodule

        for affectedvnfc in affectedvnfcs:
            data["affectedVnfc"].append({
                "vnfcInstanceId":
                ignorcase_get(affectedvnfc, "vnfcinstanceid"),
                "vduId":
                ignorcase_get(affectedvnfc, "vduId"),
                "changeType":
                ignorcase_get(affectedvnfc, "changeType"),
                "vimid":
                ignorcase_get(ignorcase_get(affectedvnfc, "computeresource"),
                              "vimid"),
                "vmId":
                ignorcase_get(ignorcase_get(affectedvnfc, "computeresource"),
                              "resourceid"),
                "vmName":
                ignorcase_get(ignorcase_get(affectedvnfc, "computeresource"),
                              "resourcename")
            })

        for affectedvl in affectedvls:
            data["affectedVl"].append({
                "vlInstanceId":
                ignorcase_get(affectedvl, "virtuallinkinstanceid"),
                "vimid":
                ignorcase_get(ignorcase_get(affectedvl, "networkresource"),
                              "vimid"),
                "vldid":
                ignorcase_get(affectedvl, "virtuallinkdescid"),
                "vllid":
                ignorcase_get(ignorcase_get(affectedvl, "networkresource"),
                              "resourceid"),
                "vlName":
                ignorcase_get(ignorcase_get(affectedvl, "networkresource"),
                              "resourcename")
            })

        for affectedcp in affectedcps:
            data["affectedCp"].append(affectedcp)
            #     {
            #     "virtualLinkInstanceId": ignorcase_get(affectedcp, "virtuallinkinstanceid"),
            #     "ownerId": ignorcase_get(affectedcp, "ownerId"),
            #     "ownerType": ignorcase_get(affectedcp, "ownerType")
            # }
        ret = req_by_msb(notify_url.format(
            vnfmid=ignorcase_get(data, 'VNFMID'),
            vnfInstanceId=ignorcase_get(data, 'vnfinstanceid')),
                         "POST",
                         content=json.JSONEncoder().encode(data))

        logger.info("[%s]data = %s", fun_name(), ret)
        if ret[0] != 0:
            return Response(data={'error': ret[1]}, status=ret[2])
    except Exception as e:
        logger.error("Error occurred in LCM notification.")
        raise e
    return Response(data=None, status=ret[2])
Exemplo n.º 13
0
def vnfpackage_get(csarid):
    ret = req_by_msb("api/catalog/v1/vnfpackages/%s" % csarid, "GET")
    return ret
Exemplo n.º 14
0
    def post(self, request):
        try:
            funname = "notify_post"
            logger.debug("[%s]request.data = %s", funname, request.data)

            req_data = {
                "status": "result",
                "vnfInstanceId": ignorcase_get(request.data, "vnfinstanceid"),
                "vnfmId": ignorcase_get(request.data, "vnfmid"),
                "vimId": ignorcase_get(request.data, "vimid"),
                "operation": ignorcase_get(request.data, "EventType"),
                "jobId": "notMust",
                "affectedVl": [],
                "affectedCp": [],
                "affectedVirtualStorage": [],
                "affectedVnfc": [],
            }

            extension = ignorcase_get(request.data, "extension")
            openo_notification = ignorcase_get(extension, "openo_notification")
            if openo_notification:
                affectedvnfcs = ignorcase_get(openo_notification,
                                              "affectedVnfc")
                affectedvls = ignorcase_get(openo_notification,
                                            "affectedvirtuallink")
                affectedcps = ignorcase_get(openo_notification, "affectedCp")
                vnfdmodule = ignorcase_get(openo_notification, "vnfdmodule")
            else:
                affectedvnfcs = ignorcase_get(
                    ignorcase_get(request.data, "extension"), "affectedvnfc")
                affectedvls = ignorcase_get(
                    ignorcase_get(request.data, "extension"), "affectedvl")
                affectedcps = ignorcase_get(
                    ignorcase_get(request.data, "extension"), "affectedcp")
                vnfdmodule = ignorcase_get(
                    ignorcase_get(request.data, "extension"), "vnfdmodule")

            req_data["vnfdmodule"] = vnfdmodule

            for affectedvnfc in affectedvnfcs:
                req_data["affectedVnfc"].append({
                    "vnfcInstanceId":
                    ignorcase_get(affectedvnfc, "vnfcInstanceId"),
                    "vduId":
                    ignorcase_get(affectedvnfc, "vduId"),
                    "changeType":
                    ignorcase_get(affectedvnfc, "changeType"),
                    "vimId":
                    ignorcase_get(
                        ignorcase_get(affectedvnfc, "computeResource"),
                        "vimId"),
                    "vmId":
                    ignorcase_get(
                        ignorcase_get(affectedvnfc, "computeResource"),
                        "resourceId"),
                    "vmName":
                    ignorcase_get(
                        ignorcase_get(affectedvnfc, "computeResource"),
                        "resourceName")
                })

            for affectedvl in affectedvls:
                req_data["affectedVl"].append({
                    "vlInstanceId":
                    ignorcase_get(affectedvl, "virtualLinkInstanceId"),
                    "changeType":
                    ignorcase_get(affectedvl, "changeType"),
                    "vimId":
                    ignorcase_get(ignorcase_get(affectedvl, "networkResource"),
                                  "vimId"),
                    "vldId":
                    ignorcase_get(affectedvl, "virtuallinkdescid"),
                    "networkResource": {
                        "resourceType":
                        "network",
                        "resourceId":
                        ignorcase_get(
                            ignorcase_get(affectedvl, "networkresource"),
                            "resourceid"),
                        "resourceName":
                        ignorcase_get(
                            ignorcase_get(affectedvl, "networkresource"),
                            "resourcename")
                    }
                })

            for affectedcp in affectedcps:
                req_data["affectedCp"].append(affectedcp)

            vnfmid = ignorcase_get(req_data, 'vnfmId')
            vnfInstanceId = ignorcase_get(req_data, 'vnfinstanceid')
            notify_url = 'api/nslcm/v1/ns/%s/vnfs/%s/Notify' % (vnfmid,
                                                                vnfInstanceId)
            logger.debug("notify_url = %s", notify_url)
            logger.debug("req_data = %s", req_data)
            ret = req_by_msb(notify_url,
                             "POST",
                             content=json.JSONEncoder().encode(req_data))

            logger.debug("[%s]data = %s", funname, ret)
            if ret[0] != 0:
                logger.error("notify to nfvo failed: %s", ret[1])

            return Response(data=None, status=status.HTTP_200_OK)
        except Exception as e:
            logger.error("Error occurred in LCM notification,error: %s",
                         e.args[0])
            logger.error(traceback.format_exc())
            return Response(data={'error': 'Notify expection'},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Exemplo n.º 15
0
def get_vnfminfo_from_nslcm(vnfmid):
    ret = req_by_msb("api/nslcm/v1/vnfms/%s" % vnfmid, "GET")
    return ret
Exemplo n.º 16
0
def vnfpackage_get(csarid):
    ret = req_by_msb("openoapi/nslcm/v1/vnfpackage/%s" % csarid, "GET")
    return ret
Exemplo n.º 17
0
# Copyright 2016-2017 certus Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from driver.pub.config.config import REG_TO_MSB_WHEN_START, REG_TO_MSB_REG_URL, REG_TO_MSB_REG_PARAM
from django.conf.urls import include, url
urlpatterns = [
    url(r'^', include('driver.interfaces.urls')),
    url(r'^', include('driver.swagger.urls')),
    url(r'^vnfpkgm/', include('vnfpkgm.urls')),
]

# regist to MSB when startup
if REG_TO_MSB_WHEN_START:
    import json
    from driver.pub.utils.restcall import req_by_msb
    req_by_msb(REG_TO_MSB_REG_URL, "POST", json.JSONEncoder().encode(REG_TO_MSB_REG_PARAM))
Exemplo n.º 18
0
def instantiate_vnf(request, *args, **kwargs):
    try:
        logger.debug("instantiate_vnf--post::> %s" % request.data)
        logger.debug("instantiate_vnf-kwargs = %s" % kwargs)
        logger.debug("Create vnf begin!")
        vnfd_descriptor_id, vnfd_df_flavour_id = get_parameter_from_vnfd(
            ignorcase_get(request.data, "vnfPackageId"))
        logger.debug('vnfd_descriptor_id = %s' % vnfd_descriptor_id)
        logger.debug('vnfd_df_flavour_id = %s' % vnfd_df_flavour_id)

        vnfm_id = ignorcase_get(kwargs, "vnfmid")

        ret = req_by_msb("api/aai-esr-server/v1/vnfms/%s" % vnfm_id, "GET")
        logger.debug("instantiate_vnf-req_by_msb response=%s", ret)
        if ret[0] != 0:
            logger.error('Status code is %s, detail is %s.', ret[2], ret[1])
            raise CertusvmanagerdriverException(
                "Failed to query vnfm(%s) from nslcm." % vnfm_id)
        global mano_vnfm_auth_url
        mano_vnfm_auth_url = json.JSONDecoder().decode(
            ret[1])['certificateUrl']

        logger.debug('instantiate_vnf-mano_vnfm_auth_url = %s' %
                     mano_vnfm_auth_url)

        input_data = {
            "vnfdId":
            vnfd_descriptor_id,
            "vnfInstanceName":
            ignorcase_get(request.data, "vnfInstanceName"),
            "vnfInstanceDescription":
            ignorcase_get(request.data, "vnfInstanceDescription")
        }
        logger.debug(
            "do_createvnf: request data=[%s],input_data=[%s],vnfm_id=[%s]",
            request.data, input_data, vnfm_id)

        #        vnf_package_id = ignorcase_get(request.data, "vnfPackageId")
        #        ret = vnfpackage_get(vnf_package_id)

        #        if ret[0] != 0:
        #            return Response(data={'error': ret[1]}, status=ret[2])
        #        vnf_package_info = json.JSONDecoder().decode(ret[1])
        #        packageInfo = ignorcase_get(vnf_package_info, "packageInfo")
        #        logger.debug("[%s] packageInfo=%s", fun_name(), packageInfo)

        #        vnfPkg_params = {
        #            "vnfdId": ignorcase_get(packageInfo, "vnfdId"),
        #            "vnfPkgId": ignorcase_get(packageInfo, "vnfPackageId"),
        #            "vnfPackageUri": ignorcase_get(packageInfo, "downloadUrl")
        #        }
        #        ret = svnfm_download_vnf_package(vnfm_id, vnfPkg_params)
        #        if ret[0] != 0:
        #            return Response(data={'error': ret[1]}, status=ret[2])

        resp = do_createvnf(vnfm_id, input_data)
        logger.debug("do_createvnf: response data=[%s]", resp)
        logger.debug("Create vnf end!")

        logger.debug("Instantiate vnf start!")
        vnfInstanceId = resp["id"]
        vim_uuid = ignorcase_get(
            ignorcase_get(request.data, "additionalParam"), "vimId")
        vim_connection_info = {"vimId": vim_uuid}
        input_data = {
            "flavourId": vnfd_df_flavour_id,
            # "extVirtualLinks": ignorcase_get(request.data, "extVirtualLink"),
            # 根据sol003,指定实例化的vim信息
            "vimConnectionInfo": vim_connection_info,
            "additionalParams": ignorcase_get(request.data, "additionalParam")
        }
        logger.debug(
            "do_instvnf: vnfInstanceId=[%s], vnfm_id=[%s], input_data=[%s]",
            vnfInstanceId, vnfm_id, input_data)
        resp = do_instvnf(vnfInstanceId, vnfm_id, input_data)
        logger.debug("do_instvnf: response data=[%s]", resp)
        resp_data = {
            "vnfInstanceId": vnfInstanceId,
            "jobId": ignorcase_get(resp, "vnfLcmOpOccId")
        }
        logger.debug("Instantiate vnf end!")
        return Response(data=resp_data, status=status.HTTP_201_CREATED)
    except CertusvmanagerdriverException as e:
        logger.error('instantiate vnf failed, detail message: %s' % e.message)
        return Response(data={'error': e.message},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)
    except:
        logger.error(traceback.format_exc())
        return Response(data={'error': 'unexpected exception'},
                        status=status.HTTP_500_INTERNAL_SERVER_ERROR)