示例#1
0
    def perform_create(self, serializer):
        data = serializer.validated_data
        name = data.get('name')
        size = data.get('size')
        image_id = data.get('image')
        snapshot_id = data.get('snapshot')
        instance_source = data.get("instance_source")
        identity = instance_source.get("created_by_identity")
        provider = instance_source.get('provider')

        try:
            esh_volume = create_volume_or_fail(name, size, self.request.user,
                                               provider, identity,
                                               image_id=image_id,
                                               snapshot_id=snapshot_id)
            created_on = esh_volume.extra.get("createTime", timezone.now())
            serializer.save(identifier=esh_volume.id,
                            name=esh_volume.name,
                            created_on=pytz.utc.localize(created_on),
                            user=self.request.user)
        except InvalidCredsError as e:
            raise exceptions.PermissionDenied(detail=e.message)
        except ProviderNotActive as pna:
            return inactive_provider(pna)
        except VOLUME_EXCEPTIONS as e:
            raise exceptions.ParseError(detail=e.message)
示例#2
0
 def perform_create(self, serializer):
     data = serializer.validated_data
     name = data.get('name')
     size = data.get('size')
     image_id = data.get('image_id')
     snapshot_id = data.get('snapshot_id')
     description = data.get('description')
     instance_source = data.get("instance_source")
     identity = instance_source.get("created_by_identity")
     provider = identity.provider
     try:
         esh_volume = create_volume_or_fail(name,
                                            size,
                                            self.request.user,
                                            provider,
                                            identity,
                                            description=description,
                                            image_id=image_id,
                                            snapshot_id=snapshot_id)
         created_on = esh_volume.extra.get("createTime", timezone.now())
         serializer.save(identifier=esh_volume.id,
                         name=esh_volume.name,
                         created_on=pytz.utc.localize(created_on),
                         user=self.request.user)
     except InvalidCredsError as e:
         raise exceptions.PermissionDenied(detail=e.message)
     except ProviderNotActive as pna:
         return inactive_provider(pna)
     except VOLUME_EXCEPTIONS as e:
         raise exceptions.ParseError(detail=e.message)
     except Exception as exc:
         logger.exception("Error occurred creating a v2 volume -- User:%s" %
                          self.request.user)
         return Response(exc.message, status=status.HTTP_409_CONFLICT)
示例#3
0
 def perform_create(self, serializer):
     data = serializer.validated_data
     name = data.get('name')
     size = data.get('size')
     image_id = data.get('image_id')
     snapshot_id = data.get('snapshot_id')
     description = data.get('description')
     instance_source = data.get("instance_source")
     identity = instance_source.get("created_by_identity")
     provider = identity.provider
     try:
         esh_volume = create_volume_or_fail(name, size, self.request.user,
                                            provider, identity,
                                            description=description,
                                            image_id=image_id,
                                            snapshot_id=snapshot_id)
         created_on = esh_volume.extra.get("createTime", timezone.now())
         serializer.save(identifier=esh_volume.id,
                         name=esh_volume.name,
                         created_on=pytz.utc.localize(created_on),
                         user=self.request.user)
     except InvalidCredsError as e:
         raise exceptions.PermissionDenied(detail=e.message)
     except ProviderNotActive as pna:
         return inactive_provider(pna)
     except VOLUME_EXCEPTIONS as e:
         raise exceptions.ParseError(detail=e.message)
     except Exception as exc:
         logger.exception("Error occurred creating a v2 volume -- User:%s"
                          % self.request.user)
         return Response(exc.message, status=status.HTTP_409_CONFLICT)
示例#4
0
 def create(self, request):
     """
     Override 'create' at a higher level than 'perform_create'
     so that we can swap Serializers behind-the-scenes.
     """
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     #NOTE: This work normally happens in 'perform_create()'
     data = serializer.validated_data
     name = data.get('name')
     size = data.get('size')
     image_id = data.get('image_id')
     snapshot_id = data.get('snapshot_id')
     description = data.get('description')
     project = data.get('projects')
     identity = data.get("created_by_identity")
     provider = identity.provider
     try:
         core_volume = create_volume_or_fail(name,
                                             size,
                                             self.request.user,
                                             provider,
                                             identity,
                                             description=description,
                                             project=project,
                                             image_id=image_id,
                                             snapshot_id=snapshot_id)
         #NOTE: This is normally where 'perform_create()' would end
         # but we swap out the VolumeSerializer Class at this point.
         serialized_volume = VolumeSerializer(
             core_volume,
             context={'request': self.request},
             data={},
             partial=True)
         if not serialized_volume.is_valid():
             return Response(serialized_volume.errors,
                             status=status.HTTP_400_BAD_REQUEST)
         serialized_volume.save()
         headers = self.get_success_headers(serialized_volume.data)
         return Response(serialized_volume.data,
                         status=status.HTTP_201_CREATED,
                         headers=headers)
     except LibcloudInvalidCredsError as e:
         raise exceptions.PermissionDenied(detail=e.message)
     except ProviderNotActive as pna:
         return inactive_provider(pna)
     except VOLUME_EXCEPTIONS as e:
         raise exceptions.ParseError(detail=e.message)
     except Exception as exc:
         logger.exception("Error occurred creating a v2 volume -- User:%s" %
                          self.request.user)
         return Response(exc.message, status=status.HTTP_409_CONFLICT)
 def create(self, request):
     """
     Override 'create' at a higher level than 'perform_create'
     so that we can swap Serializers behind-the-scenes.
     """
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     #NOTE: This work normally happens in 'perform_create()'
     data = serializer.validated_data
     name = data.get('name')
     size = data.get('size')
     image_id = data.get('image_id')
     snapshot_id = data.get('snapshot_id')
     description = data.get('description')
     project = data.get('projects')
     identity = data.get("created_by_identity")
     provider = identity.provider
     try:
         core_volume = create_volume_or_fail(
             name, size, self.request.user,
             provider, identity,
             description=description,
             project=project,
             image_id=image_id,
             snapshot_id=snapshot_id)
         #NOTE: This is normally where 'perform_create()' would end
         # but we swap out the VolumeSerializer Class at this point.
         serialized_volume = VolumeSerializer(
             core_volume, context={'request': self.request},
             data={}, partial=True)
         if not serialized_volume.is_valid():
             return Response(serialized_volume.errors,
                             status=status.HTTP_400_BAD_REQUEST)
         serialized_volume.save()
         headers = self.get_success_headers(serialized_volume.data)
         return Response(
             serialized_volume.data, status=status.HTTP_201_CREATED, headers=headers)
     except InvalidCredsError as e:
         raise exceptions.PermissionDenied(detail=e.message)
     except ProviderNotActive as pna:
         return inactive_provider(pna)
     except VOLUME_EXCEPTIONS as e:
         raise exceptions.ParseError(detail=e.message)
     except Exception as exc:
         logger.exception("Error occurred creating a v2 volume -- User:%s"
                          % self.request.user)
         return Response(exc.message, status=status.HTTP_409_CONFLICT)