Commit Graph

31 Commits

Author SHA1 Message Date
David Gageot 3aaf16db51 Use a typed error for consumers of libmachine
Signed-off-by: David Gageot <david@gageot.net>
2016-03-02 22:35:44 +01:00
David Gageot 15b5a1d10d Merge pull request #2838 from mssola/export-session
libmachine/ssh: export the NativeClient.Session function
2016-02-09 17:36:25 -08:00
Miquel Sabaté Solà 0a2b5ab4d3 libmachine/ssh: added the Start and Wait functions to the Client interface
The Start function starts an SSH session and executes the given command. The
returned parameters are readers for the stdout and stderr. This way, developers
can further manipulate the output of the remote command. The Wait function is
command to that of the exec.Cmd type.

The readers returned by the Start function are io.ReadCloser instead of
io.Reader, as one might think. This is done this way to simplify the API so
the ExternalClient doesn't have to provide extra functions to close the
io.ReadCloser's as returned by the cmd.StdoutPipe and cmd.StderrPipe functions.

Finally, I've also changed the receivers of the functions related to the Native
and the External clients. This is done this way because we need to save the
open session or the command from each client in order to implement the Wait
function. Note that the Wait function is needed in order to properly close the
session that is hidden underneath the Native client.

Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
2016-01-27 09:52:29 +01:00
David Gageot 1bc6cdd357 FIX #2941 Wait for Docker after a restart
Signed-off-by: David Gageot <david@gageot.net>
2016-01-27 09:35:47 +01:00
Nathan LeClaire 3757dc5313 Add code to wait for Docker daemon on start
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-01-26 18:42:10 -08:00
David Gageot b5e6e20a8f Disable bugsnag report for upgrades for now
Signed-off-by: David Gageot <david@gageot.net>
2016-01-18 11:56:20 +01:00
David Gageot 501b8666ce Merge pull request #2121 from nathanleclaire/provision_cmd
Add docker-machine provision command
2016-01-18 08:53:15 +01:00
Nathan LeClaire aa54a5f272 Add additional tests for SSH
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-01-14 17:27:41 -08:00
Nathan LeClaire 01c7556e3a Add docker-machine provision command
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2016-01-12 11:52:36 -08:00
David Gageot f5293e10e2 Crash reporting shouldn't be static
Signed-off-by: David Gageot <david@gageot.net>
2016-01-05 18:16:11 +01:00
David Gageot e143c68cf9 Merge pull request #2732 from dgageot/better-logs
Improve Start/Stop/Kill/Restart lifecycle/logs
2016-01-04 16:24:55 +01:00
David Gageot 6f53a0b9ed Simpler code
Signed-off-by: David Gageot <david@gageot.net>
2016-01-04 10:39:38 +01:00
David Gageot 855de0741a Logs for Kill
Signed-off-by: David Gageot <david@gageot.net>
2016-01-04 10:38:25 +01:00
David Gageot e9aa75f021 Logs for Restart
Signed-off-by: David Gageot <david@gageot.net>
2016-01-04 10:38:25 +01:00
David Gageot 783d2b124e Logs for Start
Signed-off-by: David Gageot <david@gageot.net>
2016-01-04 10:38:25 +01:00
David Gageot bbe76b5a26 Logs for Stop
Signed-off-by: David Gageot <david@gageot.net>
2016-01-04 10:38:25 +01:00
David Gageot 670c4808ed FIX #2663 reduce calls to the driver in ls
Signed-off-by: David Gageot <david@gageot.net>
2015-12-23 13:58:06 +01:00
Neil Wilson c045ceec1e Change host restart to use the driver implementation
Fixes #2140

Signed-off-by: Neil Wilson <neil@aldur.co.uk>
2015-12-22 10:31:34 +01:00
David Gageot 34b6468c2c FIX #2370 add feedback to the user
Signed-off-by: David Gageot <david@gageot.net>
2015-12-21 12:04:01 +01:00
Nathan LeClaire d29a42ebc6 Merge pull request #1299 from hairyhenderson/ssh-agent-support-1291
Allowing generic driver to use ssh-agent to get identities
2015-12-11 17:31:55 -08:00
Jean-Laurent de Morlhon 5f4583bd3f Add context, driver name & command to crash report
Signed-off-by: Jean-Laurent de Morlhon <jeanlaurent@morlhon.net>
2015-12-11 11:39:13 +01:00
Jean-Laurent de Morlhon 4f0c24483b bugsnag integration
Signed-off-by: Jean-Laurent de Morlhon <jeanlaurent@morlhon.net>
2015-12-10 17:05:05 +01:00
Dave Henderson cf6136fed0 Allowing generic driver to use ssh-agent to get identities
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
2015-12-09 09:36:08 -05:00
David Gageot 3612c55677 Add version to machine ls
Signed-off-by: David Gageot <david@gageot.net>
2015-12-03 16:27:42 +01:00
David Gageot 78b088d135 Add more logs to provisioner
Signed-off-by: David Gageot <david@gageot.net>
2015-11-27 09:36:58 +01:00
Nathan LeClaire 3a8061221c Remove RawDriver from persistence on disk
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2015-11-25 22:16:24 -08:00
Olivier Gambier d2ada6488c Lint
Signed-off-by: Olivier Gambier <olivier@docker.com>
2015-11-05 13:34:07 -08:00
Nathan LeClaire c8edb33ecd Move towards using external binaries / RPC plugins
- 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>
2015-10-16 16:34:56 -07:00
Nathan LeClaire 998ada5303 Fix Windows SSH issues
Signed-off-by: Nathan LeClaire <nathan.leclaire@gmail.com>
2015-10-13 16:42:08 -07:00
Nathan LeClaire 9453df4859 Fix Docker daemon wait
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>
2015-09-23 15:19:25 -07:00
Nathan LeClaire b5927f10c4 Make libmachine usable by outside world
- 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>
2015-09-23 12:30:15 -07:00