diff --git a/lib/build/sphinx_ext.py b/lib/build/sphinx_ext.py index 7273a75095145446bfa8b97ff305471abe3391f6..a336695a7ec96e799d858ac0c418e4708cb155fa 100644 --- a/lib/build/sphinx_ext.py +++ b/lib/build/sphinx_ext.py @@ -44,7 +44,7 @@ from ganeti import rapi import ganeti.rapi.rlib2 # pylint: disable-msg=W0611 -COMMON_PARAM_NAMES = map(operator.itemgetter(0), opcodes.OpCode.OP_PARAMS) +COMMON_PARAM_NAMES = map(compat.fst, opcodes.OpCode.OP_PARAMS) #: Namespace for evaluating expressions EVAL_NS = dict(compat=compat, constants=constants, utils=utils, errors=errors, @@ -98,7 +98,7 @@ def _BuildOpcodeParams(op_id, include, exclude, alias): params_with_alias = \ utils.NiceSort([(alias.get(name, name), name, default, test, doc) for (name, default, test, doc) in op_cls.GetAllParams()], - key=operator.itemgetter(0)) + key=compat.fst) for (rapi_name, name, default, test, doc) in params_with_alias: # Hide common parameters if not explicitely included @@ -227,7 +227,7 @@ def BuildQueryFields(fields): """ for (_, (fdef, _, _, _)) in utils.NiceSort(fields.items(), - key=operator.itemgetter(0)): + key=compat.fst): assert len(fdef.doc.splitlines()) == 1 yield "``%s``" % fdef.name yield " %s" % fdef.doc diff --git a/lib/compat.py b/lib/compat.py index 1d75c37de5dc89540afcad25d6dcadf6235278db..a1d35da55a4d1da8699f0c7bcc10366ea42ab19d 100644 --- a/lib/compat.py +++ b/lib/compat.py @@ -1,7 +1,7 @@ # # -# Copyright (C) 2010 Google Inc. +# Copyright (C) 2010, 2011 Google Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -24,6 +24,7 @@ """ import itertools +import operator try: # pylint: disable-msg=F0401 @@ -143,3 +144,8 @@ def TryToRoman(val, convert=True): else: return val +#: returns the first element of a list-like value +fst = operator.itemgetter(0) + +#: returns the second element of a list-like value +snd = operator.itemgetter(1) diff --git a/lib/locking.py b/lib/locking.py index 1b46e5f54c7635ec90f1889ad32f3fd0d9000850..df366583e8ac01221aefc8f09abef709d63353dc 100644 --- a/lib/locking.py +++ b/lib/locking.py @@ -1,7 +1,7 @@ # # -# Copyright (C) 2006, 2007, 2008, 2009, 2010 Google Inc. +# Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Google Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -1729,7 +1729,7 @@ class LockMonitor(object): key=_MonitorSortKey) # Extract lock information and build query data - return (qobj, query.LockQueryData(map(operator.itemgetter(0), lockinfo))) + return (qobj, query.LockQueryData(map(compat.fst, lockinfo))) def QueryLocks(self, fields): """Queries information from all locks. diff --git a/lib/opcodes.py b/lib/opcodes.py index e00d651c4d4f774df4a3072b9325f9490c4cec0c..cb55d6e4646b3a6c7b47a57a3362981ddc13ece1 100644 --- a/lib/opcodes.py +++ b/lib/opcodes.py @@ -37,6 +37,7 @@ import logging import re import operator +from ganeti import compat from ganeti import constants from ganeti import errors from ganeti import ht @@ -135,7 +136,7 @@ _OPID_RE = re.compile("([a-z])([A-Z])") #: Utility function for L{OpClusterSetParams} _TestClusterOsList = ht.TOr(ht.TNone, ht.TListOf(ht.TAnd(ht.TList, ht.TIsLength(2), - ht.TMap(ht.WithDesc("GetFirstItem")(operator.itemgetter(0)), + ht.TMap(ht.WithDesc("GetFirstItem")(compat.fst), ht.TElemOf(constants.DDMS_VALUES))))) diff --git a/lib/query.py b/lib/query.py index 3b8133eb264fc79183dda16bb5c5d1743b293403..ae7da5aa6195a66d534c31cf6f29c088bca4c709 100644 --- a/lib/query.py +++ b/lib/query.py @@ -2018,8 +2018,7 @@ def _BuildOsFields(): None, 0, _ConvWrap(sorted, _GetItemAttr("api_versions"))), (_MakeField("parameters", "Parameters", QFT_OTHER, "Operating system parameters"), - None, 0, _ConvWrap(compat.partial(utils.NiceSort, - key=operator.itemgetter(0)), + None, 0, _ConvWrap(compat.partial(utils.NiceSort, key=compat.fst), _GetItemAttr("parameters"))), (_MakeField("node_status", "NodeStatus", QFT_OTHER, "Status from node"),