Skip to content
Snippets Groups Projects
Unverified Commit f449e160 authored by Jonas Stoehr's avatar Jonas Stoehr Committed by GitHub
Browse files

Merge pull request #22 from mhutter/fix/nilpointers

Avoid segfault when a resource is missing
parents 475d0ba4 a501fe75
Branches
No related tags found
No related merge requests found
...@@ -322,6 +322,9 @@ func (d *Driver) GetState() (state.State, error) { ...@@ -322,6 +322,9 @@ func (d *Driver) GetState() (state.State, error) {
if err != nil { if err != nil {
return state.None, errors.Wrap(err, "could not get server by ID") 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 { switch srv.Status {
case hcloud.ServerStatusInitializing: case hcloud.ServerStatusInitializing:
...@@ -357,6 +360,10 @@ func (d *Driver) Remove() error { ...@@ -357,6 +360,10 @@ func (d *Driver) Remove() error {
if err != nil { if err != nil {
return errors.Wrap(err, "could not get ssh key") 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) log.Infof(" -> Destroying SSHKey %s[%d]...", key.Name, key.ID)
...@@ -373,6 +380,9 @@ func (d *Driver) Restart() error { ...@@ -373,6 +380,9 @@ func (d *Driver) Restart() error {
if err != nil { if err != nil {
return errors.Wrap(err, "could not get server handle") 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) act, _, err := d.getClient().Server.Reboot(context.Background(), srv)
if err != nil { if err != nil {
...@@ -389,6 +399,9 @@ func (d *Driver) Start() error { ...@@ -389,6 +399,9 @@ func (d *Driver) Start() error {
if err != nil { if err != nil {
return errors.Wrap(err, "could not get server handle") 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) act, _, err := d.getClient().Server.Poweron(context.Background(), srv)
if err != nil { if err != nil {
...@@ -405,6 +418,9 @@ func (d *Driver) Stop() error { ...@@ -405,6 +418,9 @@ func (d *Driver) Stop() error {
if err != nil { if err != nil {
return errors.Wrap(err, "could not get server handle") 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) act, _, err := d.getClient().Server.Shutdown(context.Background(), srv)
if err != nil { if err != nil {
...@@ -421,6 +437,9 @@ func (d *Driver) Kill() error { ...@@ -421,6 +437,9 @@ func (d *Driver) Kill() error {
if err != nil { if err != nil {
return errors.Wrap(err, "could not get server handle") 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) act, _, err := d.getClient().Server.Poweroff(context.Background(), srv)
if err != nil { if err != nil {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment