コード例 #1
0
ファイル: views.py プロジェクト: fangcunguolin/freenas
def disk_wipe(request, devname):

    form = forms.DiskWipeForm()
    if request.method == "POST":
        form = forms.DiskWipeForm(request.POST)
        if form.is_valid():
            mounted = []
            for geom in notifier().disk_get_consumers(devname):
                gname = geom.xpath("./name")[0].text
                dev = "/dev/%s" % (gname, )
                if dev not in mounted and is_mounted(device=dev):
                    mounted.append(dev)
            for vol in models.Volume.objects.all():
                if devname in vol.get_disks():
                    mounted.append(vol.vol_name)
            if mounted:
                form._errors['__all__'] = form.error_class([
                    "Umount the following mount points before proceeding:"
                    "<br /> %s" % ('<br /> '.join(mounted), )
                ])
            else:
                notifier().disk_wipe(devname, form.cleaned_data['method'])
                return JsonResp(request, message=_("Disk successfully wiped"))

        return JsonResp(request, form=form)

    return render(request, "storage/disk_wipe.html", {
        'devname': devname,
        'form': form,
    })
コード例 #2
0
def disk_wipe(request, devname):
    global DISK_WIPE_JOB_ID

    if request.method == "POST":
        form = forms.DiskWipeForm(request.POST, disk=devname)
        if form.is_valid():
            DISK_WIPE_JOB_ID = None
            try:
                with client as c:
                    DISK_WIPE_JOB_ID = c.call('disk.wipe', devname, form.cleaned_data['method'])
                    wait_job(c, DISK_WIPE_JOB_ID)
            except JobAborted:
                raise MiddlewareError(_('Disk wipe job was aborted'))
            except JobFailed as e:
                raise MiddlewareError(_('Disk wipe job failed: %s') % str(e.value))
            return JsonResp(
                request,
                message=_("Disk successfully wiped"))

        return JsonResp(request, form=form)

    form = forms.DiskWipeForm(disk=devname)

    return render(request, "storage/disk_wipe.html", {
        'devname': devname,
        'form': form,
    })