diff --git a/driver/driver.go b/driver/driver.go index 50031888a989db7f52e118ebf20305cc7816ba2a..b1e361631b5e1df2e706420bf2c3b668a8bfdb10 100644 --- a/driver/driver.go +++ b/driver/driver.go @@ -505,7 +505,7 @@ func (d *Driver) Create() error { d.ServerID = srv.Server.ID log.Infof(" -> Server %s[%d]: Waiting to come up...", srv.Server.Name, srv.Server.ID) - err = d.waitForRunningServer() + err = d.waitForInitialStartup(srv) if err != nil { return err } diff --git a/driver/setup.go b/driver/setup.go index d24710eaeacde7115844d10dedd51856a182aade..13a5af9fe70bbd3b25cc88fd2739b454ba096e87 100644 --- a/driver/setup.go +++ b/driver/setup.go @@ -32,6 +32,16 @@ func (d *Driver) waitForRunningServer() error { return nil } +func (d *Driver) waitForInitialStartup(srv hcloud.ServerCreateResult) error { + if srv.NextActions != nil && len(srv.NextActions) != 0 { + if err := d.waitForMultipleActions("server.NextActions", srv.NextActions); err != nil { + return fmt.Errorf("could not wait for NextActions: %w", err) + } + } + + return d.waitForRunningServer() +} + func (d *Driver) makeCreateServerOptions() (*hcloud.ServerCreateOpts, error) { pgrp, err := d.getPlacementGroup() if err != nil {