Re: [Freeipa-devel] [PATCH] 0091 ipautil.run: Log the command line before running the command

2012-10-18 Thread Rob Crittenden

Jan Cholasta wrote:

On 16.10.2012 17:26, Petr Viktorin wrote:

On 10/16/2012 04:53 PM, Jan Cholasta wrote:

On 16.10.2012 16:27, Petr Viktorin wrote:

On 10/16/2012 04:02 PM, Jan Cholasta wrote:

Hi,

On 15.10.2012 14:45, Petr Viktorin wrote:

As I was debugging code that calls long-running or failing
commands, I
got tired of the invocation being logged after the command is done.
This patch should improve the logging.

https://fedorahosted.org/freeipa/ticket/3174
---
Petr³



+except:
+root_logger.debug('Process failed')
+raise

Why do you use blank except here? Can you print the reason why the
process has failed or the exit code here?

Honza



I re-raise command afterwards, so the error is not really handled or
ignored. It's one of the few situations where a bare except is
justified :)


OK, makes sense.


Since the error is re-raised, it should be handled by the caller.
Printing additional info here should be redundant.
The exception can happen before the Popen object is created, so the
return code might not be available. Anyway bad return code is handled
later, here we'd get errors like command not found, fork() failure etc.


Right. Anyway, I think logging the return code might come handy in some
situations. Can you please add it?



You're right. Added.



I see that the wording could be better, attaching new patch:
s/Process failed/Process execution failed/
s/Process successful/Process finished/



Honza






Thanks. ACK.

Honza



pushed to ipa-3-0 and master

rob

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] [PATCH] 0091 ipautil.run: Log the command line before running the command

2012-10-16 Thread Jan Cholasta

On 16.10.2012 16:27, Petr Viktorin wrote:

On 10/16/2012 04:02 PM, Jan Cholasta wrote:

Hi,

On 15.10.2012 14:45, Petr Viktorin wrote:

As I was debugging code that calls long-running or failing commands, I
got tired of the invocation being logged after the command is done.
This patch should improve the logging.

https://fedorahosted.org/freeipa/ticket/3174
---
Petr³



+except:
+root_logger.debug('Process failed')
+raise

Why do you use blank except here? Can you print the reason why the
process has failed or the exit code here?

Honza



I re-raise command afterwards, so the error is not really handled or
ignored. It's one of the few situations where a bare except is justified :)


OK, makes sense.


Since the error is re-raised, it should be handled by the caller.
Printing additional info here should be redundant.
The exception can happen before the Popen object is created, so the
return code might not be available. Anyway bad return code is handled
later, here we'd get errors like command not found, fork() failure etc.


Right. Anyway, I think logging the return code might come handy in some 
situations. Can you please add it?




I see that the wording could be better, attaching new patch:
s/Process failed/Process execution failed/
s/Process successful/Process finished/



Honza

--
Jan Cholasta

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] [PATCH] 0091 ipautil.run: Log the command line before running the command

2012-10-16 Thread Jan Cholasta

On 16.10.2012 17:26, Petr Viktorin wrote:

On 10/16/2012 04:53 PM, Jan Cholasta wrote:

On 16.10.2012 16:27, Petr Viktorin wrote:

On 10/16/2012 04:02 PM, Jan Cholasta wrote:

Hi,

On 15.10.2012 14:45, Petr Viktorin wrote:

As I was debugging code that calls long-running or failing commands, I
got tired of the invocation being logged after the command is done.
This patch should improve the logging.

https://fedorahosted.org/freeipa/ticket/3174
---
Petr³



+except:
+root_logger.debug('Process failed')
+raise

Why do you use blank except here? Can you print the reason why the
process has failed or the exit code here?

Honza



I re-raise command afterwards, so the error is not really handled or
ignored. It's one of the few situations where a bare except is
justified :)


OK, makes sense.


Since the error is re-raised, it should be handled by the caller.
Printing additional info here should be redundant.
The exception can happen before the Popen object is created, so the
return code might not be available. Anyway bad return code is handled
later, here we'd get errors like command not found, fork() failure etc.


Right. Anyway, I think logging the return code might come handy in some
situations. Can you please add it?



You're right. Added.



I see that the wording could be better, attaching new patch:
s/Process failed/Process execution failed/
s/Process successful/Process finished/



Honza






Thanks. ACK.

Honza

--
Jan Cholasta

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] [PATCH] 0091 ipautil.run: Log the command line before running the command

2012-10-16 Thread Petr Viktorin

On 10/16/2012 04:53 PM, Jan Cholasta wrote:

On 16.10.2012 16:27, Petr Viktorin wrote:

On 10/16/2012 04:02 PM, Jan Cholasta wrote:

Hi,

On 15.10.2012 14:45, Petr Viktorin wrote:

As I was debugging code that calls long-running or failing commands, I
got tired of the invocation being logged after the command is done.
This patch should improve the logging.

https://fedorahosted.org/freeipa/ticket/3174
---
Petr³



+except:
+root_logger.debug('Process failed')
+raise

Why do you use blank except here? Can you print the reason why the
process has failed or the exit code here?

Honza



I re-raise command afterwards, so the error is not really handled or
ignored. It's one of the few situations where a bare except is
justified :)


OK, makes sense.


Since the error is re-raised, it should be handled by the caller.
Printing additional info here should be redundant.
The exception can happen before the Popen object is created, so the
return code might not be available. Anyway bad return code is handled
later, here we'd get errors like command not found, fork() failure etc.


Right. Anyway, I think logging the return code might come handy in some
situations. Can you please add it?



You're right. Added.



I see that the wording could be better, attaching new patch:
s/Process failed/Process execution failed/
s/Process successful/Process finished/



Honza




--
Petr³
From 41f6557a1f7712316e297c1221e12f251c53e906 Mon Sep 17 00:00:00 2001
From: Petr Viktorin pvikt...@redhat.com
Date: Tue, 25 Sep 2012 09:29:49 -0400
Subject: [PATCH] ipautil.run: Log the command line before running the command

When the user interrupts a long-running command, this ensures that
the command is logged. Also, when watching log files (or the -d
output), it's apparent what's being done.

https://fedorahosted.org/freeipa/ticket/3174
---
 ipapython/ipautil.py | 17 +++--
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index 0b519c2957f63770f9a28d7abe9083f724a9cf40..e76d87d3dfcabc473f833d566cf919f95ff2f68e 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -292,30 +292,35 @@ def run(args, stdin=None, raiseonerr=True,
 p_out = subprocess.PIPE
 p_err = subprocess.PIPE
 
+arg_string = nolog_replace(' '.join(args), nolog)
+root_logger.debug('Starting external process')
+root_logger.debug('args=%s' % arg_string)
+
 try:
 p = subprocess.Popen(args, stdin=p_in, stdout=p_out, stderr=p_err,
  close_fds=True, env=env, cwd=cwd)
 stdout,stderr = p.communicate(stdin)
 stdout,stderr = str(stdout), str(stderr)# Make pylint happy
 except KeyboardInterrupt:
+root_logger.debug('Process interrupted')
 p.wait()
 raise
+except:
+root_logger.debug('Process execution failed')
+raise
+
+root_logger.debug('Process finished, return code=%s', p.returncode)
 
 # The command and its output may include passwords that we don't want
 # to log. Replace those.
-args = ' '.join(args)
 if capture_output:
 stdout = nolog_replace(stdout, nolog)
 stderr = nolog_replace(stderr, nolog)
-args = nolog_replace(args, nolog)
-
-root_logger.debug('args=%s' % args)
-if capture_output:
 root_logger.debug('stdout=%s' % stdout)
 root_logger.debug('stderr=%s' % stderr)
 
 if p.returncode != 0 and raiseonerr:
-raise CalledProcessError(p.returncode, args)
+raise CalledProcessError(p.returncode, arg_string)
 
 return (stdout, stderr, p.returncode)
 
-- 
1.7.11.7

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

[Freeipa-devel] [PATCH] 0091 ipautil.run: Log the command line before running the command

2012-10-15 Thread Petr Viktorin
As I was debugging code that calls long-running or failing commands, I 
got tired of the invocation being logged after the command is done.

This patch should improve the logging.

https://fedorahosted.org/freeipa/ticket/3174
---
Petr³

From dd504f133857d310938ba3c43065485ee90b6073 Mon Sep 17 00:00:00 2001
From: Petr Viktorin pvikt...@redhat.com
Date: Tue, 25 Sep 2012 09:29:49 -0400
Subject: [PATCH] ipautil.run: Log the command line before running the command

When the user interrupts a long-running command, this ensures that
the command is logged. Also, when watching log files (or the -d
output), it's apparent what's being done.

https://fedorahosted.org/freeipa/ticket/3174
---
 ipapython/ipautil.py | 17 +++--
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
index 0b519c2957f63770f9a28d7abe9083f724a9cf40..aa86f7557be0d90ac7ca7298aa0c5023bd776696 100644
--- a/ipapython/ipautil.py
+++ b/ipapython/ipautil.py
@@ -292,30 +292,35 @@ def run(args, stdin=None, raiseonerr=True,
 p_out = subprocess.PIPE
 p_err = subprocess.PIPE
 
+arg_string = nolog_replace(' '.join(args), nolog)
+root_logger.debug('Starting external process')
+root_logger.debug('args=%s' % arg_string)
+
 try:
 p = subprocess.Popen(args, stdin=p_in, stdout=p_out, stderr=p_err,
  close_fds=True, env=env, cwd=cwd)
 stdout,stderr = p.communicate(stdin)
 stdout,stderr = str(stdout), str(stderr)# Make pylint happy
 except KeyboardInterrupt:
+root_logger.debug('Process interrupted')
 p.wait()
 raise
+except:
+root_logger.debug('Process failed')
+raise
+
+root_logger.debug('Process successful')
 
 # The command and its output may include passwords that we don't want
 # to log. Replace those.
-args = ' '.join(args)
 if capture_output:
 stdout = nolog_replace(stdout, nolog)
 stderr = nolog_replace(stderr, nolog)
-args = nolog_replace(args, nolog)
-
-root_logger.debug('args=%s' % args)
-if capture_output:
 root_logger.debug('stdout=%s' % stdout)
 root_logger.debug('stderr=%s' % stderr)
 
 if p.returncode != 0 and raiseonerr:
-raise CalledProcessError(p.returncode, args)
+raise CalledProcessError(p.returncode, arg_string)
 
 return (stdout, stderr, p.returncode)
 
-- 
1.7.11.7

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel