mirror of https://github.com/docker/docs.git
Refactor option management to use codegangsta/cli
Signed-off-by: Guillaume Giamarchi <guillaume.giamarchi@gmail.com>
This commit is contained in:
parent
c304288a82
commit
c16adeb46f
|
@ -3,13 +3,12 @@ package openstack
|
|||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
flag "github.com/docker/docker/pkg/mflag"
|
||||
"github.com/codegangsta/cli"
|
||||
"github.com/docker/docker/utils"
|
||||
"github.com/docker/machine/drivers"
|
||||
"github.com/docker/machine/ssh"
|
||||
|
@ -63,99 +62,106 @@ type CreateFlags struct {
|
|||
|
||||
func init() {
|
||||
drivers.Register("openstack", &drivers.RegisteredDriver{
|
||||
New: NewDriver,
|
||||
RegisterCreateFlags: RegisterCreateFlags,
|
||||
New: NewDriver,
|
||||
GetCreateFlags: GetCreateFlags,
|
||||
})
|
||||
}
|
||||
|
||||
func RegisterCreateFlags(cmd *flag.FlagSet) interface{} {
|
||||
createFlags := new(CreateFlags)
|
||||
createFlags.AuthUrl = cmd.String(
|
||||
[]string{"-openstack-auth-url"},
|
||||
os.Getenv("OS_AUTH_URL"),
|
||||
"OpenStack authentication URL",
|
||||
)
|
||||
createFlags.Username = cmd.String(
|
||||
[]string{"-openstack-username"},
|
||||
os.Getenv("OS_USERNAME"),
|
||||
"OpenStack username",
|
||||
)
|
||||
createFlags.Password = cmd.String(
|
||||
[]string{"-openstack-password"},
|
||||
os.Getenv("OS_PASSWORD"),
|
||||
"OpenStack password",
|
||||
)
|
||||
createFlags.TenantName = cmd.String(
|
||||
[]string{"-openstack-tenant-name"},
|
||||
os.Getenv("OS_TENANT_NAME"),
|
||||
"OpenStack tenant name",
|
||||
)
|
||||
createFlags.TenantId = cmd.String(
|
||||
[]string{"-openstack-tenant-id"},
|
||||
os.Getenv("OS_TENANT_ID"),
|
||||
"OpenStack tenant id",
|
||||
)
|
||||
createFlags.Region = cmd.String(
|
||||
[]string{"-openstack-region"},
|
||||
os.Getenv("OS_REGION_NAME"),
|
||||
"OpenStack region name",
|
||||
)
|
||||
createFlags.EndpointType = cmd.String(
|
||||
[]string{"-openstack-endpoint-type"},
|
||||
os.Getenv("OS_ENDPOINT_TYPE"),
|
||||
"OpenStack endpoint type (adminURL, internalURL or the default publicURL)",
|
||||
)
|
||||
createFlags.FlavorId = cmd.String(
|
||||
[]string{"-openstack-flavor-id"},
|
||||
"",
|
||||
"OpenStack flavor id to use for the instance",
|
||||
)
|
||||
createFlags.FlavorName = cmd.String(
|
||||
[]string{"-openstack-flavor-name"},
|
||||
"",
|
||||
"OpenStack flavor name to use for the instance",
|
||||
)
|
||||
createFlags.ImageId = cmd.String(
|
||||
[]string{"-openstack-image-id"},
|
||||
"",
|
||||
"OpenStack image id to use for the instance",
|
||||
)
|
||||
createFlags.ImageName = cmd.String(
|
||||
[]string{"-openstack-image-name"},
|
||||
"",
|
||||
"OpenStack image name to use for the instance",
|
||||
)
|
||||
createFlags.NetworkId = cmd.String(
|
||||
[]string{"-openstack-net-id"},
|
||||
"",
|
||||
"OpenStack network id the machine will be connected on",
|
||||
)
|
||||
createFlags.NetworkName = cmd.String(
|
||||
[]string{"-openstack-net-name"},
|
||||
"",
|
||||
"OpenStack network name the machine will be connected on",
|
||||
)
|
||||
createFlags.SecurityGroups = cmd.String(
|
||||
[]string{"-openstack-sec-groups"},
|
||||
"",
|
||||
"OpenStack comma separated security groups for the machine",
|
||||
)
|
||||
createFlags.FloatingIpPool = cmd.String(
|
||||
[]string{"-openstack-floatingip-pool"},
|
||||
"",
|
||||
"OpenStack floating IP pool to get an IP from to assign to the instance",
|
||||
)
|
||||
createFlags.SSHUser = cmd.String(
|
||||
[]string{"-openstack-ssh-user"},
|
||||
"root",
|
||||
"OpenStack SSH user. Set to root by default",
|
||||
)
|
||||
createFlags.SSHPort = cmd.Int(
|
||||
[]string{"-openstack-ssh-port"},
|
||||
22,
|
||||
"OpenStack SSH port. Set to 22 by default",
|
||||
)
|
||||
return createFlags
|
||||
func GetCreateFlags() []cli.Flag {
|
||||
return []cli.Flag{
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_AUTH_URL",
|
||||
Name: "openstack-auth-url",
|
||||
Usage: "OpenStack authentication URL",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_USERNAME",
|
||||
Name: "openstack-username",
|
||||
Usage: "OpenStack username",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_PASSWORD",
|
||||
Name: "openstack-password",
|
||||
Usage: "OpenStack password",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_TENANT_NAME",
|
||||
Name: "openstack-tenant-name",
|
||||
Usage: "OpenStack tenant name",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_TENANT_ID",
|
||||
Name: "openstack-tenant-id",
|
||||
Usage: "OpenStack tenant id",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_REGION_NAME",
|
||||
Name: "openstack-region",
|
||||
Usage: "OpenStack region name",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_ENDPOINT_TYPE",
|
||||
Name: "openstack-endpoint-type",
|
||||
Usage: "OpenStack endpoint type (adminURL, internalURL or publicURL)",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-flavor-id",
|
||||
Usage: "OpenStack flavor id to use for the instance",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-flavor-name",
|
||||
Usage: "OpenStack flavor name to use for the instance",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-image-id",
|
||||
Usage: "OpenStack image id to use for the instance",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-image-name",
|
||||
Usage: "OpenStack image name to use for the instance",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-net-id",
|
||||
Usage: "OpenStack image name to use for the instance",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-net-name",
|
||||
Usage: "OpenStack network name the machine will be connected on",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-sec-groups",
|
||||
Usage: "OpenStack comma separated security groups for the machine",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-floatingip-pool",
|
||||
Usage: "OpenStack floating IP pool to get an IP from to assign to the instance",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "openstack-ssh-user",
|
||||
Usage: "OpenStack SSH user",
|
||||
Value: "root",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "openstack-ssh-port",
|
||||
Usage: "OpenStack SSH port",
|
||||
Value: 22,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func NewDriver(storePath string) (drivers.Driver, error) {
|
||||
|
@ -177,28 +183,26 @@ func (d *Driver) DriverName() string {
|
|||
return "openstack"
|
||||
}
|
||||
|
||||
func (d *Driver) SetConfigFromFlags(flagsInterface interface{}) error {
|
||||
flags := flagsInterface.(*CreateFlags)
|
||||
d.AuthUrl = *flags.AuthUrl
|
||||
d.Username = *flags.Username
|
||||
d.Password = *flags.Password
|
||||
d.TenantName = *flags.TenantName
|
||||
d.TenantId = *flags.TenantId
|
||||
d.Region = *flags.Region
|
||||
d.EndpointType = *flags.EndpointType
|
||||
d.FlavorName = *flags.FlavorName
|
||||
d.FlavorId = *flags.FlavorId
|
||||
d.ImageName = *flags.ImageName
|
||||
d.ImageId = *flags.ImageId
|
||||
d.NetworkId = *flags.NetworkId
|
||||
d.NetworkName = *flags.NetworkName
|
||||
if *flags.SecurityGroups != "" {
|
||||
d.SecurityGroups = strings.Split(*flags.SecurityGroups, ",")
|
||||
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
|
||||
d.AuthUrl = flags.String("openstack-auth-url")
|
||||
d.Username = flags.String("openstack-username")
|
||||
d.Password = flags.String("openstack-password")
|
||||
d.TenantName = flags.String("openstack-tenant-name")
|
||||
d.TenantId = flags.String("openstack-tenant-id")
|
||||
d.Region = flags.String("openstack-region")
|
||||
d.EndpointType = flags.String("openstack-endpoint-type")
|
||||
d.FlavorId = flags.String("openstack-flavor-id")
|
||||
d.FlavorName = flags.String("openstack-flavor-name")
|
||||
d.ImageId = flags.String("openstack-image-id")
|
||||
d.ImageName = flags.String("openstack-image-name")
|
||||
d.NetworkId = flags.String("openstack-net-id")
|
||||
d.NetworkName = flags.String("openstack-net-name")
|
||||
if flags.String("openstack-sec-groups") != "" {
|
||||
d.SecurityGroups = strings.Split(flags.String("openstack-sec-groups"), ",")
|
||||
}
|
||||
d.FloatingIpPool = *flags.FloatingIpPool
|
||||
d.SSHUser = *flags.SSHUser
|
||||
d.SSHPort = *flags.SSHPort
|
||||
|
||||
d.FloatingIpPool = flags.String("openstack-floatingip-pool")
|
||||
d.SSHUser = flags.String("openstack-ssh-user")
|
||||
d.SSHPort = flags.Int("openstack-ssh-port")
|
||||
return d.checkConfig()
|
||||
}
|
||||
|
||||
|
|
|
@ -2,10 +2,9 @@ package rackspace
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
log "github.com/Sirupsen/logrus"
|
||||
flag "github.com/docker/docker/pkg/mflag"
|
||||
"github.com/codegangsta/cli"
|
||||
"github.com/docker/machine/drivers"
|
||||
"github.com/docker/machine/drivers/openstack"
|
||||
)
|
||||
|
@ -32,60 +31,60 @@ type CreateFlags struct {
|
|||
|
||||
func init() {
|
||||
drivers.Register("rackspace", &drivers.RegisteredDriver{
|
||||
New: NewDriver,
|
||||
RegisterCreateFlags: RegisterCreateFlags,
|
||||
New: NewDriver,
|
||||
GetCreateFlags: GetCreateFlags,
|
||||
})
|
||||
}
|
||||
|
||||
// RegisterCreateFlags registers the "machine create" flags recognized by this driver, including
|
||||
// GetCreateFlags registers the "machine create" flags recognized by this driver, including
|
||||
// their help text and defaults.
|
||||
func RegisterCreateFlags(cmd *flag.FlagSet) interface{} {
|
||||
createFlags := new(CreateFlags)
|
||||
createFlags.Username = cmd.String(
|
||||
[]string{"-rackspace-username"},
|
||||
os.Getenv("OS_USERNAME"),
|
||||
"Rackspace account username",
|
||||
)
|
||||
createFlags.APIKey = cmd.String(
|
||||
[]string{"-rackspace-api-key"},
|
||||
os.Getenv("OS_API_KEY"),
|
||||
"Rackspace API key",
|
||||
)
|
||||
createFlags.Region = cmd.String(
|
||||
[]string{"-rackspace-region"},
|
||||
os.Getenv("OS_REGION_NAME"),
|
||||
"Rackspace region name",
|
||||
)
|
||||
endpointDefault := os.Getenv("OS_ENDPOINT_TYPE")
|
||||
if endpointDefault == "" {
|
||||
endpointDefault = "publicURL"
|
||||
func GetCreateFlags() []cli.Flag {
|
||||
return []cli.Flag{
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_USERNAME",
|
||||
Name: "rackspace-username",
|
||||
Usage: "Rackspace account username",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_API_KEY",
|
||||
Name: "rackspace-api-key",
|
||||
Usage: "Rackspace API key",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_REGION_NAME",
|
||||
Name: "rackspace-region",
|
||||
Usage: "Rackspace region name",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
EnvVar: "OS_ENDPOINT_TYPE",
|
||||
Name: "rackspace-endpoint-type",
|
||||
Usage: "Rackspace endpoint type (adminURL, internalURL or the default publicURL)",
|
||||
Value: "publicURL",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "rackspace-image-id",
|
||||
Usage: "Rackspace image ID. Default: Ubuntu 14.10 (Utopic Unicorn) (PVHVM)",
|
||||
Value: "",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "rackspace-flavor-id",
|
||||
Usage: "Rackspace flavor ID. Default: General Purpose 1GB",
|
||||
Value: "general1-1",
|
||||
},
|
||||
cli.StringFlag{
|
||||
Name: "rackspace-ssh-user",
|
||||
Usage: "SSH user for the newly booted machine. Set to root by default",
|
||||
Value: "root",
|
||||
},
|
||||
cli.IntFlag{
|
||||
Name: "rackspace-ssh-port",
|
||||
Usage: "SSH port for the newly booted machine. Set to 22 by default",
|
||||
Value: 22,
|
||||
},
|
||||
}
|
||||
createFlags.EndpointType = cmd.String(
|
||||
[]string{"-rackspace-endpoint-type"},
|
||||
endpointDefault,
|
||||
"Rackspace endpoint type (adminURL, internalURL or the default publicURL)",
|
||||
)
|
||||
createFlags.ImageID = cmd.String(
|
||||
[]string{"-rackspace-image-id"},
|
||||
"",
|
||||
"Rackspace image ID. Default: Ubuntu 14.10 (Utopic Unicorn) (PVHVM)",
|
||||
)
|
||||
createFlags.FlavorID = cmd.String(
|
||||
[]string{"-rackspace-flavor-id"},
|
||||
"general1-1",
|
||||
"Rackspace flavor ID. Default: General Purpose 1GB",
|
||||
)
|
||||
createFlags.SSHUser = cmd.String(
|
||||
[]string{"-rackspace-ssh-user"},
|
||||
"root",
|
||||
"SSH user for the newly booted machine. Set to root by default",
|
||||
)
|
||||
createFlags.SSHPort = cmd.Int(
|
||||
[]string{"-rackspace-ssh-port"},
|
||||
22,
|
||||
"SSH port for the newly booted machine. Set to 22 by default",
|
||||
)
|
||||
return createFlags
|
||||
}
|
||||
|
||||
// NewDriver instantiates a Rackspace driver.
|
||||
|
@ -111,19 +110,16 @@ func (d *Driver) DriverName() string {
|
|||
}
|
||||
|
||||
// SetConfigFromFlags assigns and verifies the command-line arguments presented to the driver.
|
||||
func (d *Driver) SetConfigFromFlags(flagsInterface interface{}) error {
|
||||
flags := flagsInterface.(*CreateFlags)
|
||||
|
||||
d.Username = *flags.Username
|
||||
d.APIKey = *flags.APIKey
|
||||
d.Region = *flags.Region
|
||||
d.EndpointType = *flags.EndpointType
|
||||
d.ImageId = *flags.ImageID
|
||||
d.FlavorId = *flags.FlavorID
|
||||
d.SSHUser = *flags.SSHUser
|
||||
d.SSHPort = *flags.SSHPort
|
||||
|
||||
return d.checkConfig()
|
||||
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
|
||||
d.Username = flags.String("rackspace-username")
|
||||
d.APIKey = flags.String("rackspace-api-key")
|
||||
d.Region = flags.String("rackspace-region")
|
||||
d.EndpointType = flags.String("rackspace-endpoint-type")
|
||||
d.ImageId = flags.String("rackspace-image-id")
|
||||
d.FlavorId = flags.String("rackspace-flavor-id")
|
||||
d.SSHUser = flags.String("rackspace-ssh-user")
|
||||
d.SSHPort = flags.Int("rackspace-ssh-port")
|
||||
return nil
|
||||
}
|
||||
|
||||
func missingEnvOrOption(setting, envVar, opt string) error {
|
||||
|
|
Loading…
Reference in New Issue