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, })
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, })