Since the generation of SSH keys will no longer only happen at cluster init, but every time a node is added, we move the "InitSSH" method from bootstrap to the ssh module to be able to reuse it. No functional changes otherwise.
Signed-off-by: Helga Velroyen <hel...@google.com> --- lib/bootstrap.py | 26 +------------------------- lib/ssh.py | 26 +++++++++++++++++++++++++- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/lib/bootstrap.py b/lib/bootstrap.py index 5f79dd1..9f7e681 100644 --- a/lib/bootstrap.py +++ b/lib/bootstrap.py @@ -57,30 +57,6 @@ _INITCONF_ECID = "initconfig-ecid" _DAEMON_READY_TIMEOUT = 10.0 -def _InitSSHSetup(): - """Setup the SSH configuration for the cluster. - - This generates a dsa keypair for root, adds the pub key to the - permitted hosts and adds the hostkey to its own known hosts. - - """ - priv_key, pub_key, auth_keys = ssh.GetUserFiles(constants.SSH_LOGIN_USER) - - for name in priv_key, pub_key: - if os.path.exists(name): - utils.CreateBackup(name) - utils.RemoveFile(name) - - result = utils.RunCmd(["ssh-keygen", "-t", "dsa", - "-f", priv_key, - "-q", "-N", ""]) - if result.failed: - raise errors.OpExecError("Could not generate ssh keypair, error %s" % - result.output) - - utils.AddAuthorizedKey(auth_keys, utils.ReadFile(pub_key)) - - def GenerateHmacKey(file_name): """Writes a new HMAC key. @@ -768,7 +744,7 @@ def InitCluster(cluster_name, mac_prefix, # pylint: disable=R0913, R0914 utils.AddHostToEtcHosts(hostname.name, hostname.ip) if modify_ssh_setup: - _InitSSHSetup() + ssh.InitSSHSetup() if default_iallocator is not None: alloc_script = utils.FindFile(default_iallocator, diff --git a/lib/ssh.py b/lib/ssh.py index 481f680..677c2e4 100644 --- a/lib/ssh.py +++ b/lib/ssh.py @@ -106,7 +106,31 @@ def GetAllUserFiles(user, mkdir=False, dircheck=True, _homedir_fn=None): for (kind, (privkey, pubkey, _)) in result)) -class SshRunner(object): +def InitSSHSetup(error_fn=errors.OpPrereqError): + """Setup the SSH configuration for the node. + + This generates a dsa keypair for root, adds the pub key to the + permitted hosts and adds the hostkey to its own known hosts. + + """ + priv_key, pub_key, auth_keys = GetUserFiles(constants.SSH_LOGIN_USER) + + for name in priv_key, pub_key: + if os.path.exists(name): + utils.CreateBackup(name) + utils.RemoveFile(name) + + result = utils.RunCmd(["ssh-keygen", "-t", "dsa", + "-f", priv_key, + "-q", "-N", ""]) + if result.failed: + raise error_fn("Could not generate ssh keypair, error %s" % + result.output) + + utils.AddAuthorizedKey(auth_keys, utils.ReadFile(pub_key)) + + +class SshRunner: """Wrapper for SSH commands. """ -- 2.0.0.526.g5318336