add flags for ipv6, backups and private networking to the DigitalOcean driver

Signed-off-by: Sascha Hanse <shanse@gmail.com>
This commit is contained in:
Sascha Hanse 2015-02-26 16:06:08 +01:00
parent ae57d4d142
commit 24d919bed7
2 changed files with 60 additions and 22 deletions

View File

@ -130,6 +130,9 @@ Options:
- `--digitalocean-image`: The name of the Digital Ocean image to use. Default: `docker`
- `--digitalocean-region`: The region to create the droplet in. Default: `nyc3`
- `--digitalocean-size`: The size of the Digital Ocean driver. Default: `512mb`
- `--digitalocean-ipv6`: Enable ipv6 for the droplet. Default: `false`
- `--digitalocean-backups`: Enable backups for the droplet. Default: `false`
- `--digitalocean-private-networking`: Enable private networking for the droplet. Default: `false`
### Microsoft Azure

View File

@ -30,6 +30,9 @@ type Driver struct {
Region string
SSHKeyID int
Size string
IPv6 bool
Backups bool
PrivateNetworking bool
CaCertPath string
PrivateKeyPath string
DriverKeyPath string
@ -73,6 +76,21 @@ func GetCreateFlags() []cli.Flag {
Usage: "Digital Ocean size",
Value: "512mb",
},
cli.BoolFlag{
EnvVar: "DIGITALOCEAN_IPV6",
Name: "digitalocean-ipv6",
Usage: "enable ipv6 for droplet",
},
cli.BoolFlag{
EnvVar: "DIGITALOCEAN_PRIVATE_NETWORKING",
Name: "digitalocean-private-networking",
Usage: "enable private networking for droplet",
},
cli.BoolFlag{
EnvVar: "DIGITALOCEAN_BACKUPS",
Name: "digitalocean-backups",
Usage: "enable backups for droplet",
},
}
}
@ -89,6 +107,9 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
d.Image = flags.String("digitalocean-image")
d.Region = flags.String("digitalocean-region")
d.Size = flags.String("digitalocean-size")
d.IPv6 = flags.Bool("digitalocean-ipv6")
d.PrivateNetworking = flags.Bool("digitalocean-private-networking")
d.Backups = flags.Bool("digitalocean-backups")
d.SwarmMaster = flags.Bool("swarm-master")
d.SwarmHost = flags.String("swarm-host")
d.SwarmDiscovery = flags.String("swarm-discovery")
@ -101,7 +122,18 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
}
func (d *Driver) PreCreateCheck() error {
client := d.getClient()
regions, _, err := client.Regions.List(nil)
if err != nil {
return err
}
for _, region := range regions {
if region.Slug == d.Region {
return nil
}
}
return fmt.Errorf("digitalocean requires a valid region")
}
func (d *Driver) Create() error {
@ -123,6 +155,9 @@ func (d *Driver) Create() error {
Name: d.MachineName,
Region: d.Region,
Size: d.Size,
IPv6: d.IPv6,
PrivateNetworking: d.PrivateNetworking,
Backups: d.Backups,
SSHKeys: []interface{}{d.SSHKeyID},
}