mirror of https://github.com/docker/docs.git
				
				
				
			Merge pull request #2760 from dgageot/disable-old-vbox
Disable support for VBox <= 4.2
This commit is contained in:
		
						commit
						04160e392b
					
				|  | @ -12,7 +12,7 @@ parent="smn_machine_drivers" | ||||||
| 
 | 
 | ||||||
| Create machines locally using [VirtualBox](https://www.virtualbox.org/). | Create machines locally using [VirtualBox](https://www.virtualbox.org/). | ||||||
| This driver requires VirtualBox 5+ to be installed on your host. | This driver requires VirtualBox 5+ to be installed on your host. | ||||||
| Using VirtualBox 4+ should work but will give you a warning. Older versions | Using VirtualBox 4.3+ should work but will give you a warning. Older versions | ||||||
| will refuse to work. | will refuse to work. | ||||||
| 
 | 
 | ||||||
|     $ docker-machine create --driver=virtualbox vbox-test |     $ docker-machine create --driver=virtualbox vbox-test | ||||||
|  |  | ||||||
|  | @ -9,6 +9,8 @@ import ( | ||||||
| 	"regexp" | 	"regexp" | ||||||
| 	"strings" | 	"strings" | ||||||
| 
 | 
 | ||||||
|  | 	"strconv" | ||||||
|  | 
 | ||||||
| 	"github.com/docker/machine/libmachine/log" | 	"github.com/docker/machine/libmachine/log" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -78,17 +80,37 @@ func (v *VBoxCmdManager) vbmOutErr(args ...string) (string, string, error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func checkVBoxManageVersion(version string) error { | func checkVBoxManageVersion(version string) error { | ||||||
| 	if !strings.HasPrefix(version, "5.") && !strings.HasPrefix(version, "4.") { | 	major, minor, err := parseVersion(version) | ||||||
|  | 	if (err != nil) || (major < 4) || (major == 4 && minor <= 2) { | ||||||
| 		return fmt.Errorf("We support Virtualbox starting with version 5. Your VirtualBox install is %q. Please upgrade at https://www.virtualbox.org", version) | 		return fmt.Errorf("We support Virtualbox starting with version 5. Your VirtualBox install is %q. Please upgrade at https://www.virtualbox.org", version) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if !strings.HasPrefix(version, "5.") { | 	if major < 5 { | ||||||
| 		log.Warnf("You are using version %s of VirtualBox. If you encouter issues, you might want to upgrade to version 5 at https://www.virtualbox.org", version) | 		log.Warnf("You are using version %s of VirtualBox. If you encouter issues, you might want to upgrade to version 5 at https://www.virtualbox.org", version) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func parseVersion(version string) (int, int, error) { | ||||||
|  | 	parts := strings.Split(version, ".") | ||||||
|  | 	if len(parts) < 2 { | ||||||
|  | 		return 0, 0, fmt.Errorf("Invalid version: %q", version) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	major, err := strconv.Atoi(parts[0]) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return 0, 0, fmt.Errorf("Invalid version: %q", version) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	minor, err := strconv.Atoi(parts[1]) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return 0, 0, fmt.Errorf("Invalid version: %q", version) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return major, minor, err | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func parseKeyValues(stdOut string, regexp *regexp.Regexp, callback func(key, val string) error) error { | func parseKeyValues(stdOut string, regexp *regexp.Regexp, callback func(key, val string) error) error { | ||||||
| 	r := strings.NewReader(stdOut) | 	r := strings.NewReader(stdOut) | ||||||
| 	s := bufio.NewScanner(r) | 	s := bufio.NewScanner(r) | ||||||
|  |  | ||||||
|  | @ -6,15 +6,14 @@ import ( | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func TestCheckVBoxManageVersionValid(t *testing.T) { | func TestValidCheckVBoxManageVersion(t *testing.T) { | ||||||
| 	var tests = []struct { | 	var tests = []struct { | ||||||
| 		version string | 		version string | ||||||
| 	}{ | 	}{ | ||||||
|  | 		{"5.1"}, | ||||||
| 		{"5.0.8r103449"}, | 		{"5.0.8r103449"}, | ||||||
| 		{"5.0"}, | 		{"5.0"}, | ||||||
| 		{"5.1"}, | 		{"4.10"}, | ||||||
| 		{"4.1"}, |  | ||||||
| 		{"4.2.0"}, |  | ||||||
| 		{"4.3.1"}, | 		{"4.3.1"}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | @ -25,12 +24,16 @@ func TestCheckVBoxManageVersionValid(t *testing.T) { | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func TestCheckVBoxManageVersionInvalid(t *testing.T) { | func TestInvalidCheckVBoxManageVersion(t *testing.T) { | ||||||
| 	var tests = []struct { | 	var tests = []struct { | ||||||
| 		version       string | 		version       string | ||||||
| 		expectedError string | 		expectedError string | ||||||
| 	}{ | 	}{ | ||||||
| 		{"3.9", `We support Virtualbox starting with version 5. Your VirtualBox install is "3.9". Please upgrade at https://www.virtualbox.org`}, | 		{"3.9", `We support Virtualbox starting with version 5. Your VirtualBox install is "3.9". Please upgrade at https://www.virtualbox.org`}, | ||||||
|  | 		{"4.0", `We support Virtualbox starting with version 5. Your VirtualBox install is "4.0". Please upgrade at https://www.virtualbox.org`}, | ||||||
|  | 		{"4.1.1", `We support Virtualbox starting with version 5. Your VirtualBox install is "4.1.1". Please upgrade at https://www.virtualbox.org`}, | ||||||
|  | 		{"4.2.36-104064", `We support Virtualbox starting with version 5. Your VirtualBox install is "4.2.36-104064". Please upgrade at https://www.virtualbox.org`}, | ||||||
|  | 		{"X.Y", `We support Virtualbox starting with version 5. Your VirtualBox install is "X.Y". Please upgrade at https://www.virtualbox.org`}, | ||||||
| 		{"", `We support Virtualbox starting with version 5. Your VirtualBox install is "". Please upgrade at https://www.virtualbox.org`}, | 		{"", `We support Virtualbox starting with version 5. Your VirtualBox install is "". Please upgrade at https://www.virtualbox.org`}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue