LGTM. Thanks, Jose
On May 21 17:58, 'Helga Velroyen' via ganeti-devel wrote: > ... to make lint shut up. > > Signed-off-by: Helga Velroyen <[email protected]> > --- > autotools/build-bash-completion | 2 +- > daemons/import-export | 2 +- > lib/backend.py | 2 +- > lib/cli.py | 12 ++++++------ > lib/client/gnt_cluster.py | 2 +- > lib/cmdlib/base.py | 6 +++--- > lib/cmdlib/instance.py | 2 +- > lib/confd/client.py | 8 ++++---- > lib/config.py | 2 +- > lib/daemon.py | 2 +- > lib/http/client.py | 6 +++--- > lib/jqueue.py | 3 +++ > lib/locking.py | 2 +- > lib/masterd/instance.py | 4 ++-- > lib/mcpu.py | 2 +- > lib/netutils.py | 2 +- > lib/query.py | 18 +++++++++--------- > lib/rapi/connector.py | 2 +- > lib/rapi/testutils.py | 10 +++++----- > lib/runtime.py | 2 +- > lib/server/masterd.py | 4 ++-- > lib/server/rapi.py | 2 +- > lib/ssh.py | 2 +- > lib/storage/container.py | 4 +++- > lib/storage/drbd.py | 2 +- > lib/utils/io.py | 2 +- > lib/utils/text.py | 4 ++-- > lib/watcher/__init__.py | 2 +- > qa/qa_config.py | 2 +- > test/py/cmdlib/testsupport/processor_mock.py | 2 ++ > test/py/lockperf.py | 2 +- > test/py/mocks.py | 2 +- > tools/move-instance | 2 +- > 33 files changed, 65 insertions(+), 58 deletions(-) > > diff --git a/autotools/build-bash-completion b/autotools/build-bash-completion > index 731e93d..9ba58ed 100755 > --- a/autotools/build-bash-completion > +++ b/autotools/build-bash-completion > @@ -252,7 +252,7 @@ def WriteCompReply(sw, args, cur="\"$cur\""): > sw.Write("return") > > > -class CompletionWriter: > +class CompletionWriter(object): > """Command completion writer class. > > """ > diff --git a/daemons/import-export b/daemons/import-export > index 21d1d34..f763b60 100755 > --- a/daemons/import-export > +++ b/daemons/import-export > @@ -99,7 +99,7 @@ def SetupLogging(): > return child_logger > > > -class StatusFile: > +class StatusFile(object): > """Status file manager. > > """ > diff --git a/lib/backend.py b/lib/backend.py > index e75cf3b..332e1aa 100644 > --- a/lib/backend.py > +++ b/lib/backend.py > @@ -1722,7 +1722,7 @@ def InstanceShutdown(instance, timeout, reason, > store_reason=True): > logging.info("Instance %s not running, doing nothing", iname) > return > > - class _TryShutdown: > + class _TryShutdown(object): > def __init__(self): > self.tried_once = False > > diff --git a/lib/cli.py b/lib/cli.py > index 83c70a6..258609e 100644 > --- a/lib/cli.py > +++ b/lib/cli.py > @@ -345,7 +345,7 @@ _QFT_NAMES = { > } > > > -class _Argument: > +class _Argument(object): > def __init__(self, min=0, max=None): # pylint: disable=W0622 > self.min = min > self.max = max > @@ -2108,7 +2108,7 @@ def GenericPollJob(job_id, cbs, report_cbs): > raise errors.OpExecError(result) > > > -class JobPollCbBase: > +class JobPollCbBase(object): > """Base class for L{GenericPollJob} callbacks. > > """ > @@ -2136,7 +2136,7 @@ class JobPollCbBase: > raise NotImplementedError() > > > -class JobPollReportCbBase: > +class JobPollReportCbBase(object): > """Base class for L{GenericPollJob} reporting callbacks. > > """ > @@ -2790,7 +2790,7 @@ def GenericInstanceCreate(mode, opts, args): > return 0 > > > -class _RunWhileClusterStoppedHelper: > +class _RunWhileClusterStoppedHelper(object): > """Helper class for L{RunWhileClusterStopped} to simplify state management > > """ > @@ -3073,7 +3073,7 @@ def _GetColumnFormatter(fdef, override, unit): > raise NotImplementedError("Can't format column type '%s'" % fdef.kind) > > > -class _QueryColumnFormatter: > +class _QueryColumnFormatter(object): > """Callable class for formatting fields of a query. > > """ > @@ -3347,7 +3347,7 @@ def GenericListFields(resource, fields, separator, > header, cl=None): > return constants.EXIT_SUCCESS > > > -class TableColumn: > +class TableColumn(object): > """Describes a column for L{FormatTable}. > > """ > diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py > index d6a4b69..4d328d8 100644 > --- a/lib/client/gnt_cluster.py > +++ b/lib/client/gnt_cluster.py > @@ -1369,7 +1369,7 @@ def _InstanceStart(opts, inst_list, start, > no_remember=False): > return True > > > -class _RunWhenNodesReachableHelper: > +class _RunWhenNodesReachableHelper(object): > """Helper class to make shared internal state sharing easier. > > @ivar success: Indicates if all action_cb calls were successful > diff --git a/lib/cmdlib/base.py b/lib/cmdlib/base.py > index c735a36..58bf3b6 100644 > --- a/lib/cmdlib/base.py > +++ b/lib/cmdlib/base.py > @@ -31,7 +31,7 @@ from ganeti import utils > from ganeti.cmdlib.common import ExpandInstanceUuidAndName > > > -class ResultWithJobs: > +class ResultWithJobs(object): > """Data container for LU results with jobs. > > Instances of this class returned from L{LogicalUnit.Exec} will be > recognized > @@ -426,7 +426,7 @@ class NoHooksLU(LogicalUnit): # pylint: disable=W0223 > raise AssertionError("PreparePostHookNodes called for NoHooksLU") > > > -class Tasklet: > +class Tasklet(object): > """Tasklet base class. > > Tasklets are subcomponents for LUs. LUs can consist entirely of tasklets or > @@ -472,7 +472,7 @@ class Tasklet: > raise NotImplementedError > > > -class QueryBase: > +class QueryBase(object): > """Base for query utility classes. > > """ > diff --git a/lib/cmdlib/instance.py b/lib/cmdlib/instance.py > index 0508c6f..e2fedf7 100644 > --- a/lib/cmdlib/instance.py > +++ b/lib/cmdlib/instance.py > @@ -2095,7 +2095,7 @@ class LUInstanceMultiAlloc(NoHooksLU): > return ResultWithJobs(jobs, **self._ConstructPartialResult()) > > > -class _InstNicModPrivate: > +class _InstNicModPrivate(object): > """Data structure for network interface modifications. > > Used by L{LUInstanceSetParams}. > diff --git a/lib/confd/client.py b/lib/confd/client.py > index e37a3cd..190044b 100644 > --- a/lib/confd/client.py > +++ b/lib/confd/client.py > @@ -106,7 +106,7 @@ class _Request(object): > self.rcvd = set() > > > -class ConfdClient: > +class ConfdClient(object): > """Send queries to confd, and get back answers. > > Since the confd model works by querying multiple master candidates, and > @@ -462,7 +462,7 @@ class ConfdClientRequest(objects.ConfdRequest): > raise errors.ConfdClientError("Invalid request type") > > > -class ConfdFilterCallback: > +class ConfdFilterCallback(object): > """Callback that calls another callback, but filters duplicate results. > > @ivar consistent: a dictionary indexed by salt; for each salt, if > @@ -567,7 +567,7 @@ class ConfdFilterCallback: > self._callback(up) > > > -class ConfdCountingCallback: > +class ConfdCountingCallback(object): > """Callback that calls another callback, and counts the answers > > """ > @@ -629,7 +629,7 @@ class ConfdCountingCallback: > self._callback(up) > > > -class StoreResultCallback: > +class StoreResultCallback(object): > """Callback that simply stores the most recent answer. > > @ivar _answers: dict of salt to (have_answer, reply) > diff --git a/lib/config.py b/lib/config.py > index de803a8..fd4df67 100644 > --- a/lib/config.py > +++ b/lib/config.py > @@ -75,7 +75,7 @@ def _ValidateConfig(data): > data['version']) > > > -class TemporaryReservationManager: > +class TemporaryReservationManager(object): > """A temporary resource reservation manager. > > This is used to reserve resources in a job, before using them, making sure > diff --git a/lib/daemon.py b/lib/daemon.py > index a5cc182..673b9c7 100644 > --- a/lib/daemon.py > +++ b/lib/daemon.py > @@ -457,7 +457,7 @@ class AsyncAwaker(GanetiBaseAsyncoreDispatcher): > self.out_socket.send(chr(0)) > > > -class _ShutdownCheck: > +class _ShutdownCheck(object): > """Logic for L{Mainloop} shutdown. > > """ > diff --git a/lib/http/client.py b/lib/http/client.py > index 849a195..5fc43bd 100644 > --- a/lib/http/client.py > +++ b/lib/http/client.py > @@ -174,7 +174,7 @@ def _StartRequest(curl, req): > return _PendingRequest(curl, req, resp_buffer.getvalue) > > > -class _PendingRequest: > +class _PendingRequest(object): > def __init__(self, curl, req, resp_buffer_read): > """Initializes this class. > > @@ -233,7 +233,7 @@ class _PendingRequest: > req.completion_cb(req) > > > -class _NoOpRequestMonitor: # pylint: disable=W0232 > +class _NoOpRequestMonitor(object): # pylint: disable=W0232 > """No-op request monitor. > > """ > @@ -245,7 +245,7 @@ class _NoOpRequestMonitor: # pylint: disable=W0232 > Disable = acquire > > > -class _PendingRequestMonitor: > +class _PendingRequestMonitor(object): > _LOCK = "_lock" > > def __init__(self, owner, pending_fn): > diff --git a/lib/jqueue.py b/lib/jqueue.py > index d4664ef..0dbc039 100644 > --- a/lib/jqueue.py > +++ b/lib/jqueue.py > @@ -546,6 +546,7 @@ class _QueuedJob(object): > > > class _OpExecCallbacks(mcpu.OpExecCbBase): > + > def __init__(self, queue, job, op): > """Initializes this class. > > @@ -557,6 +558,8 @@ class _OpExecCallbacks(mcpu.OpExecCbBase): > @param op: OpCode > > """ > + super(_OpExecCallbacks, self).__init__() > + > assert queue, "Queue is missing" > assert job, "Job is missing" > assert op, "Opcode is missing" > diff --git a/lib/locking.py b/lib/locking.py > index 615e226..0b936d8 100644 > --- a/lib/locking.py > +++ b/lib/locking.py > @@ -969,7 +969,7 @@ class _AcquireTimeout(Exception): > """ > > > -class LockSet: > +class LockSet(object): > """Implements a set of locks. > > This abstraction implements a set of shared locks for the same resource > type, > diff --git a/lib/masterd/instance.py b/lib/masterd/instance.py > index 4d8b8a0..0ecc47e 100644 > --- a/lib/masterd/instance.py > +++ b/lib/masterd/instance.py > @@ -659,7 +659,7 @@ def FormatProgress(progress): > return utils.CommaJoin(parts) > > > -class ImportExportLoop: > +class ImportExportLoop(object): > MIN_DELAY = 1.0 > MAX_DELAY = 20.0 > > @@ -1140,7 +1140,7 @@ class _RemoteExportCb(ImportExportCbBase): > finished_fn() > > > -class ExportInstanceHelper: > +class ExportInstanceHelper(object): > def __init__(self, lu, feedback_fn, instance): > """Initializes this class. > > diff --git a/lib/mcpu.py b/lib/mcpu.py > index b29c272..de02278 100644 > --- a/lib/mcpu.py > +++ b/lib/mcpu.py > @@ -139,7 +139,7 @@ class LockAttemptTimeoutStrategy(object): > return timeout > > > -class OpExecCbBase: # pylint: disable=W0232 > +class OpExecCbBase(object): # pylint: disable=W0232 > """Base class for OpCode execution callbacks. > > """ > diff --git a/lib/netutils.py b/lib/netutils.py > index f39ef77..fbf9958 100644 > --- a/lib/netutils.py > +++ b/lib/netutils.py > @@ -157,7 +157,7 @@ def GetHostname(name=None, family=None): > (err[0], err[2]), errors.ECODE_RESOLVER) > > > -class Hostname: > +class Hostname(object): > """Class implementing resolver and hostname functionality. > > """ > diff --git a/lib/query.py b/lib/query.py > index fa0027f..d09032d 100644 > --- a/lib/query.py > +++ b/lib/query.py > @@ -201,7 +201,7 @@ def GetAllFields(fielddefs): > return [fdef for (fdef, _, _, _) in fielddefs] > > > -class _FilterHints: > +class _FilterHints(object): > """Class for filter analytics. > > When filters are used, the user of the L{Query} class usually doesn't know > @@ -387,7 +387,7 @@ def _MakeComparisonChecks(fn): > ] > > > -class _FilterCompilerHelper: > +class _FilterCompilerHelper(object): > """Converts a query filter to a callable usable for filtering. > > """ > @@ -655,7 +655,7 @@ def _CompileFilter(fields, hints, qfilter): > return _FilterCompilerHelper(fields)(hints, qfilter) > > > -class Query: > +class Query(object): > def __init__(self, fieldlist, selected, qfilter=None, namefield=None): > """Initializes this class. > > @@ -1087,7 +1087,7 @@ def _GetItemTimestampFields(datatype): > ] > > > -class NodeQueryData: > +class NodeQueryData(object): > """Data container for node data queries. > > """ > @@ -1406,7 +1406,7 @@ def _BuildNodeFields(): > return _PrepareFieldList(fields, []) > > > -class InstanceQueryData: > +class InstanceQueryData(object): > """Data container for instance data queries. > > """ > @@ -2236,7 +2236,7 @@ def _BuildInstanceFields(): > return _PrepareFieldList(fields, aliases) > > > -class LockQueryData: > +class LockQueryData(object): > """Data container for lock data queries. > > """ > @@ -2298,7 +2298,7 @@ def _BuildLockFields(): > ], []) > > > -class GroupQueryData: > +class GroupQueryData(object): > """Data container for node group data queries. > > """ > @@ -2658,7 +2658,7 @@ _CLUSTER_SIMPLE_FIELDS = { > } > > > -class ClusterQueryData: > +class ClusterQueryData(object): > def __init__(self, cluster, nodes, drain_flag, watcher_pause): > """Initializes this class. > > @@ -2730,7 +2730,7 @@ def _BuildClusterFields(): > ("name", "cluster_name")]) > > > -class NetworkQueryData: > +class NetworkQueryData(object): > """Data container for network data queries. > > """ > diff --git a/lib/rapi/connector.py b/lib/rapi/connector.py > index 46b89da..d0cf6ad 100644 > --- a/lib/rapi/connector.py > +++ b/lib/rapi/connector.py > @@ -43,7 +43,7 @@ _DISK_PATTERN = r"\d+" > CONNECTOR = {} > > > -class Mapper: > +class Mapper(object): > """Map resource to method. > > """ > diff --git a/lib/rapi/testutils.py b/lib/rapi/testutils.py > index cdc34dc..3eba07f 100644 > --- a/lib/rapi/testutils.py > +++ b/lib/rapi/testutils.py > @@ -145,7 +145,7 @@ def _FormatHeaders(headers): > return "\n".join(headers) > > > -class FakeCurl: > +class FakeCurl(object): > """Fake cURL object. > > """ > @@ -206,7 +206,7 @@ class FakeCurl: > writefn(resp_body) > > > -class _RapiMock: > +class _RapiMock(object): > """Mocking out the RAPI server parts. > > """ > @@ -249,7 +249,7 @@ class _RapiMock: > return (resp_msg.start_line.code, resp_msg.headers, resp_msg.body) > > > -class _TestLuxiTransport: > +class _TestLuxiTransport(object): > """Mocked LUXI transport. > > Raises L{errors.RapiTestResult} for all method calls, no matter the > @@ -282,7 +282,7 @@ class _TestLuxiTransport: > raise errors.RapiTestResult > > > -class _LuxiCallRecorder: > +class _LuxiCallRecorder(object): > """Records all called LUXI client methods. > > """ > @@ -327,7 +327,7 @@ def _TestWrapper(fn, *args, **kwargs): > return NotImplemented > > > -class InputTestClient: > +class InputTestClient(object): > """Test version of RAPI client. > > Instances of this class can be used to test input arguments for RAPI client > diff --git a/lib/runtime.py b/lib/runtime.py > index bb586f1..9f61393 100644 > --- a/lib/runtime.py > +++ b/lib/runtime.py > @@ -68,7 +68,7 @@ def GetGid(group, _getgrnam): > raise errors.ConfigurationError("Group '%s' not found (%s)" % (group, > err)) > > > -class GetentResolver: > +class GetentResolver(object): > """Resolves Ganeti uids and gids by name. > > @ivar masterd_uid: The resolved uid of the masterd user > diff --git a/lib/server/masterd.py b/lib/server/masterd.py > index 1130e90..d71d1ca 100644 > --- a/lib/server/masterd.py > +++ b/lib/server/masterd.py > @@ -143,7 +143,7 @@ class > MasterClientHandler(daemon.AsyncTerminatedMessageStream): > self.server.request_workers.AddTask((self.server, message, self)) > > > -class _MasterShutdownCheck: > +class _MasterShutdownCheck(object): > """Logic for master daemon shutdown. > > """ > @@ -267,7 +267,7 @@ class MasterServer(daemon.AsyncStreamServer): > self.context.jobqueue.Shutdown() > > > -class ClientOps: > +class ClientOps(object): > """Class holding high-level client operations.""" > def __init__(self, server): > self.server = server > diff --git a/lib/server/rapi.py b/lib/server/rapi.py > index 7cdb0aa..fb6abdc 100644 > --- a/lib/server/rapi.py > +++ b/lib/server/rapi.py > @@ -205,7 +205,7 @@ class > RemoteApiHandler(http.auth.HttpServerRequestAuthentication, > return serializer.DumpJson(result) > > > -class RapiUsers: > +class RapiUsers(object): > def __init__(self): > """Initializes this class. > > diff --git a/lib/ssh.py b/lib/ssh.py > index c694341..9599b7f 100644 > --- a/lib/ssh.py > +++ b/lib/ssh.py > @@ -106,7 +106,7 @@ def GetAllUserFiles(user, mkdir=False, dircheck=True, > _homedir_fn=None): > for (kind, (privkey, pubkey, _)) in result)) > > > -class SshRunner: > +class SshRunner(object): > """Wrapper for SSH commands. > > """ > diff --git a/lib/storage/container.py b/lib/storage/container.py > index d77d80b..24108ae 100644 > --- a/lib/storage/container.py > +++ b/lib/storage/container.py > @@ -43,7 +43,7 @@ def _ParseSize(value): > return int(round(float(value), 0)) > > > -class _Base: > +class _Base(object): > """Base class for storage abstraction. > > """ > @@ -95,6 +95,8 @@ class FileStorage(_Base): # pylint: disable=W0223 > @param paths: List of file storage paths > > """ > + super(FileStorage, self).__init__() > + > self._paths = paths > > def List(self, name, fields): > diff --git a/lib/storage/drbd.py b/lib/storage/drbd.py > index 3073b69..68c9cec 100644 > --- a/lib/storage/drbd.py > +++ b/lib/storage/drbd.py > @@ -711,7 +711,7 @@ class DRBD8Dev(base.BlockDev): > base.ThrowError("drbd%d: DRBD disk missing network info in" > " DisconnectNet()", self.minor) > > - class _DisconnectStatus: > + class _DisconnectStatus(object): > def __init__(self, ever_disconnected): > self.ever_disconnected = ever_disconnected > > diff --git a/lib/utils/io.py b/lib/utils/io.py > index 808751c..3f7116c 100644 > --- a/lib/utils/io.py > +++ b/lib/utils/io.py > @@ -71,7 +71,7 @@ def ErrnoOrStr(err): > return detail > > > -class FileStatHelper: > +class FileStatHelper(object): > """Helper to store file handle's C{fstat}. > > Useful in combination with L{ReadFile}'s C{preread} parameter. > diff --git a/lib/utils/text.py b/lib/utils/text.py > index 1fdba0e..7b64614 100644 > --- a/lib/utils/text.py > +++ b/lib/utils/text.py > @@ -246,7 +246,7 @@ def ShellCombineCommands(cmdlist): > return ["/bin/sh", "-c", " && ".join(ShellQuoteArgs(c) for c in cmdlist)] > > > -class ShellWriter: > +class ShellWriter(object): > """Helper class to write scripts with indentation. > > """ > @@ -530,7 +530,7 @@ def FormatSeconds(secs): > return " ".join(parts) > > > -class LineSplitter: > +class LineSplitter(object): > """Splits data chunks into lines separated by newline. > > Instances provide a file-like interface. > diff --git a/lib/watcher/__init__.py b/lib/watcher/__init__.py > index bb39b25..28f3a63 100644 > --- a/lib/watcher/__init__.py > +++ b/lib/watcher/__init__.py > @@ -158,7 +158,7 @@ class Instance(object): > cli.SubmitOpCode(op, cl=cl) > > > -class Node: > +class Node(object): > """Data container representing cluster node. > > """ > diff --git a/qa/qa_config.py b/qa/qa_config.py > index b23379c..a3e86ab 100644 > --- a/qa/qa_config.py > +++ b/qa/qa_config.py > @@ -666,7 +666,7 @@ def get(name, default=None): > return GetConfig().get(name, default=default) > > > -class Either: > +class Either(object): > def __init__(self, tests): > """Initializes this class. > > diff --git a/test/py/cmdlib/testsupport/processor_mock.py > b/test/py/cmdlib/testsupport/processor_mock.py > index 5d39b47..80dbe62 100644 > --- a/test/py/cmdlib/testsupport/processor_mock.py > +++ b/test/py/cmdlib/testsupport/processor_mock.py > @@ -33,6 +33,8 @@ class LogRecordingCallback(mcpu.OpExecCbBase): > > """ > def __init__(self, processor): > + super(LogRecordingCallback, self).__init__() > + > self.processor = processor > > def Feedback(self, *args): > diff --git a/test/py/lockperf.py b/test/py/lockperf.py > index 5128c33..be31149 100755 > --- a/test/py/lockperf.py > +++ b/test/py/lockperf.py > @@ -54,7 +54,7 @@ def ParseOptions(): > return (opts, args) > > > -class State: > +class State(object): > def __init__(self, thread_count): > """Initializes this class. > > diff --git a/test/py/mocks.py b/test/py/mocks.py > index d06d671..d1c53e3 100644 > --- a/test/py/mocks.py > +++ b/test/py/mocks.py > @@ -104,7 +104,7 @@ class FakeContext(object): > self.glm = FakeGLM() > > > -class FakeGetentResolver: > +class FakeGetentResolver(object): > """Fake runtime.GetentResolver""" > > def __init__(self): > diff --git a/tools/move-instance b/tools/move-instance > index 621495a..420fe21 100755 > --- a/tools/move-instance > +++ b/tools/move-instance > @@ -133,7 +133,7 @@ class Abort(Error): > """ > > > -class RapiClientFactory: > +class RapiClientFactory(object): > """Factory class for creating RAPI clients. > > @ivar src_cluster_name: Source cluster name > -- > 1.9.1.423.g4596e3a > -- Jose Antonio Lopes Ganeti Engineering Google Germany GmbH Dienerstr. 12, 80331, München Registergericht und -nummer: Hamburg, HRB 86891 Sitz der Gesellschaft: Hamburg Geschäftsführer: Graham Law, Christine Elizabeth Flores Steuernummer: 48/725/00206 Umsatzsteueridentifikationsnummer: DE813741370
