From 3e3138fcd7ad084beae0cf200af08b43700f78e2 Mon Sep 17 00:00:00 2001 From: Bilal Amarni Date: Sat, 2 Apr 2016 09:31:30 +0200 Subject: [PATCH] [DigitalOcean] Fix missing identity file error When using the --digitalocean-ssh-key-fingerprint flag, no SSH key pair is generated. Keeping the driver's SSHKeyPath option empty makes sure the ssh client won't perform any validation on the private key. Signed-off-by: Bilal Amarni --- drivers/digitalocean/digitalocean.go | 8 ++++++++ drivers/digitalocean/digitalocean_test.go | 20 ++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/drivers/digitalocean/digitalocean.go b/drivers/digitalocean/digitalocean.go index 58aa8603c5..fe9ff96301 100644 --- a/drivers/digitalocean/digitalocean.go +++ b/drivers/digitalocean/digitalocean.go @@ -347,6 +347,14 @@ func (d *Driver) getClient() *godo.Client { return godo.NewClient(client) } +func (d *Driver) GetSSHKeyPath() string { + // don't set SSHKeyPath when using an existing key fingerprint + if d.SSHKeyPath == "" && d.SSHKeyFingerprint == "" { + d.SSHKeyPath = d.ResolveStorePath("id_rsa") + } + return d.SSHKeyPath +} + func (d *Driver) publicSSHKeyPath() string { return d.GetSSHKeyPath() + ".pub" } diff --git a/drivers/digitalocean/digitalocean_test.go b/drivers/digitalocean/digitalocean_test.go index 349f39a7d9..5eb1e365b0 100644 --- a/drivers/digitalocean/digitalocean_test.go +++ b/drivers/digitalocean/digitalocean_test.go @@ -21,6 +21,8 @@ func TestSetConfigFromFlags(t *testing.T) { assert.NoError(t, err) assert.Empty(t, checkFlags.InvalidFlags) + + assert.Equal(t, driver.ResolveStorePath("id_rsa"), driver.GetSSHKeyPath()) } func TestDefaultSSHUserAndPort(t *testing.T) { @@ -62,3 +64,21 @@ func TestCustomSSHUserAndPort(t *testing.T) { assert.Equal(t, 2222, sshPort) assert.NoError(t, err) } + +func TestSSHKeyFingerprint(t *testing.T) { + driver := NewDriver("default", "path") + + checkFlags := &drivers.CheckDriverOptions{ + FlagsValues: map[string]interface{}{ + "digitalocean-access-token": "TOKEN", + "digitalocean-ssh-key-fingerprint": "64:51:2b:9b:8b:f0:95:3c:f9:36:4d:8b:80:a8:8f:1e", + }, + CreateFlags: driver.GetCreateFlags(), + } + + err := driver.SetConfigFromFlags(checkFlags) + assert.NoError(t, err) + + assert.Equal(t, "64:51:2b:9b:8b:f0:95:3c:f9:36:4d:8b:80:a8:8f:1e", driver.SSHKeyFingerprint) + assert.Equal(t, "", driver.GetSSHKeyPath()) +}