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 7bf67e41c9
commit 17b928fac0
1 changed files with 57 additions and 22 deletions

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,8 +122,19 @@ 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 {
log.Infof("Creating SSH key...")
@ -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},
}