From 9683b65521c230239cf115c154d281ead362dfa5 Mon Sep 17 00:00:00 2001 From: David Archer Date: Wed, 10 Jan 2018 07:44:32 -0500 Subject: [PATCH] Fixes #4239, Fixes #3261 - openstack: only delete autogenerated keypairs on rm Signed-off-by: David Archer --- drivers/openstack/openstack.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/openstack/openstack.go b/drivers/openstack/openstack.go index 2991710d..beb6594c 100644 --- a/drivers/openstack/openstack.go +++ b/drivers/openstack/openstack.go @@ -50,6 +50,8 @@ type Driver struct { IpVersion int ConfigDrive bool client Client + // ExistingKey keeps track of whether the key was created by us or we used an existing one. If an existing one was used, we shouldn't delete it when the machine is deleted. + ExistingKey bool } const ( @@ -292,6 +294,7 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { d.ComputeNetwork = flags.Bool("openstack-nova-network") d.SSHUser = flags.String("openstack-ssh-user") d.SSHPort = flags.Int("openstack-ssh-port") + d.ExistingKey = flags.String("openstack-keypair-name") != "" d.KeyPairName = flags.String("openstack-keypair-name") d.PrivateKeyFile = flags.String("openstack-private-key-file") d.ConfigDrive = flags.Bool("openstack-config-drive") @@ -467,10 +470,11 @@ func (d *Driver) Remove() error { return err } } - log.Debug("deleting key pair...", map[string]string{"Name": d.KeyPairName}) - // TODO (fsoppelsa) maybe we want to check this, in case of shared keypairs, before removal - if err := d.client.DeleteKeyPair(d, d.KeyPairName); err != nil { - return err + if !d.ExistingKey { + log.Debug("deleting key pair...", map[string]string{"Name": d.KeyPairName}) + if err := d.client.DeleteKeyPair(d, d.KeyPairName); err != nil { + return err + } } return nil }