Skip to content

Commit 6b87e72

Browse files
committed
Implement --ddcloud-image-name command-line argument (#3).
1 parent f2d22a7 commit 6b87e72

File tree

4 files changed

+19
-9
lines changed

4 files changed

+19
-9
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION = 0.2
1+
VERSION = 0.3
22

33
default: fmt build test
44

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Environment: `DD_COMPUTE_REGION`.
3939
* `ddcloud-networkdomain` - The name of the target CloudControl network domain.
4040
* `ddcloud-datacenter` - The name of the CloudControl datacenter (e.g. NA1, AU9) in which the network domain is located.
4141
* `ddcloud-vlan` - The name of the target CloudControl VLAN.
42+
* `ddcloud-image-name` - The name of the OS image used to create the target machine.
43+
Note that only OS images are supported for now, not customer images. Additionally, the OS must be a Linux distribution supported by docker-machine.
4244
* `ddcloud-ssh-user` - The SSH username to use.
4345
Default: "root".
4446
Environment: `DD_COMPUTE_SSH_USER`

client.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -203,11 +203,6 @@ func (driver *Driver) getOSImage() (*compute.OSImage, error) {
203203
func (driver *Driver) resolveOSImage() error {
204204
driver.ImageID = ""
205205

206-
networkDomain, err := driver.getNetworkDomain()
207-
if err != nil {
208-
return err
209-
}
210-
211206
client, err := driver.getCloudControlClient()
212207
if err != nil {
213208
return err
@@ -218,9 +213,17 @@ func (driver *Driver) resolveOSImage() error {
218213
return err
219214
}
220215
if image == nil {
221-
log.Errorf("OS image '%s' was not found in data centre '%s'.", driver.ImageName, networkDomain.DatacenterID)
216+
log.Errorf("OS image '%s' was not found in data centre '%s'.", driver.ImageName, driver.DataCenterID)
217+
218+
return fmt.Errorf("OS image '%s' was not found in data centre '%s'", driver.ImageName, driver.DataCenterID)
219+
}
222220

223-
return fmt.Errorf("OS image '%s' was not found in data centre '%s'", driver.ImageName, networkDomain.DatacenterID)
221+
if image.OperatingSystem.Family != "UNIX" {
222+
return fmt.Errorf("OS image '%s' in data centre '%s' is not from a supported OS family (expected 'UNIX', but found '%s')",
223+
driver.ImageName,
224+
driver.DataCenterID,
225+
image.OperatingSystem.Family,
226+
)
224227
}
225228

226229
driver.ImageID = image.ID

driver.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ func (driver *Driver) GetCreateFlags() []mcnflag.Flag {
116116
Usage: "The name of the target CloudControl VLAN",
117117
Value: "",
118118
},
119+
mcnflag.StringFlag{
120+
Name: "ddcloud-image-name",
121+
Usage: fmt.Sprintf(`The name of OS image used to create the target machine. Default: "%s"`, DefaultImageName),
122+
Value: DefaultImageName,
123+
},
119124
mcnflag.StringFlag{
120125
EnvVar: "DD_COMPUTE_SSH_USER",
121126
Name: "ddcloud-ssh-user",
@@ -161,7 +166,7 @@ func (driver *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
161166
driver.NetworkDomainName = flags.String("ddcloud-networkdomain")
162167
driver.DataCenterID = flags.String("ddcloud-datacenter")
163168
driver.VLANName = flags.String("ddcloud-vlan")
164-
driver.ImageName = DefaultImageName
169+
driver.ImageName = flags.String("ddcloud-image-name")
165170

166171
driver.SSHPort = flags.Int("ddcloud-ssh-port")
167172
driver.SSHUser = flags.String("ddcloud-ssh-user")

0 commit comments

Comments
 (0)