From 9d8e809899b9a644d0fcd5a26fb7dad3d40f8dc6 Mon Sep 17 00:00:00 2001
From: Manuel Hutter <manuel@hutter.io>
Date: Tue, 23 Oct 2018 08:36:36 +0200
Subject: [PATCH] Don't try to remove server if it does not exist

When a server does not exist anymore (eg if it has been removed manually
before removing it from docker-machine), gracefully handle the situation
and ensure the accompanying SSH-Key is removed aswell.

Fixes: #18
---
 driver.go | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/driver.go b/driver.go
index 939fe04..f6902f5 100644
--- a/driver.go
+++ b/driver.go
@@ -341,10 +341,14 @@ func (d *Driver) Remove() error {
 			return errors.Wrap(err, "could not get server handle")
 		}
 
-		log.Infof(" -> Destroying server %s[%d] in...", srv.Name, srv.ID)
-
-		if _, err := d.getClient().Server.Delete(context.Background(), srv); err != nil {
-			return errors.Wrap(err, "could not delete server")
+		if srv == nil {
+			log.Infof(" -> Server does not exist anymore")
+		} else {
+			log.Infof(" -> Destroying server %s[%d] in...", srv.Name, srv.ID)
+
+			if _, err := d.getClient().Server.Delete(context.Background(), srv); err != nil {
+				return errors.Wrap(err, "could not delete server")
+			}
 		}
 	}
 
-- 
GitLab