From 6e1467872b3d715c2aa04ca9c3d4f27396050991 Mon Sep 17 00:00:00 2001 From: Mike Bonnet Date: Thu, 30 Oct 2014 12:58:32 -0400 Subject: [PATCH 1/2] add --runas option --- src/pyrpkg/__init__.py | 17 ++++++++++++++--- src/pyrpkg/cli.py | 5 +++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/pyrpkg/__init__.py b/src/pyrpkg/__init__.py index 57d187e..bb8d78c 100644 --- a/src/pyrpkg/__init__.py +++ b/src/pyrpkg/__init__.py @@ -70,7 +70,7 @@ class Commands(object): def __init__(self, path, lookaside, lookasidehash, lookaside_cgi, gitbaseurl, anongiturl, branchre, kojiconfig, - build_client, user=None, dist=None, target=None, + build_client, user=None, runas=None, dist=None, target=None, quiet=False): """Init the object and some configuration details.""" @@ -142,6 +142,8 @@ class Commands(object): self._topurl = None # The user to use or discover self._user = user + # The alternate Koji user to run commands as + self._runas = runas # The rpm version of the cloned module self._ver = None self.log = log @@ -246,16 +248,19 @@ class Commands(object): defaults['authtype'] is None: self._kojisession.ssl_login(defaults['cert'], defaults['ca'], - defaults['serverca']) + defaults['serverca'], + proxyuser=self.runas) # Or try password auth elif defaults['authtype'] == 'password' or \ 'user' in defaults and defaults['authtype'] is None: + if self.runas is not None: + raise rpkgError('--runas cannot be used with password auth') self._kojisession.login() # Or try kerberos elif defaults['authtype'] == 'kerberos' or \ self._has_krb_creds() and \ defaults['authtype'] is None: - self._kojisession.krb_login() + self._kojisession.krb_login(proxyuser=self.runas) if not self._kojisession.logged_in: raise rpkgError('Could not auth with koji as %s' % self.user) @@ -655,6 +660,12 @@ class Commands(object): self._user = os.getlogin() @property + def runas(self): + """This property ensures the runas attribute""" + + return self._runas + + @property def ver(self): """This property ensures the ver attribute""" if not self._ver: diff --git a/src/pyrpkg/cli.py b/src/pyrpkg/cli.py index 80812e6..a6b02d4 100755 --- a/src/pyrpkg/cli.py +++ b/src/pyrpkg/cli.py @@ -104,6 +104,7 @@ class cliClient(object): items['kojiconfig'], items['build_client'], user=self.args.user, + runas=self.args.runas, dist=self.args.dist, target=target, quiet=self.args.q, @@ -157,6 +158,10 @@ class cliClient(object): # Override the discovered user name self.parser.add_argument('--user', default=None, help='Override the discovered user name') + # Run Koji commands as a user other then the one you have + # credentials for (requires configuration on the Koji hub) + self.parser.add_argument('--runas', default=None, + help='Run Koji commands as a different user') # Let the user define a path to work in rather than cwd self.parser.add_argument('--path', default=None, help='Define the directory to work in ' -- 1.7.1