提交 c8989902 编写于 作者: A Aaron Prindle

Fixing file:// uri issue for --iso-url flag

上级 0c770d7f
......@@ -26,6 +26,7 @@ import (
"io/ioutil"
"net"
"net/http"
"net/url"
"os"
"path/filepath"
"strings"
......@@ -51,6 +52,8 @@ var (
certs = []string{"ca.crt", "ca.key", "apiserver.crt", "apiserver.key"}
)
const fileScheme = "file"
//This init function is used to set the logtostderr variable to false so that INFO level log info does not clutter the CLI
//INFO lvl logging is displayed due to the kubernetes api calling flag.Set("logtostderr", "true") in its init()
//see: https://github.com/kubernetes/kubernetes/blob/master/pkg/util/logs.go#L32-34
......@@ -350,14 +353,14 @@ func engineOptions(config MachineConfig) *engine.Options {
func createVirtualboxHost(config MachineConfig) drivers.Driver {
d := virtualbox.NewDriver(constants.MachineName, constants.Minipath)
d.Boot2DockerURL = config.GetISOCacheFileURI()
d.Boot2DockerURL = config.GetISOFileURI()
d.Memory = config.Memory
d.CPU = config.CPUs
d.DiskSize = int(config.DiskSize)
return d
}
func (m *MachineConfig) CacheMinikubeISO() error {
func (m *MachineConfig) CacheMinikubeISOFromURL() error {
// store the miniube-iso inside the .minikube dir
response, err := http.Get(m.MinikubeISO)
if err != nil {
......@@ -376,16 +379,38 @@ func (m *MachineConfig) CacheMinikubeISO() error {
return nil
}
func (m *MachineConfig) ShouldCacheMinikubeISO() bool {
// store the miniube-iso inside the .minikube dir
urlObj, err := url.Parse(m.MinikubeISO)
if err != nil {
return false
}
if urlObj.Scheme == fileScheme {
return false
}
if m.IsMinikubeISOCached() {
return false
}
return true
}
func (m *MachineConfig) GetISOCacheFilepath() string {
return filepath.Join(constants.Minipath, "cache", "iso", filepath.Base(m.MinikubeISO))
}
func (m *MachineConfig) GetISOCacheFileURI() string {
func (m *MachineConfig) GetISOFileURI() string {
urlObj, err := url.Parse(m.MinikubeISO)
if err != nil {
return m.MinikubeISO
}
if urlObj.Scheme == fileScheme {
return m.MinikubeISO
}
isoPath := filepath.Join(constants.Minipath, "cache", "iso", filepath.Base(m.MinikubeISO))
// As this is a file URL there should be no backslashes regardless of platform running on.
return "file://" + filepath.ToSlash(isoPath)
}
func (m *MachineConfig) IsMinikubeISOCached() bool {
if _, err := os.Stat(m.GetISOCacheFilepath()); os.IsNotExist(err) {
return false
......@@ -396,8 +421,8 @@ func (m *MachineConfig) IsMinikubeISOCached() bool {
func createHost(api libmachine.API, config MachineConfig) (*host.Host, error) {
var driver interface{}
if !config.IsMinikubeISOCached() {
if err := config.CacheMinikubeISO(); err != nil {
if config.ShouldCacheMinikubeISO() {
if err := config.CacheMinikubeISOFromURL(); err != nil {
return nil, err
}
}
......
......@@ -24,7 +24,7 @@ import (
func createVMwareFusionHost(config MachineConfig) drivers.Driver {
d := vmwarefusion.NewDriver(constants.MachineName, constants.Minipath).(*vmwarefusion.Driver)
d.Boot2DockerURL = config.GetISOCacheFileURI()
d.Boot2DockerURL = config.GetISOFileURI()
d.Memory = config.Memory
d.CPU = config.CPUs
......@@ -59,7 +59,7 @@ func createXhyveHost(config MachineConfig) *xhyveDriver {
},
Memory: config.Memory,
CPU: config.CPUs,
Boot2DockerURL: config.GetISOCacheFileURI(),
Boot2DockerURL: config.GetISOFileURI(),
BootCmd: "loglevel=3 user=docker console=ttyS0 console=tty0 noembed nomodeset norestore waitusb=10 base host=boot2docker",
DiskSize: int64(config.DiskSize),
}
......
......@@ -49,7 +49,7 @@ func createKVMHost(config MachineConfig) *kvmDriver {
CPU: config.CPUs,
Network: "default",
PrivateNetwork: "docker-machines",
Boot2DockerURL: config.GetISOCacheFileURI(),
Boot2DockerURL: config.GetISOFileURI(),
DiskSize: config.DiskSize,
DiskPath: filepath.Join(constants.Minipath, "machines", constants.MachineName, fmt.Sprintf("%s.img", constants.MachineName)),
ISO: filepath.Join(constants.Minipath, "machines", constants.MachineName, "boot2docker.iso"),
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册