Skip to content

Commit f449e16

Browse files
Merge pull request #22 from mhutter/fix/nilpointers
Avoid segfault when a resource is missing
2 parents 475d0ba + a501fe7 commit f449e16

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

driver.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,9 @@ func (d *Driver) GetState() (state.State, error) {
322322
if err != nil {
323323
return state.None, errors.Wrap(err, "could not get server by ID")
324324
}
325+
if srv == nil {
326+
return state.None, errors.New("server not found")
327+
}
325328

326329
switch srv.Status {
327330
case hcloud.ServerStatusInitializing:
@@ -357,6 +360,10 @@ func (d *Driver) Remove() error {
357360
if err != nil {
358361
return errors.Wrap(err, "could not get ssh key")
359362
}
363+
if key == nil {
364+
log.Infof(" -> SSH key does not exist anymore")
365+
return nil
366+
}
360367

361368
log.Infof(" -> Destroying SSHKey %s[%d]...", key.Name, key.ID)
362369

@@ -373,6 +380,9 @@ func (d *Driver) Restart() error {
373380
if err != nil {
374381
return errors.Wrap(err, "could not get server handle")
375382
}
383+
if srv == nil {
384+
return errors.New("server not found")
385+
}
376386

377387
act, _, err := d.getClient().Server.Reboot(context.Background(), srv)
378388
if err != nil {
@@ -389,6 +399,9 @@ func (d *Driver) Start() error {
389399
if err != nil {
390400
return errors.Wrap(err, "could not get server handle")
391401
}
402+
if srv == nil {
403+
return errors.New("server not found")
404+
}
392405

393406
act, _, err := d.getClient().Server.Poweron(context.Background(), srv)
394407
if err != nil {
@@ -405,6 +418,9 @@ func (d *Driver) Stop() error {
405418
if err != nil {
406419
return errors.Wrap(err, "could not get server handle")
407420
}
421+
if srv == nil {
422+
return errors.New("server not found")
423+
}
408424

409425
act, _, err := d.getClient().Server.Shutdown(context.Background(), srv)
410426
if err != nil {
@@ -421,6 +437,9 @@ func (d *Driver) Kill() error {
421437
if err != nil {
422438
return errors.Wrap(err, "could not get server handle")
423439
}
440+
if srv == nil {
441+
return errors.New("server not found")
442+
}
424443

425444
act, _, err := d.getClient().Server.Poweroff(context.Background(), srv)
426445
if err != nil {

0 commit comments

Comments
 (0)