def perform_create(self, serializer: VolumeSnapshotCreateSerializer): if not validate_cloud_objects_limit(): raise APIBadRequest( _('Licence cloud objects limit reached. Please check your license.' )) volume_id = serializer.validated_data.get('volume_id') volume = Volume.objects.filter(id=volume_id).first() if volume: os_api = OSApi.from_request(request=self.request) try: volume_snapshot = os_api.volume_snapshots.create( region_name=volume.region, **serializer.validated_data, ) activity_helper.add_current_activity_params( object_id=volume_snapshot.id) except Exception as e: handle(self.request, message=str(e)) return Response( {'detail': _('Volume snapshot creation in progress')}) else: raise APIBadRequest( _('Cannot create volume snapshot as related volume does not exist' ))
def os_api(self): return OSApi.from_request(request=self.request)
def get_openstack_volume_snapshot(self, volume_snapshot=None): volume_snapshot = volume_snapshot or self.get_object() os_api = OSApi.from_request(request=self.request) return os_api.volume_snapshots.get(volume_snapshot=volume_snapshot)