Skip to content

Commit 5c67918

Browse files
Merge branch 'release/v4'
2 parents c221c7d + 8a55793 commit 5c67918

File tree

3 files changed

+29
-10
lines changed

3 files changed

+29
-10
lines changed

README.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ $ docker-machine create \
9191
## Options
9292

9393
- `--hetzner-api-token`: **required**. Your project-specific access token for the Hetzner Cloud API.
94-
- `--hetzner-image`: The name (or ID) of the Hetzner Cloud image to use, see [Images API](https://docs.hetzner.cloud/#resources-images-get) for how to get a list (defaults to `ubuntu-18.04`).
95-
- `--hetzner-image`: The architecture to use during image lookup, inferred from the server type if not explicitly given.
94+
- `--hetzner-image`: The name (or ID) of the Hetzner Cloud image to use, see [Images API](https://docs.hetzner.cloud/#resources-images-get) for how to get a list (currently defaults to `ubuntu-20.04`). *Explicitly specifying an image is **strongly** recommended and will be **required from v6 onwards***.
95+
- `--hetzner-image-arch`: The architecture to use during image lookup, inferred from the server type if not explicitly given.
9696
- `--hetzner-image-id`: The id of the Hetzner cloud image (or snapshot) to use, see [Images API](https://docs.hetzner.cloud/#resources-images-get) for how to get a list (mutually excludes `--hetzner-image`).
9797
- `--hetzner-server-type`: The type of the Hetzner Cloud server, see [Server Types API](https://docs.hetzner.cloud/#resources-server-types-get) for how to get a list (defaults to `cx11`).
9898
- `--hetzner-server-location`: The location to create the server in, see [Locations API](https://docs.hetzner.cloud/#resources-locations-get) for how to get a list.
@@ -125,6 +125,9 @@ When `--hetzner-image` is passed, lookup will happen either by name or by ID as
125125
architecture, which is usually inferred from the server type. One may explicitly specify it using `--hetzner-image-arch` in which case the user
126126
supplied value will take precedence.
127127

128+
While there is currently a default image as fallback, this behaviour will be removed in a future version. Explicitly specifying an operating system
129+
image is strongly recommended for new deployments, and will be mandatory in upcoming versions.
130+
128131
#### Existing SSH keys
129132

130133
When you specify the `--hetzner-existing-key-path` option, the driver will attempt to copy `(specified file name)`
@@ -143,9 +146,9 @@ was used during creation.
143146
#### Environment variables and default values
144147

145148
| CLI option | Environment variable | Default |
146-
|---------------------------------|-------------------------------| -------------------------- |
149+
|---------------------------------|-------------------------------|----------------------------|
147150
| **`--hetzner-api-token`** | `HETZNER_API_TOKEN` | |
148-
| `--hetzner-image` | `HETZNER_IMAGE` | `ubuntu-18.04` |
151+
| `--hetzner-image` | `HETZNER_IMAGE` | `ubuntu-20.04` as fallback |
149152
| `--hetzner-image-arch` | `HETZNER_IMAGE_ARCH` | *(infer from server)* |
150153
| `--hetzner-image-id` | `HETZNER_IMAGE_ID` | |
151154
| `--hetzner-server-type` | `HETZNER_TYPE` | `cx11` |
@@ -247,10 +250,16 @@ $ docker-machine create --driver hetzner
247250

248251
### 4.0.0
249252

253+
* **check log output for BREAKING-V5**
250254
* `--hetzner-user-data-from-file` will be fully deprecated and its flag description will only read 'DEPRECATED, legacy'; current fallback behaviour will be retained. `--hetzner-flag-user-data-file` should be used instead.
251255
* `--hetzner-disable-public-4`/`--hetzner-disable-public-6` will be fully deprecated and its flag description will only read 'DEPRECATED, legacy'; current fallback behaviour will be retained. `--hetzner-disable-public-ipv4`/`--hetzner-disable-public-ipv6` should be used instead.
252256

253257
### 5.0.0
254258

255259
* `--hetzner-user-data-from-file` will be removed entirely, including its fallback behavior
256260
* `--hetzner-disable-public-4`/`--hetzner-disable-public-6` ill be removed entirely, including their fallback behavior
261+
* not specifying `--hetzner-image` will generate a warning stating 'use of default image is DEPRECATED'
262+
263+
### 6.0.0
264+
265+
* specifying `--hetzner-image` will be mandatory, and a default image will no longer be provided

driver/driver.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,11 @@ type Driver struct {
5959

6060
// internal housekeeping
6161
version string
62+
usesDfr bool
6263
}
6364

6465
const (
65-
defaultImage = "ubuntu-18.04"
66+
defaultImage = "ubuntu-20.04"
6667
defaultType = "cx11"
6768

6869
flagAPIToken = "hetzner-api-token"
@@ -182,7 +183,7 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
182183
mcnflag.BoolFlag{
183184
EnvVar: "HETZNER_USER_DATA_FROM_FILE",
184185
Name: legacyFlagUserDataFromFile,
185-
Usage: "DEPRECATED, use --hetzner-user-data-file. Treat --hetzner-user-data argument as filename.",
186+
Usage: "DEPRECATED, legacy.",
186187
},
187188
mcnflag.StringFlag{
188189
EnvVar: "HETZNER_USER_DATA_FILE",
@@ -215,7 +216,7 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
215216
mcnflag.BoolFlag{
216217
EnvVar: "HETZNER_DISABLE_PUBLIC_4",
217218
Name: legacyFlagDisablePublic4,
218-
Usage: "DEPRECATED, use --hetzner-disable-public-ipv4; disable public ipv4",
219+
Usage: "DEPRECATED, legacy",
219220
},
220221
mcnflag.BoolFlag{
221222
EnvVar: "HETZNER_DISABLE_PUBLIC_IPV6",
@@ -225,7 +226,7 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
225226
mcnflag.BoolFlag{
226227
EnvVar: "HETZNER_DISABLE_PUBLIC_6",
227228
Name: legacyFlagDisablePublic6,
228-
Usage: "DEPRECATED, use --hetzner-disable-public-ipv6; disable public ipv6",
229+
Usage: "DEPRECATED, legacy",
229230
},
230231
mcnflag.BoolFlag{
231232
EnvVar: "HETZNER_DISABLE_PUBLIC",
@@ -368,6 +369,13 @@ func (d *Driver) setConfigFromFlagsImpl(opts drivers.DriverOptions) error {
368369

369370
instrumented(d)
370371

372+
if d.usesDfr {
373+
log.Warn("!!!! BREAKING-V5 !!!!")
374+
log.Warn("your configuration uses deprecated flags and will stop working as-is from v5 onwards")
375+
log.Warn("check preceding output for 'DEPRECATED' log statements")
376+
log.Warn("!!!! /BREAKING-V5 !!!!")
377+
}
378+
371379
return nil
372380
}
373381

driver/flag_processing.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ func (d *Driver) verifyNetworkFlags() error {
5151

5252
func (d *Driver) deprecatedBooleanFlag(opts drivers.DriverOptions, flag, deprecatedFlag string) bool {
5353
if opts.Bool(deprecatedFlag) {
54-
log.Warnf("--%v is deprecated, use --%v instead", deprecatedFlag, flag)
54+
log.Warnf("--%v is DEPRECATED FOR REMOVAL, use --%v instead", deprecatedFlag, flag)
55+
d.usesDfr = true
5556
return true
5657
}
5758
return opts.Bool(flag)
@@ -66,7 +67,8 @@ func (d *Driver) setUserDataFlags(opts drivers.DriverOptions) error {
6667
return d.flagFailure("--%v and --%v are mutually exclusive", flagUserDataFile, legacyFlagUserDataFromFile)
6768
}
6869

69-
log.Warnf("--%v is deprecated, pass '--%v \"%v\"'", legacyFlagUserDataFromFile, flagUserDataFile, userData)
70+
log.Warnf("--%v is DEPRECATED FOR REMOVAL, pass '--%v \"%v\"'", legacyFlagUserDataFromFile, flagUserDataFile, userData)
71+
d.usesDfr = true
7072
d.userDataFile = userData
7173
return nil
7274
}

0 commit comments

Comments
 (0)