mirror of https://github.com/docker/docs.git
				
				
				
			Merge pull request #2728 from dgageot/update-docker-client
FIX #2703 Update dockerclient dependency
This commit is contained in:
		
						commit
						61fed5c11b
					
				|  | @ -173,7 +173,7 @@ | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/samalba/dockerclient", | 			"ImportPath": "github.com/samalba/dockerclient", | ||||||
| 			"Rev": "82381805d3533c97cec74e1cc79b00ef45774571" | 			"Rev": "f661dd4754aa5c52da85d04b5871ee0e11f4b59c" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"ImportPath": "github.com/skarademir/naturalsort", | 			"ImportPath": "github.com/skarademir/naturalsort", | ||||||
|  | @ -236,6 +236,11 @@ | ||||||
| 			"ImportPath": "github.com/vmware/govmomi", | 			"ImportPath": "github.com/vmware/govmomi", | ||||||
| 			"Comment": "prerelease-v0.1.0-73-gfc131d4-65-g482cd82", | 			"Comment": "prerelease-v0.1.0-73-gfc131d4-65-g482cd82", | ||||||
| 			"Rev": "482cd823716e0fa9bc4e186d262a6ea23d940fbf" | 			"Rev": "482cd823716e0fa9bc4e186d262a6ea23d940fbf" | ||||||
|  | 		}, | ||||||
|  | 		{ | ||||||
|  | 			"ImportPath": "github.com/docker/go-units", | ||||||
|  | 			"Comment": "v0.1.0-21-g0bbddae", | ||||||
|  | 			"Rev": "0bbddae09c5a5419a8c6dcdd7ff90da3d450393b" | ||||||
| 		} | 		} | ||||||
| 	] | 	] | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -7,13 +7,14 @@ import ( | ||||||
| 	"github.com/samalba/dockerclient" | 	"github.com/samalba/dockerclient" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func DockerClient(host DockerHost) (*dockerclient.DockerClient, error) { | // DockerClient creates a docker client for a given host.
 | ||||||
| 	url, err := host.URL() | func DockerClient(dockerHost DockerHost) (*dockerclient.DockerClient, error) { | ||||||
|  | 	url, err := dockerHost.URL() | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	tlsConfig, err := cert.ReadTLSConfig(url, host.AuthOptions()) | 	tlsConfig, err := cert.ReadTLSConfig(url, dockerHost.AuthOptions()) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return nil, fmt.Errorf("Unable to read TLS config: %s", err) | 		return nil, fmt.Errorf("Unable to read TLS config: %s", err) | ||||||
| 	} | 	} | ||||||
|  | @ -21,18 +22,19 @@ func DockerClient(host DockerHost) (*dockerclient.DockerClient, error) { | ||||||
| 	return dockerclient.NewDockerClient(url, tlsConfig) | 	return dockerclient.NewDockerClient(url, tlsConfig) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //CreateContainer creates a docker container.
 | // CreateContainer creates a docker container.
 | ||||||
| func CreateContainer(dockerHost RemoteDocker, config *dockerclient.ContainerConfig, name string) error { | func CreateContainer(dockerHost DockerHost, config *dockerclient.ContainerConfig, name string) error { | ||||||
| 	docker, err := DockerClient(dockerHost) | 	docker, err := DockerClient(dockerHost) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if err = docker.PullImage(config.Image, nil); err != nil { | 	if err = docker.PullImage(config.Image, nil); err != nil { | ||||||
| 		return fmt.Errorf("Unable to Pull Image: %s", err) | 		return fmt.Errorf("Unable to pull image: %s", err) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	containerID, err := docker.CreateContainer(config, name) | 	var authConfig *dockerclient.AuthConfig | ||||||
|  | 	containerID, err := docker.CreateContainer(config, name, authConfig) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return fmt.Errorf("Error while creating container: %s", err) | 		return fmt.Errorf("Error while creating container: %s", err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ type RemoteDocker struct { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // URL returns the Docker host URL
 | // URL returns the Docker host URL
 | ||||||
| func (rd RemoteDocker) URL() (string, error) { | func (rd *RemoteDocker) URL() (string, error) { | ||||||
| 	if rd.HostURL == "" { | 	if rd.HostURL == "" { | ||||||
| 		return "", fmt.Errorf("Docker Host URL not set") | 		return "", fmt.Errorf("Docker Host URL not set") | ||||||
| 	} | 	} | ||||||
|  | @ -36,6 +36,6 @@ func (rd RemoteDocker) URL() (string, error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // AuthOptions returns the authOptions
 | // AuthOptions returns the authOptions
 | ||||||
| func (rd RemoteDocker) AuthOptions() *auth.Options { | func (rd *RemoteDocker) AuthOptions() *auth.Options { | ||||||
| 	return rd.AuthOption | 	return rd.AuthOption | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -34,9 +34,8 @@ func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth. | ||||||
| 
 | 
 | ||||||
| 	dockerPort := "2376" | 	dockerPort := "2376" | ||||||
| 	dockerDir := p.GetDockerOptionsDir() | 	dockerDir := p.GetDockerOptionsDir() | ||||||
| 	dockerHost := fmt.Sprintf("tcp://%s:%s", ip, dockerPort) | 	dockerHost := &mcndockerclient.RemoteDocker{ | ||||||
| 	dockerClient := mcndockerclient.RemoteDocker{ | 		HostURL:    fmt.Sprintf("tcp://%s:%s", ip, dockerPort), | ||||||
| 		HostURL:    dockerHost, |  | ||||||
| 		AuthOption: &authOptions, | 		AuthOption: &authOptions, | ||||||
| 	} | 	} | ||||||
| 	advertiseInfo := fmt.Sprintf("%s:%s", ip, dockerPort) | 	advertiseInfo := fmt.Sprintf("%s:%s", ip, dockerPort) | ||||||
|  | @ -81,7 +80,7 @@ func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth. | ||||||
| 			HostConfig: masterHostConfig, | 			HostConfig: masterHostConfig, | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		err = mcndockerclient.CreateContainer(dockerClient, swarmMasterConfig, "swarm-agent-master") | 		err = mcndockerclient.CreateContainer(dockerHost, swarmMasterConfig, "swarm-agent-master") | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
|  | @ -107,5 +106,5 @@ func configureSwarm(p Provisioner, swarmOptions swarm.Options, authOptions auth. | ||||||
| 		HostConfig: workerHostConfig, | 		HostConfig: workerHostConfig, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return mcndockerclient.CreateContainer(dockerClient, swarmWorkerConfig, "swarm-agent") | 	return mcndockerclient.CreateContainer(dockerHost, swarmWorkerConfig, "swarm-agent") | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -0,0 +1,67 @@ | ||||||
|  | # Contributing to go-units | ||||||
|  | 
 | ||||||
|  | Want to hack on go-units? Awesome! Here are instructions to get you started. | ||||||
|  | 
 | ||||||
|  | go-units is a part of the [Docker](https://www.docker.com) project, and follows | ||||||
|  | the same rules and principles. If you're already familiar with the way | ||||||
|  | Docker does things, you'll feel right at home. | ||||||
|  | 
 | ||||||
|  | Otherwise, go read Docker's | ||||||
|  | [contributions guidelines](https://github.com/docker/docker/blob/master/CONTRIBUTING.md), | ||||||
|  | [issue triaging](https://github.com/docker/docker/blob/master/project/ISSUE-TRIAGE.md), | ||||||
|  | [review process](https://github.com/docker/docker/blob/master/project/REVIEWING.md) and | ||||||
|  | [branches and tags](https://github.com/docker/docker/blob/master/project/BRANCHES-AND-TAGS.md). | ||||||
|  | 
 | ||||||
|  | ### Sign your work | ||||||
|  | 
 | ||||||
|  | The sign-off is a simple line at the end of the explanation for the patch. Your | ||||||
|  | signature certifies that you wrote the patch or otherwise have the right to pass | ||||||
|  | it on as an open-source patch. The rules are pretty simple: if you can certify | ||||||
|  | the below (from [developercertificate.org](http://developercertificate.org/)): | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | Developer Certificate of Origin | ||||||
|  | Version 1.1 | ||||||
|  | 
 | ||||||
|  | Copyright (C) 2004, 2006 The Linux Foundation and its contributors. | ||||||
|  | 660 York Street, Suite 102, | ||||||
|  | San Francisco, CA 94110 USA | ||||||
|  | 
 | ||||||
|  | Everyone is permitted to copy and distribute verbatim copies of this | ||||||
|  | license document, but changing it is not allowed. | ||||||
|  | 
 | ||||||
|  | Developer's Certificate of Origin 1.1 | ||||||
|  | 
 | ||||||
|  | By making a contribution to this project, I certify that: | ||||||
|  | 
 | ||||||
|  | (a) The contribution was created in whole or in part by me and I | ||||||
|  |     have the right to submit it under the open source license | ||||||
|  |     indicated in the file; or | ||||||
|  | 
 | ||||||
|  | (b) The contribution is based upon previous work that, to the best | ||||||
|  |     of my knowledge, is covered under an appropriate open source | ||||||
|  |     license and I have the right under that license to submit that | ||||||
|  |     work with modifications, whether created in whole or in part | ||||||
|  |     by me, under the same open source license (unless I am | ||||||
|  |     permitted to submit under a different license), as indicated | ||||||
|  |     in the file; or | ||||||
|  | 
 | ||||||
|  | (c) The contribution was provided directly to me by some other | ||||||
|  |     person who certified (a), (b) or (c) and I have not modified | ||||||
|  |     it. | ||||||
|  | 
 | ||||||
|  | (d) I understand and agree that this project and the contribution | ||||||
|  |     are public and that a record of the contribution (including all | ||||||
|  |     personal information I submit with it, including my sign-off) is | ||||||
|  |     maintained indefinitely and may be redistributed consistent with | ||||||
|  |     this project or the open source license(s) involved. | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | Then you just add a line to every git commit message: | ||||||
|  | 
 | ||||||
|  |     Signed-off-by: Joe Smith <joe.smith@email.com> | ||||||
|  | 
 | ||||||
|  | Use your real name (sorry, no pseudonyms or anonymous contributions.) | ||||||
|  | 
 | ||||||
|  | If you set your `user.name` and `user.email` git configs, you can sign your | ||||||
|  | commit automatically with `git commit -s`. | ||||||
|  | @ -0,0 +1,191 @@ | ||||||
|  | 
 | ||||||
|  |                                  Apache License | ||||||
|  |                            Version 2.0, January 2004 | ||||||
|  |                         https://www.apache.org/licenses/ | ||||||
|  | 
 | ||||||
|  |    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||||
|  | 
 | ||||||
|  |    1. Definitions. | ||||||
|  | 
 | ||||||
|  |       "License" shall mean the terms and conditions for use, reproduction, | ||||||
|  |       and distribution as defined by Sections 1 through 9 of this document. | ||||||
|  | 
 | ||||||
|  |       "Licensor" shall mean the copyright owner or entity authorized by | ||||||
|  |       the copyright owner that is granting the License. | ||||||
|  | 
 | ||||||
|  |       "Legal Entity" shall mean the union of the acting entity and all | ||||||
|  |       other entities that control, are controlled by, or are under common | ||||||
|  |       control with that entity. For the purposes of this definition, | ||||||
|  |       "control" means (i) the power, direct or indirect, to cause the | ||||||
|  |       direction or management of such entity, whether by contract or | ||||||
|  |       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||||
|  |       outstanding shares, or (iii) beneficial ownership of such entity. | ||||||
|  | 
 | ||||||
|  |       "You" (or "Your") shall mean an individual or Legal Entity | ||||||
|  |       exercising permissions granted by this License. | ||||||
|  | 
 | ||||||
|  |       "Source" form shall mean the preferred form for making modifications, | ||||||
|  |       including but not limited to software source code, documentation | ||||||
|  |       source, and configuration files. | ||||||
|  | 
 | ||||||
|  |       "Object" form shall mean any form resulting from mechanical | ||||||
|  |       transformation or translation of a Source form, including but | ||||||
|  |       not limited to compiled object code, generated documentation, | ||||||
|  |       and conversions to other media types. | ||||||
|  | 
 | ||||||
|  |       "Work" shall mean the work of authorship, whether in Source or | ||||||
|  |       Object form, made available under the License, as indicated by a | ||||||
|  |       copyright notice that is included in or attached to the work | ||||||
|  |       (an example is provided in the Appendix below). | ||||||
|  | 
 | ||||||
|  |       "Derivative Works" shall mean any work, whether in Source or Object | ||||||
|  |       form, that is based on (or derived from) the Work and for which the | ||||||
|  |       editorial revisions, annotations, elaborations, or other modifications | ||||||
|  |       represent, as a whole, an original work of authorship. For the purposes | ||||||
|  |       of this License, Derivative Works shall not include works that remain | ||||||
|  |       separable from, or merely link (or bind by name) to the interfaces of, | ||||||
|  |       the Work and Derivative Works thereof. | ||||||
|  | 
 | ||||||
|  |       "Contribution" shall mean any work of authorship, including | ||||||
|  |       the original version of the Work and any modifications or additions | ||||||
|  |       to that Work or Derivative Works thereof, that is intentionally | ||||||
|  |       submitted to Licensor for inclusion in the Work by the copyright owner | ||||||
|  |       or by an individual or Legal Entity authorized to submit on behalf of | ||||||
|  |       the copyright owner. For the purposes of this definition, "submitted" | ||||||
|  |       means any form of electronic, verbal, or written communication sent | ||||||
|  |       to the Licensor or its representatives, including but not limited to | ||||||
|  |       communication on electronic mailing lists, source code control systems, | ||||||
|  |       and issue tracking systems that are managed by, or on behalf of, the | ||||||
|  |       Licensor for the purpose of discussing and improving the Work, but | ||||||
|  |       excluding communication that is conspicuously marked or otherwise | ||||||
|  |       designated in writing by the copyright owner as "Not a Contribution." | ||||||
|  | 
 | ||||||
|  |       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||||
|  |       on behalf of whom a Contribution has been received by Licensor and | ||||||
|  |       subsequently incorporated within the Work. | ||||||
|  | 
 | ||||||
|  |    2. Grant of Copyright License. Subject to the terms and conditions of | ||||||
|  |       this License, each Contributor hereby grants to You a perpetual, | ||||||
|  |       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||||
|  |       copyright license to reproduce, prepare Derivative Works of, | ||||||
|  |       publicly display, publicly perform, sublicense, and distribute the | ||||||
|  |       Work and such Derivative Works in Source or Object form. | ||||||
|  | 
 | ||||||
|  |    3. Grant of Patent License. Subject to the terms and conditions of | ||||||
|  |       this License, each Contributor hereby grants to You a perpetual, | ||||||
|  |       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||||
|  |       (except as stated in this section) patent license to make, have made, | ||||||
|  |       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||||
|  |       where such license applies only to those patent claims licensable | ||||||
|  |       by such Contributor that are necessarily infringed by their | ||||||
|  |       Contribution(s) alone or by combination of their Contribution(s) | ||||||
|  |       with the Work to which such Contribution(s) was submitted. If You | ||||||
|  |       institute patent litigation against any entity (including a | ||||||
|  |       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||||
|  |       or a Contribution incorporated within the Work constitutes direct | ||||||
|  |       or contributory patent infringement, then any patent licenses | ||||||
|  |       granted to You under this License for that Work shall terminate | ||||||
|  |       as of the date such litigation is filed. | ||||||
|  | 
 | ||||||
|  |    4. Redistribution. You may reproduce and distribute copies of the | ||||||
|  |       Work or Derivative Works thereof in any medium, with or without | ||||||
|  |       modifications, and in Source or Object form, provided that You | ||||||
|  |       meet the following conditions: | ||||||
|  | 
 | ||||||
|  |       (a) You must give any other recipients of the Work or | ||||||
|  |           Derivative Works a copy of this License; and | ||||||
|  | 
 | ||||||
|  |       (b) You must cause any modified files to carry prominent notices | ||||||
|  |           stating that You changed the files; and | ||||||
|  | 
 | ||||||
|  |       (c) You must retain, in the Source form of any Derivative Works | ||||||
|  |           that You distribute, all copyright, patent, trademark, and | ||||||
|  |           attribution notices from the Source form of the Work, | ||||||
|  |           excluding those notices that do not pertain to any part of | ||||||
|  |           the Derivative Works; and | ||||||
|  | 
 | ||||||
|  |       (d) If the Work includes a "NOTICE" text file as part of its | ||||||
|  |           distribution, then any Derivative Works that You distribute must | ||||||
|  |           include a readable copy of the attribution notices contained | ||||||
|  |           within such NOTICE file, excluding those notices that do not | ||||||
|  |           pertain to any part of the Derivative Works, in at least one | ||||||
|  |           of the following places: within a NOTICE text file distributed | ||||||
|  |           as part of the Derivative Works; within the Source form or | ||||||
|  |           documentation, if provided along with the Derivative Works; or, | ||||||
|  |           within a display generated by the Derivative Works, if and | ||||||
|  |           wherever such third-party notices normally appear. The contents | ||||||
|  |           of the NOTICE file are for informational purposes only and | ||||||
|  |           do not modify the License. You may add Your own attribution | ||||||
|  |           notices within Derivative Works that You distribute, alongside | ||||||
|  |           or as an addendum to the NOTICE text from the Work, provided | ||||||
|  |           that such additional attribution notices cannot be construed | ||||||
|  |           as modifying the License. | ||||||
|  | 
 | ||||||
|  |       You may add Your own copyright statement to Your modifications and | ||||||
|  |       may provide additional or different license terms and conditions | ||||||
|  |       for use, reproduction, or distribution of Your modifications, or | ||||||
|  |       for any such Derivative Works as a whole, provided Your use, | ||||||
|  |       reproduction, and distribution of the Work otherwise complies with | ||||||
|  |       the conditions stated in this License. | ||||||
|  | 
 | ||||||
|  |    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||||
|  |       any Contribution intentionally submitted for inclusion in the Work | ||||||
|  |       by You to the Licensor shall be under the terms and conditions of | ||||||
|  |       this License, without any additional terms or conditions. | ||||||
|  |       Notwithstanding the above, nothing herein shall supersede or modify | ||||||
|  |       the terms of any separate license agreement you may have executed | ||||||
|  |       with Licensor regarding such Contributions. | ||||||
|  | 
 | ||||||
|  |    6. Trademarks. This License does not grant permission to use the trade | ||||||
|  |       names, trademarks, service marks, or product names of the Licensor, | ||||||
|  |       except as required for reasonable and customary use in describing the | ||||||
|  |       origin of the Work and reproducing the content of the NOTICE file. | ||||||
|  | 
 | ||||||
|  |    7. Disclaimer of Warranty. Unless required by applicable law or | ||||||
|  |       agreed to in writing, Licensor provides the Work (and each | ||||||
|  |       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||||
|  |       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||||
|  |       implied, including, without limitation, any warranties or conditions | ||||||
|  |       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||||
|  |       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||||
|  |       appropriateness of using or redistributing the Work and assume any | ||||||
|  |       risks associated with Your exercise of permissions under this License. | ||||||
|  | 
 | ||||||
|  |    8. Limitation of Liability. In no event and under no legal theory, | ||||||
|  |       whether in tort (including negligence), contract, or otherwise, | ||||||
|  |       unless required by applicable law (such as deliberate and grossly | ||||||
|  |       negligent acts) or agreed to in writing, shall any Contributor be | ||||||
|  |       liable to You for damages, including any direct, indirect, special, | ||||||
|  |       incidental, or consequential damages of any character arising as a | ||||||
|  |       result of this License or out of the use or inability to use the | ||||||
|  |       Work (including but not limited to damages for loss of goodwill, | ||||||
|  |       work stoppage, computer failure or malfunction, or any and all | ||||||
|  |       other commercial damages or losses), even if such Contributor | ||||||
|  |       has been advised of the possibility of such damages. | ||||||
|  | 
 | ||||||
|  |    9. Accepting Warranty or Additional Liability. While redistributing | ||||||
|  |       the Work or Derivative Works thereof, You may choose to offer, | ||||||
|  |       and charge a fee for, acceptance of support, warranty, indemnity, | ||||||
|  |       or other liability obligations and/or rights consistent with this | ||||||
|  |       License. However, in accepting such obligations, You may act only | ||||||
|  |       on Your own behalf and on Your sole responsibility, not on behalf | ||||||
|  |       of any other Contributor, and only if You agree to indemnify, | ||||||
|  |       defend, and hold each Contributor harmless for any liability | ||||||
|  |       incurred by, or claims asserted against, such Contributor by reason | ||||||
|  |       of your accepting any such warranty or additional liability. | ||||||
|  | 
 | ||||||
|  |    END OF TERMS AND CONDITIONS | ||||||
|  | 
 | ||||||
|  |    Copyright 2015 Docker, Inc. | ||||||
|  | 
 | ||||||
|  |    Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |    you may not use this file except in compliance with the License. | ||||||
|  |    You may obtain a copy of the License at | ||||||
|  | 
 | ||||||
|  |        https://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | 
 | ||||||
|  |    Unless required by applicable law or agreed to in writing, software | ||||||
|  |    distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |    See the License for the specific language governing permissions and | ||||||
|  |    limitations under the License. | ||||||
|  | @ -0,0 +1,425 @@ | ||||||
|  | Attribution-ShareAlike 4.0 International | ||||||
|  | 
 | ||||||
|  | ======================================================================= | ||||||
|  | 
 | ||||||
|  | Creative Commons Corporation ("Creative Commons") is not a law firm and | ||||||
|  | does not provide legal services or legal advice. Distribution of | ||||||
|  | Creative Commons public licenses does not create a lawyer-client or | ||||||
|  | other relationship. Creative Commons makes its licenses and related | ||||||
|  | information available on an "as-is" basis. Creative Commons gives no | ||||||
|  | warranties regarding its licenses, any material licensed under their | ||||||
|  | terms and conditions, or any related information. Creative Commons | ||||||
|  | disclaims all liability for damages resulting from their use to the | ||||||
|  | fullest extent possible. | ||||||
|  | 
 | ||||||
|  | Using Creative Commons Public Licenses | ||||||
|  | 
 | ||||||
|  | Creative Commons public licenses provide a standard set of terms and | ||||||
|  | conditions that creators and other rights holders may use to share | ||||||
|  | original works of authorship and other material subject to copyright | ||||||
|  | and certain other rights specified in the public license below. The | ||||||
|  | following considerations are for informational purposes only, are not | ||||||
|  | exhaustive, and do not form part of our licenses. | ||||||
|  | 
 | ||||||
|  |      Considerations for licensors: Our public licenses are | ||||||
|  |      intended for use by those authorized to give the public | ||||||
|  |      permission to use material in ways otherwise restricted by | ||||||
|  |      copyright and certain other rights. Our licenses are | ||||||
|  |      irrevocable. Licensors should read and understand the terms | ||||||
|  |      and conditions of the license they choose before applying it. | ||||||
|  |      Licensors should also secure all rights necessary before | ||||||
|  |      applying our licenses so that the public can reuse the | ||||||
|  |      material as expected. Licensors should clearly mark any | ||||||
|  |      material not subject to the license. This includes other CC- | ||||||
|  |      licensed material, or material used under an exception or | ||||||
|  |      limitation to copyright. More considerations for licensors: | ||||||
|  | 	wiki.creativecommons.org/Considerations_for_licensors | ||||||
|  | 
 | ||||||
|  |      Considerations for the public: By using one of our public | ||||||
|  |      licenses, a licensor grants the public permission to use the | ||||||
|  |      licensed material under specified terms and conditions. If | ||||||
|  |      the licensor's permission is not necessary for any reason--for | ||||||
|  |      example, because of any applicable exception or limitation to | ||||||
|  |      copyright--then that use is not regulated by the license. Our | ||||||
|  |      licenses grant only permissions under copyright and certain | ||||||
|  |      other rights that a licensor has authority to grant. Use of | ||||||
|  |      the licensed material may still be restricted for other | ||||||
|  |      reasons, including because others have copyright or other | ||||||
|  |      rights in the material. A licensor may make special requests, | ||||||
|  |      such as asking that all changes be marked or described. | ||||||
|  |      Although not required by our licenses, you are encouraged to | ||||||
|  |      respect those requests where reasonable. More_considerations | ||||||
|  |      for the public: | ||||||
|  | 	wiki.creativecommons.org/Considerations_for_licensees | ||||||
|  | 
 | ||||||
|  | ======================================================================= | ||||||
|  | 
 | ||||||
|  | Creative Commons Attribution-ShareAlike 4.0 International Public | ||||||
|  | License | ||||||
|  | 
 | ||||||
|  | By exercising the Licensed Rights (defined below), You accept and agree | ||||||
|  | to be bound by the terms and conditions of this Creative Commons | ||||||
|  | Attribution-ShareAlike 4.0 International Public License ("Public | ||||||
|  | License"). To the extent this Public License may be interpreted as a | ||||||
|  | contract, You are granted the Licensed Rights in consideration of Your | ||||||
|  | acceptance of these terms and conditions, and the Licensor grants You | ||||||
|  | such rights in consideration of benefits the Licensor receives from | ||||||
|  | making the Licensed Material available under these terms and | ||||||
|  | conditions. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 1 -- Definitions. | ||||||
|  | 
 | ||||||
|  |   a. Adapted Material means material subject to Copyright and Similar | ||||||
|  |      Rights that is derived from or based upon the Licensed Material | ||||||
|  |      and in which the Licensed Material is translated, altered, | ||||||
|  |      arranged, transformed, or otherwise modified in a manner requiring | ||||||
|  |      permission under the Copyright and Similar Rights held by the | ||||||
|  |      Licensor. For purposes of this Public License, where the Licensed | ||||||
|  |      Material is a musical work, performance, or sound recording, | ||||||
|  |      Adapted Material is always produced where the Licensed Material is | ||||||
|  |      synched in timed relation with a moving image. | ||||||
|  | 
 | ||||||
|  |   b. Adapter's License means the license You apply to Your Copyright | ||||||
|  |      and Similar Rights in Your contributions to Adapted Material in | ||||||
|  |      accordance with the terms and conditions of this Public License. | ||||||
|  | 
 | ||||||
|  |   c. BY-SA Compatible License means a license listed at | ||||||
|  |      creativecommons.org/compatiblelicenses, approved by Creative | ||||||
|  |      Commons as essentially the equivalent of this Public License. | ||||||
|  | 
 | ||||||
|  |   d. Copyright and Similar Rights means copyright and/or similar rights | ||||||
|  |      closely related to copyright including, without limitation, | ||||||
|  |      performance, broadcast, sound recording, and Sui Generis Database | ||||||
|  |      Rights, without regard to how the rights are labeled or | ||||||
|  |      categorized. For purposes of this Public License, the rights | ||||||
|  |      specified in Section 2(b)(1)-(2) are not Copyright and Similar | ||||||
|  |      Rights. | ||||||
|  | 
 | ||||||
|  |   e. Effective Technological Measures means those measures that, in the | ||||||
|  |      absence of proper authority, may not be circumvented under laws | ||||||
|  |      fulfilling obligations under Article 11 of the WIPO Copyright | ||||||
|  |      Treaty adopted on December 20, 1996, and/or similar international | ||||||
|  |      agreements. | ||||||
|  | 
 | ||||||
|  |   f. Exceptions and Limitations means fair use, fair dealing, and/or | ||||||
|  |      any other exception or limitation to Copyright and Similar Rights | ||||||
|  |      that applies to Your use of the Licensed Material. | ||||||
|  | 
 | ||||||
|  |   g. License Elements means the license attributes listed in the name | ||||||
|  |      of a Creative Commons Public License. The License Elements of this | ||||||
|  |      Public License are Attribution and ShareAlike. | ||||||
|  | 
 | ||||||
|  |   h. Licensed Material means the artistic or literary work, database, | ||||||
|  |      or other material to which the Licensor applied this Public | ||||||
|  |      License. | ||||||
|  | 
 | ||||||
|  |   i. Licensed Rights means the rights granted to You subject to the | ||||||
|  |      terms and conditions of this Public License, which are limited to | ||||||
|  |      all Copyright and Similar Rights that apply to Your use of the | ||||||
|  |      Licensed Material and that the Licensor has authority to license. | ||||||
|  | 
 | ||||||
|  |   j. Licensor means the individual(s) or entity(ies) granting rights | ||||||
|  |      under this Public License. | ||||||
|  | 
 | ||||||
|  |   k. Share means to provide material to the public by any means or | ||||||
|  |      process that requires permission under the Licensed Rights, such | ||||||
|  |      as reproduction, public display, public performance, distribution, | ||||||
|  |      dissemination, communication, or importation, and to make material | ||||||
|  |      available to the public including in ways that members of the | ||||||
|  |      public may access the material from a place and at a time | ||||||
|  |      individually chosen by them. | ||||||
|  | 
 | ||||||
|  |   l. Sui Generis Database Rights means rights other than copyright | ||||||
|  |      resulting from Directive 96/9/EC of the European Parliament and of | ||||||
|  |      the Council of 11 March 1996 on the legal protection of databases, | ||||||
|  |      as amended and/or succeeded, as well as other essentially | ||||||
|  |      equivalent rights anywhere in the world. | ||||||
|  | 
 | ||||||
|  |   m. You means the individual or entity exercising the Licensed Rights | ||||||
|  |      under this Public License. Your has a corresponding meaning. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 2 -- Scope. | ||||||
|  | 
 | ||||||
|  |   a. License grant. | ||||||
|  | 
 | ||||||
|  |        1. Subject to the terms and conditions of this Public License, | ||||||
|  |           the Licensor hereby grants You a worldwide, royalty-free, | ||||||
|  |           non-sublicensable, non-exclusive, irrevocable license to | ||||||
|  |           exercise the Licensed Rights in the Licensed Material to: | ||||||
|  | 
 | ||||||
|  |             a. reproduce and Share the Licensed Material, in whole or | ||||||
|  |                in part; and | ||||||
|  | 
 | ||||||
|  |             b. produce, reproduce, and Share Adapted Material. | ||||||
|  | 
 | ||||||
|  |        2. Exceptions and Limitations. For the avoidance of doubt, where | ||||||
|  |           Exceptions and Limitations apply to Your use, this Public | ||||||
|  |           License does not apply, and You do not need to comply with | ||||||
|  |           its terms and conditions. | ||||||
|  | 
 | ||||||
|  |        3. Term. The term of this Public License is specified in Section | ||||||
|  |           6(a). | ||||||
|  | 
 | ||||||
|  |        4. Media and formats; technical modifications allowed. The | ||||||
|  |           Licensor authorizes You to exercise the Licensed Rights in | ||||||
|  |           all media and formats whether now known or hereafter created, | ||||||
|  |           and to make technical modifications necessary to do so. The | ||||||
|  |           Licensor waives and/or agrees not to assert any right or | ||||||
|  |           authority to forbid You from making technical modifications | ||||||
|  |           necessary to exercise the Licensed Rights, including | ||||||
|  |           technical modifications necessary to circumvent Effective | ||||||
|  |           Technological Measures. For purposes of this Public License, | ||||||
|  |           simply making modifications authorized by this Section 2(a) | ||||||
|  |           (4) never produces Adapted Material. | ||||||
|  | 
 | ||||||
|  |        5. Downstream recipients. | ||||||
|  | 
 | ||||||
|  |             a. Offer from the Licensor -- Licensed Material. Every | ||||||
|  |                recipient of the Licensed Material automatically | ||||||
|  |                receives an offer from the Licensor to exercise the | ||||||
|  |                Licensed Rights under the terms and conditions of this | ||||||
|  |                Public License. | ||||||
|  | 
 | ||||||
|  |             b. Additional offer from the Licensor -- Adapted Material. | ||||||
|  |                Every recipient of Adapted Material from You | ||||||
|  |                automatically receives an offer from the Licensor to | ||||||
|  |                exercise the Licensed Rights in the Adapted Material | ||||||
|  |                under the conditions of the Adapter's License You apply. | ||||||
|  | 
 | ||||||
|  |             c. No downstream restrictions. You may not offer or impose | ||||||
|  |                any additional or different terms or conditions on, or | ||||||
|  |                apply any Effective Technological Measures to, the | ||||||
|  |                Licensed Material if doing so restricts exercise of the | ||||||
|  |                Licensed Rights by any recipient of the Licensed | ||||||
|  |                Material. | ||||||
|  | 
 | ||||||
|  |        6. No endorsement. Nothing in this Public License constitutes or | ||||||
|  |           may be construed as permission to assert or imply that You | ||||||
|  |           are, or that Your use of the Licensed Material is, connected | ||||||
|  |           with, or sponsored, endorsed, or granted official status by, | ||||||
|  |           the Licensor or others designated to receive attribution as | ||||||
|  |           provided in Section 3(a)(1)(A)(i). | ||||||
|  | 
 | ||||||
|  |   b. Other rights. | ||||||
|  | 
 | ||||||
|  |        1. Moral rights, such as the right of integrity, are not | ||||||
|  |           licensed under this Public License, nor are publicity, | ||||||
|  |           privacy, and/or other similar personality rights; however, to | ||||||
|  |           the extent possible, the Licensor waives and/or agrees not to | ||||||
|  |           assert any such rights held by the Licensor to the limited | ||||||
|  |           extent necessary to allow You to exercise the Licensed | ||||||
|  |           Rights, but not otherwise. | ||||||
|  | 
 | ||||||
|  |        2. Patent and trademark rights are not licensed under this | ||||||
|  |           Public License. | ||||||
|  | 
 | ||||||
|  |        3. To the extent possible, the Licensor waives any right to | ||||||
|  |           collect royalties from You for the exercise of the Licensed | ||||||
|  |           Rights, whether directly or through a collecting society | ||||||
|  |           under any voluntary or waivable statutory or compulsory | ||||||
|  |           licensing scheme. In all other cases the Licensor expressly | ||||||
|  |           reserves any right to collect such royalties. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 3 -- License Conditions. | ||||||
|  | 
 | ||||||
|  | Your exercise of the Licensed Rights is expressly made subject to the | ||||||
|  | following conditions. | ||||||
|  | 
 | ||||||
|  |   a. Attribution. | ||||||
|  | 
 | ||||||
|  |        1. If You Share the Licensed Material (including in modified | ||||||
|  |           form), You must: | ||||||
|  | 
 | ||||||
|  |             a. retain the following if it is supplied by the Licensor | ||||||
|  |                with the Licensed Material: | ||||||
|  | 
 | ||||||
|  |                  i. identification of the creator(s) of the Licensed | ||||||
|  |                     Material and any others designated to receive | ||||||
|  |                     attribution, in any reasonable manner requested by | ||||||
|  |                     the Licensor (including by pseudonym if | ||||||
|  |                     designated); | ||||||
|  | 
 | ||||||
|  |                 ii. a copyright notice; | ||||||
|  | 
 | ||||||
|  |                iii. a notice that refers to this Public License; | ||||||
|  | 
 | ||||||
|  |                 iv. a notice that refers to the disclaimer of | ||||||
|  |                     warranties; | ||||||
|  | 
 | ||||||
|  |                  v. a URI or hyperlink to the Licensed Material to the | ||||||
|  |                     extent reasonably practicable; | ||||||
|  | 
 | ||||||
|  |             b. indicate if You modified the Licensed Material and | ||||||
|  |                retain an indication of any previous modifications; and | ||||||
|  | 
 | ||||||
|  |             c. indicate the Licensed Material is licensed under this | ||||||
|  |                Public License, and include the text of, or the URI or | ||||||
|  |                hyperlink to, this Public License. | ||||||
|  | 
 | ||||||
|  |        2. You may satisfy the conditions in Section 3(a)(1) in any | ||||||
|  |           reasonable manner based on the medium, means, and context in | ||||||
|  |           which You Share the Licensed Material. For example, it may be | ||||||
|  |           reasonable to satisfy the conditions by providing a URI or | ||||||
|  |           hyperlink to a resource that includes the required | ||||||
|  |           information. | ||||||
|  | 
 | ||||||
|  |        3. If requested by the Licensor, You must remove any of the | ||||||
|  |           information required by Section 3(a)(1)(A) to the extent | ||||||
|  |           reasonably practicable. | ||||||
|  | 
 | ||||||
|  |   b. ShareAlike. | ||||||
|  | 
 | ||||||
|  |      In addition to the conditions in Section 3(a), if You Share | ||||||
|  |      Adapted Material You produce, the following conditions also apply. | ||||||
|  | 
 | ||||||
|  |        1. The Adapter's License You apply must be a Creative Commons | ||||||
|  |           license with the same License Elements, this version or | ||||||
|  |           later, or a BY-SA Compatible License. | ||||||
|  | 
 | ||||||
|  |        2. You must include the text of, or the URI or hyperlink to, the | ||||||
|  |           Adapter's License You apply. You may satisfy this condition | ||||||
|  |           in any reasonable manner based on the medium, means, and | ||||||
|  |           context in which You Share Adapted Material. | ||||||
|  | 
 | ||||||
|  |        3. You may not offer or impose any additional or different terms | ||||||
|  |           or conditions on, or apply any Effective Technological | ||||||
|  |           Measures to, Adapted Material that restrict exercise of the | ||||||
|  |           rights granted under the Adapter's License You apply. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 4 -- Sui Generis Database Rights. | ||||||
|  | 
 | ||||||
|  | Where the Licensed Rights include Sui Generis Database Rights that | ||||||
|  | apply to Your use of the Licensed Material: | ||||||
|  | 
 | ||||||
|  |   a. for the avoidance of doubt, Section 2(a)(1) grants You the right | ||||||
|  |      to extract, reuse, reproduce, and Share all or a substantial | ||||||
|  |      portion of the contents of the database; | ||||||
|  | 
 | ||||||
|  |   b. if You include all or a substantial portion of the database | ||||||
|  |      contents in a database in which You have Sui Generis Database | ||||||
|  |      Rights, then the database in which You have Sui Generis Database | ||||||
|  |      Rights (but not its individual contents) is Adapted Material, | ||||||
|  | 
 | ||||||
|  |      including for purposes of Section 3(b); and | ||||||
|  |   c. You must comply with the conditions in Section 3(a) if You Share | ||||||
|  |      all or a substantial portion of the contents of the database. | ||||||
|  | 
 | ||||||
|  | For the avoidance of doubt, this Section 4 supplements and does not | ||||||
|  | replace Your obligations under this Public License where the Licensed | ||||||
|  | Rights include other Copyright and Similar Rights. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 5 -- Disclaimer of Warranties and Limitation of Liability. | ||||||
|  | 
 | ||||||
|  |   a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE | ||||||
|  |      EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS | ||||||
|  |      AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF | ||||||
|  |      ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, | ||||||
|  |      IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, | ||||||
|  |      WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR | ||||||
|  |      PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, | ||||||
|  |      ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT | ||||||
|  |      KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT | ||||||
|  |      ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. | ||||||
|  | 
 | ||||||
|  |   b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE | ||||||
|  |      TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, | ||||||
|  |      NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, | ||||||
|  |      INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, | ||||||
|  |      COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR | ||||||
|  |      USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN | ||||||
|  |      ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR | ||||||
|  |      DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR | ||||||
|  |      IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. | ||||||
|  | 
 | ||||||
|  |   c. The disclaimer of warranties and limitation of liability provided | ||||||
|  |      above shall be interpreted in a manner that, to the extent | ||||||
|  |      possible, most closely approximates an absolute disclaimer and | ||||||
|  |      waiver of all liability. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 6 -- Term and Termination. | ||||||
|  | 
 | ||||||
|  |   a. This Public License applies for the term of the Copyright and | ||||||
|  |      Similar Rights licensed here. However, if You fail to comply with | ||||||
|  |      this Public License, then Your rights under this Public License | ||||||
|  |      terminate automatically. | ||||||
|  | 
 | ||||||
|  |   b. Where Your right to use the Licensed Material has terminated under | ||||||
|  |      Section 6(a), it reinstates: | ||||||
|  | 
 | ||||||
|  |        1. automatically as of the date the violation is cured, provided | ||||||
|  |           it is cured within 30 days of Your discovery of the | ||||||
|  |           violation; or | ||||||
|  | 
 | ||||||
|  |        2. upon express reinstatement by the Licensor. | ||||||
|  | 
 | ||||||
|  |      For the avoidance of doubt, this Section 6(b) does not affect any | ||||||
|  |      right the Licensor may have to seek remedies for Your violations | ||||||
|  |      of this Public License. | ||||||
|  | 
 | ||||||
|  |   c. For the avoidance of doubt, the Licensor may also offer the | ||||||
|  |      Licensed Material under separate terms or conditions or stop | ||||||
|  |      distributing the Licensed Material at any time; however, doing so | ||||||
|  |      will not terminate this Public License. | ||||||
|  | 
 | ||||||
|  |   d. Sections 1, 5, 6, 7, and 8 survive termination of this Public | ||||||
|  |      License. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 7 -- Other Terms and Conditions. | ||||||
|  | 
 | ||||||
|  |   a. The Licensor shall not be bound by any additional or different | ||||||
|  |      terms or conditions communicated by You unless expressly agreed. | ||||||
|  | 
 | ||||||
|  |   b. Any arrangements, understandings, or agreements regarding the | ||||||
|  |      Licensed Material not stated herein are separate from and | ||||||
|  |      independent of the terms and conditions of this Public License. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | Section 8 -- Interpretation. | ||||||
|  | 
 | ||||||
|  |   a. For the avoidance of doubt, this Public License does not, and | ||||||
|  |      shall not be interpreted to, reduce, limit, restrict, or impose | ||||||
|  |      conditions on any use of the Licensed Material that could lawfully | ||||||
|  |      be made without permission under this Public License. | ||||||
|  | 
 | ||||||
|  |   b. To the extent possible, if any provision of this Public License is | ||||||
|  |      deemed unenforceable, it shall be automatically reformed to the | ||||||
|  |      minimum extent necessary to make it enforceable. If the provision | ||||||
|  |      cannot be reformed, it shall be severed from this Public License | ||||||
|  |      without affecting the enforceability of the remaining terms and | ||||||
|  |      conditions. | ||||||
|  | 
 | ||||||
|  |   c. No term or condition of this Public License will be waived and no | ||||||
|  |      failure to comply consented to unless expressly agreed to by the | ||||||
|  |      Licensor. | ||||||
|  | 
 | ||||||
|  |   d. Nothing in this Public License constitutes or may be interpreted | ||||||
|  |      as a limitation upon, or waiver of, any privileges and immunities | ||||||
|  |      that apply to the Licensor or You, including from the legal | ||||||
|  |      processes of any jurisdiction or authority. | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | ======================================================================= | ||||||
|  | 
 | ||||||
|  | Creative Commons is not a party to its public licenses. | ||||||
|  | Notwithstanding, Creative Commons may elect to apply one of its public | ||||||
|  | licenses to material it publishes and in those instances will be | ||||||
|  | considered the "Licensor." Except for the limited purpose of indicating | ||||||
|  | that material is shared under a Creative Commons public license or as | ||||||
|  | otherwise permitted by the Creative Commons policies published at | ||||||
|  | creativecommons.org/policies, Creative Commons does not authorize the | ||||||
|  | use of the trademark "Creative Commons" or any other trademark or logo | ||||||
|  | of Creative Commons without its prior written consent including, | ||||||
|  | without limitation, in connection with any unauthorized modifications | ||||||
|  | to any of its public licenses or any other arrangements, | ||||||
|  | understandings, or agreements concerning use of licensed material. For | ||||||
|  | the avoidance of doubt, this paragraph does not form part of the public | ||||||
|  | licenses. | ||||||
|  | 
 | ||||||
|  | Creative Commons may be contacted at creativecommons.org. | ||||||
|  | @ -0,0 +1,27 @@ | ||||||
|  | # go-connections maintainers file | ||||||
|  | # | ||||||
|  | # This file describes who runs the docker/go-connections project and how. | ||||||
|  | # This is a living document - if you see something out of date or missing, speak up! | ||||||
|  | # | ||||||
|  | # It is structured to be consumable by both humans and programs. | ||||||
|  | # To extract its contents programmatically, use any TOML-compliant parser. | ||||||
|  | # | ||||||
|  | # This file is compiled into the MAINTAINERS file in docker/opensource. | ||||||
|  | # | ||||||
|  | [Org] | ||||||
|  | 	[Org."Core maintainers"] | ||||||
|  | 		people = [ | ||||||
|  | 			"calavera", | ||||||
|  | 		] | ||||||
|  | 
 | ||||||
|  | [people] | ||||||
|  | 
 | ||||||
|  | # A reference list of all people associated with the project. | ||||||
|  | # All other sections should refer to people by their canonical key | ||||||
|  | # in the people section. | ||||||
|  | 
 | ||||||
|  | 	# ADD YOURSELF HERE IN ALPHABETICAL ORDER | ||||||
|  | 	[people.calavera] | ||||||
|  | 	Name = "David Calavera" | ||||||
|  | 	Email = "david.calavera@gmail.com" | ||||||
|  | 	GitHub = "calavera" | ||||||
|  | @ -0,0 +1,18 @@ | ||||||
|  | [](https://godoc.org/github.com/docker/go-units) | ||||||
|  | 
 | ||||||
|  | # Introduction | ||||||
|  | 
 | ||||||
|  | go-units is a library to transform human friendly measurements into machine friendly values. | ||||||
|  | 
 | ||||||
|  | ## Usage | ||||||
|  | 
 | ||||||
|  | See the [docs in godoc](https://godoc.org/github.com/docker/go-units) for examples and documentation. | ||||||
|  | 
 | ||||||
|  | ## Copyright and license | ||||||
|  | 
 | ||||||
|  | Copyright © 2015 Docker, Inc. All rights reserved, except as follows. Code | ||||||
|  | is released under the Apache 2.0 license. The README.md file, and files in the | ||||||
|  | "docs" folder are licensed under the Creative Commons Attribution 4.0 | ||||||
|  | International License under the terms and conditions set forth in the file | ||||||
|  | "LICENSE.docs". You may obtain a duplicate copy of the same license, titled | ||||||
|  | CC-BY-SA-4.0, at http://creativecommons.org/licenses/by/4.0/. | ||||||
|  | @ -0,0 +1,11 @@ | ||||||
|  | dependencies: | ||||||
|  |   post: | ||||||
|  |     # install golint | ||||||
|  |     - go get github.com/golang/lint/golint | ||||||
|  | 
 | ||||||
|  | test: | ||||||
|  |   pre: | ||||||
|  |     # run analysis before tests | ||||||
|  |     - go vet ./... | ||||||
|  |     - test -z "$(golint ./... | tee /dev/stderr)" | ||||||
|  |     - test -z "$(gofmt -s -l . | tee /dev/stderr)" | ||||||
|  | @ -0,0 +1,33 @@ | ||||||
|  | // Package units provides helper function to parse and print size and time units
 | ||||||
|  | // in human-readable format.
 | ||||||
|  | package units | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"time" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // HumanDuration returns a human-readable approximation of a duration
 | ||||||
|  | // (eg. "About a minute", "4 hours ago", etc.).
 | ||||||
|  | func HumanDuration(d time.Duration) string { | ||||||
|  | 	if seconds := int(d.Seconds()); seconds < 1 { | ||||||
|  | 		return "Less than a second" | ||||||
|  | 	} else if seconds < 60 { | ||||||
|  | 		return fmt.Sprintf("%d seconds", seconds) | ||||||
|  | 	} else if minutes := int(d.Minutes()); minutes == 1 { | ||||||
|  | 		return "About a minute" | ||||||
|  | 	} else if minutes < 60 { | ||||||
|  | 		return fmt.Sprintf("%d minutes", minutes) | ||||||
|  | 	} else if hours := int(d.Hours()); hours == 1 { | ||||||
|  | 		return "About an hour" | ||||||
|  | 	} else if hours < 48 { | ||||||
|  | 		return fmt.Sprintf("%d hours", hours) | ||||||
|  | 	} else if hours < 24*7*2 { | ||||||
|  | 		return fmt.Sprintf("%d days", hours/24) | ||||||
|  | 	} else if hours < 24*30*3 { | ||||||
|  | 		return fmt.Sprintf("%d weeks", hours/24/7) | ||||||
|  | 	} else if hours < 24*365*2 { | ||||||
|  | 		return fmt.Sprintf("%d months", hours/24/30) | ||||||
|  | 	} | ||||||
|  | 	return fmt.Sprintf("%d years", int(d.Hours())/24/365) | ||||||
|  | } | ||||||
|  | @ -0,0 +1,95 @@ | ||||||
|  | package units | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"regexp" | ||||||
|  | 	"strconv" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // See: http://en.wikipedia.org/wiki/Binary_prefix
 | ||||||
|  | const ( | ||||||
|  | 	// Decimal
 | ||||||
|  | 
 | ||||||
|  | 	KB = 1000 | ||||||
|  | 	MB = 1000 * KB | ||||||
|  | 	GB = 1000 * MB | ||||||
|  | 	TB = 1000 * GB | ||||||
|  | 	PB = 1000 * TB | ||||||
|  | 
 | ||||||
|  | 	// Binary
 | ||||||
|  | 
 | ||||||
|  | 	KiB = 1024 | ||||||
|  | 	MiB = 1024 * KiB | ||||||
|  | 	GiB = 1024 * MiB | ||||||
|  | 	TiB = 1024 * GiB | ||||||
|  | 	PiB = 1024 * TiB | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | type unitMap map[string]int64 | ||||||
|  | 
 | ||||||
|  | var ( | ||||||
|  | 	decimalMap = unitMap{"k": KB, "m": MB, "g": GB, "t": TB, "p": PB} | ||||||
|  | 	binaryMap  = unitMap{"k": KiB, "m": MiB, "g": GiB, "t": TiB, "p": PiB} | ||||||
|  | 	sizeRegex  = regexp.MustCompile(`^(\d+)([kKmMgGtTpP])?[bB]?$`) | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var decimapAbbrs = []string{"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"} | ||||||
|  | var binaryAbbrs = []string{"B", "KiB", "MiB", "GiB", "TiB", "PiB", "EiB", "ZiB", "YiB"} | ||||||
|  | 
 | ||||||
|  | // CustomSize returns a human-readable approximation of a size
 | ||||||
|  | // using custom format.
 | ||||||
|  | func CustomSize(format string, size float64, base float64, _map []string) string { | ||||||
|  | 	i := 0 | ||||||
|  | 	for size >= base { | ||||||
|  | 		size = size / base | ||||||
|  | 		i++ | ||||||
|  | 	} | ||||||
|  | 	return fmt.Sprintf(format, size, _map[i]) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // HumanSize returns a human-readable approximation of a size
 | ||||||
|  | // capped at 4 valid numbers (eg. "2.746 MB", "796 KB").
 | ||||||
|  | func HumanSize(size float64) string { | ||||||
|  | 	return CustomSize("%.4g %s", size, 1000.0, decimapAbbrs) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // BytesSize returns a human-readable size in bytes, kibibytes,
 | ||||||
|  | // mebibytes, gibibytes, or tebibytes (eg. "44kiB", "17MiB").
 | ||||||
|  | func BytesSize(size float64) string { | ||||||
|  | 	return CustomSize("%.4g %s", size, 1024.0, binaryAbbrs) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // FromHumanSize returns an integer from a human-readable specification of a
 | ||||||
|  | // size using SI standard (eg. "44kB", "17MB").
 | ||||||
|  | func FromHumanSize(size string) (int64, error) { | ||||||
|  | 	return parseSize(size, decimalMap) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // RAMInBytes parses a human-readable string representing an amount of RAM
 | ||||||
|  | // in bytes, kibibytes, mebibytes, gibibytes, or tebibytes and
 | ||||||
|  | // returns the number of bytes, or -1 if the string is unparseable.
 | ||||||
|  | // Units are case-insensitive, and the 'b' suffix is optional.
 | ||||||
|  | func RAMInBytes(size string) (int64, error) { | ||||||
|  | 	return parseSize(size, binaryMap) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Parses the human-readable size string into the amount it represents.
 | ||||||
|  | func parseSize(sizeStr string, uMap unitMap) (int64, error) { | ||||||
|  | 	matches := sizeRegex.FindStringSubmatch(sizeStr) | ||||||
|  | 	if len(matches) != 3 { | ||||||
|  | 		return -1, fmt.Errorf("invalid size: '%s'", sizeStr) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	size, err := strconv.ParseInt(matches[1], 10, 0) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return -1, err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	unitPrefix := strings.ToLower(matches[2]) | ||||||
|  | 	if mul, ok := uMap[unitPrefix]; ok { | ||||||
|  | 		size *= mul | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return size, nil | ||||||
|  | } | ||||||
|  | @ -0,0 +1,118 @@ | ||||||
|  | package units | ||||||
|  | 
 | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"strconv" | ||||||
|  | 	"strings" | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | // Ulimit is a human friendly version of Rlimit.
 | ||||||
|  | type Ulimit struct { | ||||||
|  | 	Name string | ||||||
|  | 	Hard int64 | ||||||
|  | 	Soft int64 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // Rlimit specifies the resource limits, such as max open files.
 | ||||||
|  | type Rlimit struct { | ||||||
|  | 	Type int    `json:"type,omitempty"` | ||||||
|  | 	Hard uint64 `json:"hard,omitempty"` | ||||||
|  | 	Soft uint64 `json:"soft,omitempty"` | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | const ( | ||||||
|  | 	// magic numbers for making the syscall
 | ||||||
|  | 	// some of these are defined in the syscall package, but not all.
 | ||||||
|  | 	// Also since Windows client doesn't get access to the syscall package, need to
 | ||||||
|  | 	//	define these here
 | ||||||
|  | 	rlimitAs         = 9 | ||||||
|  | 	rlimitCore       = 4 | ||||||
|  | 	rlimitCPU        = 0 | ||||||
|  | 	rlimitData       = 2 | ||||||
|  | 	rlimitFsize      = 1 | ||||||
|  | 	rlimitLocks      = 10 | ||||||
|  | 	rlimitMemlock    = 8 | ||||||
|  | 	rlimitMsgqueue   = 12 | ||||||
|  | 	rlimitNice       = 13 | ||||||
|  | 	rlimitNofile     = 7 | ||||||
|  | 	rlimitNproc      = 6 | ||||||
|  | 	rlimitRss        = 5 | ||||||
|  | 	rlimitRtprio     = 14 | ||||||
|  | 	rlimitRttime     = 15 | ||||||
|  | 	rlimitSigpending = 11 | ||||||
|  | 	rlimitStack      = 3 | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | var ulimitNameMapping = map[string]int{ | ||||||
|  | 	//"as":         rlimitAs, // Disabled since this doesn't seem usable with the way Docker inits a container.
 | ||||||
|  | 	"core":       rlimitCore, | ||||||
|  | 	"cpu":        rlimitCPU, | ||||||
|  | 	"data":       rlimitData, | ||||||
|  | 	"fsize":      rlimitFsize, | ||||||
|  | 	"locks":      rlimitLocks, | ||||||
|  | 	"memlock":    rlimitMemlock, | ||||||
|  | 	"msgqueue":   rlimitMsgqueue, | ||||||
|  | 	"nice":       rlimitNice, | ||||||
|  | 	"nofile":     rlimitNofile, | ||||||
|  | 	"nproc":      rlimitNproc, | ||||||
|  | 	"rss":        rlimitRss, | ||||||
|  | 	"rtprio":     rlimitRtprio, | ||||||
|  | 	"rttime":     rlimitRttime, | ||||||
|  | 	"sigpending": rlimitSigpending, | ||||||
|  | 	"stack":      rlimitStack, | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // ParseUlimit parses and returns a Ulimit from the specified string.
 | ||||||
|  | func ParseUlimit(val string) (*Ulimit, error) { | ||||||
|  | 	parts := strings.SplitN(val, "=", 2) | ||||||
|  | 	if len(parts) != 2 { | ||||||
|  | 		return nil, fmt.Errorf("invalid ulimit argument: %s", val) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if _, exists := ulimitNameMapping[parts[0]]; !exists { | ||||||
|  | 		return nil, fmt.Errorf("invalid ulimit type: %s", parts[0]) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	var ( | ||||||
|  | 		soft int64 | ||||||
|  | 		hard = &soft // default to soft in case no hard was set
 | ||||||
|  | 		temp int64 | ||||||
|  | 		err  error | ||||||
|  | 	) | ||||||
|  | 	switch limitVals := strings.Split(parts[1], ":"); len(limitVals) { | ||||||
|  | 	case 2: | ||||||
|  | 		temp, err = strconv.ParseInt(limitVals[1], 10, 64) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, err | ||||||
|  | 		} | ||||||
|  | 		hard = &temp | ||||||
|  | 		fallthrough | ||||||
|  | 	case 1: | ||||||
|  | 		soft, err = strconv.ParseInt(limitVals[0], 10, 64) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, err | ||||||
|  | 		} | ||||||
|  | 	default: | ||||||
|  | 		return nil, fmt.Errorf("too many limit value arguments - %s, can only have up to two, `soft[:hard]`", parts[1]) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if soft > *hard { | ||||||
|  | 		return nil, fmt.Errorf("ulimit soft limit must be less than or equal to hard limit: %d > %d", soft, *hard) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return &Ulimit{Name: parts[0], Soft: soft, Hard: *hard}, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // GetRlimit returns the RLimit corresponding to Ulimit.
 | ||||||
|  | func (u *Ulimit) GetRlimit() (*Rlimit, error) { | ||||||
|  | 	t, exists := ulimitNameMapping[u.Name] | ||||||
|  | 	if !exists { | ||||||
|  | 		return nil, fmt.Errorf("invalid ulimit name %s", u.Name) | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	return &Rlimit{Type: t, Soft: uint64(u.Soft), Hard: uint64(u.Hard)}, nil | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (u *Ulimit) String() string { | ||||||
|  | 	return fmt.Sprintf("%s=%d:%d", u.Name, u.Soft, u.Hard) | ||||||
|  | } | ||||||
|  | @ -63,7 +63,7 @@ func main() { | ||||||
| 		Cmd:   []string{"bash"}, | 		Cmd:   []string{"bash"}, | ||||||
| 		AttachStdin: true, | 		AttachStdin: true, | ||||||
| 		Tty:   true} | 		Tty:   true} | ||||||
| 	containerId, err := docker.CreateContainer(containerConfig, "foobar") | 	containerId, err := docker.CreateContainer(containerConfig, "foobar", nil) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Fatal(err) | 		log.Fatal(err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -8,9 +8,10 @@ import ( | ||||||
| 
 | 
 | ||||||
| // AuthConfig hold parameters for authenticating with the docker registry
 | // AuthConfig hold parameters for authenticating with the docker registry
 | ||||||
| type AuthConfig struct { | type AuthConfig struct { | ||||||
| 	Username string `json:"username,omitempty"` | 	Username      string `json:"username,omitempty"` | ||||||
| 	Password string `json:"password,omitempty"` | 	Password      string `json:"password,omitempty"` | ||||||
| 	Email    string `json:"email,omitempty"` | 	Email         string `json:"email,omitempty"` | ||||||
|  | 	RegistryToken string `json:"registrytoken,omitempty"` | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // encode the auth configuration struct into base64 for the X-Registry-Auth header
 | // encode the auth configuration struct into base64 for the X-Registry-Auth header
 | ||||||
|  |  | ||||||
|  | @ -21,8 +21,9 @@ const ( | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| var ( | var ( | ||||||
| 	ErrImageNotFound = errors.New("Image not found") | 	ErrImageNotFound     = errors.New("Image not found") | ||||||
| 	ErrNotFound      = errors.New("Not found") | 	ErrNotFound          = errors.New("Not found") | ||||||
|  | 	ErrConnectionRefused = errors.New("Cannot connect to the docker engine endpoint") | ||||||
| 
 | 
 | ||||||
| 	defaultTimeout = 30 * time.Second | 	defaultTimeout = 30 * time.Second | ||||||
| ) | ) | ||||||
|  | @ -100,6 +101,9 @@ func (client *DockerClient) doStreamRequest(method string, path string, in io.Re | ||||||
| 		if !strings.Contains(err.Error(), "connection refused") && client.TLSConfig == nil { | 		if !strings.Contains(err.Error(), "connection refused") && client.TLSConfig == nil { | ||||||
| 			return nil, fmt.Errorf("%v. Are you trying to connect to a TLS-enabled daemon without TLS?", err) | 			return nil, fmt.Errorf("%v. Are you trying to connect to a TLS-enabled daemon without TLS?", err) | ||||||
| 		} | 		} | ||||||
|  | 		if strings.Contains(err.Error(), "connection refused") { | ||||||
|  | 			return nil, ErrConnectionRefused | ||||||
|  | 		} | ||||||
| 		return nil, err | 		return nil, err | ||||||
| 	} | 	} | ||||||
| 	if resp.StatusCode == 404 { | 	if resp.StatusCode == 404 { | ||||||
|  | @ -184,7 +188,7 @@ func (client *DockerClient) InspectContainer(id string) (*ContainerInfo, error) | ||||||
| 	return info, nil | 	return info, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (client *DockerClient) CreateContainer(config *ContainerConfig, name string) (string, error) { | func (client *DockerClient) CreateContainer(config *ContainerConfig, name string, auth *AuthConfig) (string, error) { | ||||||
| 	data, err := json.Marshal(config) | 	data, err := json.Marshal(config) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", err | 		return "", err | ||||||
|  | @ -195,14 +199,22 @@ func (client *DockerClient) CreateContainer(config *ContainerConfig, name string | ||||||
| 		v.Set("name", name) | 		v.Set("name", name) | ||||||
| 		uri = fmt.Sprintf("%s?%s", uri, v.Encode()) | 		uri = fmt.Sprintf("%s?%s", uri, v.Encode()) | ||||||
| 	} | 	} | ||||||
| 	data, err = client.doRequest("POST", uri, data, nil) | 	headers := map[string]string{} | ||||||
|  | 	if auth != nil { | ||||||
|  | 		encoded_auth, err := auth.encode() | ||||||
|  | 		if err != nil { | ||||||
|  | 			return "", err | ||||||
|  | 		} | ||||||
|  | 		headers["X-Registry-Auth"] = encoded_auth | ||||||
|  | 	} | ||||||
|  | 	data, err = client.doRequest("POST", uri, data, headers) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", err | 		return "", err | ||||||
| 	} | 	} | ||||||
| 	result := &RespContainersCreate{} | 	result := &RespContainersCreate{} | ||||||
| 	err = json.Unmarshal(data, result) | 	err = json.Unmarshal(data, result) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", err | 		return "", fmt.Errorf(string(data)) | ||||||
| 	} | 	} | ||||||
| 	return result.Id, nil | 	return result.Id, nil | ||||||
| } | } | ||||||
|  | @ -501,6 +513,9 @@ func (client *DockerClient) StartMonitorEvents(cb Callback, ec chan error, args | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (client *DockerClient) StopAllMonitorEvents() { | func (client *DockerClient) StopAllMonitorEvents() { | ||||||
|  | 	if client.eventStopChan == nil { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
| 	close(client.eventStopChan) | 	close(client.eventStopChan) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -648,17 +663,9 @@ func (client *DockerClient) InspectImage(id string) (*ImageInfo, error) { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (client *DockerClient) LoadImage(reader io.Reader) error { | func (client *DockerClient) LoadImage(reader io.Reader) error { | ||||||
| 	data, err := ioutil.ReadAll(reader) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	uri := fmt.Sprintf("/%s/images/load", APIVersion) | 	uri := fmt.Sprintf("/%s/images/load", APIVersion) | ||||||
| 	_, err = client.doRequest("POST", uri, data, nil) | 	_, err := client.doStreamRequest("POST", uri, reader, nil) | ||||||
| 	if err != nil { | 	return err | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 	return nil |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (client *DockerClient) RemoveContainer(id string, force, volumes bool) error { | func (client *DockerClient) RemoveContainer(id string, force, volumes bool) error { | ||||||
|  |  | ||||||
|  | @ -27,7 +27,7 @@ func main() { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	containerConfig := &dockerclient.ContainerConfig{Image: "busybox", Cmd: []string{"sh"}} | 	containerConfig := &dockerclient.ContainerConfig{Image: "busybox", Cmd: []string{"sh"}} | ||||||
| 	containerId, err := docker.CreateContainer(containerConfig, "") | 	containerId, err := docker.CreateContainer(containerConfig, "", nil) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Fatal(err) | 		log.Fatal(err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ type Client interface { | ||||||
| 	ListContainers(all, size bool, filters string) ([]Container, error) | 	ListContainers(all, size bool, filters string) ([]Container, error) | ||||||
| 	InspectContainer(id string) (*ContainerInfo, error) | 	InspectContainer(id string) (*ContainerInfo, error) | ||||||
| 	InspectImage(id string) (*ImageInfo, error) | 	InspectImage(id string) (*ImageInfo, error) | ||||||
| 	CreateContainer(config *ContainerConfig, name string) (string, error) | 	CreateContainer(config *ContainerConfig, name string, authConfig *AuthConfig) (string, error) | ||||||
| 	ContainerLogs(id string, options *LogOptions) (io.ReadCloser, error) | 	ContainerLogs(id string, options *LogOptions) (io.ReadCloser, error) | ||||||
| 	ContainerChanges(id string) ([]*ContainerChanges, error) | 	ContainerChanges(id string) ([]*ContainerChanges, error) | ||||||
| 	ExecCreate(config *ExecConfig) (string, error) | 	ExecCreate(config *ExecConfig) (string, error) | ||||||
|  |  | ||||||
|  | @ -35,8 +35,8 @@ func (client *MockClient) InspectImage(id string) (*dockerclient.ImageInfo, erro | ||||||
| 	return args.Get(0).(*dockerclient.ImageInfo), args.Error(1) | 	return args.Get(0).(*dockerclient.ImageInfo), args.Error(1) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (client *MockClient) CreateContainer(config *dockerclient.ContainerConfig, name string) (string, error) { | func (client *MockClient) CreateContainer(config *dockerclient.ContainerConfig, name string, authConfig *dockerclient.AuthConfig) (string, error) { | ||||||
| 	args := client.Mock.Called(config, name) | 	args := client.Mock.Called(config, name, authConfig) | ||||||
| 	return args.String(0), args.Error(1) | 	return args.String(0), args.Error(1) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ func (client *NopClient) InspectImage(id string) (*dockerclient.ImageInfo, error | ||||||
| 	return nil, ErrNoEngine | 	return nil, ErrNoEngine | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (client *NopClient) CreateContainer(config *dockerclient.ContainerConfig, name string) (string, error) { | func (client *NopClient) CreateContainer(config *dockerclient.ContainerConfig, name string, authConfig *dockerclient.AuthConfig) (string, error) { | ||||||
| 	return "", ErrNoEngine | 	return "", ErrNoEngine | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import ( | ||||||
| 	"io" | 	"io" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
| 	"github.com/docker/docker/pkg/units" | 	"github.com/docker/go-units" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| type ContainerConfig struct { | type ContainerConfig struct { | ||||||
|  | @ -252,17 +252,31 @@ type Port struct { | ||||||
| 	Type        string | 	Type        string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | type EndpointSettings struct { | ||||||
|  | 	EndpointID          string | ||||||
|  | 	Gateway             string | ||||||
|  | 	IPAddress           string | ||||||
|  | 	IPPrefixLen         int | ||||||
|  | 	IPv6Gateway         string | ||||||
|  | 	GlobalIPv6Address   string | ||||||
|  | 	GlobalIPv6PrefixLen int | ||||||
|  | 	MacAddress          string | ||||||
|  | } | ||||||
|  | 
 | ||||||
| type Container struct { | type Container struct { | ||||||
| 	Id         string | 	Id              string | ||||||
| 	Names      []string | 	Names           []string | ||||||
| 	Image      string | 	Image           string | ||||||
| 	Command    string | 	Command         string | ||||||
| 	Created    int64 | 	Created         int64 | ||||||
| 	Status     string | 	Status          string | ||||||
| 	Ports      []Port | 	Ports           []Port | ||||||
| 	SizeRw     int64 | 	SizeRw          int64 | ||||||
| 	SizeRootFs int64 | 	SizeRootFs      int64 | ||||||
| 	Labels     map[string]string | 	Labels          map[string]string | ||||||
|  | 	NetworkSettings struct { | ||||||
|  | 		Networks map[string]EndpointSettings | ||||||
|  | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type Event struct { | type Event struct { | ||||||
|  | @ -502,10 +516,12 @@ type NetworkResource struct { | ||||||
| 	Driver     string | 	Driver     string | ||||||
| 	IPAM       IPAM | 	IPAM       IPAM | ||||||
| 	Containers map[string]EndpointResource | 	Containers map[string]EndpointResource | ||||||
|  | 	Options    map[string]string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| //EndpointResource contains network resources allocated and usd for a container in a network
 | // EndpointResource contains network resources allocated and used for a container in a network
 | ||||||
| type EndpointResource struct { | type EndpointResource struct { | ||||||
|  | 	Name        string | ||||||
| 	EndpointID  string | 	EndpointID  string | ||||||
| 	MacAddress  string | 	MacAddress  string | ||||||
| 	IPv4Address string | 	IPv4Address string | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue