Yes, it's possible to make ganeti pylint clean (completely clean). It takes: - fixing a few bugs - refactoring some code - cleaning up old cruft - adding lots of disables
So compared to the 2.0 cleanups, this is not just disables, but lots of actual code changes. It still passes a full burnin, but I didn't do a QA test (yet), so RAPI/command line scripts are not tested (and things that don't have any tests are in the air). make check and make distcheck are happy. I have found a number of ganeti bugs, a pylint bug, but in general we had many weird things. Now that the code is pylint clean, people can easily test their new patches before sending and fix as appropriate. Note: this is intended to be used together with the latest pylint (0.19) and associated libs (logilab-astng+common). Note 2: I found very scary places in the code. The “Here be dragons” kind. Happy holidays everyone! Iustin Pop (31): Fix use of the logging functions Remove many 'Unused variable' warnings Fix an error message KVM: Split out the pidfile computation KVM: Abstract/rework instance up checks Fix two bugs in ConfigWriter._EnsureUUID Fix indentation issues Add some stubs to bdev.FileStorage Disable TODO warnings in pylint Update the _autoconf.py make rule for pylint Complete implementation of hv_chroot/hv_fake Introduce a makefile lint rule Rename an ConfdInotifyEventHandler init argument burnin: move decorators out of classes Add targeted pylint disables Remove more unused variables Convert to static methods (where appropriate) pylint cleanups: dangerous initializers backend._OSOndiskAPIVersion: remove obsolete arg Optparse extenders have to obey a given API jqueue/_CheckRpcResult: log the whole operation hv_xen/_GetConfigFileDiskData: remove unused arg daemons: handle arguments correctly and uniformly LUDiagnoseOS._DiagnoseByOS: remove unused arg pylint: disable the similarities checker Further pylint disables, mostly for Unused args Disable R0922 in pylint pylint: Temporarily disable W0201 confd: add a TODO and a pylint disable bdev: Add a TODO and a pylint silence Fix unused imports or add silences where needed Makefile.am | 8 +++ daemons/ganeti-confd | 40 +++++++++++------ daemons/ganeti-masterd | 27 +++++++++--- daemons/ganeti-noded | 31 ++++++++++--- daemons/ganeti-rapi | 23 +++++----- daemons/ganeti-watcher | 19 ++++++--- lib/asyncnotifier.py | 7 ++- lib/backend.py | 21 +++++---- lib/bdev.py | 22 +++++++++- lib/build/__init__.py | 1 + lib/cli.py | 9 ++-- lib/cmdlib.py | 50 +++++++++++++--------- lib/confd/client.py | 3 +- lib/confd/querylib.py | 18 ++++---- lib/confd/server.py | 8 ++-- lib/config.py | 8 ++-- lib/daemon.py | 4 +- lib/http/__init__.py | 12 +++-- lib/http/auth.py | 3 + lib/http/client.py | 2 +- lib/http/server.py | 6 +- lib/hypervisor/hv_base.py | 6 +- lib/hypervisor/hv_chroot.py | 25 +++++++++- lib/hypervisor/hv_fake.py | 100 +++++++++++++++++++++++++++++++++++++----- lib/hypervisor/hv_kvm.py | 53 +++++++++++++---------- lib/hypervisor/hv_xen.py | 14 ++---- lib/jqueue.py | 20 ++++++--- lib/locking.py | 6 +- lib/luxi.py | 2 +- lib/mcpu.py | 3 +- lib/objects.py | 18 ++++--- lib/rapi/__init__.py | 1 + lib/rapi/baserlib.py | 4 +- lib/rapi/connector.py | 10 +++- lib/rapi/rlib2.py | 18 ++++++-- lib/rpc.py | 2 +- lib/storage.py | 18 ++++++-- lib/utils.py | 13 ++++-- lib/workerpool.py | 5 +- pylintrc | 23 ++++++++++ scripts/gnt-backup | 9 ++-- scripts/gnt-cluster | 7 ++- scripts/gnt-debug | 6 ++- scripts/gnt-instance | 11 +++-- scripts/gnt-job | 7 ++- scripts/gnt-node | 8 ++-- scripts/gnt-os | 8 ++- tools/burnin | 88 ++++++++++++++++++++----------------- tools/cfgshell | 24 ++++++---- tools/cfgupgrade | 5 +- tools/lvmstrap | 14 +++--- 51 files changed, 563 insertions(+), 287 deletions(-)
