Compare commits

...

33 Commits

Author SHA1 Message Date
Joffrey F
64fa4591bb Bump version to 0.12.0-rc2
Signed-off-by: Joffrey F <joffrey@docker.com>
2017-06-09 11:40:21 -07:00
Nathan LeClaire
c604d46dc5 Merge pull request #4124 from nathanleclaire/rm_nathanleclaire_maintainer
Remove @nathanleclaire as maintainer
2017-06-06 15:33:47 -07:00
Nathan LeClaire
95666999ac Remove @nathanleclaire as maintainer
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2017-06-05 19:07:46 -07:00
Nathan LeClaire
1996e15726 Merge pull request #4123 from nathanleclaire/bump_golang
Bump Go version
2017-06-05 18:30:45 -07:00
Nathan LeClaire
b137a6a835 Bump Go version
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2017-06-05 18:14:03 -07:00
Nathan LeClaire
1dd0729124 Merge pull request #4120 from parryjacob/4112-allow-remove-unknown
Ignore more errors from EC2 API
2017-06-05 11:54:34 -07:00
Jacob Parry
1532bc1a4d Ignore more errors from EC2 API
Signed-off-by: Jacob Parry <jacob@jacobparry.ca>
2017-06-05 13:32:31 -04:00
Nathan LeClaire
59c53323f6 Merge pull request #4118 from nathanleclaire/devel_version
Switch version in version.go to 'dev'
2017-06-02 17:05:22 -07:00
Nathan LeClaire
209e033172 Switch version in version.go to 'dev'
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2017-06-02 15:04:12 -07:00
Nathan LeClaire
4c5139775d Merge pull request #4116 from parryjacob/4112-allow-remove-unknown
Ignore "unknown instance" error when rm instance
2017-06-02 11:11:19 -07:00
Jacob Parry
fc0fe0e4df Warn when removing machine with missing remote instance
Signed-off-by: Jacob Parry <jacob@jacobparry.ca>
2017-06-01 23:40:56 -04:00
Jacob Parry
29bb630bae Ignore "unknown instance" error when rm instance
Fixes #4112

Signed-off-by: Jacob Parry <jacob@jacobparry.ca>
2017-06-01 15:25:38 -04:00
Nathan LeClaire
d889abc352 Merge pull request #4082 from SvenDowideit/allow-rancheros-to-select-docker-version
Allow rancheros (all-non-b2d) to select a different Docker engine version using --engine-install-url
2017-05-31 16:02:27 -07:00
Nathan LeClaire
fb6f177eea Merge pull request #4094 from gbraad/fix-termsize-windows
Fix #3937 invalid handle for termsize in Windows
2017-05-31 16:02:08 -07:00
Nathan LeClaire
9f441e68d1 Merge pull request #4107 from SvenDowideit/fix-vmware-userdata-for-non-b2d
Allow vmware drivers to work with non-boot2docker hosts
2017-05-31 16:01:48 -07:00
Gerard Braad
c82b52c797 Fix invalid handle for termsize in Windows
Closes #3937

Signed-off-by: Gerard Braad <me@gbraad.nl>
2017-05-31 02:14:20 +00:00
Nathan LeClaire
73eb78d6aa Merge pull request #4103 from seongkki/upgrade_fix
add purge in package action
2017-05-30 15:20:26 -07:00
Sven Dowideit
39e6b192a6 Allow vmware drivers to work with non-boot2docker hosts
Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
2017-05-30 13:50:25 +10:00
Sven Dowideit
2ea653b5e3 Allow rancheros to select a different Docker engine version using --engine-install-url
Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
2017-05-30 11:58:50 +10:00
seongkki
e8da55a0fa add purge in package action
Signed-off-by: seongkki <seongkki@cisco.com>
2017-05-26 14:26:24 -04:00
Nathan LeClaire
e94ccb6f10 Merge pull request #4098 from SvenDowideit/remove-googleapi-url-if-specified
Fix up old image name calling convention
2017-05-23 17:37:47 -07:00
Sven Dowideit
ffd9511da5 Fix up old image name calling convention
Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
2017-05-19 12:08:31 +10:00
Nathan LeClaire
9e92ef1af4 Merge pull request #4087 from albers/completion-ls--filters
Add bash completion for `docker-machine ls` filters
2017-05-11 17:19:55 -07:00
Nathan LeClaire
e2bf2d018c Merge pull request #4084 from albers/completion-provision
Add bash completion for `docker-machine provision`
2017-05-11 17:19:24 -07:00
Harald Albers
fd9a0a683c Add bash completion for docker-machine ls filters
Signed-off-by: Harald Albers <github@albersweb.de>
2017-05-11 09:42:24 +02:00
Harald Albers
bd3211dbdf bash completion for regenerate-certs completes running machines only
Signed-off-by: Harald Albers <github@albersweb.de>
2017-05-11 08:51:37 +02:00
Harald Albers
1729729eb3 Add bash completion for docker-machine provision
Signed-off-by: Harald Albers <github@albersweb.de>
2017-05-11 08:50:49 +02:00
Nathan LeClaire
41bd6e3288 Merge pull request #4076 from SvenDowideit/use-pkg-name-in-mk
Use PKG_NAME in mk so it can be reused in drivers
2017-05-10 14:04:18 -07:00
Nathan LeClaire
77f0396d17 Merge pull request #4057 from michalmedvecky/enable-proxy
Enable http-proxy for openstack module
2017-05-10 10:50:55 -07:00
Nathan LeClaire
43c3e62c2a Merge pull request #4083 from albers/completion-scp--delta
Add bash completion for `docker-machine scp --delta`
2017-05-10 10:37:56 -07:00
Harald Albers
96a609fb68 Add bash completion for docker-machine scp --delta
Signed-off-by: Harald Albers <github@albersweb.de>
2017-05-10 11:08:07 +02:00
Sven Dowideit
705c3683ec Use PKG_NAME in mk so it can be reused in drivers
Signed-off-by: Sven Dowideit <SvenDowideit@home.org.au>
2017-05-05 13:30:18 +10:00
root
8c89512033 Enable http-proxy for openstack module
Signed-off-by: Michal Medvecky <michal@medvecky.net>
2017-04-12 16:43:13 +00:00
17 changed files with 140 additions and 55 deletions

View File

@@ -1,4 +1,4 @@
FROM golang:1.7.4
FROM golang:1.8.3
RUN apt-get update && apt-get install -y --no-install-recommends \
openssh-client \

View File

@@ -14,7 +14,6 @@
"dgageot",
"ehazlett",
"jeanlaurent",
"nathanleclaire",
]
[people]
@@ -39,8 +38,3 @@
Name = "Jean-Laurent de Morlhon"
Email = "jeanlaurent@docker.com>"
GitHub = "jeanlaurent"
[people.nathanleclaire]
Name = "Nathan LeClaire"
Email = "nathan.leclaire@docker.com"
GitHub = "nathanleclaire"

View File

@@ -20,10 +20,37 @@ _docker_machine_q() {
docker-machine 2>/dev/null "$@"
}
# suppresses trailing whitespace
_docker_machine_nospace() {
# compopt is not available in ancient bash versions (OSX)
# so only call it if it's available
type compopt &>/dev/null && compopt -o nospace
}
_docker_machine_machines() {
_docker_machine_q ls --format '{{.Name}}' "$@"
}
_docker_machine_drivers() {
local drivers=(
amazonec2
azure
digitalocean
exoscale
generic
google
hyperv
openstack
rackspace
softlayer
virtualbox
vmwarefusion
vmwarevcloudair
vmwarevsphere
)
echo "${drivers[@]}"
}
_docker_machine_value_of_option() {
local pattern="$1"
for (( i=2; i < ${cword}; ++i)); do
@@ -34,6 +61,31 @@ _docker_machine_value_of_option() {
done
}
# Returns `key` if we are currently completing the value of a map option
# (`key=value`) which matches the extglob passed in as an argument.
# This function is needed for key-specific argument completions.
_docker_machine_map_key_of_current_option() {
local glob="$1"
local key glob_pos
if [ "$cur" = "=" ] ; then # key= case
key="$prev"
glob_pos=$((cword - 2))
elif [[ $cur == *=* ]] ; then # key=value case (OSX)
key=${cur%=*}
glob_pos=$((cword - 1))
elif [ "$prev" = "=" ] ; then
key=${words[$cword - 2]} # key=value case
glob_pos=$((cword - 3))
else
return
fi
[ "${words[$glob_pos]}" = "=" ] && ((glob_pos--)) # --option=key=value syntax
[[ ${words[$glob_pos]} == @($glob) ]] && echo "$key"
}
# --- completion functions ---------------------------------------------------
_docker_machine_active() {
@@ -59,21 +111,7 @@ _docker_machine_config() {
_docker_machine_create() {
case "${prev}" in
--driver|-d)
COMPREPLY=($(compgen -W "
amazonec2
azure
digitalocean
exoscale
generic
google
hyperv
openstack
rackspace
softlayer
virtualbox
vmwarefusion
vmwarevcloudair
vmwarevsphere" -- "${cur}"))
COMPREPLY=($(compgen -W "$(_docker_machine_drivers)" -- "${cur}"))
return
;;
esac
@@ -142,8 +180,25 @@ _docker_machine_kill() {
}
_docker_machine_ls() {
local key=$(_docker_machine_map_key_of_current_option '--filter')
case "$key" in
driver)
COMPREPLY=($(compgen -W "$(_docker_machine_drivers)" -- "${cur##*=}"))
return
;;
state)
COMPREPLY=($(compgen -W "Error Paused Running Saved Starting Stopped Stopping" -- "${cur##*=}"))
return
;;
esac
case "${prev}" in
--filter|--format|-f|--timeout|-t)
--filter)
COMPREPLY=($(compgen -W "driver label name state swarm" -S= -- "${cur}"))
_docker_machine_nospace
return
;;
--format|-f|--timeout|-t)
return
;;
esac
@@ -153,11 +208,19 @@ _docker_machine_ls() {
fi
}
_docker_machine_provision() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Running)" -- "${cur}"))
fi
}
_docker_machine_regenerate_certs() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--force -f --help" -- "${cur}"))
else
COMPREPLY=($(compgen -W "$(_docker_machine_machines)" -- "${cur}"))
COMPREPLY=($(compgen -W "$(_docker_machine_machines --filter state=Running)" -- "${cur}"))
fi
}
@@ -187,7 +250,7 @@ _docker_machine_ssh() {
_docker_machine_scp() {
if [[ "${cur}" == -* ]]; then
COMPREPLY=($(compgen -W "--help --recursive -r" -- "${cur}"))
COMPREPLY=($(compgen -W "--delta -d --help --recursive -r" -- "${cur}"))
else
_filedir
# It would be really nice to ssh to the machine and ls to complete
@@ -266,7 +329,7 @@ _docker_machine_docker_machine() {
_docker_machine() {
COMPREPLY=()
local commands=(active config create env inspect ip kill ls regenerate-certs restart rm ssh scp start status stop upgrade url version help)
local commands=(active config create env inspect ip kill ls provision regenerate-certs restart rm ssh scp start status stop upgrade url version help)
local flags=(--debug --native-ssh --github-api-token --bugsnag-api-token --help --version)
local wants_dir=(--storage-path)

View File

@@ -950,6 +950,13 @@ func (d *Driver) terminate() error {
_, err := d.getClient().TerminateInstances(&ec2.TerminateInstancesInput{
InstanceIds: []*string{&d.InstanceId},
})
if strings.HasPrefix(err.Error(), "unknown instance") ||
strings.HasPrefix(err.Error(), "InvalidInstanceID.NotFound") {
log.Warn("Remote instance does not exist, proceeding with removing local reference")
return nil
}
if err != nil {
return fmt.Errorf("unable to terminate instance: %s", err)
}

View File

@@ -196,6 +196,7 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
if !d.UseExisting {
d.MachineType = flags.String("google-machine-type")
d.MachineImage = flags.String("google-machine-image")
d.MachineImage = strings.TrimPrefix(d.MachineImage, "https://www.googleapis.com/compute/v1/projects/")
d.DiskSize = flags.Int("google-disk-size")
d.DiskType = flags.String("google-disk-type")
d.Address = flags.String("google-address")

View File

@@ -6,8 +6,6 @@ import (
"os"
"time"
"errors"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/log"
"github.com/docker/machine/libmachine/mcnflag"
@@ -94,9 +92,6 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
}
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
if drivers.EngineInstallURLFlagSet(flags) {
return errors.New("--engine-install-url cannot be used with the hyperv driver, use --hyperv-boot2docker-url instead")
}
d.Boot2DockerURL = flags.String("hyperv-boot2docker-url")
d.VSwitch = flags.String("hyperv-virtual-switch")
d.DiskSize = flags.Int("hyperv-disk-size")

View File

@@ -596,7 +596,7 @@ func (c *GenericClient) SetTLSConfig(d *Driver) error {
config.RootCAs = certpool
}
transport := &http.Transport{TLSClientConfig: config}
transport := &http.Transport{TLSClientConfig: config, Proxy: http.ProxyFromEnvironment}
c.Provider.HTTPClient.Transport = transport
return nil
}

View File

@@ -228,9 +228,6 @@ func (d *Driver) GetURL() (string, error) {
}
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
if drivers.EngineInstallURLFlagSet(flags) {
return errors.New("--engine-install-url cannot be used with the virtualbox driver, use --virtualbox-boot2docker-url instead")
}
d.CPU = flags.Int("virtualbox-cpu-count")
d.Memory = flags.Int("virtualbox-memory")
d.DiskSize = flags.Int("virtualbox-disk-size")

View File

@@ -18,8 +18,6 @@ import (
"text/template"
"time"
"errors"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/log"
"github.com/docker/machine/libmachine/mcnflag"
@@ -145,9 +143,6 @@ func (d *Driver) DriverName() string {
}
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
if drivers.EngineInstallURLFlagSet(flags) {
return errors.New("--engine-install-url cannot be used with the vmwarefusion driver, use --vmwarefusion-boot2docker-url instead")
}
d.Memory = flags.Int("vmwarefusion-memory-size")
d.CPU = flags.Int("vmwarefusion-cpu-count")
d.DiskSize = flags.Int("vmwarefusion-disk-size")
@@ -368,7 +363,10 @@ func (d *Driver) Create() error {
vmrun("-gu", B2DUser, "-gp", B2DPass, "CopyFileFromHostToGuest", d.vmxPath(), d.ResolveStorePath("userdata.tar"), "/home/docker/userdata.tar")
// Expand tar file.
vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", "sudo /bin/mv /home/docker/userdata.tar /var/lib/boot2docker/userdata.tar && sudo tar xf /var/lib/boot2docker/userdata.tar -C /home/docker/ > /var/log/userdata.log 2>&1 && sudo chown -R docker:staff /home/docker")
vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", "sudo sh -c \"tar xvf userdata.tar -C /home/docker > /var/log/userdata.log 2>&1 && chown -R docker:staff /home/docker\"")
// copy to /var/lib/boot2docker
vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", "sudo /bin/mv /home/docker/userdata.tar /var/lib/boot2docker/userdata.tar")
// Enable Shared Folders
vmrun("-gu", B2DUser, "-gp", B2DPass, "enableSharedFolders", d.vmxPath())

View File

@@ -183,9 +183,6 @@ func (d *Driver) DriverName() string {
}
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
if drivers.EngineInstallURLFlagSet(flags) {
return errors.New("--engine-install-url cannot be used with the vmwarevsphere driver, use --vmwarevsphere-boot2docker-url instead")
}
d.SSHUser = "docker"
d.SSHPort = 22
d.CPU = flags.Int("vmwarevsphere-cpu-count")
@@ -554,10 +551,25 @@ func (d *Driver) Create() error {
return err
}
// first, untar - only boot2docker has /var/lib/boot2docker
// TODO: don't hard-code to docker & staff - they are also just b2d
var env []string
guestspec := types.GuestProgramSpec{
ProgramPath: "/usr/bin/sudo",
Arguments: "/bin/mv /home/docker/userdata.tar /var/lib/boot2docker/userdata.tar && /usr/bin/sudo tar xf /var/lib/boot2docker/userdata.tar -C /home/docker/ > /var/log/userdata.log 2>&1 && /usr/bin/sudo chown -R docker:staff /home/docker",
Arguments: "/usr/bin/sudo /bin/sh -c \"tar xvf userdata.tar -C /home/docker > /var/log/userdata.log 2>&1 && chown -R docker:staff /home/docker\"",
WorkingDirectory: "",
EnvVariables: env,
}
_, err = procman.StartProgram(ctx, auth.Auth(), &guestspec)
if err != nil {
return err
}
// now move to /var/lib/boot2docker if its there
guestspec = types.GuestProgramSpec{
ProgramPath: "/usr/bin/sudo",
Arguments: "/bin/mv /home/docker/userdata.tar /var/lib/boot2docker/userdata.tar",
WorkingDirectory: "",
EnvVariables: env,
}

View File

@@ -86,6 +86,9 @@ func (d *BaseDriver) SetSwarmConfigFromFlags(flags DriverOptions) {
}
func EngineInstallURLFlagSet(flags DriverOptions) bool {
engineInstallURLFlag := flags.String("engine-install-url")
return engineInstallURLFlag != DefaultEngineInstallURL && engineInstallURLFlag != ""
return EngineInstallURLSet(flags.String("engine-install-url"))
}
func EngineInstallURLSet(url string) bool {
return url != DefaultEngineInstallURL && url != ""
}

View File

@@ -93,6 +93,8 @@ func (provisioner *RancherProvisioner) Package(name string, action pkgaction.Pac
}
func (provisioner *RancherProvisioner) Provision(swarmOptions swarm.Options, authOptions auth.Options, engineOptions engine.Options) error {
log.Debugf("Running RancherOS provisioner on %s", provisioner.Driver.GetMachineName())
provisioner.SwarmOptions = swarmOptions
provisioner.AuthOptions = authOptions
provisioner.EngineOptions = engineOptions
@@ -116,6 +118,11 @@ func (provisioner *RancherProvisioner) Provision(swarmOptions swarm.Options, aut
}
}
log.Debugf("Selecting docker engine: %s", engineOptions.InstallURL)
if err := selectDocker(provisioner, engineOptions.InstallURL); err != nil {
return err
}
log.Debugf("Preparing certificates")
provisioner.AuthOptions = setRemoteAuthOptions(provisioner)
@@ -231,3 +238,12 @@ func (provisioner *RancherProvisioner) getLatestISOURL() (string, error) {
return "", fmt.Errorf("Failed to find current version")
}
func selectDocker(p Provisioner, baseURL string) error {
// TODO: detect if its a cloud-init, or a ros setting - and use that..
if output, err := p.SSHCommand(fmt.Sprintf("wget -O- %s | sh -", baseURL)); err != nil {
return fmt.Errorf("error selecting docker: (%s) %s", err, output)
}
return nil
}

View File

@@ -76,7 +76,7 @@ func (provisioner *UbuntuProvisioner) Package(name string, action pkgaction.Pack
switch action {
case pkgaction.Install, pkgaction.Upgrade:
packageAction = "install"
case pkgaction.Remove:
case pkgaction.Remove, pkgaction.Purge:
packageAction = "remove"
updateMetadata = false
}

View File

@@ -201,7 +201,7 @@ func (client *NativeClient) OutputWithPty(command string) (string, error) {
defer closeConn(conn)
defer session.Close()
fd := int(os.Stdin.Fd())
fd := int(os.Stdout.Fd())
termWidth, termHeight, err := terminal.GetSize(fd)
if err != nil {

View File

@@ -16,7 +16,7 @@ define gocross
$(if $(findstring [$(1)/$(2)],$(VALID_OS_ARCH)), \
GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 \
$(GO) build \
-o $(PREFIX)/bin/docker-machine-${os.$(1)}-${arch.$(2)}$(call extension,$(GOOS)) \
-o $(PREFIX)/bin/$(PKG_NAME)-${os.$(1)}-${arch.$(2)}$(call extension,$(GOOS)) \
-a $(VERBOSE_GO) -tags "static_build netgo $(BUILDTAGS)" -installsuffix netgo \
-ldflags "$(GO_LDFLAGS) -extldflags -static" $(GO_GCFLAGS) ./cmd/machine.go;)
endef
@@ -27,10 +27,10 @@ build-clean:
build-x: $(shell find . -type f -name '*.go')
$(foreach GOARCH,$(TARGET_ARCH),$(foreach GOOS,$(TARGET_OS),$(call gocross,$(GOOS),$(GOARCH))))
$(PREFIX)/bin/docker-machine$(call extension,$(GOOS)): $(shell find . -type f -name '*.go')
$(PREFIX)/bin/$(PKG_NAME)$(call extension,$(GOOS)): $(shell find . -type f -name '*.go')
$(GO) build \
-o $@ \
$(VERBOSE_GO) -tags "$(BUILDTAGS)" \
-ldflags "$(GO_LDFLAGS)" $(GO_GCFLAGS) ./cmd/machine.go
build: $(PREFIX)/bin/docker-machine$(call extension,$(GOOS))
build: $(PREFIX)/bin/$(PKG_NAME)$(call extension,$(GOOS))

View File

@@ -49,7 +49,7 @@ include mk/validate.mk
default: build
install:
cp $(PREFIX)/bin/docker-machine /usr/local/bin
cp $(PREFIX)/bin/$(PKG_NAME) /usr/local/bin
clean: coverage-clean build-clean
test: dco fmt test-short lint vet

View File

@@ -6,8 +6,7 @@ import (
)
var (
// Version should be updated by hand at each release
Version = "0.10.0"
Version = "0.12.0-rc2"
// GitCommit will be overwritten automatically by the build system
GitCommit = "HEAD"