This patch adds a unit test for bulk-removing normal nodes. Besides that, it fixes a small bug that surfaced with that test.
Signed-off-by: Helga Velroyen <[email protected]> --- lib/backend.py | 2 +- test/py/ganeti.backend_unittest.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/lib/backend.py b/lib/backend.py index 3d0443c..cfc6ec8 100644 --- a/lib/backend.py +++ b/lib/backend.py @@ -1927,8 +1927,8 @@ def RemoveNodeSshKeyBulk(node_list, master_node = ssconf_store.GetMasterNode() ssh_port_map = ssconf_store.GetSshPortMap() + all_keys_to_remove = {} if from_authorized_keys or from_public_keys: - all_keys_to_remove = {} for node_info in node_list: if keys_to_remove: diff --git a/test/py/ganeti.backend_unittest.py b/test/py/ganeti.backend_unittest.py index c551639..80845b2 100755 --- a/test/py/ganeti.backend_unittest.py +++ b/test/py/ganeti.backend_unittest.py @@ -1478,6 +1478,37 @@ class TestAddRemoveGenerateNodeSshKey(testutils.GanetiTestCase): self.assertEqual(1, len(self._ssh_file_manager.GetAuthorizedKeysOfNode(node_name))) + def testRemoveNormalNodeBulk(self): + node_list = [] + key_map = {} + for node_name, (node_uuid, node_key, _, _, _) in \ + self._ssh_file_manager.GetAllNormalNodes()[:3]: + node_list.append(backend.SshRemoveNodeInfo(uuid=node_uuid, + name=node_name, + from_authorized_keys=False, + from_public_keys=False, + clear_authorized_keys=True, + clear_public_keys=True)) + key_map[node_name] = node_key + + backend.RemoveNodeSshKeyBulk(node_list, + self._master_candidate_uuids, + self._potential_master_candidates, + pub_key_file=self._pub_key_file, + ssconf_store=self._ssconf_mock, + noded_cert_file=self.noded_cert_file, + run_cmd_fn=self._run_cmd_mock) + + for node_info in node_list: + self._ssh_file_manager.AssertNoNodeHasPublicKey( + node_info.uuid, key_map[node_info.name]) + self._ssh_file_manager.AssertNodeSetOnlyHasAuthorizedKey( + [node_info.name], key_map[node_info.name]) + self.assertEqual(0, + len(self._ssh_file_manager.GetPublicKeysOfNode(node_info.name))) + self.assertEqual(1, + len(self._ssh_file_manager.GetAuthorizedKeysOfNode(node_info.name))) + def testDemoteMasterCandidateToPotentialMasterCandidate(self): node_name, node_info = self._ssh_file_manager.GetAllMasterCandidates()[0] self._ssh_file_manager.SetOrAddNode( -- 2.6.0.rc2.230.g3dd15c0
