From 2118a24e7a453800280e97f95157f8f5953b09e0 Mon Sep 17 00:00:00 2001 From: Jana Cupova Date: Tue, 26 Oct 2021 12:29:16 +0200 Subject: [PATCH] Kojira throw exception when auth failed Fixes: https://pagure.io/koji/issue/2852 --- koji/auth.py | 2 +- util/kojira | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/koji/auth.py b/koji/auth.py index 15f70718..0871ff80 100644 --- a/koji/auth.py +++ b/koji/auth.py @@ -273,7 +273,7 @@ class Session(object): if not isinstance(password, str) or len(password) == 0: raise koji.AuthError('invalid username or password') if self.logged_in: - raise koji.GenericError("Already logged in") + raise koji.AuthError("Already logged in") hostip = self.get_remote_ip(override=opts.get('hostip')) # check passwd diff --git a/util/kojira b/util/kojira index e1b142f5..445cacb8 100755 --- a/util/kojira +++ b/util/kojira @@ -1317,16 +1317,20 @@ if __name__ == "__main__": session_opts = koji.grab_session_options(options) session = koji.ClientSession(options.server, session_opts) - if options.cert is not None and os.path.isfile(options.cert): - # authenticate using SSL client certificates - session.ssl_login(options.cert, None, options.serverca) - elif options.user: - # authenticate using user/password - session.login() - elif koji.reqgssapi and options.principal and options.keytab: - session.gssapi_login(options.principal, options.keytab, options.ccache) - else: - quit("No username/password/certificate supplied and Kerberos missing or not configured") + try: + if options.cert is not None and os.path.isfile(options.cert): + # authenticate using SSL client certificates + session.ssl_login(options.cert, None, options.serverca) + elif options.user: + # authenticate using user/password + session.login() + elif koji.reqgssapi and options.principal and options.keytab: + session.gssapi_login(options.principal, options.keytab, options.ccache) + else: + quit("No username/password/certificate supplied and Kerberos missing or " + "not configured") + except koji.AuthError as ex: + quit(str(ex)) # get an exclusive session try: session.exclusiveSession(force=options.force_lock)