예제 #1
0
    def get(self, request, vimid, tenantid, hostname):
        try:
            vim_info = extsys.get_vim_by_id(vimid)
        except VimDriverVioException as e:
            return Response(data={'error': str(e)}, status=e.status_code)

        data = {'vimid': vim_info['vimId'],
                'vimName': vim_info['name'],
                'username': vim_info['userName'],
                'password': vim_info['password'],
                'url': vim_info['url'],
                'project_id': tenantid,
                'user_domain_name': 'default',
                'project_domain_name': 'default'
                }

        hypervisor_op = OperateHypervisor.OperateHypervisor()
        try:
            hv = hypervisor_op.get_hypervisor(data, hypervisor=hostname)
        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)

        rsp = {'vimid': vim_info['vimId'],
               'vimName': vim_info['name'],
               'tenantId': tenantid,
               'host': nova_utils.hypervisor_formatter(hv)}

        return Response(data=rsp, status=status.HTTP_200_OK)
예제 #2
0
    def post(self, request, vimid, tenantid):
        vim_info = extsys.get_vim_by_id(vimid)
        volume_op = OperateVolume.OperateVolume(vim_info)

        try:
            volumes_detail = volume_op.get_vim_volumes()
            json_body = json.loads(request.body)

            vim_rsp = volume_utils.vim_formatter(vim_info, tenantid)
            for volume in volumes_detail:
                if volume.name == json_body.get('name'):
                    volume_info = volume_op.get_vim_volume(volume.id)
                    rsp  = volume_utils.volume_formatter(volume_info)
                    rsp['returnCode'] = 0
                    rsp.update(vim_rsp)
                    return Response(data=rsp, status=status.HTTP_200_OK)

            param = volume_utils.req_body_formatter(json_body)
            volume_info = volume_op.create_vim_volume(**param)
            rsp  = volume_utils.volume_formatter(volume_info)
            rsp['returnCode'] = 1
            rsp.update(vim_rsp)
            return Response(data=rsp, status=status.HTTP_202_ACCEPTED)
        except Exception as e:
            return Response(data={'error': str(e)},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
예제 #3
0
    def post(self, request, vimid, tenantid):
        create_req = json.loads(request.body)

        vim_info = extsys.get_vim_by_id(vimid)
        data = {'vimid': vim_info['vimId'],
                'vimName': vim_info['name'],
                'username': vim_info['userName'],
                'password': vim_info['password'],
                'url': vim_info['url'],
                'project_name': vim_info['tenant']}
        rsp = {'vimid': vim_info['vimId'],
               'vimName': vim_info['name'],
               'tenantId': tenantid}
        flavor_name = create_req.get('name', None)
        flavor_id = create_req.get('id', None)
        flavors_op = OperateFlavors.OperateFlavors()
        try:
            target = flavor_id or flavor_name
            flavor = flavors_op.find_flavor(data, tenantid, target)
            if flavor:
                flavor, extra_specs = flavors_op.get_flavor(
                    data, tenantid, flavor.id)
                rsp['returnCode'] = 0
            else:
                rsp['returnCode'] = 1
                flavor, extra_specs = flavors_op.create_flavor(
                    data, tenantid, create_req)
            flavor_dict = nova_utils.flavor_formatter(flavor, extra_specs)
        except Exception as e:
            return Response(data={'error': str(e)},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        rsp.update(flavor_dict)
        return Response(data=rsp, status=status.HTTP_200_OK)
예제 #4
0
    def get(self, request, vimid, tenantid, imageid):
        vim_info = extsys.get_vim_by_id(vimid)
        image_op = OperateImage.OperateImage(vim_info)

        try:
            image = image_op.get_vim_image(imageid)
            vim_rsp = image_utils.vim_formatter(vim_info, tenantid)
            rsp = image_utils.image_formatter(image)
            rsp.update(vim_rsp)
            return Response(data=rsp, status=status.HTTP_200_OK)
        except Exception as e:
            return Response(data={'error': str(e)},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
예제 #5
0
    def post(self, request, vimid, tenantid):
        try:
            vim_info = extsys.get_vim_by_id(vimid)
            vim_info['tenant'] = tenantid
        except VimDriverVioException as e:
            return Response(data={'error': str(e)}, status=e.status_code)

        volume_op = OperateVolume.OperateVolume(vim_info)
        try:
            body = json.loads(request.body)
        except Exception as e:
            return Response(data={'error': 'Fail to decode request body.'},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        try:
            volumes_detail = volume_op.get_vim_volumes()
            vim_rsp = volume_utils.vim_formatter(vim_info, tenantid)
            for volume in volumes_detail:
                if volume.name == body.get('name'):
                    volume_info = volume_op.get_vim_volume(volume.id)
                    rsp  = volume_utils.volume_formatter(volume_info)
                    rsp['returnCode'] = 0
                    rsp.update(vim_rsp)
                    return Response(data=rsp, status=status.HTTP_200_OK)

            if body.get('imageId'):
                image_op = OperateImage.OperateImage(vim_info)
                imageName = body.get('imageId') or body.get('imageName')
                image = image_op.find_vim_image(imageName)
                body['imageId'] = image.id

            param = volume_utils.req_body_formatter(body)

            volume_info = volume_op.create_vim_volume(**param)
            rsp  = volume_utils.volume_formatter(volume_info)
            rsp['returnCode'] = 1
            rsp.update(vim_rsp)
            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)
예제 #6
0
    def post(self, request, vimid, tenantid):
        try:
            vim_info = extsys.get_vim_by_id(vimid)
            vim_info['tenant'] = tenantid
        except VimDriverVioException as e:
            return Response(data={'error': str(e)}, status=e.status_code)

        try:
            req_body = json.loads(request.body)
        except Exception as e:
            return Response(data={'error': 'Fail to decode request body.'},
                            status=status.HTTP_500_INTERNAL_SERVER_ERROR)
        vim_rsp = image_utils.vim_formatter(vim_info, tenantid)
        image_instance = OperateImage.OperateImage(vim_info)

        try:
            images = image_instance.get_vim_images()
            for image in images:
                if image.name == req_body.get('name'):
                    image_info = image_instance.get_vim_image(image.id)
                    rsp = image_utils.image_formatter(image_info)
                    rsp['returnCode'] = '0'
                    rsp.update(vim_rsp)
                    return Response(data=rsp, status=status.HTTP_200_OK)

            param = image_utils.req_body_formatter(req_body)
            image = image_instance.create_vim_image(vimid, tenantid,
                                                    imagePath=req_body.get('imagePath'),
                                                    **param)

            rsp = image_utils.image_formatter(image)
            rsp.update(vim_rsp)
            rsp['returnCode'] = '1'
            return Response(data=rsp, status=status.HTTP_201_CREATED)
        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)