diff --git a/builder/kojid b/builder/kojid index 6c2d490a..3d740db5 100755 --- a/builder/kojid +++ b/builder/kojid @@ -1976,7 +1976,7 @@ class ChainMavenTask(MultiPlatformTask): del todo[package] try: results = self.wait(running.keys()) - except (six.moves.xmlrpc_client.Fault, koji.GenericError), e: + except (six.moves.xmlrpc_client.Fault, koji.GenericError) as e: # One task has failed, wait for the rest to complete before the # chainmaven task fails. self.wait(all=True) should thrown an exception. self.wait(all=True) @@ -2113,7 +2113,7 @@ class TagBuildTask(BaseTaskHandler): #XXX - add more post tests self.session.host.tagBuild(self.id,tag_id,build_id,force=force,fromtag=fromtag) self.session.host.tagNotification(True, tag_id, fromtag, build_id, user_id, ignore_success) - except Exception, e: + except Exception as e: exctype, value = sys.exc_info()[:2] self.session.host.tagNotification(False, tag_id, fromtag, build_id, user_id, ignore_success, "%s: %s" % (exctype, value)) raise e @@ -2676,10 +2676,10 @@ class ImageTask(BaseTaskHandler): self.ks = ksparser.KickstartParser(version) try: self.ks.readKickstart(kspath) - except IOError, e: + except IOError as e: raise koji.LiveCDError("Failed to read kickstart file " "'%s' : %s" % (kspath, e)) - except kserrors.KickstartError, e: + except kserrors.KickstartError as e: raise koji.LiveCDError("Failed to parse kickstart file " "'%s' : %s" % (kspath, e)) @@ -3291,10 +3291,10 @@ class OzImageTask(BaseTaskHandler): self.logger.debug('attempting to read kickstart: %s' % kspath) try: ks.readKickstart(kspath) - except IOError, e: + except IOError as e: raise koji.BuildError("Failed to read kickstart file " "'%s' : %s" % (kspath, e)) - except kserrors.KickstartError, e: + except kserrors.KickstartError as e: raise koji.BuildError("Failed to parse kickstart file " "'%s' : %s" % (kspath, e)) return ks @@ -4228,7 +4228,7 @@ class BuildIndirectionImageTask(OzImageTask): base_factory_image = _nvr_to_image(opts['base_image_build'], opts['arch']) else: base_factory_image = _task_to_image(int(opts['base_image_task'])) - except Exception, e: + except Exception as e: self.logger.exception(e) raise @@ -4290,7 +4290,7 @@ class BuildIndirectionImageTask(OzImageTask): image_id=base_factory_image.identifier, parameters=params) target.target_thread.join() - except Exception, e: + except Exception as e: self.logger.debug("Exception encountered during target build") self.logger.exception(e) finally: @@ -5633,7 +5633,7 @@ if __name__ == "__main__": # authenticate using SSL client certificates session.ssl_login(options.cert, None, options.serverca) - except koji.AuthError, e: + except koji.AuthError as e: quit("Error: Unable to log in: %s" % e) except six.moves.xmlrpc_client.ProtocolError: quit("Error: Unable to connect to server %s" % (options.server)) @@ -5653,9 +5653,9 @@ if __name__ == "__main__": session.krb_login(principal=krb_principal, keytab=options.keytab, ccache=options.ccache) - except krbV.Krb5Error, e: + except krbV.Krb5Error as e: quit("Kerberos authentication failed: '%s' (%s)" % (e.args[1], e.args[0])) - except socket.error, e: + except socket.error as e: quit("Could not connect to Kerberos authentication service: '%s'" % e.args[1]) else: quit("No username/password supplied and Kerberos missing or not configured") diff --git a/cli/koji b/cli/koji index 1c1b1c05..4a192fcb 100755 --- a/cli/koji +++ b/cli/koji @@ -240,7 +240,7 @@ def get_options(): # load local config try: result = koji.read_config(options.profile, user_config=options.configFile) - except koji.ConfigurationError, e: + except koji.ConfigurationError as e: parser.error(e.args[0]) assert False # pragma: no cover @@ -342,7 +342,7 @@ class TaskWatcher(object): error = None try: result = self.session.getTaskResult(self.id) - except (six.moves.xmlrpc_client.Fault,koji.GenericError),e: + except (six.moves.xmlrpc_client.Fault,koji.GenericError) as e: error = e if error is None: # print("%s: complete" % self.str()) @@ -550,7 +550,7 @@ def list_task_output_all_volumes(session, task_id): """List task output with all volumes, or fake it""" try: return session.listTaskOutput(task_id, all_volumes=True) - except koji.GenericError, e: + except koji.GenericError as e: if 'got an unexpected keyword argument' not in str(e): raise # otherwise leave off the option and fake it @@ -944,7 +944,7 @@ def _progress_callback(uploaded, total, piece, time, total_time): def _running_in_bg(): try: return (not os.isatty(0)) or (os.getpgrp() != os.tcgetpgrp(0)) - except OSError, e: + except OSError as e: return True def handle_build(options, session, args): @@ -1167,7 +1167,7 @@ def handle_maven_build(options, session, args): try: params = koji.util.parse_maven_param(build_opts.inis, scratch=build_opts.scratch, section=build_opts.section) - except ValueError, e: + except ValueError as e: parser.error(e.args[0]) opts = params.values()[0] if opts.pop('type', 'maven') != 'maven': @@ -1226,7 +1226,7 @@ def handle_wrapper_rpm(options, session, args): try: params = koji.util.parse_maven_param(build_opts.inis, scratch=build_opts.scratch, section=build_opts.section) - except ValueError, e: + except ValueError as e: parser.error(e.args[0]) opts = params.values()[0] if opts.get('type') != 'wrapper': @@ -1300,7 +1300,7 @@ def handle_maven_chain(options, session, args): opts[key] = val try: builds = koji.util.parse_maven_chain(args[1:], scratch=opts.get('scratch')) - except ValueError, e: + except ValueError as e: parser.error(e.args[0]) priority = None if build_opts.background: @@ -1675,7 +1675,7 @@ def handle_import(options, session, args): sys.stdout.flush() try: session.importRPM(serverdir, os.path.basename(path)) - except koji.GenericError, e: + except koji.GenericError as e: print(_("\nError importing: %s" % str(e).splitlines()[-1])) sys.stdout.flush() else: @@ -2284,7 +2284,7 @@ def handle_prune_signed_copies(options, session, args): print("Unlinking: %s" % signedpath) try: os.unlink(signedpath) - except OSError, e: + except OSError as e: print("Error removing %s: %s" % (signedpath, e)) print("This script needs write access to %s" % koji.BASEDIR) continue @@ -2304,7 +2304,7 @@ def handle_prune_signed_copies(options, session, args): print("Removing dir: %s" % dir) try: os.rmdir(dir) - except OSError, e: + except OSError as e: print("Error removing %s: %s" % (signedpath, e)) if len(sigdirs) == 1: dir = sigdirs.keys()[0] @@ -2315,7 +2315,7 @@ def handle_prune_signed_copies(options, session, args): print("Removing dir: %s" % dir) try: os.rmdir(dir) - except OSError, e: + except OSError as e: print("Error removing %s: %s" % (signedpath, e)) elif len(sigdirs) > 1: print("Warning: more than one signature dir for %s: %r" % (sigkey, sigdirs)) @@ -2549,7 +2549,7 @@ def handle_import_in_place(options, session, args): sys.stdout.write(_("importing %s... ") % nvr) try: session.importBuildInPlace(data) - except koji.GenericError, e: + except koji.GenericError as e: print(_("\nError importing: %s" % str(e).splitlines()[-1])) sys.stdout.flush() else: @@ -6735,7 +6735,7 @@ def anon_handle_download_build(options, session, args): # We want the latest build, not a specific build try: builds = session.listTagged(suboptions.latestfrom, latest=True, package=build, type=suboptions.type) - except koji.GenericError, data: + except koji.GenericError as data: print("Error finding latest build: %s" % data) return 1 if not builds: @@ -7382,7 +7382,7 @@ def handle_runroot(options, session, args): kwargs['new_chroot'] = True task_id = session.runroot(tag, arch, command, **kwargs) - except koji.GenericError, e: + except koji.GenericError as e: if 'Invalid method' in str(e): print("* The runroot plugin appears to not be installed on the" " koji hub. Please contact the administrator.") @@ -7458,7 +7458,7 @@ def handle_save_failed_tree(options, session, args): try: task_id = session.saveFailedTree(br_id, opts.full) - except koji.GenericError, e: + except koji.GenericError as e: m = str(e) if 'Invalid method' in m: print(_("* The save_failed_tree plugin appears to not be " @@ -7573,9 +7573,9 @@ def activate_session(session): session.krb_login(principal=options.principal, keytab=options.keytab, proxyuser=options.runas) else: session.krb_login(proxyuser=options.runas) - except socket.error, e: + except socket.error as e: warn(_("Could not connect to Kerberos authentication service: %s") % e.args[1]) - except Exception, e: + except Exception as e: if krbV is not None and isinstance(e, krbV.Krb5Error): error(_("Kerberos authentication failed: %s (%s)") % (e.args[1], e.args[0])) else: diff --git a/hub/kojihub.py b/hub/kojihub.py index 627fb78f..2fec4ea3 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -421,7 +421,7 @@ class Task(object): # If the result is a Fault, then loads will raise it # This is normally what we want to happen result, method = six.moves.xmlrpc_client.loads(xml_result) - except six.moves.xmlrpc_client.Fault, fault: + except six.moves.xmlrpc_client.Fault as fault: if raise_fault: raise # Note that you can't really return a fault over xmlrpc, except by @@ -8800,7 +8800,7 @@ class RootExports(object): fn = get_upload_path(path, name, create=True, volume=volume) try: st = os.lstat(fn) - except OSError, e: + except OSError as e: if e.errno == errno.ENOENT: pass else: @@ -8869,7 +8869,7 @@ class RootExports(object): data = {} try: fd = os.open(fn, os.O_RDONLY) - except OSError, e: + except OSError as e: if e.errno == errno.ENOENT: return None else: @@ -8877,7 +8877,7 @@ class RootExports(object): try: try: fcntl.lockf(fd, fcntl.LOCK_SH|fcntl.LOCK_NB) - except IOError, e: + except IOError as e: raise koji.LockError(e) st = os.fstat(fd) if not stat.S_ISREG(st.st_mode): @@ -10387,7 +10387,7 @@ class RootExports(object): #handle older base64 encoded data val = base64.decodestring(val) data, method = six.moves.xmlrpc_client.loads(val) - except six.moves.xmlrpc_client.Fault, fault: + except six.moves.xmlrpc_client.Fault as fault: data = fault task[f] = data yield task @@ -12430,7 +12430,7 @@ class HostExports(object): logger.debug("os.link(%r, %r)", rpmpath, l_dst) try: os.link(rpmpath, l_dst) - except OSError, ose: + except OSError as ose: if ose.errno == 18: shutil.copy2( rpmpath, os.path.join(archdir, bnplet, bnp)) @@ -12527,7 +12527,7 @@ def handle_upload(environ): try: try: fcntl.lockf(fd, fcntl.LOCK_EX|fcntl.LOCK_NB) - except IOError, e: + except IOError as e: raise koji.LockError(e) if offset == -1: offset = os.lseek(fd, 0, 2) diff --git a/hub/kojixmlrpc.py b/hub/kojixmlrpc.py index bee6b5b5..4f4d2b87 100644 --- a/hub/kojixmlrpc.py +++ b/hub/kojixmlrpc.py @@ -244,7 +244,7 @@ class ModXMLRPCRequestHandler(object): # wrap response in a singleton tuple response = (response,) response = dumps(response, methodresponse=1, allow_none=1) - except Fault, fault: + except Fault as fault: self.traceback = True response = dumps(fault) except: @@ -338,7 +338,7 @@ class ModXMLRPCRequestHandler(object): for call in calls: try: result = self._dispatch(call['methodName'], call['params']) - except Fault, fault: + except Fault as fault: results.append({'faultCode': fault.faultCode, 'faultString': fault.faultString}) except: # transform unknown exceptions into XML-RPC Faults diff --git a/hub/rpmdiff b/hub/rpmdiff index 4536a9d9..59723777 100755 --- a/hub/rpmdiff +++ b/hub/rpmdiff @@ -227,7 +227,7 @@ def main(): ignore_tags = [] try: opts, args = getopt.getopt(sys.argv[1:], "hi:", ["help", "ignore="]) - except getopt.GetoptError, e: + except getopt.GetoptError as e: print("Error: %s" % e) _usage() diff --git a/koji/__init__.py b/koji/__init__.py index ef218784..6e4fa456 100644 --- a/koji/__init__.py +++ b/koji/__init__.py @@ -475,7 +475,7 @@ def safe_xmlrpc_loads(s): """Load xmlrpc data from a string, but catch faults""" try: return loads(s) - except Fault, f: + except Fault as f: return f ## BEGIN kojikamid dup @@ -1582,7 +1582,7 @@ def config_directory_contents(dir_name): configs = [] try: conf_dir_contents = os.listdir(dir_name) - except OSError, exception: + except OSError as exception: if exception.errno != errno.ENOENT: raise else: @@ -2312,7 +2312,7 @@ class ClientSession(object): for i in (0, 1): try: return self._sendOneCall(handler, headers, request) - except Exception, e: + except Exception as e: if i or not is_conn_error(e): raise self.logger.debug("Connection Error: %s", e) @@ -2405,7 +2405,7 @@ class ClientSession(object): # note that, for logged-in sessions the server should tell us (via a RetryError fault) # if the call cannot be retried. For non-logged-in sessions, all calls should be read-only # and hence retryable. - except Fault, fault: + except Fault as fault: #try to convert the fault to a known exception err = convertFault(fault) if isinstance(err, ServerOffline): @@ -2421,7 +2421,7 @@ class ClientSession(object): except (SystemExit, KeyboardInterrupt): #(depending on the python version, these may or may not be subclasses of Exception) raise - except Exception, e: + except Exception as e: tb_str = ''.join(traceback.format_exception(*sys.exc_info())) self.new_session() diff --git a/koji/auth.py b/koji/auth.py index c69a5b48..d0dc5f42 100644 --- a/koji/auth.py +++ b/koji/auth.py @@ -79,7 +79,7 @@ class Session(object): try: id = long(args['session-id'][0]) key = args['session-key'][0] - except KeyError, field: + except KeyError as field: raise koji.AuthError('%s not specified in session args' % field) try: callnum = args['callnum'][0] diff --git a/koji/daemon.py b/koji/daemon.py index 3743d27a..f298abc4 100644 --- a/koji/daemon.py +++ b/koji/daemon.py @@ -609,7 +609,7 @@ class TaskManager(object): rootdir = "%s/root" % topdir try: st = os.lstat(rootdir) - except OSError, e: + except OSError as e: if e.errno == errno.ENOENT: rootdir = None else: @@ -630,13 +630,13 @@ class TaskManager(object): #also remove the config try: os.unlink(data['cfg']) - except OSError, e: + except OSError as e: self.logger.warn("%s: can't remove config: %s" % (desc, e)) elif age > 120: if rootdir: try: flist = os.listdir(rootdir) - except OSError, e: + except OSError as e: self.logger.warn("%s: can't list rootdir: %s" % (desc, e)) continue if flist: @@ -864,7 +864,7 @@ class TaskManager(object): prefix = "Task %i (pid %i)" % (task_id, pid) try: (childpid, status) = os.waitpid(pid, os.WNOHANG) - except OSError, e: + except OSError as e: #check errno if e.errno != errno.ECHILD: #should not happen @@ -905,7 +905,7 @@ class TaskManager(object): try: os.kill(pid, sig) - except OSError, e: + except OSError as e: # process probably went away, we'll find out on the next iteration self.logger.info('Error sending signal %i to %s (pid %i, taskID %i): %s' % (sig, execname, pid, task_id, e)) @@ -1194,7 +1194,7 @@ class TaskManager(object): self.logger.info("RESPONSE: %r" % response) self.session.host.closeTask(handler.id, response) return - except six.moves.xmlrpc_client.Fault, fault: + except six.moves.xmlrpc_client.Fault as fault: response = six.moves.xmlrpc_client.dumps(fault) tb = ''.join(traceback.format_exception(*sys.exc_info())).replace(r"\n", "\n") self.logger.warn("FAULT:\n%s" % tb) diff --git a/koji/ssl/SSLConnection.py b/koji/ssl/SSLConnection.py index d854770a..2e53db7d 100644 --- a/koji/ssl/SSLConnection.py +++ b/koji/ssl/SSLConnection.py @@ -106,7 +106,7 @@ class SSLConnection: try: sent = con.send(data, flags) - except SSL.SysCallError, e: + except SSL.SysCallError as e: if e[0] == 32: # Broken Pipe self.close() sent = 0 @@ -142,7 +142,7 @@ class SSLConnection: return None except SSL.WantReadError: time.sleep(0.2) - except SSL.SysCallError, e: + except SSL.SysCallError as e: if e.args == (-1, 'Unexpected EOF'): break raise diff --git a/koji/tasks.py b/koji/tasks.py index d47fb7a0..41d6b5ee 100644 --- a/koji/tasks.py +++ b/koji/tasks.py @@ -240,7 +240,7 @@ class BaseTaskHandler(object): continue try: self.session.getTaskResult(task) - except (koji.GenericError, six.moves.xmlrpc_client.Fault), task_error: + except (koji.GenericError, six.moves.xmlrpc_client.Fault) as task_error: self.logger.info("task %s failed or was canceled" % task) failed = True break diff --git a/koji/util.py b/koji/util.py index 9fce070e..96d24abf 100644 --- a/koji/util.py +++ b/koji/util.py @@ -156,7 +156,7 @@ def call_with_argcheck(func, args, kwargs=None): kwargs = {} try: return func(*args, **kwargs) - except TypeError, e: + except TypeError as e: if sys.exc_info()[2].tb_next is None: # The stack is only one high, so the error occurred in this function. # Therefore, we assume the TypeError is due to a parameter mismatch @@ -459,7 +459,7 @@ def setup_rlimits(opts, logger=None): logger.warn('Setting resource limit: %s = %r', key, limits) try: resource.setrlimit(rcode, tuple(limits)) - except ValueError, e: + except ValueError as e: logger.error("Unable to set %s: %s", key, e) class adler32_constructor(object): diff --git a/util/koji-gc b/util/koji-gc index fb29d540..4a7e6e31 100755 --- a/util/koji-gc +++ b/util/koji-gc @@ -198,7 +198,7 @@ def get_options(): if len(parts) < 2: continue options.key_aliases[parts[0].upper()] = parts[1] - except ValueError, e: + except ValueError as e: print(e) parser.error(_("Invalid key alias data in config: %s") % config.get('main','key_aliases')) @@ -373,9 +373,9 @@ def activate_session(session): session.krb_login(principal=options.principal, keytab=options.keytab, proxyuser=options.runas) else: session.krb_login(proxyuser=options.runas) - except krbV.Krb5Error, e: + except krbV.Krb5Error as e: error(_("Kerberos authentication failed: %s (%s)") % (e.args[1], e.args[0])) - except socket.error, e: + except socket.error as e: warn(_("Could not connect to Kerberos authentication service: '%s'") % e.args[1]) if not options.noauth and not session.logged_in: error(_("Error: unable to log in, no authentication methods available")) @@ -656,7 +656,7 @@ def handle_delete(just_salvage=False): session.untagBuildBypass(trashcan_tag, binfo['id']) try: session.deleteBuild(binfo['id']) - except (six.moves.xmlrpc_client.Fault, koji.GenericError), e: + except (six.moves.xmlrpc_client.Fault, koji.GenericError) as e: print("Warning: deletion failed: %s" % e) #server issue pass @@ -875,7 +875,7 @@ def handle_prune(): try: session.untagBuildBypass(taginfo['id'], entry['build_id'], force=bypass) untagged.setdefault(nvr, {})[tagname] = 1 - except (six.moves.xmlrpc_client.Fault, koji.GenericError), e: + except (six.moves.xmlrpc_client.Fault, koji.GenericError) as e: print("Warning: untag operation failed: %s" % e) pass # if action == 'keep' do nothing @@ -909,7 +909,7 @@ def handle_prune(): print("Deleting untagged build: %s" % nvr) try: session.deleteBuild(build_id, strict=False) - except (six.moves.xmlrpc_client.Fault, koji.GenericError), e: + except (six.moves.xmlrpc_client.Fault, koji.GenericError) as e: print("Warning: deletion failed: %s" % e) #server issue pass diff --git a/util/koji-shadow b/util/koji-shadow index d17f01c5..0b93b846 100755 --- a/util/koji-shadow +++ b/util/koji-shadow @@ -329,9 +329,9 @@ def activate_session(session): session.krb_login(principal=options.principal, keytab=options.keytab, proxyuser=options.runas) else: session.krb_login(proxyuser=options.runas) - except krbV.Krb5Error, e: + except krbV.Krb5Error as e: error(_("Kerberos authentication failed: '%s' (%s)") % (e.args[1], e.args[0])) - except socket.error, e: + except socket.error as e: warn(_("Could not connect to Kerberos authentication service: '%s'") % e.args[1]) if not options.noauth and not session.logged_in: error(_("Error: unable to log in")) diff --git a/util/kojira b/util/kojira index c09c40bd..a875f291 100755 --- a/util/kojira +++ b/util/kojira @@ -146,7 +146,7 @@ class ManagedRepo(object): #also check dir age. We do this because a repo can be created from an older event #and should not be removed based solely on that event's timestamp. mtime = os.stat(path).st_mtime - except OSError, e: + except OSError as e: if e.errno == 2: # No such file or directory, so the repo either never existed, # or has already been deleted, so allow it to be marked deleted. @@ -226,7 +226,7 @@ class RepoManager(object): prefix = "pid %i (%s)" % (pid, self.delete_pids.get(pid)) try: (childpid, status) = os.waitpid(pid, os.WNOHANG) - except OSError, e: + except OSError as e: if e.errno != errno.ECHILD: #should not happen raise @@ -261,7 +261,7 @@ class RepoManager(object): for pid in self.delete_pids: try: os.kill(pid, sig) - except OSError, e: + except OSError as e: if e.errno != errno.ESRCH: logger.error("Unable to kill process %s", pid)