Newer pylint versions complain that QmpMessage is not a proper container because it does not implement the __len__() and __delitem__() methods. This commit implements them.
Also, tests are added. Signed-off-by: Michele Tartara <[email protected]> --- lib/hypervisor/hv_kvm.py | 12 ++++++++++++ test/py/ganeti.hypervisor.hv_kvm_unittest.py | 14 ++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/hypervisor/hv_kvm.py b/lib/hypervisor/hv_kvm.py index b4acee3..91a3b35 100644 --- a/lib/hypervisor/hv_kvm.py +++ b/lib/hypervisor/hv_kvm.py @@ -194,6 +194,18 @@ class QmpMessage: """ self.data[field_name] = field_value + def __len__(self): + """Return the number of fields stored in this QmpMessage. + + """ + return len(self.data) + + def __delitem__(self, key): + """Delete the specified element from the QmpMessage. + + """ + del(self.data[key]) + @staticmethod def BuildFromJsonString(json_string): """Build a QmpMessage from a JSON encoded string. diff --git a/test/py/ganeti.hypervisor.hv_kvm_unittest.py b/test/py/ganeti.hypervisor.hv_kvm_unittest.py index b3d3f79..c8eaffc 100755 --- a/test/py/ganeti.hypervisor.hv_kvm_unittest.py +++ b/test/py/ganeti.hypervisor.hv_kvm_unittest.py @@ -135,6 +135,20 @@ class TestQmpMessage(testutils.GanetiTestCase): rebuilt_message = hv_kvm.QmpMessage.BuildFromJsonString(serialized) self.assertEqual(rebuilt_message, message) + self.assertEqual(len(rebuilt_message), len(test_data)) + + def testDelete(self): + toDelete = "execute" + test_data = { + toDelete: "command", + "arguments": ["a", "b", "c"], + } + message = hv_kvm.QmpMessage(test_data) + + oldLen = len(message) + del(message[toDelete]) + newLen = len(message) + self.assertEqual(oldLen - 1, newLen) class TestQmp(testutils.GanetiTestCase): -- 1.7.10.4
