Merge branch 'master' into jenkins-releases.json-v0.17.1
commit
4639bc01a0
|
@ -108,6 +108,11 @@ To debug issues with minikube (not kubernetes but minikube itself), you can use
|
|||
* --v=3 libmachine logging
|
||||
* --v=7 libmachine --debug level logging
|
||||
|
||||
If you need to access additional tools for debugging, minikube also includes the [CoreOS toolbox](https://github.com/coreos/toolbox)
|
||||
|
||||
You can ssh into the toolbox and access these additional commands using:
|
||||
`minikube ssh toolbox`
|
||||
|
||||
### Using rkt container engine
|
||||
|
||||
To use [rkt](https://github.com/coreos/rkt) as the container runtime run:
|
||||
|
@ -293,10 +298,11 @@ spec:
|
|||
You can also achieve persistence by creating a PV in a mounted host folder.
|
||||
|
||||
## Mounted Host Folders
|
||||
Some drivers will mount a host folder within the VM so that you can easily share files between the VM and host. These are not configurable at the moment and different for the driver and OS you are using. Note: Host folder sharing is not implemented on Linux yet.
|
||||
Some drivers will mount a host folder within the VM so that you can easily share files between the VM and host. These are not configurable at the moment and different for the driver and OS you are using. Note: Host folder sharing is not implemented in the KVM driver yet.
|
||||
|
||||
| Driver | OS | HostFolder | VM |
|
||||
| --- | --- | --- | --- |
|
||||
| Virtualbox | Linux | /home | /hosthome |
|
||||
| Virtualbox | OSX | /Users | /Users |
|
||||
| Virtualbox | Windows | C://Users | /c/Users |
|
||||
| VMWare Fusion | OSX | /Users | /Users |
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
[
|
||||
{
|
||||
{
|
||||
"name": "v0.17.1",
|
||||
"checksums": {
|
||||
"darwin": "b175c355d377a6ce2fefdd19201c865a7e628581261ac949fffb725af459c389",
|
||||
|
@ -7,6 +7,15 @@
|
|||
"windows": "86a713ced29399c736d14bf19be7aead96a22b03374441d99a457a4c44df9d53"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "v0.17.0",
|
||||
"checksums": {
|
||||
"darwin": "d12fb4f8d9ff538c5563e1dcdf29495dc47b64a3fe108d7190fa37bf94a09a21",
|
||||
"linux": "086d3438a9c2f324f494cf6dd4c422c27e93b19dd874c77d093d8ff91709a659",
|
||||
"windows": "3d349978704791596a03237715ad502f5ab5bbd76014b761e579e859a5eaf4c1"
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "v0.16.0",
|
||||
"checksums": {
|
||||
|
|
|
@ -47,44 +47,47 @@ func findNestedElement(s string, c interface{}) (reflect.Value, error) {
|
|||
|
||||
// setElement sets the supplied element to the value in the supplied string. The string will be coerced to the correct type.
|
||||
func setElement(e reflect.Value, v string) error {
|
||||
switch t := e.Interface().(type) {
|
||||
case int, int32, int64:
|
||||
switch e.Kind() {
|
||||
case reflect.Int, reflect.Int32, reflect.Int64:
|
||||
i, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error converting input %s to an integer: %s", v, err)
|
||||
}
|
||||
e.SetInt(int64(i))
|
||||
case string:
|
||||
case reflect.String:
|
||||
e.SetString(v)
|
||||
case float32, float64:
|
||||
case reflect.Float32, reflect.Float64:
|
||||
f, err := strconv.ParseFloat(v, 64)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error converting input %s to a float: %s", v, err)
|
||||
}
|
||||
e.SetFloat(f)
|
||||
case bool:
|
||||
case reflect.Bool:
|
||||
b, err := strconv.ParseBool(v)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error converting input %s to a bool: %s", v, err)
|
||||
}
|
||||
e.SetBool(b)
|
||||
case net.IP:
|
||||
ip := net.ParseIP(v)
|
||||
if ip == nil {
|
||||
return fmt.Errorf("Error converting input %s to an IP.", v)
|
||||
}
|
||||
e.Set(reflect.ValueOf(ip))
|
||||
case utilnet.PortRange:
|
||||
pr, err := utilnet.ParsePortRange(v)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error converting input %s to PortRange: %s", v, err)
|
||||
}
|
||||
e.Set(reflect.ValueOf(*pr))
|
||||
case []string:
|
||||
vals := strings.Split(v, ",")
|
||||
e.Set(reflect.ValueOf(vals))
|
||||
default:
|
||||
return fmt.Errorf("Unable to set type %T.", t)
|
||||
switch t := e.Interface().(type) {
|
||||
case net.IP:
|
||||
ip := net.ParseIP(v)
|
||||
if ip == nil {
|
||||
return fmt.Errorf("Error converting input %s to an IP.", v)
|
||||
}
|
||||
e.Set(reflect.ValueOf(ip))
|
||||
case utilnet.PortRange:
|
||||
pr, err := utilnet.ParsePortRange(v)
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error converting input %s to PortRange: %s", v, err)
|
||||
}
|
||||
e.Set(reflect.ValueOf(*pr))
|
||||
case []string:
|
||||
vals := strings.Split(v, ",")
|
||||
e.Set(reflect.ValueOf(vals))
|
||||
default:
|
||||
return fmt.Errorf("Unable to set type %T.", t)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -25,6 +25,8 @@ import (
|
|||
utilnet "k8s.io/kubernetes/pkg/util/net"
|
||||
)
|
||||
|
||||
type aliasedString string
|
||||
|
||||
type testConfig struct {
|
||||
A string
|
||||
B int
|
||||
|
@ -54,6 +56,7 @@ type subConfig3 struct {
|
|||
Q net.IP
|
||||
R utilnet.PortRange
|
||||
S []string
|
||||
T aliasedString
|
||||
}
|
||||
|
||||
func buildConfig() testConfig {
|
||||
|
@ -172,6 +175,7 @@ func TestSetElement(t *testing.T) {
|
|||
{"D.I.Q", "11.22.33.44", func(t testConfig) bool { return t.D.I.Q.Equal(net.ParseIP("11.22.33.44")) }},
|
||||
{"D.I.R", "7-11", func(t testConfig) bool { return t.D.I.R.Base == 7 && t.D.I.R.Size == 5 }},
|
||||
{"D.I.S", "a,b", func(t testConfig) bool { return reflect.DeepEqual(t.D.I.S, []string{"a", "b"}) }},
|
||||
{"D.I.T", "foo", func(t testConfig) bool { return t.D.I.T == "foo" }},
|
||||
} {
|
||||
a := buildConfig()
|
||||
if err := FindAndSet(tc.path, &a, tc.newval); err != nil {
|
||||
|
|
Loading…
Reference in New Issue