mirror of https://github.com/docker/docs.git
FIX #2171 Fix faulty flag and add tests for SetConfigFromFlags
Signed-off-by: David Gageot <david@gageot.net>
This commit is contained in:
parent
d07e4e259a
commit
11922080a1
|
|
@ -150,7 +150,7 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
|
||||||
Usage: "AWS spot instance bid price (in dollar)",
|
Usage: "AWS spot instance bid price (in dollar)",
|
||||||
Value: defaultSpotPrice,
|
Value: defaultSpotPrice,
|
||||||
},
|
},
|
||||||
mcnflag.StringFlag{
|
mcnflag.BoolFlag{
|
||||||
Name: "amazonec2-private-address-only",
|
Name: "amazonec2-private-address-only",
|
||||||
Usage: "Only use a private IP address",
|
Usage: "Only use a private IP address",
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ import (
|
||||||
|
|
||||||
"github.com/docker/machine/commands/mcndirs"
|
"github.com/docker/machine/commands/mcndirs"
|
||||||
"github.com/docker/machine/drivers/amazonec2/amz"
|
"github.com/docker/machine/drivers/amazonec2/amz"
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -235,3 +237,22 @@ func TestValidateAwsRegionInvalid(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver, err := getTestDriver()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"amazonec2-region": "us-west-2",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package digitalocean
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"digitalocean-access-token": "TOKEN",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package exoscale
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"exoscale-api-key": "API_KEY",
|
||||||
|
"exoscale-api-secret-key": "API_SECRET_KEY",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package generic
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"generic-ip-address": "localhost",
|
||||||
|
"generic-ssh-key": "path",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package google
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"google-project": "PROJECT",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package hyperv
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
package openstack
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"openstack-auth-url": "http://url",
|
||||||
|
"openstack-username": "user",
|
||||||
|
"openstack-password": "pwd",
|
||||||
|
"openstack-tenant-id": "ID",
|
||||||
|
"openstack-flavor-id": "ID",
|
||||||
|
"openstack-image-id": "ID",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package rackspace
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"rackspace-region": "REGION",
|
||||||
|
"rackspace-username": "user",
|
||||||
|
"rackspace-api-key": "KEY",
|
||||||
|
"rackspace-endpoint-type": "publicURL",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/docker/machine/commands/mcndirs"
|
"github.com/docker/machine/commands/mcndirs"
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -101,3 +102,23 @@ func TestHostnameDefaultsToMachineName(t *testing.T) {
|
||||||
assert.Equal(t, machineTestName, d.deviceConfig.Hostname)
|
assert.Equal(t, machineTestName, d.deviceConfig.Hostname)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"softlayer-api-key": "KEY",
|
||||||
|
"softlayer-user": "user",
|
||||||
|
"softlayer-api-endpoint": "ENDPOINT",
|
||||||
|
"softlayer-domain": "DOMAIN",
|
||||||
|
"softlayer-region": "REGION",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
"github.com/docker/machine/libmachine/state"
|
"github.com/docker/machine/libmachine/state"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
@ -180,3 +181,17 @@ func TestInvalidNetworkIpCIDR(t *testing.T) {
|
||||||
func newTestDriver(name string) *Driver {
|
func newTestDriver(name string) *Driver {
|
||||||
return NewDriver(name, "")
|
return NewDriver(name, "")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package vmwarefusion
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package vmwarevcloudair
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{
|
||||||
|
"vmwarevcloudair-username": "root",
|
||||||
|
"vmwarevcloudair-password": "pwd",
|
||||||
|
"vmwarevcloudair-vdcid": "ID",
|
||||||
|
"vmwarevcloudair-publicip": "IP",
|
||||||
|
},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package vmwarevsphere
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/docker/machine/libmachine/drivers"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestSetConfigFromFlags(t *testing.T) {
|
||||||
|
driver := NewDriver("default", "path")
|
||||||
|
|
||||||
|
checkFlags := &drivers.CheckDriverOptions{
|
||||||
|
FlagsValues: map[string]interface{}{},
|
||||||
|
CreateFlags: driver.GetCreateFlags(),
|
||||||
|
}
|
||||||
|
|
||||||
|
err := driver.SetConfigFromFlags(checkFlags)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Empty(t, checkFlags.InvalidFlags)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,78 @@
|
||||||
|
package drivers
|
||||||
|
|
||||||
|
import "github.com/docker/machine/libmachine/mcnflag"
|
||||||
|
|
||||||
|
// CheckDriverOptions implements DriverOptions and is used to validate flag parsing
|
||||||
|
type CheckDriverOptions struct {
|
||||||
|
FlagsValues map[string]interface{}
|
||||||
|
CreateFlags []mcnflag.Flag
|
||||||
|
InvalidFlags []string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *CheckDriverOptions) String(key string) string {
|
||||||
|
for _, flag := range o.CreateFlags {
|
||||||
|
if flag.String() == key {
|
||||||
|
_, ok := flag.(mcnflag.StringFlag)
|
||||||
|
if !ok {
|
||||||
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
value, present := o.FlagsValues[key].(string)
|
||||||
|
if present {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *CheckDriverOptions) StringSlice(key string) []string {
|
||||||
|
for _, flag := range o.CreateFlags {
|
||||||
|
if flag.String() == key {
|
||||||
|
_, ok := flag.(mcnflag.StringSliceFlag)
|
||||||
|
if !ok {
|
||||||
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
value, present := o.FlagsValues[key].([]string)
|
||||||
|
if present {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *CheckDriverOptions) Int(key string) int {
|
||||||
|
for _, flag := range o.CreateFlags {
|
||||||
|
if flag.String() == key {
|
||||||
|
_, ok := flag.(mcnflag.IntFlag)
|
||||||
|
if !ok {
|
||||||
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
value, present := o.FlagsValues[key].(int)
|
||||||
|
if present {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return 42
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *CheckDriverOptions) Bool(key string) bool {
|
||||||
|
for _, flag := range o.CreateFlags {
|
||||||
|
if flag.String() == key {
|
||||||
|
_, ok := flag.(mcnflag.BoolFlag)
|
||||||
|
if !ok {
|
||||||
|
o.InvalidFlags = append(o.InvalidFlags, flag.String())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
value, present := o.FlagsValues[key].(bool)
|
||||||
|
if present {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue