Skip to content
Snippets Groups Projects
Unverified Commit 107e2729 authored by Iñaki Malerba's avatar Iñaki Malerba
Browse files

Allow customizing polling period


When having several machines trying to start at the same time, polling
every one second consumes the API requests limit fairly easily.

Add a new `--hetzner-wait-on-polling` flag, similar to `--wait-on-error`
to change the time between requests.

Default value is left at 1 second to keep the current behaviour.

Signed-off-by: default avatarIñaki Malerba <inaki@malerba.space>
parent 5c679189
No related branches found
No related tags found
No related merge requests found
...@@ -115,6 +115,7 @@ $ docker-machine create \ ...@@ -115,6 +115,7 @@ $ docker-machine create \
- `--hetzner-ssh-port`: Change the default SSH-Port - `--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-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-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 #### Image selection
......
...@@ -56,6 +56,7 @@ type Driver struct { ...@@ -56,6 +56,7 @@ type Driver struct {
cachedAdditionalKeys []*hcloud.SSHKey cachedAdditionalKeys []*hcloud.SSHKey
WaitOnError int WaitOnError int
WaitOnPolling int
// internal housekeeping // internal housekeeping
version string version string
...@@ -99,6 +100,8 @@ const ( ...@@ -99,6 +100,8 @@ const (
flagWaitOnError = "hetzner-wait-on-error" flagWaitOnError = "hetzner-wait-on-error"
defaultWaitOnError = 0 defaultWaitOnError = 0
flagWaitOnPolling = "hetzner-wait-on-polling"
defaultWaitOnPolling = 1
legacyFlagUserDataFromFile = "hetzner-user-data-from-file" legacyFlagUserDataFromFile = "hetzner-user-data-from-file"
legacyFlagDisablePublic4 = "hetzner-disable-public-4" legacyFlagDisablePublic4 = "hetzner-disable-public-4"
...@@ -298,6 +301,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag { ...@@ -298,6 +301,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
Usage: "Wait if an error happens while creating the server", Usage: "Wait if an error happens while creating the server",
Value: defaultWaitOnError, 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 { ...@@ -339,6 +348,7 @@ func (d *Driver) setConfigFromFlagsImpl(opts drivers.DriverOptions) error {
d.SSHPort = opts.Int(flagSshPort) d.SSHPort = opts.Int(flagSshPort)
d.WaitOnError = opts.Int(flagWaitOnError) d.WaitOnError = opts.Int(flagWaitOnError)
d.WaitOnPolling = opts.Int(flagWaitOnPolling)
d.placementGroup = opts.String(flagPlacementGroup) d.placementGroup = opts.String(flagPlacementGroup)
if opts.Bool(flagAutoSpread) { if opts.Bool(flagAutoSpread) {
......
...@@ -144,7 +144,7 @@ func (d *Driver) waitForAction(a *hcloud.Action) error { ...@@ -144,7 +144,7 @@ func (d *Driver) waitForAction(a *hcloud.Action) error {
return act.Error() return act.Error()
} }
time.Sleep(1 * time.Second) time.Sleep(time.Duration(d.WaitOnPolling) * time.Second)
} }
return nil return nil
} }
...@@ -93,7 +93,7 @@ func (d *Driver) configureNetworkAccess(srv hcloud.ServerCreateResult) error { ...@@ -93,7 +93,7 @@ func (d *Driver) configureNetworkAccess(srv hcloud.ServerCreateResult) error {
d.IPAddress = server.PrivateNet[0].IP.String() d.IPAddress = server.PrivateNet[0].IP.String()
break break
} }
time.Sleep(1 * time.Second) time.Sleep(time.Duration(d.WaitOnPolling) * time.Second)
} }
} else if d.DisablePublic4 { } else if d.DisablePublic4 {
log.Infof("Using public IPv6 network ...") log.Infof("Using public IPv6 network ...")
......
...@@ -20,7 +20,7 @@ func (d *Driver) waitForRunningServer() error { ...@@ -20,7 +20,7 @@ func (d *Driver) waitForRunningServer() error {
break break
} }
time.Sleep(1 * time.Second) time.Sleep(time.Duration(d.WaitOnPolling) * time.Second)
} }
return nil return nil
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment