def get(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) query_data = dict(request.query_params) image_instance = OperateImage.OperateImage(vim_info) try: images = image_instance.get_vim_images(**query_data) rsp = {} rsp['images'] = [] vim_rsp = image_utils.vim_formatter(vim_info, tenantid) for image in images: rsp['images'].append(image_utils.image_formatter(image)) rsp.update(vim_rsp) return Response(data=rsp, status=status.HTTP_200_OK) 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 post(self, request, vimid, tenantid): vim_info = extsys.get_vim_by_id(vimid) req_body = json.loads(request.body) 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, **param) rsp = image_utils.image_formatter(image) rsp.update(vim_rsp) rsp['returnCode'] = '1' 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)
def delete(self, request, vimid, tenantid, imageid): vim_info = extsys.get_vim_by_id(vimid) image_op = OperateImage.OperateImage(vim_info) try: image_op.delete_vim_image(imageid) return Response(status=status.HTTP_204_NO_CONTENT) except Exception as e: return Response(data={'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
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)
def delete(self, request, vimid, tenantid, imageid): 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) image_op = OperateImage.OperateImage(vim_info) try: image_op.delete_vim_image(imageid) return Response(status=status.HTTP_204_NO_CONTENT) 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 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)
def get(self, request, vimid, tenantid, imageid): 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) 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: 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 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)