[blivet][master] Do not mix stdout and stderr when running utilities

Vratislav Podzimek vpodzime at redhat.com
Thu Oct 30 19:36:41 UTC 2014


On Thu, 2014-10-30 at 09:51 -0400, Anne Mulhern wrote:
> 
> 
> 
> ----- Original Message -----
> > From: "Vratislav Podzimek" <vpodzime at redhat.com>
> > To: anaconda-patches at lists.fedorahosted.org
> > Sent: Thursday, October 30, 2014 8:01:57 AM
> > Subject: [blivet][master] Do not mix stdout and stderr when running utilities
> > 
> > We only gather data from stdout and stderr contents may confuse our parsing
> > code. But we may still be interested in the stderr so log it.
> > 
> > Signed-off-by: Vratislav Podzimek <vpodzime at redhat.com>
> > ---
> >  blivet/util.py | 10 ++++++++--
> >  1 file changed, 8 insertions(+), 2 deletions(-)
> > 
> > diff --git a/blivet/util.py b/blivet/util.py
> > index a69b694..01a4548 100644
> > --- a/blivet/util.py
> > +++ b/blivet/util.py
> > @@ -44,15 +44,21 @@ def _run_program(argv, root='/', stdin=None,
> > env_prune=None):
> >              proc = subprocess.Popen(argv,
> >                                      stdin=stdin,
> >                                      stdout=subprocess.PIPE,
> > -                                    stderr=subprocess.STDOUT,
> > +                                    stderr=subprocess.PIPE,
> >                                      close_fds=True,
> >                                      preexec_fn=chroot, cwd=root, env=env)
> >  
> > -            out = proc.communicate()[0]
> > +            out, err = proc.communicate()
> >              if out:
> > +                program_log.info("stdout:")
> >                  for line in out.splitlines():
> >                      program_log.info("%s", line)
> >  
> > +            if err:
> > +                program_log.info("stderr:")
> > +                for line in err.splitlines():
> > +                    program_log.info("%s", line)
> > +
> >          except OSError as e:
> >              program_log.error("Error running %s: %s", argv[0], e.strerror)
> >              raise
> > --
> > 1.9.3
> > 
> > _______________________________________________
> > anaconda-patches mailing list
> > anaconda-patches at lists.fedorahosted.org
> > https://lists.fedorahosted.org/mailman/listinfo/anaconda-patches
> > 
> 
> I do not like conflating standard out and standard error.
> So, generally speaking, I'm in favor of this change.
> 
> I also do not see any methods in devicelibs that seem to expect to read
> stderr from stdout. This doesn't mean there are none, but it's heartening.
> 
> I looked around outside devicelibs and found a number of calls to 
> util.*capture_output* methods that were worth investigating.
> However, only fcoe.fcoe.addSan() seems to me to contain
> some calls which seem to expect that
> out will contain stderr. 
Not that I have much chance to understand what's going on there, but
I'll have a look at that call.

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list