diff --git a/driver.go b/driver.go index 76f5d82f46ae73e595af53cea18362ceca578386..66778d2aad94c7c63edaaaeee675d61cfb26f087 100644 --- a/driver.go +++ b/driver.go @@ -322,6 +322,9 @@ func (d *Driver) GetState() (state.State, error) { if err != nil { return state.None, errors.Wrap(err, "could not get server by ID") } + if srv == nil { + return state.None, errors.New("server not found") + } switch srv.Status { case hcloud.ServerStatusInitializing: @@ -357,6 +360,10 @@ func (d *Driver) Remove() error { if err != nil { return errors.Wrap(err, "could not get ssh key") } + if key == nil { + log.Infof(" -> SSH key does not exist anymore") + return nil + } log.Infof(" -> Destroying SSHKey %s[%d]...", key.Name, key.ID) @@ -373,6 +380,9 @@ func (d *Driver) Restart() error { if err != nil { return errors.Wrap(err, "could not get server handle") } + if srv == nil { + return errors.New("server not found") + } act, _, err := d.getClient().Server.Reboot(context.Background(), srv) if err != nil { @@ -389,6 +399,9 @@ func (d *Driver) Start() error { if err != nil { return errors.Wrap(err, "could not get server handle") } + if srv == nil { + return errors.New("server not found") + } act, _, err := d.getClient().Server.Poweron(context.Background(), srv) if err != nil { @@ -405,6 +418,9 @@ func (d *Driver) Stop() error { if err != nil { return errors.Wrap(err, "could not get server handle") } + if srv == nil { + return errors.New("server not found") + } act, _, err := d.getClient().Server.Shutdown(context.Background(), srv) if err != nil { @@ -421,6 +437,9 @@ func (d *Driver) Kill() error { if err != nil { return errors.Wrap(err, "could not get server handle") } + if srv == nil { + return errors.New("server not found") + } act, _, err := d.getClient().Server.Poweroff(context.Background(), srv) if err != nil {