On Thu, 2009-10-01 at 16:27 +0200, Hans de Goede wrote: > Ack, I like (although what if one of these commands gives > a multi line error message?) We'll deal with that if/when it happens ;) My thinking was that I wanted to keep it simple, and even the last line is probably a significant improvement over no information at all. > > Maybe we should put this in F-12 too ? If people think we should, fine -- I have been assuming that F13 is bugfixes-only since alpha. Dave > > Regards, > > Hans > > > On 10/01/2009 04:11 PM, David Lehman wrote: > > This should reduce the dogpiling in bugzilla for overly-generic > > errors like "lvcreate failed for VolGroup/lv_root". > > --- > > storage/devicelibs/lvm.py | 153 ++++++++++++++++++----------------------- > > storage/devicelibs/mdraid.py | 85 +++++++++++------------ > > 2 files changed, 107 insertions(+), 131 deletions(-) > > > > diff --git a/storage/devicelibs/lvm.py b/storage/devicelibs/lvm.py > > index 5fa9198..1f7e1c7 100644 > > --- a/storage/devicelibs/lvm.py > > +++ b/storage/devicelibs/lvm.py > > @@ -157,17 +157,30 @@ def clampSize(size, pesize, roundup=None): > > > > return long(round(float(size)/float(pesize)) * pesize) > > > > +def lvm(args): > > + rc = iutil.execWithRedirect("lvm", args, > > + stdout = "/dev/tty5", > > + stderr = "/dev/tty5", > > + searchPath=1) > > + if not rc: > > + return > > + > > + try: > > + msg = open("/tmp/program.log").readlines()[-1].strip() > > + except Exception: > > + msg = "" > > + > > + raise LVMError(msg) > > + > > def pvcreate(device): > > args = ["pvcreate"] + \ > > config_args + \ > > [device] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - if rc: > > - raise LVMError("pvcreate failed for %s" % device) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("pvcreate failed for %s: %s" % (device, msg)) > > > > def pvresize(device, size): > > args = ["pvresize"] + \ > > @@ -175,24 +188,20 @@ def pvresize(device, size): > > config_args + \ > > [device] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - if rc: > > - raise LVMError("pvresize failed for %s" % device) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("pvresize failed for %s: %s" % (device, msg)) > > > > def pvremove(device): > > args = ["pvremove"] + \ > > config_args + \ > > [device] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - if rc: > > - raise LVMError("pvremove failed for %s" % device) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("pvremove failed for %s: %s" % (device, msg)) > > > > def pvinfo(device): > > """ > > @@ -237,51 +246,40 @@ def vgcreate(vg_name, pv_list, pe_size): > > argv.append(vg_name) > > argv.extend(pv_list) > > > > - rc = iutil.execWithRedirect("lvm", argv, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("vgcreate failed for %s" % vg_name) > > + try: > > + lvm(argv) > > + except LVMError as msg: > > + raise LVMError("vgcreate failed for %s: %s" % (vg_name, msg)) > > > > def vgremove(vg_name): > > args = ["vgremove"] + \ > > config_args +\ > > [vg_name] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("vgremove failed for %s" % vg_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("vgremove failed for %s: %s" % (vg_name, msg)) > > > > def vgactivate(vg_name): > > args = ["vgchange", "-a", "y"] + \ > > config_args + \ > > [vg_name] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - if rc: > > - raise LVMError("vgactivate failed for %s" % vg_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("vgactivate failed for %s: %s" % (vg_name, msg)) > > > > def vgdeactivate(vg_name): > > args = ["vgchange", "-a", "n"] + \ > > config_args + \ > > [vg_name] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("vgdeactivate failed for %s" % vg_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("vgdeactivate failed for %s: %s" % (vg_name, msg)) > > > > def vgreduce(vg_name, pv_list, rm=False): > > """ Reduce a VG. > > @@ -296,13 +294,10 @@ def vgreduce(vg_name, pv_list, rm=False): > > else: > > args.extend([vg_name] + pv_list) > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("vgreduce failed for %s" % vg_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("vgreduce failed for %s: %s" % (vg_name, msg)) > > > > def vginfo(vg_name): > > args = ["vgs", "--noheadings", "--nosuffix"] + \ > > @@ -372,26 +367,20 @@ def lvcreate(vg_name, lv_name, size): > > config_args + \ > > [vg_name] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("lvcreate failed for %s/%s" % (vg_name, lv_name)) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("lvcreate failed for %s/%s: %s" % (vg_name, lv_name, msg)) > > > > def lvremove(vg_name, lv_name): > > args = ["lvremove"] + \ > > config_args + \ > > ["%s/%s" % (vg_name, lv_name)] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("lvremove failed for %s" % lv_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("lvremove failed for %s: %s" % (lv_name, msg)) > > > > def lvresize(vg_name, lv_name, size): > > args = ["lvresize"] + \ > > @@ -399,13 +388,10 @@ def lvresize(vg_name, lv_name, size): > > config_args + \ > > ["%s/%s" % (vg_name, lv_name)] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("lvresize failed for %s" % lv_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("lvresize failed for %s: %s" % (lv_name, msg)) > > > > def lvactivate(vg_name, lv_name): > > # see if lvchange accepts paths of the form 'mapper/$vg-$lv' > > @@ -413,23 +399,18 @@ def lvactivate(vg_name, lv_name): > > config_args + \ > > ["%s/%s" % (vg_name, lv_name)] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - if rc: > > - raise LVMError("lvactivate failed for %s" % lv_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("lvactivate failed for %s: %s" % (lv_name, msg)) > > > > def lvdeactivate(vg_name, lv_name): > > args = ["lvchange", "-a", "n"] + \ > > config_args + \ > > ["%s/%s" % (vg_name, lv_name)] > > > > - rc = iutil.execWithRedirect("lvm", args, > > - stdout = "/dev/tty5", > > - stderr = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise LVMError("lvdeactivate failed for %s" % lv_name) > > + try: > > + lvm(args) > > + except LVMError as msg: > > + raise LVMError("lvdeactivate failed for %s: %s" % (lv_name, msg)) > > > > diff --git a/storage/devicelibs/mdraid.py b/storage/devicelibs/mdraid.py > > index b082c7b..73099c4 100644 > > --- a/storage/devicelibs/mdraid.py > > +++ b/storage/devicelibs/mdraid.py > > @@ -119,6 +119,21 @@ def get_raid_max_spares(raidlevel, nummembers): > > > > raise ValueError, "invalid raid level %d" % raidlevel > > > > +def mdadm(args): > > + rc = iutil.execWithRedirect("mdadm", args, > > + stdout = "/dev/tty5", > > + stderr = "/dev/tty5", > > + searchPath=1) > > + if not rc: > > + return > > + > > + try: > > + msg = open("/tmp/program.log").readlines()[-1].strip() > > + except Exception: > > + msg = "" > > + > > + raise MDRaidError(msg) > > + > > def mdcreate(device, level, disks, spares=0): > > argv = ["--create", device, "--run", "--level=%s" % level] > > raid_devs = len(disks) - spares > > @@ -127,27 +142,18 @@ def mdcreate(device, level, disks, spares=0): > > argv.append("--spare-devices=%d" % spares) > > argv.extend(disks) > > > > - rc = iutil.execWithRedirect("mdadm", > > - argv, > > - stderr = "/dev/tty5", > > - stdout = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise MDRaidError("mdcreate failed for %s" % device) > > - > > - # mdadm insists on starting the new array, so we have to stop it here > > - #self.mddeactivate(device) > > + try: > > + mdadm(argv) > > + except MDRaidError as msg: > > + raise MDRaidError("mdcreate failed for %s: %s" % (device, msg)) > > > > def mddestroy(device): > > - rc = iutil.execWithRedirect("mdadm", > > - ["--zero-superblock", device], > > - stderr = "/dev/tty5", > > - stdout = "/dev/tty5", > > - searchPath=1) > > + args = ["--zero-superblock", device] > > > > - if rc: > > - raise MDRaidError("mddestroy failed for %s" % device) > > + try: > > + mdadm(args) > > + except MDRaidError as msg: > > + raise MDRaidError("mddestroy failed for %s: %s" % (device, msg)) > > > > def mdadd(device, no_degraded=False): > > args = ["--incremental", "--quiet"] > > @@ -155,14 +161,10 @@ def mdadd(device, no_degraded=False): > > args.append("--no-degraded") > > args.append(device) > > > > - rc = iutil.execWithRedirect("mdadm", > > - args, > > - stderr = "/dev/tty5", > > - stdout = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise MDRaidError("mdadd failed for %s" % device) > > + try: > > + mdadm(args) > > + except MDRaidError as msg: > > + raise MDRaidError("mdadd failed for %s: %s" % (device, msg)) > > > > def mdactivate(device, members=[], super_minor=None, update_super_minor=False, > > uuid=None): > > @@ -181,29 +183,22 @@ def mdactivate(device, members=[], super_minor=None, update_super_minor=False, > > else: > > extra_args = [ ] > > > > - rc = iutil.execWithRedirect("mdadm", > > - ["--assemble", > > - device, > > - identifier, > > - "--run", > > - "--auto=md"] + extra_args + members, > > - stderr = "/dev/tty5", > > - stdout = "/dev/tty5", > > - searchPath=1) > > - > > - if rc: > > - raise MDRaidError("mdactivate failed for %s" % device) > > + args = ["--assemble", device, identifier, "--run", "--auto=md"] > > + args += extra_args > > + args += members > > > > + try: > > + mdadm(args) > > + except MDRaidError as msg: > > + raise MDRaidError("mdactivate failed for %s: %s" % (device, msg)) > > > > def mddeactivate(device): > > - rc = iutil.execWithRedirect("mdadm", > > - ["--stop", device], > > - stderr = "/dev/tty5", > > - stdout = "/dev/tty5", > > - searchPath=1) > > + args = ["--stop", device] > > > > - if rc: > > - raise MDRaidError("mddeactivate failed for %s" % device) > > + try: > > + mdadm(args) > > + except MDRaidError as msg: > > + raise MDRaidError("mddeactivate failed for %s: %s" % (device, msg)) > > > > def mdexamine(device): > > vars = iutil.execWithCapture("mdadm", > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list