Commit Graph

22578 Commits

Author SHA1 Message Date
Sebastiaan van Stijn b211e57f23 Merge pull request #20774 from hqhq/hq_vender_engine_api
Vendor engine-api to 70d266e96080e3c3d63c55a4d8659e00ac1f7e6c
2016-02-29 18:48:55 +01:00
Vincent Demeester c0c10daebf Merge pull request #20777 from Anonymooseable/document-plugin-types
Document interfaces a plugin can implement
2016-02-29 17:31:06 +01:00
Tibor Vass 0573b814a1 Merge pull request #20737 from mikedougherty/install-sh-multiple-keyservers
Use multiple keyservers in install script
2016-02-29 11:17:13 -05:00
Linus Heckemann 3ef1325828 Remove experimental GraphDriver plugin type
Signed-off-by: Linus Heckemann <anonymouse2048@gmail.com>
2016-02-29 15:59:54 +00:00
Vincent Demeester 6c01d2a0cf Merge pull request #20629 from wallnerryan/intro-volumes
Intro volume drivers in dockervolumes.md
2016-02-29 16:59:43 +01:00
Ryan Wallner b6fdcd3a34 intro volume plugins in userguide volumes
NOTE should be lowercase

Signed-off-by: Ryan Wallner <ryan.wallner@clusterhq.com>

add link to list of plugins

Signed-off-by: Ryan Wallner <ryan.wallner@clusterhq.com>

address changres

Signed-off-by: Ryan Wallner <ryan.wallner@clusterhq.com>
2016-02-29 10:56:32 -05:00
Tibor Vass eb22fcc229 Merge pull request #20773 from Microsoft/jjh/testunitdockerlayer
Windows CI Unit Test: Docker layer turn off failing tests
2016-02-29 10:46:32 -05:00
Tibor Vass 8ffec1fca5 Merge pull request #20772 from Microsoft/jjh/testunitdistribution-xfer
Windows CI Unit Test: Distribution\xfer turn off failing tests
2016-02-29 10:45:57 -05:00
Brian Goff abbb16d7ab Merge pull request #20602 from twistlock/20508_authz_plugin_corrupt_body
Fix #20508 - Authz plugin enabled with large text/JSON POST payload corrupts body
2016-02-29 10:43:02 -05:00
Brian Goff 7cea7c698d Merge pull request #20756 from runcom/no-dash-d-tests
integration-cli: remove not necessary -d again
2016-02-29 09:47:49 -05:00
Vincent Demeester 79c24a0820 Merge pull request #20736 from elchris82/master
Changed the Example request in Remote API reference to connect a container to a network
2016-02-29 15:06:20 +01:00
Sebastiaan van Stijn da4f2ce629 Merge pull request #20771 from Microsoft/jjh/disableunittestsdistribution
Windows CI Unit Test: Distribution turn off failing tests
2016-02-29 12:56:10 +01:00
Qiang Huang 53b0d62683 Vendor engine-api to 70d266e96080e3c3d63c55a4d8659e00ac1f7e6c
Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
2016-02-29 19:28:37 +08:00
Linus Heckemann dd729efe02 Document interfaces a plugin can implement
Signed-off-by: Linus Heckemann <lheckemann@twig-world.com>
2016-02-29 09:43:44 +00:00
Vincent Demeester ffd8a0e0fb Merge pull request #20776 from terryding77/doc_changes
change container word spell in docs
2016-02-29 10:38:06 +01:00
terryding77 adda1060aa change container word spell in docs
Signed-off-by: terryding77 <550147740@qq.com>
2016-02-29 16:59:53 +08:00
Antonio Murdaca 5ef74c6595 Merge pull request #20753 from icecrime/debugging_win2lin
Fix client-side race in `docker stats`
2016-02-29 08:20:17 +01:00
Vincent Demeester 20a038eca6 Merge pull request #20604 from coolljt0725/fix_reload
Fix configuration reloading
2016-02-29 07:14:15 +01:00
John Howard e17cb9b721 Windows CI Unit Test: Docker layer turn off failing tests
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-02-28 20:16:10 -08:00
John Howard dd2ff281bf Windows CI Unit Test: Distribution\xfer turn off failing tests
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-02-28 20:08:34 -08:00
John Howard 621a1b9aca Windows CI Unit Test: Distribution turn off failing tests
Signed-off-by: John Howard <jhoward@microsoft.com>
2016-02-28 20:02:51 -08:00
Arnaud Porterie 3041aa53ef Fix client-side race in `docker stats`
Subscribe to events and monitor for new containers before the initial
listing of currently running containers.

This fixes a race where a new container could appear between the first
list call but before the client was subscribed to events, leading to a
container never appearing in the output of `docker stats`.

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
2016-02-28 18:44:23 -08:00
Sebastiaan van Stijn 67a77934a4 Merge pull request #20760 from vdemeester/fix-cliconfig
Fixing cliconfig getDefaultConfigDir
2016-02-29 00:19:06 +01:00
Sebastiaan van Stijn ab18b5977a Merge pull request #20757 from spacediver/patch-1
fixed formatting; added handy -y to apt-get install
2016-02-28 23:55:03 +01:00
Sebastiaan van Stijn 0866d63278 Merge pull request #20759 from toogley/master
add google group subscribtion method using only emails
2016-02-28 19:17:00 +01:00
Pavel Sutyrin 30c2770a73 fixed formatting; added handy -y to apt-get install
Signed-off-by: Pavel Sutyrin <pavel.sutyrin@gmail.com>
2016-02-28 20:37:04 +03:00
Vincent Demeester d3fd0974d5 Fixing getDefaultConfigDir
It seems it's not really checking the right folder.

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
2016-02-28 16:04:48 +01:00
toogley e3e18584b0 add google group subscribtion method using only emails
* users don't have to create an google account for using the google groups. They
  can simply email to e.g. "docker-user+subscribe@googlegroups.com" to
  subscribe.

* since this behavior is not mentioned on the google group website, i think its
  a good idea to explain this method here.

Signed-off-by: toogley <toogley@mailbox.org>
2016-02-28 15:31:15 +01:00
Antonio Murdaca e44689139d integration-cli: remove not necessary -d again
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
2016-02-28 13:48:15 +01:00
Brian Goff 38439733d2 Merge pull request #20748 from runcom/remove-dash-d
integration-cli: remove not necessary -d
2016-02-27 21:58:15 -05:00
Brian Goff ec268be52e Merge pull request #20706 from calavera/remove_concurrent_access_to_stdtypes
Make stdcopy.StdWriter thread safe.
2016-02-27 21:14:09 -05:00
Arnaud Porterie 15bdca6add Merge pull request #20752 from icecrime/fix_experimental_cross
Pin tpoechtrager/osxcross commit
2016-02-27 17:43:43 -08:00
Arnaud Porterie 2140650b56 Pin tpoechtrager/osxcross commit
Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>
2016-02-27 12:04:49 -08:00
Antonio Murdaca faf4604dac integration-cli: remove not necessary -d
Signed-off-by: Antonio Murdaca <runcom@redhat.com>
2016-02-27 18:27:25 +01:00
Arnaud Porterie c7d6f0c30c Merge pull request #20742 from cpuguy83/revert_aufs_fine_locks
Revert aufs fine locks
2016-02-27 08:53:04 -08:00
Arnaud Porterie c24d4e8ab4 Merge pull request #20734 from cpuguy83/fix_flakey_test
Fix flakey TestStatsAllNewContainersAdded
2016-02-27 07:52:18 -08:00
Brian Goff e386dfc33f fix double-lock
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2016-02-27 09:49:21 -05:00
Vincent Demeester 3f4e49aa61 Merge pull request #20739 from LK4D4/keys_config
Add CONFIG_KEYS to check-config.sh
2016-02-27 14:33:54 +01:00
Brian Goff c2f7777603 Revert "Add finer-grained locking for aufs"
This reverts commit f31014197c.

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2016-02-27 08:01:19 -05:00
Alexander Morozov c1996c9245 Add CONFIG_KEYS to check-config.sh
We need this after opencontainers/runc#488

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
2016-02-26 23:40:35 -08:00
Mike Dougherty adac575dd3 Use multiple keyservers in install script
This improves on an earlier change by adding another keyserver and using a for loop instead of duplicating the command

Signed-off-by: Mike Dougherty <mike.dougherty@docker.com>
2016-02-26 17:22:00 -08:00
Christian Böhme 2bd365ae2f Changed the Remote API reference to connect a container to a network in v1.22
and v1.23

Signed-off-by: Christian Böhme <development@boehme3d.de>
2016-02-27 01:31:03 +01:00
David Calavera df2b74188e Merge pull request #20699 from calavera/remove_static_error_declarations
Remove static errors from errors package.
2016-02-26 16:30:12 -08:00
David Calavera f666d918fc Merge pull request #20672 from justincormack/personality
Add some uses of personality syscall to default seccomp filter
2016-02-26 14:27:23 -08:00
Tianon Gravi 5bfaab984c Merge pull request #20636 from anusha-ragunathan/apt-ftparchive
Always create apt-ftparchive.conf.
2016-02-26 14:12:06 -08:00
Brian Goff efd281d6eb Fix flakey TestStatsAllNewContainersAdded
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
2016-02-26 16:52:36 -05:00
David Calavera 443a5c2021 Make stdcopy.stdWriter goroutine safe.
Stop using global variables as prefixes to inject the writer header.
That can cause issues when two writers set the length of the buffer in
the same header concurrently.

Stop Writing to the internal buffer twice for each write. This could
mess up with the ordering information is written.

Signed-off-by: David Calavera <david.calavera@gmail.com>
2016-02-26 16:51:18 -05:00
Alexander Morozov 2f797bb1d9 Merge pull request #20275 from cpuguy83/finer_graph_locks
Finer graph locks
2016-02-26 13:33:34 -08:00
Alexander Morozov 51302c29ed Merge pull request #20729 from estesp/pipework
Add synchronization and closure to IO pipes in userns path
2016-02-26 13:33:02 -08:00
David Calavera a793564b25 Remove static errors from errors package.
Moving all strings to the errors package wasn't a good idea after all.

Our custom implementation of Go errors predates everything that's nice
and good about working with errors in Go. Take as an example what we
have to do to get an error message:

```go
func GetErrorMessage(err error) string {
	switch err.(type) {
	case errcode.Error:
		e, _ := err.(errcode.Error)
		return e.Message

	case errcode.ErrorCode:
		ec, _ := err.(errcode.ErrorCode)
		return ec.Message()

	default:
		return err.Error()
	}
}
```

This goes against every good practice for Go development. The language already provides a simple, intuitive and standard way to get error messages, that is calling the `Error()` method from an error. Reinventing the error interface is a mistake.

Our custom implementation also makes very hard to reason about errors, another nice thing about Go. I found several (>10) error declarations that we don't use anywhere. This is a clear sign about how little we know about the errors we return. I also found several error usages where the number of arguments was different than the parameters declared in the error, another clear example of how difficult is to reason about errors.

Moreover, our custom implementation didn't really make easier for people to return custom HTTP status code depending on the errors. Again, it's hard to reason about when to set custom codes and how. Take an example what we have to do to extract the message and status code from an error before returning a response from the API:

```go
	switch err.(type) {
	case errcode.ErrorCode:
		daError, _ := err.(errcode.ErrorCode)
		statusCode = daError.Descriptor().HTTPStatusCode
		errMsg = daError.Message()

	case errcode.Error:
		// For reference, if you're looking for a particular error
		// then you can do something like :
		//   import ( derr "github.com/docker/docker/errors" )
		//   if daError.ErrorCode() == derr.ErrorCodeNoSuchContainer { ... }

		daError, _ := err.(errcode.Error)
		statusCode = daError.ErrorCode().Descriptor().HTTPStatusCode
		errMsg = daError.Message

	default:
		// This part of will be removed once we've
		// converted everything over to use the errcode package

		// FIXME: this is brittle and should not be necessary.
		// If we need to differentiate between different possible error types,
		// we should create appropriate error types with clearly defined meaning
		errStr := strings.ToLower(err.Error())
		for keyword, status := range map[string]int{
			"not found":             http.StatusNotFound,
			"no such":               http.StatusNotFound,
			"bad parameter":         http.StatusBadRequest,
			"conflict":              http.StatusConflict,
			"impossible":            http.StatusNotAcceptable,
			"wrong login/password":  http.StatusUnauthorized,
			"hasn't been activated": http.StatusForbidden,
		} {
			if strings.Contains(errStr, keyword) {
				statusCode = status
				break
			}
		}
	}
```

You can notice two things in that code:

1. We have to explain how errors work, because our implementation goes against how easy to use Go errors are.
2. At no moment we arrived to remove that `switch` statement that was the original reason to use our custom implementation.

This change removes all our status errors from the errors package and puts them back in their specific contexts.
IT puts the messages back with their contexts. That way, we know right away when errors used and how to generate their messages.
It uses custom interfaces to reason about errors. Errors that need to response with a custom status code MUST implementent this simple interface:

```go
type errorWithStatus interface {
	HTTPErrorStatusCode() int
}
```

This interface is very straightforward to implement. It also preserves Go errors real behavior, getting the message is as simple as using the `Error()` method.

I included helper functions to generate errors that use custom status code in `errors/errors.go`.

By doing this, we remove the hard dependency we have eeverywhere to our custom errors package. Yes, you can use it as a helper to generate error, but it's still very easy to generate errors without it.

Please, read this fantastic blog post about errors in Go: http://dave.cheney.net/2014/12/24/inspecting-errors

Signed-off-by: David Calavera <david.calavera@gmail.com>
2016-02-26 15:49:09 -05:00