- First RPC steps
- Work on some flaws in RPC model
- Remove unused TLS settings from Engine and Swarm options
- Add code to correctly encode data over the network
- Add client driver for RPC
- Rename server driver file
- Start to make marshal make sense
- Fix silly RPC method args and add client
- Fix some issues with RPC calls, and marshaling
- Simplify plugin main.go
- Move towards 100% plugin in CLI
- Ensure that plugin servers are cleaned up properly
- Make flag parsing for driver flags work properly
Includes some work carried from @dmp42 updating the build process and
tests to use the new method.
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
Some flags for the OpenStack driver did not have
a corresponding environment variable.
Among others, this is needed to run bats core tests
with the OpenStack driver.
Signed-off-by: Guillaume Giamarchi <guillaume.giamarchi@gmail.com>
It takes a lot of time to assign the IP to droplet, so informing user
about this hang looks like good idea.
Signed-off-by: Alexey Grachov <grachov.alexey@gmail.com>
Also, a few various cleanups are bundled:
1. Only call GetDriver() once to get the object in provision/utils.go
2. SSH command wrapper will return the error and let the consumer decide
what to do with it instead of bailing automatically on non-255
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
- Clear out some cruft tightly coupling libmachine to filestore
- Comment out drivers other than virtualbox for now
- Change way too many things
- Mostly, break out the code to be more modular.
- Destroy all traces of "provider" in its current form. It will be
brought back as something more sensible, instead of something which
overlaps in function with both Host and Store.
- Fix mis-managed config passthru
- Remove a few instances of state stored in env vars
- This should be explicitly communicated in Go-land, not through the
shell.
- Rename "store" module to "persist"
- This is done mostly to avoid confusion about the fact that a concrete
instance of a "Store" interface is oftentimes referred to as "store" in
the code.
- Rip out repetitive antipattern for getting store
- This replaces the previous repetive idiom for getting the cert info, and
consequently the store, with a much less repetitive idiom.
- Also, some redundant methods in commands.go for accessing hosts have
either been simplified or removed entirely.
- First steps towards fixing up tests
- Test progress continues
- Replace unit tests with integration tests
- MAKE ALL UNIT TESTS PASS YAY
- Add helper test files
- Don't write to disk in libmachine/host
- Heh.. coverage check strikes again
- Fix remove code
- Move cert code around
- Continued progress: simplify Driver
- Fixups and make creation work with new model
- Move drivers module inside of libmachine
- Move ssh module inside of libmachine
- Move state module to libmachine
- Move utils module to libmachine
- Move version module to libmachine
- Move log module to libmachine
- Modify some constructor methods around
- Change Travis build dep structure
- Boring gofmt fix
- Add version module
- Move NewHost to store
- Update some boring cert path infos to make API easier to use
- Fix up some issues around the new model
- Clean up some cert path stuff
- Don't use shady functions to get store path :D
- Continue artifact work
- Fix silly machines dir bug
- Continue fixing silly path issues
- Change up output of vbm a bit
- Continue work to make example go
- Change output a little more
- Last changes needed to make create finish properly
- Fix config.go to use libmachine
- Cut down code duplication and make both methods work with libmachine
- Add pluggable logging implementation
- Return error when machine already in desired state
- Update example to show log method
- Fix file:// bug
- Fix Swarm defaults
- Remove unused TLS settings from Engine and Swarm options
- Remove spurious error
- Correct bug detecting if migration was performed
- Fix compilation errors from tests
- Fix most of remaining test issues
- Fix final silly bug in tests
- Remove extraneous debug code
- Add -race to test command
- Appease the gofmt
- Appease the generate coverage
- Making executive decision to remove Travis coverage check
In the early days I thought this would be a good idea because it would
encourage people to write tests in case they added a new module. Well,
in fact it has just turned into a giant nuisance and made refactoring
work like this even more difficult.
- Move Get to Load
- Move HostListItem code to CLI
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
- USE_CONTAINER allow to seamlessly run targets inside or outside containers
- all build calls have been harmonized, honoring the same env variables
- contributing doc has been streamlined according to that
- kill the distinction between remote and local docker builds
- got rid of some of the byzantine calls in various asorted scripts
- support for static build, debug builds, verbose
Signed-off-by: Olivier Gambier <olivier@docker.com>
This commit makes no changes to code execution, but rather resolves some
`go vet` errors, the majority of which relate to `fatal` being used
instead of `fatalf` during testing.
Signed-off-by: Matt McNaughton <mattjmcnaughton@gmail.com>
This aims to lookup for Vmware Fusion required binaries (vmrun and vmware-vdiskmanager) in the system path first before falling back in the default Vmware Fusion installing path.
Thereby, the vmwarefusion docker-machine driver can now be used even if Vmware Fusion is not installed in its default location (with brew cask for example).
Signed-off-by: Jean-Christophe Lagache <jclagache@gmail.com>
* Adds `--openstack-active-timeout` parameter to set the timeout
until a machine is active. Closes#1632
Signed-off-by: David Zerulla <ddaze@outlook.de>
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
vbox: remove tar loading from virtual disk creation
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
tests: use btrfs instead of overlay for custom option test
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
vbox: lock down shared folders to user home dir
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
use env var for user for cross platform
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
vbox: remove sudo from setting ssh key for user
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
wip: use homedir for share
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
Signed-off-by: Eric Sage <eric.david.sage@gmail.com>
Add regex support
Signed-off-by: Eric Sage <eric.david.sage@gmail.com>
Allow bad regex passthrough to reg string amtch
Signed-off-by: Eric Sage <eric.david.sage@gmail.com>
Add unit test
Signed-off-by: Eric Sage <eric.david.sage@gmail.com>
Add integration tests
Signed-off-by: Eric Sage <eric.david.sage@gmail.com>
Add documentation for name filter.
Signed-off-by: Eric Sage <eric.david.sage@gmail.com>
Since the content of `struct Driver` is serialized to disk, any change
is problematic. A workaround is to keep using the `SecurityGroup` member
as a string (a comma-separated list of security groups).
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Without this feature, when a user needs a specific security group (i.e
most of the time if they want to expose a service to Internet), they
need to copy the rules needed for Docker itself into each custom
group. With this feature, they can spawn new instances with
`--exoscale-security-group docker-machine,my-custom-group`.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Waiting for a job to complete is split into a dedicated function,
outside of `waitForVM()`. Functions only waiting for the job to complete
will use this new function instead. The "job is done" testing logic is
also casted into a separate function.
The original `waitForVM()` function is now waiting for the job to
complete, then retrieve the VM. This introduces an extra API call which
could be avoided by having a `waitForJob()` return the last response but
this makes the code simpler for other users and adding a special variant
just for that seems to be overkill.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Instead of using a custom loop, use the newly introduced
`utils.WaitForSpecificOrError` function. Beware that on success, we use
the successful response to get the VM object (outside the loop).
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Otherwise, the timeout is reached far too soon: instead of waiting for
the VM for two minutes, we wait only for a couple of seconds.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Otherwise, when recreating a machine with the same name, we would get an
error about this SSH keypair already existing.
To avoid any confusion, let's say that machine will handle all keypairs
and the user cannot provide its own. Therefore, move the keypairs into
their own "namespace" and remove the option to specify a keypair.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
- Add a call to GetState() in GetIP() to bail if the machine is stopped,
similar to how it is done in the virtualbox driver.
- Add tests for `url` and `env` commands.
Fixes#1168
Signed-off-by: Mike Fiedler <miketheman@gmail.com>
I struggled to figure out why a machine create was failing, and
eventually asked if anyone else had seen the vague error I was getting:
"Error creating machine: Process exited with: 100. Reason was: ()"
It is immensely helpful if we log the command output instead of
just the rc.
It would also have been useful if the driver providers used the output, but
this covers most scenarios since they don't.
Signed-off-by: Christy Perez <christy@linux.vnet.ibm.com>
The main goal of this patch was to make the VirtualBox driver wait for
SSH before trying to get the IP of the VM. The generic WaitForSSH
method required a Host struct as an arg. This patch moves most of the
logic to the driver package so that drivers can call WaitForSSH. The
existing functions in host are just wrappers to the real
implementation in drivers now.
Signed-off-by: Darren Shepherd <darren@rancher.com>
Add support for exoscale, a Swiss cloud provider. This pull "egoscale",
a Go binding for exoscale, in godeps.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
This also lays the foundation for the possibility of log drivers in the
future, if it is decided that is a direction to pursue.
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
Installation of curl is handled directly by libmachine provisioning, so
there is no need to do it and hence wait for SSH to be ready.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Waiting for SSH is done in libmachine. There are some additional steps
after waiting for SSH but none of them seem to require SSH to be ready
to be executed.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
VMWare VCloudAir driver is the only one taking an extra step to test
connectivity after machine creation. If this is a desirable step, it
should be done for all drivers in libmachine directly.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
OpenStack driver waits for the machine to reach the expected state. This
is already done in libmachine for most instances of this pattern.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
Waiting for SSH to start or Docker to be available is a step done
directly in the framework (in libmachine). There is no need for the
driver to do that.
Signed-off-by: Vincent Bernat <Vincent.Bernat@exoscale.ch>
- Update custom ISO to docker 1.6.0.
- Shared folder support for VMware Fusion.
- Updated bats test for Fusion.
Signed-off-by: Fabio Rapposelli <fabio@vmware.com>
The host side ssh NAT port was being chosen by the OS
when the VM was crafted in the `Create` method.
There was no accounting for some other process taking
over the port while the VM is shutoff.
This moves the port provisioning to VM start.
On first start, the OS will supply the port. Subsequent
starts, we see if we can re-use the port, falling back
to delegating the selection to the OS.
Signed-off-by: John Fieber <jrf@ursamaris.org>
Fix for Docker Machine gets stuck on IBM Softlayer #915
The ip address of the provisioned VM was not being stored in the driver IPAddress variable, this variable
was being used to check if the VM ssh service was up. However as the variable was a blank string the actual address being checked defaulted
to localhost:22, as a result the installation steps on the VM only worked if the user was running an ssh daemon on the machine they were using docker-machine from.
Signed-off-by: Rob Smart <smartrob@uk.ibm.com>