diff options
author | Petr Viktorin <pviktori@redhat.com> | 2015-11-25 17:17:18 +0100 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2015-12-14 10:54:23 +0100 |
commit | 099cf98307d4b2f0ace5d5e28754f264808bf59d (patch) | |
tree | a2cfad681ef3e0adf47afdd0810e69d760fa07bf /ipaserver/dcerpc.py | |
parent | 4cc206b0f82dd68d615f0aebba5b03acf127f53a (diff) | |
download | freeipa-099cf98307d4b2f0ace5d5e28754f264808bf59d.tar.gz freeipa-099cf98307d4b2f0ace5d5e28754f264808bf59d.tar.xz freeipa-099cf98307d4b2f0ace5d5e28754f264808bf59d.zip |
Refactor ipautil.run
The ipautil.run function now returns an object with returncode and
output are accessible as attributes.
The stdout and stderr of all commands are logged (unless skip_output is given).
The stdout/stderr contents must be explicitly requested with a keyword
argument, otherwise they are None.
This is because in Python 3, the output needs to be decoded, and that can
fail if it's not decodable (human-readable) text.
The raw (bytes) output is always available from the result object,
as is "leniently" decoded output suitable for logging.
All calls are changed to reflect this.
A use of Popen in cainstance is changed to ipautil.run.
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Diffstat (limited to 'ipaserver/dcerpc.py')
-rw-r--r-- | ipaserver/dcerpc.py | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/ipaserver/dcerpc.py b/ipaserver/dcerpc.py index 2e412861e..bb58945ef 100644 --- a/ipaserver/dcerpc.py +++ b/ipaserver/dcerpc.py @@ -588,7 +588,7 @@ class DomainValidator(object): # Destroy the contents of the ccache root_logger.debug('Destroying the contents of the separate ccache') - (stdout, stderr, returncode) = ipautil.run( + ipautil.run( [paths.KDESTROY, '-A', '-c', ccache_path], env={'KRB5CCNAME': ccache_path}, raiseonerr=False) @@ -597,16 +597,14 @@ class DomainValidator(object): root_logger.debug('Running kinit from ipa.keytab to obtain HTTP ' 'service principal with MS-PAC attached.') - (stdout, stderr, returncode) = ipautil.run( + result = ipautil.run( [paths.KINIT, '-kt', keytab, principal], env={'KRB5CCNAME': ccache_path}, raiseonerr=False) - if returncode == 0: + if result.returncode == 0: return (ccache_path, principal) else: - root_logger.debug('Kinit failed, stout: %s, stderr: %s' - % (stdout, stderr)) return (None, None) def kinit_as_administrator(self, domain): @@ -634,7 +632,7 @@ class DomainValidator(object): # Destroy the contents of the ccache root_logger.debug('Destroying the contents of the separate ccache') - (stdout, stderr, returncode) = ipautil.run( + ipautil.run( [paths.KDESTROY, '-A', '-c', ccache_path], env={'KRB5CCNAME': ccache_path}, raiseonerr=False) @@ -642,17 +640,15 @@ class DomainValidator(object): # Destroy the contents of the ccache root_logger.debug('Running kinit with credentials of AD administrator') - (stdout, stderr, returncode) = ipautil.run( + result = ipautil.run( [paths.KINIT, principal], env={'KRB5CCNAME': ccache_path}, stdin=password, raiseonerr=False) - if returncode == 0: + if result.returncode == 0: return (ccache_path, principal) else: - root_logger.debug('Kinit failed, stout: %s, stderr: %s' - % (stdout, stderr)) return (None, None) def search_in_dc(self, domain, filter, attrs, scope, basedn=None, |