示例#1
0
    def _delete_snapshot(self, request, sname, id=None, snap_name=None):
        share = self._validate_share(sname, request)
        try:
            snapshot = None
            if (id is not None):
                snapshot = Snapshot.objects.get(id=id)
            elif (snap_name is not None):
                snapshot = Snapshot.objects.get(share=share, name=snap_name)
            else:
                return True
        except:
            e_msg = ''
            if (id is not None):
                e_msg = ('Snapshot(%s) does not exist.' % id)
            else:
                e_msg = ('Snapshot(%s) does not exist.' % snap_name)
            handle_exception(Exception(e_msg), request)

        if (snapshot.uvisible):
            self._toggle_visibility(share, snapshot.real_name, on=False)
            toggle_sftp_visibility(share, snapshot.real_name, on=False)

        remove_snap(share.pool, sname, snapshot.name)
        snapshot.delete()
        return Response()
示例#2
0
    def _delete_snapshot(self, request, sid, id=None, snap_name=None):
        share = self._validate_share(sid, request)
        try:
            snapshot = None
            if (id is not None):
                snapshot = Snapshot.objects.get(id=id)
            elif (snap_name is not None):
                snapshot = Snapshot.objects.get(share=share, name=snap_name)
            else:
                return True
        except:
            e_msg = ''
            if (id is not None):
                e_msg = 'Snapshot id ({}) does not exist.'.format(id)
            else:
                # Note e_msg consumed by replication/util.py update_repclone()
                # and delete_snapshot()
                e_msg = 'Snapshot name ({}) does not exist.'.format(snap_name)
            handle_exception(Exception(e_msg), request)

        if (snapshot.uvisible):
            self._toggle_visibility(share, snapshot.real_name, snapshot.qgroup,
                                    on=False)
            toggle_sftp_visibility(share, snapshot.real_name, snapshot.qgroup,
                                   on=False)

        remove_snap(share.pool, share.name, snapshot.name, snapshot.qgroup)
        snapshot.delete()
        return Response()
示例#3
0
    def _delete_snapshot(self, request, sname, id=None, snap_name=None):
        share = self._validate_share(sname, request)
        try:
            snapshot = None
            if (id is not None):
                snapshot = Snapshot.objects.get(id=id)
            elif (snap_name is not None):
                snapshot = Snapshot.objects.get(share=share, name=snap_name)
            else:
                return True
        except:
            e_msg = ''
            if (id is not None):
                e_msg = ('Snapshot(%s) does not exist.' % id)
            else:
                e_msg = ('Snapshot(%s) does not exist.' % snap_name)
            handle_exception(Exception(e_msg), request)

        if (snapshot.uvisible):
            self._toggle_visibility(share, snapshot.real_name, on=False)
            toggle_sftp_visibility(share, snapshot.real_name, on=False)

        remove_snap(share.pool, sname, snapshot.name)
        snapshot.delete()
        return Response()
示例#4
0
 def delete(self, request, sname, snap_name):
     """
     deletes a snapshot
     """
     share = Share.objects.get(name=sname)
     if (Snapshot.objects.filter(share=share, name=snap_name).exists()):
         snapshot = Snapshot.objects.get(share=share, name=snap_name)
         pool_device = Disk.objects.filter(pool=share.pool)[0].name
         remove_snap(share.pool.name, pool_device, snap_name)
         snapshot.delete()
     return Response()
示例#5
0
 def delete(self, request, sname, snap_name):
     """
     deletes a snapshot
     """
     share = Share.objects.get(name=sname)
     if (Snapshot.objects.filter(share=share, name=snap_name).exists()):
         snapshot = Snapshot.objects.get(share=share, name=snap_name)
         pool_device = Disk.objects.filter(pool=share.pool)[0].name
         remove_snap(share.pool.name, pool_device, snap_name)
         snapshot.delete()
     return Response()
示例#6
0
            try:
                self._toggle_visibility(share, snapshot.real_name, on=False)
            except Exception, e:
                logger.error(e_msg)
                logger.exception(e)
                handle_exception(Exception(e_msg), request)

            try:
                toggle_sftp_visibility(share, snapshot.real_name, on=False)
            except Exception, e:
                logger.error(e_msg)
                logger.exception(e)
                handle_exception(Exception(e_msg), request)

        try:
            remove_snap(share.pool, pool_device, sname, snapshot.name)
            snapshot.delete()
            return Response()
        except Exception, e:
            e_msg = ('Unable to delete snapshot due to a system error. Try '
                     'again later.')
            logger.error(e_msg)
            logger.exception(e)
            handle_exception(Exception(e_msg), request)

    def delete(self, request, sname, snap_name=None):
        """
        deletes a snapshot
        """
        with self._handle_exception(request):
            if (snap_name is None):
示例#7
0
            try:
                self._toggle_visibility(share, snapshot.real_name, on=False)
            except Exception, e:
                logger.error(e_msg)
                logger.exception(e)
                handle_exception(Exception(e_msg), request)

            try:
                toggle_sftp_visibility(share, snapshot.real_name, on=False)
            except Exception, e:
                logger.error(e_msg)
                logger.exception(e)
                handle_exception(Exception(e_msg), request)

        try:
            remove_snap(share.pool.name, pool_device, sname, snapshot.name)
            snapshot.delete()
            return Response()
        except Exception, e:
            e_msg = ('Unable to delete snapshot due to a system error. Try '
                     'again later.')
            logger.error(e_msg)
            logger.exception(e)
            handle_exception(Exception(e_msg), request)

    def delete(self, request, sname, snap_name=None):
        """
        deletes a snapshot
        """
        if (snap_name is None):
            snap_qp = self.request.QUERY_PARAMS.get('id', None)
示例#8
0
        deletes a snapshot
        """
        share = self._validate_share(sname, request)
        try:
            snapshot = Snapshot.objects.get(share=share, name=snap_name)
        except:
            e_msg = ('Snapshot with name: %s does not exist' % snap_name)
            handle_exception(Exception(e_msg), request)

        pool_device = Disk.objects.filter(pool=share.pool)[0].name
        try:
            if (snapshot.uvisible):
                self._toggle_visibility(share, snap_name, on=False)
        except Exception, e:
            e_msg = ('Unable to nfs unexport the snapshot, requirement for '
                     'deletion. Try again later')
            logger.error(e_msg)
            logger.exception(e)
            handle_exception(Exception(e_msg), request)

        try:
            remove_snap(share.pool.name, pool_device, sname, snap_name)
            snapshot.delete()
            return Response()
        except Exception, e:
            e_msg = ('Unable to delete snapshot due to a system error. Try '
                     'again later.')
            logger.error(e_msg)
            logger.exception(e)
            handle_exception(Exception(e_msg), request)