diff --git a/README.md b/README.md index f02ee1bb4c4647e5375d90cf42449d941656f599..94cebcedc3f75effd7b9934915a1d830b14c7272 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,7 @@ $ docker-machine create \ - `--hetzner-ssh-port`: Change the default SSH-Port - `--hetzner-primary-ipv4/6`: Sets an existing primary IP (v4 or v6 respectively) for the server, as documented in [Networking](#networking) - `--hetzner-wait-on-error`: Amount of seconds to wait on server creation failure (0/no wait by default) +- `--hetzner-wait-on-polling`: Amount of seconds to wait between requests when waiting for some state to change. (Default: 1 second) #### Image selection diff --git a/driver/driver.go b/driver/driver.go index 9a074b493d7480c7bf9f5f2912a44f0193e3a624..8ff0e97403f13ebfa2834e3582520ce0e31cca87 100644 --- a/driver/driver.go +++ b/driver/driver.go @@ -56,6 +56,7 @@ type Driver struct { cachedAdditionalKeys []*hcloud.SSHKey WaitOnError int + WaitOnPolling int // internal housekeeping version string @@ -97,8 +98,10 @@ const ( defaultSSHPort = 22 defaultSSHUser = "root" - flagWaitOnError = "hetzner-wait-on-error" - defaultWaitOnError = 0 + flagWaitOnError = "hetzner-wait-on-error" + defaultWaitOnError = 0 + flagWaitOnPolling = "hetzner-wait-on-polling" + defaultWaitOnPolling = 1 legacyFlagUserDataFromFile = "hetzner-user-data-from-file" legacyFlagDisablePublic4 = "hetzner-disable-public-4" @@ -298,6 +301,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag { Usage: "Wait if an error happens while creating the server", Value: defaultWaitOnError, }, + mcnflag.IntFlag{ + EnvVar: "HETZNER_WAIT_ON_POLLING", + Name: flagWaitOnPolling, + Usage: "Period for waiting between requests when waiting for some state to change", + Value: defaultWaitOnPolling, + }, } } @@ -339,6 +348,7 @@ func (d *Driver) setConfigFromFlagsImpl(opts drivers.DriverOptions) error { d.SSHPort = opts.Int(flagSshPort) d.WaitOnError = opts.Int(flagWaitOnError) + d.WaitOnPolling = opts.Int(flagWaitOnPolling) d.placementGroup = opts.String(flagPlacementGroup) if opts.Bool(flagAutoSpread) { diff --git a/driver/hetzner_query.go b/driver/hetzner_query.go index 1064574268a67ac724852a0eb2a98f4e8c1ad078..4b2b87b5fea88eb0033ee7df8b50829981816caf 100644 --- a/driver/hetzner_query.go +++ b/driver/hetzner_query.go @@ -144,7 +144,7 @@ func (d *Driver) waitForAction(a *hcloud.Action) error { return act.Error() } - time.Sleep(1 * time.Second) + time.Sleep(time.Duration(d.WaitOnPolling) * time.Second) } return nil } diff --git a/driver/networking.go b/driver/networking.go index 41777b8716f77df261ba6188b911255d512ac051..acc4e066ec6b550257a9f84dc5cae23156df62a4 100644 --- a/driver/networking.go +++ b/driver/networking.go @@ -93,7 +93,7 @@ func (d *Driver) configureNetworkAccess(srv hcloud.ServerCreateResult) error { d.IPAddress = server.PrivateNet[0].IP.String() break } - time.Sleep(1 * time.Second) + time.Sleep(time.Duration(d.WaitOnPolling) * time.Second) } } else if d.DisablePublic4 { log.Infof("Using public IPv6 network ...") diff --git a/driver/setup.go b/driver/setup.go index f66e2c2c2f4adea881dcf9fab371f51734e4e21a..24362e4980111c70daed4ffda55e0374c3861811 100644 --- a/driver/setup.go +++ b/driver/setup.go @@ -20,7 +20,7 @@ func (d *Driver) waitForRunningServer() error { break } - time.Sleep(1 * time.Second) + time.Sleep(time.Duration(d.WaitOnPolling) * time.Second) } return nil }