Hi,
I forgot the tests, so please consider this interdiff:
diff --git a/test/py/ganeti.ssh_unittest.py b/test/py/ganeti.ssh_unittest.py
index b520a97..a121d42 100755
--- a/test/py/ganeti.ssh_unittest.py
+++ b/test/py/ganeti.ssh_unittest.py
@@ -147,6 +147,9 @@ class TestGetUserFiles(unittest.TestCase):
constants.SSHK_DSA:
(os.path.join(self.tmpdir, ".ssh", "id_dsa"),
os.path.join(self.tmpdir, ".ssh", "id_dsa.pub")),
+ constants.SSHK_ECDSA:
+ (os.path.join(self.tmpdir, ".ssh", "id_ecdsa"),
+ os.path.join(self.tmpdir, ".ssh", "id_ecdsa.pub")),
}))
self.assertEqual(os.listdir(self.tmpdir), [])
diff --git a/test/py/ganeti.tools.prepare_node_join_unittest.py b/test/py/
ganeti.tools.prepare_node_join_unittest.py
index e0c60a4..409b7bb 100755
--- a/test/py/ganeti.tools.prepare_node_join_unittest.py
+++ b/test/py/ganeti.tools.prepare_node_join_unittest.py
@@ -143,6 +143,9 @@ class TestUpdateSshDaemon(unittest.TestCase):
constants.SSHK_DSA:
(utils.PathJoin(self.tmpdir, "dsa.private"),
utils.PathJoin(self.tmpdir, "dsa.public")),
+ constants.SSHK_ECDSA:
+ (utils.PathJoin(self.tmpdir, "ecdsa.private"),
+ utils.PathJoin(self.tmpdir, "ecdsa.public")),
}
def tearDown(self):
On Wed, 1 Jul 2015 at 14:26 Helga Velroyen <[email protected]> wrote:
> So far, Ganeti did only care about DSA and RSA host
> keys. With the rising popularity of ECDSA, we should
> support this key type as well, as it is already
> enabled by default in many common distributions.
>
> This fixes Issue 1098.
>
> Signed-off-by: Helga Velroyen <[email protected]>
> ---
> lib/ssh.py | 2 ++
> src/Ganeti/Constants.hs | 12 +++++++++++-
> 2 files changed, 13 insertions(+), 1 deletion(-)
>
> diff --git a/lib/ssh.py b/lib/ssh.py
> index 599b7cc..06003a5 100644
> --- a/lib/ssh.py
> +++ b/lib/ssh.py
> @@ -79,6 +79,8 @@ def GetUserFiles(user, mkdir=False, dircheck=True,
> kind=constants.SSHK_DSA,
> suffix = "dsa"
> elif kind == constants.SSHK_RSA:
> suffix = "rsa"
> + elif kind == constants.SSHK_ECDSA:
> + suffix = "ecdsa"
> else:
> raise errors.ProgrammerError("Unknown SSH key kind '%s'" % kind)
>
> diff --git a/src/Ganeti/Constants.hs b/src/Ganeti/Constants.hs
> index 97093df..106e4d4 100644
> --- a/src/Ganeti/Constants.hs
> +++ b/src/Ganeti/Constants.hs
> @@ -4399,11 +4399,14 @@ cryptoOptionSerialNo = "serial_no"
> sshkDsa :: String
> sshkDsa = "dsa"
>
> +sshkEcdsa :: String
> +sshkEcdsa = "ecdsa"
> +
> sshkRsa :: String
> sshkRsa = "rsa"
>
> sshkAll :: FrozenSet String
> -sshkAll = ConstantUtils.mkSet [sshkRsa, sshkDsa]
> +sshkAll = ConstantUtils.mkSet [sshkRsa, sshkDsa, sshkEcdsa]
>
> -- * SSH authorized key types
>
> @@ -4438,6 +4441,12 @@ sshHostDsaPriv = sshConfigDir ++ "/ssh_host_dsa_key"
> sshHostDsaPub :: String
> sshHostDsaPub = sshHostDsaPriv ++ ".pub"
>
> +sshHostEcdsaPriv :: String
> +sshHostEcdsaPriv = sshConfigDir ++ "/ssh_host_ecdsa_key"
> +
> +sshHostEcdsaPub :: String
> +sshHostEcdsaPub = sshHostEcdsaPriv ++ ".pub"
> +
> sshHostRsaPriv :: String
> sshHostRsaPriv = sshConfigDir ++ "/ssh_host_rsa_key"
>
> @@ -4448,6 +4457,7 @@ sshDaemonKeyfiles :: Map String (String, String)
> sshDaemonKeyfiles =
> Map.fromList [ (sshkRsa, (sshHostRsaPriv, sshHostRsaPub))
> , (sshkDsa, (sshHostDsaPriv, sshHostDsaPub))
> + , (sshkEcdsa, (sshHostEcdsaPriv, sshHostEcdsaPub))
> ]
>
> -- * Node daemon setup
> --
> 2.4.3.573.g4eafbef
>
>