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): 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.xpathEval("./name")[0].content dev = "/dev/%s" % (gname,) if dev not in mounted and is_mounted(device=dev): mounted.append(dev) for vol in models.Volume.objects.filter(vol_fstype="ZFS"): 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 mounted(self): return is_mounted(device=self.source, path=self.destination_jail)