From 33993ab86a028753c72bdf7c18144295d20c1efe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ren=C3=A9=20Nussbaumer?= <rn@google.com>
Date: Tue, 24 Aug 2010 16:21:37 +0200
Subject: [PATCH] Adding a paramiko fingerprint format helper
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

And provide unittests for them

Signed-off-by: RenΓ© Nussbaumer <rn@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/ssh.py                  | 13 +++++++++++++
 test/ganeti.ssh_unittest.py |  6 ++++++
 2 files changed, 19 insertions(+)

diff --git a/lib/ssh.py b/lib/ssh.py
index 7b2e7edd3..cb7aa186a 100644
--- a/lib/ssh.py
+++ b/lib/ssh.py
@@ -26,12 +26,25 @@
 
 import os
 import logging
+import re
 
 from ganeti import utils
 from ganeti import errors
 from ganeti import constants
 
 
+def FormatParamikoFingerprint(fingerprint):
+  """Formats the fingerprint of L{paramiko.PKey.get_fingerprint()}
+
+  @type fingerprint: str
+  @param fingerprint: PKey fingerprint
+  @return The string hex representation of the fingerprint
+
+  """
+  assert len(fingerprint) % 2 == 0
+  return ":".join(re.findall(r"..", fingerprint.lower()))
+
+
 def GetUserFiles(user, mkdir=False):
   """Return the paths of a user's ssh files.
 
diff --git a/test/ganeti.ssh_unittest.py b/test/ganeti.ssh_unittest.py
index 5afd59052..bd6c951ef 100755
--- a/test/ganeti.ssh_unittest.py
+++ b/test/ganeti.ssh_unittest.py
@@ -47,6 +47,12 @@ class TestKnownHosts(testutils.GanetiTestCase):
         "%s ssh-rsa %s\n" % (cfg.GetClusterName(),
                              mocks.FAKE_CLUSTER_KEY))
 
+  def testFormatParamikoFingerprintCorrect(self):
+    self.assertEqual(ssh.FormatParamikoFingerprint("C0Ffee"), "c0:ff:ee")
+
+  def testFormatParamikoFingerprintNotDividableByTwo(self):
+    self.assertRaises(AssertionError, ssh.FormatParamikoFingerprint, "C0Ffe")
+
 
 if __name__ == '__main__':
   testutils.GanetiTestProgram()
-- 
GitLab