From 6e17f4cf0eab6b4495c3f49cc3957c8bf9aecb16 Mon Sep 17 00:00:00 2001 From: Daniel Santana Date: Mon, 23 Apr 2018 14:07:40 -0300 Subject: [PATCH 001/195] Add link to minikube repository for Void Linux --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 07135e349f17..67b2c4cde3d4 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,7 @@ done * [Linux] * [Arch Linux AUR](https://aur.archlinux.org/packages/minikube/) * [Fedora/CentOS/Red Hat COPR](https://copr.fedorainfracloud.org/coprs/antonpatsev/minikube-rpm/) + * [Void Linux](https://github.com/voidlinux/void-packages/tree/master/srcpkgs/minikube/template) * [Windows] [Chocolatey](https://chocolatey.org/packages/Minikube) ### Minikube Version Management From 14933ed669e8555cfa5a5de7741ccf2f71a3eac2 Mon Sep 17 00:00:00 2001 From: Daniel Santana Date: Sat, 16 Jun 2018 01:50:40 -0300 Subject: [PATCH 002/195] Update Void Linux package URL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 67b2c4cde3d4..3360d0acf283 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ done * [Linux] * [Arch Linux AUR](https://aur.archlinux.org/packages/minikube/) * [Fedora/CentOS/Red Hat COPR](https://copr.fedorainfracloud.org/coprs/antonpatsev/minikube-rpm/) - * [Void Linux](https://github.com/voidlinux/void-packages/tree/master/srcpkgs/minikube/template) + * [Void Linux](https://github.com/void-linux/void-packages/tree/master/srcpkgs/minikube/template) * [Windows] [Chocolatey](https://chocolatey.org/packages/Minikube) ### Minikube Version Management From 27ab3f594c8ab991c280e7592dc5316a03274490 Mon Sep 17 00:00:00 2001 From: Matt Rickard Date: Tue, 31 Jul 2018 10:19:55 -0700 Subject: [PATCH 003/195] Remove r2d4 from maintainers --- MAINTAINERS | 1 - 1 file changed, 1 deletion(-) diff --git a/MAINTAINERS b/MAINTAINERS index b39fe9a508f8..731a0c17988d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2,4 +2,3 @@ Dan Lorenc (@dlorenc) Lucas Käldström (@luxas) Aaron Prindle (@aaron-prindle) Jimmi Dyson (@jimmidyson) -Matt Rickard (@r2d4) From 51b35b2ea286178458db86b08f063b76cc8a31bf Mon Sep 17 00:00:00 2001 From: Matt Rickard Date: Tue, 31 Jul 2018 10:20:17 -0700 Subject: [PATCH 004/195] Add balint to maintainers --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 731a0c17988d..723df07dfc48 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2,3 +2,4 @@ Dan Lorenc (@dlorenc) Lucas Käldström (@luxas) Aaron Prindle (@aaron-prindle) Jimmi Dyson (@jimmidyson) +Balint Pato (@balopat) From 5a78ac92f6660b8d27b11f432f9554c0eca6f48f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Apeland?= Date: Fri, 27 Jul 2018 08:41:04 +0200 Subject: [PATCH 005/195] Change Linux install method Previously, files installed to /usr/local/bin/ would be owned by the user executing the command, not root. This change makes these installed files owned by root instead. Improving security is the goal. --- README.md | 6 +++--- cmd/util/util.go | 2 +- docs/drivers.md | 10 +++++++--- hack/jenkins/release_github_page.sh | 8 ++++---- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 2a3e4d9e0290..3ae54ed4a3fc 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ brew cask install minikube ### Linux ```shell -curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ +curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube ``` ### Windows @@ -42,8 +42,8 @@ Install manually: Download the [minikube-windows-amd64.exe](https://storage.goog ### Linux Continuous Integration without VM Support Example with kubectl installation: ```shell -curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube -curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl +curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube +curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo cp minikube /usr/local/bin/ && rm minikube export MINIKUBE_WANTUPDATENOTIFICATION=false export MINIKUBE_WANTREPORTERRORPROMPT=false diff --git a/cmd/util/util.go b/cmd/util/util.go index b526709c9ec2..405d43ff57af 100644 --- a/cmd/util/util.go +++ b/cmd/util/util.go @@ -191,7 +191,7 @@ func MaybePrintKubectlDownloadMsg(goos string, out io.Writer) { } verb := "run" - installInstructions := "curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/%s/bin/%s/%s/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/" + installInstructions := "curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/%s/bin/%s/%s/kubectl && chmod +x kubectl && sudo cp kubectl /usr/local/bin/ && rm kubectl" if goos == "windows" { verb = "do" installInstructions = `download kubectl from: diff --git a/docs/drivers.md b/docs/drivers.md index affc768c9a75..5f1cc2245b18 100644 --- a/docs/drivers.md +++ b/docs/drivers.md @@ -41,7 +41,10 @@ $ newgrp libvirt Then install the driver itself: ```shell -curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 && chmod +x docker-machine-driver-kvm2 && sudo mv docker-machine-driver-kvm2 /usr/local/bin/ +curl -Lo docker-machine-driver-kvm2 https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2 \ +&& chmod +x docker-machine-driver-kvm2 \ +&& sudo cp docker-machine-driver-kvm2 /usr/local/bin/ \ +&& rm docker-machine-driver-kvm2 ``` To use the driver you would do: @@ -85,9 +88,10 @@ It is built from the minikube source tree, and uses [moby/hyperkit](http://githu To install the hyperkit driver: ```shell -curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-hyperkit \ +curl -Lo docker-machine-driver-hyperkit https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-hyperkit \ && chmod +x docker-machine-driver-hyperkit \ -&& sudo mv docker-machine-driver-hyperkit /usr/local/bin/ \ +&& sudo cp docker-machine-driver-hyperkit /usr/local/bin/ \ +&& rm docker-machine-driver-hyperkit \ && sudo chown root:wheel /usr/local/bin/docker-machine-driver-hyperkit \ && sudo chmod u+s /usr/local/bin/docker-machine-driver-hyperkit ``` diff --git a/hack/jenkins/release_github_page.sh b/hack/jenkins/release_github_page.sh index 03856145215d..282eee88ab86 100755 --- a/hack/jenkins/release_github_page.sh +++ b/hack/jenkins/release_github_page.sh @@ -49,17 +49,17 @@ Minikube is distributed in binary form for Linux, OSX, and Windows systems for t ## Installation ### OSX \`\`\`shell -curl -Lo minikube https://storage.googleapis.com/minikube/releases/${TAGNAME}/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ +curl -Lo minikube https://storage.googleapis.com/minikube/releases/${TAGNAME}/minikube-darwin-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube \`\`\` -Feel free to leave off the \`\`\`sudo mv minikube /usr/local/bin\`\`\` if you would like to add minikube to your path manually. +Feel free to leave off \`\`\`sudo cp minikube /usr/local/bin/ && rm minikube\`\`\` if you would like to add minikube to your path manually. Or you can install via homebrew with \`brew cask install minikube\`. ### Linux \`\`\`shell -curl -Lo minikube https://storage.googleapis.com/minikube/releases/${TAGNAME}/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/ +curl -Lo minikube https://storage.googleapis.com/minikube/releases/${TAGNAME}/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube \`\`\` -Feel free to leave off the \`\`\`sudo mv minikube /usr/local/bin\`\`\` if you would like to add minikube to your path manually. +Feel free to leave off \`\`\`sudo cp minikube /usr/local/bin/ && rm minikube\`\`\` if you would like to add minikube to your path manually. ### Debian Package (.deb) [Experimental] Download the \`minikube_${DEB_VERSION}.deb\` file, and install it using \`sudo dpkg -i minikube_$(DEB_VERSION).deb\` From 005c6b18613e7a4c5d516b22e5c9d4efac00933d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Asbj=C3=B8rn=20Apeland?= Date: Wed, 1 Aug 2018 12:09:31 +0200 Subject: [PATCH 006/195] Fix typo There was a typo in 5a78ac92f6660b8d27b11f432f9554c0eca6f48f. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3ae54ed4a3fc..974d9b655086 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Install manually: Download the [minikube-windows-amd64.exe](https://storage.goog Example with kubectl installation: ```shell curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube -curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo cp minikube /usr/local/bin/ && rm minikube +curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo cp kubectl /usr/local/bin/ && rm kubectl export MINIKUBE_WANTUPDATENOTIFICATION=false export MINIKUBE_WANTREPORTERRORPROMPT=false From 1080d813c069a762218fb75f38e698f7a5db4397 Mon Sep 17 00:00:00 2001 From: Matt Rickard Date: Tue, 31 Jul 2018 12:28:06 -0700 Subject: [PATCH 007/195] remove r2d4 from brew PR comment --- hack/jenkins/release_update_installers.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hack/jenkins/release_update_installers.sh b/hack/jenkins/release_update_installers.sh index d7f0087e1019..9211b578498d 100755 --- a/hack/jenkins/release_update_installers.sh +++ b/hack/jenkins/release_update_installers.sh @@ -81,7 +81,7 @@ EOF "title": "Update minikube to ${REPLACE_PKG_VERSION}", "head": "minikube-bot:${REPLACE_PKG_VERSION}", "base": "master", - "body": "cc @r2d4" + "body": "cc @balopat" } EOF From 9aa698d2d084a6e2839aed4ff6b1e31e67a6060d Mon Sep 17 00:00:00 2001 From: Matt Rickard Date: Fri, 3 Aug 2018 13:31:25 -0700 Subject: [PATCH 008/195] update owners --- OWNERS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OWNERS b/OWNERS index 3697642ce559..bfc1b5f76681 100644 --- a/OWNERS +++ b/OWNERS @@ -1,10 +1,10 @@ reviewers: - dlorenc - aaron-prindle - - r2d4 + - balopat approvers: - dlorenc - luxas - aaron-prindle - jimmidyson - - r2d4 + - balopat From 685b7925cfc1519175e237230da929f83d58d7e5 Mon Sep 17 00:00:00 2001 From: RA489 Date: Mon, 6 Aug 2018 13:40:40 +0530 Subject: [PATCH 009/195] Create LICENSE --- logo/LICENSE | 1 + 1 file changed, 1 insertion(+) create mode 100644 logo/LICENSE diff --git a/logo/LICENSE b/logo/LICENSE new file mode 100644 index 000000000000..317a9673e6ae --- /dev/null +++ b/logo/LICENSE @@ -0,0 +1 @@ +# The Minikube logo files are licensed under a choice of either Apache-2.0 or CC-BY-4.0 (Creative Commons Attribution 4.0 International). From 477ece9a5069cdabc11980c54f5ffb82b3eee529 Mon Sep 17 00:00:00 2001 From: Viktor Safronov Date: Mon, 6 Aug 2018 13:55:55 +0300 Subject: [PATCH 010/195] Revert "Remove untainting logic." This reverts a part of commit eec47aaa714411df451b111e4a3b8ce7c08674a0. --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 8 +++ pkg/minikube/bootstrapper/kubeadm/util.go | 56 +++++++++++++++++++- 2 files changed, 63 insertions(+), 1 deletion(-) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index d6270baadecc..494311ff1e4d 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -135,6 +135,14 @@ func (k *KubeadmBootstrapper) StartCluster(k8s config.KubernetesConfig) error { return errors.Wrapf(err, "kubeadm init error %s running command: %s", b.String(), out) } + if version.LT(semver.MustParse("1.10.0-alpha.0")) { + //TODO(r2d4): get rid of global here + master = k8s.NodeName + if err := util.RetryAfter(200, unmarkMaster, time.Second*1); err != nil { + return errors.Wrap(err, "timed out waiting to unmark master") + } + } + if err := util.RetryAfter(100, elevateKubeSystemPrivileges, time.Millisecond*500); err != nil { return errors.Wrap(err, "timed out waiting to elevate kube-system RBAC privileges") } diff --git a/pkg/minikube/bootstrapper/kubeadm/util.go b/pkg/minikube/bootstrapper/kubeadm/util.go index 6cec153af1f0..2eb59d74e4d7 100644 --- a/pkg/minikube/bootstrapper/kubeadm/util.go +++ b/pkg/minikube/bootstrapper/kubeadm/util.go @@ -18,24 +18,78 @@ package kubeadm import ( "bytes" + "encoding/json" "html/template" "strings" "github.com/golang/glog" "github.com/pkg/errors" + clientv1 "k8s.io/api/core/v1" rbacv1beta1 "k8s.io/api/rbac/v1beta1" + apierrs "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/service" "k8s.io/minikube/pkg/util" ) const ( - rbacName = "minikube-rbac" + masterTaint = "node-role.kubernetes.io/master" + rbacName = "minikube-rbac" ) +var master = "" + +func unmarkMaster() error { + k8s := service.K8s + client, err := k8s.GetCoreClient() + if err != nil { + return errors.Wrap(err, "getting core client") + } + n, err := client.Nodes().Get(master, v1.GetOptions{}) + if err != nil { + return errors.Wrapf(err, "getting node %s", master) + } + + oldData, err := json.Marshal(n) + if err != nil { + return errors.Wrap(err, "json marshalling data before patch") + } + + newTaints := []clientv1.Taint{} + for _, taint := range n.Spec.Taints { + if taint.Key == masterTaint { + continue + } + + newTaints = append(newTaints, taint) + } + n.Spec.Taints = newTaints + + newData, err := json.Marshal(n) + if err != nil { + return errors.Wrapf(err, "json marshalling data after patch") + } + + patchBytes, err := strategicpatch.CreateTwoWayMergePatch(oldData, newData, clientv1.Node{}) + if err != nil { + return errors.Wrap(err, "creating strategic patch") + } + + if _, err := client.Nodes().Patch(n.Name, types.StrategicMergePatchType, patchBytes); err != nil { + if apierrs.IsConflict(err) { + return errors.Wrap(err, "strategic patch conflict") + } + return errors.Wrap(err, "applying strategic patch") + } + + return nil +} + // elevateKubeSystemPrivileges gives the kube-system service account // cluster admin privileges to work with RBAC. func elevateKubeSystemPrivileges() error { From d203cf41011af7b9a4418c1e1e2a5454029b341c Mon Sep 17 00:00:00 2001 From: Nate Bessette <195717+frickenate@users.noreply.github.com> Date: Sat, 4 Aug 2018 01:33:20 -0400 Subject: [PATCH 011/195] Replace 9p mount calls to syscall.Rename with os.Rename, which is capable of renaming on top of existing files. --- third_party/go9p/ufs_darwin.go | 2 +- third_party/go9p/ufs_linux.go | 2 +- third_party/go9p/ufs_windows.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/go9p/ufs_darwin.go b/third_party/go9p/ufs_darwin.go index 159c46000c53..b24f2af67ef6 100644 --- a/third_party/go9p/ufs_darwin.go +++ b/third_party/go9p/ufs_darwin.go @@ -194,7 +194,7 @@ func (u *Ufs) Wstat(req *SrvReq) { destpath = path.Join(fiddir, dir.Name) fmt.Printf("rel results in %s\n", destpath) } - err := syscall.Rename(fid.path, destpath) + err := os.Rename(fid.path, destpath) fmt.Printf("rename %s to %s gets %v\n", fid.path, destpath, err) if err != nil { req.RespondError(toError(err)) diff --git a/third_party/go9p/ufs_linux.go b/third_party/go9p/ufs_linux.go index 03210c377dfe..c2fd46ef8c64 100644 --- a/third_party/go9p/ufs_linux.go +++ b/third_party/go9p/ufs_linux.go @@ -190,7 +190,7 @@ func (u *Ufs) Wstat(req *SrvReq) { destpath = path.Join(fiddir, dir.Name) fmt.Printf("rel results in %s\n", destpath) } - err := syscall.Rename(fid.path, destpath) + err := os.Rename(fid.path, destpath) fmt.Printf("rename %s to %s gets %v\n", fid.path, destpath, err) if err != nil { req.RespondError(toError(err)) diff --git a/third_party/go9p/ufs_windows.go b/third_party/go9p/ufs_windows.go index b4f761c4fc01..a2ee9a1e025d 100644 --- a/third_party/go9p/ufs_windows.go +++ b/third_party/go9p/ufs_windows.go @@ -204,7 +204,7 @@ func (u *Ufs) Wstat(req *SrvReq) { destpath = path.Join(fiddir, dir.Name) fmt.Printf("rel results in %s\n", destpath) } - err := syscall.Rename(fid.path, destpath) + err := os.Rename(fid.path, destpath) fmt.Printf("rename %s to %s gets %v\n", fid.path, destpath, err) if err != nil { req.RespondError(toError(err)) From 616c3e5538c8ce8da78cadea2807d4cb84897f46 Mon Sep 17 00:00:00 2001 From: Raghavendra Talur Date: Mon, 6 Aug 2018 10:31:11 -0400 Subject: [PATCH 012/195] readme: update the script to match executable path Signed-off-by: Raghavendra Talur --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 974d9b655086..c0e656b9a889 100644 --- a/README.md +++ b/README.md @@ -53,11 +53,11 @@ mkdir -p $HOME/.kube touch $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config -sudo -E ./minikube start --vm-driver=none +sudo -E minikube start --vm-driver=none # this for loop waits until kubectl can access the api server that Minikube has created for i in {1..150}; do # timeout for 5 minutes - ./kubectl get po &> /dev/null + kubectl get po &> /dev/null if [ $? -ne 1 ]; then break fi From 4159e98fe7751d4bceafcc5e90d391ee36239a7b Mon Sep 17 00:00:00 2001 From: wangxy518 <40482095+wangxy518@users.noreply.github.com> Date: Fri, 10 Aug 2018 09:41:05 +0800 Subject: [PATCH 013/195] Update logo_white.svg --- logo/logo_white.svg | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/logo/logo_white.svg b/logo/logo_white.svg index 83618df3a46a..c932459ae6aa 100644 --- a/logo/logo_white.svg +++ b/logo/logo_white.svg @@ -1,6 +1,6 @@ - - + + minikube Created with Sketch. @@ -20,4 +20,4 @@ - \ No newline at end of file + From ea451976f753326d9ee6b0d3e76e67041c74c107 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Thu, 9 Aug 2018 23:47:38 -0700 Subject: [PATCH 014/195] kvm2 driver: fixed private network creation and setup --- pkg/drivers/kvm/network.go | 47 ++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 510d26444805..63d0ffdfa72d 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -43,11 +43,15 @@ const networkTmpl = ` ` +// setupNetwork ensures that the network with `name` is started (active) +// and has the autostart feature set. func setupNetwork(conn *libvirt.Connect, name string) error { - n, err := conn.LookupNetworkByName(defaultNetworkName) + n, err := conn.LookupNetworkByName(name) if err != nil { return errors.Wrapf(err, "checking network %s", name) } + + // always ensure autostart is set on the network autostart, err := n.GetAutostart() if err != nil { return errors.Wrapf(err, "checking network %s autostart", name) @@ -58,6 +62,7 @@ func setupNetwork(conn *libvirt.Connect, name string) error { } } + // always ensure the network is started (active) active, err := n.IsActive() if err != nil { return errors.Wrapf(err, "checking network status for %s", name) @@ -67,8 +72,8 @@ func setupNetwork(conn *libvirt.Connect, name string) error { return errors.Wrapf(err, "starting network %s", name) } } - return nil + return nil } func (d *Driver) createNetwork() error { @@ -85,31 +90,39 @@ func (d *Driver) createNetwork() error { } defer conn.Close() - tmpl := template.Must(template.New("network").Parse(networkTmpl)) - var networkXML bytes.Buffer - if err := tmpl.Execute(&networkXML, d); err != nil { - return errors.Wrap(err, "executing network template") - } + // network: default // Start the default network + // It is assumed that the libvirt/kvm installation has already created this network log.Infof("Setting up network %s", defaultNetworkName) if err := setupNetwork(conn, defaultNetworkName); err != nil { return err } - //Check if network already exists - if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err == nil { - return nil - } + // network: private - network, err := conn.NetworkDefineXML(networkXML.String()) - if err != nil { - return errors.Wrapf(err, "defining network from xml: %s", networkXML.String()) - } - if err := network.Create(); err != nil { - return errors.Wrapf(err, "creating network %s", d.PrivateNetwork) + // Only create the private network if it does not already exist + if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err != nil { + // create the XML for the private network from our networkTmpl + tmpl := template.Must(template.New("network").Parse(networkTmpl)) + var networkXML bytes.Buffer + if err := tmpl.Execute(&networkXML, d); err != nil { + return errors.Wrap(err, "executing network template") + } + + // define the network using our template + network, err := conn.NetworkDefineXML(networkXML.String()) + if err != nil { + return errors.Wrapf(err, "defining network from xml: %s", networkXML.String()) + } + + // and finally create it + if err := network.Create(); err != nil { + return errors.Wrapf(err, "creating network %s", d.PrivateNetwork) + } } + // Start the private network log.Infof("Setting up network %s", d.PrivateNetwork) if err := setupNetwork(conn, d.PrivateNetwork); err != nil { return err From 943a786c0eef255bbb2663ff7934920d297d3eef Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Fri, 10 Aug 2018 12:30:35 -0700 Subject: [PATCH 015/195] kvm2 driver: separated activating and creating of networks --- pkg/drivers/kvm/domain.go | 20 +++++++++++++++---- pkg/drivers/kvm/kvm.go | 6 ++++++ pkg/drivers/kvm/network.go | 40 ++++++++++++++++++++++++-------------- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index ad361cd3d58c..b1071a08e0ab 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -152,9 +152,20 @@ func closeDomain(dom *libvirt.Domain, conn *libvirt.Connect) error { } func (d *Driver) createDomain() (*libvirt.Domain, error) { + // create random MAC addresses first for our NICs + // TODO: we use the same MAC addresses for both NICs + if d.MAC == "" { + mac, err := randomMAC() + if err != nil { + return nil, errors.Wrap(err, "generating mac address") + } + d.MAC = mac.String() + } + + // create the XML for the domain using our domainTmpl template tmpl := template.Must(template.New("domain").Parse(domainTmpl)) - var domainXml bytes.Buffer - if err := tmpl.Execute(&domainXml, d); err != nil { + var domainXML bytes.Buffer + if err := tmpl.Execute(&domainXML, d); err != nil { return nil, errors.Wrap(err, "executing domain xml") } @@ -164,9 +175,10 @@ func (d *Driver) createDomain() (*libvirt.Domain, error) { } defer conn.Close() - dom, err := conn.DomainDefineXML(domainXml.String()) + // define the domain in libvirt using the generated XML + dom, err := conn.DomainDefineXML(domainXML.String()) if err != nil { - return nil, errors.Wrapf(err, "Error defining domain xml: %s", domainXml.String()) + return nil, errors.Wrapf(err, "Error defining domain xml: %s", domainXML.String()) } return dom, nil diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 2e30ef7efe25..221416621877 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -211,6 +211,12 @@ func (d *Driver) Restart() error { } func (d *Driver) Start() error { + log.Info("Ensuring networks are active...") + err := d.ensureNetwork() + if err != nil { + return errors.Wrap(err, "ensuring active networks") + } + log.Info("Getting domain xml...") dom, conn, err := d.getDomain() if err != nil { diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 63d0ffdfa72d..16a133ad77e0 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -76,14 +76,8 @@ func setupNetwork(conn *libvirt.Connect, name string) error { return nil } -func (d *Driver) createNetwork() error { - if d.MAC == "" { - mac, err := randomMAC() - if err != nil { - return errors.Wrap(err, "generating mac address") - } - d.MAC = mac.String() - } +// ensureNetwork is called on start of the VM +func (d *Driver) ensureNetwork() error { conn, err := getConnection() if err != nil { return errors.Wrap(err, "getting libvirt connection") @@ -94,13 +88,35 @@ func (d *Driver) createNetwork() error { // Start the default network // It is assumed that the libvirt/kvm installation has already created this network - log.Infof("Setting up network %s", defaultNetworkName) + log.Infof("Ensuring network %s is active", defaultNetworkName) if err := setupNetwork(conn, defaultNetworkName); err != nil { return err } // network: private + // Start the private network + log.Infof("Ensuring network %s is active", d.PrivateNetwork) + if err := setupNetwork(conn, d.PrivateNetwork); err != nil { + return err + } + + return nil +} + +// createNetwork is called during creation of the VM only (and not on start) +func (d *Driver) createNetwork() error { + conn, err := getConnection() + if err != nil { + return errors.Wrap(err, "getting libvirt connection") + } + defer conn.Close() + + // network: default + // It is assumed that the libvirt/kvm installation has already created this network + + // network: private + // Only create the private network if it does not already exist if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err != nil { // create the XML for the private network from our networkTmpl @@ -122,12 +138,6 @@ func (d *Driver) createNetwork() error { } } - // Start the private network - log.Infof("Setting up network %s", d.PrivateNetwork) - if err := setupNetwork(conn, d.PrivateNetwork); err != nil { - return err - } - return nil } From a93686bfc70eac8e8b20ae7138ab5c28aa7e81cd Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Fri, 10 Aug 2018 13:07:01 -0700 Subject: [PATCH 016/195] kvm2 driver: generate separate random MACs for default and private network NICs --- pkg/drivers/kvm/domain.go | 11 +++++++++-- pkg/drivers/kvm/kvm.go | 4 ++++ pkg/drivers/kvm/network.go | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index b1071a08e0ab..71f984e29cf3 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -62,7 +62,7 @@ const domainTmpl = ` - + @@ -153,7 +153,6 @@ func closeDomain(dom *libvirt.Domain, conn *libvirt.Connect) error { func (d *Driver) createDomain() (*libvirt.Domain, error) { // create random MAC addresses first for our NICs - // TODO: we use the same MAC addresses for both NICs if d.MAC == "" { mac, err := randomMAC() if err != nil { @@ -162,6 +161,14 @@ func (d *Driver) createDomain() (*libvirt.Domain, error) { d.MAC = mac.String() } + if d.PrivateMAC == "" { + mac, err := randomMAC() + if err != nil { + return nil, errors.Wrap(err, "generating mac address") + } + d.PrivateMAC = mac.String() + } + // create the XML for the domain using our domainTmpl template tmpl := template.Must(template.New("domain").Parse(domainTmpl)) var domainXML bytes.Buffer diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 221416621877..9d93223d3e25 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -66,6 +66,10 @@ type Driver struct { // If empty, a random MAC will be generated. MAC string + // The randomly generated MAC Address for the NIC attached to the private network + // If empty, a random MAC will be generated. + PrivateMAC string + // Whether to passthrough GPU devices from the host to the VM. GPU bool diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 16a133ad77e0..33afe36bef3b 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -190,7 +190,7 @@ func (d *Driver) lookupIPFromStatusFile(conn *libvirt.Connect) (string, error) { ipAddress := "" for _, status := range statusEntries { - if status.MacAddress == d.MAC { + if status.MacAddress == d.PrivateMAC { ipAddress = status.IPAddress } } @@ -215,7 +215,7 @@ func (d *Driver) lookupIPFromLeasesFile() (string, error) { if len(entry) != 5 { return "", fmt.Errorf("Malformed leases entry: %s", entry) } - if entry[1] == d.MAC { + if entry[1] == d.PrivateMAC { ipAddress = entry[2] } } From e13bca739a3416c44e2861e358f4d58715746a01 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Fri, 10 Aug 2018 17:40:27 -0700 Subject: [PATCH 017/195] kvm2 driver: be more robust with creating of the network, don't delete the network if it is in use --- pkg/drivers/kvm/kvm.go | 27 ++++++---- pkg/drivers/kvm/network.go | 107 +++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 10 deletions(-) diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 9d93223d3e25..faf9691f7f4e 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -215,8 +215,17 @@ func (d *Driver) Restart() error { } func (d *Driver) Start() error { + // if somebody/something deleted the network in the meantime, + // we might need to recreate it. It's (nearly) a noop if the network exists. + log.Info("Creating network...") + err := d.createNetwork() + if err != nil { + return errors.Wrap(err, "creating network") + } + + // this call ensures that all networks are active log.Info("Ensuring networks are active...") - err := d.ensureNetwork() + err = d.ensureNetwork() if err != nil { return errors.Wrap(err, "ensuring active networks") } @@ -358,18 +367,16 @@ func (d *Driver) Remove() error { } defer conn.Close() - //Tear down network and disk if they exist - log.Debug("Checking if the network needs to be deleted") - network, err := conn.LookupNetworkByName(d.PrivateNetwork) + // Tear down network if it exists and is not in use by another minikube instance + log.Debug("Trying to delete the networks (if possible)") + err = d.deleteNetwork() if err != nil { - log.Warn("Network %s does not exist, nothing to clean up...", d.PrivateNetwork) - } - if network != nil { - log.Infof("Network %s exists, removing...", d.PrivateNetwork) - network.Destroy() - network.Undefine() + log.Warnf("Deleting of networks failed: %s", err.Error()) + } else { + log.Info("Successfully deleted networks") } + // Tear down the domain now log.Debug("Checking if the domain needs to be deleted") dom, err := conn.LookupDomainByName(d.MachineName) if err != nil { diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 33afe36bef3b..1565098542c3 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -19,6 +19,7 @@ package kvm import ( "bytes" "encoding/json" + "encoding/xml" "fmt" "io/ioutil" "strings" @@ -141,6 +142,111 @@ func (d *Driver) createNetwork() error { return nil } +func (d *Driver) deleteNetwork() error { + type source struct { + //XMLName xml.Name `xml:"source"` + Network string `xml:"network,attr"` + } + type iface struct { + //XMLName xml.Name `xml:"interface"` + Source source `xml:"source"` + } + type result struct { + //XMLName xml.Name `xml:"domain"` + Name string `xml:"name"` + Interfaces []iface `xml:"devices>interface"` + } + + conn, err := getConnection() + if err != nil { + return errors.Wrap(err, "getting libvirt connection") + } + defer conn.Close() + + // network: default + // It is assumed that the OS manages this network + + // network: private + log.Debugf("Checking if network %s exists...", d.PrivateNetwork) + network, err := conn.LookupNetworkByName(d.PrivateNetwork) + if err != nil { + // TODO: decide if we really wanna throw an error? + return errors.Wrap(err, "network %s does not exist") + } + log.Debugf("Network %s exists", d.PrivateNetwork) + + // iterate over every (also turned off) domains, and check if it + // is using the private network. Do *not* delete the network if + // that is the case + log.Debug("Trying to list all domains...") + doms, err := conn.ListAllDomains(0) + if err != nil { + return errors.Wrap(err, "list all domains") + } + log.Debugf("Listed all domains: total of %d domains", len(doms)) + + // fail if there are 0 domains + if len(doms) == 0 { + return fmt.Errorf("list of domains is 0 lenght") + } + + for _, dom := range doms { + // get the name of the domain we iterate over + log.Debug("Trying to get name of domain...") + name, err := dom.GetName() + if err != nil { + return errors.Wrap(err, "failed to get name of a domain") + } + log.Debugf("Got domain name: %s", name) + + // skip the domain if it is our own machine + if name == d.MachineName { + log.Debug("Skipping domain as it is us...") + continue + } + + // unfortunately, there is no better way to retrieve a list of all defined interfaces + // in domains than getting it from the defined XML of all domains + // NOTE: conn.ListAllInterfaces does not help in this case + log.Debugf("Getting XML for domain %s...", name) + xmlString, err := dom.GetXMLDesc(libvirt.DOMAIN_XML_INACTIVE) + if err != nil { + return errors.Wrapf(err, "failed to get XML of domain '%s'", name) + } + log.Debugf("Got XML for domain %s", name) + + v := result{} + err = xml.Unmarshal([]byte(xmlString), &v) + if err != nil { + return errors.Wrapf(err, "failed to unmarshal XML of domain '%s", name) + } + log.Debugf("Unmarshaled XML for domain %s: %#v", name, v) + + // iterate over the found interfaces + for _, i := range v.Interfaces { + if i.Source.Network == d.PrivateNetwork { + log.Debugf("domain %s DOES use network %s, aborting...", name, d.PrivateNetwork) + return fmt.Errorf("network still in use at least by domain '%s',", name) + } + log.Debugf("domain %s does not use network %s", name, d.PrivateNetwork) + } + } + + // when we reach this point, it means it is safe to delete the network + log.Debugf("Trying to destroy network %s...", d.PrivateNetwork) + err = network.Destroy() + if err != nil { + return errors.Wrap(err, "network destroy") + } + log.Debugf("Trying to undefine network %s...", d.PrivateNetwork) + err = network.Undefine() + if err != nil { + return errors.Wrap(err, "network undefine") + } + + return nil +} + func (d *Driver) lookupIP() (string, error) { conn, err := getConnection() if err != nil { @@ -159,6 +265,7 @@ func (d *Driver) lookupIP() (string, error) { return d.lookupIPFromLeasesFile() } + // TODO: for everything > 1002006, there is direct support in the libvirt-go for handling this return d.lookupIPFromStatusFile(conn) } From 9e8af2cde65b74f381ff155653c816c345b24b82 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Tue, 14 Aug 2018 13:37:01 -0700 Subject: [PATCH 018/195] kvm2 driver: fixed documentation link in error text --- pkg/drivers/kvm/domain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index 71f984e29cf3..4459ffe491e1 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -98,7 +98,7 @@ $ sudo usermod -a -G libvirt $(whoami) # NOTE: For older Debian/Ubuntu versions change the group to [libvirtd] $ newgrp libvirt -Visit https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm-driver for more information. +Visit https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver for more information. ` func randomMAC() (net.HardwareAddr, error) { From bda086d34c9333296d707754eedd71052c10e9b7 Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Tue, 14 Aug 2018 13:07:59 -0400 Subject: [PATCH 019/195] update deployment --- deploy/addons/coredns/coreDNS-controller.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/deploy/addons/coredns/coreDNS-controller.yaml b/deploy/addons/coredns/coreDNS-controller.yaml index 5b76bd70aee7..ff176f202397 100644 --- a/deploy/addons/coredns/coreDNS-controller.yaml +++ b/deploy/addons/coredns/coreDNS-controller.yaml @@ -41,6 +41,7 @@ spec: volumeMounts: - name: config-volume mountPath: /etc/coredns + readOnly: true ports: - containerPort: 53 name: dns @@ -51,6 +52,14 @@ spec: - containerPort: 9153 name: metrics protocol: TCP + securityContext: + allowPrivilegeEscalation: false + capabilities: + add: + - NET_BIND_SERVICE + drop: + - all + readOnlyRootFilesystem: true livenessProbe: httpGet: path: /health From c398a506d87dd29149a8090f126bc5fe32de525d Mon Sep 17 00:00:00 2001 From: wangxy518 <40482095+wangxy518@users.noreply.github.com> Date: Fri, 17 Aug 2018 10:53:34 +0800 Subject: [PATCH 020/195] Update persistent_volumes.md --- docs/persistent_volumes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/persistent_volumes.md b/docs/persistent_volumes.md index 7b90adb2acc1..5e605be78ccb 100644 --- a/docs/persistent_volumes.md +++ b/docs/persistent_volumes.md @@ -1,5 +1,5 @@ ## Persistent Volumes -Minikube supports [PersistentVolumes](http://kubernetes.io/docs/user-guide/persistent-volumes/) of type `hostPath`. +Minikube supports [PersistentVolumes](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) of type `hostPath`. These PersistentVolumes are mapped to a directory inside the Minikube VM. The Minikube VM boots into a tmpfs, so most directories will not be persisted across reboots (`minikube stop`). From edc35767359414ebf091bc2e880cac15aa0ae7ad Mon Sep 17 00:00:00 2001 From: Tijs Gommeren Date: Fri, 17 Aug 2018 17:10:00 +0200 Subject: [PATCH 021/195] updated readme for Windows installation --- README.md | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c0e656b9a889..08583ae10077 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,35 @@ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/miniku ### Windows -Install with [Chocolatey](https://chocolatey.org/): +Hyper-V needs to be enabled. For Windows 10 this can only run on these versions: + +* Windows 10 Enterprise +* Windows 10 Professional +* Windows 10 Education + +#### Install with [Chocolatey](https://chocolatey.org/) (recommended): +These commands must be run as administrator. To do this, open the Windows command line by typing 'cmd' in your start menu, right clicking it and choosing 'Run as administrator'. ```shell choco install minikube ``` -Install manually: Download the [minikube-windows-amd64.exe](https://storage.googleapis.com/minikube/releases/latest/minikube-windows-amd64.exe) file, rename it to `minikube.exe` and add it to your path. +```shell +choco install kubernetes-cli +``` + After it finished installing, close the current command line and restart. Minikube was added to your path automatically. + + To start the minikube cluster, make sure you also have administrator rights. + +```shell +minikube start + ``` + + You might have to specify the vm driver. + ```shell +minikube start --vm-driver hyperv + ``` + +#### Install manually +Download the [minikube-windows-amd64.exe](https://storage.googleapis.com/minikube/releases/latest/minikube-windows-amd64.exe) file, rename it to `minikube.exe` and add it to your path. ### Linux Continuous Integration without VM Support From f8c16a7bbb32ed7e4be2c2490ef6a7cbbf313aaa Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Tue, 14 Aug 2018 11:47:37 -0400 Subject: [PATCH 022/195] Make coredns default --- pkg/minikube/assets/addons.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/minikube/assets/addons.go b/pkg/minikube/assets/addons.go index cf3d7b214361..00687d9d27f1 100644 --- a/pkg/minikube/assets/addons.go +++ b/pkg/minikube/assets/addons.go @@ -120,7 +120,7 @@ var Addons = map[string]*Addon{ constants.AddonsPath, "coreDNS-clusterrole.yaml", "0640"), - }, false, "coredns"), + }, true, "coredns"), "kube-dns": NewAddon([]*BinDataAsset{ NewBinDataAsset( "deploy/addons/kube-dns/kube-dns-controller.yaml", @@ -137,7 +137,7 @@ var Addons = map[string]*Addon{ constants.AddonsPath, "kube-dns-svc.yaml", "0640"), - }, true, "kube-dns"), + }, false, "kube-dns"), "heapster": NewAddon([]*BinDataAsset{ NewBinDataAsset( "deploy/addons/heapster/influx-grafana-rc.yaml", From 74d6155d47616dd0b15a55b9ad2bc92cb9f7e42d Mon Sep 17 00:00:00 2001 From: Joao Carlos Date: Tue, 31 Jul 2018 00:15:16 +0300 Subject: [PATCH 023/195] Update docker/machine dependencies Fixes an issue that prevents the vmwarefusion driver from working with minikube. --- Godeps/Godeps.json | 130 +++++++++--------- .../docker/machine/drivers/hyperv/hyperv.go | 44 ++++-- .../drivers/vmwarefusion/fusion_darwin.go | 4 +- .../docker/machine/libmachine/ssh/client.go | 9 +- 4 files changed, 102 insertions(+), 85 deletions(-) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index f3dcd1e50d9e..3992b557cce9 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/minikube", "GoVersion": "go1.10", - "GodepVersion": "v79", + "GodepVersion": "v80", "Packages": [ "./..." ], @@ -50,163 +50,163 @@ }, { "ImportPath": "github.com/docker/machine/commands/mcndirs", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/errdriver", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/hyperv", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/none", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/virtualbox", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/vmwarefusion", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/auth", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/cert", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/check", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers/plugin", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers/plugin/localbinary", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers/rpc", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/engine", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/host", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/log", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcndockerclient", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcnerror", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcnflag", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcnutils", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/persist", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/provision", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/provision/pkgaction", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/provision/serviceaction", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/shell", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/ssh", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/state", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/swarm", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/version", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/versioncmp", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/version", - "Comment": "docs-v0.8.2-2016-09-26-373-g1e3b6b64", - "Rev": "1e3b6b64504f2970252b06119d6dc1fb1982b4b4" + "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/fsnotify/fsnotify", diff --git a/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go b/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go index cf86801d435e..6740f295e469 100644 --- a/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go +++ b/vendor/github.com/docker/machine/drivers/hyperv/hyperv.go @@ -16,28 +16,31 @@ import ( type Driver struct { *drivers.BaseDriver - Boot2DockerURL string - VSwitch string - DiskSize int - MemSize int - CPU int - MacAddr string - VLanID int + Boot2DockerURL string + VSwitch string + DiskSize int + MemSize int + CPU int + MacAddr string + VLanID int + DisableDynamicMemory bool } const ( - defaultDiskSize = 20000 - defaultMemory = 1024 - defaultCPU = 1 - defaultVLanID = 0 + defaultDiskSize = 20000 + defaultMemory = 1024 + defaultCPU = 1 + defaultVLanID = 0 + defaultDisableDynamicMemory = false ) // NewDriver creates a new Hyper-v driver with default settings. func NewDriver(hostName, storePath string) *Driver { return &Driver{ - DiskSize: defaultDiskSize, - MemSize: defaultMemory, - CPU: defaultCPU, + DiskSize: defaultDiskSize, + MemSize: defaultMemory, + CPU: defaultCPU, + DisableDynamicMemory: defaultDisableDynamicMemory, BaseDriver: &drivers.BaseDriver{ MachineName: hostName, StorePath: storePath, @@ -88,6 +91,11 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag { Value: defaultVLanID, EnvVar: "HYPERV_VLAN_ID", }, + mcnflag.BoolFlag{ + Name: "hyperv-disable-dynamic-memory", + Usage: "Disable dynamic memory management setting", + EnvVar: "HYPERV_DISABLE_DYNAMIC_MEMORY", + }, } } @@ -100,6 +108,7 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error { d.MacAddr = flags.String("hyperv-static-macaddress") d.VLanID = flags.Int("hyperv-vlan-id") d.SSHUser = "docker" + d.DisableDynamicMemory = flags.Bool("hyperv-disable-dynamic-memory") d.SetSwarmConfigFromFlags(flags) return nil @@ -212,6 +221,13 @@ func (d *Driver) Create() error { "-MemoryStartupBytes", toMb(d.MemSize)); err != nil { return err } + if d.DisableDynamicMemory { + if err := cmd("Hyper-V\\Set-VMMemory", + "-VMName", d.MachineName, + "-DynamicMemoryEnabled", "$false"); err != nil { + return err + } + } if d.CPU > 1 { if err := cmd("Hyper-V\\Set-VMProcessor", diff --git a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go b/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go index 74a2cc510efc..1211304e31e5 100644 --- a/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go +++ b/vendor/github.com/docker/machine/drivers/vmwarefusion/fusion_darwin.go @@ -403,7 +403,7 @@ func (d *Driver) Create() error { if err != nil { return err } - command := "[ ! -d " + shareDir + " ]&& sudo mkdir " + shareDir + "; sudo mount --bind /mnt/hgfs/" + shareDir + " " + shareDir + " || [ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/" + shareName + " " + shareDir + " || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/" + shareName + " " + shareDir + command := "([ ! -d " + shareDir + " ]&& sudo mkdir " + shareDir + "; sudo mount --bind /mnt/hgfs/" + shareDir + " " + shareDir + ") || ([ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/" + shareName + " " + shareDir + ") || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/" + shareName + " " + shareDir _, _, err = vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", command) if err != nil { return err @@ -436,7 +436,7 @@ func (d *Driver) Start() error { return err } else if !os.IsNotExist(err) { // create mountpoint and mount shared folder - command := "[ ! -d " + shareDir + " ]&& sudo mkdir " + shareDir + "; sudo mount --bind /mnt/hgfs/" + shareDir + " " + shareDir + " || [ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/" + shareName + " " + shareDir + " || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/" + shareName + " " + shareDir + command := "([ ! -d " + shareDir + " ]&& sudo mkdir " + shareDir + "; sudo mount --bind /mnt/hgfs/" + shareDir + " " + shareDir + ") || ([ -f /usr/local/bin/vmhgfs-fuse ]&& sudo /usr/local/bin/vmhgfs-fuse -o allow_other .host:/" + shareName + " " + shareDir + ") || sudo mount -t vmhgfs -o uid=$(id -u),gid=$(id -g) .host:/" + shareName + " " + shareDir vmrun("-gu", B2DUser, "-gp", B2DPass, "runScriptInGuest", d.vmxPath(), "/bin/sh", command) } } diff --git a/vendor/github.com/docker/machine/libmachine/ssh/client.go b/vendor/github.com/docker/machine/libmachine/ssh/client.go index abd4705dfbca..afba46dedf81 100644 --- a/vendor/github.com/docker/machine/libmachine/ssh/client.go +++ b/vendor/github.com/docker/machine/libmachine/ssh/client.go @@ -68,14 +68,15 @@ const ( var ( baseSSHArgs = []string{ "-F", "/dev/null", - "-o", "PasswordAuthentication=no", - "-o", "StrictHostKeyChecking=no", - "-o", "UserKnownHostsFile=/dev/null", - "-o", "LogLevel=quiet", // suppress "Warning: Permanently added '[localhost]:2022' (ECDSA) to the list of known hosts." "-o", "ConnectionAttempts=3", // retry 3 times if SSH connection fails "-o", "ConnectTimeout=10", // timeout after 10 seconds "-o", "ControlMaster=no", // disable ssh multiplexing "-o", "ControlPath=none", + "-o", "LogLevel=quiet", // suppress "Warning: Permanently added '[localhost]:2022' (ECDSA) to the list of known hosts." + "-o", "PasswordAuthentication=no", + "-o", "ServerAliveInterval=60", // prevents connection to be dropped if command takes too long + "-o", "StrictHostKeyChecking=no", + "-o", "UserKnownHostsFile=/dev/null", } defaultClientType = External ) From bd9230f92300474e8613c904a79dcb3d44c34454 Mon Sep 17 00:00:00 2001 From: dlorenc Date: Mon, 30 Jul 2018 12:44:06 -0700 Subject: [PATCH 024/195] Fix the copyright header in our custom journald.conf --- .../rootfs-overlay/etc/systemd/journald.conf | 45 +++++-------------- 1 file changed, 10 insertions(+), 35 deletions(-) diff --git a/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/systemd/journald.conf b/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/systemd/journald.conf index 6f6f5aaf27a2..2e9d3eccd0dc 100644 --- a/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/systemd/journald.conf +++ b/deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/etc/systemd/journald.conf @@ -1,41 +1,16 @@ -# This file is part of systemd. +# Copyright 2018 The Kubernetes Authors All rights reserved. # -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. +# 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 # -# Entries in this file show the compile time defaults. -# You can change settings by editing this file. -# Defaults can be restored by simply deleting this file. +# http://www.apache.org/licenses/LICENSE-2.0 # -# See journald.conf(5) for details. +# 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. [Journal] Storage=volatile -#Compress=yes -#Seal=yes -#SplitMode=uid -#SyncIntervalSec=5m -#RateLimitIntervalSec=30s -#RateLimitBurst=1000 -#SystemMaxUse= -#SystemKeepFree= -#SystemMaxFileSize= -#SystemMaxFiles=100 -#RuntimeMaxUse= -#RuntimeKeepFree= -#RuntimeMaxFileSize= -#RuntimeMaxFiles=100 -#MaxRetentionSec= -#MaxFileSec=1month -#ForwardToSyslog=no -#ForwardToKMsg=no -#ForwardToConsole=no -#ForwardToWall=yes -#TTYPath=/dev/console -#MaxLevelStore=debug -#MaxLevelSyslog=debug -#MaxLevelKMsg=notice -#MaxLevelConsole=info -#MaxLevelWall=emerg From 0a5efe156c9c303bb9ee1746d3015af06b78059a Mon Sep 17 00:00:00 2001 From: dlorenc Date: Thu, 16 Aug 2018 10:05:26 -0700 Subject: [PATCH 025/195] Don't look for DNS by name. It might be coredns or kubedns. Signed-off-by: dlorenc --- test/integration/cluster_dns_test.go | 3 --- test/integration/util/util.go | 18 ------------------ 2 files changed, 21 deletions(-) diff --git a/test/integration/cluster_dns_test.go b/test/integration/cluster_dns_test.go index ddc874a2f687..542018ea724c 100644 --- a/test/integration/cluster_dns_test.go +++ b/test/integration/cluster_dns_test.go @@ -31,9 +31,6 @@ import ( func testClusterDNS(t *testing.T) { t.Parallel() - if err := util.WaitForDNSRunning(t); err != nil { - t.Fatalf("Waiting for DNS to be running: %s", err) - } kubectlRunner := util.NewKubectlRunner(t) podPath := filepath.Join(*testdataDir, "busybox.yaml") diff --git a/test/integration/util/util.go b/test/integration/util/util.go index 0abdb3f52372..96bdad29280e 100644 --- a/test/integration/util/util.go +++ b/test/integration/util/util.go @@ -225,24 +225,6 @@ func WaitForBusyboxRunning(t *testing.T, namespace string) error { return commonutil.WaitForPodsWithLabelRunning(client, namespace, selector) } -func WaitForDNSRunning(t *testing.T) error { - client, err := commonutil.GetClient() - if err != nil { - return errors.Wrap(err, "getting kubernetes client") - } - - selector := labels.SelectorFromSet(labels.Set(map[string]string{"k8s-app": "kube-dns"})) - if err := commonutil.WaitForPodsWithLabelRunning(client, "kube-system", selector); err != nil { - return errors.Wrap(err, "waiting for kube-dns pods") - } - - if err := commonutil.WaitForService(client, "kube-system", "kube-dns", true, time.Millisecond*500, time.Minute*10); err != nil { - t.Errorf("Error waiting for kube-dns service to be up") - } - - return nil -} - func WaitForDashboardRunning(t *testing.T) error { client, err := commonutil.GetClient() if err != nil { From 20b40200198b3240bfdd5af8d2a55139a87c7059 Mon Sep 17 00:00:00 2001 From: dlorenc Date: Tue, 21 Aug 2018 08:05:04 -0700 Subject: [PATCH 026/195] Also disable persistence test. --- test/integration/persistence_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/integration/persistence_test.go b/test/integration/persistence_test.go index 35730584393a..d98dc2a570a1 100644 --- a/test/integration/persistence_test.go +++ b/test/integration/persistence_test.go @@ -28,6 +28,9 @@ import ( ) func TestPersistence(t *testing.T) { + if strings.Contains(minikubeRunner.StartArgs, "--vm-driver=none") { + t.Skip("skipping test as none driver does not support persistence") + } minikubeRunner := NewMinikubeRunner(t) minikubeRunner.EnsureRunning() From 00a8b13e989f40b98a718f910212184c92df91c6 Mon Sep 17 00:00:00 2001 From: yanxuean Date: Tue, 31 Jul 2018 10:17:07 +0800 Subject: [PATCH 027/195] support containerd v1.2.0-beta.0 Signed-off-by: yanxuean --- deploy/iso/minikube-iso/package/Config.in | 1 + .../package/containerd-bin/Config.in | 18 +++++ .../package/containerd-bin/config.toml | 69 +++++++++++++++++++ .../containerd-bin/containerd-bin.hash | 1 + .../package/containerd-bin/containerd-bin.mk | 56 +++++++++++++++ .../package/containerd-bin/containerd.service | 29 ++++++++ 6 files changed, 174 insertions(+) create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/Config.in create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/config.toml create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/containerd.service diff --git a/deploy/iso/minikube-iso/package/Config.in b/deploy/iso/minikube-iso/package/Config.in index 140fa4cb29bf..c7dbb16d9892 100644 --- a/deploy/iso/minikube-iso/package/Config.in +++ b/deploy/iso/minikube-iso/package/Config.in @@ -11,4 +11,5 @@ menu "System tools" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/hv-kvp-daemon/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/gluster/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/vbox-guest/Config.in" + source "$BR2_EXTERNAL_MINIKUBE_PATH/package/containerd-bin/Config.in" endmenu diff --git a/deploy/iso/minikube-iso/package/containerd-bin/Config.in b/deploy/iso/minikube-iso/package/containerd-bin/Config.in new file mode 100644 index 000000000000..988ab2c4dbdc --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_CONTAINERD_BIN + bool "containerd-bin" + default y + depends on BR2_x86_64 + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2 + select BR2_PACKAGE_RUNC_MASTER + select BR2_PACKAGE_BTRFS_PROGS + select BR2_PACKAGE_LIBSECCOMP + select BR2_PACKAGE_LIBGPGME + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_LVM2_APP_LIBRARY + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_LIBGLIB2 diff --git a/deploy/iso/minikube-iso/package/containerd-bin/config.toml b/deploy/iso/minikube-iso/package/containerd-bin/config.toml new file mode 100644 index 000000000000..ae7fe958038a --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/config.toml @@ -0,0 +1,69 @@ +root = "/var/lib/containerd" +state = "/run/containerd" +oom_score = 0 + +[grpc] + address = "/run/containerd/containerd.sock" + uid = 0 + gid = 0 + max_recv_message_size = 16777216 + max_send_message_size = 16777216 + +[debug] + address = "" + uid = 0 + gid = 0 + level = "" + +[metrics] + address = "" + grpc_histogram = false + +[cgroup] + path = "" + +[plugins] + [plugins.cgroups] + no_prometheus = false + [plugins.cri] + stream_server_address = "" + stream_server_port = "10010" + enable_selinux = false + sandbox_image = "k8s.gcr.io/pause:3.1" + stats_collect_period = 10 + systemd_cgroup = false + enable_tls_streaming = false + max_container_log_line_size = 16384 + [plugins.cri.containerd] + snapshotter = "overlayfs" + no_pivot = true + [plugins.cri.containerd.default_runtime] + runtime_type = "io.containerd.runtime.v1.linux" + runtime_engine = "" + runtime_root = "" + [plugins.cri.containerd.untrusted_workload_runtime] + runtime_type = "" + runtime_engine = "" + runtime_root = "" + [plugins.cri.cni] + bin_dir = "/opt/cni/bin" + conf_dir = "/etc/cni/net.d" + conf_template = "" + [plugins.cri.registry] + [plugins.cri.registry.mirrors] + [plugins.cri.registry.mirrors."docker.io"] + endpoint = ["https://registry-1.docker.io"] + [plugins.diff-service] + default = ["walking"] + [plugins.linux] + shim = "containerd-shim" + runtime = "runc" + runtime_root = "" + no_shim = false + shim_debug = false + [plugins.scheduler] + pause_threshold = 0.02 + deletion_threshold = 0 + mutation_threshold = 100 + schedule_delay = "0s" + startup_delay = "100ms" \ No newline at end of file diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash new file mode 100644 index 000000000000..5a2730ba92f6 --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash @@ -0,0 +1 @@ +sha256 5eecd50a9aee472535d1e5564df72225a9e0447f11d36fb7d72e4a8bd74b065d v1.2.0-beta.0.tar.gz diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk new file mode 100644 index 000000000000..6d75ab3fa0e8 --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# containerd +# +################################################################################ +CONTAINERD_BIN_VERSION = v1.2.0-beta.0 +CONTAINERD_BIN_SITE = https://github.com/containerd/containerd/archive +CONTAINERD_BIN_SOURCE = $(CONTAINERD_BIN_VERSION).tar.gz +CONTAINERD_BIN_DEPENDENCIES = host-go libgpgme +CONTAINERD_BIN_GOPATH = $(@D)/_output +CONTAINERD_BIN_ENV = \ + CGO_ENABLED=1 \ + GOPATH="$(CONTAINERD_BIN_GOPATH)" \ + GOBIN="$(CONTAINERD_BIN_GOPATH)/bin" \ + PATH=$(CONTAINERD_BIN_GOPATH)/bin:$(BR_PATH) + +CONTAINERD_BIN_COMPILE_SRC = $(CONTAINERD_BIN_GOPATH)/src/github.com/containerd/containerd + +define CONTAINERD_BIN_USERS + - -1 containerd-admin -1 - - - - - + - -1 containerd -1 - - - - - +endef + +define CONTAINERD_BIN_CONFIGURE_CMDS + mkdir -p $(CONTAINERD_BIN_GOPATH)/src/github.com/containerd + ln -sf $(@D) $(CONTAINERD_BIN_COMPILE_SRC) +endef + +define CONTAINERD_BIN_BUILD_CMDS + PWD=$(CONTAINERD_BIN_COMPILE_SRC) $(CONTAINERD_BIN_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) binaries +endef + +define CONTAINERD_BIN_INSTALL_TARGET_CMDS + $(INSTALL) -Dm755 \ + $(@D)/bin/containerd \ + $(TARGET_DIR)/usr/bin + $(INSTALL) -Dm755 \ + $(@D)/bin/containerd-shim \ + $(TARGET_DIR)/usr/bin + $(INSTALL) -Dm755 \ + $(@D)/bin/ctr \ + $(TARGET_DIR)/usr/bin + $(INSTALL) -Dm644 \ + $(BR2_EXTERNAL_MINIKUBE_PATH)/package/containerd-bin/config.toml \ + $(TARGET_DIR)/etc/containerd/config.toml +endef + +define CONTAINERD_BIN_INSTALL_INIT_SYSTEMD + $(INSTALL) -Dm755 \ + $(BR2_EXTERNAL_MINIKUBE_PATH)/package/containerd-bin/containerd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/containerd.service + $(call link-service,containerd.service) + $(call link-service,containerd-shutdown.service) +endef + +$(eval $(generic-package)) diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd.service b/deploy/iso/minikube-iso/package/containerd-bin/containerd.service new file mode 100644 index 000000000000..97758f26bb89 --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd.service @@ -0,0 +1,29 @@ +[Unit] +Description=containerd container runtime +Documentation=https://containerd.io +After=network-online.target minikube-automount.service +Requires=minikube-automount.service + +[Service] +EnvironmentFile=-/etc/sysconfig/containerd +EnvironmentFile=-/etc/sysconfig/containerd.minikube +EnvironmentFile=/var/run/minikube/env +Environment=GOTRACEBACK=crash +ExecStartPre=/sbin/modprobe overlay +ExecStart=/usr/bin/containerd \ + $CONTAINERD_OPTIONS \ + $CONTAINERD_MINIKUBE_OPTIONS \ + --root ${PERSISTENT_DIR}/var/lib/containerd +TasksMax=8192 +Delegate=yes +KillMode=process +LimitNOFILE=1048576 +# Having non-zero Limit*s causes performance problems due to accounting overhead +# in the kernel. We recommend using cgroups to do container-local accounting. +LimitNPROC=infinity +LimitCORE=infinity +TimeoutStartSec=0 +Restart=on-abnormal + +[Install] +WantedBy=multi-user.target From c4ee50b9e80a7836800b1ffb8947438a8040eb09 Mon Sep 17 00:00:00 2001 From: yanxuean Date: Thu, 2 Aug 2018 19:39:55 +0800 Subject: [PATCH 028/195] support to conveniently use containerd Signed-off-by: yanxuean --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 494311ff1e4d..5455f984c7ae 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -222,6 +222,11 @@ func SetContainerRuntime(cfg map[string]string, runtime string) map[string]strin cfg["container-runtime-endpoint"] = "/var/run/crio/crio.sock" cfg["image-service-endpoint"] = "/var/run/crio/crio.sock" cfg["runtime-request-timeout"] = "15m" + case "containerd": + cfg["container-runtime"] = "remote" + cfg["container-runtime-endpoint"] = "unix:///run/containerd/containerd.sock" + cfg["image-service-endpoint"] = "unix:///run/containerd/containerd.sock" + cfg["runtime-request-timeout"] = "15m" default: cfg["container-runtime"] = runtime } From 1971dc979b9b464fef3fdb9a717c4f54256bdecb Mon Sep 17 00:00:00 2001 From: yanxuean Date: Thu, 2 Aug 2018 19:58:40 +0800 Subject: [PATCH 029/195] add example in docs for containerd Signed-off-by: yanxuean --- docs/alternative_runtimes.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/alternative_runtimes.md b/docs/alternative_runtimes.md index 73443624ac2d..fa39b8fe3bf8 100644 --- a/docs/alternative_runtimes.md +++ b/docs/alternative_runtimes.md @@ -30,3 +30,25 @@ $ minikube start \ --extra-config=kubelet.image-service-endpoint=/var/run/crio/crio.sock \ --bootstrapper=kubeadm ``` + +### Using containerd + +To use [containerd](https://github.com/containerd/containerd) as the container runtime, run: + +```shell +$ minikube start \ + --network-plugin=cni \ + --container-runtime=containerd \ + --bootstrapper=kubeadm +``` + +Or you can use the extended version: + +```shell +$ minikube start \ + --network-plugin=cni \ + --extra-config=kubelet.container-runtime=remote \ + --extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \ + --extra-config=kubelet.image-service-endpoint=unix:///run/containerd/containerd.sock \ + --bootstrapper=kubeadm +``` \ No newline at end of file From 3dc5f21dfbbac06c20d01976c87bb4f9449772ac Mon Sep 17 00:00:00 2001 From: dlorenc Date: Wed, 22 Aug 2018 08:50:19 -0700 Subject: [PATCH 030/195] Update go-containerregistry library --- Godeps/Godeps.json | 102 +++--- .../go-containerregistry/authn/BUILD.bazel | 31 -- .../go-containerregistry/name/BUILD.bazel | 28 -- .../{ => pkg}/authn/anon.go | 0 .../{ => pkg}/authn/auth.go | 0 .../{ => pkg}/authn/authn.go | 0 .../{ => pkg}/authn/basic.go | 0 .../{ => pkg}/authn/bearer.go | 0 .../{ => pkg}/authn/doc.go | 0 .../{ => pkg}/authn/helper.go | 12 +- .../{ => pkg}/authn/keychain.go | 36 +- .../pkg/authn/multikeychain.go | 45 +++ .../{ => pkg}/name/check.go | 0 .../{ => pkg}/name/digest.go | 0 .../{ => pkg}/name/errors.go | 0 .../{ => pkg}/name/ref.go | 1 + .../{ => pkg}/name/registry.go | 59 +++- .../{ => pkg}/name/repository.go | 2 +- .../{ => pkg}/name/tag.go | 4 +- .../{ => pkg}/v1/config.go | 53 ++- .../go-containerregistry/{ => pkg}/v1/doc.go | 3 + .../go-containerregistry/{ => pkg}/v1/hash.go | 5 +- .../{ => pkg}/v1/image.go | 4 +- .../transport/scheme.go => pkg/v1/index.go} | 33 +- .../{ => pkg}/v1/layer.go | 0 .../{ => pkg}/v1/manifest.go | 25 +- .../{ => pkg}/v1/partial/compressed.go | 10 +- .../{ => pkg}/v1/partial/doc.go | 0 .../{ => pkg}/v1/partial/image.go | 2 +- .../{ => pkg}/v1/partial/uncompressed.go | 19 +- .../{ => pkg}/v1/partial/with.go | 26 +- .../go-containerregistry/pkg/v1/platform.go | 24 ++ .../{ => pkg}/v1/remote/delete.go | 11 +- .../{ => pkg}/v1/remote/doc.go | 0 .../{ => pkg}/v1/remote/error.go | 2 +- .../{ => pkg}/v1/remote/image.go | 82 +++-- .../pkg/v1/remote/list.go | 64 ++++ .../pkg/v1/remote/mount.go | 77 +++++ .../pkg/v1/remote/options.go | 56 ++++ .../{ => pkg}/v1/remote/transport/basic.go | 2 +- .../{ => pkg}/v1/remote/transport/bearer.go | 34 +- .../{ => pkg}/v1/remote/transport/doc.go | 0 .../{ => pkg}/v1/remote/transport/ping.go | 18 +- .../{ => pkg}/v1/remote/transport/scope.go | 13 +- .../v1/remote/transport/transport.go | 22 +- .../{ => pkg}/v1/remote/write.go | 111 +++++-- .../{ => pkg}/v1/tarball/doc.go | 0 .../{ => pkg}/v1/tarball/image.go | 63 ++-- .../pkg/v1/tarball/layer.go | 144 ++++++++ .../{ => pkg}/v1/tarball/write.go | 61 ++-- .../{ => pkg}/v1/types/types.go | 0 .../{ => pkg}/v1/v1util/and_closer.go | 0 .../{ => pkg}/v1/v1util/nop.go | 0 .../{ => pkg}/v1/v1util/verify.go | 2 +- .../{ => pkg}/v1/v1util/zip.go | 33 +- .../pkg/v1/zz_deepcopy_generated.go | 314 ++++++++++++++++++ .../go-containerregistry/v1/BUILD.bazel | 26 -- .../v1/partial/BUILD.bazel | 19 -- .../v1/remote/BUILD.bazel | 44 --- .../v1/remote/transport/BUILD.bazel | 37 --- .../v1/tarball/BUILD.bazel | 68 ---- .../go-containerregistry/v1/types/BUILD.bazel | 8 - .../v1/v1util/BUILD.bazel | 25 -- 63 files changed, 1298 insertions(+), 562 deletions(-) delete mode 100644 vendor/github.com/google/go-containerregistry/authn/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/name/BUILD.bazel rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/anon.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/auth.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/authn.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/basic.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/bearer.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/doc.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/helper.go (95%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/authn/keychain.go (81%) create mode 100644 vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/check.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/digest.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/errors.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/ref.go (96%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/registry.go (59%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/repository.go (98%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/name/tag.go (91%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/config.go (59%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/doc.go (84%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/hash.go (95%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/image.go (93%) rename vendor/github.com/google/go-containerregistry/{v1/remote/transport/scheme.go => pkg/v1/index.go} (50%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/layer.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/manifest.go (64%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/partial/compressed.go (93%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/partial/doc.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/partial/image.go (94%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/partial/uncompressed.go (94%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/partial/with.go (92%) create mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/platform.go rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/delete.go (83%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/doc.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/error.go (98%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/image.go (68%) create mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go create mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go create mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/transport/basic.go (96%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/transport/bearer.go (76%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/transport/doc.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/transport/ping.go (85%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/transport/scope.go (73%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/transport/transport.go (78%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/remote/write.go (70%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/tarball/doc.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/tarball/image.go (82%) create mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/tarball/write.go (50%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/types/types.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/v1util/and_closer.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/v1util/nop.go (100%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/v1util/verify.go (97%) rename vendor/github.com/google/go-containerregistry/{ => pkg}/v1/v1util/zip.go (81%) create mode 100644 vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go delete mode 100644 vendor/github.com/google/go-containerregistry/v1/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/v1/partial/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/v1/remote/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/v1/remote/transport/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/v1/tarball/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/v1/types/BUILD.bazel delete mode 100644 vendor/github.com/google/go-containerregistry/v1/v1util/BUILD.bazel diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index 3992b557cce9..5227a9a2faec 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/minikube", "GoVersion": "go1.10", - "GodepVersion": "v80", + "GodepVersion": "v79", "Packages": [ "./..." ], @@ -50,162 +50,162 @@ }, { "ImportPath": "github.com/docker/machine/commands/mcndirs", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/errdriver", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/hyperv", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/none", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/virtualbox", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/drivers/vmwarefusion", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/auth", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/cert", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/check", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers/plugin", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers/plugin/localbinary", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/drivers/rpc", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/engine", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/host", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/log", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcndockerclient", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcnerror", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcnflag", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/mcnutils", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/persist", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/provision", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/provision/pkgaction", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/provision/serviceaction", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/shell", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/ssh", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/state", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/swarm", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/version", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/libmachine/versioncmp", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { "ImportPath": "github.com/docker/machine/version", - "Comment": "docs-v0.8.2-2016-09-26-391-g1903531", + "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" }, { @@ -256,40 +256,40 @@ "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" }, { - "ImportPath": "github.com/google/go-containerregistry/authn", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/authn", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/name", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/name", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1/partial", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1/partial", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1/remote", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1/remote", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1/remote/transport", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1/remote/transport", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1/tarball", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1/tarball", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1/types", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1/types", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { - "ImportPath": "github.com/google/go-containerregistry/v1/v1util", - "Rev": "ee5c47f79bbaa9faac0ffd681b86427383b79213" + "ImportPath": "github.com/google/go-containerregistry/pkg/v1/v1util", + "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" }, { "ImportPath": "github.com/google/gofuzz", diff --git a/vendor/github.com/google/go-containerregistry/authn/BUILD.bazel b/vendor/github.com/google/go-containerregistry/authn/BUILD.bazel deleted file mode 100644 index a2271da965d1..000000000000 --- a/vendor/github.com/google/go-containerregistry/authn/BUILD.bazel +++ /dev/null @@ -1,31 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "anon.go", - "auth.go", - "authn.go", - "basic.go", - "bearer.go", - "doc.go", - "helper.go", - "keychain.go", - ], - importpath = "github.com/google/go-containerregistry/authn", - visibility = ["//visibility:public"], - deps = ["//name:go_default_library"], -) - -go_test( - name = "go_default_test", - srcs = [ - "anon_test.go", - "basic_test.go", - "bearer_test.go", - "helper_test.go", - "keychain_test.go", - ], - embed = [":go_default_library"], - deps = ["//name:go_default_library"], -) diff --git a/vendor/github.com/google/go-containerregistry/name/BUILD.bazel b/vendor/github.com/google/go-containerregistry/name/BUILD.bazel deleted file mode 100644 index d9d54aa3cbe8..000000000000 --- a/vendor/github.com/google/go-containerregistry/name/BUILD.bazel +++ /dev/null @@ -1,28 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "check.go", - "digest.go", - "errors.go", - "ref.go", - "registry.go", - "repository.go", - "tag.go", - ], - importpath = "github.com/google/go-containerregistry/name", - visibility = ["//visibility:public"], -) - -go_test( - name = "go_default_test", - srcs = [ - "digest_test.go", - "ref_test.go", - "registry_test.go", - "repository_test.go", - "tag_test.go", - ], - embed = [":go_default_library"], -) diff --git a/vendor/github.com/google/go-containerregistry/authn/anon.go b/vendor/github.com/google/go-containerregistry/pkg/authn/anon.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/authn/anon.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/anon.go diff --git a/vendor/github.com/google/go-containerregistry/authn/auth.go b/vendor/github.com/google/go-containerregistry/pkg/authn/auth.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/authn/auth.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/auth.go diff --git a/vendor/github.com/google/go-containerregistry/authn/authn.go b/vendor/github.com/google/go-containerregistry/pkg/authn/authn.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/authn/authn.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/authn.go diff --git a/vendor/github.com/google/go-containerregistry/authn/basic.go b/vendor/github.com/google/go-containerregistry/pkg/authn/basic.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/authn/basic.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/basic.go diff --git a/vendor/github.com/google/go-containerregistry/authn/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/authn/bearer.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/bearer.go diff --git a/vendor/github.com/google/go-containerregistry/authn/doc.go b/vendor/github.com/google/go-containerregistry/pkg/authn/doc.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/authn/doc.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/doc.go diff --git a/vendor/github.com/google/go-containerregistry/authn/helper.go b/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go similarity index 95% rename from vendor/github.com/google/go-containerregistry/authn/helper.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/helper.go index 5b2467ae83cb..4a8ec24042d3 100644 --- a/vendor/github.com/google/go-containerregistry/authn/helper.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/helper.go @@ -21,7 +21,7 @@ import ( "os/exec" "strings" - "github.com/google/go-containerregistry/name" + "github.com/google/go-containerregistry/pkg/name" ) // magicNotFoundMessage is the string that the CLI special cases to mean @@ -72,17 +72,19 @@ func (h *helper) Authorization() (string, error) { var out bytes.Buffer cmd.Stdout = &out - if err := h.r.Run(cmd); err != nil { - return "", err - } - output := out.String() + err := h.r.Run(cmd) // If we see this specific message, it means the domain wasn't found // and we should fall back on anonymous auth. + output := strings.TrimSpace(out.String()) if output == magicNotFoundMessage { return Anonymous.Authorization() } + if err != nil { + return "", err + } + // Any other output should be parsed as JSON and the Username / Secret // fields used for Basic authentication. ho := helperOutput{} diff --git a/vendor/github.com/google/go-containerregistry/authn/keychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go similarity index 81% rename from vendor/github.com/google/go-containerregistry/authn/keychain.go rename to vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go index c7c6a15074b8..aee1fedb9944 100644 --- a/vendor/github.com/google/go-containerregistry/authn/keychain.go +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/keychain.go @@ -16,14 +16,15 @@ package authn import ( "encoding/json" + "errors" "fmt" "io/ioutil" "log" "os" - "os/user" - "path" + "path/filepath" + "runtime" - "github.com/google/go-containerregistry/name" + "github.com/google/go-containerregistry/pkg/name" ) // Keychain is an interface for resolving an image reference to a credential. @@ -41,11 +42,22 @@ func configDir() (string, error) { if dc := os.Getenv("DOCKER_CONFIG"); dc != "" { return dc, nil } - usr, err := user.Current() - if err != nil { - return "", err + if h := dockerUserHomeDir(); h != "" { + return filepath.Join(dockerUserHomeDir(), ".docker"), nil + } + return "", errNoHomeDir +} + +var errNoHomeDir = errors.New("could not determine home directory") + +// dockerUserHomeDir returns the current user's home directory, as interpreted by Docker. +func dockerUserHomeDir() string { + if runtime.GOOS == "windows" { + // Docker specifically expands "%USERPROFILE%" on Windows, + return os.Getenv("USERPROFILE") } - return path.Join(usr.HomeDir, ".docker"), nil + // Docker defaults to "$HOME" Linux and OSX. + return os.Getenv("HOME") } // authEntry is a helper for JSON parsing an "auth" entry of config.json @@ -88,19 +100,19 @@ var ( func (dk *defaultKeychain) Resolve(reg name.Registry) (Authenticator, error) { dir, err := configDir() if err != nil { - log.Printf("Unable to determine config dir, falling back on anonymous: %v", err) + log.Printf("Unable to determine config dir: %v", err) return Anonymous, nil } - file := path.Join(dir, "config.json") + file := filepath.Join(dir, "config.json") content, err := ioutil.ReadFile(file) if err != nil { - log.Printf("Unable to read %q, falling back on anonymous: %v", file, err) + log.Printf("Unable to read %q: %v", file, err) return Anonymous, nil } var cf cfg if err := json.Unmarshal(content, &cf); err != nil { - log.Printf("Unable to parse %q, falling back on anonymous: %v", file, err) + log.Printf("Unable to parse %q: %v", file, err) return Anonymous, nil } @@ -135,6 +147,6 @@ func (dk *defaultKeychain) Resolve(reg name.Registry) (Authenticator, error) { } } - log.Printf("No matching credentials found for %v, falling back on anoynmous", reg) + // Fallback on anonymous. return Anonymous, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go new file mode 100644 index 000000000000..9d7fb3145cf3 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/authn/multikeychain.go @@ -0,0 +1,45 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +package authn + +import ( + "github.com/google/go-containerregistry/pkg/name" +) + +type multiKeychain struct { + keychains []Keychain +} + +// Assert that our multi-keychain implements Keychain. +var _ (Keychain) = (*multiKeychain)(nil) + +// NewMultiKeychain composes a list of keychains into one new keychain. +func NewMultiKeychain(kcs ...Keychain) Keychain { + return &multiKeychain{keychains: kcs} +} + +// Resolve implements Keychain. +func (mk *multiKeychain) Resolve(reg name.Registry) (Authenticator, error) { + for _, kc := range mk.keychains { + auth, err := kc.Resolve(reg) + if err != nil { + return nil, err + } + if auth != Anonymous { + return auth, nil + } + } + return Anonymous, nil +} diff --git a/vendor/github.com/google/go-containerregistry/name/check.go b/vendor/github.com/google/go-containerregistry/pkg/name/check.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/name/check.go rename to vendor/github.com/google/go-containerregistry/pkg/name/check.go diff --git a/vendor/github.com/google/go-containerregistry/name/digest.go b/vendor/github.com/google/go-containerregistry/pkg/name/digest.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/name/digest.go rename to vendor/github.com/google/go-containerregistry/pkg/name/digest.go diff --git a/vendor/github.com/google/go-containerregistry/name/errors.go b/vendor/github.com/google/go-containerregistry/pkg/name/errors.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/name/errors.go rename to vendor/github.com/google/go-containerregistry/pkg/name/errors.go diff --git a/vendor/github.com/google/go-containerregistry/name/ref.go b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go similarity index 96% rename from vendor/github.com/google/go-containerregistry/name/ref.go rename to vendor/github.com/google/go-containerregistry/pkg/name/ref.go index 356d79eb69ea..58775daa300c 100644 --- a/vendor/github.com/google/go-containerregistry/name/ref.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/ref.go @@ -45,5 +45,6 @@ func ParseReference(s string, strict Strictness) (Reference, error) { if d, err := NewDigest(s, strict); err == nil { return d, nil } + // TODO: Combine above errors into something more useful? return nil, errors.New("could not parse reference") } diff --git a/vendor/github.com/google/go-containerregistry/name/registry.go b/vendor/github.com/google/go-containerregistry/pkg/name/registry.go similarity index 59% rename from vendor/github.com/google/go-containerregistry/name/registry.go rename to vendor/github.com/google/go-containerregistry/pkg/name/registry.go index 7618b3f27e6e..c2bf5758a616 100644 --- a/vendor/github.com/google/go-containerregistry/name/registry.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/registry.go @@ -14,12 +14,29 @@ package name -import "net/url" +import ( + "net/url" + "regexp" + "strings" +) -const DefaultRegistry = "index.docker.io" +const ( + DefaultRegistry = "index.docker.io" + defaultRegistryAlias = "docker.io" +) + +// Detect more complex forms of local references. +var reLocal = regexp.MustCompile(`.*\.local(?:host)?(?::\d{1,5})?$`) + +// Detect the loopback IP (127.0.0.1) +var reLoopback = regexp.MustCompile(regexp.QuoteMeta("127.0.0.1")) + +// Detect the loopback IPV6 (::1) +var reipv6Loopback = regexp.MustCompile(regexp.QuoteMeta("::1")) // Registry stores a docker registry name in a structured form. type Registry struct { + insecure bool registry string } @@ -46,6 +63,26 @@ func (r Registry) Scope(string) string { return "registry:catalog:*" } +// Scheme returns https scheme for all the endpoints except localhost or when explicitly defined. +func (r Registry) Scheme() string { + if r.insecure { + return "http" + } + if strings.HasPrefix(r.Name(), "localhost:") { + return "http" + } + if reLocal.MatchString(r.Name()) { + return "http" + } + if reLoopback.MatchString(r.Name()) { + return "http" + } + if reipv6Loopback.MatchString(r.Name()) { + return "http" + } + return "https" +} + func checkRegistry(name string) error { // Per RFC 3986, registries (authorities) are required to be prefixed with "//" // url.Host == hostname[:port] == authority @@ -65,5 +102,23 @@ func NewRegistry(name string, strict Strictness) (Registry, error) { if err := checkRegistry(name); err != nil { return Registry{}, err } + + // Rewrite "docker.io" to "index.docker.io". + // See: https://github.com/google/go-containerregistry/issues/68 + if name == defaultRegistryAlias { + name = DefaultRegistry + } + return Registry{registry: name}, nil } + +// NewInsecureRegistry returns an Insecure Registry based on the given name. +// Strict validation requires explicit, valid RFC 3986 URI authorities to be given. +func NewInsecureRegistry(name string, strict Strictness) (Registry, error) { + reg, err := NewRegistry(name, strict) + if err != nil { + return Registry{}, err + } + reg.insecure = true + return reg, nil +} diff --git a/vendor/github.com/google/go-containerregistry/name/repository.go b/vendor/github.com/google/go-containerregistry/pkg/name/repository.go similarity index 98% rename from vendor/github.com/google/go-containerregistry/name/repository.go rename to vendor/github.com/google/go-containerregistry/pkg/name/repository.go index 7c296e394a75..43cc5b82b3fb 100644 --- a/vendor/github.com/google/go-containerregistry/name/repository.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/repository.go @@ -79,7 +79,7 @@ func NewRepository(name string, strict Strictness) (Repository, error) { if len(parts) == 2 && (strings.ContainsRune(parts[0], '.') || strings.ContainsRune(parts[0], ':')) { // The first part of the repository is treated as the registry domain // iff it contains a '.' or ':' character, otherwise it is all repository - // and the domain defaults to DockerHub. + // and the domain defaults to Docker Hub. registry = parts[0] repo = parts[1] } diff --git a/vendor/github.com/google/go-containerregistry/name/tag.go b/vendor/github.com/google/go-containerregistry/pkg/name/tag.go similarity index 91% rename from vendor/github.com/google/go-containerregistry/name/tag.go rename to vendor/github.com/google/go-containerregistry/pkg/name/tag.go index cb0e70b177ce..b8375e1f9bde 100644 --- a/vendor/github.com/google/go-containerregistry/name/tag.go +++ b/vendor/github.com/google/go-containerregistry/pkg/name/tag.go @@ -76,7 +76,9 @@ func NewTag(name string, strict Strictness) (Tag, error) { tag := "" // Split on ":" - if parts := strings.Split(name, tagDelim); len(parts) >= 2 { + parts := strings.Split(name, tagDelim) + // Verify that we aren't confusing a tag for a hostname w/ port for the purposes of weak validation. + if len(parts) > 1 && !strings.Contains(parts[len(parts)-1], regRepoDelimiter) { base = strings.Join(parts[:len(parts)-1], tagDelim) tag = parts[len(parts)-1] } diff --git a/vendor/github.com/google/go-containerregistry/v1/config.go b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go similarity index 59% rename from vendor/github.com/google/go-containerregistry/v1/config.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/config.go index 4fa65155ec03..d1d809d911ce 100644 --- a/vendor/github.com/google/go-containerregistry/v1/config.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/config.go @@ -26,7 +26,7 @@ import ( type ConfigFile struct { Architecture string `json:"architecture"` Container string `json:"container"` - Created time.Time `json:"created"` + Created Time `json:"created"` DockerVersion string `json:"docker_version"` History []History `json:"history"` OS string `json:"os"` @@ -38,11 +38,23 @@ type ConfigFile struct { // History is one entry of a list recording how this container image was built. type History struct { - Author string `json:"author"` - Created time.Time `json:"created"` - CreatedBy string `json:"created_by"` - Comment string `json:"comment"` - EmptyLayer bool `json:"empty_layer,omitempty"` + Author string `json:"author"` + Created Time `json:"created"` + CreatedBy string `json:"created_by"` + Comment string `json:"comment"` + EmptyLayer bool `json:"empty_layer,omitempty"` +} + +// Time is a wrapper around time.Time to help with deep copying +type Time struct { + time.Time +} + +// DeepCopyInto creates a deep-copy of the Time value. The underlying time.Time +// type is effectively immutable in the time API, so it is safe to +// copy-by-assign, despite the presence of (unexported) Pointer fields. +func (t *Time) DeepCopyInto(out *Time) { + *out = *t } // RootFS holds the ordered list of file system deltas that comprise the @@ -52,6 +64,27 @@ type RootFS struct { DiffIDs []Hash `json:"diff_ids"` } +// HealthConfig holds configuration settings for the HEALTHCHECK feature. +type HealthConfig struct { + // Test is the test to perform to check that the container is healthy. + // An empty slice means to inherit the default. + // The options are: + // {} : inherit healthcheck + // {"NONE"} : disable healthcheck + // {"CMD", args...} : exec arguments directly + // {"CMD-SHELL", command} : run command with system's default shell + Test []string `json:",omitempty"` + + // Zero means to inherit. Durations are expressed as integer nanoseconds. + Interval time.Duration `json:",omitempty"` // Interval is the time to wait between checks. + Timeout time.Duration `json:",omitempty"` // Timeout is the time to wait before considering the check to have hung. + StartPeriod time.Duration `json:",omitempty"` // The start period for the container to initialize before the retries starts to count down. + + // Retries is the number of consecutive failures needed to consider a container as unhealthy. + // Zero means inherit. + Retries int `json:",omitempty"` +} + // Config is a submessage of the config file described as: // The execution parameters which SHOULD be used as a base when running // a container using the image. @@ -65,9 +98,10 @@ type Config struct { AttachStdin bool AttachStdout bool Cmd []string + Healthcheck *HealthConfig Domainname string Entrypoint []string - End []string + Env []string Hostname string Image string Labels map[string]string @@ -86,9 +120,8 @@ type Config struct { Shell []string } -// ParseConfigFile parses the io.ReadCloser's contents into a ConfigFile. -func ParseConfigFile(r io.ReadCloser) (*ConfigFile, error) { - defer r.Close() +// ParseConfigFile parses the io.Reader's contents into a ConfigFile. +func ParseConfigFile(r io.Reader) (*ConfigFile, error) { cf := ConfigFile{} if err := json.NewDecoder(r).Decode(&cf); err != nil { return nil, err diff --git a/vendor/github.com/google/go-containerregistry/v1/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/doc.go similarity index 84% rename from vendor/github.com/google/go-containerregistry/v1/doc.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/doc.go index 2aa71c57d28d..c9b203173e09 100644 --- a/vendor/github.com/google/go-containerregistry/v1/doc.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/doc.go @@ -13,4 +13,7 @@ // limitations under the License. // Package v1 defines structured types for OCI v1 images +// +k8s:deepcopy-gen=package + +//go:generate deepcopy-gen -O zz_deepcopy_generated --go-header-file $BOILER_PLATE_FILE -i . package v1 diff --git a/vendor/github.com/google/go-containerregistry/v1/hash.go b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go similarity index 95% rename from vendor/github.com/google/go-containerregistry/v1/hash.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/hash.go index 71f57bec058a..f0db0d51cfa0 100644 --- a/vendor/github.com/google/go-containerregistry/v1/hash.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/hash.go @@ -97,9 +97,8 @@ func (h *Hash) parse(unquoted string) error { return nil } -// SHA256 computes the Hash of the provided io.ReadCloser's content. -func SHA256(r io.ReadCloser) (Hash, int64, error) { - defer r.Close() +// SHA256 computes the Hash of the provided io.Reader's content. +func SHA256(r io.Reader) (Hash, int64, error) { hasher := sha256.New() n, err := io.Copy(hasher, r) if err != nil { diff --git a/vendor/github.com/google/go-containerregistry/v1/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/image.go similarity index 93% rename from vendor/github.com/google/go-containerregistry/v1/image.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/image.go index 9f7381cc30d4..05568aae0cc1 100644 --- a/vendor/github.com/google/go-containerregistry/v1/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/image.go @@ -15,13 +15,13 @@ package v1 import ( - "github.com/google/go-containerregistry/v1/types" + "github.com/google/go-containerregistry/pkg/v1/types" ) // Image defines the interface for interacting with an OCI v1 image. type Image interface { // Layers returns the ordered collection of filesystem layers that comprise this image. - // The order of the list is most-recent first, and oldest base layer last. + // The order of the list is oldest/base layer first, and most-recent/top layer last. Layers() ([]Layer, error) // BlobSet returns an unordered collection of all the blobs in the image. diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/scheme.go b/vendor/github.com/google/go-containerregistry/pkg/v1/index.go similarity index 50% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/scheme.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/index.go index b9d1dd3bf0f0..25ba29ed70e3 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/scheme.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/index.go @@ -12,31 +12,22 @@ // See the License for the specific language governing permissions and // limitations under the License. -package transport +package v1 import ( - "regexp" - "strings" - - "github.com/google/go-containerregistry/name" + "github.com/google/go-containerregistry/pkg/v1/types" ) -// Detect more complex forms of local references. -var reLocal = regexp.MustCompile(`.*\.local(?:host)?(?::\d{1,5})?$`) +type ImageIndex interface { + // MediaType of this image's manifest. + MediaType() (types.MediaType, error) + + // Digest returns the sha256 of this index's manifest. + Digest() (Hash, error) -// Detect the loopback IP (127.0.0.1) -var reLoopback = regexp.MustCompile(regexp.QuoteMeta("127.0.0.1")) + // IndexManifest returns this image index's manifest object. + IndexManifest() (*IndexManifest, error) -// Scheme returns https scheme for all the endpoints except localhost. -func Scheme(reg name.Registry) string { - if strings.HasPrefix(reg.Name(), "localhost:") { - return "http" - } - if reLocal.MatchString(reg.Name()) { - return "http" - } - if reLoopback.MatchString(reg.Name()) { - return "http" - } - return "https" + // RawIndexManifest returns the serialized bytes of IndexManifest(). + RawIndexManifest() ([]byte, error) } diff --git a/vendor/github.com/google/go-containerregistry/v1/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/layer.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/layer.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/layer.go diff --git a/vendor/github.com/google/go-containerregistry/v1/manifest.go b/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go similarity index 64% rename from vendor/github.com/google/go-containerregistry/v1/manifest.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go index 0cb6070a2ce9..932ae056a15d 100644 --- a/vendor/github.com/google/go-containerregistry/v1/manifest.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/manifest.go @@ -18,7 +18,7 @@ import ( "encoding/json" "io" - "github.com/google/go-containerregistry/v1/types" + "github.com/google/go-containerregistry/pkg/v1/types" ) // Manifest represents the OCI image manifest in a structured way. @@ -30,6 +30,14 @@ type Manifest struct { Annotations map[string]string `json:"annotations,omitempty"` } +// IndexManifest represents an OCI image index in a structured way. +type IndexManifest struct { + SchemaVersion int64 `json:"schemaVersion"` + MediaType types.MediaType `json:"mediaType,omitempty"` + Manifests []Descriptor `json:"manifests"` + Annotations map[string]string `json:"annotations,omitempty"` +} + // Descriptor holds a reference from the manifest to one of its constituent elements. type Descriptor struct { MediaType types.MediaType `json:"mediaType"` @@ -37,14 +45,23 @@ type Descriptor struct { Digest Hash `json:"digest"` URLs []string `json:"urls,omitempty"` Annotations map[string]string `json:"annotations,omitempty"` + Platform *Platform `json:"platform,omitempty"` } -// ParseManifest parses the io.ReadCloser's contents into a Manifest. -func ParseManifest(r io.ReadCloser) (*Manifest, error) { - defer r.Close() +// ParseManifest parses the io.Reader's contents into a Manifest. +func ParseManifest(r io.Reader) (*Manifest, error) { m := Manifest{} if err := json.NewDecoder(r).Decode(&m); err != nil { return nil, err } return &m, nil } + +// ParseIndexManifest parses the io.Reader's contents into an IndexManifest. +func ParseIndexManifest(r io.Reader) (*IndexManifest, error) { + im := IndexManifest{} + if err := json.NewDecoder(r).Decode(&im); err != nil { + return nil, err + } + return &im, nil +} diff --git a/vendor/github.com/google/go-containerregistry/v1/partial/compressed.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go similarity index 93% rename from vendor/github.com/google/go-containerregistry/v1/partial/compressed.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go index 6ee5ce85e60c..e6e4f4d42f6a 100644 --- a/vendor/github.com/google/go-containerregistry/v1/partial/compressed.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/compressed.go @@ -17,8 +17,8 @@ package partial import ( "io" - "github.com/google/go-containerregistry/v1" - "github.com/google/go-containerregistry/v1/v1util" + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/v1util" ) // CompressedLayer represents the bare minimum interface a natively @@ -50,10 +50,16 @@ func (ule *compressedLayerExtender) Uncompressed() (io.ReadCloser, error) { // DiffID implements v1.Layer func (ule *compressedLayerExtender) DiffID() (v1.Hash, error) { + // If our nested CompressedLayer implements DiffID, + // then delegate to it instead. + if wdi, ok := ule.CompressedLayer.(WithDiffID); ok { + return wdi.DiffID() + } r, err := ule.Uncompressed() if err != nil { return v1.Hash{}, err } + defer r.Close() h, _, err := v1.SHA256(r) return h, err } diff --git a/vendor/github.com/google/go-containerregistry/v1/partial/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/doc.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/partial/doc.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/partial/doc.go diff --git a/vendor/github.com/google/go-containerregistry/v1/partial/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go similarity index 94% rename from vendor/github.com/google/go-containerregistry/v1/partial/image.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go index b82ea36b69b4..5d6da39d24ce 100644 --- a/vendor/github.com/google/go-containerregistry/v1/partial/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/image.go @@ -15,7 +15,7 @@ package partial import ( - "github.com/google/go-containerregistry/v1/types" + "github.com/google/go-containerregistry/pkg/v1/types" ) // imageCore is the core set of properties without which we cannot build a v1.Image diff --git a/vendor/github.com/google/go-containerregistry/v1/partial/uncompressed.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go similarity index 94% rename from vendor/github.com/google/go-containerregistry/v1/partial/uncompressed.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go index 444dc93a5c2e..7afa187b872d 100644 --- a/vendor/github.com/google/go-containerregistry/v1/partial/uncompressed.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/uncompressed.go @@ -19,9 +19,9 @@ import ( "io" "sync" - "github.com/google/go-containerregistry/v1" - "github.com/google/go-containerregistry/v1/types" - "github.com/google/go-containerregistry/v1/v1util" + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/types" + "github.com/google/go-containerregistry/pkg/v1/v1util" ) // UncompressedLayer represents the bare minimum interface a natively @@ -56,6 +56,7 @@ func (ule *uncompressedLayerExtender) Digest() (v1.Hash, error) { if err != nil { return v1.Hash{}, err } + defer r.Close() h, _, err := v1.SHA256(r) return h, err } @@ -66,6 +67,7 @@ func (ule *uncompressedLayerExtender) Size() (int64, error) { if err != nil { return -1, err } + defer r.Close() _, i, err := v1.SHA256(r) return i, err } @@ -126,7 +128,8 @@ func (i *uncompressedImageExtender) Manifest() (*v1.Manifest, error) { if err != nil { return nil, err } - cfgHash, cfgSize, err := v1.SHA256(v1util.NopReadCloser(bytes.NewBuffer(b))) + + cfgHash, cfgSize, err := v1.SHA256(bytes.NewReader(b)) if err != nil { return nil, err } @@ -146,7 +149,8 @@ func (i *uncompressedImageExtender) Manifest() (*v1.Manifest, error) { return nil, err } - for _, l := range ls { + m.Layers = make([]v1.Descriptor, len(ls)) + for i, l := range ls { sz, err := l.Size() if err != nil { return nil, err @@ -155,11 +159,12 @@ func (i *uncompressedImageExtender) Manifest() (*v1.Manifest, error) { if err != nil { return nil, err } - m.Layers = append(m.Layers, v1.Descriptor{ + + m.Layers[i] = v1.Descriptor{ MediaType: types.DockerLayer, Size: sz, Digest: h, - }) + } } i.manifest = m diff --git a/vendor/github.com/google/go-containerregistry/v1/partial/with.go b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go similarity index 92% rename from vendor/github.com/google/go-containerregistry/v1/partial/with.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go index 4c0a90097cf0..bc6fd8e9f56e 100644 --- a/vendor/github.com/google/go-containerregistry/v1/partial/with.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/partial/with.go @@ -19,10 +19,9 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" - "github.com/google/go-containerregistry/v1" - "github.com/google/go-containerregistry/v1/v1util" + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/v1util" ) // WithRawConfigFile defines the subset of v1.Image used by these helper methods @@ -37,7 +36,7 @@ func ConfigFile(i WithRawConfigFile) (*v1.ConfigFile, error) { if err != nil { return nil, err } - return v1.ParseConfigFile(v1util.NopReadCloser(bytes.NewBuffer(b))) + return v1.ParseConfigFile(bytes.NewReader(b)) } // ConfigName is a helper for implementing v1.Image @@ -46,7 +45,7 @@ func ConfigName(i WithRawConfigFile) (v1.Hash, error) { if err != nil { return v1.Hash{}, err } - h, _, err := v1.SHA256(v1util.NopReadCloser(bytes.NewBuffer(b))) + h, _, err := v1.SHA256(bytes.NewReader(b)) return h, err } @@ -111,11 +110,7 @@ func DiffIDs(i WithConfigFile) ([]v1.Hash, error) { if err != nil { return nil, err } - dids := make([]v1.Hash, len(cfg.RootFS.DiffIDs)) - for i, did := range cfg.RootFS.DiffIDs { - dids[len(dids)-i-1] = did - } - return dids, nil + return cfg.RootFS.DiffIDs, nil } // RawConfigFile is a helper for implementing v1.Image @@ -154,7 +149,7 @@ func Digest(i WithRawManifest) (v1.Hash, error) { if err != nil { return v1.Hash{}, err } - digest, _, err := v1.SHA256(ioutil.NopCloser(bytes.NewReader(mb))) + digest, _, err := v1.SHA256(bytes.NewReader(mb)) return digest, err } @@ -164,7 +159,7 @@ func Manifest(i WithRawManifest) (*v1.Manifest, error) { if err != nil { return nil, err } - return v1.ParseManifest(v1util.NopReadCloser(bytes.NewBuffer(b))) + return v1.ParseManifest(bytes.NewReader(b)) } // WithManifest defines the subset of v1.Image used by these helper methods @@ -190,7 +185,7 @@ func FSLayers(i WithManifest) ([]v1.Hash, error) { } fsl := make([]v1.Hash, len(m.Layers)) for i, l := range m.Layers { - fsl[len(fsl)-i-1] = l.Digest + fsl[i] = l.Digest } return fsl, nil } @@ -290,3 +285,8 @@ func UncompressedBlob(b WithBlob, h v1.Hash) (io.ReadCloser, error) { } return v1util.GunzipReadCloser(rc) } + +// WithDiffID defines the subset of v1.Layer for exposing the DiffID method. +type WithDiffID interface { + DiffID() (v1.Hash, error) +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go b/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go new file mode 100644 index 000000000000..df9b2959e396 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/platform.go @@ -0,0 +1,24 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +package v1 + +// Platform represents the target os/arch for an image. +type Platform struct { + Architecture string `json:"architecture"` + OS string `json:"os"` + OSVersion string `json:"os.version,omitempty"` + OSFeatures []string `json:"os.features,omitempty"` + Variant string `json:"variant,omitempty"` +} diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/delete.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go similarity index 83% rename from vendor/github.com/google/go-containerregistry/v1/remote/delete.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go index 48f2c44a8f3b..5108a05dea97 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/delete.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/delete.go @@ -20,9 +20,9 @@ import ( "net/http" "net/url" - "github.com/google/go-containerregistry/authn" - "github.com/google/go-containerregistry/name" - "github.com/google/go-containerregistry/v1/remote/transport" + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) // DeleteOptions are used to expose optional information to guide or @@ -34,14 +34,15 @@ type DeleteOptions struct { // Delete removes the specified image reference from the remote registry. func Delete(ref name.Reference, auth authn.Authenticator, t http.RoundTripper, do DeleteOptions) error { - tr, err := transport.New(ref, auth, t, transport.DeleteScope) + scopes := []string{ref.Scope(transport.DeleteScope)} + tr, err := transport.New(ref.Context().Registry, auth, t, scopes) if err != nil { return err } c := &http.Client{Transport: tr} u := url.URL{ - Scheme: transport.Scheme(ref.Context().Registry), + Scheme: ref.Context().Registry.Scheme(), Host: ref.Context().RegistryStr(), Path: fmt.Sprintf("/v2/%s/manifests/%s", ref.Context().RepositoryStr(), ref.Identifier()), } diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/doc.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/remote/doc.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/doc.go diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/error.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go similarity index 98% rename from vendor/github.com/google/go-containerregistry/v1/remote/error.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go index 8c4b814e247f..076274821e8d 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/error.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/error.go @@ -83,7 +83,7 @@ const ( UnsupportedErrorCode ErrorCode = "UNSUPPORTED" ) -func checkError(resp *http.Response, codes ...int) error { +func CheckError(resp *http.Response, codes ...int) error { for _, code := range codes { if resp.StatusCode == code { // This is one of the supported status codes. diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go similarity index 68% rename from vendor/github.com/google/go-containerregistry/v1/remote/image.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go index 4b5dcee4015c..e2995a00f56d 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/image.go @@ -19,18 +19,17 @@ import ( "fmt" "io" "io/ioutil" - "log" "net/http" "net/url" "sync" - "github.com/google/go-containerregistry/authn" - "github.com/google/go-containerregistry/name" - "github.com/google/go-containerregistry/v1" - "github.com/google/go-containerregistry/v1/partial" - "github.com/google/go-containerregistry/v1/remote/transport" - "github.com/google/go-containerregistry/v1/types" - "github.com/google/go-containerregistry/v1/v1util" + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" + "github.com/google/go-containerregistry/pkg/v1/types" + "github.com/google/go-containerregistry/pkg/v1/v1util" ) // remoteImage accesses an image from a remote registry @@ -43,23 +42,58 @@ type remoteImage struct { config []byte } +type ImageOption func(*imageOpener) error + var _ partial.CompressedImageCore = (*remoteImage)(nil) -// Image accesses a given image reference over the provided transport, with the provided authentication. -func Image(ref name.Reference, auth authn.Authenticator, t http.RoundTripper) (v1.Image, error) { - tr, err := transport.New(ref, auth, t, transport.PullScope) +type imageOpener struct { + auth authn.Authenticator + transport http.RoundTripper + ref name.Reference + client *http.Client +} + +func (i *imageOpener) Open() (v1.Image, error) { + tr, err := transport.New(i.ref.Context().Registry, i.auth, i.transport, []string{i.ref.Scope(transport.PullScope)}) if err != nil { return nil, err } - return partial.CompressedToImage(&remoteImage{ - ref: ref, + ri := &remoteImage{ + ref: i.ref, client: &http.Client{Transport: tr}, - }) + } + imgCore, err := partial.CompressedToImage(ri) + if err != nil { + return imgCore, err + } + // Wrap the v1.Layers returned by this v1.Image in a hint for downstream + // remote.Write calls to facilitate cross-repo "mounting". + return &mountableImage{ + Image: imgCore, + Reference: i.ref, + }, nil +} + +// Image provides access to a remote image reference, applying functional options +// to the underlying imageOpener before resolving the reference into a v1.Image. +func Image(ref name.Reference, options ...ImageOption) (v1.Image, error) { + img := &imageOpener{ + auth: authn.Anonymous, + transport: http.DefaultTransport, + ref: ref, + } + + for _, option := range options { + if err := option(img); err != nil { + return nil, err + } + } + return img.Open() } func (r *remoteImage) url(resource, identifier string) url.URL { return url.URL{ - Scheme: transport.Scheme(r.ref.Context().Registry), + Scheme: r.ref.Context().Registry.Scheme(), Host: r.ref.Context().RegistryStr(), Path: fmt.Sprintf("/v2/%s/%s/%s", r.ref.Context().RepositoryStr(), resource, identifier), } @@ -91,7 +125,7 @@ func (r *remoteImage) RawManifest() ([]byte, error) { } defer resp.Body.Close() - if err := checkError(resp, http.StatusOK); err != nil { + if err := CheckError(resp, http.StatusOK); err != nil { return nil, err } @@ -100,7 +134,7 @@ func (r *remoteImage) RawManifest() ([]byte, error) { return nil, err } - digest, _, err := v1.SHA256(ioutil.NopCloser(bytes.NewReader(manifest))) + digest, _, err := v1.SHA256(bytes.NewReader(manifest)) if err != nil { return nil, err } @@ -114,7 +148,6 @@ func (r *remoteImage) RawManifest() ([]byte, error) { err := fmt.Errorf("manifest digest: %q does not match Docker-Content-Digest: %q for %q", digest, checksum, r.ref) if r.ref.Context().RegistryStr() == name.DefaultRegistry { // TODO(docker/distribution#2395): Remove this check. - log.Println(err) } else { // When pulling by tag, we can only validate that the digest matches what the registry told us it should be. return nil, err @@ -173,7 +206,7 @@ func (rl *remoteLayer) Compressed() (io.ReadCloser, error) { return nil, err } - if err := checkError(resp, http.StatusOK); err != nil { + if err := CheckError(resp, http.StatusOK); err != nil { resp.Body.Close() return nil, err } @@ -192,6 +225,17 @@ func (rl *remoteLayer) Size() (int64, error) { return partial.BlobSize(rl, rl.digest) } +// ConfigFile implements partial.WithManifestAndConfigFile so that we can use partial.BlobToDiffID below. +func (rl *remoteLayer) ConfigFile() (*v1.ConfigFile, error) { + return partial.ConfigFile(rl.ri) +} + +// DiffID implements partial.WithDiffID so that we don't recompute a DiffID that we already have +// available in our ConfigFile. +func (rl *remoteLayer) DiffID() (v1.Hash, error) { + return partial.BlobToDiffID(rl, rl.digest) +} + // LayerByDigest implements partial.CompressedLayer func (r *remoteImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, error) { return &remoteLayer{ diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go new file mode 100644 index 000000000000..17c00b5e762e --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/list.go @@ -0,0 +1,64 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +package remote + +import ( + "encoding/json" + "fmt" + "net/http" + "net/url" + + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" +) + +type Tags struct { + Name string `json:"name"` + Tags []string `json:"tags"` +} + +// TODO(jonjohnsonjr): return []name.Tag? +func List(repo name.Repository, auth authn.Authenticator, t http.RoundTripper) ([]string, error) { + scopes := []string{repo.Scope(transport.PullScope)} + tr, err := transport.New(repo.Registry, auth, t, scopes) + if err != nil { + return nil, err + } + + uri := url.URL{ + Scheme: repo.Registry.Scheme(), + Host: repo.Registry.RegistryStr(), + Path: fmt.Sprintf("/v2/%s/tags/list", repo.RepositoryStr()), + } + + client := http.Client{Transport: tr} + resp, err := client.Get(uri.String()) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + if err := CheckError(resp, http.StatusOK); err != nil { + return nil, err + } + + tags := Tags{} + if err := json.NewDecoder(resp.Body).Decode(&tags); err != nil { + return nil, err + } + + return tags.Tags, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go new file mode 100644 index 000000000000..13b79064da0a --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/mount.go @@ -0,0 +1,77 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +package remote + +import ( + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1" +) + +// MountableLayer wraps a v1.Layer in a shim that enables the layer to be +// "mounted" when published to another registry. +type MountableLayer struct { + v1.Layer + + Reference name.Reference +} + +// mountableImage wraps the v1.Layer references returned by the embedded v1.Image +// in MountableLayer's so that remote.Write might attempt to mount them from their +// source repository. +type mountableImage struct { + v1.Image + + Reference name.Reference +} + +// Layers implements v1.Image +func (mi *mountableImage) Layers() ([]v1.Layer, error) { + ls, err := mi.Image.Layers() + if err != nil { + return nil, err + } + mls := make([]v1.Layer, 0, len(ls)) + for _, l := range ls { + mls = append(mls, &MountableLayer{ + Layer: l, + Reference: mi.Reference, + }) + } + return mls, nil +} + +// LayerByDigest implements v1.Image +func (mi *mountableImage) LayerByDigest(d v1.Hash) (v1.Layer, error) { + l, err := mi.Image.LayerByDigest(d) + if err != nil { + return nil, err + } + return &MountableLayer{ + Layer: l, + Reference: mi.Reference, + }, nil +} + +// LayerByDiffID implements v1.Image +func (mi *mountableImage) LayerByDiffID(d v1.Hash) (v1.Layer, error) { + l, err := mi.Image.LayerByDiffID(d) + if err != nil { + return nil, err + } + return &MountableLayer{ + Layer: l, + Reference: mi.Reference, + }, nil +} diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go new file mode 100644 index 000000000000..a6e9584ee3bf --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/options.go @@ -0,0 +1,56 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +package remote + +import ( + "log" + "net/http" + + "github.com/google/go-containerregistry/pkg/authn" +) + +// WithTransport is a functional option for overriding the default transport +// on a remote image +func WithTransport(t http.RoundTripper) ImageOption { + return func(i *imageOpener) error { + i.transport = t + return nil + } +} + +// WithAuth is a functional option for overriding the default authenticator +// on a remote image +func WithAuth(auth authn.Authenticator) ImageOption { + return func(i *imageOpener) error { + i.auth = auth + return nil + } +} + +// WithAuthFromKeychain is a functional option for overriding the default +// authenticator on a remote image using an authn.Keychain +func WithAuthFromKeychain(keys authn.Keychain) ImageOption { + return func(i *imageOpener) error { + auth, err := keys.Resolve(i.ref.Context().Registry) + if err != nil { + return err + } + if auth == authn.Anonymous { + log.Println("No matching credentials were found, falling back on anonymous") + } + i.auth = auth + return nil + } +} diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/basic.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go similarity index 96% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/basic.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go index a9ab46beb33d..752038cb1fd0 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/basic.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/basic.go @@ -17,7 +17,7 @@ package transport import ( "net/http" - "github.com/google/go-containerregistry/authn" + "github.com/google/go-containerregistry/pkg/authn" ) type basicTransport struct { diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/bearer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go similarity index 76% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/bearer.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go index febe7dc8a9d8..7dd49ae6f859 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/bearer.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/bearer.go @@ -15,13 +15,15 @@ package transport import ( + "fmt" + "encoding/json" "io/ioutil" "net/http" "net/url" - "github.com/google/go-containerregistry/authn" - "github.com/google/go-containerregistry/name" + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" ) type bearerTransport struct { @@ -37,7 +39,7 @@ type bearerTransport struct { realm string // See https://docs.docker.com/registry/spec/auth/token/ service string - scope string + scopes []string } var _ http.RoundTripper = (*bearerTransport)(nil) @@ -75,7 +77,7 @@ func (bt *bearerTransport) refresh() error { client := http.Client{Transport: b} u.RawQuery = url.Values{ - "scope": []string{bt.scope}, + "scope": bt.scopes, "service": []string{bt.service}, }.Encode() @@ -90,12 +92,28 @@ func (bt *bearerTransport) refresh() error { return err } - // Parse the response into a Bearer authenticator - bearer := &authn.Bearer{} - if err := json.Unmarshal(content, bearer); err != nil { + // Some registries don't have "token" in the response. See #54. + type tokenResponse struct { + Token string `json:"token"` + AccessToken string `json:"access_token"` + } + + var response tokenResponse + if err := json.Unmarshal(content, &response); err != nil { return err } + + // Find a token to turn into a Bearer authenticator + var bearer authn.Bearer + if response.Token != "" { + bearer = authn.Bearer{Token: response.Token} + } else if response.AccessToken != "" { + bearer = authn.Bearer{Token: response.AccessToken} + } else { + return fmt.Errorf("no token in bearer response:\n%s", content) + } + // Replace our old bearer authenticator (if we had one) with our newly refreshed authenticator. - bt.bearer = bearer + bt.bearer = &bearer return nil } diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/doc.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/doc.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/doc.go diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/ping.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go similarity index 85% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/ping.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go index 82d754649066..89133e32637d 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/ping.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/ping.go @@ -19,15 +19,15 @@ import ( "net/http" "strings" - "github.com/google/go-containerregistry/name" + "github.com/google/go-containerregistry/pkg/name" ) type challenge string const ( - anonymous challenge = "Anonymous" - basic challenge = "Basic" - bearer challenge = "Bearer" + anonymous challenge = "anonymous" + basic challenge = "basic" + bearer challenge = "bearer" ) type pingResp struct { @@ -38,6 +38,10 @@ type pingResp struct { parameters map[string]string } +func (c challenge) Canonical() challenge { + return challenge(strings.ToLower(string(c))) +} + func parseChallenge(suffix string) map[string]string { kv := make(map[string]string) for _, token := range strings.Split(suffix, ",") { @@ -59,7 +63,7 @@ func parseChallenge(suffix string) map[string]string { func ping(reg name.Registry, t http.RoundTripper) (*pingResp, error) { client := http.Client{Transport: t} - url := fmt.Sprintf("%s://%s/v2/", Scheme(reg), reg.Name()) + url := fmt.Sprintf("%s://%s/v2/", reg.Scheme(), reg.Name()) resp, err := client.Get(url) if err != nil { return nil, err @@ -75,13 +79,13 @@ func ping(reg name.Registry, t http.RoundTripper) (*pingResp, error) { if parts := strings.SplitN(wac, " ", 2); len(parts) == 2 { // If there are two parts, then parse the challenge parameters. return &pingResp{ - challenge: challenge(strings.Title(parts[0])), + challenge: challenge(parts[0]).Canonical(), parameters: parseChallenge(parts[1]), }, nil } // Otherwise, just return the challenge without parameters. return &pingResp{ - challenge: challenge(strings.Title(wac)), + challenge: challenge(wac).Canonical(), }, nil default: return nil, fmt.Errorf("unrecognized HTTP status: %v", resp.Status) diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/scope.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go similarity index 73% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/scope.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go index 7f5a8bf0a5a7..c3b56f7a41c1 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/scope.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/scope.go @@ -14,14 +14,11 @@ package transport -// Scope is an enumeration of the supported scopes to pass a transport. -type Scope string - -// Scopes suitable to pass to New() +// Scopes suitable to qualify each Repository const ( - PullScope Scope = "pull" - PushScope Scope = "push,pull" + PullScope string = "pull" + PushScope string = "push,pull" // For now DELETE is PUSH, which is the read/write ACL. - DeleteScope Scope = PushScope - CatalogScope Scope = "catalog" + DeleteScope string = PushScope + CatalogScope string = "catalog" ) diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/transport.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go similarity index 78% rename from vendor/github.com/google/go-containerregistry/v1/remote/transport/transport.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go index 9ef17ac1c2d0..6140ab2ce3e5 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/transport.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/transport/transport.go @@ -18,8 +18,8 @@ import ( "fmt" "net/http" - "github.com/google/go-containerregistry/authn" - "github.com/google/go-containerregistry/name" + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" ) const ( @@ -27,9 +27,9 @@ const ( ) // New returns a new RoundTripper based on the provided RoundTripper that has been -// setup to authenticate with the remote registry hosting "ref", in the capacity -// laid out by the specified Scope. -func New(ref name.Reference, auth authn.Authenticator, t http.RoundTripper, a Scope) (http.RoundTripper, error) { +// setup to authenticate with the remote registry "reg", in the capacity +// laid out by the specified scopes. +func New(reg name.Registry, auth authn.Authenticator, t http.RoundTripper, scopes []string) (http.RoundTripper, error) { // The handshake: // 1. Use "t" to ping() the registry for the authentication challenge. // @@ -44,16 +44,16 @@ func New(ref name.Reference, auth authn.Authenticator, t http.RoundTripper, a Sc // First we ping the registry to determine the parameters of the authentication handshake // (if one is even necessary). - pr, err := ping(ref.Context().Registry, t) + pr, err := ping(reg, t) if err != nil { return nil, err } - switch pr.challenge { + switch pr.challenge.Canonical() { case anonymous: return t, nil case basic: - return &basicTransport{inner: t, auth: auth, target: ref.Context().RegistryStr()}, nil + return &basicTransport{inner: t, auth: auth, target: reg.RegistryStr()}, nil case bearer: // We require the realm, which tells us where to send our Basic auth to turn it into Bearer auth. realm, ok := pr.parameters["realm"] @@ -64,15 +64,15 @@ func New(ref name.Reference, auth authn.Authenticator, t http.RoundTripper, a Sc if !ok { // If the service parameter is not specified, then default it to the registry // with which we are talking. - service = ref.Context().Registry.String() + service = reg.String() } bt := &bearerTransport{ inner: t, basic: auth, realm: realm, - registry: ref.Context().Registry, + registry: reg, service: service, - scope: ref.Scope(string(a)), + scopes: scopes, } if err := bt.refresh(); err != nil { return nil, err diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go similarity index 70% rename from vendor/github.com/google/go-containerregistry/v1/remote/write.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go index fe8eb69c6f5a..af61e361becf 100644 --- a/vendor/github.com/google/go-containerregistry/v1/remote/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/remote/write.go @@ -22,24 +22,29 @@ import ( "net/http" "net/url" - "github.com/google/go-containerregistry/authn" - "github.com/google/go-containerregistry/name" - "github.com/google/go-containerregistry/v1" - "github.com/google/go-containerregistry/v1/remote/transport" + "github.com/google/go-containerregistry/pkg/authn" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/remote/transport" ) // WriteOptions are used to expose optional information to guide or // control the image write. type WriteOptions struct { - // The set of paths from which to attempt to mount blobs. - MountPaths []name.Repository // TODO(mattmoor): Expose "threads" to limit parallelism? } // Write pushes the provided img to the specified image reference. func Write(ref name.Reference, img v1.Image, auth authn.Authenticator, t http.RoundTripper, wo WriteOptions) error { - tr, err := transport.New(ref, auth, t, transport.PushScope) + + ls, err := img.Layers() + if err != nil { + return err + } + + scopes := scopesForUploadingImage(ref, ls) + tr, err := transport.New(ref.Context().Registry, auth, t, scopes) if err != nil { return err } @@ -93,7 +98,7 @@ type writer struct { // url returns a url.Url for the specified path in the context of this remote image reference. func (w *writer) url(path string) url.URL { return url.URL{ - Scheme: transport.Scheme(w.ref.Context().Registry), + Scheme: w.ref.Context().Registry.Scheme(), Host: w.ref.Context().RegistryStr(), Path: path, } @@ -115,6 +120,26 @@ func (w *writer) nextLocation(resp *http.Response) (string, error) { return resp.Request.URL.ResolveReference(u).String(), nil } +// checkExisting checks if a blob exists already in the repository by making a +// HEAD request to the blob store API. GCR performs an existence check on the +// initiation if "mount" is specified, even if no "from" sources are specified. +// However, this is not broadly applicable to all registries, e.g. ECR. +func (w *writer) checkExisting(h v1.Hash) (bool, error) { + u := w.url(fmt.Sprintf("/v2/%s/blobs/%s", w.ref.Context().RepositoryStr(), h.String())) + + resp, err := w.client.Head(u.String()) + if err != nil { + return false, err + } + defer resp.Body.Close() + + if err := CheckError(resp, http.StatusOK, http.StatusNotFound); err != nil { + return false, err + } + + return resp.StatusCode == http.StatusOK, nil +} + // initiateUpload initiates the blob upload, which starts with a POST that can // optionally include the hash of the layer and a list of repositories from // which that layer might be read. On failure, an error is returned. @@ -126,16 +151,15 @@ func (w *writer) initiateUpload(h v1.Hash) (location string, mounted bool, err e uv := url.Values{ "mount": []string{h.String()}, } - var from []string - for _, m := range w.options.MountPaths { - from = append(from, m.RepositoryStr()) + l, err := w.img.LayerByDigest(h) + if err != nil { + return "", false, err } - // We currently avoid HEAD because it's semi-redundant with the mount that is part - // of initiating the blob upload. GCR will perform an existence check on the initiation - // if "mount" is specified, even if no "from" sources are specified. If this turns out - // to not be broadly applicable then we should replace mounts without "from"s with a HEAD. - if len(from) > 0 { - uv["from"] = from + + if ml, ok := l.(*MountableLayer); ok { + if w.ref.Context().RegistryStr() == ml.Reference.Context().RegistryStr() { + uv["from"] = []string{ml.Reference.Context().RepositoryStr()} + } } u.RawQuery = uv.Encode() @@ -146,7 +170,7 @@ func (w *writer) initiateUpload(h v1.Hash) (location string, mounted bool, err e } defer resp.Body.Close() - if err := checkError(resp, http.StatusCreated, http.StatusAccepted); err != nil { + if err := CheckError(resp, http.StatusCreated, http.StatusAccepted); err != nil { return "", false, err } @@ -189,7 +213,7 @@ func (w *writer) streamBlob(h v1.Hash, streamLocation string) (commitLocation st } defer resp.Body.Close() - if err := checkError(resp, http.StatusNoContent, http.StatusAccepted, http.StatusCreated); err != nil { + if err := CheckError(resp, http.StatusNoContent, http.StatusAccepted, http.StatusCreated); err != nil { return "", err } @@ -219,16 +243,25 @@ func (w *writer) commitBlob(h v1.Hash, location string) (err error) { } defer resp.Body.Close() - return checkError(resp, http.StatusCreated) + return CheckError(resp, http.StatusCreated) } // uploadOne performs a complete upload of a single layer. func (w *writer) uploadOne(h v1.Hash) error { + existing, err := w.checkExisting(h) + if err != nil { + return err + } + if existing { + log.Printf("existing blob: %v", h) + return nil + } + location, mounted, err := w.initiateUpload(h) if err != nil { return err } else if mounted { - log.Printf("mounted %v", h) + log.Printf("mounted blob: %v", h) return nil } @@ -240,7 +273,7 @@ func (w *writer) uploadOne(h v1.Hash) error { if err := w.commitBlob(h, location); err != nil { return err } - log.Printf("pushed %v", h) + log.Printf("pushed blob %v", h) return nil } @@ -270,12 +303,42 @@ func (w *writer) commitImage() error { } defer resp.Body.Close() - if err := checkError(resp, http.StatusOK, http.StatusCreated, http.StatusAccepted); err != nil { + if err := CheckError(resp, http.StatusOK, http.StatusCreated, http.StatusAccepted); err != nil { return err } + + digest, err := w.img.Digest() + if err != nil { + return err + } + // The image was successfully pushed! - log.Printf("pushed %v", w.ref) + log.Printf("%v: digest: %v size: %d", w.ref, digest, len(raw)) return nil } +func scopesForUploadingImage(ref name.Reference, layers []v1.Layer) []string { + // use a map as set to remove duplicates scope strings + scopeSet := map[string]struct{}{} + + for _, l := range layers { + if ml, ok := l.(*MountableLayer); ok { + // we add push scope for ref.Context() after the loop + if ml.Reference.Context() != ref.Context() { + scopeSet[ml.Reference.Context().Scope(transport.PullScope)] = struct{}{} + } + } + } + + scopes := make([]string, 0) + // Push scope should be the first element because a few registries just look at the first scope to determine access. + scopes = append(scopes, ref.Scope(transport.PushScope)) + + for scope, _ := range scopeSet { + scopes = append(scopes, scope) + } + + return scopes +} + // TODO(mattmoor): WriteIndex diff --git a/vendor/github.com/google/go-containerregistry/v1/tarball/doc.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/doc.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/tarball/doc.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/tarball/doc.go diff --git a/vendor/github.com/google/go-containerregistry/v1/tarball/image.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go similarity index 82% rename from vendor/github.com/google/go-containerregistry/v1/tarball/image.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go index 47126f0f6834..2a62327ce6c4 100644 --- a/vendor/github.com/google/go-containerregistry/v1/tarball/image.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/image.go @@ -25,15 +25,15 @@ import ( "os" "sync" - "github.com/google/go-containerregistry/name" - "github.com/google/go-containerregistry/v1" - "github.com/google/go-containerregistry/v1/partial" - "github.com/google/go-containerregistry/v1/types" - "github.com/google/go-containerregistry/v1/v1util" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/partial" + "github.com/google/go-containerregistry/pkg/v1/types" + "github.com/google/go-containerregistry/pkg/v1/v1util" ) type image struct { - path string + opener Opener td *tarDescriptor config []byte imgDescriptor *singleImageTarDescriptor @@ -51,11 +51,26 @@ type compressedImage struct { manifest *v1.Manifest } +var _ partial.UncompressedImageCore = (*uncompressedImage)(nil) +var _ partial.CompressedImageCore = (*compressedImage)(nil) + +type Opener func() (io.ReadCloser, error) + +func pathOpener(path string) Opener { + return func() (io.ReadCloser, error) { + return os.Open(path) + } +} + +func ImageFromPath(path string, tag *name.Tag) (v1.Image, error) { + return Image(pathOpener(path), tag) +} + // Image exposes an image from the tarball at the provided path. -func Image(path string, tag *name.Tag) (v1.Image, error) { +func Image(opener Opener, tag *name.Tag) (v1.Image, error) { img := &image{ - path: path, - tag: tag, + opener: opener, + tag: tag, } if err := img.loadTarDescriptorAndConfig(); err != nil { return nil, err @@ -121,7 +136,7 @@ func (i *image) areLayersCompressed() (bool, error) { return false, errors.New("0 layers found in image") } layer := i.imgDescriptor.Layers[0] - blob, err := extractFileFromTar(i.path, layer) + blob, err := extractFileFromTar(i.opener, layer) if err != nil { return false, err } @@ -130,7 +145,7 @@ func (i *image) areLayersCompressed() (bool, error) { } func (i *image) loadTarDescriptorAndConfig() error { - td, err := extractFileFromTar(i.path, "manifest.json") + td, err := extractFileFromTar(i.opener, "manifest.json") if err != nil { return err } @@ -145,7 +160,7 @@ func (i *image) loadTarDescriptorAndConfig() error { return err } - cfg, err := extractFileFromTar(i.path, i.imgDescriptor.Config) + cfg, err := extractFileFromTar(i.opener, i.imgDescriptor.Config) if err != nil { return err } @@ -168,8 +183,8 @@ type tarFile struct { io.Closer } -func extractFileFromTar(tarPath string, filePath string) (io.ReadCloser, error) { - f, err := os.Open(tarPath) +func extractFileFromTar(opener Opener, filePath string) (io.ReadCloser, error) { + f, err := opener() if err != nil { return nil, err } @@ -195,7 +210,7 @@ func extractFileFromTar(tarPath string, filePath string) (io.ReadCloser, error) // uncompressedLayerFromTarball implements partial.UncompressedLayer type uncompressedLayerFromTarball struct { diffID v1.Hash - tarPath string + opener Opener filePath string } @@ -206,7 +221,7 @@ func (ulft *uncompressedLayerFromTarball) DiffID() (v1.Hash, error) { // Uncompressed implements partial.UncompressedLayer func (ulft *uncompressedLayerFromTarball) Uncompressed() (io.ReadCloser, error) { - return extractFileFromTar(ulft.tarPath, ulft.filePath) + return extractFileFromTar(ulft.opener, ulft.filePath) } func (i *uncompressedImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, error) { @@ -218,7 +233,7 @@ func (i *uncompressedImage) LayerByDiffID(h v1.Hash) (partial.UncompressedLayer, if diffID == h { return &uncompressedLayerFromTarball{ diffID: diffID, - tarPath: i.path, + opener: i.opener, filePath: i.imgDescriptor.Layers[idx], }, nil } @@ -238,7 +253,7 @@ func (c *compressedImage) Manifest() (*v1.Manifest, error) { return nil, err } - cfgHash, cfgSize, err := v1.SHA256(v1util.NopReadCloser(bytes.NewBuffer(b))) + cfgHash, cfgSize, err := v1.SHA256(bytes.NewReader(b)) if err != nil { return nil, err } @@ -254,10 +269,11 @@ func (c *compressedImage) Manifest() (*v1.Manifest, error) { } for _, p := range c.imgDescriptor.Layers { - l, err := extractFileFromTar(c.path, p) + l, err := extractFileFromTar(c.opener, p) if err != nil { return nil, err } + defer l.Close() sha, size, err := v1.SHA256(l) if err != nil { return nil, err @@ -278,18 +294,18 @@ func (c *compressedImage) RawManifest() ([]byte, error) { // compressedLayerFromTarball implements partial.CompressedLayer type compressedLayerFromTarball struct { digest v1.Hash - tarPath string + opener Opener filePath string } -// DiffID implements partial.CompressedLayer +// Digest implements partial.CompressedLayer func (clft *compressedLayerFromTarball) Digest() (v1.Hash, error) { return clft.digest, nil } // Compressed implements partial.CompressedLayer func (clft *compressedLayerFromTarball) Compressed() (io.ReadCloser, error) { - return extractFileFromTar(clft.tarPath, clft.filePath) + return extractFileFromTar(clft.opener, clft.filePath) } // Size implements partial.CompressedLayer @@ -298,6 +314,7 @@ func (clft *compressedLayerFromTarball) Size() (int64, error) { if err != nil { return -1, err } + defer r.Close() _, i, err := v1.SHA256(r) return i, err } @@ -312,7 +329,7 @@ func (c *compressedImage) LayerByDigest(h v1.Hash) (partial.CompressedLayer, err fp := c.imgDescriptor.Layers[i] return &compressedLayerFromTarball{ digest: h, - tarPath: c.path, + opener: c.opener, filePath: fp, }, nil } diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go new file mode 100644 index 000000000000..6d43ff7d49de --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/layer.go @@ -0,0 +1,144 @@ +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +package tarball + +import ( + "compress/gzip" + "io" + "io/ioutil" + "os" + + "github.com/google/go-containerregistry/pkg/v1" + "github.com/google/go-containerregistry/pkg/v1/v1util" +) + +type layer struct { + digest v1.Hash + diffID v1.Hash + size int64 + opener Opener + compressed bool +} + +func (l *layer) Digest() (v1.Hash, error) { + return l.digest, nil +} + +func (l *layer) DiffID() (v1.Hash, error) { + return l.diffID, nil +} + +func (l *layer) Compressed() (io.ReadCloser, error) { + rc, err := l.opener() + if err == nil && !l.compressed { + return v1util.GzipReadCloser(rc) + } + + return rc, err +} + +func (l *layer) Uncompressed() (io.ReadCloser, error) { + rc, err := l.opener() + if err == nil && l.compressed { + return v1util.GunzipReadCloser(rc) + } + + return rc, err +} + +func (l *layer) Size() (int64, error) { + return l.size, nil +} + +// LayerFromFile returns a v1.Layer given a tarball +func LayerFromFile(path string) (v1.Layer, error) { + opener := func() (io.ReadCloser, error) { + return os.Open(path) + } + return LayerFromOpener(opener) +} + +// LayerFromOpener returns a v1.Layer given an Opener function +func LayerFromOpener(opener Opener) (v1.Layer, error) { + rc, err := opener() + if err != nil { + return nil, err + } + defer rc.Close() + + compressed, err := v1util.IsGzipped(rc) + if err != nil { + return nil, err + } + + var digest v1.Hash + var size int64 + if digest, size, err = computeDigest(opener, compressed); err != nil { + return nil, err + } + + diffID, err := computeDiffID(opener, compressed) + if err != nil { + return nil, err + } + + return &layer{ + digest: digest, + diffID: diffID, + size: size, + compressed: compressed, + opener: opener, + }, nil +} + +func computeDigest(opener Opener, compressed bool) (v1.Hash, int64, error) { + rc, err := opener() + if err != nil { + return v1.Hash{}, 0, err + } + defer rc.Close() + + if compressed { + return v1.SHA256(rc) + } + + reader, err := v1util.GzipReadCloser(ioutil.NopCloser(rc)) + if err != nil { + return v1.Hash{}, 0, err + } + + return v1.SHA256(reader) +} + +func computeDiffID(opener Opener, compressed bool) (v1.Hash, error) { + rc, err := opener() + if err != nil { + return v1.Hash{}, err + } + defer rc.Close() + + if !compressed { + digest, _, err := v1.SHA256(rc) + return digest, err + } + + reader, err := gzip.NewReader(rc) + if err != nil { + return v1.Hash{}, err + } + + diffID, _, err := v1.SHA256(reader) + return diffID, err +} diff --git a/vendor/github.com/google/go-containerregistry/v1/tarball/write.go b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go similarity index 50% rename from vendor/github.com/google/go-containerregistry/v1/tarball/write.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go index cb84e19d4418..a7f72cd988fa 100644 --- a/vendor/github.com/google/go-containerregistry/v1/tarball/write.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/tarball/write.go @@ -18,11 +18,12 @@ import ( "archive/tar" "bytes" "encoding/json" + "fmt" "io" "os" - "github.com/google/go-containerregistry/name" - "github.com/google/go-containerregistry/v1" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1" ) // WriteOptions are used to expose optional information to guide or @@ -31,20 +32,24 @@ type WriteOptions struct { // TODO(mattmoor): Whether to store things compressed? } -// Write saves the image as the given tag in a tarball at the given path. -func Write(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { - // Write in the compressed format. - // This is a tarball, on-disk, with: - // One manifest.json file at the top level containing information about several images. - // One file for each layer, named after the layer's SHA. - // One file for the config blob, named after its SHA. - - w, err := os.OpenFile(p, os.O_WRONLY, 0644) +// WriteToFile writes in the compressed format to a tarball, on disk. +// This is just syntactic sugar wrapping tarball.Write with a new file. +func WriteToFile(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { + w, err := os.Create(p) if err != nil { return err } defer w.Close() + return Write(tag, img, wo, w) +} + +// Write the contents of the image to the provided reader, in the compressed format. +// The contents are written in the following format: +// One manifest.json file at the top level containing information about several images. +// One file for each layer, named after the layer's SHA. +// One file for the config blob, named after its SHA. +func Write(tag name.Tag, img v1.Image, wo *WriteOptions, w io.Writer) error { tf := tar.NewWriter(w) defer tf.Close() @@ -53,15 +58,11 @@ func Write(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { if err != nil { return err } - cfg, err := img.ConfigFile() + cfgBlob, err := img.RawConfigFile() if err != nil { return err } - cfgBlob, err := json.Marshal(cfg) - if err != nil { - return err - } - if err := writeFile(tf, cfgName.String(), bytes.NewReader(cfgBlob), int64(len(cfgBlob))); err != nil { + if err := writeTarEntry(tf, cfgName.String(), bytes.NewReader(cfgBlob), int64(len(cfgBlob))); err != nil { return err } @@ -70,13 +71,24 @@ func Write(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { if err != nil { return err } - layerPaths := []string{} - for _, l := range layers { + layerFiles := make([]string, len(layers)) + for i, l := range layers { d, err := l.Digest() if err != nil { return err } - layerPaths = append(layerPaths, d.String()) + + // Munge the file name to appease ancient technology. + // + // tar assumes anything with a colon is a remote tape drive: + // https://www.gnu.org/software/tar/manual/html_section/tar_45.html + // Drop the algorithm prefix, e.g. "sha256:" + hex := d.Hex + + // gunzip expects certain file extensions: + // https://www.gnu.org/software/gzip/manual/html_node/Overview.html + layerFiles[i] = fmt.Sprintf("%s.tar.gz", hex) + r, err := l.Compressed() if err != nil { return err @@ -86,7 +98,7 @@ func Write(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { return err } - if err := writeFile(tf, d.String(), r, blobSize); err != nil { + if err := writeTarEntry(tf, layerFiles[i], r, blobSize); err != nil { return err } } @@ -96,17 +108,18 @@ func Write(p string, tag name.Tag, img v1.Image, wo *WriteOptions) error { singleImageTarDescriptor{ Config: cfgName.String(), RepoTags: []string{tag.String()}, - Layers: layerPaths, + Layers: layerFiles, }, } tdBytes, err := json.Marshal(td) if err != nil { return err } - return writeFile(tf, "manifest.json", bytes.NewReader(tdBytes), int64(len(tdBytes))) + return writeTarEntry(tf, "manifest.json", bytes.NewReader(tdBytes), int64(len(tdBytes))) } -func writeFile(tf *tar.Writer, path string, r io.Reader, size int64) error { +// write a file to the provided writer with a corresponding tar header +func writeTarEntry(tf *tar.Writer, path string, r io.Reader, size int64) error { hdr := &tar.Header{ Mode: 0644, Typeflag: tar.TypeReg, diff --git a/vendor/github.com/google/go-containerregistry/v1/types/types.go b/vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/types/types.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/types/types.go diff --git a/vendor/github.com/google/go-containerregistry/v1/v1util/and_closer.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/and_closer.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/v1util/and_closer.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/v1util/and_closer.go diff --git a/vendor/github.com/google/go-containerregistry/v1/v1util/nop.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/nop.go similarity index 100% rename from vendor/github.com/google/go-containerregistry/v1/v1util/nop.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/v1util/nop.go diff --git a/vendor/github.com/google/go-containerregistry/v1/v1util/verify.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go similarity index 97% rename from vendor/github.com/google/go-containerregistry/v1/v1util/verify.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go index 610ca5c01b4b..7ebb9dde9f4d 100644 --- a/vendor/github.com/google/go-containerregistry/v1/v1util/verify.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/verify.go @@ -20,7 +20,7 @@ import ( "hash" "io" - "github.com/google/go-containerregistry/v1" + "github.com/google/go-containerregistry/pkg/v1" ) type verifyReader struct { diff --git a/vendor/github.com/google/go-containerregistry/v1/v1util/zip.go b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go similarity index 81% rename from vendor/github.com/google/go-containerregistry/v1/v1util/zip.go rename to vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go index d484d32e6ff1..f12d0ed88779 100644 --- a/vendor/github.com/google/go-containerregistry/v1/v1util/zip.go +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/v1util/zip.go @@ -24,17 +24,32 @@ var gzipMagicHeader = []byte{'\x1f', '\x8b'} // GzipReadCloser reads uncompressed input data from the io.ReadCloser and // returns an io.ReadCloser from which compressed data may be read. +// This uses gzip.BestSpeed for the compression level. func GzipReadCloser(r io.ReadCloser) (io.ReadCloser, error) { - defer r.Close() + return GzipReadCloserLevel(r, gzip.BestSpeed) +} - // TODO(mattmoor): How to avoid buffering this whole thing into memory? - data := bytes.NewBuffer(nil) - gw := gzip.NewWriter(data) - defer gw.Close() - if _, err := io.Copy(gw, r); err != nil { - return nil, err - } - return NopReadCloser(data), nil +// GzipReadCloserLevel reads uncompressed input data from the io.ReadCloser and +// returns an io.ReadCloser from which compressed data may be read. +// Refer to compress/gzip for the level: +// https://golang.org/pkg/compress/gzip/#pkg-constants +func GzipReadCloserLevel(r io.ReadCloser, level int) (io.ReadCloser, error) { + pr, pw := io.Pipe() + + go func() { + defer pw.Close() + defer r.Close() + + gw, _ := gzip.NewWriterLevel(pw, level) + defer gw.Close() + + _, err := io.Copy(gw, r) + if err != nil { + pr.CloseWithError(err) + } + }() + + return pr, nil } // GunzipReadCloser reads compressed input data from the io.ReadCloser and diff --git a/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go new file mode 100644 index 000000000000..3440b5e13069 --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/pkg/v1/zz_deepcopy_generated.go @@ -0,0 +1,314 @@ +// +build !ignore_autogenerated + +// Copyright 2018 Google LLC All Rights Reserved. +// +// 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 +// +// http://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. + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1 + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Config) DeepCopyInto(out *Config) { + *out = *in + if in.Cmd != nil { + in, out := &in.Cmd, &out.Cmd + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Healthcheck != nil { + in, out := &in.Healthcheck, &out.Healthcheck + *out = new(HealthConfig) + (*in).DeepCopyInto(*out) + } + if in.Entrypoint != nil { + in, out := &in.Entrypoint, &out.Entrypoint + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Env != nil { + in, out := &in.Env, &out.Env + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Labels != nil { + in, out := &in.Labels, &out.Labels + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.OnBuild != nil { + in, out := &in.OnBuild, &out.OnBuild + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Volumes != nil { + in, out := &in.Volumes, &out.Volumes + *out = make(map[string]struct{}, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ExposedPorts != nil { + in, out := &in.ExposedPorts, &out.ExposedPorts + *out = make(map[string]struct{}, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Shell != nil { + in, out := &in.Shell, &out.Shell + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Config. +func (in *Config) DeepCopy() *Config { + if in == nil { + return nil + } + out := new(Config) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ConfigFile) DeepCopyInto(out *ConfigFile) { + *out = *in + in.Created.DeepCopyInto(&out.Created) + if in.History != nil { + in, out := &in.History, &out.History + *out = make([]History, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + in.RootFS.DeepCopyInto(&out.RootFS) + in.Config.DeepCopyInto(&out.Config) + in.ContainerConfig.DeepCopyInto(&out.ContainerConfig) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigFile. +func (in *ConfigFile) DeepCopy() *ConfigFile { + if in == nil { + return nil + } + out := new(ConfigFile) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Descriptor) DeepCopyInto(out *Descriptor) { + *out = *in + out.Digest = in.Digest + if in.URLs != nil { + in, out := &in.URLs, &out.URLs + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Platform != nil { + in, out := &in.Platform, &out.Platform + *out = new(Platform) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Descriptor. +func (in *Descriptor) DeepCopy() *Descriptor { + if in == nil { + return nil + } + out := new(Descriptor) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Hash) DeepCopyInto(out *Hash) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Hash. +func (in *Hash) DeepCopy() *Hash { + if in == nil { + return nil + } + out := new(Hash) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HealthConfig) DeepCopyInto(out *HealthConfig) { + *out = *in + if in.Test != nil { + in, out := &in.Test, &out.Test + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthConfig. +func (in *HealthConfig) DeepCopy() *HealthConfig { + if in == nil { + return nil + } + out := new(HealthConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *History) DeepCopyInto(out *History) { + *out = *in + in.Created.DeepCopyInto(&out.Created) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new History. +func (in *History) DeepCopy() *History { + if in == nil { + return nil + } + out := new(History) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IndexManifest) DeepCopyInto(out *IndexManifest) { + *out = *in + if in.Manifests != nil { + in, out := &in.Manifests, &out.Manifests + *out = make([]Descriptor, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IndexManifest. +func (in *IndexManifest) DeepCopy() *IndexManifest { + if in == nil { + return nil + } + out := new(IndexManifest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Manifest) DeepCopyInto(out *Manifest) { + *out = *in + in.Config.DeepCopyInto(&out.Config) + if in.Layers != nil { + in, out := &in.Layers, &out.Layers + *out = make([]Descriptor, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Annotations != nil { + in, out := &in.Annotations, &out.Annotations + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Manifest. +func (in *Manifest) DeepCopy() *Manifest { + if in == nil { + return nil + } + out := new(Manifest) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Platform) DeepCopyInto(out *Platform) { + *out = *in + if in.OSFeatures != nil { + in, out := &in.OSFeatures, &out.OSFeatures + *out = make([]string, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Platform. +func (in *Platform) DeepCopy() *Platform { + if in == nil { + return nil + } + out := new(Platform) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RootFS) DeepCopyInto(out *RootFS) { + *out = *in + if in.DiffIDs != nil { + in, out := &in.DiffIDs, &out.DiffIDs + *out = make([]Hash, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootFS. +func (in *RootFS) DeepCopy() *RootFS { + if in == nil { + return nil + } + out := new(RootFS) + in.DeepCopyInto(out) + return out +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Time. +func (in *Time) DeepCopy() *Time { + if in == nil { + return nil + } + out := new(Time) + in.DeepCopyInto(out) + return out +} diff --git a/vendor/github.com/google/go-containerregistry/v1/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/BUILD.bazel deleted file mode 100644 index 9877a0b72b50..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/BUILD.bazel +++ /dev/null @@ -1,26 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "config.go", - "doc.go", - "hash.go", - "image.go", - "layer.go", - "manifest.go", - ], - importpath = "github.com/google/go-containerregistry/v1", - visibility = ["//visibility:public"], - deps = ["//v1/types:go_default_library"], -) - -go_test( - name = "go_default_test", - srcs = [ - "hash_test.go", - "manifest_test.go", - ], - embed = [":go_default_library"], - deps = ["//vendor/github.com/google/go-cmp/cmp:go_default_library"], -) diff --git a/vendor/github.com/google/go-containerregistry/v1/partial/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/partial/BUILD.bazel deleted file mode 100644 index 1d5f48305acd..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/partial/BUILD.bazel +++ /dev/null @@ -1,19 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = [ - "compressed.go", - "doc.go", - "image.go", - "uncompressed.go", - "with.go", - ], - importpath = "github.com/google/go-containerregistry/v1/partial", - visibility = ["//visibility:public"], - deps = [ - "//v1:go_default_library", - "//v1/types:go_default_library", - "//v1/v1util:go_default_library", - ], -) diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/remote/BUILD.bazel deleted file mode 100644 index e063649c5352..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/remote/BUILD.bazel +++ /dev/null @@ -1,44 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "delete.go", - "doc.go", - "error.go", - "image.go", - "write.go", - ], - importpath = "github.com/google/go-containerregistry/v1/remote", - visibility = ["//visibility:public"], - deps = [ - "//authn:go_default_library", - "//name:go_default_library", - "//v1:go_default_library", - "//v1/partial:go_default_library", - "//v1/remote/transport:go_default_library", - "//v1/types:go_default_library", - "//v1/v1util:go_default_library", - ], -) - -go_test( - name = "go_default_test", - srcs = [ - "delete_test.go", - "error_test.go", - "image_test.go", - "write_test.go", - ], - embed = [":go_default_library"], - deps = [ - "//authn:go_default_library", - "//name:go_default_library", - "//v1:go_default_library", - "//v1/random:go_default_library", - "//v1/remote/transport:go_default_library", - "//v1/types:go_default_library", - "//v1/v1util:go_default_library", - "//vendor/github.com/google/go-cmp/cmp:go_default_library", - ], -) diff --git a/vendor/github.com/google/go-containerregistry/v1/remote/transport/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/remote/transport/BUILD.bazel deleted file mode 100644 index e99b8a6f0430..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/remote/transport/BUILD.bazel +++ /dev/null @@ -1,37 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "basic.go", - "bearer.go", - "doc.go", - "ping.go", - "scheme.go", - "scope.go", - "transport.go", - ], - importpath = "github.com/google/go-containerregistry/v1/remote/transport", - visibility = ["//visibility:public"], - deps = [ - "//authn:go_default_library", - "//name:go_default_library", - ], -) - -go_test( - name = "go_default_test", - srcs = [ - "basic_test.go", - "bearer_test.go", - "ping_test.go", - "scheme_test.go", - "transport_test.go", - ], - embed = [":go_default_library"], - deps = [ - "//authn:go_default_library", - "//name:go_default_library", - "//vendor/github.com/google/go-cmp/cmp:go_default_library", - ], -) diff --git a/vendor/github.com/google/go-containerregistry/v1/tarball/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/tarball/BUILD.bazel deleted file mode 100644 index b48a7ea6b6db..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/tarball/BUILD.bazel +++ /dev/null @@ -1,68 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "doc.go", - "image.go", - "write.go", - ], - importpath = "github.com/google/go-containerregistry/v1/tarball", - visibility = ["//visibility:public"], - deps = [ - "//name:go_default_library", - "//v1:go_default_library", - "//v1/partial:go_default_library", - "//v1/types:go_default_library", - "//v1/v1util:go_default_library", - ], -) - -go_test( - name = "go_default_test", - srcs = [ - "image_test.go", - "write_test.go", - ], - data = glob(["testdata/**"]) + [ - ":test_image_1.tar", # keep - ":test_image_2.tar", # keep - ":test_bundle.tar", # keep - ], - embed = [":go_default_library"], - deps = [ - "//name:go_default_library", - "//v1/random:go_default_library", - "//vendor/github.com/google/go-cmp/cmp:go_default_library", - ], -) - -load( - "@io_bazel_rules_docker//container:container.bzl", - "container_image", - "container_bundle", -) - -container_image( - name = "test_image_1", - files = [ - "testdata/bar", - "testdata/foo", - ], -) - -container_image( - name = "test_image_2", - files = [ - "testdata/bat/bat", - "testdata/baz", - ], -) - -container_bundle( - name = "test_bundle", - images = { - "test_image_1": ":test_image_1", - "test_image_2": ":test_image_2", - }, -) diff --git a/vendor/github.com/google/go-containerregistry/v1/types/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/types/BUILD.bazel deleted file mode 100644 index b3f45c41c155..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/types/BUILD.bazel +++ /dev/null @@ -1,8 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") - -go_library( - name = "go_default_library", - srcs = ["types.go"], - importpath = "github.com/google/go-containerregistry/v1/types", - visibility = ["//visibility:public"], -) diff --git a/vendor/github.com/google/go-containerregistry/v1/v1util/BUILD.bazel b/vendor/github.com/google/go-containerregistry/v1/v1util/BUILD.bazel deleted file mode 100644 index f2c9c8648827..000000000000 --- a/vendor/github.com/google/go-containerregistry/v1/v1util/BUILD.bazel +++ /dev/null @@ -1,25 +0,0 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") - -go_library( - name = "go_default_library", - srcs = [ - "and_closer.go", - "nop.go", - "verify.go", - "zip.go", - ], - importpath = "github.com/google/go-containerregistry/v1/v1util", - visibility = ["//visibility:public"], - deps = ["//v1:go_default_library"], -) - -go_test( - name = "go_default_test", - srcs = [ - "and_closer_test.go", - "verify_test.go", - "zip_test.go", - ], - embed = [":go_default_library"], - deps = ["//v1:go_default_library"], -) From 86f44ad4ffd12c3e20c572257c28b47439bb14a9 Mon Sep 17 00:00:00 2001 From: dlorenc Date: Wed, 22 Aug 2018 08:50:30 -0700 Subject: [PATCH 031/195] Manual changes for go-containerregistry update. --- pkg/minikube/machine/cache_images.go | 23 ++++++++++++----------- test/integration/persistence_test.go | 3 ++- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/pkg/minikube/machine/cache_images.go b/pkg/minikube/machine/cache_images.go index c8dd64798ec3..155782c876fa 100644 --- a/pkg/minikube/machine/cache_images.go +++ b/pkg/minikube/machine/cache_images.go @@ -18,7 +18,6 @@ package machine import ( "io/ioutil" - "net/http" "os" "os/exec" "path" @@ -26,12 +25,12 @@ import ( "runtime" "strings" - "github.com/google/go-containerregistry/v1/tarball" + "github.com/google/go-containerregistry/pkg/v1/tarball" - "github.com/google/go-containerregistry/authn" + "github.com/google/go-containerregistry/pkg/authn" - "github.com/google/go-containerregistry/name" - "github.com/google/go-containerregistry/v1/remote" + "github.com/google/go-containerregistry/pkg/name" + "github.com/google/go-containerregistry/pkg/v1/remote" "golang.org/x/sync/errgroup" @@ -296,14 +295,16 @@ func CacheImage(image, dst string) error { return errors.Wrap(err, "creating docker image name") } - auth, err := authn.DefaultKeychain.Resolve(tag.Registry) - if err != nil { - return errors.Wrap(err, "setting up registry auth") - } - img, err := remote.Image(tag, auth, http.DefaultTransport) + img, err := remote.Image(tag, remote.WithAuthFromKeychain(authn.DefaultKeychain)) if err != nil { return errors.Wrap(err, "fetching remote image") } - return tarball.Write(dstPath, tag, img, nil) + glog.Infoln("OPENING: ", dstPath) + f, err := os.Create(dstPath) + if err != nil { + return err + } + defer f.Close() + return tarball.Write(tag, img, nil, f) } diff --git a/test/integration/persistence_test.go b/test/integration/persistence_test.go index d98dc2a570a1..b63538f7ca41 100644 --- a/test/integration/persistence_test.go +++ b/test/integration/persistence_test.go @@ -20,6 +20,7 @@ package integration import ( "path/filepath" + "strings" "testing" "time" @@ -28,10 +29,10 @@ import ( ) func TestPersistence(t *testing.T) { + minikubeRunner := NewMinikubeRunner(t) if strings.Contains(minikubeRunner.StartArgs, "--vm-driver=none") { t.Skip("skipping test as none driver does not support persistence") } - minikubeRunner := NewMinikubeRunner(t) minikubeRunner.EnsureRunning() kubectlRunner := util.NewKubectlRunner(t) From 9b21d3c7e4b40d91401cd1440c97eac550dc6bd0 Mon Sep 17 00:00:00 2001 From: Jason Stangroome Date: Fri, 10 Aug 2018 07:43:21 +1000 Subject: [PATCH 032/195] Allow certificates to be optionally embedded in .kube/config Opt-in with `minikube config set embed-certs true`. Similar to the behaviour of `kubectl config set-credentials --embed-certs`. Enables Minikube on Windows to produce a .kube/config file that can be shared directly with kubectl inside the Windows Subsystem for Linux (WSL) without needing to perform additional translation of the certificate paths within the configuration file. --- cmd/minikube/cmd/config/config.go | 4 ++++ cmd/minikube/cmd/start.go | 2 ++ pkg/minikube/bootstrapper/certs.go | 5 +++- pkg/util/kubeconfig/config.go | 37 ++++++++++++++++++++++++++---- 4 files changed, 42 insertions(+), 6 deletions(-) diff --git a/cmd/minikube/cmd/config/config.go b/cmd/minikube/cmd/config/config.go index 554676e5f4fc..ab9e33b00d49 100644 --- a/cmd/minikube/cmd/config/config.go +++ b/cmd/minikube/cmd/config/config.go @@ -237,6 +237,10 @@ var settings = []Setting{ set: SetConfigMap, setMap: SetMap, }, + { + name: "embed-certs", + set: SetBool, + }, } var ConfigCmd = &cobra.Command{ diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index f7a5d24dac1a..3b9d136e3316 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -72,6 +72,7 @@ const ( vpnkitSock = "hyperkit-vpnkit-sock" vsockPorts = "hyperkit-vsock-ports" gpu = "gpu" + embedCerts = "embed-certs" ) var ( @@ -280,6 +281,7 @@ func runStart(cmd *cobra.Command, args []string) { ClientKey: constants.MakeMiniPath("client.key"), CertificateAuthority: constants.MakeMiniPath("ca.crt"), KeepContext: viper.GetBool(keepContext), + EmbedCerts: viper.GetBool(embedCerts), } kubeCfgSetup.SetKubeConfigFile(kubeConfigFile) diff --git a/pkg/minikube/bootstrapper/certs.go b/pkg/minikube/bootstrapper/certs.go index ddd22b5b16e5..984973d1caae 100644 --- a/pkg/minikube/bootstrapper/certs.go +++ b/pkg/minikube/bootstrapper/certs.go @@ -75,7 +75,10 @@ func SetupCerts(cmd CommandRunner, k8s config.KubernetesConfig) error { } kubeCfg := api.NewConfig() - kubeconfig.PopulateKubeConfig(kubeCfgSetup, kubeCfg) + err := kubeconfig.PopulateKubeConfig(kubeCfgSetup, kubeCfg) + if err != nil { + return errors.Wrap(err, "populating kubeconfig") + } data, err := runtime.Encode(latest.Codec, kubeCfg) if err != nil { return errors.Wrap(err, "encoding kubeconfig") diff --git a/pkg/util/kubeconfig/config.go b/pkg/util/kubeconfig/config.go index 15a8455e9ce7..4a6703edef4f 100644 --- a/pkg/util/kubeconfig/config.go +++ b/pkg/util/kubeconfig/config.go @@ -53,6 +53,9 @@ type KubeConfigSetup struct { // Should the current context be kept when setting up this one KeepContext bool + // Should the certificate files be embedded instead of referenced by path + EmbedCerts bool + // kubeConfigFile is the path where the kube config is stored // Only access this with atomic ops kubeConfigFile atomic.Value @@ -67,18 +70,37 @@ func (k *KubeConfigSetup) GetKubeConfigFile() string { } // PopulateKubeConfig populates an api.Config object. -func PopulateKubeConfig(cfg *KubeConfigSetup, kubecfg *api.Config) { +func PopulateKubeConfig(cfg *KubeConfigSetup, kubecfg *api.Config) error { + var err error clusterName := cfg.ClusterName cluster := api.NewCluster() cluster.Server = cfg.ClusterServerAddress - cluster.CertificateAuthority = cfg.CertificateAuthority + if cfg.EmbedCerts { + cluster.CertificateAuthorityData, err = ioutil.ReadFile(cfg.CertificateAuthority) + if err != nil { + return err + } + } else { + cluster.CertificateAuthority = cfg.CertificateAuthority + } kubecfg.Clusters[clusterName] = cluster // user userName := cfg.ClusterName user := api.NewAuthInfo() - user.ClientCertificate = cfg.ClientCertificate - user.ClientKey = cfg.ClientKey + if cfg.EmbedCerts { + user.ClientCertificateData, err = ioutil.ReadFile(cfg.ClientCertificate) + if err != nil { + return err + } + user.ClientKeyData, err = ioutil.ReadFile(cfg.ClientKey) + if err != nil { + return err + } + } else { + user.ClientCertificate = cfg.ClientCertificate + user.ClientKey = cfg.ClientKey + } kubecfg.AuthInfos[userName] = user // context @@ -92,6 +114,8 @@ func PopulateKubeConfig(cfg *KubeConfigSetup, kubecfg *api.Config) { if !cfg.KeepContext { kubecfg.CurrentContext = cfg.ClusterName } + + return nil } // SetupKubeConfig reads config from disk, adds the minikube settings, and writes it back. @@ -106,7 +130,10 @@ func SetupKubeConfig(cfg *KubeConfigSetup) error { return err } - PopulateKubeConfig(cfg, config) + err = PopulateKubeConfig(cfg, config) + if err != nil { + return err + } // write back to disk if err := WriteConfig(config, cfg.GetKubeConfigFile()); err != nil { From f162de3bbf00a12e28004d3561ac3feac5a4d362 Mon Sep 17 00:00:00 2001 From: Damian Kubaczka Date: Sat, 21 Jul 2018 23:54:31 +0200 Subject: [PATCH 033/195] Update macOS requirements --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 08583ae10077..f9ac1440d181 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,8 @@ We also released a Debian package and Windows installer on our [releases page](h * [kubectl](https://kubernetes.io/docs/tasks/kubectl/install/) * macOS * [Hyperkit driver](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperkit-driver), [xhyve driver](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#xhyve-driver), [VirtualBox](https://www.virtualbox.org/wiki/Downloads), or [VMware Fusion](https://www.vmware.com/products/fusion) + * [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html) `brew install dnsmasq` (add `listen-address=192.168.64.1` to `dnsmasq.conf`) + * Linux * [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or [KVM](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm-driver) * **NOTE:** Minikube also supports a `--vm-driver=none` option that runs the Kubernetes components on the host and not in a VM. Docker is required to use this driver but no hypervisor. If you use `--vm-driver=none`, be sure to specify a [bridge network](https://docs.docker.com/network/bridge/#configure-the-default-bridge-network) for docker. Otherwise it might change between network restarts, causing loss of connectivity to your cluster. From 7e921b3d61dcc7ffafd676b6497cde7c421d1d98 Mon Sep 17 00:00:00 2001 From: Daemeron Date: Thu, 9 Aug 2018 00:07:31 +0200 Subject: [PATCH 034/195] Revert "Update macOS requirements" This reverts commit 21bfb62ee185fa90448fb57ac92b5ad7643f3ac9. --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index f9ac1440d181..08583ae10077 100644 --- a/README.md +++ b/README.md @@ -109,8 +109,6 @@ We also released a Debian package and Windows installer on our [releases page](h * [kubectl](https://kubernetes.io/docs/tasks/kubectl/install/) * macOS * [Hyperkit driver](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#hyperkit-driver), [xhyve driver](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#xhyve-driver), [VirtualBox](https://www.virtualbox.org/wiki/Downloads), or [VMware Fusion](https://www.vmware.com/products/fusion) - * [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html) `brew install dnsmasq` (add `listen-address=192.168.64.1` to `dnsmasq.conf`) - * Linux * [VirtualBox](https://www.virtualbox.org/wiki/Downloads) or [KVM](https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm-driver) * **NOTE:** Minikube also supports a `--vm-driver=none` option that runs the Kubernetes components on the host and not in a VM. Docker is required to use this driver but no hypervisor. If you use `--vm-driver=none`, be sure to specify a [bridge network](https://docs.docker.com/network/bridge/#configure-the-default-bridge-network) for docker. Otherwise it might change between network restarts, causing loss of connectivity to your cluster. From 9578f3f691f4b433aa39e4ce1bad96bbbc4528a4 Mon Sep 17 00:00:00 2001 From: Daemeron Date: Thu, 9 Aug 2018 00:28:10 +0200 Subject: [PATCH 035/195] Add workaround for hyperkit and dnsmasq users --- docs/drivers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/drivers.md b/docs/drivers.md index 5f1cc2245b18..56c1f450da1d 100644 --- a/docs/drivers.md +++ b/docs/drivers.md @@ -100,6 +100,10 @@ The hyperkit driver currently requires running as root to use the vmnet framewor If you encountered errors like `Could not find hyperkit executable`, you might need to install [Docker for Mac](https://store.docker.com/editions/community/docker-ce-desktop-mac) +If you are using [dnsmasq](http://www.thekelleys.org.uk/dnsmasq/doc.html) in your setup and cluster creation fails (stuck at kube-dns initialization) you might need to add `listen-address=192.168.64.1` to `dnsmasq.conf`. + +*Note: If `dnsmasq.conf` contains `listen-address=127.0.0.1` kubernetes discovers dns at 127.0.0.1:53 and tries to use it using bridge ip address, but dnsmasq replies only to reqests from 127.0.0.1* + #### xhyve driver From https://github.com/zchee/docker-machine-driver-xhyve#install: From a7a5ede68e19b1d46d5f129171ee7433fa316f06 Mon Sep 17 00:00:00 2001 From: NsLib Date: Tue, 3 Apr 2018 14:30:05 +0800 Subject: [PATCH 036/195] fix(cli): \`minikube start --mount --mountsting\` without wirte permission --- pkg/minikube/cluster/cluster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/cluster/cluster.go b/pkg/minikube/cluster/cluster.go index 743e37432e20..f37ccd2f91da 100644 --- a/pkg/minikube/cluster/cluster.go +++ b/pkg/minikube/cluster/cluster.go @@ -403,7 +403,7 @@ func GetMountCleanupCommand(path string) string { var mountTemplate = ` sudo mkdir -p {{.Path}} || true; sudo mount -t 9p -o trans=tcp,port={{.Port}},dfltuid={{.UID}},dfltgid={{.GID}},version={{.Version}},msize={{.Msize}} {{.IP}} {{.Path}}; -sudo chmod 775 {{.Path}};` +sudo chmod 775 {{.Path}} || true;` func GetMountCommand(ip net.IP, path, port, mountVersion string, uid, gid, msize int) (string, error) { t := template.Must(template.New("mountCommand").Parse(mountTemplate)) From e13ed7a1ae9b372f22e61b77a5619b45a5fabb19 Mon Sep 17 00:00:00 2001 From: Bennett Ellis Date: Sat, 18 Aug 2018 13:13:27 -0400 Subject: [PATCH 037/195] Add env variable for default ES_JAVA_OPTS The default configuration here for ES_JAVA_OPTS will pretty much always fail as is, making this addon useless and broken unless modified. Since this is deployed automatically when addon is enabled, it seems like providing a value that works is the best option here, otherwise in a minikube the pod(s) deployed will continually fail to start. --- deploy/addons/efk/elasticsearch-rc.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/addons/efk/elasticsearch-rc.yaml b/deploy/addons/efk/elasticsearch-rc.yaml index e282ffb2ada7..525350bb36e4 100644 --- a/deploy/addons/efk/elasticsearch-rc.yaml +++ b/deploy/addons/efk/elasticsearch-rc.yaml @@ -59,6 +59,8 @@ spec: fieldPath: metadata.namespace - name: MINIMUM_MASTER_NODES value: "1" + - name: ES_JAVA_OPTS + value: "-Xms1024m -Xmx1024m" initContainers: - image: registry.hub.docker.com/library/alpine:3.6 command: ["/sbin/sysctl", "-w", "vm.max_map_count=262144"] From 22ab50aa7e05c7df16c51b30c3ff02391c8d4979 Mon Sep 17 00:00:00 2001 From: AdamDang Date: Thu, 30 Aug 2018 16:04:36 +0800 Subject: [PATCH 038/195] Correct typo in the returned message coundn't->couldn't --- pkg/drivers/kvm/gpu.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kvm/gpu.go b/pkg/drivers/kvm/gpu.go index 301e0fc3dab5..bdd84e4dd313 100644 --- a/pkg/drivers/kvm/gpu.go +++ b/pkg/drivers/kvm/gpu.go @@ -62,7 +62,7 @@ type PCIDevice struct { func getDevicesXML() (string, error) { unboundNVIDIADevices, err := getPassthroughableNVIDIADevices() if err != nil { - return "", fmt.Errorf("coundn't generate devices XML: %v", err) + return "", fmt.Errorf("couldn't generate devices XML: %v", err) } var pciDevices []PCIDevice for _, device := range unboundNVIDIADevices { From 82e991456ee1c4e64ab12e6ac0b8415229a29a61 Mon Sep 17 00:00:00 2001 From: Sandeep Rajan Date: Thu, 30 Aug 2018 11:57:35 -0400 Subject: [PATCH 039/195] update --- deploy/addons/coredns/coreDNS-configmap.yaml | 2 ++ deploy/addons/coredns/coreDNS-controller.yaml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/deploy/addons/coredns/coreDNS-configmap.yaml b/deploy/addons/coredns/coreDNS-configmap.yaml index c29ab8a46926..a665590d64bc 100644 --- a/deploy/addons/coredns/coreDNS-configmap.yaml +++ b/deploy/addons/coredns/coreDNS-configmap.yaml @@ -18,6 +18,8 @@ data: } prometheus :9153 proxy . /etc/resolv.conf + loop cache 30 + loadbalance reload } diff --git a/deploy/addons/coredns/coreDNS-controller.yaml b/deploy/addons/coredns/coreDNS-controller.yaml index ff176f202397..fb486eb554cb 100644 --- a/deploy/addons/coredns/coreDNS-controller.yaml +++ b/deploy/addons/coredns/coreDNS-controller.yaml @@ -29,7 +29,7 @@ spec: effect: NoSchedule containers: - name: coredns - image: k8s.gcr.io/coredns:1.1.3 + image: k8s.gcr.io/coredns:1.2.2 imagePullPolicy: IfNotPresent resources: limits: From 4bcd857b07e9c1a209654f5e5f6bf565142d15df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Str=C3=B6mberg?= Date: Wed, 5 Sep 2018 11:48:57 -0700 Subject: [PATCH 040/195] Simplifies Linux installation instructions by using install(1) Makes documentation easier to read on narrower screens, and makes the command-line less scary looking. Leaves deletion of the downloaded file as an exercise for the reader. It's typically not done in installation instructions. Instructions still assume x86-64 architecture, which is the common case, but less than ideal. --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 08583ae10077..73dd1444eb94 100644 --- a/README.md +++ b/README.md @@ -26,8 +26,10 @@ brew cask install minikube ``` ### Linux + ```shell -curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube && sudo cp minikube /usr/local/bin/ && rm minikube +curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ + && sudo install minikube-linux-amd64 /usr/local/bin/minikube ``` ### Windows From 7120bdac365b289aee09e1a17107de61b3fdf2e3 Mon Sep 17 00:00:00 2001 From: oilbeater Date: Mon, 10 Sep 2018 14:43:19 +0800 Subject: [PATCH 041/195] update nginx ingress controller version to 0.19.0 --- deploy/addons/ingress/ingress-dp.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/addons/ingress/ingress-dp.yaml b/deploy/addons/ingress/ingress-dp.yaml index c5294fb53483..ec1e041f277d 100644 --- a/deploy/addons/ingress/ingress-dp.yaml +++ b/deploy/addons/ingress/ingress-dp.yaml @@ -79,7 +79,7 @@ spec: spec: terminationGracePeriodSeconds: 60 containers: - - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.16.2 + - image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.19.0 name: nginx-ingress-controller imagePullPolicy: IfNotPresent readinessProbe: From 3b97276f707e3aa52edf45edced25b7be60de93f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sat, 8 Sep 2018 09:52:14 +0200 Subject: [PATCH 042/195] Change default docker storage driver to overlay2 The "aufs" storage driver has been deprecated, changed in Docker 17.09 for "overlay2" instead. See https://github.com/docker/machine/pull/4558 This only affects the "boot2docker" provisioner, since it is already being used by "buildroot". Closes #3078 --- pkg/minikube/machine/client.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/minikube/machine/client.go b/pkg/minikube/machine/client.go index 45b704b80404..88c40036a110 100644 --- a/pkg/minikube/machine/client.go +++ b/pkg/minikube/machine/client.go @@ -110,7 +110,7 @@ func (api *LocalClient) NewHost(driverName string, rawDriver []byte) (*host.Host ServerKeyPath: filepath.Join(api.GetMachinesDir(), "server-key.pem"), }, EngineOptions: &engine.Options{ - StorageDriver: "aufs", + StorageDriver: "overlay2", TLSVerify: true, }, SwarmOptions: &swarm.Options{}, From bed9aabaf8e2c69f04dd8703b596f46affb44637 Mon Sep 17 00:00:00 2001 From: Arijit Basu Date: Sat, 1 Sep 2018 00:32:05 +0530 Subject: [PATCH 043/195] Stay in same line --- cmd/util/util.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/util/util.go b/cmd/util/util.go index 405d43ff57af..54604ee1aa0d 100644 --- a/cmd/util/util.go +++ b/cmd/util/util.go @@ -155,7 +155,7 @@ To opt out of these messages, run the command: func getInput(input chan string, r io.Reader) { reader := bufio.NewReader(r) - fmt.Print("Please enter your response [Y/n]: \n") + fmt.Print("Please enter your response [Y/n]: ") response, err := reader.ReadString('\n') if err != nil { glog.Errorf(err.Error()) From e3f26499b901f2b53f5bf9e89507a9043cdff306 Mon Sep 17 00:00:00 2001 From: Bob Killen Date: Mon, 17 Sep 2018 14:21:29 -0700 Subject: [PATCH 044/195] Replace kusers link with discuss forum link --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 08583ae10077..1c9b8e750a9a 100644 --- a/README.md +++ b/README.md @@ -216,5 +216,5 @@ For more information about Minikube, see the [proposal](https://github.com/kuber ## Community * [**#minikube on Kubernetes Slack**](https://kubernetes.slack.com) -* [**kubernetes-users mailing list** ](https://groups.google.com/forum/#!forum/kubernetes-users) -(If you are posting to the list, please prefix your subject with "minikube: ") +* [**Kubernetes Official Forum** ](https://discuss.kubernetes.io) +(If you are posting to the forum, please tag your post with "minikube") From 33a9e39bd3a5269139e2b788feb0ba2e9d559aad Mon Sep 17 00:00:00 2001 From: Kumbirai Tanekha Date: Wed, 19 Sep 2018 18:19:29 +0100 Subject: [PATCH 045/195] fix: --format outputs any string, --https only subsitute http URL scheme cmd/minikube service --format: outputs arbitrarily formatted strings --https: https only substituted when the URL scheme is http --- pkg/minikube/service/service.go | 35 +++++++++------ pkg/minikube/service/service_test.go | 64 ++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 13 deletions(-) diff --git a/pkg/minikube/service/service.go b/pkg/minikube/service/service.go index f79d361239c2..2fb7c82a2d61 100644 --- a/pkg/minikube/service/service.go +++ b/pkg/minikube/service/service.go @@ -184,12 +184,7 @@ func printURLsForService(c corev1.CoreV1Interface, ip, service, namespace string return nil, err } - u, err := url.Parse(doc.String()) - if err != nil { - return nil, err - } - - urls = append(urls, u.String()) + urls = append(urls, doc.String()) } return urls, nil } @@ -236,6 +231,21 @@ func checkEndpointReady(endpoints corev1.EndpointsInterface, service string) err return nil } +func OptionallyHttpsFormattedUrlString(bareUrlString string, https bool) (string, bool) { + httpsFormattedString := bareUrlString + isHttpSchemedURL := false + + if u, parseErr := url.Parse(bareUrlString); parseErr == nil { + isHttpSchemedURL = u.Scheme == "http" + } + + if isHttpSchemedURL && https { + httpsFormattedString = strings.Replace(bareUrlString, "http", "https", 1) + } + + return httpsFormattedString, isHttpSchemedURL +} + func WaitAndMaybeOpenService(api libmachine.API, namespace string, service string, urlTemplate *template.Template, urlMode bool, https bool, wait int, interval int) error { if err := util.RetryAfter(wait, func() error { return CheckService(namespace, service) }, time.Duration(interval)*time.Second); err != nil { @@ -246,15 +256,14 @@ func WaitAndMaybeOpenService(api libmachine.API, namespace string, service strin if err != nil { return errors.Wrap(err, "Check that minikube is running and that you have specified the correct namespace") } - for _, url := range urls { - if https { - url = strings.Replace(url, "http", "https", 1) - } - if urlMode || !strings.HasPrefix(url, "http") { - fmt.Fprintln(os.Stdout, url) + for _, bareUrlString := range urls { + urlString, isHttpSchemedURL := OptionallyHttpsFormattedUrlString(bareUrlString, https) + + if urlMode || !isHttpSchemedURL { + fmt.Fprintln(os.Stdout, urlString) } else { fmt.Fprintln(os.Stderr, "Opening kubernetes service "+namespace+"/"+service+" in default browser...") - browser.OpenURL(url) + browser.OpenURL(urlString) } } return nil diff --git a/pkg/minikube/service/service_test.go b/pkg/minikube/service/service_test.go index d4bd77b1a976..f28bce3f9767 100644 --- a/pkg/minikube/service/service_test.go +++ b/pkg/minikube/service/service_test.go @@ -249,6 +249,13 @@ func TestPrintURLsForService(t *testing.T) { tmpl: defaultTemplate, expectedOutput: []string{"http://127.0.0.1:1111", "http://127.0.0.1:2222"}, }, + { + description: "should get all node ports with arbitrary format", + serviceName: "mock-dashboard", + namespace: "default", + tmpl: template.Must(template.New("svc-arbitrary-template").Parse("{{.IP}}:{{.Port}}")), + expectedOutput: []string{"127.0.0.1:1111", "127.0.0.1:2222"}, + }, { description: "empty slice for no node ports", serviceName: "mock-dashboard-no-ports", @@ -279,6 +286,63 @@ func TestPrintURLsForService(t *testing.T) { } } +func TestOptionallyHttpsFormattedUrlString(t *testing.T) { + + var tests = []struct { + description string + bareUrlString string + https bool + expectedHttpsFormattedUrlString string + expectedIsHttpSchemedURL bool + }{ + { + description: "no https for http schemed with no https option", + bareUrlString: "http://192.168.99.100:30563", + https: false, + expectedHttpsFormattedUrlString: "http://192.168.99.100:30563", + expectedIsHttpSchemedURL: true, + }, + { + description: "no https for non-http schemed with no https option", + bareUrlString: "xyz.http.myservice:30563", + https: false, + expectedHttpsFormattedUrlString: "xyz.http.myservice:30563", + expectedIsHttpSchemedURL: false, + }, + { + description: "https for http schemed with https option", + bareUrlString: "http://192.168.99.100:30563", + https: true, + expectedHttpsFormattedUrlString: "https://192.168.99.100:30563", + expectedIsHttpSchemedURL: true, + }, + { + description: "no https for non-http schemed with https option and http substring", + bareUrlString: "xyz.http.myservice:30563", + https: true, + expectedHttpsFormattedUrlString: "xyz.http.myservice:30563", + expectedIsHttpSchemedURL: false, + }, + } + + for _, test := range tests { + test := test + t.Run(test.description, func(t *testing.T) { + t.Parallel() + httpsFormattedUrlString, isHttpSchemedURL := OptionallyHttpsFormattedUrlString(test.bareUrlString, test.https) + + if httpsFormattedUrlString != test.expectedHttpsFormattedUrlString { + t.Errorf("\nhttpsFormattedUrlString, Expected %v \nActual: %v \n\n", test.expectedHttpsFormattedUrlString, httpsFormattedUrlString) + } + + if isHttpSchemedURL != test.expectedIsHttpSchemedURL { + t.Errorf("\nisHttpSchemedURL, Expected %v \nActual: %v \n\n", + test.expectedHttpsFormattedUrlString, httpsFormattedUrlString) + } + }) + } +} + func TestGetServiceURLs(t *testing.T) { defaultAPI := &tests.MockAPI{ Hosts: map[string]*host.Host{ From d1995d24f0ed2f4337735541db4384ad8874917d Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Thu, 9 Aug 2018 23:47:38 -0700 Subject: [PATCH 046/195] kvm2 driver: fixed private network creation and setup --- pkg/drivers/kvm/network.go | 47 ++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 17 deletions(-) diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 510d26444805..63d0ffdfa72d 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -43,11 +43,15 @@ const networkTmpl = ` ` +// setupNetwork ensures that the network with `name` is started (active) +// and has the autostart feature set. func setupNetwork(conn *libvirt.Connect, name string) error { - n, err := conn.LookupNetworkByName(defaultNetworkName) + n, err := conn.LookupNetworkByName(name) if err != nil { return errors.Wrapf(err, "checking network %s", name) } + + // always ensure autostart is set on the network autostart, err := n.GetAutostart() if err != nil { return errors.Wrapf(err, "checking network %s autostart", name) @@ -58,6 +62,7 @@ func setupNetwork(conn *libvirt.Connect, name string) error { } } + // always ensure the network is started (active) active, err := n.IsActive() if err != nil { return errors.Wrapf(err, "checking network status for %s", name) @@ -67,8 +72,8 @@ func setupNetwork(conn *libvirt.Connect, name string) error { return errors.Wrapf(err, "starting network %s", name) } } - return nil + return nil } func (d *Driver) createNetwork() error { @@ -85,31 +90,39 @@ func (d *Driver) createNetwork() error { } defer conn.Close() - tmpl := template.Must(template.New("network").Parse(networkTmpl)) - var networkXML bytes.Buffer - if err := tmpl.Execute(&networkXML, d); err != nil { - return errors.Wrap(err, "executing network template") - } + // network: default // Start the default network + // It is assumed that the libvirt/kvm installation has already created this network log.Infof("Setting up network %s", defaultNetworkName) if err := setupNetwork(conn, defaultNetworkName); err != nil { return err } - //Check if network already exists - if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err == nil { - return nil - } + // network: private - network, err := conn.NetworkDefineXML(networkXML.String()) - if err != nil { - return errors.Wrapf(err, "defining network from xml: %s", networkXML.String()) - } - if err := network.Create(); err != nil { - return errors.Wrapf(err, "creating network %s", d.PrivateNetwork) + // Only create the private network if it does not already exist + if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err != nil { + // create the XML for the private network from our networkTmpl + tmpl := template.Must(template.New("network").Parse(networkTmpl)) + var networkXML bytes.Buffer + if err := tmpl.Execute(&networkXML, d); err != nil { + return errors.Wrap(err, "executing network template") + } + + // define the network using our template + network, err := conn.NetworkDefineXML(networkXML.String()) + if err != nil { + return errors.Wrapf(err, "defining network from xml: %s", networkXML.String()) + } + + // and finally create it + if err := network.Create(); err != nil { + return errors.Wrapf(err, "creating network %s", d.PrivateNetwork) + } } + // Start the private network log.Infof("Setting up network %s", d.PrivateNetwork) if err := setupNetwork(conn, d.PrivateNetwork); err != nil { return err From c4ef7ad1973a3918be985433d00df84d169a2bf9 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Fri, 10 Aug 2018 12:30:35 -0700 Subject: [PATCH 047/195] kvm2 driver: separated activating and creating of networks --- pkg/drivers/kvm/domain.go | 20 +++++++++++++++---- pkg/drivers/kvm/kvm.go | 6 ++++++ pkg/drivers/kvm/network.go | 40 ++++++++++++++++++++++++-------------- 3 files changed, 47 insertions(+), 19 deletions(-) diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index ad361cd3d58c..b1071a08e0ab 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -152,9 +152,20 @@ func closeDomain(dom *libvirt.Domain, conn *libvirt.Connect) error { } func (d *Driver) createDomain() (*libvirt.Domain, error) { + // create random MAC addresses first for our NICs + // TODO: we use the same MAC addresses for both NICs + if d.MAC == "" { + mac, err := randomMAC() + if err != nil { + return nil, errors.Wrap(err, "generating mac address") + } + d.MAC = mac.String() + } + + // create the XML for the domain using our domainTmpl template tmpl := template.Must(template.New("domain").Parse(domainTmpl)) - var domainXml bytes.Buffer - if err := tmpl.Execute(&domainXml, d); err != nil { + var domainXML bytes.Buffer + if err := tmpl.Execute(&domainXML, d); err != nil { return nil, errors.Wrap(err, "executing domain xml") } @@ -164,9 +175,10 @@ func (d *Driver) createDomain() (*libvirt.Domain, error) { } defer conn.Close() - dom, err := conn.DomainDefineXML(domainXml.String()) + // define the domain in libvirt using the generated XML + dom, err := conn.DomainDefineXML(domainXML.String()) if err != nil { - return nil, errors.Wrapf(err, "Error defining domain xml: %s", domainXml.String()) + return nil, errors.Wrapf(err, "Error defining domain xml: %s", domainXML.String()) } return dom, nil diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 2e30ef7efe25..221416621877 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -211,6 +211,12 @@ func (d *Driver) Restart() error { } func (d *Driver) Start() error { + log.Info("Ensuring networks are active...") + err := d.ensureNetwork() + if err != nil { + return errors.Wrap(err, "ensuring active networks") + } + log.Info("Getting domain xml...") dom, conn, err := d.getDomain() if err != nil { diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 63d0ffdfa72d..16a133ad77e0 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -76,14 +76,8 @@ func setupNetwork(conn *libvirt.Connect, name string) error { return nil } -func (d *Driver) createNetwork() error { - if d.MAC == "" { - mac, err := randomMAC() - if err != nil { - return errors.Wrap(err, "generating mac address") - } - d.MAC = mac.String() - } +// ensureNetwork is called on start of the VM +func (d *Driver) ensureNetwork() error { conn, err := getConnection() if err != nil { return errors.Wrap(err, "getting libvirt connection") @@ -94,13 +88,35 @@ func (d *Driver) createNetwork() error { // Start the default network // It is assumed that the libvirt/kvm installation has already created this network - log.Infof("Setting up network %s", defaultNetworkName) + log.Infof("Ensuring network %s is active", defaultNetworkName) if err := setupNetwork(conn, defaultNetworkName); err != nil { return err } // network: private + // Start the private network + log.Infof("Ensuring network %s is active", d.PrivateNetwork) + if err := setupNetwork(conn, d.PrivateNetwork); err != nil { + return err + } + + return nil +} + +// createNetwork is called during creation of the VM only (and not on start) +func (d *Driver) createNetwork() error { + conn, err := getConnection() + if err != nil { + return errors.Wrap(err, "getting libvirt connection") + } + defer conn.Close() + + // network: default + // It is assumed that the libvirt/kvm installation has already created this network + + // network: private + // Only create the private network if it does not already exist if _, err := conn.LookupNetworkByName(d.PrivateNetwork); err != nil { // create the XML for the private network from our networkTmpl @@ -122,12 +138,6 @@ func (d *Driver) createNetwork() error { } } - // Start the private network - log.Infof("Setting up network %s", d.PrivateNetwork) - if err := setupNetwork(conn, d.PrivateNetwork); err != nil { - return err - } - return nil } From b35e908dec4f49d608694790dd9cb72eb3dd1399 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Fri, 10 Aug 2018 13:07:01 -0700 Subject: [PATCH 048/195] kvm2 driver: generate separate random MACs for default and private network NICs --- pkg/drivers/kvm/domain.go | 11 +++++++++-- pkg/drivers/kvm/kvm.go | 4 ++++ pkg/drivers/kvm/network.go | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index b1071a08e0ab..71f984e29cf3 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -62,7 +62,7 @@ const domainTmpl = ` - + @@ -153,7 +153,6 @@ func closeDomain(dom *libvirt.Domain, conn *libvirt.Connect) error { func (d *Driver) createDomain() (*libvirt.Domain, error) { // create random MAC addresses first for our NICs - // TODO: we use the same MAC addresses for both NICs if d.MAC == "" { mac, err := randomMAC() if err != nil { @@ -162,6 +161,14 @@ func (d *Driver) createDomain() (*libvirt.Domain, error) { d.MAC = mac.String() } + if d.PrivateMAC == "" { + mac, err := randomMAC() + if err != nil { + return nil, errors.Wrap(err, "generating mac address") + } + d.PrivateMAC = mac.String() + } + // create the XML for the domain using our domainTmpl template tmpl := template.Must(template.New("domain").Parse(domainTmpl)) var domainXML bytes.Buffer diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 221416621877..9d93223d3e25 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -66,6 +66,10 @@ type Driver struct { // If empty, a random MAC will be generated. MAC string + // The randomly generated MAC Address for the NIC attached to the private network + // If empty, a random MAC will be generated. + PrivateMAC string + // Whether to passthrough GPU devices from the host to the VM. GPU bool diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 16a133ad77e0..33afe36bef3b 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -190,7 +190,7 @@ func (d *Driver) lookupIPFromStatusFile(conn *libvirt.Connect) (string, error) { ipAddress := "" for _, status := range statusEntries { - if status.MacAddress == d.MAC { + if status.MacAddress == d.PrivateMAC { ipAddress = status.IPAddress } } @@ -215,7 +215,7 @@ func (d *Driver) lookupIPFromLeasesFile() (string, error) { if len(entry) != 5 { return "", fmt.Errorf("Malformed leases entry: %s", entry) } - if entry[1] == d.MAC { + if entry[1] == d.PrivateMAC { ipAddress = entry[2] } } From 34ee59192b259286b0eda055f179c19d6a196661 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Fri, 10 Aug 2018 17:40:27 -0700 Subject: [PATCH 049/195] kvm2 driver: be more robust with creating of the network, don't delete the network if it is in use --- pkg/drivers/kvm/kvm.go | 27 ++++++---- pkg/drivers/kvm/network.go | 107 +++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+), 10 deletions(-) diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index 9d93223d3e25..faf9691f7f4e 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -215,8 +215,17 @@ func (d *Driver) Restart() error { } func (d *Driver) Start() error { + // if somebody/something deleted the network in the meantime, + // we might need to recreate it. It's (nearly) a noop if the network exists. + log.Info("Creating network...") + err := d.createNetwork() + if err != nil { + return errors.Wrap(err, "creating network") + } + + // this call ensures that all networks are active log.Info("Ensuring networks are active...") - err := d.ensureNetwork() + err = d.ensureNetwork() if err != nil { return errors.Wrap(err, "ensuring active networks") } @@ -358,18 +367,16 @@ func (d *Driver) Remove() error { } defer conn.Close() - //Tear down network and disk if they exist - log.Debug("Checking if the network needs to be deleted") - network, err := conn.LookupNetworkByName(d.PrivateNetwork) + // Tear down network if it exists and is not in use by another minikube instance + log.Debug("Trying to delete the networks (if possible)") + err = d.deleteNetwork() if err != nil { - log.Warn("Network %s does not exist, nothing to clean up...", d.PrivateNetwork) - } - if network != nil { - log.Infof("Network %s exists, removing...", d.PrivateNetwork) - network.Destroy() - network.Undefine() + log.Warnf("Deleting of networks failed: %s", err.Error()) + } else { + log.Info("Successfully deleted networks") } + // Tear down the domain now log.Debug("Checking if the domain needs to be deleted") dom, err := conn.LookupDomainByName(d.MachineName) if err != nil { diff --git a/pkg/drivers/kvm/network.go b/pkg/drivers/kvm/network.go index 33afe36bef3b..1565098542c3 100644 --- a/pkg/drivers/kvm/network.go +++ b/pkg/drivers/kvm/network.go @@ -19,6 +19,7 @@ package kvm import ( "bytes" "encoding/json" + "encoding/xml" "fmt" "io/ioutil" "strings" @@ -141,6 +142,111 @@ func (d *Driver) createNetwork() error { return nil } +func (d *Driver) deleteNetwork() error { + type source struct { + //XMLName xml.Name `xml:"source"` + Network string `xml:"network,attr"` + } + type iface struct { + //XMLName xml.Name `xml:"interface"` + Source source `xml:"source"` + } + type result struct { + //XMLName xml.Name `xml:"domain"` + Name string `xml:"name"` + Interfaces []iface `xml:"devices>interface"` + } + + conn, err := getConnection() + if err != nil { + return errors.Wrap(err, "getting libvirt connection") + } + defer conn.Close() + + // network: default + // It is assumed that the OS manages this network + + // network: private + log.Debugf("Checking if network %s exists...", d.PrivateNetwork) + network, err := conn.LookupNetworkByName(d.PrivateNetwork) + if err != nil { + // TODO: decide if we really wanna throw an error? + return errors.Wrap(err, "network %s does not exist") + } + log.Debugf("Network %s exists", d.PrivateNetwork) + + // iterate over every (also turned off) domains, and check if it + // is using the private network. Do *not* delete the network if + // that is the case + log.Debug("Trying to list all domains...") + doms, err := conn.ListAllDomains(0) + if err != nil { + return errors.Wrap(err, "list all domains") + } + log.Debugf("Listed all domains: total of %d domains", len(doms)) + + // fail if there are 0 domains + if len(doms) == 0 { + return fmt.Errorf("list of domains is 0 lenght") + } + + for _, dom := range doms { + // get the name of the domain we iterate over + log.Debug("Trying to get name of domain...") + name, err := dom.GetName() + if err != nil { + return errors.Wrap(err, "failed to get name of a domain") + } + log.Debugf("Got domain name: %s", name) + + // skip the domain if it is our own machine + if name == d.MachineName { + log.Debug("Skipping domain as it is us...") + continue + } + + // unfortunately, there is no better way to retrieve a list of all defined interfaces + // in domains than getting it from the defined XML of all domains + // NOTE: conn.ListAllInterfaces does not help in this case + log.Debugf("Getting XML for domain %s...", name) + xmlString, err := dom.GetXMLDesc(libvirt.DOMAIN_XML_INACTIVE) + if err != nil { + return errors.Wrapf(err, "failed to get XML of domain '%s'", name) + } + log.Debugf("Got XML for domain %s", name) + + v := result{} + err = xml.Unmarshal([]byte(xmlString), &v) + if err != nil { + return errors.Wrapf(err, "failed to unmarshal XML of domain '%s", name) + } + log.Debugf("Unmarshaled XML for domain %s: %#v", name, v) + + // iterate over the found interfaces + for _, i := range v.Interfaces { + if i.Source.Network == d.PrivateNetwork { + log.Debugf("domain %s DOES use network %s, aborting...", name, d.PrivateNetwork) + return fmt.Errorf("network still in use at least by domain '%s',", name) + } + log.Debugf("domain %s does not use network %s", name, d.PrivateNetwork) + } + } + + // when we reach this point, it means it is safe to delete the network + log.Debugf("Trying to destroy network %s...", d.PrivateNetwork) + err = network.Destroy() + if err != nil { + return errors.Wrap(err, "network destroy") + } + log.Debugf("Trying to undefine network %s...", d.PrivateNetwork) + err = network.Undefine() + if err != nil { + return errors.Wrap(err, "network undefine") + } + + return nil +} + func (d *Driver) lookupIP() (string, error) { conn, err := getConnection() if err != nil { @@ -159,6 +265,7 @@ func (d *Driver) lookupIP() (string, error) { return d.lookupIPFromLeasesFile() } + // TODO: for everything > 1002006, there is direct support in the libvirt-go for handling this return d.lookupIPFromStatusFile(conn) } From 5e38bf481926ce3914a94300bc31e9a7a350aa27 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Tue, 14 Aug 2018 13:37:01 -0700 Subject: [PATCH 050/195] kvm2 driver: fixed documentation link in error text --- pkg/drivers/kvm/domain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/drivers/kvm/domain.go b/pkg/drivers/kvm/domain.go index 71f984e29cf3..4459ffe491e1 100644 --- a/pkg/drivers/kvm/domain.go +++ b/pkg/drivers/kvm/domain.go @@ -98,7 +98,7 @@ $ sudo usermod -a -G libvirt $(whoami) # NOTE: For older Debian/Ubuntu versions change the group to [libvirtd] $ newgrp libvirt -Visit https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm-driver for more information. +Visit https://github.com/kubernetes/minikube/blob/master/docs/drivers.md#kvm2-driver for more information. ` func randomMAC() (net.HardwareAddr, error) { From 6352ecb42f7b1feabf480685df547e90c3330dfc Mon Sep 17 00:00:00 2001 From: Balint Pato Date: Fri, 21 Sep 2018 14:52:05 -0700 Subject: [PATCH 051/195] adding tstromberg --- OWNERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OWNERS b/OWNERS index bfc1b5f76681..a2b01f07837c 100644 --- a/OWNERS +++ b/OWNERS @@ -2,9 +2,11 @@ reviewers: - dlorenc - aaron-prindle - balopat + - tstromberg approvers: - dlorenc - luxas - aaron-prindle - jimmidyson - balopat + - tstromberg From d8c8f0a8963075ebf4e08c0d3f496ecb1f2bad06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Sat, 22 Sep 2018 10:39:43 +0200 Subject: [PATCH 052/195] Upgrade cni and cni-plugins to release version Closes #3151 --- deploy/iso/minikube-iso/package/cni-bin/cni-bin.hash | 2 +- deploy/iso/minikube-iso/package/cni-bin/cni-bin.mk | 2 +- .../minikube-iso/package/cni-plugins-bin/cni-plugins-bin.hash | 2 +- .../iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.mk | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy/iso/minikube-iso/package/cni-bin/cni-bin.hash b/deploy/iso/minikube-iso/package/cni-bin/cni-bin.hash index 16b3726df3f0..ba8d154f6d14 100644 --- a/deploy/iso/minikube-iso/package/cni-bin/cni-bin.hash +++ b/deploy/iso/minikube-iso/package/cni-bin/cni-bin.hash @@ -1,3 +1,3 @@ sha256 b1ae09833a238c51161918a8849031efdb46cf0068ea5b752e362d9836e2af7d cni-v0.3.0.tgz sha256 84c9a0a41b59211d560bef14bf3f53bb370156f9ac7762270b3848fed96e1be8 cni-v0.4.0.tgz -sha256 d1e3c693903d498fcb89076f66410167eaa6d81df4a1051eba7565672f896543 cni-amd64-v0.6.0-rc1.tgz +sha256 a7f84a742c8f3a95843b3cc636444742554a4853835649ec371a07c841daebab cni-amd64-v0.6.0.tgz diff --git a/deploy/iso/minikube-iso/package/cni-bin/cni-bin.mk b/deploy/iso/minikube-iso/package/cni-bin/cni-bin.mk index 57ec012eb903..bbc3cbe7bfd6 100644 --- a/deploy/iso/minikube-iso/package/cni-bin/cni-bin.mk +++ b/deploy/iso/minikube-iso/package/cni-bin/cni-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -CNI_BIN_VERSION = v0.6.0-rc1 +CNI_BIN_VERSION = v0.6.0 CNI_BIN_SITE = https://github.com/containernetworking/cni/releases/download/$(CNI_BIN_VERSION) CNI_BIN_SOURCE = cni-amd64-$(CNI_BIN_VERSION).tgz diff --git a/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.hash b/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.hash index b823c7adf7fb..b8ba3fda6fe3 100644 --- a/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.hash +++ b/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.hash @@ -1 +1 @@ -sha256 49f14413c62f77d0ce5751934a28b291c4f04af47e591631d00e787ebcd07875 cni-plugins-amd64-v0.6.0-rc1.tgz +sha256 f04339a21b8edf76d415e7f17b620e63b8f37a76b2f706671587ab6464411f2d cni-plugins-amd64-v0.6.0.tgz diff --git a/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.mk b/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.mk index a9f3c8ad6737..44239195b866 100644 --- a/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.mk +++ b/deploy/iso/minikube-iso/package/cni-plugins-bin/cni-plugins-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -CNI_PLUGINS_BIN_VERSION = v0.6.0-rc1 +CNI_PLUGINS_BIN_VERSION = v0.6.0 CNI_PLUGINS_BIN_SITE = https://github.com/containernetworking/plugins/releases/download/$(CNI_PLUGINS_BIN_VERSION) CNI_PLUGINS_BIN_SOURCE = cni-plugins-amd64-$(CNI_PLUGINS_BIN_VERSION).tgz From 59bf9709dd22921cc5e1f1457ca2c3b82c3ea3cb Mon Sep 17 00:00:00 2001 From: Raunak Ramakrishnan Date: Sun, 23 Sep 2018 12:02:04 +0000 Subject: [PATCH 053/195] Updates to Linux CI Script in README I needed to run the following 2 commands before `kubectl` worked correctly: sudo chown -R $USER $HOME/.minikube sudo chgrp -R $USER $HOME/.minikube --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 4b093b9b61be..b4f0567e4754 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,10 @@ touch $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config sudo -E minikube start --vm-driver=none +# Change permissions of .minikube directory to current user +sudo chown -R $USER $HOME/.minikube +sudo chgrp -R $USER $HOME/.minikube + # this for loop waits until kubectl can access the api server that Minikube has created for i in {1..150}; do # timeout for 5 minutes kubectl get po &> /dev/null From 16be159cbd842a3063d8c0a79cf8e112e3415f0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Mon, 24 Sep 2018 19:59:11 +0200 Subject: [PATCH 054/195] Install crictl from binary instead of from source Since we already install docker and cni from binary --- deploy/iso/minikube-iso/package/Config.in | 2 +- .../minikube-iso/package/cri-tools/Config.in | 5 --- .../package/cri-tools/cri-tools.hash | 1 - .../package/cri-tools/cri-tools.mk | 36 ------------------- .../minikube-iso/package/crictl-bin/Config.in | 4 +++ .../package/crictl-bin/crictl-bin.hash | 1 + .../package/crictl-bin/crictl-bin.mk | 18 ++++++++++ 7 files changed, 24 insertions(+), 43 deletions(-) delete mode 100644 deploy/iso/minikube-iso/package/cri-tools/Config.in delete mode 100644 deploy/iso/minikube-iso/package/cri-tools/cri-tools.hash delete mode 100644 deploy/iso/minikube-iso/package/cri-tools/cri-tools.mk create mode 100644 deploy/iso/minikube-iso/package/crictl-bin/Config.in create mode 100644 deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.hash create mode 100644 deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.mk diff --git a/deploy/iso/minikube-iso/package/Config.in b/deploy/iso/minikube-iso/package/Config.in index c7dbb16d9892..c8958a279698 100644 --- a/deploy/iso/minikube-iso/package/Config.in +++ b/deploy/iso/minikube-iso/package/Config.in @@ -3,7 +3,7 @@ menu "System tools" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/runc-master/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/podman/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/crio-bin/Config.in" - source "$BR2_EXTERNAL_MINIKUBE_PATH/package/cri-tools/Config.in" + source "$BR2_EXTERNAL_MINIKUBE_PATH/package/crictl-bin/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/automount/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/docker-bin/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/cni-bin/Config.in" diff --git a/deploy/iso/minikube-iso/package/cri-tools/Config.in b/deploy/iso/minikube-iso/package/cri-tools/Config.in deleted file mode 100644 index b82d70116434..000000000000 --- a/deploy/iso/minikube-iso/package/cri-tools/Config.in +++ /dev/null @@ -1,5 +0,0 @@ -config BR2_PACKAGE_CRI_TOOLS - bool "cri-tools" - default y - depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS - depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS diff --git a/deploy/iso/minikube-iso/package/cri-tools/cri-tools.hash b/deploy/iso/minikube-iso/package/cri-tools/cri-tools.hash deleted file mode 100644 index d7f565634202..000000000000 --- a/deploy/iso/minikube-iso/package/cri-tools/cri-tools.hash +++ /dev/null @@ -1 +0,0 @@ -sha256 a357c67c891896032865f7a34f7ec330e5a00fe7f20b6d8be50399b91c99a4ac v1.11.1.tar.gz diff --git a/deploy/iso/minikube-iso/package/cri-tools/cri-tools.mk b/deploy/iso/minikube-iso/package/cri-tools/cri-tools.mk deleted file mode 100644 index a957f186aea2..000000000000 --- a/deploy/iso/minikube-iso/package/cri-tools/cri-tools.mk +++ /dev/null @@ -1,36 +0,0 @@ -################################################################################ -# -# cri-tools -# -################################################################################ - -CRI_TOOLS_VERSION = v1.11.1 -CRI_TOOLS_SITE = https://github.com/kubernetes-incubator/cri-tools/archive -CRI_TOOLS_SOURCE = $(CRI_TOOLS_VERSION).tar.gz -CRI_TOOLS_LICENSE = Apache-2.0 -CRI_TOOLS_LICENSE_FILES = LICENSE -CRI_TOOLS_DEPENDENCIES = host-go -CRI_TOOLS_GOPATH = $(@D)/_output -CRI_TOOLS_ENV = \ - CGO_ENABLED=1 \ - GOPATH="$(CRI_TOOLS_GOPATH)" \ - GOBIN="$(CRI_TOOLS_GOPATH)/bin" \ - PATH=$(CRI_TOOLS_GOPATH)/bin:$(BR_PATH) - - -define CRI_TOOLS_CONFIGURE_CMDS - mkdir -p $(CRI_TOOLS_GOPATH)/src/github.com/kubernetes-incubator - ln -sf $(@D) $(CRI_TOOLS_GOPATH)/src/github.com/kubernetes-incubator/cri-tools -endef - -define CRI_TOOLS_BUILD_CMDS - $(CRI_TOOLS_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) crictl -endef - -define CRI_TOOLS_INSTALL_TARGET_CMDS - $(INSTALL) -Dm755 \ - $(CRI_TOOLS_GOPATH)/bin/crictl \ - $(TARGET_DIR)/usr/bin/crictl -endef - -$(eval $(generic-package)) diff --git a/deploy/iso/minikube-iso/package/crictl-bin/Config.in b/deploy/iso/minikube-iso/package/crictl-bin/Config.in new file mode 100644 index 000000000000..ee3cd18da419 --- /dev/null +++ b/deploy/iso/minikube-iso/package/crictl-bin/Config.in @@ -0,0 +1,4 @@ +config BR2_PACKAGE_CRICTL_BIN + bool "crictl-bin" + default y + depends on BR2_x86_64 diff --git a/deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.hash b/deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.hash new file mode 100644 index 000000000000..e8d7a59775d3 --- /dev/null +++ b/deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.hash @@ -0,0 +1 @@ +sha256 ccf83574556793ceb01717dc91c66b70f183c60c2bbec70283939aae8fdef768 crictl-v1.11.1-linux-amd64.tar.gz diff --git a/deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.mk b/deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.mk new file mode 100644 index 000000000000..f630ee37eb6f --- /dev/null +++ b/deploy/iso/minikube-iso/package/crictl-bin/crictl-bin.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# crictl-bin +# +################################################################################ + +CRICTL_BIN_VERSION = v1.11.1 +CRICTL_BIN_SITE = https://github.com/kubernetes-sigs/cri-tools/releases/download/$(CRICTL_BIN_VERSION) +CRICTL_BIN_SOURCE = crictl-$(CRICTL_BIN_VERSION)-linux-amd64.tar.gz +CRICTL_BIN_STRIP_COMPONENTS = 0 + +define CRICTL_BIN_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 \ + $(@D)/crictl \ + $(TARGET_DIR)/usr/bin/crictl +endef + +$(eval $(generic-package)) From 0439a0ce6c842ceda53dc1d6e5eac9f217217ecb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20F=20Bj=C3=B6rklund?= Date: Fri, 30 Mar 2018 18:37:52 +0200 Subject: [PATCH 055/195] Add psmisc package, for pstree command --- deploy/iso/minikube-iso/configs/minikube_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy/iso/minikube-iso/configs/minikube_defconfig b/deploy/iso/minikube-iso/configs/minikube_defconfig index e8879eb040e7..8a6f8363ca16 100644 --- a/deploy/iso/minikube-iso/configs/minikube_defconfig +++ b/deploy/iso/minikube-iso/configs/minikube_defconfig @@ -41,6 +41,7 @@ BR2_PACKAGE_EBTABLES=y BR2_PACKAGE_ETHTOOL=y BR2_PACKAGE_IPROUTE2=y BR2_PACKAGE_IPTABLES=y +BR2_PACKAGE_PSMISC=y BR2_PACKAGE_RSYNC=y BR2_PACKAGE_SOCAT=y BR2_PACKAGE_SUDO=y From 306d47c382c14b22812c4eb02360e0b099560b6b Mon Sep 17 00:00:00 2001 From: ruicao Date: Mon, 24 Sep 2018 09:11:41 +0800 Subject: [PATCH 056/195] Fix typo: suppports -> supports Signed-off-by: ruicao --- docs/gpu.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/gpu.md b/docs/gpu.md index c5f57b02b33a..ab3b00c2e69f 100644 --- a/docs/gpu.md +++ b/docs/gpu.md @@ -100,7 +100,7 @@ Also: ## Why does minikube not support NVIDIA GPUs on Windows? -minikube suppports Windows host through Hyper-V or VirtualBox. +minikube supports Windows host through Hyper-V or VirtualBox. - VirtualBox doesn't support PCI passthrough for [Windows host](http://www.virtualbox.org/manual/ch09.html#pcipassthrough). From 9e586a215fc138e6e11adb2953cf5a8ec1b93dbc Mon Sep 17 00:00:00 2001 From: Jeffrey Sica Date: Sun, 9 Sep 2018 20:59:21 -0400 Subject: [PATCH 057/195] update dashboard version --- deploy/addons/dashboard/dashboard-dp.yaml | 8 ++++---- pkg/minikube/constants/constants.go | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deploy/addons/dashboard/dashboard-dp.yaml b/deploy/addons/dashboard/dashboard-dp.yaml index 53efeb2e80e3..dc71ee96613c 100644 --- a/deploy/addons/dashboard/dashboard-dp.yaml +++ b/deploy/addons/dashboard/dashboard-dp.yaml @@ -18,7 +18,7 @@ metadata: name: kubernetes-dashboard namespace: kube-system labels: - version: v1.8.1 + version: v1.10.0 addonmanager.kubernetes.io/mode: Reconcile kubernetes.io/minikube-addons: dashboard spec: @@ -26,18 +26,18 @@ spec: selector: matchLabels: app: kubernetes-dashboard - version: v1.8.1 + version: v1.10.0 addonmanager.kubernetes.io/mode: Reconcile template: metadata: labels: app: kubernetes-dashboard - version: v1.8.1 + version: v1.10.0 addonmanager.kubernetes.io/mode: Reconcile spec: containers: - name: kubernetes-dashboard - image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.1 + image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0 imagePullPolicy: IfNotPresent ports: - containerPort: 9090 diff --git a/pkg/minikube/constants/constants.go b/pkg/minikube/constants/constants.go index d13cff2340c5..4ef0cfed032f 100644 --- a/pkg/minikube/constants/constants.go +++ b/pkg/minikube/constants/constants.go @@ -229,7 +229,7 @@ func GetKubeadmCachedImages(kubernetesVersionStr string) []string { } images = append(images, []string{ - "k8s.gcr.io/kubernetes-dashboard-amd64:v1.8.1", + "k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.0", "k8s.gcr.io/kube-addon-manager:v8.6", "gcr.io/k8s-minikube/storage-provisioner:v1.8.1", }...) From f39ccc84a6f62c728150d8f5e1895692e0f50eb8 Mon Sep 17 00:00:00 2001 From: Sven Anderson Date: Mon, 24 Sep 2018 22:16:17 +0200 Subject: [PATCH 058/195] Upgrade gluster client in ISO to 4.1.5 --- .../package/gluster/0002-fix-xdr-files.patch | 23 ---------- .../package/gluster/0002-use-gnu-rpcgen.patch | 42 +++++++++++++++++++ .../minikube-iso/package/gluster/gluster.hash | 2 +- .../minikube-iso/package/gluster/gluster.mk | 6 +-- 4 files changed, 46 insertions(+), 27 deletions(-) delete mode 100644 deploy/iso/minikube-iso/package/gluster/0002-fix-xdr-files.patch create mode 100644 deploy/iso/minikube-iso/package/gluster/0002-use-gnu-rpcgen.patch diff --git a/deploy/iso/minikube-iso/package/gluster/0002-fix-xdr-files.patch b/deploy/iso/minikube-iso/package/gluster/0002-fix-xdr-files.patch deleted file mode 100644 index 2237fe8bb630..000000000000 --- a/deploy/iso/minikube-iso/package/gluster/0002-fix-xdr-files.patch +++ /dev/null @@ -1,23 +0,0 @@ ---- a/rpc/xdr/src/changelog-xdr.x 2018-04-24 19:55:36.000000000 +0530 -+++ b/rpc/xdr/src/changelog-xdr.x 2018-06-21 19:41:11.146680931 +0530 -@@ -27,16 +27,16 @@ - /* XDR: changelog -> libgfchangelog */ - struct changelog_event_req { - /* sequence number for the buffer */ -- unsigned long seq; -+ unsigned int seq; - - /* time of dispatch */ -- unsigned long tv_sec; -- unsigned long tv_usec; -+ unsigned int tv_sec; -+ unsigned int tv_usec; - }; - - struct changelog_event_rsp { - int op_ret; - - /* ack'd buffers sequence number */ -- unsigned long seq; -+ unsigned int seq; - }; diff --git a/deploy/iso/minikube-iso/package/gluster/0002-use-gnu-rpcgen.patch b/deploy/iso/minikube-iso/package/gluster/0002-use-gnu-rpcgen.patch new file mode 100644 index 000000000000..57404863bc86 --- /dev/null +++ b/deploy/iso/minikube-iso/package/gluster/0002-use-gnu-rpcgen.patch @@ -0,0 +1,42 @@ +diff -ru gluster-4.1.5/rpc/xdr/gen/Makefile.am gluster-4.1.5.patched/rpc/xdr/gen/Makefile.am +--- gluster-4.1.5/rpc/xdr/gen/Makefile.am 2018-09-21 16:13:45.958611272 +0200 ++++ gluster-4.1.5.patched/rpc/xdr/gen/Makefile.am 2018-09-24 19:50:32.798967652 +0200 +@@ -19,14 +19,14 @@ + # in the build. Or we do this crufty thing instead. + $(XDRSOURCES): $(XDRGENFILES) + @if [ ! -e $(xdrdst)/$@ -o $(@:.c=.x) -nt $(xdrdst)/$@ ]; then \ +- rpcgen -c -o $(xdrdst)/$@ $(@:.c=.x) ;\ ++ /usr/bin/rpcgen -c -o $(xdrdst)/$@ $(@:.c=.x) ;\ + fi + + # d*mn sed in netbsd6 doesn't do -i (inline) + # (why are we still running smoke on netbsd6 and not netbsd7?) + $(XDRHEADERS): $(XDRGENFILES) + @if [ ! -e $(xdrdst)/$@ -o $(@:.h=.x) -nt $(xdrdst)/$@ ]; then \ +- rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) && \ ++ /usr/bin/rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) && \ + sed -e '/#ifndef/ s/-/_/g' -e '/#define/ s/-/_/g' \ + -e '/#endif/ s/-/_/' -e 's/TMP_/H_/g' \ + $(@:.h=.tmp) > $(xdrdst)/$@ && \ +Only in gluster-4.1.5.patched/rpc/xdr/gen: Makefile.am~ +diff -ru gluster-4.1.5/rpc/xdr/gen/Makefile.in gluster-4.1.5.patched/rpc/xdr/gen/Makefile.in +--- gluster-4.1.5/rpc/xdr/gen/Makefile.in 2018-09-21 16:13:56.087638030 +0200 ++++ gluster-4.1.5.patched/rpc/xdr/gen/Makefile.in 2018-09-24 19:51:06.198109046 +0200 +@@ -558,14 +558,14 @@ + # in the build. Or we do this crufty thing instead. + $(XDRSOURCES): $(XDRGENFILES) + @if [ ! -e $(xdrdst)/$@ -o $(@:.c=.x) -nt $(xdrdst)/$@ ]; then \ +- rpcgen -c -o $(xdrdst)/$@ $(@:.c=.x) ;\ ++ /usr/bin/rpcgen -c -o $(xdrdst)/$@ $(@:.c=.x) ;\ + fi + + # d*mn sed in netbsd6 doesn't do -i (inline) + # (why are we still running smoke on netbsd6 and not netbsd7?) + $(XDRHEADERS): $(XDRGENFILES) + @if [ ! -e $(xdrdst)/$@ -o $(@:.h=.x) -nt $(xdrdst)/$@ ]; then \ +- rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) && \ ++ /usr/bin/rpcgen -h -o $(@:.h=.tmp) $(@:.h=.x) && \ + sed -e '/#ifndef/ s/-/_/g' -e '/#define/ s/-/_/g' \ + -e '/#endif/ s/-/_/' -e 's/TMP_/H_/g' \ + $(@:.h=.tmp) > $(xdrdst)/$@ && \ +Only in gluster-4.1.5.patched/rpc/xdr/gen: Makefile.in~ diff --git a/deploy/iso/minikube-iso/package/gluster/gluster.hash b/deploy/iso/minikube-iso/package/gluster/gluster.hash index 18c7dd0667b4..ebb8c7059d8c 100644 --- a/deploy/iso/minikube-iso/package/gluster/gluster.hash +++ b/deploy/iso/minikube-iso/package/gluster/gluster.hash @@ -1 +1 @@ -sha512 52043cb298831281b96869a6b4bcc25277493a50f95e8fda7fa26cbfba80b5e5d204ba83b0f13299599eefb29f058ed8cfc1d54188695f76323567df03c0501d glusterfs-3.10.12.tar.gz +sha512 ae557472b6a263e815b8c4d630b606f8e1334b6604799e499e6f53ea6ff60c2a696160fa427943cc3d01ffee91a57787c91f93a1b914179679038e63d291401f glusterfs-4.1.5.tar.gz diff --git a/deploy/iso/minikube-iso/package/gluster/gluster.mk b/deploy/iso/minikube-iso/package/gluster/gluster.mk index 61ba3bbb06f6..aedf07812486 100644 --- a/deploy/iso/minikube-iso/package/gluster/gluster.mk +++ b/deploy/iso/minikube-iso/package/gluster/gluster.mk @@ -4,9 +4,9 @@ # ################################################################################ -GLUSTER_VERSION = 3.10.12 -GLUSTER_SITE = https://download.gluster.org/pub/gluster/glusterfs/3.10/$(GLUSTER_VERSION) +GLUSTER_VERSION = 4.1.5 +GLUSTER_SITE = https://download.gluster.org/pub/gluster/glusterfs/4.1/$(GLUSTER_VERSION) GLUSTER_SOURCE = glusterfs-$(GLUSTER_VERSION).tar.gz -GLUSTER_CONF_OPTS = --disable-tiering --disable-ec-dynamic --disable-xmltest --disable-crypt-xlator --disable-georeplication --disable-ibverbs +GLUSTER_CONF_OPTS = --disable-tiering --disable-ec-dynamic --disable-xmltest --disable-crypt-xlator --disable-georeplication --disable-ibverbs --disable-glupy --disable-gnfs --disable-cmocka --without-server GLUSTER_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) install $(eval $(autotools-package)) From 4eb2cdb1203967d3e2d2986ee88173d02e8540b2 Mon Sep 17 00:00:00 2001 From: Marcus Heese Date: Mon, 24 Sep 2018 14:04:01 -0700 Subject: [PATCH 059/195] inlining deleteNetwork into if statement --- pkg/drivers/kvm/kvm.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/drivers/kvm/kvm.go b/pkg/drivers/kvm/kvm.go index faf9691f7f4e..b1bc7811da8b 100644 --- a/pkg/drivers/kvm/kvm.go +++ b/pkg/drivers/kvm/kvm.go @@ -369,8 +369,7 @@ func (d *Driver) Remove() error { // Tear down network if it exists and is not in use by another minikube instance log.Debug("Trying to delete the networks (if possible)") - err = d.deleteNetwork() - if err != nil { + if err := d.deleteNetwork(); err != nil { log.Warnf("Deleting of networks failed: %s", err.Error()) } else { log.Info("Successfully deleted networks") From 23bd8de8d83edac2d8f9ed1a718bddabb094957b Mon Sep 17 00:00:00 2001 From: Praveen Kumar Date: Tue, 18 Sep 2018 10:28:30 +0530 Subject: [PATCH 060/195] Issue #3037 change dependency management to dep --- Godeps/Godeps.json | 700 - Godeps/Readme | 5 - Gopkg.lock | 882 + Gopkg.toml | 99 + hack/godeps/godep-restore.sh | 39 - hack/godeps/godep-save.sh | 46 - hack/godeps/godep-update-k8s.sh | 25 - hack/godeps/godeps-json-updater.go | 98 - hack/godeps/utils.sh | 66 - vendor/github.com/Azure/go-ansiterm/README.md | 12 - vendor/github.com/blang/semver/README.md | 191 - vendor/github.com/blang/semver/package.json | 17 - .../github.com/c4milo/gotoolkit/.travis.yml | 11 - .../c4milo/gotoolkit/CONTRIBUTING.md | 65 - vendor/github.com/c4milo/gotoolkit/README.md | 12 - vendor/github.com/docker/docker/AUTHORS | 299 +- vendor/github.com/docker/docker/LICENSE | 2 +- .../docker/docker/contrib/syntax/vim/LICENSE | 22 + .../docker/docs/static_files/contributors.png | Bin 0 -> 23100 bytes .../docker/docker/hack/generate-authors.sh | 15 + .../integration-cli/fixtures/https/ca.pem | 1 + .../fixtures/https/client-cert.pem | 1 + .../fixtures/https/client-key.pem | 1 + .../fixtures/https/server-cert.pem | 1 + .../fixtures/https/server-key.pem | 1 + .../docker/docker/pkg/symlink/LICENSE.APACHE | 191 + .../docker/docker/pkg/symlink/LICENSE.BSD | 27 + .../docker/docker/pkg/term/ascii.go | 4 +- .../docker/docker/pkg/term/proxy.go | 6 +- .../github.com/docker/docker/pkg/term/tc.go | 3 +- .../docker/docker/pkg/term/tc_solaris_cgo.go | 65 - .../github.com/docker/docker/pkg/term/term.go | 2 +- .../docker/docker/pkg/term/term_windows.go | 42 +- .../docker/docker/pkg/term/termios_bsd.go | 4 +- .../docker/docker/pkg/term/termios_linux.go | 4 +- .../docker/pkg/term/windows/ansi_reader.go | 2 +- .../docker/pkg/term/windows/ansi_writer.go | 2 +- .../docker/docker/pkg/term/windows/console.go | 2 +- .../docker/docker/pkg/term/windows/windows.go | 4 +- .../docker/docker/pkg/term/winsize.go | 22 +- .../docker/pkg/term/winsize_solaris_cgo.go | 42 - .../docker/docker/project/CONTRIBUTING.md | 1 + .../docker/go-units/CONTRIBUTING.md | 67 - vendor/github.com/docker/go-units/MAINTAINERS | 27 - vendor/github.com/docker/go-units/README.md | 16 - vendor/github.com/docker/go-units/circle.yml | 11 - .../github.com/fsnotify/fsnotify/.gitignore | 6 - .../github.com/fsnotify/fsnotify/.travis.yml | 29 - .../github.com/fsnotify/fsnotify/CHANGELOG.md | 295 - .../fsnotify/fsnotify/CONTRIBUTING.md | 77 - vendor/github.com/fsnotify/fsnotify/README.md | 50 - vendor/github.com/ghodss/yaml/.gitignore | 20 - vendor/github.com/ghodss/yaml/.travis.yml | 7 - vendor/github.com/ghodss/yaml/README.md | 116 - .../gogo/protobuf/GOLANG_CONTRIBUTORS | 5 + .../github.com/gogo/protobuf/proto/Makefile | 43 - vendor/github.com/golang/glog/README | 44 - .../github.com/golang/protobuf/proto/Makefile | 43 - .../golang/protobuf/ptypes/any/any.proto | 149 - .../protobuf/ptypes/duration/duration.proto | 117 - .../golang/protobuf/ptypes/regen.sh | 43 - .../protobuf/ptypes/timestamp/timestamp.proto | 133 - .../cmd/ko/test/kodata/kenobi | 1 + vendor/github.com/google/gofuzz/.travis.yml | 13 - .../github.com/google/gofuzz/CONTRIBUTING.md | 67 - vendor/github.com/google/gofuzz/README.md | 71 - .../gnostic/OpenAPIv2/OpenAPIv2.proto | 663 - .../googleapis/gnostic/OpenAPIv2/README.md | 16 - .../gnostic/OpenAPIv2/openapi-2.0.json | 1610 - .../googleapis/gnostic/compiler/README.md | 3 - .../gnostic/extensions/COMPILE-EXTENSION.sh | 5 - .../googleapis/gnostic/extensions/README.md | 5 - .../gnostic/extensions/extension.proto | 93 - vendor/github.com/hashicorp/errwrap/README.md | 89 - .../hashicorp/go-multierror/.travis.yml | 12 - .../hashicorp/go-multierror/Makefile | 31 - .../hashicorp/go-multierror/README.md | 97 - .../hashicorp/golang-lru/.gitignore | 23 - .../github.com/hashicorp/golang-lru/README.md | 25 - vendor/github.com/hashicorp/hcl/.gitignore | 9 - vendor/github.com/hashicorp/hcl/.travis.yml | 3 - vendor/github.com/hashicorp/hcl/Makefile | 17 - vendor/github.com/hashicorp/hcl/README.md | 115 - vendor/github.com/hashicorp/hcl/appveyor.yml | 16 - .../github.com/hooklift/iso9660/.travis.yml | 15 - .../hooklift/iso9660/CONTRIBUTING.md | 51 - vendor/github.com/hooklift/iso9660/Makefile | 12 - vendor/github.com/hooklift/iso9660/README.md | 25 - vendor/github.com/hooklift/iso9660/common.mk | 43 - vendor/github.com/howeyc/gopass/.travis.yml | 11 - .../howeyc/gopass/OPENSOLARIS.LICENSE | 384 - vendor/github.com/howeyc/gopass/README.md | 27 - vendor/github.com/imdario/mergo/.travis.yml | 2 - vendor/github.com/imdario/mergo/README.md | 68 - .../imdario/mergo/testdata/license.yml | 3 + .../inconshreveable/mousetrap/README.md | 23 - .../jimmidyson/go-download/.gitignore | 3 - .../jimmidyson/go-download/.travis.yml | 21 - .../jimmidyson/go-download/README.md | 8 - .../jimmidyson/go-download/appveyor.yml | 23 - .../github.com/jimmidyson/go-download/test.sh | 12 - .../johanneswuerbach/nfsexports/.travis.yml | 10 - .../johanneswuerbach/nfsexports/README.md | 34 - .../github.com/json-iterator/go/.codecov.yml | 3 - vendor/github.com/json-iterator/go/.gitignore | 4 - .../github.com/json-iterator/go/.travis.yml | 14 - vendor/github.com/json-iterator/go/Gopkg.lock | 33 - vendor/github.com/json-iterator/go/Gopkg.toml | 33 - vendor/github.com/json-iterator/go/README.md | 86 - vendor/github.com/json-iterator/go/build.sh | 12 - .../go/fuzzy_mode_convert_table.md | 7 - vendor/github.com/json-iterator/go/test.sh | 12 - vendor/github.com/kr/fs/Readme | 3 - .../github.com/libvirt/libvirt-go/.gitignore | 7 - .../github.com/libvirt/libvirt-go/.travis.yml | 38 - vendor/github.com/libvirt/libvirt-go/FAQ.md | 19 - .../github.com/libvirt/libvirt-go/README.md | 136 - .../libvirt/libvirt-go/libvirtd.conf | 6 - .../magiconair/properties/.gitignore | 6 - .../magiconair/properties/.travis.yml | 6 - .../magiconair/properties/CHANGELOG.md | 81 - .../magiconair/properties/README.md | 81 - .../_third_party/gopkg.in/check.v1/LICENSE | 25 + .../github.com/mattn/go-runewidth/.travis.yml | 8 - .../github.com/mattn/go-runewidth/README.mkd | 27 - vendor/github.com/mitchellh/go-ps/.gitignore | 1 - vendor/github.com/mitchellh/go-ps/.travis.yml | 4 - vendor/github.com/mitchellh/go-ps/README.md | 34 - vendor/github.com/mitchellh/go-ps/Vagrantfile | 43 - .../mitchellh/mapstructure/.travis.yml | 7 - .../mitchellh/mapstructure/README.md | 46 - vendor/github.com/moby/hyperkit/go/.gitignore | 1 - .../moby/hyperkit/go/Dockerfile.build | 10 - vendor/github.com/moby/hyperkit/go/Makefile | 67 - .../github.com/moby/hyperkit/go/vendor.conf | 2 - .../olekukonko/tablewriter/.travis.yml | 8 - .../olekukonko/tablewriter/README.md | 168 - .../olekukonko/tablewriter/test.csv | 4 - .../olekukonko/tablewriter/test_info.csv | 4 - .../pelletier/go-buffruneio/.gitignore | 1 - .../pelletier/go-buffruneio/.travis.yml | 7 - .../pelletier/go-buffruneio/README.md | 62 - .../github.com/pelletier/go-toml/.gitignore | 1 - .../github.com/pelletier/go-toml/.travis.yml | 18 - vendor/github.com/pelletier/go-toml/README.md | 118 - vendor/github.com/pelletier/go-toml/clean.sh | 6 - .../pelletier/go-toml/example-crlf.toml | 29 - .../github.com/pelletier/go-toml/example.toml | 29 - vendor/github.com/pelletier/go-toml/test.sh | 79 - vendor/github.com/pkg/browser/README.md | 55 - vendor/github.com/pkg/errors/.gitignore | 24 - vendor/github.com/pkg/errors/.travis.yml | 11 - vendor/github.com/pkg/errors/README.md | 52 - vendor/github.com/pkg/errors/appveyor.yml | 32 - vendor/github.com/pkg/profile/.travis.yml | 11 - vendor/github.com/pkg/profile/README.md | 54 - vendor/github.com/pkg/sftp/.gitignore | 8 - vendor/github.com/pkg/sftp/.travis.yml | 25 - vendor/github.com/pkg/sftp/README.md | 27 - .../russross/blackfriday/.gitignore | 8 - .../russross/blackfriday/.travis.yml | 18 - .../github.com/russross/blackfriday/README.md | 267 - .../samalba/dockerclient/.gitignore | 22 - .../github.com/samalba/dockerclient/README.md | 98 - .../sanitized_anchor_name/.travis.yml | 10 - .../shurcooL/sanitized_anchor_name/README.md | 31 - .../shurcooL/sanitized_anchor_name/main.go | 2 +- vendor/github.com/sirupsen/logrus/.gitignore | 1 - vendor/github.com/sirupsen/logrus/.travis.yml | 15 - .../github.com/sirupsen/logrus/CHANGELOG.md | 113 - vendor/github.com/sirupsen/logrus/README.md | 507 - .../github.com/sirupsen/logrus/appveyor.yml | 14 - vendor/github.com/spf13/afero/.travis.yml | 21 - vendor/github.com/spf13/afero/README.md | 449 - vendor/github.com/spf13/afero/appveyor.yml | 15 - vendor/github.com/spf13/afero/sftp_test_go | 286 - vendor/github.com/spf13/cast/.gitignore | 23 - vendor/github.com/spf13/cast/README.md | 72 - vendor/github.com/spf13/cobra/.gitignore | 36 - vendor/github.com/spf13/cobra/.mailmap | 3 - vendor/github.com/spf13/cobra/.travis.yml | 21 - vendor/github.com/spf13/cobra/README.md | 736 - .../spf13/cobra/bash_completions.md | 220 - .../cobra/cobra/cmd/testdata/LICENSE.golden | 202 + vendor/github.com/spf13/cobra/doc/man_docs.md | 31 - vendor/github.com/spf13/cobra/doc/md_docs.md | 115 - .../github.com/spf13/cobra/doc/rest_docs.md | 114 - .../github.com/spf13/cobra/doc/yaml_docs.md | 112 - .../spf13/jwalterweatherman/.gitignore | 22 - .../spf13/jwalterweatherman/README.md | 161 - vendor/github.com/spf13/pflag/.gitignore | 2 - vendor/github.com/spf13/pflag/.travis.yml | 21 - vendor/github.com/spf13/pflag/README.md | 296 - vendor/github.com/spf13/pflag/bytes.go | 105 + .../github.com/spf13/pflag/duration_slice.go | 128 + vendor/github.com/spf13/pflag/flag.go | 98 +- vendor/github.com/spf13/pflag/golangflag.go | 4 + vendor/github.com/spf13/pflag/string_array.go | 8 +- vendor/github.com/spf13/pflag/string_slice.go | 20 + vendor/github.com/spf13/viper/.gitignore | 24 - vendor/github.com/spf13/viper/.travis.yml | 27 - vendor/github.com/spf13/viper/README.md | 643 - vendor/github.com/spf13/viper/nohup.out | 1 - .../xeipuuv/gojsonpointer/README.md | 8 - .../xeipuuv/gojsonreference/README.md | 10 - .../xeipuuv/gojsonschema/.gitignore | 1 - .../xeipuuv/gojsonschema/.travis.yml | 7 - .../github.com/xeipuuv/gojsonschema/README.md | 236 - .../xeipuuv/gojsonschema/glide.yaml | 12 - .../json_schema_test_suite/LICENSE | 19 + vendor/github.com/zchee/go-vmnet/.gitignore | 86 - vendor/golang.org/x/crypto/curve25519/doc.go | 2 +- vendor/golang.org/x/crypto/ssh/doc.go | 2 +- .../golang.org/x/crypto/ssh/terminal/util.go | 2 +- .../x/crypto/ssh/terminal/util_solaris.go | 2 +- vendor/golang.org/x/net/context/context.go | 2 +- vendor/golang.org/x/net/http2/.gitignore | 2 - vendor/golang.org/x/net/http2/Dockerfile | 51 - vendor/golang.org/x/net/http2/Makefile | 3 - vendor/golang.org/x/net/http2/README | 20 - vendor/golang.org/x/net/http2/http2.go | 2 +- vendor/golang.org/x/net/idna/idna.go | 2 +- vendor/golang.org/x/sys/unix/.gitignore | 1 - vendor/golang.org/x/sys/unix/README.md | 173 - vendor/golang.org/x/sys/unix/mkall.sh | 194 - vendor/golang.org/x/sys/unix/mkerrors.sh | 569 - vendor/golang.org/x/sys/unix/mksyscall.pl | 328 - .../x/sys/unix/mksyscall_solaris.pl | 289 - .../golang.org/x/sys/unix/mksysctl_openbsd.pl | 264 - .../golang.org/x/sys/unix/mksysnum_darwin.pl | 39 - .../x/sys/unix/mksysnum_dragonfly.pl | 50 - .../golang.org/x/sys/unix/mksysnum_freebsd.pl | 50 - .../golang.org/x/sys/unix/mksysnum_netbsd.pl | 58 - .../golang.org/x/sys/unix/mksysnum_openbsd.pl | 50 - vendor/golang.org/x/sys/unix/syscall.go | 2 +- .../golang.org/x/sys/windows/dll_windows.go | 9 +- vendor/golang.org/x/sys/windows/env_unset.go | 2 +- .../golang.org/x/sys/windows/env_windows.go | 2 +- .../x/sys/windows/memory_windows.go | 2 +- vendor/golang.org/x/sys/windows/mksyscall.go | 2 +- vendor/golang.org/x/sys/windows/race.go | 2 +- vendor/golang.org/x/sys/windows/race0.go | 2 +- .../x/sys/windows/registry/export_test.go | 11 - .../x/sys/windows/registry/registry_test.go | 756 - .../x/sys/windows/security_windows.go | 2 +- vendor/golang.org/x/sys/windows/svc/event.go | 48 - vendor/golang.org/x/sys/windows/svc/go12.c | 24 - vendor/golang.org/x/sys/windows/svc/go12.go | 11 - vendor/golang.org/x/sys/windows/svc/go13.go | 31 - .../golang.org/x/sys/windows/svc/security.go | 62 - .../golang.org/x/sys/windows/svc/service.go | 363 - vendor/golang.org/x/sys/windows/svc/sys_386.s | 68 - .../golang.org/x/sys/windows/svc/sys_amd64.s | 42 - vendor/golang.org/x/sys/windows/syscall.go | 6 +- .../golang.org/x/sys/windows/syscall_test.go | 33 - .../x/sys/windows/syscall_windows.go | 34 +- .../x/sys/windows/syscall_windows_test.go | 107 - .../golang.org/x/sys/windows/types_windows.go | 2 +- .../x/sys/windows/types_windows_386.go | 2 +- .../x/sys/windows/types_windows_amd64.go | 2 +- vendor/golang.org/x/text/internal/gen/code.go | 351 + vendor/golang.org/x/text/internal/gen/gen.go | 281 + .../x/text/internal/triegen/compact.go | 58 + .../x/text/internal/triegen/print.go | 251 + .../x/text/internal/triegen/triegen.go | 494 + vendor/golang.org/x/text/internal/ucd/ucd.go | 376 + .../golang.org/x/text/transform/transform.go | 2 +- vendor/golang.org/x/text/unicode/bidi/bidi.go | 2 +- vendor/golang.org/x/text/unicode/cldr/base.go | 100 + vendor/golang.org/x/text/unicode/cldr/cldr.go | 130 + .../golang.org/x/text/unicode/cldr/collate.go | 359 + .../golang.org/x/text/unicode/cldr/decode.go | 171 + .../golang.org/x/text/unicode/cldr/makexml.go | 400 + .../golang.org/x/text/unicode/cldr/resolve.go | 602 + .../golang.org/x/text/unicode/cldr/slice.go | 144 + vendor/golang.org/x/text/unicode/cldr/xml.go | 1487 + .../x/text/unicode/norm/normalize.go | 2 +- .../x/text/unicode/rangetable/gen.go | 113 + .../x/text/unicode/rangetable/merge.go | 260 + .../x/text/unicode/rangetable/rangetable.go | 70 + .../x/text/unicode/rangetable/tables.go | 5735 + vendor/gopkg.in/cheggaaa/pb.v1/.travis.yml | 7 - vendor/gopkg.in/cheggaaa/pb.v1/README.md | 176 - vendor/gopkg.in/inf.v0/dec.go | 2 +- vendor/gopkg.in/yaml.v2/.travis.yml | 9 - vendor/gopkg.in/yaml.v2/README.md | 133 - .../api/admissionregistration/v1alpha1/BUILD | 44 - .../api/admissionregistration/v1alpha1/doc.go | 2 +- .../v1alpha1/generated.proto | 108 - .../api/admissionregistration/v1beta1/BUILD | 44 - .../api/admissionregistration/v1beta1/doc.go | 2 +- .../v1beta1/generated.proto | 265 - vendor/k8s.io/api/apps/v1/BUILD | 43 - vendor/k8s.io/api/apps/v1/doc.go | 2 +- vendor/k8s.io/api/apps/v1/generated.proto | 701 - vendor/k8s.io/api/apps/v1beta1/BUILD | 47 - vendor/k8s.io/api/apps/v1beta1/doc.go | 2 +- .../k8s.io/api/apps/v1beta1/generated.proto | 484 - vendor/k8s.io/api/apps/v1beta2/BUILD | 47 - vendor/k8s.io/api/apps/v1beta2/doc.go | 2 +- .../k8s.io/api/apps/v1beta2/generated.proto | 752 - vendor/k8s.io/api/authentication/v1/BUILD | 46 - vendor/k8s.io/api/authentication/v1/doc.go | 2 +- .../api/authentication/v1/generated.proto | 160 - .../k8s.io/api/authentication/v1beta1/BUILD | 45 - .../k8s.io/api/authentication/v1beta1/doc.go | 2 +- .../authentication/v1beta1/generated.proto | 99 - vendor/k8s.io/api/authorization/v1/BUILD | 45 - vendor/k8s.io/api/authorization/v1/doc.go | 2 +- .../api/authorization/v1/generated.proto | 273 - vendor/k8s.io/api/authorization/v1beta1/BUILD | 45 - .../k8s.io/api/authorization/v1beta1/doc.go | 2 +- .../api/authorization/v1beta1/generated.proto | 273 - vendor/k8s.io/api/autoscaling/v1/BUILD | 46 - vendor/k8s.io/api/autoscaling/v1/doc.go | 2 +- .../k8s.io/api/autoscaling/v1/generated.proto | 382 - vendor/k8s.io/api/autoscaling/v2beta1/BUILD | 46 - vendor/k8s.io/api/autoscaling/v2beta1/doc.go | 2 +- .../api/autoscaling/v2beta1/generated.proto | 363 - vendor/k8s.io/api/batch/v1/BUILD | 45 - vendor/k8s.io/api/batch/v1/doc.go | 2 +- vendor/k8s.io/api/batch/v1/generated.proto | 173 - vendor/k8s.io/api/batch/v1beta1/BUILD | 46 - vendor/k8s.io/api/batch/v1beta1/doc.go | 2 +- .../k8s.io/api/batch/v1beta1/generated.proto | 138 - vendor/k8s.io/api/batch/v2alpha1/BUILD | 46 - vendor/k8s.io/api/batch/v2alpha1/doc.go | 2 +- .../k8s.io/api/batch/v2alpha1/generated.proto | 136 - vendor/k8s.io/api/certificates/v1beta1/BUILD | 45 - vendor/k8s.io/api/certificates/v1beta1/doc.go | 2 +- .../api/certificates/v1beta1/generated.proto | 122 - vendor/k8s.io/api/core/v1/BUILD | 64 - vendor/k8s.io/api/core/v1/doc.go | 2 +- vendor/k8s.io/api/core/v1/generated.proto | 4696 - vendor/k8s.io/api/events/v1beta1/BUILD | 42 - vendor/k8s.io/api/events/v1beta1/doc.go | 2 +- .../k8s.io/api/events/v1beta1/generated.proto | 122 - vendor/k8s.io/api/extensions/v1beta1/BUILD | 49 - vendor/k8s.io/api/extensions/v1beta1/doc.go | 2 +- .../api/extensions/v1beta1/generated.proto | 1117 - vendor/k8s.io/api/networking/v1/BUILD | 46 - vendor/k8s.io/api/networking/v1/doc.go | 2 +- .../k8s.io/api/networking/v1/generated.proto | 190 - vendor/k8s.io/api/policy/v1beta1/BUILD | 47 - vendor/k8s.io/api/policy/v1beta1/doc.go | 2 +- .../k8s.io/api/policy/v1beta1/generated.proto | 307 - vendor/k8s.io/api/rbac/v1/BUILD | 44 - vendor/k8s.io/api/rbac/v1/doc.go | 2 +- vendor/k8s.io/api/rbac/v1/generated.proto | 197 - vendor/k8s.io/api/rbac/v1alpha1/BUILD | 44 - vendor/k8s.io/api/rbac/v1alpha1/doc.go | 2 +- .../k8s.io/api/rbac/v1alpha1/generated.proto | 198 - vendor/k8s.io/api/rbac/v1beta1/BUILD | 44 - vendor/k8s.io/api/rbac/v1beta1/doc.go | 2 +- .../k8s.io/api/rbac/v1beta1/generated.proto | 198 - vendor/k8s.io/api/scheduling/v1alpha1/BUILD | 44 - vendor/k8s.io/api/scheduling/v1alpha1/doc.go | 2 +- .../api/scheduling/v1alpha1/generated.proto | 68 - vendor/k8s.io/api/settings/v1alpha1/BUILD | 45 - vendor/k8s.io/api/settings/v1alpha1/doc.go | 2 +- .../api/settings/v1alpha1/generated.proto | 76 - vendor/k8s.io/api/storage/v1/BUILD | 43 - vendor/k8s.io/api/storage/v1/generated.proto | 85 - vendor/k8s.io/api/storage/v1alpha1/BUILD | 42 - vendor/k8s.io/api/storage/v1alpha1/doc.go | 2 +- .../api/storage/v1alpha1/generated.proto | 128 - vendor/k8s.io/api/storage/v1beta1/BUILD | 43 - vendor/k8s.io/api/storage/v1beta1/doc.go | 2 +- .../api/storage/v1beta1/generated.proto | 182 - .../k8s.io/apimachinery/pkg/api/errors/BUILD | 47 - .../k8s.io/apimachinery/pkg/api/errors/OWNERS | 24 - .../k8s.io/apimachinery/pkg/api/errors/doc.go | 2 +- vendor/k8s.io/apimachinery/pkg/api/meta/BUILD | 72 - .../k8s.io/apimachinery/pkg/api/meta/OWNERS | 25 - .../k8s.io/apimachinery/pkg/api/meta/doc.go | 2 +- .../apimachinery/pkg/api/resource/BUILD | 69 - .../apimachinery/pkg/api/resource/OWNERS | 16 - .../pkg/api/resource/generated.proto | 95 - .../pkg/apis/meta/internalversion/BUILD | 59 - .../apimachinery/pkg/apis/meta/v1/BUILD | 101 - .../apimachinery/pkg/apis/meta/v1/OWNERS | 31 - .../apimachinery/pkg/apis/meta/v1/doc.go | 2 +- .../pkg/apis/meta/v1/generated.proto | 838 - .../pkg/apis/meta/v1/unstructured/BUILD | 53 - .../apimachinery/pkg/apis/meta/v1beta1/BUILD | 45 - .../pkg/apis/meta/v1beta1/generated.proto | 58 - .../k8s.io/apimachinery/pkg/conversion/BUILD | 49 - .../k8s.io/apimachinery/pkg/conversion/doc.go | 2 +- .../pkg/conversion/queryparams/BUILD | 39 - .../pkg/conversion/queryparams/doc.go | 2 +- vendor/k8s.io/apimachinery/pkg/fields/BUILD | 41 - vendor/k8s.io/apimachinery/pkg/fields/doc.go | 2 +- vendor/k8s.io/apimachinery/pkg/labels/BUILD | 50 - vendor/k8s.io/apimachinery/pkg/labels/doc.go | 2 +- vendor/k8s.io/apimachinery/pkg/runtime/BUILD | 98 - vendor/k8s.io/apimachinery/pkg/runtime/doc.go | 2 +- .../apimachinery/pkg/runtime/generated.proto | 129 - .../apimachinery/pkg/runtime/schema/BUILD | 43 - .../apimachinery/pkg/runtime/serializer/BUILD | 64 - .../pkg/runtime/serializer/json/BUILD | 55 - .../pkg/runtime/serializer/protobuf/BUILD | 35 - .../pkg/runtime/serializer/protobuf/doc.go | 2 +- .../pkg/runtime/serializer/recognizer/BUILD | 32 - .../pkg/runtime/serializer/streaming/BUILD | 41 - .../pkg/runtime/serializer/versioning/BUILD | 41 - .../k8s.io/apimachinery/pkg/selection/BUILD | 25 - vendor/k8s.io/apimachinery/pkg/types/BUILD | 31 - vendor/k8s.io/apimachinery/pkg/types/doc.go | 2 +- .../k8s.io/apimachinery/pkg/util/cache/BUILD | 43 - .../k8s.io/apimachinery/pkg/util/clock/BUILD | 32 - .../k8s.io/apimachinery/pkg/util/diff/BUILD | 36 - .../k8s.io/apimachinery/pkg/util/errors/BUILD | 35 - .../apimachinery/pkg/util/errors/doc.go | 2 +- .../k8s.io/apimachinery/pkg/util/framer/BUILD | 32 - .../k8s.io/apimachinery/pkg/util/intstr/BUILD | 47 - .../pkg/util/intstr/generated.proto | 43 - .../k8s.io/apimachinery/pkg/util/json/BUILD | 32 - .../apimachinery/pkg/util/mergepatch/BUILD | 39 - .../apimachinery/pkg/util/mergepatch/OWNERS | 5 - vendor/k8s.io/apimachinery/pkg/util/net/BUILD | 50 - .../k8s.io/apimachinery/pkg/util/net/http.go | 3 - .../apimachinery/pkg/util/runtime/BUILD | 33 - .../k8s.io/apimachinery/pkg/util/sets/BUILD | 71 - .../pkg/util/strategicpatch/BUILD | 60 - .../pkg/util/strategicpatch/OWNERS | 5 - .../k8s.io/apimachinery/pkg/util/uuid/BUILD | 29 - .../apimachinery/pkg/util/validation/BUILD | 37 - .../pkg/util/validation/field/BUILD | 42 - .../k8s.io/apimachinery/pkg/util/wait/BUILD | 37 - .../k8s.io/apimachinery/pkg/util/wait/doc.go | 2 +- .../k8s.io/apimachinery/pkg/util/yaml/BUILD | 36 - vendor/k8s.io/apimachinery/pkg/version/BUILD | 28 - vendor/k8s.io/apimachinery/pkg/version/doc.go | 2 +- vendor/k8s.io/apimachinery/pkg/watch/BUILD | 69 - vendor/k8s.io/apimachinery/pkg/watch/doc.go | 2 +- .../third_party/forked/golang/json/BUILD | 32 - .../third_party/forked/golang/json/OWNERS | 5 - .../third_party/forked/golang/reflect/BUILD | 32 - .../k8s.io/apiserver/pkg/util/feature/BUILD | 40 - .../pkg/util/feature/feature_gate.go | 99 +- vendor/k8s.io/client-go/discovery/BUILD | 75 - vendor/k8s.io/client-go/kubernetes/BUILD | 95 - vendor/k8s.io/client-go/kubernetes/import.go | 2 +- .../k8s.io/client-go/kubernetes/scheme/BUILD | 62 - .../admissionregistration/v1alpha1/BUILD | 39 - .../typed/admissionregistration/v1beta1/BUILD | 40 - .../client-go/kubernetes/typed/apps/v1/BUILD | 43 - .../kubernetes/typed/apps/v1beta1/BUILD | 45 - .../kubernetes/typed/apps/v1beta2/BUILD | 47 - .../kubernetes/typed/authentication/v1/BUILD | 40 - .../typed/authentication/v1beta1/BUILD | 40 - .../kubernetes/typed/authorization/v1/BUILD | 46 - .../typed/authorization/v1beta1/BUILD | 46 - .../kubernetes/typed/autoscaling/v1/BUILD | 42 - .../typed/autoscaling/v2beta1/BUILD | 39 - .../client-go/kubernetes/typed/batch/v1/BUILD | 42 - .../kubernetes/typed/batch/v1beta1/BUILD | 42 - .../kubernetes/typed/batch/v2alpha1/BUILD | 42 - .../typed/certificates/v1beta1/BUILD | 43 - .../client-go/kubernetes/typed/core/v1/BUILD | 70 - .../kubernetes/typed/core/v1/fake/BUILD | 66 - .../kubernetes/typed/events/v1beta1/BUILD | 39 - .../kubernetes/typed/extensions/v1beta1/BUILD | 51 - .../kubernetes/typed/networking/v1/BUILD | 42 - .../kubernetes/typed/policy/v1beta1/BUILD | 45 - .../client-go/kubernetes/typed/rbac/v1/BUILD | 45 - .../kubernetes/typed/rbac/v1alpha1/BUILD | 45 - .../kubernetes/typed/rbac/v1beta1/BUILD | 45 - .../typed/scheduling/v1alpha1/BUILD | 42 - .../kubernetes/typed/settings/v1alpha1/BUILD | 42 - .../kubernetes/typed/storage/v1/BUILD | 42 - .../kubernetes/typed/storage/v1alpha1/BUILD | 39 - .../kubernetes/typed/storage/v1beta1/BUILD | 43 - .../pkg/apis/clientauthentication/BUILD | 36 - .../pkg/apis/clientauthentication/doc.go | 2 +- .../apis/clientauthentication/v1alpha1/BUILD | 39 - .../apis/clientauthentication/v1alpha1/doc.go | 2 +- .../client-go/pkg/version/.gitattributes | 1 - vendor/k8s.io/client-go/pkg/version/BUILD | 30 - vendor/k8s.io/client-go/pkg/version/def.bzl | 38 - vendor/k8s.io/client-go/pkg/version/doc.go | 2 +- .../plugin/pkg/client/auth/exec/BUILD | 44 - vendor/k8s.io/client-go/rest/BUILD | 99 - vendor/k8s.io/client-go/rest/OWNERS | 24 - vendor/k8s.io/client-go/rest/watch/BUILD | 56 - vendor/k8s.io/client-go/testing/BUILD | 60 - vendor/k8s.io/client-go/tools/auth/BUILD | 33 - .../client-go/tools/bootstrap/token/api/BUILD | 26 - .../tools/bootstrap/token/api/OWNERS | 5 - .../tools/bootstrap/token/api/doc.go | 2 +- vendor/k8s.io/client-go/tools/cache/BUILD | 103 - vendor/k8s.io/client-go/tools/cache/OWNERS | 50 - vendor/k8s.io/client-go/tools/cache/doc.go | 2 +- vendor/k8s.io/client-go/tools/clientcmd/BUILD | 78 - .../client-go/tools/clientcmd/api/BUILD | 50 - .../tools/clientcmd/api/latest/BUILD | 33 - .../client-go/tools/clientcmd/api/v1/BUILD | 37 - .../k8s.io/client-go/tools/clientcmd/doc.go | 2 +- vendor/k8s.io/client-go/tools/metrics/BUILD | 25 - vendor/k8s.io/client-go/tools/metrics/OWNERS | 7 - vendor/k8s.io/client-go/tools/pager/BUILD | 49 - vendor/k8s.io/client-go/tools/record/BUILD | 68 - vendor/k8s.io/client-go/tools/record/OWNERS | 27 - vendor/k8s.io/client-go/tools/record/doc.go | 2 +- vendor/k8s.io/client-go/tools/reference/BUILD | 31 - vendor/k8s.io/client-go/transport/BUILD | 48 - vendor/k8s.io/client-go/transport/OWNERS | 7 - vendor/k8s.io/client-go/util/buffer/BUILD | 29 - vendor/k8s.io/client-go/util/cert/BUILD | 47 - .../k8s.io/client-go/util/flowcontrol/BUILD | 44 - vendor/k8s.io/client-go/util/homedir/BUILD | 25 - vendor/k8s.io/client-go/util/integer/BUILD | 32 - vendor/k8s.io/client-go/util/retry/BUILD | 41 - vendor/k8s.io/client-go/util/retry/OWNERS | 2 - vendor/k8s.io/kubernetes/.bazelrc | 1 + vendor/k8s.io/kubernetes/.kazelcfg.json | 1 + vendor/k8s.io/kubernetes/BUILD.bazel | 1 + vendor/k8s.io/kubernetes/Godeps/LICENSES | 103763 +++++++++++++++ vendor/k8s.io/kubernetes/Makefile | 1 + .../kubernetes/Makefile.generated_files | 1 + vendor/k8s.io/kubernetes/WORKSPACE | 1 + vendor/k8s.io/kubernetes/cluster/gce/cos | 1 + vendor/k8s.io/kubernetes/cluster/gce/custom | 1 + vendor/k8s.io/kubernetes/cluster/gce/ubuntu | 1 + .../layers/kubeapi-load-balancer/copyright | 13 + .../actions/namespace-delete | 1 + .../kubernetes-master/actions/namespace-list | 1 + .../juju/layers/kubernetes-master/copyright} | 7 +- .../juju/layers/kubernetes-worker/copyright | 13 + .../cmd/kubeadm/app/constants/BUILD | 39 - .../cmd/kubeadm/app/constants/constants.go | 129 +- .../kubernetes/cmd/kubeadm/app/features/BUILD | 37 - .../cmd/kubeadm/app/features/features.go | 15 +- vendor/k8s.io/kubernetes/pkg/apis/core/BUILD | 62 - vendor/k8s.io/kubernetes/pkg/apis/core/OWNERS | 43 - .../pkg/apis/core/annotation_key_constants.go | 21 +- vendor/k8s.io/kubernetes/pkg/apis/core/doc.go | 2 +- .../kubernetes/pkg/apis/core/helper/BUILD | 51 - .../pkg/apis/core/helper/helpers.go | 153 +- .../kubernetes/pkg/apis/core/register.go | 1 - .../kubernetes/pkg/apis/core/resource.go | 7 - .../k8s.io/kubernetes/pkg/apis/core/types.go | 515 +- .../kubernetes/pkg/apis/core/v1/helper/BUILD | 51 - .../pkg/apis/core/v1/helper/helpers.go | 220 +- .../pkg/apis/core/zz_generated.deepcopy.go | 448 +- vendor/k8s.io/kubernetes/pkg/generated/BUILD | 88 - .../k8s.io/kubernetes/pkg/generated/def.bzl | 45 - .../pkg/generated/zz_generated.openapi.go | 29413 ---- .../pkg/registry/core/service/allocator/BUILD | 43 - .../registry/core/service/ipallocator/BUILD | 44 - .../kubernetes/pkg/util/goroutinemap/BUILD | 41 - .../kubernetes/pkg/util/goroutinemap/OWNERS | 4 - .../goroutinemap/exponentialbackoff/BUILD | 25 - .../k8s.io/kubernetes/pkg/util/version/BUILD | 35 - .../k8s.io/kubernetes/pkg/util/version/doc.go | 2 +- .../kubernetes/staging/src/k8s.io/api/LICENSE | 202 + .../k8s.io/apiextensions-apiserver/LICENSE | 202 + .../staging/src/k8s.io/apimachinery/LICENSE | 202 + .../staging/src/k8s.io/apiserver/LICENSE | 202 + .../staging/src/k8s.io/client-go/LICENSE | 202 + .../staging/src/k8s.io/code-generator/LICENSE | 202 + .../src/k8s.io/kube-aggregator/LICENSE | 202 + .../staging/src/k8s.io/metrics/LICENSE | 201 + .../src/k8s.io/sample-apiserver/LICENSE | 202 + .../src/k8s.io/sample-controller/LICENSE | 202 + .../third_party/forked/golang/LICENSE | 27 + .../third_party/forked/golang/PATENTS | 22 + .../third_party/forked/gonum/graph/LICENSE | 23 + .../third_party/forked/shell2junit/LICENSE | 172 + .../kubernetes/third_party/intemp/LICENSE | 202 + .../third_party/swagger-ui/LICENSE} | 21 +- 571 files changed, 120709 insertions(+), 67476 deletions(-) delete mode 100644 Godeps/Godeps.json delete mode 100644 Godeps/Readme create mode 100644 Gopkg.lock create mode 100644 Gopkg.toml delete mode 100755 hack/godeps/godep-restore.sh delete mode 100755 hack/godeps/godep-save.sh delete mode 100755 hack/godeps/godep-update-k8s.sh delete mode 100644 hack/godeps/godeps-json-updater.go delete mode 100644 hack/godeps/utils.sh delete mode 100644 vendor/github.com/Azure/go-ansiterm/README.md delete mode 100644 vendor/github.com/blang/semver/README.md delete mode 100644 vendor/github.com/blang/semver/package.json delete mode 100644 vendor/github.com/c4milo/gotoolkit/.travis.yml delete mode 100644 vendor/github.com/c4milo/gotoolkit/CONTRIBUTING.md delete mode 100644 vendor/github.com/c4milo/gotoolkit/README.md create mode 100644 vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE create mode 100644 vendor/github.com/docker/docker/docs/static_files/contributors.png create mode 100755 vendor/github.com/docker/docker/hack/generate-authors.sh create mode 120000 vendor/github.com/docker/docker/integration-cli/fixtures/https/ca.pem create mode 120000 vendor/github.com/docker/docker/integration-cli/fixtures/https/client-cert.pem create mode 120000 vendor/github.com/docker/docker/integration-cli/fixtures/https/client-key.pem create mode 120000 vendor/github.com/docker/docker/integration-cli/fixtures/https/server-cert.pem create mode 120000 vendor/github.com/docker/docker/integration-cli/fixtures/https/server-key.pem create mode 100644 vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE create mode 100644 vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD delete mode 100644 vendor/github.com/docker/docker/pkg/term/tc_solaris_cgo.go delete mode 100644 vendor/github.com/docker/docker/pkg/term/winsize_solaris_cgo.go create mode 120000 vendor/github.com/docker/docker/project/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/go-units/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/go-units/MAINTAINERS delete mode 100644 vendor/github.com/docker/go-units/README.md delete mode 100644 vendor/github.com/docker/go-units/circle.yml delete mode 100644 vendor/github.com/fsnotify/fsnotify/.gitignore delete mode 100644 vendor/github.com/fsnotify/fsnotify/.travis.yml delete mode 100644 vendor/github.com/fsnotify/fsnotify/CHANGELOG.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md delete mode 100644 vendor/github.com/fsnotify/fsnotify/README.md delete mode 100644 vendor/github.com/ghodss/yaml/.gitignore delete mode 100644 vendor/github.com/ghodss/yaml/.travis.yml delete mode 100644 vendor/github.com/ghodss/yaml/README.md create mode 100644 vendor/github.com/gogo/protobuf/GOLANG_CONTRIBUTORS delete mode 100644 vendor/github.com/gogo/protobuf/proto/Makefile delete mode 100644 vendor/github.com/golang/glog/README delete mode 100644 vendor/github.com/golang/protobuf/proto/Makefile delete mode 100644 vendor/github.com/golang/protobuf/ptypes/any/any.proto delete mode 100644 vendor/github.com/golang/protobuf/ptypes/duration/duration.proto delete mode 100755 vendor/github.com/golang/protobuf/ptypes/regen.sh delete mode 100644 vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto create mode 120000 vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi delete mode 100644 vendor/github.com/google/gofuzz/.travis.yml delete mode 100644 vendor/github.com/google/gofuzz/CONTRIBUTING.md delete mode 100644 vendor/github.com/google/gofuzz/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto delete mode 100644 vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json delete mode 100644 vendor/github.com/googleapis/gnostic/compiler/README.md delete mode 100755 vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh delete mode 100644 vendor/github.com/googleapis/gnostic/extensions/README.md delete mode 100644 vendor/github.com/googleapis/gnostic/extensions/extension.proto delete mode 100644 vendor/github.com/hashicorp/errwrap/README.md delete mode 100644 vendor/github.com/hashicorp/go-multierror/.travis.yml delete mode 100644 vendor/github.com/hashicorp/go-multierror/Makefile delete mode 100644 vendor/github.com/hashicorp/go-multierror/README.md delete mode 100644 vendor/github.com/hashicorp/golang-lru/.gitignore delete mode 100644 vendor/github.com/hashicorp/golang-lru/README.md delete mode 100644 vendor/github.com/hashicorp/hcl/.gitignore delete mode 100644 vendor/github.com/hashicorp/hcl/.travis.yml delete mode 100644 vendor/github.com/hashicorp/hcl/Makefile delete mode 100644 vendor/github.com/hashicorp/hcl/README.md delete mode 100644 vendor/github.com/hashicorp/hcl/appveyor.yml delete mode 100644 vendor/github.com/hooklift/iso9660/.travis.yml delete mode 100644 vendor/github.com/hooklift/iso9660/CONTRIBUTING.md delete mode 100644 vendor/github.com/hooklift/iso9660/Makefile delete mode 100644 vendor/github.com/hooklift/iso9660/README.md delete mode 100644 vendor/github.com/hooklift/iso9660/common.mk delete mode 100644 vendor/github.com/howeyc/gopass/.travis.yml delete mode 100644 vendor/github.com/howeyc/gopass/OPENSOLARIS.LICENSE delete mode 100644 vendor/github.com/howeyc/gopass/README.md delete mode 100644 vendor/github.com/imdario/mergo/.travis.yml delete mode 100644 vendor/github.com/imdario/mergo/README.md create mode 100644 vendor/github.com/imdario/mergo/testdata/license.yml delete mode 100644 vendor/github.com/inconshreveable/mousetrap/README.md delete mode 100644 vendor/github.com/jimmidyson/go-download/.gitignore delete mode 100644 vendor/github.com/jimmidyson/go-download/.travis.yml delete mode 100644 vendor/github.com/jimmidyson/go-download/README.md delete mode 100644 vendor/github.com/jimmidyson/go-download/appveyor.yml delete mode 100755 vendor/github.com/jimmidyson/go-download/test.sh delete mode 100644 vendor/github.com/johanneswuerbach/nfsexports/.travis.yml delete mode 100644 vendor/github.com/johanneswuerbach/nfsexports/README.md delete mode 100644 vendor/github.com/json-iterator/go/.codecov.yml delete mode 100644 vendor/github.com/json-iterator/go/.gitignore delete mode 100644 vendor/github.com/json-iterator/go/.travis.yml delete mode 100644 vendor/github.com/json-iterator/go/Gopkg.lock delete mode 100644 vendor/github.com/json-iterator/go/Gopkg.toml delete mode 100644 vendor/github.com/json-iterator/go/README.md delete mode 100755 vendor/github.com/json-iterator/go/build.sh delete mode 100644 vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md delete mode 100755 vendor/github.com/json-iterator/go/test.sh delete mode 100644 vendor/github.com/kr/fs/Readme delete mode 100644 vendor/github.com/libvirt/libvirt-go/.gitignore delete mode 100644 vendor/github.com/libvirt/libvirt-go/.travis.yml delete mode 100644 vendor/github.com/libvirt/libvirt-go/FAQ.md delete mode 100644 vendor/github.com/libvirt/libvirt-go/README.md delete mode 100644 vendor/github.com/libvirt/libvirt-go/libvirtd.conf delete mode 100644 vendor/github.com/magiconair/properties/.gitignore delete mode 100644 vendor/github.com/magiconair/properties/.travis.yml delete mode 100644 vendor/github.com/magiconair/properties/CHANGELOG.md delete mode 100644 vendor/github.com/magiconair/properties/README.md create mode 100644 vendor/github.com/magiconair/properties/_third_party/gopkg.in/check.v1/LICENSE delete mode 100644 vendor/github.com/mattn/go-runewidth/.travis.yml delete mode 100644 vendor/github.com/mattn/go-runewidth/README.mkd delete mode 100644 vendor/github.com/mitchellh/go-ps/.gitignore delete mode 100644 vendor/github.com/mitchellh/go-ps/.travis.yml delete mode 100644 vendor/github.com/mitchellh/go-ps/README.md delete mode 100644 vendor/github.com/mitchellh/go-ps/Vagrantfile delete mode 100644 vendor/github.com/mitchellh/mapstructure/.travis.yml delete mode 100644 vendor/github.com/mitchellh/mapstructure/README.md delete mode 100644 vendor/github.com/moby/hyperkit/go/.gitignore delete mode 100644 vendor/github.com/moby/hyperkit/go/Dockerfile.build delete mode 100644 vendor/github.com/moby/hyperkit/go/Makefile delete mode 100644 vendor/github.com/moby/hyperkit/go/vendor.conf delete mode 100644 vendor/github.com/olekukonko/tablewriter/.travis.yml delete mode 100644 vendor/github.com/olekukonko/tablewriter/README.md delete mode 100644 vendor/github.com/olekukonko/tablewriter/test.csv delete mode 100644 vendor/github.com/olekukonko/tablewriter/test_info.csv delete mode 100644 vendor/github.com/pelletier/go-buffruneio/.gitignore delete mode 100644 vendor/github.com/pelletier/go-buffruneio/.travis.yml delete mode 100644 vendor/github.com/pelletier/go-buffruneio/README.md delete mode 100644 vendor/github.com/pelletier/go-toml/.gitignore delete mode 100644 vendor/github.com/pelletier/go-toml/.travis.yml delete mode 100644 vendor/github.com/pelletier/go-toml/README.md delete mode 100755 vendor/github.com/pelletier/go-toml/clean.sh delete mode 100644 vendor/github.com/pelletier/go-toml/example-crlf.toml delete mode 100644 vendor/github.com/pelletier/go-toml/example.toml delete mode 100755 vendor/github.com/pelletier/go-toml/test.sh delete mode 100644 vendor/github.com/pkg/browser/README.md delete mode 100644 vendor/github.com/pkg/errors/.gitignore delete mode 100644 vendor/github.com/pkg/errors/.travis.yml delete mode 100644 vendor/github.com/pkg/errors/README.md delete mode 100644 vendor/github.com/pkg/errors/appveyor.yml delete mode 100644 vendor/github.com/pkg/profile/.travis.yml delete mode 100644 vendor/github.com/pkg/profile/README.md delete mode 100644 vendor/github.com/pkg/sftp/.gitignore delete mode 100644 vendor/github.com/pkg/sftp/.travis.yml delete mode 100644 vendor/github.com/pkg/sftp/README.md delete mode 100644 vendor/github.com/russross/blackfriday/.gitignore delete mode 100644 vendor/github.com/russross/blackfriday/.travis.yml delete mode 100644 vendor/github.com/russross/blackfriday/README.md delete mode 100644 vendor/github.com/samalba/dockerclient/.gitignore delete mode 100644 vendor/github.com/samalba/dockerclient/README.md delete mode 100644 vendor/github.com/shurcooL/sanitized_anchor_name/.travis.yml delete mode 100644 vendor/github.com/shurcooL/sanitized_anchor_name/README.md delete mode 100644 vendor/github.com/sirupsen/logrus/.gitignore delete mode 100644 vendor/github.com/sirupsen/logrus/.travis.yml delete mode 100644 vendor/github.com/sirupsen/logrus/CHANGELOG.md delete mode 100644 vendor/github.com/sirupsen/logrus/README.md delete mode 100644 vendor/github.com/sirupsen/logrus/appveyor.yml delete mode 100644 vendor/github.com/spf13/afero/.travis.yml delete mode 100644 vendor/github.com/spf13/afero/README.md delete mode 100644 vendor/github.com/spf13/afero/appveyor.yml delete mode 100644 vendor/github.com/spf13/afero/sftp_test_go delete mode 100644 vendor/github.com/spf13/cast/.gitignore delete mode 100644 vendor/github.com/spf13/cast/README.md delete mode 100644 vendor/github.com/spf13/cobra/.gitignore delete mode 100644 vendor/github.com/spf13/cobra/.mailmap delete mode 100644 vendor/github.com/spf13/cobra/.travis.yml delete mode 100644 vendor/github.com/spf13/cobra/README.md delete mode 100644 vendor/github.com/spf13/cobra/bash_completions.md create mode 100644 vendor/github.com/spf13/cobra/cobra/cmd/testdata/LICENSE.golden delete mode 100644 vendor/github.com/spf13/cobra/doc/man_docs.md delete mode 100644 vendor/github.com/spf13/cobra/doc/md_docs.md delete mode 100644 vendor/github.com/spf13/cobra/doc/rest_docs.md delete mode 100644 vendor/github.com/spf13/cobra/doc/yaml_docs.md delete mode 100644 vendor/github.com/spf13/jwalterweatherman/.gitignore delete mode 100644 vendor/github.com/spf13/jwalterweatherman/README.md delete mode 100644 vendor/github.com/spf13/pflag/.gitignore delete mode 100644 vendor/github.com/spf13/pflag/.travis.yml delete mode 100644 vendor/github.com/spf13/pflag/README.md create mode 100644 vendor/github.com/spf13/pflag/bytes.go create mode 100644 vendor/github.com/spf13/pflag/duration_slice.go delete mode 100644 vendor/github.com/spf13/viper/.gitignore delete mode 100644 vendor/github.com/spf13/viper/.travis.yml delete mode 100644 vendor/github.com/spf13/viper/README.md delete mode 100644 vendor/github.com/spf13/viper/nohup.out delete mode 100644 vendor/github.com/xeipuuv/gojsonpointer/README.md delete mode 100644 vendor/github.com/xeipuuv/gojsonreference/README.md delete mode 100644 vendor/github.com/xeipuuv/gojsonschema/.gitignore delete mode 100644 vendor/github.com/xeipuuv/gojsonschema/.travis.yml delete mode 100644 vendor/github.com/xeipuuv/gojsonschema/README.md delete mode 100644 vendor/github.com/xeipuuv/gojsonschema/glide.yaml create mode 100644 vendor/github.com/xeipuuv/gojsonschema/json_schema_test_suite/LICENSE delete mode 100644 vendor/github.com/zchee/go-vmnet/.gitignore delete mode 100644 vendor/golang.org/x/net/http2/.gitignore delete mode 100644 vendor/golang.org/x/net/http2/Dockerfile delete mode 100644 vendor/golang.org/x/net/http2/Makefile delete mode 100644 vendor/golang.org/x/net/http2/README delete mode 100644 vendor/golang.org/x/sys/unix/.gitignore delete mode 100644 vendor/golang.org/x/sys/unix/README.md delete mode 100755 vendor/golang.org/x/sys/unix/mkall.sh delete mode 100755 vendor/golang.org/x/sys/unix/mkerrors.sh delete mode 100755 vendor/golang.org/x/sys/unix/mksyscall.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksyscall_solaris.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_darwin.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_dragonfly.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_freebsd.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_netbsd.pl delete mode 100755 vendor/golang.org/x/sys/unix/mksysnum_openbsd.pl delete mode 100644 vendor/golang.org/x/sys/windows/registry/export_test.go delete mode 100644 vendor/golang.org/x/sys/windows/registry/registry_test.go delete mode 100644 vendor/golang.org/x/sys/windows/svc/event.go delete mode 100644 vendor/golang.org/x/sys/windows/svc/go12.c delete mode 100644 vendor/golang.org/x/sys/windows/svc/go12.go delete mode 100644 vendor/golang.org/x/sys/windows/svc/go13.go delete mode 100644 vendor/golang.org/x/sys/windows/svc/security.go delete mode 100644 vendor/golang.org/x/sys/windows/svc/service.go delete mode 100644 vendor/golang.org/x/sys/windows/svc/sys_386.s delete mode 100644 vendor/golang.org/x/sys/windows/svc/sys_amd64.s delete mode 100644 vendor/golang.org/x/sys/windows/syscall_test.go delete mode 100644 vendor/golang.org/x/sys/windows/syscall_windows_test.go create mode 100644 vendor/golang.org/x/text/internal/gen/code.go create mode 100644 vendor/golang.org/x/text/internal/gen/gen.go create mode 100644 vendor/golang.org/x/text/internal/triegen/compact.go create mode 100644 vendor/golang.org/x/text/internal/triegen/print.go create mode 100644 vendor/golang.org/x/text/internal/triegen/triegen.go create mode 100644 vendor/golang.org/x/text/internal/ucd/ucd.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/base.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/cldr.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/collate.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/decode.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/makexml.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/resolve.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/slice.go create mode 100644 vendor/golang.org/x/text/unicode/cldr/xml.go create mode 100644 vendor/golang.org/x/text/unicode/rangetable/gen.go create mode 100644 vendor/golang.org/x/text/unicode/rangetable/merge.go create mode 100644 vendor/golang.org/x/text/unicode/rangetable/rangetable.go create mode 100644 vendor/golang.org/x/text/unicode/rangetable/tables.go delete mode 100644 vendor/gopkg.in/cheggaaa/pb.v1/.travis.yml delete mode 100644 vendor/gopkg.in/cheggaaa/pb.v1/README.md delete mode 100644 vendor/gopkg.in/yaml.v2/.travis.yml delete mode 100644 vendor/gopkg.in/yaml.v2/README.md delete mode 100644 vendor/k8s.io/api/admissionregistration/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/api/admissionregistration/v1alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/admissionregistration/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/apps/v1/BUILD delete mode 100644 vendor/k8s.io/api/apps/v1/generated.proto delete mode 100644 vendor/k8s.io/api/apps/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/apps/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/apps/v1beta2/BUILD delete mode 100644 vendor/k8s.io/api/apps/v1beta2/generated.proto delete mode 100644 vendor/k8s.io/api/authentication/v1/BUILD delete mode 100644 vendor/k8s.io/api/authentication/v1/generated.proto delete mode 100644 vendor/k8s.io/api/authentication/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/authentication/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/authorization/v1/BUILD delete mode 100644 vendor/k8s.io/api/authorization/v1/generated.proto delete mode 100644 vendor/k8s.io/api/authorization/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/authorization/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/autoscaling/v1/BUILD delete mode 100644 vendor/k8s.io/api/autoscaling/v1/generated.proto delete mode 100644 vendor/k8s.io/api/autoscaling/v2beta1/BUILD delete mode 100644 vendor/k8s.io/api/autoscaling/v2beta1/generated.proto delete mode 100644 vendor/k8s.io/api/batch/v1/BUILD delete mode 100644 vendor/k8s.io/api/batch/v1/generated.proto delete mode 100644 vendor/k8s.io/api/batch/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/batch/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/batch/v2alpha1/BUILD delete mode 100644 vendor/k8s.io/api/batch/v2alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/certificates/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/certificates/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/core/v1/BUILD delete mode 100644 vendor/k8s.io/api/core/v1/generated.proto delete mode 100644 vendor/k8s.io/api/events/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/events/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/extensions/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/extensions/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/networking/v1/BUILD delete mode 100644 vendor/k8s.io/api/networking/v1/generated.proto delete mode 100644 vendor/k8s.io/api/policy/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/policy/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/rbac/v1/BUILD delete mode 100644 vendor/k8s.io/api/rbac/v1/generated.proto delete mode 100644 vendor/k8s.io/api/rbac/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/api/rbac/v1alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/rbac/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/rbac/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/api/scheduling/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/api/scheduling/v1alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/settings/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/api/settings/v1alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/storage/v1/BUILD delete mode 100644 vendor/k8s.io/api/storage/v1/generated.proto delete mode 100644 vendor/k8s.io/api/storage/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/api/storage/v1alpha1/generated.proto delete mode 100644 vendor/k8s.io/api/storage/v1beta1/BUILD delete mode 100644 vendor/k8s.io/api/storage/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/apimachinery/pkg/api/errors/BUILD delete mode 100755 vendor/k8s.io/apimachinery/pkg/api/errors/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/api/meta/BUILD delete mode 100755 vendor/k8s.io/apimachinery/pkg/api/meta/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/BUILD delete mode 100755 vendor/k8s.io/apimachinery/pkg/api/resource/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/internalversion/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/BUILD delete mode 100755 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1/unstructured/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/meta/v1beta1/generated.proto delete mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/conversion/queryparams/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/fields/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/labels/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/generated.proto delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/schema/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/json/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/protobuf/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/recognizer/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/runtime/serializer/versioning/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/selection/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/types/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/cache/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/clock/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/diff/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/errors/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/framer/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/intstr/generated.proto delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/json/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/mergepatch/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/net/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/runtime/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/sets/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/strategicpatch/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/strategicpatch/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/uuid/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/validation/field/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/wait/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/util/yaml/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/version/BUILD delete mode 100644 vendor/k8s.io/apimachinery/pkg/watch/BUILD delete mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/json/BUILD delete mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/json/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/BUILD delete mode 100644 vendor/k8s.io/apiserver/pkg/util/feature/BUILD delete mode 100644 vendor/k8s.io/client-go/discovery/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/scheme/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta2/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/batch/v2alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/certificates/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/networking/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/policy/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/settings/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/storage/v1beta1/BUILD delete mode 100644 vendor/k8s.io/client-go/pkg/apis/clientauthentication/BUILD delete mode 100644 vendor/k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1/BUILD delete mode 100644 vendor/k8s.io/client-go/pkg/version/.gitattributes delete mode 100644 vendor/k8s.io/client-go/pkg/version/BUILD delete mode 100644 vendor/k8s.io/client-go/pkg/version/def.bzl delete mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/exec/BUILD delete mode 100644 vendor/k8s.io/client-go/rest/BUILD delete mode 100755 vendor/k8s.io/client-go/rest/OWNERS delete mode 100644 vendor/k8s.io/client-go/rest/watch/BUILD delete mode 100644 vendor/k8s.io/client-go/testing/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/auth/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/bootstrap/token/api/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/bootstrap/token/api/OWNERS delete mode 100644 vendor/k8s.io/client-go/tools/cache/BUILD delete mode 100755 vendor/k8s.io/client-go/tools/cache/OWNERS delete mode 100644 vendor/k8s.io/client-go/tools/clientcmd/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/latest/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/clientcmd/api/v1/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/metrics/BUILD delete mode 100755 vendor/k8s.io/client-go/tools/metrics/OWNERS delete mode 100644 vendor/k8s.io/client-go/tools/pager/BUILD delete mode 100644 vendor/k8s.io/client-go/tools/record/BUILD delete mode 100755 vendor/k8s.io/client-go/tools/record/OWNERS delete mode 100644 vendor/k8s.io/client-go/tools/reference/BUILD delete mode 100644 vendor/k8s.io/client-go/transport/BUILD delete mode 100755 vendor/k8s.io/client-go/transport/OWNERS delete mode 100644 vendor/k8s.io/client-go/util/buffer/BUILD delete mode 100644 vendor/k8s.io/client-go/util/cert/BUILD delete mode 100644 vendor/k8s.io/client-go/util/flowcontrol/BUILD delete mode 100644 vendor/k8s.io/client-go/util/homedir/BUILD delete mode 100644 vendor/k8s.io/client-go/util/integer/BUILD delete mode 100644 vendor/k8s.io/client-go/util/retry/BUILD delete mode 100755 vendor/k8s.io/client-go/util/retry/OWNERS create mode 120000 vendor/k8s.io/kubernetes/.bazelrc create mode 120000 vendor/k8s.io/kubernetes/.kazelcfg.json create mode 120000 vendor/k8s.io/kubernetes/BUILD.bazel create mode 100644 vendor/k8s.io/kubernetes/Godeps/LICENSES create mode 120000 vendor/k8s.io/kubernetes/Makefile create mode 120000 vendor/k8s.io/kubernetes/Makefile.generated_files create mode 120000 vendor/k8s.io/kubernetes/WORKSPACE create mode 120000 vendor/k8s.io/kubernetes/cluster/gce/cos create mode 120000 vendor/k8s.io/kubernetes/cluster/gce/custom create mode 120000 vendor/k8s.io/kubernetes/cluster/gce/ubuntu create mode 100644 vendor/k8s.io/kubernetes/cluster/juju/layers/kubeapi-load-balancer/copyright create mode 120000 vendor/k8s.io/kubernetes/cluster/juju/layers/kubernetes-master/actions/namespace-delete create mode 120000 vendor/k8s.io/kubernetes/cluster/juju/layers/kubernetes-master/actions/namespace-list rename vendor/k8s.io/kubernetes/{pkg/generated/doc.go => cluster/juju/layers/kubernetes-master/copyright} (83%) create mode 100644 vendor/k8s.io/kubernetes/cluster/juju/layers/kubernetes-worker/copyright delete mode 100644 vendor/k8s.io/kubernetes/cmd/kubeadm/app/constants/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/kubeadm/app/features/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/apis/core/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/apis/core/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/apis/core/helper/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/generated/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/generated/def.bzl delete mode 100644 vendor/k8s.io/kubernetes/pkg/generated/zz_generated.openapi.go delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/core/service/allocator/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/core/service/ipallocator/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/util/goroutinemap/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/util/goroutinemap/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/util/version/BUILD create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/api/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/apimachinery/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/apiserver/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/client-go/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/code-generator/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/metrics/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver/LICENSE create mode 100644 vendor/k8s.io/kubernetes/staging/src/k8s.io/sample-controller/LICENSE create mode 100644 vendor/k8s.io/kubernetes/third_party/forked/golang/LICENSE create mode 100644 vendor/k8s.io/kubernetes/third_party/forked/golang/PATENTS create mode 100644 vendor/k8s.io/kubernetes/third_party/forked/gonum/graph/LICENSE create mode 100644 vendor/k8s.io/kubernetes/third_party/forked/shell2junit/LICENSE create mode 100644 vendor/k8s.io/kubernetes/third_party/intemp/LICENSE rename vendor/k8s.io/{apimachinery/pkg/runtime/schema/generated.proto => kubernetes/third_party/swagger-ui/LICENSE} (50%) diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json deleted file mode 100644 index 5227a9a2faec..000000000000 --- a/Godeps/Godeps.json +++ /dev/null @@ -1,700 +0,0 @@ -{ - "ImportPath": "k8s.io/minikube", - "GoVersion": "go1.10", - "GodepVersion": "v79", - "Packages": [ - "./..." - ], - "Deps": [ - { - "ImportPath": "github.com/Azure/go-ansiterm", - "Rev": "19f72df4d05d31cbe1c56bfc8045c96babff6c7e" - }, - { - "ImportPath": "github.com/Azure/go-ansiterm/winterm", - "Rev": "19f72df4d05d31cbe1c56bfc8045c96babff6c7e" - }, - { - "ImportPath": "github.com/blang/semver", - "Comment": "v3.5.0", - "Rev": "b38d23b8782a487059e8fc8773e9a5b228a77cb6" - }, - { - "ImportPath": "github.com/c4milo/gotoolkit", - "Rev": "bcc06269efa974c4f098619d9aae436846e83d84" - }, - { - "ImportPath": "github.com/cpuguy83/go-md2man/md2man", - "Comment": "v1.0.4", - "Rev": "71acacd42f85e5e82f70a55327789582a5200a90" - }, - { - "ImportPath": "github.com/davecgh/go-spew/spew", - "Comment": "v1.1.0-1-g782f496", - "Rev": "782f4967f2dc4564575ca782fe2d04090b5faca8" - }, - { - "ImportPath": "github.com/docker/docker/pkg/term", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7401-g4f3616fb1", - "Rev": "4f3616fb1c112e206b88cb7a9922bf49067a7756" - }, - { - "ImportPath": "github.com/docker/docker/pkg/term/windows", - "Comment": "docs-v1.12.0-rc4-2016-07-15-7401-g4f3616fb1", - "Rev": "4f3616fb1c112e206b88cb7a9922bf49067a7756" - }, - { - "ImportPath": "github.com/docker/go-units", - "Comment": "v0.3.1-11-g9e638d3", - "Rev": "9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1" - }, - { - "ImportPath": "github.com/docker/machine/commands/mcndirs", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/drivers/errdriver", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/drivers/hyperv", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/drivers/none", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/drivers/virtualbox", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/drivers/vmwarefusion", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/auth", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/cert", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/check", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/drivers", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/drivers/plugin", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/drivers/plugin/localbinary", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/drivers/rpc", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/engine", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/host", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/log", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/mcndockerclient", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/mcnerror", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/mcnflag", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/mcnutils", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/persist", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/provision", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/provision/pkgaction", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/provision/serviceaction", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/shell", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/ssh", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/state", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/swarm", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/version", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/libmachine/versioncmp", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/docker/machine/version", - "Comment": "docs-v0.8.2-2016-09-26-391-g19035310", - "Rev": "19035310d4ba1b58056aae427ea669d1db5fc618" - }, - { - "ImportPath": "github.com/fsnotify/fsnotify", - "Comment": "v1.3.1-1-gf12c623", - "Rev": "f12c6236fe7b5cf6bcf30e5935d08cb079d78334" - }, - { - "ImportPath": "github.com/ghodss/yaml", - "Rev": "73d445a93680fa1a78ae23a5839bad48f32ba1ee" - }, - { - "ImportPath": "github.com/gogo/protobuf/proto", - "Comment": "v0.4-3-gc0656edd", - "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" - }, - { - "ImportPath": "github.com/gogo/protobuf/sortkeys", - "Comment": "v0.4-3-gc0656edd", - "Rev": "c0656edd0d9eab7c66d1eb0c568f9039345796f7" - }, - { - "ImportPath": "github.com/golang/glog", - "Rev": "44145f04b68cf362d9c4df2182967c2275eaefed" - }, - { - "ImportPath": "github.com/golang/groupcache/lru", - "Rev": "02826c3e79038b59d737d3b1c0a1d937f71a4433" - }, - { - "ImportPath": "github.com/golang/protobuf/proto", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/any", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/duration", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/golang/protobuf/ptypes/timestamp", - "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/authn", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/name", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1/partial", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1/remote", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1/remote/transport", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1/tarball", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1/types", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/go-containerregistry/pkg/v1/v1util", - "Rev": "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" - }, - { - "ImportPath": "github.com/google/gofuzz", - "Rev": "44d81051d367757e1c7c6a5a86423ece9afcf63c" - }, - { - "ImportPath": "github.com/googleapis/gnostic/OpenAPIv2", - "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" - }, - { - "ImportPath": "github.com/googleapis/gnostic/compiler", - "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" - }, - { - "ImportPath": "github.com/googleapis/gnostic/extensions", - "Rev": "0c5108395e2debce0d731cf0287ddf7242066aba" - }, - { - "ImportPath": "github.com/hashicorp/errwrap", - "Rev": "7554cd9344cec97297fa6649b055a8c98c2a1e55" - }, - { - "ImportPath": "github.com/hashicorp/go-multierror", - "Rev": "8c5f0ad9360406a3807ce7de6bc73269a91a6e51" - }, - { - "ImportPath": "github.com/hashicorp/golang-lru", - "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" - }, - { - "ImportPath": "github.com/hashicorp/golang-lru/simplelru", - "Rev": "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" - }, - { - "ImportPath": "github.com/hashicorp/hcl", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/hcl/ast", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/hcl/parser", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/hcl/scanner", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/hcl/strconv", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/hcl/token", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/json/parser", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/json/scanner", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hashicorp/hcl/json/token", - "Rev": "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" - }, - { - "ImportPath": "github.com/hooklift/iso9660", - "Comment": "v1.0.0-6-g1cf07e5", - "Rev": "1cf07e5970d810f027bfbdfa2e9ad86db479c53a" - }, - { - "ImportPath": "github.com/howeyc/gopass", - "Rev": "bf9dde6d0d2c004a008c27aaee91170c786f6db8" - }, - { - "ImportPath": "github.com/imdario/mergo", - "Comment": "0.1.3-8-g6633656", - "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" - }, - { - "ImportPath": "github.com/inconshreveable/mousetrap", - "Comment": "v1.0", - "Rev": "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" - }, - { - "ImportPath": "github.com/jimmidyson/go-download", - "Rev": "7f9a90c8c95bee1bb7de9e72c682c67c8bf5546d" - }, - { - "ImportPath": "github.com/johanneswuerbach/nfsexports", - "Rev": "a9068f3f0daa39616953aec11c3eb1209ebc4086" - }, - { - "ImportPath": "github.com/json-iterator/go", - "Comment": "1.0.4-7-g13f8643", - "Rev": "13f86432b882000a51c6e610c620974462691a97" - }, - { - "ImportPath": "github.com/kr/fs", - "Rev": "2788f0dbd16903de03cb8186e5c7d97b69ad387b" - }, - { - "ImportPath": "github.com/libvirt/libvirt-go", - "Comment": "v3.4.0", - "Rev": "5ba8227244c30438609adcec6ea84dc1e688dfbd" - }, - { - "ImportPath": "github.com/magiconair/properties", - "Comment": "v1.7.0-4-g61b492c", - "Rev": "61b492c03cf472e0c6419be5899b8e0dc28b1b88" - }, - { - "ImportPath": "github.com/mattn/go-runewidth", - "Comment": "v0.0.1-10-g737072b", - "Rev": "737072b4e32b7a5018b4a7125da8d12de90e8045" - }, - { - "ImportPath": "github.com/mitchellh/go-ps", - "Rev": "4fdf99ab29366514c69ccccddab5dc58b8d84062" - }, - { - "ImportPath": "github.com/mitchellh/mapstructure", - "Rev": "53818660ed4955e899c0bcafa97299a388bd7c8e" - }, - { - "ImportPath": "github.com/moby/hyperkit/go", - "Comment": "v0.20171020", - "Rev": "a12cd7250bcd8d689078e3e42ae4a7cf6a0cbaf3" - }, - { - "ImportPath": "github.com/olekukonko/tablewriter", - "Rev": "bdcc175572fd7abece6c831e643891b9331bc9e7" - }, - { - "ImportPath": "github.com/pborman/uuid", - "Rev": "ca53cad383cad2479bbba7f7a1a05797ec1386e4" - }, - { - "ImportPath": "github.com/pelletier/go-buffruneio", - "Comment": "v0.1.0", - "Rev": "df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d" - }, - { - "ImportPath": "github.com/pelletier/go-toml", - "Comment": "v0.3.5-10-g0049ab3", - "Rev": "0049ab3dc4c4c70a9eee23087437b69c0dde2130" - }, - { - "ImportPath": "github.com/pkg/browser", - "Rev": "9302be274faad99162b9d48ec97b24306872ebb0" - }, - { - "ImportPath": "github.com/pkg/errors", - "Comment": "v0.8.0", - "Rev": "645ef00459ed84a119197bfb8d8205042c6df63d" - }, - { - "ImportPath": "github.com/pkg/profile", - "Comment": "v1.2.0-7-g3a8809b", - "Rev": "3a8809bd8a80f8ecfe4ee1b34b3f37194968617c" - }, - { - "ImportPath": "github.com/pkg/sftp", - "Rev": "4d0e916071f68db74f8a73926335f809396d6b42" - }, - { - "ImportPath": "github.com/r2d4/external-storage/lib/controller", - "Comment": "v1.0.0-26-g8c0e860", - "Rev": "8c0e8605dc7b85893e144efd8e76d4a473f4bc7d" - }, - { - "ImportPath": "github.com/r2d4/external-storage/lib/leaderelection", - "Comment": "v1.0.0-26-g8c0e860", - "Rev": "8c0e8605dc7b85893e144efd8e76d4a473f4bc7d" - }, - { - "ImportPath": "github.com/r2d4/external-storage/lib/leaderelection/resourcelock", - "Comment": "v1.0.0-26-g8c0e860", - "Rev": "8c0e8605dc7b85893e144efd8e76d4a473f4bc7d" - }, - { - "ImportPath": "github.com/russross/blackfriday", - "Comment": "v1.4-2-g300106c", - "Rev": "300106c228d52c8941d4b3de6054a6062a86dda3" - }, - { - "ImportPath": "github.com/samalba/dockerclient", - "Rev": "91d7393ff85980ba3a8966405871a3d446ca28f2" - }, - { - "ImportPath": "github.com/shurcooL/sanitized_anchor_name", - "Rev": "10ef21a441db47d8b13ebcc5fd2310f636973c77" - }, - { - "ImportPath": "github.com/sirupsen/logrus", - "Comment": "v1.0.3-11-g89742ae", - "Rev": "89742aefa4b206dcf400792f3bd35b542998eb3b" - }, - { - "ImportPath": "github.com/spf13/afero", - "Rev": "b28a7effac979219c2a2ed6205a4d70e4b1bcd02" - }, - { - "ImportPath": "github.com/spf13/afero/mem", - "Rev": "b28a7effac979219c2a2ed6205a4d70e4b1bcd02" - }, - { - "ImportPath": "github.com/spf13/afero/sftp", - "Rev": "b28a7effac979219c2a2ed6205a4d70e4b1bcd02" - }, - { - "ImportPath": "github.com/spf13/cast", - "Rev": "e31f36ffc91a2ba9ddb72a4b6a607ff9b3d3cb63" - }, - { - "ImportPath": "github.com/spf13/cobra", - "Comment": "v0.0.1-32-g6644d46", - "Rev": "6644d46b81fa1831979c4cded0106e774e0ef0ab" - }, - { - "ImportPath": "github.com/spf13/cobra/doc", - "Comment": "v0.0.1-32-g6644d46", - "Rev": "6644d46b81fa1831979c4cded0106e774e0ef0ab" - }, - { - "ImportPath": "github.com/spf13/jwalterweatherman", - "Rev": "33c24e77fb80341fe7130ee7c594256ff08ccc46" - }, - { - "ImportPath": "github.com/spf13/pflag", - "Comment": "v1.0.0-10-g4c012f6", - "Rev": "4c012f6dcd9546820e378d0bdda4d8fc772cdfea" - }, - { - "ImportPath": "github.com/spf13/viper", - "Comment": "v1.0.0", - "Rev": "25b30aa063fc18e48662b86996252eabdcf2f0c7" - }, - { - "ImportPath": "github.com/xeipuuv/gojsonpointer", - "Rev": "e0fe6f68307607d540ed8eac07a342c33fa1b54a" - }, - { - "ImportPath": "github.com/xeipuuv/gojsonreference", - "Rev": "e02fc20de94c78484cd5ffb007f8af96be030a45" - }, - { - "ImportPath": "github.com/xeipuuv/gojsonschema", - "Rev": "c539bca196be50ccdd1f0bcd9076de95f9081831" - }, - { - "ImportPath": "github.com/zchee/go-vmnet", - "Rev": "97ebf91740978f1e665defc0a960fb997ebe282b" - }, - { - "ImportPath": "golang.org/x/crypto/curve25519", - "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" - }, - { - "ImportPath": "golang.org/x/crypto/ed25519", - "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" - }, - { - "ImportPath": "golang.org/x/crypto/ed25519/internal/edwards25519", - "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" - }, - { - "ImportPath": "golang.org/x/crypto/ssh", - "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" - }, - { - "ImportPath": "golang.org/x/crypto/ssh/terminal", - "Rev": "81e90905daefcd6fd217b62423c0908922eadb30" - }, - { - "ImportPath": "golang.org/x/net/context", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/http2", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/http2/hpack", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/idna", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/net/lex/httplex", - "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" - }, - { - "ImportPath": "golang.org/x/sync/errgroup", - "Rev": "f52d1811a62927559de87708c8913c1650ce4f26" - }, - { - "ImportPath": "golang.org/x/sync/syncmap", - "Rev": "f52d1811a62927559de87708c8913c1650ce4f26" - }, - { - "ImportPath": "golang.org/x/sys/unix", - "Rev": "95c6576299259db960f6c5b9b69ea52422860fce" - }, - { - "ImportPath": "golang.org/x/sys/windows", - "Rev": "95c6576299259db960f6c5b9b69ea52422860fce" - }, - { - "ImportPath": "golang.org/x/sys/windows/registry", - "Rev": "95c6576299259db960f6c5b9b69ea52422860fce" - }, - { - "ImportPath": "golang.org/x/text/secure/bidirule", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/transform", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/unicode/bidi", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/text/unicode/norm", - "Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01" - }, - { - "ImportPath": "golang.org/x/time/rate", - "Rev": "f51c12702a4d776e4c1fa9b0fabab841babae631" - }, - { - "ImportPath": "gopkg.in/cheggaaa/pb.v1", - "Comment": "v1.0.6", - "Rev": "dd61faab99a777c652bb680e37715fe0cb549856" - }, - { - "ImportPath": "gopkg.in/inf.v0", - "Comment": "v0.9.0", - "Rev": "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" - }, - { - "ImportPath": "gopkg.in/yaml.v2", - "Rev": "670d4cfef0544295bc27a114dbac37980d83185a" - }, - { - "ImportPath": "k8s.io/kube-openapi/pkg/util/proto", - "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf" - }, - { - "ImportPath": "k8s.io/kubernetes/cmd/kubeadm/app/constants", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/cmd/kubeadm/app/features", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/apis/core", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/apis/core/helper", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/helper", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/allocator", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/ipallocator", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - }, - { - "ImportPath": "k8s.io/kubernetes/pkg/util/version", - "Comment": "v1.10.0", - "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead" - } - ] -} diff --git a/Godeps/Readme b/Godeps/Readme deleted file mode 100644 index 4cdaa53d56d7..000000000000 --- a/Godeps/Readme +++ /dev/null @@ -1,5 +0,0 @@ -This directory tree is generated automatically by godep. - -Please do not edit. - -See https://github.com/tools/godep for more information. diff --git a/Gopkg.lock b/Gopkg.lock new file mode 100644 index 000000000000..4a1c16e16a01 --- /dev/null +++ b/Gopkg.lock @@ -0,0 +1,882 @@ +# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. + + +[[projects]] + digest = "1:4485ca12c0ab1317ddebfad6562c9dc0bd70b0453171b3e14f684553c1502490" + name = "github.com/Azure/go-ansiterm" + packages = [ + ".", + "winterm", + ] + pruneopts = "NUT" + revision = "19f72df4d05d31cbe1c56bfc8045c96babff6c7e" + +[[projects]] + digest = "1:aba270497eb2d49f5cba6f4162d524b9a1195a24cbce8be20bf56a0051f47deb" + name = "github.com/blang/semver" + packages = ["."] + pruneopts = "NUT" + revision = "b38d23b8782a487059e8fc8773e9a5b228a77cb6" + version = "v3.5.0" + +[[projects]] + digest = "1:04873dc5e06932b750eac24a1d90eabae58249df63bed6823e77b62a0160a297" + name = "github.com/c4milo/gotoolkit" + packages = ["."] + pruneopts = "NUT" + revision = "bcc06269efa974c4f098619d9aae436846e83d84" + +[[projects]] + digest = "1:cc832d4c674b57b5c67f683f75fba043dd3eec6fcd9b936f00cc8ddf439f2131" + name = "github.com/cpuguy83/go-md2man" + packages = ["md2man"] + pruneopts = "NUT" + revision = "71acacd42f85e5e82f70a55327789582a5200a90" + version = "v1.0.4" + +[[projects]] + digest = "1:6b21090f60571b20b3ddc2c8e48547dffcf409498ed6002c2cada023725ed377" + name = "github.com/davecgh/go-spew" + packages = ["spew"] + pruneopts = "NUT" + revision = "782f4967f2dc4564575ca782fe2d04090b5faca8" + +[[projects]] + branch = "master" + digest = "1:f1beae74e4ad389f4a6c1eaeb9539c9a0c1b7b934aee3576147b988e09184f9c" + name = "github.com/docker/docker" + packages = [ + "pkg/term", + "pkg/term/windows", + ] + pruneopts = "NUT" + revision = "bbe08dc7f0b9498aa75f7956c0c342512a73a3d4" + +[[projects]] + digest = "1:9d8fe33c2e1aa01c76db67f285ffdb7dbdb5c5d90d9deb296526d67b9798ce7b" + name = "github.com/docker/go-units" + packages = ["."] + pruneopts = "NUT" + revision = "9e638d38cf6977a37a8ea0078f3ee75a7cdb2dd1" + +[[projects]] + branch = "master" + digest = "1:031cfe09be23486aed11668813dd112b5f79ed9926ca411bb3dac32e9e20fc4a" + name = "github.com/docker/machine" + packages = [ + "commands/mcndirs", + "drivers/errdriver", + "drivers/hyperv", + "drivers/none", + "drivers/virtualbox", + "drivers/vmwarefusion", + "libmachine", + "libmachine/auth", + "libmachine/cert", + "libmachine/check", + "libmachine/drivers", + "libmachine/drivers/plugin", + "libmachine/drivers/plugin/localbinary", + "libmachine/drivers/rpc", + "libmachine/engine", + "libmachine/host", + "libmachine/log", + "libmachine/mcndockerclient", + "libmachine/mcnerror", + "libmachine/mcnflag", + "libmachine/mcnutils", + "libmachine/persist", + "libmachine/provision", + "libmachine/provision/pkgaction", + "libmachine/provision/serviceaction", + "libmachine/shell", + "libmachine/ssh", + "libmachine/state", + "libmachine/swarm", + "libmachine/version", + "libmachine/versioncmp", + "version", + ] + pruneopts = "NUT" + revision = "19035310d4ba1b58056aae427ea669d1db5fc618" + +[[projects]] + digest = "1:364ef519880c6024191ac7660244e5478b193489bb35755f843627cc86cfb411" + name = "github.com/fsnotify/fsnotify" + packages = ["."] + pruneopts = "NUT" + revision = "f12c6236fe7b5cf6bcf30e5935d08cb079d78334" + +[[projects]] + digest = "1:abfe129dc92b16fbf0cc9d6336096a2823151756f62072a700eb10754141b38e" + name = "github.com/ghodss/yaml" + packages = ["."] + pruneopts = "NUT" + revision = "73d445a93680fa1a78ae23a5839bad48f32ba1ee" + +[[projects]] + digest = "1:a6afc27b2a73a5506832f3c5a1c19a30772cb69e7bd1ced4639eb36a55db224f" + name = "github.com/gogo/protobuf" + packages = [ + "proto", + "sortkeys", + ] + pruneopts = "NUT" + revision = "c0656edd0d9eab7c66d1eb0c568f9039345796f7" + +[[projects]] + digest = "1:78b8040ece2ff622580def2708b9eb0b2857711b6744c475439bf337e9c677ea" + name = "github.com/golang/glog" + packages = ["."] + pruneopts = "NUT" + revision = "44145f04b68cf362d9c4df2182967c2275eaefed" + +[[projects]] + digest = "1:7672c206322f45b33fac1ae2cb899263533ce0adcc6481d207725560208ec84e" + name = "github.com/golang/groupcache" + packages = ["lru"] + pruneopts = "NUT" + revision = "02826c3e79038b59d737d3b1c0a1d937f71a4433" + +[[projects]] + digest = "1:0d390d7037c2aecc37e78c2cfbe43d020d6f1fa83fd22266b7ec621189447d57" + name = "github.com/golang/protobuf" + packages = [ + "proto", + "ptypes", + "ptypes/any", + "ptypes/duration", + "ptypes/timestamp", + ] + pruneopts = "NUT" + revision = "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9" + +[[projects]] + digest = "1:186f7de0e878b5ff1fca82271ce36a7abf9747be09d03b3f08a921584c2f26fc" + name = "github.com/google/go-containerregistry" + packages = [ + "pkg/authn", + "pkg/name", + "pkg/v1", + "pkg/v1/partial", + "pkg/v1/remote", + "pkg/v1/remote/transport", + "pkg/v1/tarball", + "pkg/v1/types", + "pkg/v1/v1util", + ] + pruneopts = "NUT" + revision = "3165313d6d3f973ec0b0ed3ec5a63b520e065d40" + +[[projects]] + digest = "1:f9425215dccf1c63f659ec781ca46bc81804341821d0cd8d2459c5b58f8bd067" + name = "github.com/google/gofuzz" + packages = ["."] + pruneopts = "NUT" + revision = "44d81051d367757e1c7c6a5a86423ece9afcf63c" + +[[projects]] + digest = "1:27b4ab41ffdc76ad6db56db327a4db234a59588ef059fc3fd678ba0bc6b9094f" + name = "github.com/googleapis/gnostic" + packages = [ + "OpenAPIv2", + "compiler", + "extensions", + ] + pruneopts = "NUT" + revision = "0c5108395e2debce0d731cf0287ddf7242066aba" + +[[projects]] + digest = "1:f0d9d74edbd40fdeada436d5ac9cb5197407899af3fef85ff0137077ffe8ae19" + name = "github.com/hashicorp/errwrap" + packages = ["."] + pruneopts = "NUT" + revision = "7554cd9344cec97297fa6649b055a8c98c2a1e55" + +[[projects]] + digest = "1:03950bb9b6362247c000f4b4c24bd1e62e952cb40cd204971017e34260ede4e2" + name = "github.com/hashicorp/go-multierror" + packages = ["."] + pruneopts = "NUT" + revision = "8c5f0ad9360406a3807ce7de6bc73269a91a6e51" + +[[projects]] + digest = "1:475b179287e8afdcd352014b2c2500e67decdf63e66125e2129286873453e1cd" + name = "github.com/hashicorp/golang-lru" + packages = [ + ".", + "simplelru", + ] + pruneopts = "NUT" + revision = "a0d98a5f288019575c6d1f4bb1573fef2d1fcdc4" + +[[projects]] + digest = "1:4eb7aa74693933be7f21dc465c49f9c0e03391262201ceac4dbf6a1be0bb7649" + name = "github.com/hashicorp/hcl" + packages = [ + ".", + "hcl/ast", + "hcl/parser", + "hcl/scanner", + "hcl/strconv", + "hcl/token", + "json/parser", + "json/scanner", + "json/token", + ] + pruneopts = "NUT" + revision = "d8c773c4cba11b11539e3d45f93daeaa5dcf1fa1" + +[[projects]] + digest = "1:0fc7a3b3aa025745e557f5286862c307c042a0445f0a99a3a0948a6964e12492" + name = "github.com/hooklift/iso9660" + packages = ["."] + pruneopts = "NUT" + revision = "1cf07e5970d810f027bfbdfa2e9ad86db479c53a" + +[[projects]] + branch = "master" + digest = "1:b7f860847a1d71f925ba9385ed95f1ebc0abfeb418a78e219ab61f48fdfeffad" + name = "github.com/howeyc/gopass" + packages = ["."] + pruneopts = "NUT" + revision = "bf9dde6d0d2c004a008c27aaee91170c786f6db8" + +[[projects]] + digest = "1:8f5fa95e43ab4a43056b7b65ec1614b4440f33bbfef2fa0a4d4707aedcb1a023" + name = "github.com/imdario/mergo" + packages = ["."] + pruneopts = "NUT" + revision = "6633656539c1639d9d78127b7d47c622b5d7b6dc" + +[[projects]] + digest = "1:406338ad39ab2e37b7f4452906442a3dbf0eb3379dd1f06aafb5c07e769a5fbb" + name = "github.com/inconshreveable/mousetrap" + packages = ["."] + pruneopts = "NUT" + revision = "76626ae9c91c4f2a10f34cad8ce83ea42c93bb75" + version = "v1.0" + +[[projects]] + branch = "master" + digest = "1:29b8c51f736120581688521c42f4772cc42ab7942402ee38877be23bed001ede" + name = "github.com/jimmidyson/go-download" + packages = ["."] + pruneopts = "NUT" + revision = "7f9a90c8c95bee1bb7de9e72c682c67c8bf5546d" + +[[projects]] + branch = "master" + digest = "1:911a1eca3596f7af82d458d47291917e31be273376b06caf7de362cc98487076" + name = "github.com/johanneswuerbach/nfsexports" + packages = ["."] + pruneopts = "NUT" + revision = "a9068f3f0daa39616953aec11c3eb1209ebc4086" + +[[projects]] + digest = "1:a7838b8940394cc35f4d32b3bd9358872dffed8f8fff76c84b52a4468eae0494" + name = "github.com/json-iterator/go" + packages = ["."] + pruneopts = "NUT" + revision = "13f86432b882000a51c6e610c620974462691a97" + +[[projects]] + digest = "1:47fa0ef6ae6b0387dacb77c7ab8827b4ef621650fd613e43ece61de4cb3f5019" + name = "github.com/kr/fs" + packages = ["."] + pruneopts = "NUT" + revision = "2788f0dbd16903de03cb8186e5c7d97b69ad387b" + +[[projects]] + digest = "1:7c99b7161783a39276d407232577a0510a8d6f8d0b6e80179049c0af060a3de1" + name = "github.com/libvirt/libvirt-go" + packages = ["."] + pruneopts = "NUT" + revision = "5ba8227244c30438609adcec6ea84dc1e688dfbd" + version = "v3.4.0" + +[[projects]] + digest = "1:1745a9a20b54531ca6d6db617f47ac6d367e5d004c7a44ba39149928bca8caff" + name = "github.com/magiconair/properties" + packages = ["."] + pruneopts = "NUT" + revision = "61b492c03cf472e0c6419be5899b8e0dc28b1b88" + +[[projects]] + digest = "1:f2d263faf8641cd0a31bba2d034eb2f9ab9f3c3348b06ac9ad54b9a4ea692dee" + name = "github.com/mattn/go-runewidth" + packages = ["."] + pruneopts = "NUT" + revision = "737072b4e32b7a5018b4a7125da8d12de90e8045" + +[[projects]] + branch = "master" + digest = "1:2d209eb757bb4101584c2618becd4026593509343ce55491233fd090faa1f1da" + name = "github.com/mitchellh/go-ps" + packages = ["."] + pruneopts = "NUT" + revision = "4fdf99ab29366514c69ccccddab5dc58b8d84062" + +[[projects]] + digest = "1:c7fe3a5aad0ae944376d50572fb8249580562d4331b9a1c0a9da9610336688aa" + name = "github.com/mitchellh/mapstructure" + packages = ["."] + pruneopts = "NUT" + revision = "53818660ed4955e899c0bcafa97299a388bd7c8e" + +[[projects]] + digest = "1:d512df57c965a0b8539f58373cbf6653771cd545fcd4f3706374be0cbcee557d" + name = "github.com/moby/hyperkit" + packages = ["go"] + pruneopts = "NUT" + revision = "a12cd7250bcd8d689078e3e42ae4a7cf6a0cbaf3" + version = "v0.20171020" + +[[projects]] + digest = "1:6b4ef49506ebd7cc4fc6d55cc54716eefb63b38a0e90caa2644e534dd20907e9" + name = "github.com/olekukonko/tablewriter" + packages = ["."] + pruneopts = "NUT" + revision = "bdcc175572fd7abece6c831e643891b9331bc9e7" + +[[projects]] + digest = "1:9072181164e616e422cbfbe48ca9ac249a4d76301ca0876c9f56b937cf214a2f" + name = "github.com/pborman/uuid" + packages = ["."] + pruneopts = "NUT" + revision = "ca53cad383cad2479bbba7f7a1a05797ec1386e4" + +[[projects]] + digest = "1:a220f6dbf33a64b62870ff624b41d45731926411bda3cc26f62926c7e02c5448" + name = "github.com/pelletier/go-buffruneio" + packages = ["."] + pruneopts = "NUT" + revision = "df1e16fde7fc330a0ca68167c23bf7ed6ac31d6d" + version = "v0.1.0" + +[[projects]] + digest = "1:e89c934474e1d6330f141c99a3a2b14d9ee2c31081bbd9c9a88fc4e3503306ae" + name = "github.com/pelletier/go-toml" + packages = ["."] + pruneopts = "NUT" + revision = "0049ab3dc4c4c70a9eee23087437b69c0dde2130" + +[[projects]] + digest = "1:57c74655dc3cee7b4aad20cecdd934cd87ecb5efb0b6d397c872083d6bbb4aa4" + name = "github.com/pkg/browser" + packages = ["."] + pruneopts = "NUT" + revision = "9302be274faad99162b9d48ec97b24306872ebb0" + +[[projects]] + digest = "1:5cf3f025cbee5951a4ee961de067c8a89fc95a5adabead774f82822efabab121" + name = "github.com/pkg/errors" + packages = ["."] + pruneopts = "NUT" + revision = "645ef00459ed84a119197bfb8d8205042c6df63d" + version = "v0.8.0" + +[[projects]] + digest = "1:06596f3d837b0daf29e787840cd53d82261f2f0d5f2cb0e7904a63d4096a7c63" + name = "github.com/pkg/profile" + packages = ["."] + pruneopts = "NUT" + revision = "3a8809bd8a80f8ecfe4ee1b34b3f37194968617c" + +[[projects]] + digest = "1:1e0d7268f17a54350ec80d9c5b85167cd244c4b25a77ddecd930b73c649474c8" + name = "github.com/pkg/sftp" + packages = ["."] + pruneopts = "NUT" + revision = "4d0e916071f68db74f8a73926335f809396d6b42" + +[[projects]] + branch = "master" + digest = "1:1b6f62a965e4b2e004184bf2d38ef2915af240befa4d44e5f0e83925bcf89727" + name = "github.com/r2d4/external-storage" + packages = [ + "lib/controller", + "lib/leaderelection", + "lib/leaderelection/resourcelock", + ] + pruneopts = "NUT" + revision = "8c0e8605dc7b85893e144efd8e76d4a473f4bc7d" + +[[projects]] + digest = "1:118f00f400c10c1dd21a267fd04697c758dbe9a38cf5fa3fab3bb3625af9efe7" + name = "github.com/russross/blackfriday" + packages = ["."] + pruneopts = "NUT" + revision = "300106c228d52c8941d4b3de6054a6062a86dda3" + +[[projects]] + digest = "1:a35624c560f8e8f7959808245c79f0f31ad0fbbe245d7e58a07e1395a8c3138b" + name = "github.com/samalba/dockerclient" + packages = ["."] + pruneopts = "NUT" + revision = "91d7393ff85980ba3a8966405871a3d446ca28f2" + +[[projects]] + digest = "1:400359f0b394fb168f4aee9621d42cc005810c6e462009d5fc76055d5e96dcf3" + name = "github.com/shurcooL/sanitized_anchor_name" + packages = ["."] + pruneopts = "NUT" + revision = "10ef21a441db47d8b13ebcc5fd2310f636973c77" + +[[projects]] + digest = "1:414933e1ae2e9e19123e52fb29c97cb9d127d8a500f45a2ba80b537283a38b87" + name = "github.com/sirupsen/logrus" + packages = ["."] + pruneopts = "NUT" + revision = "89742aefa4b206dcf400792f3bd35b542998eb3b" + +[[projects]] + digest = "1:1af4e3c17f2df21ddefb311bf42c3a05178ba08097b18816c52f3b18a98b3ef3" + name = "github.com/spf13/afero" + packages = [ + ".", + "mem", + "sftp", + ] + pruneopts = "NUT" + revision = "b28a7effac979219c2a2ed6205a4d70e4b1bcd02" + +[[projects]] + digest = "1:362766ce6d0361b1a364868f8441e5696cd6260b4aa4c23b609adafbaeee2024" + name = "github.com/spf13/cast" + packages = ["."] + pruneopts = "NUT" + revision = "e31f36ffc91a2ba9ddb72a4b6a607ff9b3d3cb63" + +[[projects]] + digest = "1:e1a684bfcf8e8e83166e5fb959e9be6dc43b9901c709a155bfef9da3f92dec48" + name = "github.com/spf13/cobra" + packages = [ + ".", + "doc", + ] + pruneopts = "NUT" + revision = "6644d46b81fa1831979c4cded0106e774e0ef0ab" + +[[projects]] + digest = "1:5664cfa541da6bd03dc6eb79c0639d3b43ba3ae997e694cd23cfd5da59160268" + name = "github.com/spf13/jwalterweatherman" + packages = ["."] + pruneopts = "NUT" + revision = "33c24e77fb80341fe7130ee7c594256ff08ccc46" + +[[projects]] + digest = "1:15e5c398fbd9d2c439b635a08ac161b13d04f0c2aa587fe256b65dc0c3efe8b7" + name = "github.com/spf13/pflag" + packages = ["."] + pruneopts = "NUT" + revision = "583c0c0531f06d5278b7d917446061adc344b5cd" + version = "v1.0.1" + +[[projects]] + digest = "1:242e0ec8a8fd3af50454fb1f90eafd5af073ea7f458e9bbbada0bc08bfbcef57" + name = "github.com/spf13/viper" + packages = ["."] + pruneopts = "NUT" + revision = "25b30aa063fc18e48662b86996252eabdcf2f0c7" + version = "v1.0.0" + +[[projects]] + digest = "1:0dfe985a13070b2f191d1b6aaba2c737a781b0d0488c2337cd69cce107543ce8" + name = "github.com/xeipuuv/gojsonpointer" + packages = ["."] + pruneopts = "NUT" + revision = "e0fe6f68307607d540ed8eac07a342c33fa1b54a" + +[[projects]] + digest = "1:dffaacd300adca64381977995d07e91b53a55330ecd6835d9fa9947b7a4c0460" + name = "github.com/xeipuuv/gojsonreference" + packages = ["."] + pruneopts = "NUT" + revision = "e02fc20de94c78484cd5ffb007f8af96be030a45" + +[[projects]] + digest = "1:a35b3188691adc24932292a5e9606f8ddae9f732a5603bbb0456a48caf8a3edd" + name = "github.com/xeipuuv/gojsonschema" + packages = ["."] + pruneopts = "NUT" + revision = "c539bca196be50ccdd1f0bcd9076de95f9081831" + +[[projects]] + branch = "master" + digest = "1:48487a2da8f0d95a64d860167edbc4b67258813fd3c83c5269c62fe80161d700" + name = "github.com/zchee/go-vmnet" + packages = ["."] + pruneopts = "NUT" + revision = "97ebf91740978f1e665defc0a960fb997ebe282b" + +[[projects]] + digest = "1:14263791cdd53e1379d8363b21fe97145665737a81b73076901d204a26ab6b99" + name = "golang.org/x/crypto" + packages = [ + "curve25519", + "ed25519", + "ed25519/internal/edwards25519", + "ssh", + "ssh/terminal", + ] + pruneopts = "NUT" + revision = "81e90905daefcd6fd217b62423c0908922eadb30" + +[[projects]] + digest = "1:866122db0f3007816dccd5b50ba0b3ae593bdadb81f725a17b95c8c6953c5cb7" + name = "golang.org/x/net" + packages = [ + "context", + "http2", + "http2/hpack", + "idna", + "lex/httplex", + ] + pruneopts = "NUT" + revision = "1c05540f6879653db88113bc4a2b70aec4bd491f" + +[[projects]] + digest = "1:39485a034b89a9f2892b9c0cc24e2330e1c9981794c35281c2febfcc55b90a34" + name = "golang.org/x/sync" + packages = [ + "errgroup", + "syncmap", + ] + pruneopts = "NUT" + revision = "f52d1811a62927559de87708c8913c1650ce4f26" + +[[projects]] + digest = "1:fbad6d1464c4ff2c233f9f04181ff573960d469636b208b87458c8b5606b9b78" + name = "golang.org/x/sys" + packages = [ + "unix", + "windows", + "windows/registry", + ] + pruneopts = "NUT" + revision = "95c6576299259db960f6c5b9b69ea52422860fce" + +[[projects]] + digest = "1:97337ef8cb438f9e3a99ea91a300e916ed9a96fbf3ad50f9a020d30ea9f8692f" + name = "golang.org/x/text" + packages = [ + "internal/gen", + "internal/triegen", + "internal/ucd", + "secure/bidirule", + "transform", + "unicode/bidi", + "unicode/cldr", + "unicode/norm", + "unicode/rangetable", + ] + pruneopts = "NUT" + revision = "b19bf474d317b857955b12035d2c5acb57ce8b01" + +[[projects]] + digest = "1:d37b0ef2944431fe9e8ef35c6fffc8990d9e2ca300588df94a6890f3649ae365" + name = "golang.org/x/time" + packages = ["rate"] + pruneopts = "NUT" + revision = "f51c12702a4d776e4c1fa9b0fabab841babae631" + +[[projects]] + digest = "1:f8dc0e20a5e1cbc728a21d00e0aef61b6101dda57e45ea1ed1ab148355864e5d" + name = "gopkg.in/cheggaaa/pb.v1" + packages = ["."] + pruneopts = "NUT" + revision = "dd61faab99a777c652bb680e37715fe0cb549856" + version = "v1.0.6" + +[[projects]] + digest = "1:ef72505cf098abdd34efeea032103377bec06abb61d8a06f002d5d296a4b1185" + name = "gopkg.in/inf.v0" + packages = ["."] + pruneopts = "NUT" + revision = "3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4" + version = "v0.9.0" + +[[projects]] + digest = "1:b1f13c74112ab237c8b840517fbbcfb98d3690073caad6c5b1a56c29fea086e3" + name = "gopkg.in/yaml.v2" + packages = ["."] + pruneopts = "NUT" + revision = "670d4cfef0544295bc27a114dbac37980d83185a" + +[[projects]] + digest = "1:f541c95b242bf41dc42ba035d66e7d240c1e8c7ccd45480f81c6526237d0b940" + name = "k8s.io/api" + packages = [ + "admissionregistration/v1alpha1", + "admissionregistration/v1beta1", + "apps/v1", + "apps/v1beta1", + "apps/v1beta2", + "authentication/v1", + "authentication/v1beta1", + "authorization/v1", + "authorization/v1beta1", + "autoscaling/v1", + "autoscaling/v2beta1", + "batch/v1", + "batch/v1beta1", + "batch/v2alpha1", + "certificates/v1beta1", + "core/v1", + "events/v1beta1", + "extensions/v1beta1", + "networking/v1", + "policy/v1beta1", + "rbac/v1", + "rbac/v1alpha1", + "rbac/v1beta1", + "scheduling/v1alpha1", + "settings/v1alpha1", + "storage/v1", + "storage/v1alpha1", + "storage/v1beta1", + ] + pruneopts = "NUT" + revision = "73d903622b7391f3312dcbac6483fed484e185f8" + version = "kubernetes-1.10.0" + +[[projects]] + digest = "1:3f7aac65aa3e8bca074efbb212aba57e3845bbf8cc2195cb8f854091c62c69dc" + name = "k8s.io/apimachinery" + packages = [ + "pkg/api/errors", + "pkg/api/meta", + "pkg/api/resource", + "pkg/apis/meta/internalversion", + "pkg/apis/meta/v1", + "pkg/apis/meta/v1/unstructured", + "pkg/apis/meta/v1beta1", + "pkg/conversion", + "pkg/conversion/queryparams", + "pkg/fields", + "pkg/labels", + "pkg/runtime", + "pkg/runtime/schema", + "pkg/runtime/serializer", + "pkg/runtime/serializer/json", + "pkg/runtime/serializer/protobuf", + "pkg/runtime/serializer/recognizer", + "pkg/runtime/serializer/streaming", + "pkg/runtime/serializer/versioning", + "pkg/selection", + "pkg/types", + "pkg/util/cache", + "pkg/util/clock", + "pkg/util/diff", + "pkg/util/errors", + "pkg/util/framer", + "pkg/util/intstr", + "pkg/util/json", + "pkg/util/mergepatch", + "pkg/util/net", + "pkg/util/runtime", + "pkg/util/sets", + "pkg/util/strategicpatch", + "pkg/util/uuid", + "pkg/util/validation", + "pkg/util/validation/field", + "pkg/util/wait", + "pkg/util/yaml", + "pkg/version", + "pkg/watch", + "third_party/forked/golang/json", + "third_party/forked/golang/reflect", + ] + pruneopts = "NUT" + revision = "302974c03f7e50f16561ba237db776ab93594ef6" + version = "kubernetes-1.10.0" + +[[projects]] + branch = "master" + digest = "1:803a79a066abaeb85793b0ef857b2c73b9c5ad17a2aa1d95403d31a782f34d34" + name = "k8s.io/apiserver" + packages = ["pkg/util/feature"] + pruneopts = "NUT" + revision = "67c89284117046b26ecd3776eed2a39289399f15" + +[[projects]] + digest = "1:d6331a800f80d3649f1ee217ae39c643988f077312cbfd6f7a942c99f45cf1e7" + name = "k8s.io/client-go" + packages = [ + "discovery", + "kubernetes", + "kubernetes/scheme", + "kubernetes/typed/admissionregistration/v1alpha1", + "kubernetes/typed/admissionregistration/v1beta1", + "kubernetes/typed/apps/v1", + "kubernetes/typed/apps/v1beta1", + "kubernetes/typed/apps/v1beta2", + "kubernetes/typed/authentication/v1", + "kubernetes/typed/authentication/v1beta1", + "kubernetes/typed/authorization/v1", + "kubernetes/typed/authorization/v1beta1", + "kubernetes/typed/autoscaling/v1", + "kubernetes/typed/autoscaling/v2beta1", + "kubernetes/typed/batch/v1", + "kubernetes/typed/batch/v1beta1", + "kubernetes/typed/batch/v2alpha1", + "kubernetes/typed/certificates/v1beta1", + "kubernetes/typed/core/v1", + "kubernetes/typed/core/v1/fake", + "kubernetes/typed/events/v1beta1", + "kubernetes/typed/extensions/v1beta1", + "kubernetes/typed/networking/v1", + "kubernetes/typed/policy/v1beta1", + "kubernetes/typed/rbac/v1", + "kubernetes/typed/rbac/v1alpha1", + "kubernetes/typed/rbac/v1beta1", + "kubernetes/typed/scheduling/v1alpha1", + "kubernetes/typed/settings/v1alpha1", + "kubernetes/typed/storage/v1", + "kubernetes/typed/storage/v1alpha1", + "kubernetes/typed/storage/v1beta1", + "pkg/apis/clientauthentication", + "pkg/apis/clientauthentication/v1alpha1", + "pkg/version", + "plugin/pkg/client/auth/exec", + "rest", + "rest/watch", + "testing", + "tools/auth", + "tools/bootstrap/token/api", + "tools/cache", + "tools/clientcmd", + "tools/clientcmd/api", + "tools/clientcmd/api/latest", + "tools/clientcmd/api/v1", + "tools/metrics", + "tools/pager", + "tools/record", + "tools/reference", + "transport", + "util/buffer", + "util/cert", + "util/flowcontrol", + "util/homedir", + "util/integer", + "util/retry", + ] + pruneopts = "NUT" + revision = "23781f4d6632d88e869066eaebb743857aa1ef9b" + version = "kubernetes-1.10.0" + +[[projects]] + digest = "1:e0d6dcb28c42a53c7243bb6380badd17f92fbd8488a075a07e984f91a07c0d23" + name = "k8s.io/kube-openapi" + packages = ["pkg/util/proto"] + pruneopts = "NUT" + revision = "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf" + +[[projects]] + digest = "1:fbc13b375bc3e2e321dc1229675466a5339aeb598690d435a8113190fd561b02" + name = "k8s.io/kubernetes" + packages = [ + "cmd/kubeadm/app/constants", + "cmd/kubeadm/app/features", + "pkg/apis/core", + "pkg/apis/core/helper", + "pkg/apis/core/v1/helper", + "pkg/registry/core/service/allocator", + "pkg/registry/core/service/ipallocator", + "pkg/util/goroutinemap", + "pkg/util/goroutinemap/exponentialbackoff", + "pkg/util/version", + ] + pruneopts = "NUT" + revision = "a4529464e4629c21224b3d52edfe0ea91b072862" + version = "v1.11.3" + +[solve-meta] + analyzer-name = "dep" + analyzer-version = 1 + input-imports = [ + "github.com/blang/semver", + "github.com/docker/go-units", + "github.com/docker/machine/drivers/hyperv", + "github.com/docker/machine/drivers/virtualbox", + "github.com/docker/machine/drivers/vmwarefusion", + "github.com/docker/machine/libmachine", + "github.com/docker/machine/libmachine/auth", + "github.com/docker/machine/libmachine/cert", + "github.com/docker/machine/libmachine/check", + "github.com/docker/machine/libmachine/drivers", + "github.com/docker/machine/libmachine/drivers/plugin", + "github.com/docker/machine/libmachine/drivers/plugin/localbinary", + "github.com/docker/machine/libmachine/engine", + "github.com/docker/machine/libmachine/host", + "github.com/docker/machine/libmachine/log", + "github.com/docker/machine/libmachine/mcnerror", + "github.com/docker/machine/libmachine/mcnflag", + "github.com/docker/machine/libmachine/mcnutils", + "github.com/docker/machine/libmachine/persist", + "github.com/docker/machine/libmachine/provision", + "github.com/docker/machine/libmachine/provision/pkgaction", + "github.com/docker/machine/libmachine/provision/serviceaction", + "github.com/docker/machine/libmachine/shell", + "github.com/docker/machine/libmachine/ssh", + "github.com/docker/machine/libmachine/state", + "github.com/docker/machine/libmachine/swarm", + "github.com/docker/machine/libmachine/version", + "github.com/golang/glog", + "github.com/google/go-containerregistry/pkg/authn", + "github.com/google/go-containerregistry/pkg/name", + "github.com/google/go-containerregistry/pkg/v1/remote", + "github.com/google/go-containerregistry/pkg/v1/tarball", + "github.com/hooklift/iso9660", + "github.com/jimmidyson/go-download", + "github.com/johanneswuerbach/nfsexports", + "github.com/libvirt/libvirt-go", + "github.com/moby/hyperkit/go", + "github.com/olekukonko/tablewriter", + "github.com/pborman/uuid", + "github.com/pkg/browser", + "github.com/pkg/errors", + "github.com/pkg/profile", + "github.com/r2d4/external-storage/lib/controller", + "github.com/spf13/cobra", + "github.com/spf13/cobra/doc", + "github.com/spf13/pflag", + "github.com/spf13/viper", + "github.com/xeipuuv/gojsonschema", + "github.com/zchee/go-vmnet", + "golang.org/x/crypto/ssh", + "golang.org/x/crypto/ssh/terminal", + "golang.org/x/sync/errgroup", + "golang.org/x/sync/syncmap", + "golang.org/x/sys/windows/registry", + "k8s.io/api/apps/v1", + "k8s.io/api/core/v1", + "k8s.io/api/rbac/v1beta1", + "k8s.io/api/storage/v1", + "k8s.io/apimachinery/pkg/api/errors", + "k8s.io/apimachinery/pkg/apis/meta/v1", + "k8s.io/apimachinery/pkg/fields", + "k8s.io/apimachinery/pkg/labels", + "k8s.io/apimachinery/pkg/runtime", + "k8s.io/apimachinery/pkg/runtime/schema", + "k8s.io/apimachinery/pkg/types", + "k8s.io/apimachinery/pkg/util/net", + "k8s.io/apimachinery/pkg/util/strategicpatch", + "k8s.io/apimachinery/pkg/util/uuid", + "k8s.io/apimachinery/pkg/util/wait", + "k8s.io/apimachinery/pkg/watch", + "k8s.io/client-go/kubernetes", + "k8s.io/client-go/kubernetes/typed/core/v1", + "k8s.io/client-go/kubernetes/typed/core/v1/fake", + "k8s.io/client-go/rest", + "k8s.io/client-go/tools/cache", + "k8s.io/client-go/tools/clientcmd", + "k8s.io/client-go/tools/clientcmd/api", + "k8s.io/client-go/tools/clientcmd/api/latest", + "k8s.io/client-go/util/homedir", + "k8s.io/kubernetes/cmd/kubeadm/app/constants", + "k8s.io/kubernetes/cmd/kubeadm/app/features", + ] + solver-name = "gps-cdcl" + solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml new file mode 100644 index 000000000000..599a6257447f --- /dev/null +++ b/Gopkg.toml @@ -0,0 +1,99 @@ +# Gopkg.toml example +# +# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html +# for detailed Gopkg.toml documentation. +# +# required = ["github.com/user/thing/cmd/thing"] +# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] +# +# [[constraint]] +# name = "github.com/user/project" +# version = "1.0.0" +# +# [[constraint]] +# name = "github.com/user/project2" +# branch = "dev" +# source = "github.com/myfork/project2" +# +# [[override]] +# name = "github.com/x/y" +# version = "2.4.0" +# +# [prune] +# non-go = false +# go-tests = true +# unused-packages = true + + +[[constraint]] + name = "github.com/blang/semver" + version = "3.5.0" + +[[constraint]] + branch = "master" + name = "github.com/docker/machine" + +[[constraint]] + branch = "master" + name = "github.com/jimmidyson/go-download" + +[[constraint]] + branch = "master" + name = "github.com/johanneswuerbach/nfsexports" + +[[constraint]] + name = "github.com/libvirt/libvirt-go" + version = "3.4.0" + +[[constraint]] + name = "github.com/moby/hyperkit" + version = "0.20171020.0" + +[[constraint]] + name = "github.com/pkg/errors" + version = "0.8.0" + +[[constraint]] + branch = "master" + name = "github.com/r2d4/external-storage" + +[[constraint]] + name = "github.com/spf13/pflag" + version = "1.0.1" + +[[constraint]] + name = "github.com/spf13/viper" + version = "1.0.0" + +[[constraint]] + branch = "master" + name = "github.com/zchee/go-vmnet" + +[[constraint]] + name = "k8s.io/api" + version = "kubernetes-1.11.2" + +[[constraint]] + name = "k8s.io/apimachinery" + version = "kubernetes-1.11.2" + +[[constraint]] + name = "k8s.io/client-go" + version = "kubernetes-1.10.0" + +[[constraint]] + name = "k8s.io/kubernetes" + version = "1.10.0" + +[[override]] + name = "k8s.io/api" + version = "kubernetes-1.10.0" + +[[override]] + name = "k8s.io/apimachinery" + version = "kubernetes-1.10.0" + +[prune] + go-tests = true + non-go = true + unused-packages = true diff --git a/hack/godeps/godep-restore.sh b/hack/godeps/godep-restore.sh deleted file mode 100755 index be375f6c5755..000000000000 --- a/hack/godeps/godep-restore.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash - -# Copyright 2016 The Kubernetes Authors All rights reserved. -# -# 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 -# -# http://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. - -K8S_ORG_ROOT=${GOPATH}/src/k8s.io -MINIKUBE_ROOT=${K8S_ORG_ROOT}/minikube -KUBE_ROOT=${K8S_ORG_ROOT}/kubernetes - -KUBE_VERSION=$(python ${MINIKUBE_ROOT}/hack/get_k8s_version.py --k8s-version-only 2>&1) - -source ${MINIKUBE_ROOT}/hack/godeps/utils.sh - -godep::ensure_godep_version v79 - -# We can't 'go get kubernetes' so this hack is here -mkdir -p ${K8S_ORG_ROOT} -if [ ! -d "${KUBE_ROOT}" ]; then - pushd ${K8S_ORG_ROOT} >/dev/null - git clone https://github.com/kubernetes/kubernetes.git - popd >/dev/null -fi - -godep::restore_kubernetes - -pushd ${MINIKUBE_ROOT} >/dev/null - godep restore ./... -popd >/dev/null diff --git a/hack/godeps/godep-save.sh b/hack/godeps/godep-save.sh deleted file mode 100755 index a71f50088f2d..000000000000 --- a/hack/godeps/godep-save.sh +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/bash - -# Copyright 2016 The Kubernetes Authors All rights reserved. -# -# 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 -# -# http://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. - -set -o errexit -set -o nounset -set -o pipefail - -MINIKUBE_ROOT=${GOPATH}/src/k8s.io/minikube -KUBE_ROOT=${GOPATH}/src/k8s.io/kubernetes - -source ${MINIKUBE_ROOT}/hack/godeps/utils.sh - -godep::ensure_godep_version v79 -godep::sync_staging - -rm -rf ${MINIKUBE_ROOT}/vendor ${MINIKUBE_ROOT}/Godeps - -# We use a different version of viper than Kubernetes. -pushd ${GOPATH}/src/github.com/spf13/viper >/dev/null - git checkout 25b30aa063fc18e48662b86996252eabdcf2f0c7 -popd >/dev/null - -# We use a different version of mux than Kubernetes. -pushd ${GOPATH}/src/github.com/gorilla/mux >/dev/null - git checkout 5ab525f4fb1678e197ae59401e9050fa0b6cb5fd -popd >/dev/null - -godep save ./... - -cp -r ${KUBE_ROOT}/pkg/generated/openapi ${MINIKUBE_ROOT}/vendor/k8s.io/kubernetes/pkg/generated/ - -godep::remove_staging_from_json -git checkout -- ${MINIKUBE_ROOT}/vendor/golang.org/x/sys/windows diff --git a/hack/godeps/godep-update-k8s.sh b/hack/godeps/godep-update-k8s.sh deleted file mode 100755 index b54e45113ac6..000000000000 --- a/hack/godeps/godep-update-k8s.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -# Copyright 2016 The Kubernetes Authors All rights reserved. -# -# 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 -# -# http://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. - -K8S_ORG_ROOT=${GOPATH}/src/k8s.io -MINIKUBE_ROOT=${K8S_ORG_ROOT}/minikube -KUBE_ROOT=${K8S_ORG_ROOT}/kubernetes -KUBE_VERSION=${KUBE_VERSION:=$(python ${MINIKUBE_ROOT}/hack/get_k8s_version.py --k8s-version-only 2>&1)} - -source ${MINIKUBE_ROOT}/hack/godeps/utils.sh - -godep::restore_kubernetes -${MINIKUBE_ROOT}/hack/godeps/godep-save.sh diff --git a/hack/godeps/godeps-json-updater.go b/hack/godeps/godeps-json-updater.go deleted file mode 100644 index 60f90a7b6d29..000000000000 --- a/hack/godeps/godeps-json-updater.go +++ /dev/null @@ -1,98 +0,0 @@ -/* -Copyright 2016 The Kubernetes Authors All rights reserved. - -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 - - http://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. -*/ - -package main - -import ( - "encoding/json" - "io/ioutil" - "log" - "os" - "path" - "strings" - - flag "github.com/spf13/pflag" -) - -var ( - godepsFile = flag.String("godeps-file", "", "absolute path to Godeps.json") - kubernetesPath = flag.String("kubernetes-dir", "", "absolute path to the kubernetes folder") -) - -type Dependency struct { - ImportPath string - Comment string `json:",omitempty"` - Rev string -} - -type Godeps struct { - ImportPath string - GoVersion string - GodepVersion string - Packages []string `json:",omitempty"` // Arguments to save, if any. - Deps []Dependency -} - -func main() { - flag.Parse() - var g Godeps - if godepsFile == nil || kubernetesPath == nil { - log.Fatalf("absolute path to Godeps.json is required") - } - f, err := os.OpenFile(*godepsFile, os.O_RDWR, 0666) - if err != nil { - log.Fatalf("cannot open file %q: %v", *godepsFile, err) - } - defer f.Close() - err = json.NewDecoder(f).Decode(&g) - if err != nil { - log.Fatalf("Unable to parse %q: %v", *godepsFile, err) - } - - k8sStagingDir := path.Join(*kubernetesPath, "staging", "src", "k8s.io") - stagedRepos, err := ioutil.ReadDir(k8sStagingDir) - if err != nil { - log.Fatalf("Couldn't read kubernetes staging repo: %v", err) - } - - i := 0 - for _, dep := range g.Deps { - ignored := false - for _, stagedRepo := range stagedRepos { - importPrefix := path.Join("k8s.io", stagedRepo.Name()) - if strings.HasPrefix(dep.ImportPath, importPrefix) { - ignored = true - } - } - if ignored { - continue - } - g.Deps[i] = dep - i++ - } - g.Deps = g.Deps[:i] - b, err := json.MarshalIndent(g, "", "\t") - if err != nil { - log.Fatal(err) - } - n, err := f.WriteAt(append(b, '\n'), 0) - if err != nil { - log.Fatal(err) - } - if err := f.Truncate(int64(n)); err != nil { - log.Fatal(err) - } -} diff --git a/hack/godeps/utils.sh b/hack/godeps/utils.sh deleted file mode 100644 index 754757dc4c74..000000000000 --- a/hack/godeps/utils.sh +++ /dev/null @@ -1,66 +0,0 @@ -#!/bin/bash - -# Copyright 2016 The Kubernetes Authors All rights reserved. -# -# 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 -# -# http://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. - -set -o errexit -set -o nounset -set -o pipefail - -godep::ensure_godep_version() { - GODEP_VERSION=${1:-"v79"} - if [[ "$(godep version)" == *"godep ${GODEP_VERSION}"* ]]; then - return - fi - go get -d -u github.com/tools/godep 2>/dev/null - pushd "${GOPATH}/src/github.com/tools/godep" >/dev/null - git checkout "${GODEP_VERSION}" - go install . - popd >/dev/null - godep version -} - -godep::sync_staging() { - -pushd ${KUBE_ROOT} >/dev/null - KUBE_VERSION=$(git describe) -popd >/dev/null - -for repo in $(ls ${KUBE_ROOT}/staging/src/k8s.io); do - rm -rf ${GOPATH}/src/k8s.io/${repo} - cp -a "${KUBE_ROOT}/staging/src/k8s.io/${repo}" "${GOPATH}/src/k8s.io/" - - pushd "${GOPATH}/src/k8s.io/${repo}" >/dev/null - git init >/dev/null - git config --local user.email "nobody@k8s.io" - git config --local user.name "$0" - git add . >/dev/null - git commit -q -m "Kubernetes ${KUBE_VERSION}" >/dev/null - git tag ${KUBE_VERSION} - popd >/dev/null -done -} - -godep::restore_kubernetes() { - pushd ${KUBE_ROOT} >/dev/null - git checkout ${KUBE_VERSION} - make generated_files - ./hack/godep-restore.sh - popd >/dev/null - godep::sync_staging -} - -godep::remove_staging_from_json() { - go run ${MINIKUBE_ROOT}/hack/godeps/godeps-json-updater.go --godeps-file ${MINIKUBE_ROOT}/Godeps/Godeps.json --kubernetes-dir ${KUBE_ROOT} -} diff --git a/vendor/github.com/Azure/go-ansiterm/README.md b/vendor/github.com/Azure/go-ansiterm/README.md deleted file mode 100644 index 261c041e7aba..000000000000 --- a/vendor/github.com/Azure/go-ansiterm/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# go-ansiterm - -This is a cross platform Ansi Terminal Emulation library. It reads a stream of Ansi characters and produces the appropriate function calls. The results of the function calls are platform dependent. - -For example the parser might receive "ESC, [, A" as a stream of three characters. This is the code for Cursor Up (http://www.vt100.net/docs/vt510-rm/CUU). The parser then calls the cursor up function (CUU()) on an event handler. The event handler determines what platform specific work must be done to cause the cursor to move up one position. - -The parser (parser.go) is a partial implementation of this state machine (http://vt100.net/emu/vt500_parser.png). There are also two event handler implementations, one for tests (test_event_handler.go) to validate that the expected events are being produced and called, the other is a Windows implementation (winterm/win_event_handler.go). - -See parser_test.go for examples exercising the state machine and generating appropriate function calls. - ------ -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/vendor/github.com/blang/semver/README.md b/vendor/github.com/blang/semver/README.md deleted file mode 100644 index 4399639e230f..000000000000 --- a/vendor/github.com/blang/semver/README.md +++ /dev/null @@ -1,191 +0,0 @@ -semver for golang [![Build Status](https://drone.io/github.com/blang/semver/status.png)](https://drone.io/github.com/blang/semver/latest) [![GoDoc](https://godoc.org/github.com/blang/semver?status.png)](https://godoc.org/github.com/blang/semver) [![Coverage Status](https://img.shields.io/coveralls/blang/semver.svg)](https://coveralls.io/r/blang/semver?branch=master) -====== - -semver is a [Semantic Versioning](http://semver.org/) library written in golang. It fully covers spec version `2.0.0`. - -Usage ------ -```bash -$ go get github.com/blang/semver -``` -Note: Always vendor your dependencies or fix on a specific version tag. - -```go -import github.com/blang/semver -v1, err := semver.Make("1.0.0-beta") -v2, err := semver.Make("2.0.0-beta") -v1.Compare(v2) -``` - -Also check the [GoDocs](http://godoc.org/github.com/blang/semver). - -Why should I use this lib? ------ - -- Fully spec compatible -- No reflection -- No regex -- Fully tested (Coverage >99%) -- Readable parsing/validation errors -- Fast (See [Benchmarks](#benchmarks)) -- Only Stdlib -- Uses values instead of pointers -- Many features, see below - - -Features ------ - -- Parsing and validation at all levels -- Comparator-like comparisons -- Compare Helper Methods -- InPlace manipulation -- Ranges `>=1.0.0 <2.0.0 || >=3.0.0 !3.0.1-beta.1` -- Sortable (implements sort.Interface) -- database/sql compatible (sql.Scanner/Valuer) -- encoding/json compatible (json.Marshaler/Unmarshaler) - -Ranges ------- - -A `Range` is a set of conditions which specify which versions satisfy the range. - -A condition is composed of an operator and a version. The supported operators are: - -- `<1.0.0` Less than `1.0.0` -- `<=1.0.0` Less than or equal to `1.0.0` -- `>1.0.0` Greater than `1.0.0` -- `>=1.0.0` Greater than or equal to `1.0.0` -- `1.0.0`, `=1.0.0`, `==1.0.0` Equal to `1.0.0` -- `!1.0.0`, `!=1.0.0` Not equal to `1.0.0`. Excludes version `1.0.0`. - -A `Range` can link multiple `Ranges` separated by space: - -Ranges can be linked by logical AND: - - - `>1.0.0 <2.0.0` would match between both ranges, so `1.1.1` and `1.8.7` but not `1.0.0` or `2.0.0` - - `>1.0.0 <3.0.0 !2.0.3-beta.2` would match every version between `1.0.0` and `3.0.0` except `2.0.3-beta.2` - -Ranges can also be linked by logical OR: - - - `<2.0.0 || >=3.0.0` would match `1.x.x` and `3.x.x` but not `2.x.x` - -AND has a higher precedence than OR. It's not possible to use brackets. - -Ranges can be combined by both AND and OR - - - `>1.0.0 <2.0.0 || >3.0.0 !4.2.1` would match `1.2.3`, `1.9.9`, `3.1.1`, but not `4.2.1`, `2.1.1` - -Range usage: - -``` -v, err := semver.Parse("1.2.3") -range, err := semver.ParseRange(">1.0.0 <2.0.0 || >=3.0.0") -if range(v) { - //valid -} - -``` - -Example ------ - -Have a look at full examples in [examples/main.go](examples/main.go) - -```go -import github.com/blang/semver - -v, err := semver.Make("0.0.1-alpha.preview+123.github") -fmt.Printf("Major: %d\n", v.Major) -fmt.Printf("Minor: %d\n", v.Minor) -fmt.Printf("Patch: %d\n", v.Patch) -fmt.Printf("Pre: %s\n", v.Pre) -fmt.Printf("Build: %s\n", v.Build) - -// Prerelease versions array -if len(v.Pre) > 0 { - fmt.Println("Prerelease versions:") - for i, pre := range v.Pre { - fmt.Printf("%d: %q\n", i, pre) - } -} - -// Build meta data array -if len(v.Build) > 0 { - fmt.Println("Build meta data:") - for i, build := range v.Build { - fmt.Printf("%d: %q\n", i, build) - } -} - -v001, err := semver.Make("0.0.1") -// Compare using helpers: v.GT(v2), v.LT, v.GTE, v.LTE -v001.GT(v) == true -v.LT(v001) == true -v.GTE(v) == true -v.LTE(v) == true - -// Or use v.Compare(v2) for comparisons (-1, 0, 1): -v001.Compare(v) == 1 -v.Compare(v001) == -1 -v.Compare(v) == 0 - -// Manipulate Version in place: -v.Pre[0], err = semver.NewPRVersion("beta") -if err != nil { - fmt.Printf("Error parsing pre release version: %q", err) -} - -fmt.Println("\nValidate versions:") -v.Build[0] = "?" - -err = v.Validate() -if err != nil { - fmt.Printf("Validation failed: %s\n", err) -} -``` - - -Benchmarks ------ - - BenchmarkParseSimple-4 5000000 390 ns/op 48 B/op 1 allocs/op - BenchmarkParseComplex-4 1000000 1813 ns/op 256 B/op 7 allocs/op - BenchmarkParseAverage-4 1000000 1171 ns/op 163 B/op 4 allocs/op - BenchmarkStringSimple-4 20000000 119 ns/op 16 B/op 1 allocs/op - BenchmarkStringLarger-4 10000000 206 ns/op 32 B/op 2 allocs/op - BenchmarkStringComplex-4 5000000 324 ns/op 80 B/op 3 allocs/op - BenchmarkStringAverage-4 5000000 273 ns/op 53 B/op 2 allocs/op - BenchmarkValidateSimple-4 200000000 9.33 ns/op 0 B/op 0 allocs/op - BenchmarkValidateComplex-4 3000000 469 ns/op 0 B/op 0 allocs/op - BenchmarkValidateAverage-4 5000000 256 ns/op 0 B/op 0 allocs/op - BenchmarkCompareSimple-4 100000000 11.8 ns/op 0 B/op 0 allocs/op - BenchmarkCompareComplex-4 50000000 30.8 ns/op 0 B/op 0 allocs/op - BenchmarkCompareAverage-4 30000000 41.5 ns/op 0 B/op 0 allocs/op - BenchmarkSort-4 3000000 419 ns/op 256 B/op 2 allocs/op - BenchmarkRangeParseSimple-4 2000000 850 ns/op 192 B/op 5 allocs/op - BenchmarkRangeParseAverage-4 1000000 1677 ns/op 400 B/op 10 allocs/op - BenchmarkRangeParseComplex-4 300000 5214 ns/op 1440 B/op 30 allocs/op - BenchmarkRangeMatchSimple-4 50000000 25.6 ns/op 0 B/op 0 allocs/op - BenchmarkRangeMatchAverage-4 30000000 56.4 ns/op 0 B/op 0 allocs/op - BenchmarkRangeMatchComplex-4 10000000 153 ns/op 0 B/op 0 allocs/op - -See benchmark cases at [semver_test.go](semver_test.go) - - -Motivation ------ - -I simply couldn't find any lib supporting the full spec. Others were just wrong or used reflection and regex which i don't like. - - -Contribution ------ - -Feel free to make a pull request. For bigger changes create a issue first to discuss about it. - - -License ------ - -See [LICENSE](LICENSE) file. diff --git a/vendor/github.com/blang/semver/package.json b/vendor/github.com/blang/semver/package.json deleted file mode 100644 index 568be8d9431d..000000000000 --- a/vendor/github.com/blang/semver/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "author": "blang", - "bugs": { - "URL": "https://github.com/blang/semver/issues", - "url": "https://github.com/blang/semver/issues" - }, - "gx": { - "dvcsimport": "github.com/blang/semver" - }, - "gxVersion": "0.10.0", - "language": "go", - "license": "MIT", - "name": "semver", - "releaseCmd": "git commit -a -m \"gx publish $VERSION\"", - "version": "3.4.0" -} - diff --git a/vendor/github.com/c4milo/gotoolkit/.travis.yml b/vendor/github.com/c4milo/gotoolkit/.travis.yml deleted file mode 100644 index 50701f19b781..000000000000 --- a/vendor/github.com/c4milo/gotoolkit/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: go - -go: - - 1.4 - - 1.5 - - 1.8 - - tip - -matrix: - allow_failures: - - go: tip diff --git a/vendor/github.com/c4milo/gotoolkit/CONTRIBUTING.md b/vendor/github.com/c4milo/gotoolkit/CONTRIBUTING.md deleted file mode 100644 index fa1e3271e87d..000000000000 --- a/vendor/github.com/c4milo/gotoolkit/CONTRIBUTING.md +++ /dev/null @@ -1,65 +0,0 @@ -### Thanks for your interest in contributing to this project and for taking the time to read this guide. - -## Code of conduct -*Taken from http://libvirt.org/governance.html with minor adjustments.* - -The open source community covers people from a wide variety of countries, backgrounds and positions. This global diversity is a great strength for this project, but can also lead to communication issues, which may in turn cause unhappiness. To maximize happiness of the project community taken as a whole, all members (whether users, contributors or committers) are expected to abide by the project's code of conduct. At a high level the code can be summarized as "be excellent to each other". Expanding on this: - -**Be respectful:** disagreements between people are to be expected and are usually the sign of healthy debate and engagement. Disagreements can lead to frustration and even anger for some members. Turning to personal insults, intimidation or threatening behavior does not improve the situation. Participants should thus take care to ensure all communications / interactions stay professional at all times. - -**Be considerate:** remember that the community has members with a diverse background many of whom have English as a second language. What might appear impolite, may simply be a result of a lack of knowledge of the English language. Bear in mind that actions will have an impact on other community members and the project as a whole, so take potential consequences into account before pursuing a course of action. - -**Be forgiving:** humans are fallible and as such prone to make mistakes and inexplicably change their positions at times. Don't assume that other members are acting with malicious intent. Be prepared to forgive people who make mistakes and assist each other in learning from them. Playing a blame game doesn't help anyone. - -## Issues -* Before reporting an issue make sure you search first if anybody has already reported a similar issue and whether or not it has been fixed. -* Make sure your issue report sufficiently details the problem. -* Include code samples reproducing the issue. -* Please do not derail or troll issues. Keep the discussion on topic and respect the Code of conduct. -* Please do not open issues for personal support requests, use the mailing list instead. -* If you want to tackle any open issue, make sure you let people know you are working on it. - -## Development workflow -Go is unlike any other language in that it forces a specific development workflow and project structure. Trying to fight it is useless, frustrating and time consuming. So, you better be prepare to adapt your workflow when contributing to Go projects. - -### Prerequisites -* **Go**: To install Go please follow its installation guide at https://golang.org/doc/install -* **Git:** - * **Debian-based distros:** `apt-get install git-core` - * **OSX:** `brew install git` - -### Pull Requests -* Please be generous describing your changes. -* Although it is highly suggested to include tests, they are not a hard requirement in order to get your contributions accepted. -* Keep pull requests small so core developers can review them quickly. - -### Workflow for third-party code contributions -* In Github, fork `https://github.com/c4milo/gotoolkit` to your own account -* Get the package using "go get": `go get github.com/c4milo/gotoolkit` -* Move to where the package was cloned: `cd $GOPATH/src/github.com/c4milo/gotoolkit/` -* Add a git remote pointing to your own fork: `git remote add downstream git@github.com:/gotoolkit.git` -* Create a branch for making your changes, then commit them. -* Push changes to downstream repository, this is your own fork: `git push downstream` -* In Github, from your fork, create the Pull Request and send it upstream. -* You are done. - - -### Workflow for core developers -Since core developers usually have access to the upstream repository, there is no need for having a workflow like the one for thid-party contributors. - -* Get the package using "go get": `go get github.com/c4milo/gotoolkit` -* Create a branch for making your changes, then commit them. -* Push changes to the repository: `git push origin ` -* In Github, create the Pull Request from your branch to master. -* Before merging into master, wait for at least two developers to code review your contribution. - - -## Resources -* **Art of Computer Programming:** http://www-cs-faculty.stanford.edu/~uno/news.html -* **Algorithm Design Manual (2nd edition):** http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600 -* **Algorithms (4th Edition):** http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X/ref=sr_1_2?s=books&ie=UTF8&qid=1410027698&sr=1-2 -* **Introduction to Algorithms, 3rd Edition:** http://www.amazon.com/Introduction-Algorithms-3rd-Thomas-Cormen/dp/0262033844/ref=sr_1_1?s=books&ie=UTF8&qid=1410027698&sr=1-1 -* **Cracking the Coding Interview: 150 Programming Questions and Solutions:** http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=pd_bxgy_b_img_y -* **CS 97SI: Introduction to Competitive Programming Contests:** http://web.stanford.edu/class/cs97si/ -* **Algorithm tutorials at Topcoder:** http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=alg_index -* **CS 161 - Design and Analysis of Algorithms:** http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=IntroToAlgorithms diff --git a/vendor/github.com/c4milo/gotoolkit/README.md b/vendor/github.com/c4milo/gotoolkit/README.md deleted file mode 100644 index 3aaa55367b35..000000000000 --- a/vendor/github.com/c4milo/gotoolkit/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# Go Toolkit -[![GoDoc](https://godoc.org/github.com/c4milo/gotoolkit?status.svg)](https://godoc.org/github.com/c4milo/gotoolkit) -[![Build Status](https://travis-ci.org/c4milo/gotoolkit.svg?branch=master)](https://travis-ci.org/c4milo/gotoolkit) - -A set of algorithms and data structures that are not part of the standard Go packages and that we need -on a daily basis. - -## Algorithms -* **SliceStack** -* **ListStack** -* **ListQueue** -* **SliceQueue** diff --git a/vendor/github.com/docker/docker/AUTHORS b/vendor/github.com/docker/docker/AUTHORS index e091ed7dc1bc..c6c8fb40e398 100644 --- a/vendor/github.com/docker/docker/AUTHORS +++ b/vendor/github.com/docker/docker/AUTHORS @@ -21,11 +21,13 @@ Adam Eijdenberg Adam Kunk Adam Miller Adam Mills +Adam Pointer Adam Singer Adam Walz Addam Hardy Aditi Rajagopal Aditya +Adnan Khan Adolfo Ochagavía Adria Casas Adrian Moisey @@ -37,11 +39,13 @@ Ahmed Kamal Ahmet Alp Balkan Aidan Feldman Aidan Hobson Sayers -AJ Bowen +AJ Bowen Ajey Charantimath ajneu +Akash Gupta Akihiro Matsushima Akihiro Suda +Akim Demaille Akira Koyasu Akshay Karle Al Tobey @@ -50,10 +54,11 @@ Alan Scherger Alan Thompson Albert Callarisa Albert Zhang +Alejandro González Hevia Aleksa Sarai Aleksandrs Fadins Alena Prokharchyk -Alessandro Boch +Alessandro Boch Alessio Biancalana Alex Chan Alex Chen @@ -61,6 +66,7 @@ Alex Coventry Alex Crawford Alex Ellis Alex Gaynor +Alex Goodman Alex Olshansky Alex Samorukov Alex Warhawk @@ -73,6 +79,7 @@ Alexander Shopov Alexandre Beslic Alexandre Garnier Alexandre González +Alexandre Jomin Alexandru Sfirlogea Alexey Guskov Alexey Kotlyarov @@ -83,7 +90,7 @@ Ali Dehghani Alicia Lauerman Alihan Demir Allen Madsen -Allen Sun +Allen Sun almoehi Alvaro Saurin Alvin Deng @@ -94,16 +101,19 @@ Amir Goldstein Amit Bakshi Amit Krishnan Amit Shukla +Amr Gawish Amy Lindburg Anand Patil AnandkumarPatel Anatoly Borodin Anchal Agrawal +Anda Xu Anders Janmyr Andre Dublin <81dublin@gmail.com> Andre Granovsky Andrea Luzzardi Andrea Turli +Andreas Elvers Andreas Köhler Andreas Savvides Andreas Tiefenthaler @@ -114,6 +124,7 @@ Andrew Duckworth Andrew France Andrew Gerrand Andrew Guenther +Andrew He Andrew Hsu Andrew Kuklewicz Andrew Macgregor @@ -121,8 +132,9 @@ Andrew Macpherson Andrew Martin Andrew McDonnell Andrew Munsell +Andrew Pennebaker Andrew Po -Andrew Weiss +Andrew Weiss Andrew Williams Andrews Medina Andrey Petrov @@ -142,6 +154,7 @@ Anil Madhavapeddy Ankush Agarwal Anonmily Anran Qiao +Anshul Pundir Anthon van der Neut Anthony Baire Anthony Bishopric @@ -165,6 +178,7 @@ Arthur Barr Arthur Gautier Artur Meyster Arun Gupta +Asad Saeeduddin Asbjørn Enge averagehuman Avi Das @@ -187,35 +201,38 @@ Ben Severson Ben Toews Ben Wiklund Benjamin Atkin +Benjamin Baker Benjamin Boudreau +Benjamin Yolken Benoit Chesneau Bernerd Schaefer +Bernhard M. Wiedemann Bert Goethals Bharath Thiruveedula Bhiraj Butala Bhumika Bayani Bilal Amarni -Bill W -bin liu +Bill Wang +Bin Liu Bingshen Wang Blake Geno Boaz Shuster bobby abbott Boris Pruessmann Boshi Lian -boucher Bouke Haarsma Boyd Hemphill boynux Bradley Cicenas Bradley Wright Brandon Liu -Brandon Philips +Brandon Philips Brandon Rhodes Brendan Dixon Brent Salisbury Brett Higgins Brett Kochendorfer +Brett Randall Brian (bex) Exelbierd Brian Bland Brian DeHamer @@ -230,6 +247,7 @@ Brian Torres-Gil Brian Trump Brice Jaglin Briehan Lombaard +Brielle Broder Bruno Bigras Bruno Binet Bruno Gazzera @@ -239,7 +257,6 @@ Bryan Bess Bryan Boreham Bryan Matsuo Bryan Murphy -buddhamagnet Burke Libbey Byung Kang Caleb Spare @@ -252,17 +269,21 @@ Cao Weiwei Carl Henrik Lunde Carl Loa Odin Carl X. Su +Carlo Mion Carlos Alexandro Becker Carlos Sanchez Carol Fager-Higgins Cary Casey Bisson +Catalin Pirvu Ce Gao Cedric Davies Cezar Sa Espinola Chad Swenson Chance Zibolski -Chander G +Chander Govindarajan +Chanhun Jeong +Chao Wang Charles Chan Charles Hooper Charles Law @@ -280,6 +301,10 @@ Chen Hanxiao Chen Min Chen Mingjie Chen Qiu +Cheng-mean Liu +Chengguang Xu +chenyuzhu +Chetan Birajdar Chewey Chia-liang Kao chli @@ -299,17 +324,23 @@ Chris Snow Chris St. Pierre Chris Stivers Chris Swan +Chris Telfer Chris Wahl Chris Weyl +Chris White Christian Berendt +Christian Brauner Christian Böhme +Christian Muehlhaeuser Christian Persson Christian Rotzoll Christian Simon Christian Stefanescu -ChristoperBiscardi Christophe Mehay Christophe Troestler +Christophe Vidal +Christopher Biscardi +Christopher Crone Christopher Currie Christopher Jones Christopher Latham @@ -319,6 +350,7 @@ Chun Chen Ciro S. Costa Clayton Coleman Clinton Kitson +Cody Roseborough Coenraad Loubser Colin Dunklau Colin Hebert @@ -327,6 +359,7 @@ Colin Walters Collin Guarino Colm Hally companycy +Corbin Coleman Corey Farrell Cory Forsyth cressie176 @@ -356,7 +389,9 @@ Dan Levy Dan McPherson Dan Stine Dan Williams +Dani Louca Daniel Antlinger +Daniel Dao Daniel Exner Daniel Farrell Daniel Garcia @@ -372,23 +407,26 @@ Daniel Nordberg Daniel Robinson Daniel S Daniel Von Fange +Daniel Watkins Daniel X Moore Daniel YC Lin Daniel Zhang -Daniel, Dao Quang Minh Danny Berger Danny Yates +Danyal Khaliq Darren Coxall Darren Shepherd Darren Stahl Dattatraya Kumbhar Davanum Srinivas Dave Barboza +Dave Goodchild Dave Henderson Dave MacDonald Dave Tucker David Anderson David Calavera +David Chung David Corking David Cramer David Currie @@ -410,13 +448,15 @@ David Röthlisberger David Sheets David Sissitka David Trott -David Williamson +David Wang <00107082@163.com> +David Williamson David Xia David Young Davide Ceretti Dawn Chen dbdd dcylabs +Debayan De Deborah Gertrude Digges deed02392 Deng Guangxing @@ -425,6 +465,7 @@ Denis Defreyne Denis Gladkikh Denis Ollier Dennis Chen +Dennis Chen Dennis Docter Derek Derek @@ -468,15 +509,18 @@ Don Kjer Don Spaulding Donald Huang Dong Chen +Donghwa Kim Donovan Jones Doron Podoleanu Doug Davis Doug MacEachern Doug Tangren +Douglas Curtis Dr Nic Williams dragon788 Dražen Lučanin Drew Erny +Drew Hubl Dustin Sallings Ed Costello Edmund Wagner @@ -485,12 +529,15 @@ Eike Herzbach Eivin Giske Skaaren Eivind Uggedal Elan Ruusamäe +Elango Sivanandam Elena Morozova +Eli Uriegas Elias Faxö Elias Probst Elijah Zupancic eluck Elvir Kuric +Emil Davtyan Emil Hernvall Emily Maier Emily Rose @@ -506,8 +553,9 @@ Eric Lee Eric Myhre Eric Paris Eric Rafaloff -Eric Rosenberg +Eric Rosenberg Eric Sage +Eric Soderstrom Eric Yang Eric-Olivier Lamey Erica Windisch @@ -520,25 +568,26 @@ Erik St. Martin Erik Weathers Erno Hopearuoho Erwin van der Koogh -Euan +Ethan Bell +Euan Kemp +Eugen Krizo Eugene Yakubovich -eugenkrizo -evalle Evan Allrich Evan Carmi -Evan Hazlett Evan Hazlett Evan Krall Evan Phoenix Evan Wies Evelyn Xu Everett Toews +Evgeny Shmarnev Evgeny Vereshchagin Ewa Czechowska Eystein Måløy Stenberg ezbercih Ezra Silvera Fabian Lauer +Fabian Raetz Fabiano Rosas Fabio Falci Fabio Kung @@ -548,17 +597,20 @@ Fabrizio Regini Fabrizio Soppelsa Faiz Khan falmp +Fangming Fang Fangyuan Gao <21551127@zju.edu.cn> +fanjiyun Fareed Dudhia Fathi Boudra Federico Gimenez Felipe Oliveira Felix Abecassis Felix Geisendörfer -Felix Hupfeld +Felix Hupfeld Felix Rabe Felix Ruess Felix Schindler +Feng Yan Fengtu Wang Ferenc Szabo Fernando @@ -566,19 +618,19 @@ Fero Volar Ferran Rodenas Filipe Brandenburger Filipe Oliveira -fl0yd Flavio Castelli Flavio Crisciani -FLGMwt Florian Florian Klein Florian Maier +Florian Noeding Florian Weingarten Florin Asavoaie +Florin Patan fonglh -fortinux Foysal Iqbal Francesc Campoy +Francesco Mari Francis Chuang Francisco Carriedo Francisco Souza @@ -591,8 +643,7 @@ Frederick F. Kautz IV Frederik Loeffert Frederik Nordahl Jul Sabroe Freek Kalter -frosforever -fy2462 +Frieder Bluemle Félix Baylac-Jacqué Félix Cantournet Gabe Rosenhouse @@ -612,6 +663,7 @@ Gaël PORTAY Genki Takiuchi GennadySpb Geoffrey Bachelet +Geon Kim George Kontridze George MacRorie George Xie @@ -619,7 +671,8 @@ Georgi Hristozov Gereon Frey German DZ Gert van Valkenhoef -Gerwim +Gerwim Feiken +Ghislain Bourgeois Giampaolo Mancini Gianluca Borello Gildas Cuisinier @@ -634,10 +687,12 @@ Gopikannan Venugopalsamy Gosuke Miyashita Gou Rao Govinda Fichtner +Grant Millar Grant Reaber Graydon Hoare Greg Fausak Greg Pflaum +Greg Stephens Greg Thornton Grzegorz Jaśkiewicz Guilhem Lettron @@ -645,11 +700,14 @@ Guilherme Salgado Guillaume Dufour Guillaume J. Charmes guoxiuyan +Guri Gurjeet Singh Guruprasad Gustav Sinder gwx296173 Günter Zöchbauer +haikuoliu +Hakan Özler Hans Kristian Flaatten Hans Rødtang Hao Shu Wei @@ -661,11 +719,13 @@ Harry Zhang Harshal Patil Harshal Patil He Simei +He Xiaoxi He Xin heartlock <21521209@zju.edu.cn> Hector Castro Helen Xie Henning Sprang +Hiroshi Hatake Hobofan Hollie Teal Hong Xu @@ -681,13 +741,14 @@ Hunter Blanks huqun Huu Nguyen hyeongkyu.lee -hyp3rdino Hyzhou Zhy +Iago López Galeiras Ian Babrou Ian Bishop Ian Bull Ian Calvert Ian Campbell +Ian Chen Ian Lee Ian Main Ian Philpot @@ -696,28 +757,33 @@ Iavael Icaro Seara Ignacio Capurro Igor Dolzhikov +Igor Karpovich Iliana Weller Ilkka Laukkanen Ilya Dmitrichenko Ilya Gusev -ILYA Khlopotov +Ilya Khlopotov imre Fitos inglesp Ingo Gottwald Isaac Dupree Isabel Jimenez Isao Jonas +Iskander Sharipov Ivan Babrou Ivan Fraixedes Ivan Grcic -Ivan Markin +Ivan Markin J Bruni J. Nunn Jack Danger Canty +Jack Laxson Jacob Atzen Jacob Edelman Jacob Tomlinson +Jacob Vallejo Jacob Wen +Jaivish Kothari Jake Champlin Jake Moshenko Jake Sanders @@ -734,7 +800,7 @@ James Mills James Nesbitt James Nugent James Turnbull -Jamie Hannaford +Jamie Hannaford Jamshid Afshar Jan Keromnes Jan Koprowski @@ -744,7 +810,6 @@ Jan-Gerd Tenberge Jan-Jaap Driessen Jana Radhakrishnan Jannick Fahlbusch -Janonymous Januar Wayong Jared Biel Jared Hocutt @@ -773,7 +838,9 @@ Jean-Christophe Berthon Jean-Paul Calderone Jean-Pierre Huynh Jean-Tiare Le Bigot +Jeeva S. Chelladhurai Jeff Anderson +Jeff Hajewski Jeff Johnston Jeff Lindsay Jeff Mickey @@ -791,17 +858,17 @@ Jeremy Price Jeremy Qian Jeremy Unruh Jeremy Yallop +Jeroen Franse Jeroen Jacobs Jesse Dearing Jesse Dubay -Jessica Frazelle +Jessica Frazelle Jezeniel Zapanta -jgeiger Jhon Honce Ji.Zhilong Jian Zhang -jianbosun Jie Luo +Jihyun Hwang Jilles Oldenbeuving Jim Alateras Jim Galasyn @@ -828,6 +895,7 @@ Joel Friedly Joel Handwell Joel Hansson Joel Wurtz +Joey Geiger Joey Geiger Joey Gibson Joffrey F @@ -852,11 +920,13 @@ John V. Martinez John Warwick John Willis Jon Johnson +Jon Surrell Jon Wedaman Jonas Pfenniger Jonathan A. Sternberg Jonathan Boulle Jonathan Camp +Jonathan Choy Jonathan Dowland Jonathan Lebon Jonathan Lomas @@ -868,10 +938,11 @@ Jonathan Stoppani Jonh Wendell Joni Sar Joost Cassee -Jordan Jordan Arentsen +Jordan Jennings Jordan Sissel Jorge Marin +Jorit Kleine-Möllhoff Jose Diaz-Gonzalez Joseph Anthony Pasquale Holsten Joseph Hager @@ -879,6 +950,7 @@ Joseph Kern Joseph Rothrock Josh Josh Bodah +Josh Bonczkowski Josh Chorlton Josh Eveleth Josh Hawn @@ -888,9 +960,8 @@ Josh Soref Josh Wilson Josiah Kiehl José Tomás Albornoz +Joyce Jang JP -jrabbit -jroenf Julian Taylor Julien Barbier Julien Bisconti @@ -915,9 +986,9 @@ Jérôme Petazzoni Jörg Thalheim K. Heller Kai Blin -Kai Qiang Wu(Kennan) +Kai Qiang Wu (Kennan) Kamil Domański -kamjar gerami +Kamjar Gerami Kanstantsin Shautsou Kara Alexandra Karan Lyons @@ -925,13 +996,17 @@ Kareem Khazem kargakis Karl Grzeszczak Karol Duleba +Karthik Karanth Karthik Nayak +Kasper Fabæch Brandt +Kate Heddleston Katie McLaughlin Kato Kazuyoshi Katrina Owen Kawsar Saiyeed Kay Yan kayrus +Kazuhiro Sera Ke Li Ke Xu Kei Ohmura @@ -940,6 +1015,7 @@ Keli Hu Ken Cochrane Ken Herner Ken ICHIKAWA +Ken Reese Kenfe-Mickaël Laventure Kenjiro Nakayama Kent Johnson @@ -951,20 +1027,19 @@ Kevin J. Lynagh Kevin Jing Qiu Kevin Kern Kevin Menard +Kevin Meredith Kevin P. Kucharczyk Kevin Richardson Kevin Shi Kevin Wallace Kevin Yap -kevinmeredith Keyvan Fatehi kies Kim BKC Carlbacker Kim Eik Kimbro Staken -Kir Kolyshkin +Kir Kolyshkin Kiran Gangadharan -Kirill Kolyshkin Kirill SIbirev knappe Kohei Tsuruta @@ -978,9 +1053,9 @@ Krasimir Georgiev Kris-Mikael Krister Kristian Haugene Kristina Zabunova -krrg Kun Zhang Kunal Kushwaha +Kunal Tyagi Kyle Conroy Kyle Linden kyu @@ -1003,6 +1078,7 @@ Leandro Siqueira Lee Chao <932819864@qq.com> Lee, Meng-Han leeplay +Lei Gong Lei Jitang Len Weincier Lennie @@ -1013,6 +1089,7 @@ Levi Gross Lewis Daly Lewis Marshall Lewis Peckover +Li Yi Liam Macgillavry Liana Lo Liang Mingqiang @@ -1036,14 +1113,16 @@ Lloyd Dewolf Lokesh Mandvekar longliqiang88 <394564827@qq.com> Lorenz Leutgeb -Lorenzo Fontana +Lorenzo Fontana +Lotus Fenn Louis Opter -Luca Favatella +Luca Favatella Luca Marturana Luca Orlandi Luca-Bogdan Grigorescu Lucas Chan Lucas Chi +Lucas Molas Luciano Mores Luis Martínez de Bartolomé Izquierdo Luiz Svoboda @@ -1069,16 +1148,20 @@ Manfred Zabarauskas Manjunath A Kumatagi Mansi Nahar Manuel Meurer +Manuel Rüger Manuel Woelker mapk0y Marc Abramowitz Marc Kuo Marc Tamsky +Marcel Edmund Franke +Marcelo Horacio Fortino Marcelo Salazar Marco Hennings Marcus Cobden Marcus Farkas Marcus Linke +Marcus Martins Marcus Ramberg Marek Goldmann Marian Marinov @@ -1091,24 +1174,29 @@ Mark Allen Mark McGranaghan Mark McKinstry Mark Milstein +Mark Oates Mark Parker Mark West Markan Patel Marko Mikulicic Marko Tibold Markus Fix +Markus Kortlang Martijn Dwars Martijn van Oosterhout Martin Honermeyer Martin Kelly Martin Mosegaard Amdisen +Martin Muzatko Martin Redmond Mary Anthony Masahito Zembutsu +Masato Ohba Masayuki Morita Mason Malone Mateusz Sulima Mathias Monnerville +Mathieu Champlon Mathieu Le Marec - Pasquet Mathieu Parent Matt Apperson @@ -1119,18 +1207,20 @@ Matt Hoyle Matt McCormick Matt Moore Matt Richardson +Matt Rickard Matt Robenolt +Matt Schurenko +Matt Williams Matthew Heon Matthew Lapworth Matthew Mayer +Matthew Mosesohn Matthew Mueller Matthew Riley Matthias Klumpp Matthias Kühnle Matthias Rampke Matthieu Hauglustaine -mattymo -mattyw Mauricio Garavaglia mauriyouth Max Shytikov @@ -1163,6 +1253,7 @@ Michael Huettermann Michael Irwin Michael Käufl Michael Neale +Michael Nussbaum Michael Prokop Michael Scharf Michael Spetsiotis @@ -1177,8 +1268,10 @@ Michal Minář Michal Wieczorek Michaël Pailloncy Michał Czeraszkiewicz -Michiel@unhosted -Mickaël FORTUNATO +Michał Gryko +Michiel de Jong +Mickaël Fortunato +Mickaël Remars Miguel Angel Fernández Miguel Morales Mihai Borobocea @@ -1189,9 +1282,11 @@ Mike Chelen Mike Danese Mike Dillon Mike Dougherty +Mike Estes Mike Gaffney Mike Goelzer Mike Leone +Mike Lundy Mike MacCana Mike Naberezny Mike Snitzer @@ -1204,6 +1299,7 @@ mingqing Mingzhen Feng Misty Stanley-Jones Mitch Capper +Mizuki Urushida mlarcher Mohammad Banikazemi Mohammed Aaqib Ansari @@ -1215,16 +1311,14 @@ Morgy93 Morten Siebuhr Morton Fox Moysés Borges -mqliang +mrfly Mrunal Patel -msabansal -mschurenko Muayyad Alsadi -muge Mustafa Akın Muthukumar R Máximo Cuadros Médi-Rémi Hashim +Nace Oroz Nahum Shalman Nakul Pathak Nalin Dahyabhai @@ -1249,20 +1343,23 @@ Neyazul Haque Nghia Tran Niall O'Higgins Nicholas E. Rabenau -nick Nick DeCoursin Nick Irvine +Nick Neisen Nick Parker Nick Payne +Nick Russo Nick Stenning Nick Stinemates NickrenREN Nicola Kabar -Nicolas Borboën -Nicolas De loof +Nicolas Borboën +Nicolas De Loof Nicolas Dudebout Nicolas Goy Nicolas Kaiser +Nicolas Sterchele +Nicolas V Castet Nicolás Hock Isaza Nigel Poulton Nik Nyby @@ -1273,7 +1370,9 @@ Nikolay Milovanov Nirmal Mehta Nishant Totla NIWA Hideyuki +Noah Meyerhans Noah Treuhaft +NobodyOnSE noducks Nolan Darilek nponeccop @@ -1281,8 +1380,6 @@ Nuutti Kotivuori nzwsch O.S. Tezer objectified -OddBloke -odk- Oguz Bilgic Oh Jinkyun Ohad Schneider @@ -1292,22 +1389,20 @@ Oliver Neal Olivier Gambier Olle Jonsson Oriol Francès -orkaa Oskar Niburski Otto Kekäläinen +Ouyang Liduo Ovidio Mallo -oyld -ozlerhakan -paetling -pandrew -panticz +Panagiotis Moustafellos Paolo G. Giarrusso +Pascal Pascal Borreli Pascal Hartig Patrick Böänziger Patrick Devine Patrick Hemmer Patrick Stapleton +Patrik Cyvoct pattichen Paul paul @@ -1325,11 +1420,13 @@ Paul Nasrat Paul Weaver Paulo Ribeiro Pavel Lobashov +Pavel Pletenev Pavel Pospisil Pavel Sutyrin Pavel Tikhomirov Pavlos Ratis Pavol Vargovcik +Pawel Konczalski Peeyush Gupta Peggy Li Pei Su @@ -1354,6 +1451,7 @@ Petr Švihlík Phil Phil Estes Phil Spitler +Philip Alexander Etling Philip Monroe Philipp Gillé Philipp Wahala @@ -1372,13 +1470,15 @@ pixelistik Porjo Poul Kjeldager Sørensen Pradeep Chhetri +Pradip Dhara Prasanna Gautam Pratik Karki Prayag Verma +Priya Wadhwa +Projjol Banerji Przemek Hejman Pure White pysqz -qhuang Qiang Huang Qinglan Peng qudongfang @@ -1399,7 +1499,7 @@ Ralph Bean Ramkumar Ramachandra Ramon Brooker Ramon van Alteren -Ray Tsang +Ray Tsang ReadmeCritic Recursive Madman Reficul @@ -1407,9 +1507,9 @@ Regan McCooey Remi Rampin Remy Suen Renato Riccieri Santos Zannon -resouer -rgstephens +Renaud Gaubert Rhys Hiltner +Ri Xu Ricardo N Feliciano Rich Moyse Rich Seymour @@ -1458,7 +1558,6 @@ Roman Strashkin Ron Smits Ron Williams root -root root root root @@ -1471,6 +1570,7 @@ Rozhnov Alexandr Rudolph Gottesheim Rui Lopes Runshen Zhu +Russ Magee Ryan Abrams Ryan Anderson Ryan Aslett @@ -1481,6 +1581,8 @@ Ryan Liu Ryan McLaughlin Ryan O'Donnell Ryan Seto +Ryan Simmen +Ryan Stelly Ryan Thomas Ryan Trauntvein Ryan Wallner @@ -1494,7 +1596,8 @@ Sabin Basyal Sachin Joshi Sagar Hani Sainath Grandhi -sakeven +Sakeven Jiang +Salahuddin Khan Sally O'Malley Sam Abed Sam Alba @@ -1514,8 +1617,9 @@ Sankar சங்கர் Sanket Saurav Santhosh Manohar sapphiredev +Sargun Dhillon +Sascha Andres Satnam Singh -satoru Satoshi Amemiya Satoshi Tagomori Scott Bessler @@ -1542,9 +1646,11 @@ Sergey Alekseev Sergey Evstifeev Sergii Kabashniuk Serhat Gülçiçek +SeungUkLee Sevki Hasirci Shane Canon Shane da Silva +Shaun Kaasten shaunol Shawn Landden Shawn Siefkas @@ -1556,6 +1662,7 @@ Shengbo Song Shev Yan Shih-Yuan Lee Shijiang Wei +Shijun Qin Shishir Mahajan Shoubhik Bose Shourya Sarcar @@ -1563,6 +1670,7 @@ shuai-z Shukui Yang Shuwei Hao Sian Lerk Lau +Sidhartha Mani sidharthamani Silas Sewell Silvan Jegen @@ -1572,9 +1680,9 @@ Simon Ferquel Simon Leinen Simon Menke Simon Taranto +Simon Vikstrom Sindhu S Sjoerd Langkemper -skaasten Solganik Alexander Solomon Hykes Song Gao @@ -1595,6 +1703,7 @@ Stefan S. Stefan Scherer Stefan Staudenmeyer Stefan Weil +Stephan Spindler Stephen Crosby Stephen Day Stephen Drake @@ -1614,6 +1723,7 @@ Steven Taylor Subhajit Ghosh Sujith Haridasan Sun Gengze <690388648@qq.com> +Sun Jianbo Sunny Gogoi Suryakumar Sudar Sven Dowideit @@ -1621,19 +1731,21 @@ Swapnil Daingade Sylvain Baubeau Sylvain Bellemare Sébastien +Sébastien HOUZÉ Sébastien Luttringer Sébastien Stormacq Tabakhase Tadej Janež TAGOMORI Satoshi tang0th -Tangi COLIN +Tangi Colin Tatsuki Sugiura Tatsushi Inagaki +Taylan Isikdemir Taylor Jones -tbonza Ted M. Young Tehmasp Chaudhri +Tejaswini Duggaraju Tejesh Mehta terryding77 <550147740@qq.com> tgic @@ -1648,7 +1760,7 @@ Thomas Gazagnaire Thomas Grainger Thomas Hansen Thomas Leonard -Thomas LEVEIL +Thomas Léveil Thomas Orozco Thomas Riccardi Thomas Schroeter @@ -1656,6 +1768,7 @@ Thomas Sjögren Thomas Swift Thomas Tanaka Thomas Texier +Ti Zhou Tianon Gravi Tianyi Wang Tibor Vass @@ -1696,6 +1809,7 @@ Tom Fotherby Tom Howe Tom Hulihan Tom Maaswinkel +Tom Sweeney Tom Wilkie Tom X. Tobin Tomas Tomecek @@ -1720,13 +1834,16 @@ Trent Ogren Trevor Trevor Pounds Trevor Sullivan -trishnaguha +Trishna Guha Tristan Carel Troy Denton +Tycho Andersen Tyler Brock +Tyler Brown Tzu-Jung Lee uhayate Ulysse Carion +Umesh Yadav Utz Bacher vagrant Vaidas Jablonskis @@ -1746,7 +1863,6 @@ Viktor Stanchev Viktor Vojnovski VinayRaghavanKS Vincent Batts -Vincent Bernat Vincent Bernat Vincent Demeester Vincent Giersch @@ -1766,11 +1882,13 @@ Vladimir Pouzanov Vladimir Rutsky Vladimir Varankin VladimirAus +Vlastimil Zeman Vojtech Vitek (V-Teq) waitingkuo Walter Leibbrandt Walter Stanish -WANG Chao +Wang Chao +Wang Guoliang Wang Jie Wang Long Wang Ping @@ -1778,14 +1896,18 @@ Wang Xing Wang Yuexiao Ward Vandewege WarheadsSE +Wassim Dhif Wayne Chang Wayne Song +Weerasak Chongnguluam Wei Wu Wei-Ting Kuo +weipeng weiyan Weiyang Zhu Wen Cheng Ma Wendel Fleming +Wenjun Tang Wenkai Yin Wentao Zhang Wenxuan Zhao @@ -1804,9 +1926,7 @@ William Martin William Riancho William Thurston WiseTrem -wlan0 Wolfgang Powisch -wonderflow Wonjun Kim xamyzhao Xianglin Gao @@ -1815,21 +1935,25 @@ XiaoBing Jiang Xiaoxu Chen Xiaoyu Zhang xiekeyang +Ximo Guanter Gonzálbez Xinbo Weng Xinzi Zhou Xiuming Chen -xlgao-zju +Xuecong Liao xuzhaokui +Yadnyawalkya Tale Yahya YAMADA Tsuyoshi Yamasaki Masahide Yan Feng Yang Bai Yang Pengfei +yangchenliang Yanqiang Miao Yao Zaiyong Yassine Tijani Yasunori Mahata +Yazhong Liu Yestin Sun Yi EungJun Yibai Zhang @@ -1838,20 +1962,23 @@ Ying Li Yohei Ueda Yong Tang Yongzhi Pan -yorkie +Yosef Fertel You-Sheng Yang (楊有勝) Youcef YEKHLEF Yu Changchun Yu Chengxia Yu Peng +Yu-Ju Hong Yuan Sun Yuanhong Peng +Yuhao Fang +Yuichiro Kaneko Yunxiang Huang Yurii Rashkovskii -yuzou +Yves Junqueira Zac Dover Zach Borboa -Zachary Jaffee +Zachary Jaffee Zain Memon Zaiste! Zane DeGraffenried @@ -1860,11 +1987,12 @@ Zen Lin(Zhinan Lin) Zhang Kun Zhang Wei Zhang Wentao +ZhangHang zhangxianwei Zhenan Ye <21551168@zju.edu.cn> zhenghenghuo Zhenkun Bi -zhouhao +Zhou Hao Zhu Guihua Zhu Kunjia Zhuoyun Wei @@ -1874,6 +2002,7 @@ Ziming Dong ZJUshuaizhou <21551191@zju.edu.cn> zmarouf Zoltan Tombol +Zou Yu zqh Zuhayr Elahi Zunayed Ali @@ -1882,4 +2011,6 @@ Zunayed Ali Átila Camurça Alves 尹吉峰 徐俊杰 +慕陶 搏通 +黄艳红00139573 diff --git a/vendor/github.com/docker/docker/LICENSE b/vendor/github.com/docker/docker/LICENSE index 9c8e20ab85c1..6d8d58fb676b 100644 --- a/vendor/github.com/docker/docker/LICENSE +++ b/vendor/github.com/docker/docker/LICENSE @@ -176,7 +176,7 @@ END OF TERMS AND CONDITIONS - Copyright 2013-2017 Docker, Inc. + Copyright 2013-2018 Docker, Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE b/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE new file mode 100644 index 000000000000..e67cdabd22e5 --- /dev/null +++ b/vendor/github.com/docker/docker/contrib/syntax/vim/LICENSE @@ -0,0 +1,22 @@ +Copyright (c) 2013 Honza Pokorny +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/docker/docs/static_files/contributors.png b/vendor/github.com/docker/docker/docs/static_files/contributors.png new file mode 100644 index 0000000000000000000000000000000000000000..63c0a0c09b58bce2e1ade867760a937612934202 GIT binary patch literal 23100 zcmb@OV{j(E_x888ZEbB^Tbp;=t!>=3ZQHint!;a2+qU)J@BCgqZ=W|wCYelTGH1?Q z`J8JKt|%{o0E-Lzo_Y4dhY>#tUQd@oOt3`hoOL|BKcJqN3Vxy$AhV?ax|X zwP7_xdmcs=u4=&I4-7>PVT51Et0V?6adF`Fly>RguBKa_?u?$lQ0phh>{!;bJF?oY zC)U*RkjI zsZ{9ymFQPP=Ffni?-C9P+OC9;+m(1`#sifR2o?cG#SMq<7^FFga@MBPTZc}}8{OtP z!CXnufoQzjhXU6pDu?FO?q?N~x)gG+s5_)nwFPTwBYb7~CibK72sE%1)SrJd^${!^ zEHw&Dtkf^i4vaU^uU^}gy=)4@H#0a?oWg*dF~t!rx~8uPt`)MO;*-1xScpDwk8Yd6 zV|oWAE&v<#MZbeL_k~-u+`8|Wmvs+s;S27t7f}( zmXlHcCaBX3IF<@+Er8_&TT#hEUm$9AWJhM+a2DG>$2af5AN|C9xfYFRFuLL?G1+^h z)!T!@8{JnMuGS?na}ca1a>7RB3N7|6Ju30;Ef@hw{DK01K4-F7z?2a1d z6xYB&;G|Ie<*=I5*<4$#T&O(X^Lx-a9hgg%5-@!cNcW>GOGntHUgUcesfkwoDU2}( zp^XvJc&>8m=-3u88Wgay@j*@{{4f45)4=9Jiy38dDa1naT<3nu?&eE&0d1Rn`W{JW z+U8LtqZPyYp%!)zg2B{3Lbkcu{ZEP<^T>cg)(%UgkghgLTC7~CpI^-|9klpVyAWH7 zHV%sv1WpJwWSw3XfkAq0r09b)a@xX9bKHO9xrn_r-#E&xkbhxq3~^b?MMfTMrD`?h zS1|01CL;=KT9+@O+wU!YZtx6RE#mF=ft=3IwPZU@AV(b-C>&!>dN-kzGwftdTF&rd zV2HwHnX$g0Btk=EJ0UuWB9?h;sVo?F6sphY7i^nLaqx;0#|-1_NIN znQ=;!ID#{lTECe0DwM(&vRwJD*)Gz$_3@es`+CpqM7Q%IYfT1VZ34@S>|}^$zHlkX zqF8IhE*z}@E5)`|)vYmMV8Fuuwl#g)M;dnrznCsx^)FDd&2BGw3%jIv9)+lZGfX0) zYXR{+(nD1^wvq>61Pi@=cYUqu1fPu({)DXZT}E*gsEJb65~g}4&2#wpn~EreB`Aiq zg7Pbi@B7eVz2$nQVzSKlXewM|_q0II6N#6^m%zv+)CQ#e{aek6h^j*oSezfg@@ES8MT#Kt;stNsM)7<|y0gZ}3|BfisAPKfpssv+PnM%1VQY)$rhkVcvBn)CNqo=Dw6JxNoo5 z+?S)IhN;I!PR9W}TV0%Cg%P|=Rwc*vuJcWXX}&i%Q7k8eY_YQNJh(%Oe)&`@<6og9 zh)NBcA`1moGJ-+ovIx@i7-yFFK0~yQnAM8Sr9^6XuoX!AbC?P$q2~6iiAfl=nAEpt ztl<$HhP=f;xkH2R(?;rl($kw#&`v9rb%-xrT#kQOtTDMAWxbBS4HQeav)Z{pn`{*f zNzch%el?n$o;f}o{1b;5TUzc)DubRG z_P6s%V$>GskUzg(#JC12ZBkjI>s2sl+{Py{-jh`1@wQ-7m7=K;DQA=*epw=LFrIgt zbYj&O@gA1R^a2EOt0z3ZbP);;o)nTj2r^hI#QW~6(^`bRt$iy zl()J$C_Q(fa_hBYvjNUJAg)_uN(5Yc^KwcJf^P4KI#lO(yt;Dt%5_C^SN+!I$*8R( z9M?!Cjh>#_`&aK}=msRvaedcGO2XFZhr>Gl8X2nHL0P#*@kV6UApxH+v_8;{N_M0Pl$r%yaDSqn6uqqIJBFa=5ojh-~A-^ zPmeoEHRJI_JUY^dNhY?vAL@v^rHqsPz1_@V2OKVYs(b?9_I#N5q3U0Chzi|5KU0n> zRmfWd!I0N3rM@IH1c^x0U4q4o!Kk0L38x(yTR!)X$*8xmmY-}#7eIVJZkfXzV88`x z!$Al&+Ttx~wK}v8dyHMT_ubr=!e}@<74}62y?&~OkaF>|qt=A81dXQ63s+)pM>@<@++StGdv_h{M{^*6(4wSA?L&`h(vdvy=jjQhB$s3~ob z3Y`hzC%|P0cDQR_1}PGC$1c0J>5p^z_2l~T?oQ@{K_oKU9b&I1Oyd<(gP?o$^i(oi z9e5d7eY~#v%EB)Gf-*+X+6%$qZ+Vc+9vrd(yTQ-(`=Y7~>G&eQq3jTPK z?+SNz?L*%+JQaLZ}9TlRVYrGKEHC-veo<>48F+QB1OX_b-y1 ziFZCun;tAP&7Y0IJMx=&mUN}<`z*`t?N2aY?vk(MCdW=@(=uNkl~T80k&p~)NiMJI z_V}mOu+X9?basLL{_S~lM#kyDMHEU41?1ZZYu1zXWaw)kUC>@9r_yDtAL81{(T__n zc9AR&U8ZH_zL$h_w_(L9u3!zbOuU;*atF*!Dy$yc+6jHptGZq~HnX z=%6U+11T1-&TdgZrFtxrFlCioFmWS8XF@Re;1RY?ajff%ePKRjy6$9|i_b(x*Us2^ z%v;$!7$sR!p8U~Ig?=`jzhrjarKGU>D6stp{3uUyIHUa{YK?X8$H#H%cXf^v!fhH` zd1;q$Ji0XkZSz3MoDGoRY4HrVPP`SD6+hx8B*&} z^G~lwg9($F&bIPYuHK!?;+*1Yn|Z8zXgMP~u^^s+)+BZTyV`i5c+jAnK$g?Dnzz)l z!Lp;k+7bS(+$`DHlDO2k6A{&JPK_#sC_IJ<_YZn9bCeXD@>Dj*oU~^Oipd|a)1j@@ zd9c!{Z-pq$UXCd0r8J=tRefM@qn=`aPczYp}J#$p75w76m2L2&@gGH$xJ5 zEeP7RUtVAh)Jbl6Yn%30+Y`!kdZ6Ddopj|r8m7J_48skVI%iLci*%x^Cd%eekU|aJ za?ga`snZG8h>&sMx#noLwhE~?*DOd#a%inn;Nbr3K6u?*D6_Fo4*LmTtgal6xQ1MT z1fvmX5TVixN1@_b0Lk-qCbFQ0`YXFK?N{fmK3&ch^rVcuNO^sxWLHOilBqsU-jY06u2G0xa-3$+X*yVJf zI~UKD!|JODG?=z?b#@%R)2H;3->;EB5UGT%k572IJ9H)t2rW?e7n=(GlVKcew~ zam>#q{bbEX(IZg%qh}Cl4};R|cEX^#^}ujEn3WWj-=VjnVqeB)6cZ?-M$xdb)@29m z_ufV#^-1gmtJ^Qw-f{Jt@Nxv>aC+H%~G^2VgIo?1)MnmtZ} zMI}6!Tkm&Pk-rA1eY&y+84IJ4bhZc&$fWF6YB3!}hD{c%cKVSh;!zxj<{8y5_Os6v6lFp|HsipZZq#_}(K94RQ%wcq;|?*27TE1D)R4-6exbOcEBS z%I}n{D!QE7d_+oy%BWK3SY(;`3NWvBI}f5(w<3~H%jY>PW<++|`1Y_EEYv@E>|FBc zEpBxzGto3zWkt7uWI}nDJG+c}F8AQ~ug--Ojkl2wf@lG&9pol}ZWNM?@aV(v^eFokThdqjox%^trPxl$6CuYbl8lGynbl3QZ z3|b^N@NV8<$P)TW_=*|bTF4X13gK%)i)@oNh%DHS4h4+3@JM!lRU%NkrgpAinJg%p z+qa_h@kz1s%DxKPs!HgY*4N}qhE0iueK!OWx3xwKQP`Z4B4pdmju_3Md8|mk`Cc%- zYa;n2#lX}yK|c7mT#8@1TY&NeK9!hbYV>XS@%g{uU4GEo&kVQS{-E-?Vm3JG^W~1w zC!8Ud-`K}PlWHPN#=i|nsxXIDk8;#r*=#3GY<<$9w%{2$LIH#tu`su(9oJAnqrfw4 z2B31CsqvQR1`u!wcRiVFFJY2QTH7mv&p0FCxRvc&4P`=p7FV06-O#rf*;`riR2Hen z1j%}T=s42*hZN=hN?|AJ&QSw(pTM;uW#)&wuva7y%?`2+T|(M%dx79#Xr6Tf5EQZneX5 z2P@~l%{-;BRK%8)Gnu9s`b?a}EZWeWB*{-=kM>CA7vs}9+IoD&2L|&IVri>A zKNu&oqw$OineM{b%a(ZL!=TMLe44hW;ClSgZtfDu-Ckdh>m0UO)UTQ@Xl*Q$Va9=y zYRJ(y&SXiWT>*wDSF&~!19j1SQE(K74up4it=ZE9J4HVybMXTlaII>#b~^2i^B{4k}n@Vpf23Wh$D#Ya#JXJ1Q_4S^<1( zeBvx#7Lt$S{5mY>4LYSNp-JyPj)f8Nl!!>RiM{r~r><3RNmkoOaBJhV5071mB<0&6 zMBRb=79(1t*sG{m`7#2S)9&iuYS}3(U$hq&`iCd6TSvwqW)3;&U7gCY ztZY44JH#hvo7gqS=3590X!A|b)PoxmJw%j>qRjFM0gpSCK0d`;XEr16jPQ51fx8Pg zHE3**?VgN+8{s;Q_Xwq`q**R6L}YvGV~&d%YEcmsHyvkY zEt;G0xi+_(@Rs;=y-^647=v$D^kx7XO*I#*?Q74^vu1pOSVT&eYe;;Oxm&_%3dS__ zs%gcJ3XFwo2WK^pr~YD5*6G0vbu;}Ccv>sPJ%&hyooMt)Hz$~RQ-kBPU~E=(0nT5- z*v}0Xo%~=(jxL#S-!KUQrk*}dD_O^@{9r2LkwH7E;&WcsY42>R@ErHV8^YC=r?d?y z>*o$s3jBT#2Z3Rk{rANUiw|L$fsL+2%4DGOYUPpKZ!Xq)d}v0d+p#`1{nQz1MVmSn zXbTQX-;S(NfK1E?Wl2z>fVl6y?utRE&}W| zt>AS>Z!PKGCJRwLEs}cqL*YqtkljsW9JNFS#gM8=6{@E6@B^8@6B!9?`;jdeM`S%w z7^M2f#)~)POPrKF@TOaEl^(IqRJ8k?(rQ(%;~Q(pZdR4HzkM*}5A8#O!n%~$3ozAv zSp+E~WuP?AMQIp{h5@4#!J%U9=W6_vmk|rQ*8a)Yg=UXWtl=)X*R))nDbE0{>1sC} zi3b}oQ_gy-p*=7y;~8;*Vsg&o!(K(Tg(5S?F_9x;(dWg+nze~%qYVG1ZQCQ>BVrWm zCgbrp@g}&O_i-eAkQAAU>aoZZ^LGi8+fz|Crw@SDpfkc0VWK?f3xG zVYb*wPj2A$79(=&ksP?KY>3_)MNsFbgoZp(U=hmM+Z-J>}%+69htY7X}bKOmOd1r0d^CYh6 zkBQB&5v1?nR$AD6KH2T(`_;hnHFoIV`AQ~JMXr4&^(BNg4G;8KIVsUIrMGCEUo`x6 zDBTiM=|!;Z|H;4kAs?mR1Cv}yX6P#{-a6G)-w7F}HTsHYE0zx6AZ z!wcPqXUs@YxXSGgBgcMApzWYs{(4;phk|>E#G{#kPjnc&jp8P5dRd#Io%cSDlzlng z{AhE_^Fcf0^47L~W|bhx1W`NADQjZ9_^#>JJqLWyI}W-hkq0E6s__<1CfV(B6ozE( zJLr?-k4))TjV@qH#IO}MH-XI7y14#Ng$jaCb!7|lCfvK)J|dCKLT$lWu_UI}E7S<=H?DX4tYo#>yf;}>4-2VQy4ce1x&>fn_cLn3eO&nO+_?;#i zw3i(aEh-z&FG}jNXpcJU;%eNMLpxwuqSNXSh&yA&BCXUfAl5O1-lUi4G)SO^1AvJ8{+@GSRJ8mE(5q3!94h^DUc zsr=a9_gw?$ad2Y1Y@1POPgkp0oBiG1WTnHx5?6|LX2{D)66f>f*Q3Vti0qrNAay}C zh%T%?SuzH>n4f<2JNj@Wjs3myLa?dyJSMgBp~-2zxiruG5HA*A9SyZ3o746ncVyUB zr9Z2*CPH_g{xc5N=Ya$YwsAI4P-77_@D(ND{awAZNzpRC! z(eUTAy7E#f%{`!3lImU=oT5I-2KlcfRe)kvr*)18JO{+_enyGJRD_@R}L2D0L**u?*Y(60`!x z*<2sS(;}Aop9kT~WKM610cm6BTlwk|U+)g{D~&%Fsa_7j)V9 zo?I!D6`cW;n~ebDKfE{sc?|SEs}5vlp#k}p-i);>Y43kCC8f86fgaowdl#(exa?0o zh;mM=3V@aE?LPTY5VR5d?CZ)Y&I{J5cCqeX&g?_gF^wg&Z)$WD;jO{K9ui@~Hdj^rxlpf z9Eu+P3O8*wP{yh~-`VZhB!;)-!?ezM{Pkr_BHBZ{w@-!UOb)n_)TB0L@!R$q4^>Yg zt;>bDoi{a{o7x`XuVpZjHDA2aLprmWWd^cfhex7inNuk%{;BKUkSPNRtEc zza-iT|4qj1;R2f=m{ty%pat4qAxH1<*`I~r`uXQf{F}ZnzBbL?E6KIDEzbw}X@C#N zQdK%vM`uA8FrT_Nivxp=Zrj&C^?O=byJN0h$xdf%M@MQoomvB}W=kX66ddBUe9fwD zG=Zxh2c-bo4V|&ZKIM9n_)`^Ty5q0Y{YN~TufSD@@_r;b!8MEl1C}aHRpBKE{wkSQ zIh=c10;>R|62RCSfNm0Bdl_HBR>{wi|HTtoJr1wc^QO{l4I2ukOO*7H?i;kX4S{t< zenI9Nbr@Ll1HLM7Ht4ReF#qL6cnM%m2(C;Tv5ykO#EznYgno$G%mvhivr%s5|O;3m_Q=d@j9rT zYC=+-J@Z!C9qD2FHh!8p1Mia)oXnOOdd*t6GCNqwGR4HrC_&H^oZRR-sZgWwTbj=O z!=0~J4*m{FBDybv(RiiULJ8M5fNf!2g8v?bZ9ywSvj^E(?KyeU8p$Pv#OBihHeBq) zWMM6C$^-$WkbF$@6WfF0YWOJteJ?Pwzx{^{VYtxXU5*=%0mBuQ8=O4~|H7anp)cZ$ z0uTYL;eR|;CVIz(@DOTo^{H01+nVI=hAs;DwN^=jbnIcgOo&L};!2Nk`s%D$iVPGF z-3Nh!pIPV&RqHb0$qkHq*0WJgKe|9$%vAx#?8&{GBxOOgn+v9$!DyXFq{9_l3}j&$ z&d&dVqCWKwqHlHG7)>D3`5}eCDySn zn1R>NqJ45w@Wb40!u`1rM)>4RKIuutkTs+!SVgUV+BCcRHQkN{FkVj|Q}5MC3Mh6w zHq@8pA&j~X?ks$7ZG;V$W1NkFy?v_E--yMa(qO^BJ-f7K&pn(Rd3$uAJfnvwb0_wR zLyuKILd9@=@GNM{qZd7Sk-u-9 z8hnG?8;2d;wu~z9aAgbkitRNa%9#yBeR4pCVMhb62fI@{!@pA3E5W?00%W?<-hTeb zXnt3)qF=5{c=xt{7abojDU8~F!9~(O9G!-mPYuQUT>M+?0c<7J0kkeW8M@=vQEew( z3Jk^Ooge`<)yUQmpGz!H$q;p`ONP!rxNL_Lq)f4PIn;yqOnsv6LK4(;LvT2{K9frj zqBc@E=fP>%qJ!Ts7{?Yn?EUC@MxFf87{&VU`;e1_+JXkqJ#_^!$Jz`(KuMcL7A4(R7Tr8loR1EJ1ZJcFSzl1rW%)Y)3T?Hh{Y+D`UZ25Hre|mZ)23 z=Wl5F(bAXYjh_;At^ar)a3P$^*^YQ8^b!ts(*uO9x=(M)8B;j6A{hr~G$o&V`S#Kobn}9sHW#ioMclp98a; z?N6i`F2enDfUyLe6XgzLH1mmH#vs;j-`sffR8soP>rSG!VK=v_O&gI zgI&!CbG+2p&(uogt>UHN#12YvdgE`X)nNc)o6V6+TIQMP3UKQ_JVt1>(J>iPqSw5o z?+EY5cELRrOysYfHWjLEr&{U_Et9 zBS;@k^qwEsaQFI1*C6-l@EV>-A%_bjq|Z;LYt~#;s@{mcg|Mx#-^9i-?KpktZel32 z(5-QS4&VA|)h3GOf{tlZf08is>8S8^?q&-79$^JC!wYKoe{aLtf*jup$hXJNT-thq z)(Dq%Ph&1*{?k|6?SDPU3g3AawK-cX`OAEK_h_JWx)3@`8E8TcN3;gtaqd>)I9R%=94AHMg1-R3lq_ItzhtX zs@2XwqrcU50Cld9()E{=98uN>?4*<3$=&Jt*=I#M{O7hq(}lm5;4h6OgNF|nI1l_6 zSOZEV!`>JL)jmp#pdugA2g`hftMd`HHl+U?F9Zo-Bgz|7Zx>ARx1!(~lYC(WLQmOR zz40Ifkwe8u8-W_PQj1`Y8+I%pQA%r z*ERO#JtRSRZ22YC1jO9e%2sC4vfi;DCsdJw%r=DyR^Cn<`&m`Fj3*l7`Td4y?-+Zs z6UgzNDDO6sj5vhRNUj5?(K9LWv)2Dk({U7ftADVd{InqJrfH}Qm@Mu(yiXBL8bbyw z?__zMDR%Js2D(_v{yv!2Se(Trd>3>SAXH9Jird_GG0ln#^TSz6Tr+5>(N( zG*L>oEKNiITf^bYBsXMoHrI>vMap2IWREM7f_v5aP7n-1SP}|c-T68l-{5b6oZQUb zf#rC0JH@iUu0yFsgt_gUYcWz{k;3Q_5t z>1{sQXG^SX|G3ENOGAg!obXnMX3JO`P61J)J7U5ziV0`Dt9m&jYaHDMJ)zX3JP%2_W^a*-9oD`JjAwe1U9A|N? zw4O7fOfeGURurS}SI&HQ6@p0Qie-4a*@)Vu-C`r>u5{_b4h<+M4v+{Q?{-OAgmi}~ zLkWK=o68b1DM-A};8tm0s9JlmoRkb`vccCm@+a`?|p2m6%3tek1)wAv zSa1w+Vpxe}Ss~B-lFPh#DiUB|{D@SNZW_^wTL~l*mbv>~>f>l!pxaULpKEw=)qg$Nk9XOZYa0G2t^x+V<4bVRsZwaH)l>g+ zt9F(fdeUuY&9`#q67O4N#lp&p4o0I`h;h~8nD%Y!VOXH11nFhZNF(N2!gf2Ki@*^O zc!w+}zr?24dgV{{jW4j06!46QsxD8>kiKy|T2coVzKR{z8^&;gdKBv?RI~VNRYNda zd)o=b)fVYba=_)__Zg#v!mI%ov5u1dFhn?K3pV+x7}eJWa{bmy%>Hz*yG125JBl{T z0y4rsW1Dfw12$(}+o64>v&Oimt))6>O{WYr!WT){=t?B(hyAnkc2uIh(QKd<&(RY> zNdREH$S)4bcXCL_llWl)#TbELpD;y}%(Hwz)JO`&y7M}*jp$IMR>^)-x~3y?#kQP^ z$c3J+)0Pssgf7!`$Mk$@d8#qM*4rFvy%N+&Q#yiMv#F4d3BQkf4N_@4!((sVyXLA8@w)$&@DoMIpDvLKu>k@E ze2;ItOR)VYr@!35`h2SzmE0*5wMysn z(fd+?#wH#rw-_Quw!}dztCp^KPa$TXl$x4!!8kdyIb`7Z2);G;*s!$k2hB1wRa_VD zLZO*yZb{h|?l-ZkHYx|6%csKFL<>S$eM`b+@*Jo~=DBkS9<~utwZeQN3_>#6ibDBh z(U32@O#U79W_03WUP`mW$8Esvj7=er+iRY;>&r?58Ko#pD>E$Xr?&r1Z|5L|iPvYrRTT=WVsg(!euCvC6uvh>(|SH7tMKxFw@ro?p4Rw4=%LsS5< zKo~laFV)s)e+gu{CqsplvDW8X*XChM5EU@t+mm^5Mbh>6UhEIpQ@A*wiD+`Q2-z|S zONfxkB1I4RrBaaeZI2lJ_M0eo*GU!qV(*VJ--mKto&X2g;VD%+EyP{L0Ndhm$N2)@ zI2@>&i&&htvvfk*6q63hz`!xspc-rkJaSlUroULnDQqaKjpBd8hZ zR&>)cMb4Y$Q`5jmi$wFrQsskEI_XfX4Xx1V<-l=$%PRg$K4YQfca@`wZ)KY>t#7zR z+qI!!jbr65+(blavJ|Iuo~_|TQP%kzq7aBXNAJ5cK&)j8siLY`$SR6)f!VbX*~3f7 zgeWP*E|Kk$?fP}XXAkqwHuDeL?c^1`pF;^{`8XPaB8pTIkc0U}??2l2Bms?ki);ul zl+iT($hNQ_uns6rS6qT_rQA|Kd&plh=u(JbTSX8?r4{BJ@R4^ZGQEt&TElM&IPxvc zkK3^PDYTe5Q}q)cqDlYxq$6|)$m+}`AT1@t19>p$o)BBro?_d&5We2LJ-m z3@9|Sp!rdJ9C~I0qG!sA;JC0Td3JRPAT4QnsQAxrb}m34BH@SEleq0|Q$%CIP!sU3 zP#yg1_u(w9Ltmqy4wK$@Uqw>)w<#I+xkOlR!}9dv#%P{}Jajf$ zkjF|z9$Y*37$OMF1;1AeSQL|b z{1V`=?F*gk=fXn$>uMDvErrzMnKEm?^LAahMRhGzZCQ8hwx4=sR`(T+vBZ?-iA{bD zooqvt>;Tiq+6$u+d4@ZInI{80A}?rz9l?SIH)2ny_-7Sb2N~U`OGzqP5EL2a$287qs^)Tk6Pign6p&L3r?iPUgx7>h)9v&@~SOPb{-r0MD2 zyi1~1dG5c=A9oFa%E9hJ70O*dh8>=<$eQZ(@rIlIk5gqD!2G7gPh(pDfc$s%E14!j zV=q|=9U8IYXHRl&Ag0+-iN5C8$E@NSq{tLxNJ_<*klrU z&%PYkh3%PX1`%*lkJcfa5`eA}6IbuGE-`j(HS+d7-4CME>zu-=Bf{J9nw-Xky*a6+ z-frjGlhPmUkSBxmT#Sok?0-t%QxZDoQM=9^OyybOEH4oiFT4OH}G0 zW|fi!1Wk&~2xn~VaLdqPMJ?(fEWE$L?kDvIsTWv#@5l^M_l13M1coUO8J@WrFF*~} ziWP<YSL&H4` zY;+h5Gz`J+{xMb=EQhZz_Nld(z-{WyIlD$S0l&)lKc*NqmOL7K1?5WYv8|>t9-$2= zJSyqL(K!0PS#loR(<@e?JoqmVW@TEi@ijcYp51_dv68EwV)x>l$dUP*?=p_#C(-dW zW+6n1D`{nI?efj${n?}ZpfoCE?WM0VN2rHoo zV)$feiB2O2&55bEm%i#rGIgC#SvLxp-(x z(3rn7h*CL3`eXe-UqPYb^2!CO5rTs1ngpv)ZC{2OtC{TZK2))j1}aZYcxM9MHEA%K znw;~j%t#WRT1`xK#63Kg5+qu&^^o(Lq=QnMqC@D3FwkIbT}m7BtA|k{l~^238-{nC z=D&w9>hz&h!ZS{Z$_X^B$r_F)%_V&?ieS&O5WDPzusU4FPymx4-j~B8MHCIcTDlmz zoE=L#@gS+g|I2{Yb0 z!!*+l7rs=i@5=Pb6HNiYR!zvcW`HybsPvPvBw~s*iF=);Qj+Z(r!?TV8&2LNKQj*v}$m(Blk*sx4?U4jJAG*7c;0tZh4+Nkv>KUs_#>M zynwKqsv`Tq+2zi*hGv)l(_+g0Kc<=GpV)*!aet}vAnFHugLstX!B10$$U^O)DOW1ntiSk|P0Jp4= zbq5lPxLxa^BWU*>Dc+GIETYL?}JzTo0TzpJGW^&JuRyKiPM=MQjNOf8|6KC3uevYbXv{B+CJ&+%ab}zG91B`AQ z@m-9XDp>rrXCw4OAZR))ggBjWiSLSdj`2ib=-tl@f8R})F>Dxr2;#wkaEDXEx%lmOH z5&H8~CAtDG>y?w&BRTH%0~Nc1^>O2MmDhKjhXPO07YMAE@;o~DQ2hk2FIIiE!00KF zR(yU@MZ(QtWlU)QWkn$Y0ZfN<$h1>>8fSnQRp?Bh`yKYCS<)gt@K3XM6Nom=&cS`@lrzBt3}9YIYsUE(7NkU)jgc#&y+gs)5*$D(>e#e;A$DbNj?Mc68a=3y{JMEPkYd(+8Zt;6>Uq zd_3>Bf9v^Qtd^V}{Y-MP`=!yB7RX-R-R`Cmx0Qg!dex|^!u;T%p=xr|Gp8}5{Ta+*?937 z;X{&jYf)|;yR*&}=#6`$?Fw3VuSCir4w_}pM9c1<68VFYJJml5rZAE zx}^{)x&s6Z0UhN@-Rk8i(9Te86PiarGUl>G?}sO@j4~}qx-`G=-tB$#mYbGV-jkue z{0|4qOsIj+#}y`c2odKwRfZ2oC$aVBPS)feYRr%j@1LPP<-V~m*ROxnXqtqF!Y&iO zlCKrt0TR|5+qfMR&&LQJt?6h8zf&EHX?9*P&Imdf-s>Z$w#%@GJr7V!8a0;Md8zsw z4|TIErPwz{FO;Hu%t;@f_qk_widh?WO1VD!yngw2yx8|RC_W!w3N5DNhn2@4h9>1o^SqS8rFL|ybgPDlmv$-+SFM& zFXM%s^oT-tGNSa0vC#wK_GL1`E0YdrhI)DPm%nlIZa-Ni-hKw*~C4QMvrB z4Xxs*%gvPiM=(<)qX^f=1Gd%^7aZTu%>*_zhHTIcS^&fNWqoXEtuO)i42qf61dG%FEM z5(B^EX(RN)*ElYUhn+=tlsP4JwX}U&$I}^FoDy%j&Cxe;%v>I=I)D7pls9=Bo1gH7 z1p%ppm7S^wKOy5Y?EM3kV6f=uYD<^9q`mE!lsK!@-?&b+ttmB?4nJ&zYLVLHqYCyI(&J5ZU6o;|9a7$ z&@|e$4lCH-fzy%~OFxh<=&P&FU)UEh5wZJyIO4E4wKl#xjb1tddULA0$%DeZjDSqnXc64h?IR+l<+AFuT@!0~16jU$1qnVNJ2l{~?cc=rf@m$ZR)Q z&W?54av*}TKOti+XOH)^SQ9h6A^CizHG#%VulD zqL|#9^9|Ih;!__MpH}{6d3T?j)*Jjf^m0xi-dXaUHxx`6_`5w{dTCdcI`s%GZEf1= zVU3MRKoFuFDti~Ezuywgx>m6c6`YoSMQCV;_KbukvKWPmsTLYNmCcQ0{lOG|bfnPP zqU*`wFg6J8?94pFmNR1T8wyax(N^;EVv?I%cN1mEGU8rR{=Bj~iX^S$HJ6Gs7ZbV=hF7N#Z_rv`I z=j`+BbM}7rTI(z_G^G}9L9;*Jzt1rru~U!RxDK_@Xi8E(;R$+#Omq&uWbT0`x)B)SDNFZobE(jGY{I3MbVf z3G29FiUEJuwGf84-wtMc>-;KJ(h;<3R2gJVl2Xt{Sp8A(9mr*R@0dtZFUZ2m*UIjj z?}Q)FAA3#md$;dtp~u8_P(7TJJEx|Q>mv!U9<;8hRBVyOK-ruqTM{|U`4dkG?j6U$ zk>#qNoM(d%I46G8F1RYSYNMu#bs!4!uR&m9PsPb8`hHM@{P|NcjJToy-v57 z;+sDM*dk_9-1d!HkDnZFoEMUPVM!oOsMlwiwh7wDT`iV zijIsZE9C85w0gZ2;uMCJqo_k9dc_vDf=ysEc0QA}ac5K4{b3`JKf(+DQuOa=LrS+e z%#i;!R8`z$JN^er)%Rs(6o%+Va{Z}HbKIskJ}u^RK|KSq208c(K(G(X&?Ya~{Pn=E z)qp=%k%(6W!Y_Bc;_lmPYg`9MY7>O(a^6J0|8o6Tb>ENSRe0Zr{>{@4ZMN^dRP6AP z)r0yvtM7tw3wI|>+*NnwdF`L%)m64L5SSR?1{VCW8@z1yWT{NVIp8)GmJVsVYFkS% z|HH2xi%-T?O=@rC0^&Y@gwlVUz3A$ zX~`Yu%gPuE`EoMfD02@jLmoFu(}l037@tv}YoZU$o^?Eur*@^$1_`8YJE^g|(H$5< zV%)+26)W1>0OpsXIWmwZRh00zB!NL$_DKzjxN+WO4R>xLIfzr7WA3lBo{S_|{Nh8> zo?oVuRnTWrV@Uw~c*zY!wyx7RL-SjO`?B2ju&L(LBVj_%^NbSSTHsvutI^&P0MQG2 zQljb0aC>4`d_gHB9S)1s7$eSVYXq@cXl&Ir>`Z9xo*;Csw+Tu5cf6$4rR*vvy|Ih? zdq;7+#{{RV2{A?&?-t`eHg6h9$=F(AKJO)!lcy zfJH3h5^qeo&=UPCFO3DIZo-;Z8%227>ML$sO$gmM*u^~Q!oJVi_3wrAReC}Bnl|)$ zX1umAhXIWp6O5v?l@xE0l91=1iYe7cQE!v8ecoQiEY3LQ>$W$O5(4Q>i@Ky5Ic`PI znx#QANYX#|++L$uv=q*GLTNiOI#Kj{!e^(1VbM~}HC;37r{39z-;d`k(a0M*GmU_? z49%Q4son3B$QS~n1(mX-@LgAJqRf>1Fq+TA$sf&5gi*=-U?j{;#02>f?-f>^Su1y> z>je&+`|_`*N$c3A<9@$mY*w=?->DJf83vBd`q7n3MjUsIj?q1M2aJ3Rj;nf>y^)qP zfcqC3Hy7qB_ANG)78E46T4-KYU|DrIn`qxEU2>*9d7;nJeDMeWV~nq65Bp$`$>5## ziJVgM1xtQxnxPb9f?AJu(_1PkYIpMJKV=fN@xqumf=|cqpb@8fL1G%^S=q^Eph#0f z_E(8mc2(p94+THv9GYtK->qC7;gM*|g#vf$(s?~Q>1VXjF=BzwToizePd@VJ2BXnd z9ilh0j-boqjOCw}nQ+Fxi)s>l#n5cIPK*If3LSR0IQ@~BDa#f7<2}VO?lPat3HeoQ zsZ7;Lc!gj172^aDhc!^Xq$E=wwdU0pKSb1MrZy+1;UHS){nx7LTmLd76UFAf0wi$1-K1I3gsV;TzFQe2CaZBl}}= zhK@#=6eAId{*&4KGmia@S0h~W&}Ygt2QfbKgR~kp?M6SqF|JokTcOHa7+U5i2Aiir`qDu869rQnf61M?>DJ^O_2p&hX^B%KX zVk>65tGT;wUg>IadPCWw~=kd0n2Pyw|DVoJ$5byVld5W5^R;Z^0wIDK+e*pe79w z5{Hq-^5>eO<1Wq?G%b3ppF|ZChA*g9@I(JFcZEi`6D&wi2ZS1^*AwE z45YB^7D*Mk=4w-0E8uG=3J-zm5!XUfCo=v{m21{Bl$qt|CWrEgyAuROdvMoVh07dL5ACs{Q02qj_n`z60qB|aqz1~#3v|tRFPJBqD7(l z3k&JyxAoe($X%8_3#-HpYmzrYY$or}pR?|O7yxsI?OBzUnTlSC%J6J^fijDc?PEcG z&d*#GHFY?TNaT-Mo^3FTYJt+UkpZJ1md}fTo>yso3m%)obrXnrE#)@Y7x z&l_KAwbdJX60TsN>R08OOCdU5%04+eQ3I(xEiOc^@O#*VUl>s`*12b#X>egL-t9m> zB-S({5^R5;h#PAzdm;LpPs)sI_Lv%k<`}pb=0C9{#kFF}f++3@P`nA~2z`Nit^y^> zwCZW{bhKfAb{WKGQ?y*|FgI9&MLzed-csc=+;7j$oH@8b#(~c+2gHDkztPsVJ8vJ} z9SC@SV1gM6N08W<{vn^Y)Vo=XFp8cG-MO(fJa|GS;i0>)F}edknqTxCIi~le&z` zQd8cF*5b=}v6?JYAT6MmJSMF7rhC$MF1b()YU5eg`3O#1Y@iyW-+n{ZT0=m^iQqij zIyw1jMCXdpmF*C|fZrv{EpGp`3{i8QF&&6oXx*AV?2p1En;hwdmxfu|7S<3Mu4yC7 z=IYc`4RazPpoKay#hHmUBWWatU*rAEqI|V>=T8!B^z7|RkdeKOu7ksNMN2a}Kc|C6 z)PQ8vez!Q-kcRD6;rGE=hus}7kwN5he1QOfkx6IvGW-^NM&EsE_R9O75A)RiNgJv$ z9XYYIp$kjdn@HQ0z^hF=Kl}0+KfXe{(AFVuW-j!3m6td*?B7N}F;2$z*`Xmkwr>Kf z4$=u64v0-I#=daLpagTMe)HM7B!>>WL zRZHz>*mNF=mF|%&YUR#EbSt8b!#mgDKoo%-w5mSJbQ&+#g!J_EnMudomZ%g|MrN7dfqjJdaV@VbqH=KJ1 z7b+O(6B4*H#^u{C1A<$IGR}ea5Bt9~O+f$s!dB}FDxz}Y&Tn)txOw%qGVaFv6(WC? zz9bYYa>~YTl53*t1N>AsDVm3z&Cf%uL*)UJ3fV;CQe~*jfNTBn4Phx3xCO_gz?^Of zmIuLuqoS>lU{!8d>kcOk5V~sDurFtf&hBbcM0Z8apPYGtyPP_dRc3h;B%YynF@RAz zTB>}f-`xhR#eNT7SP{HW^g;gQ2Y0^Y(0e8U-_cK4Rb`y3R|OSZ@p986A1O|g`UM0o z?jfe#c_A>u4b3()*LWHWW-*Ud^{n?#9~&^g*tm2Ek^n)vJDp5N@nF< z>2L?b4R@?vtbe@@Wrh)NyR!%3qGx#}0UBxx;>_qy{_~t)_Rpg0K9Jy?K~# zT3?=yiHVujuA}-*D5+k&7l@7o^S7QptbGk$X@`-S5i(cXEo;s|(GSbwM@knTDZWkr zZh$*Ui|pd#=O zE|@5YMVWRJYsFUH6vpSd%GmKf3c1v%-R&P__1&R2s@^F2CRpqRU@~G~v0H+MK3y6hTq3hWN>s2!-|q%| zU$!1=64}({#O2x&XY1~ti>rowsSFZd?$AkH^rt4|xBMNvg!`dT@*%RV*d6_biqQls zxvO~VZym74+@nY*Ng6(hCWjjzO)u~`5K2%lN>GoD!U}GA`{nY3H_X4U`+kPcYn>s& z?nmApS0bPl3XU*Xp?WOXYn74gACB$QMV8ZM3rCCS86I`EXdC zU9QycN3MwLTbXKF1GlRDAA^U-O+_^Fl`m9HEr>aVh^#TWYxan~t_?NtcN(zC9fQtz zFS{H}hlMDU9~#Sz?hH8$6nQlEq!UHPi_n*=*>rtn+0U_0=7iPkD%<^ti5*+xhS%Au zy&dZ%4Q;ML^p<(Lm7L@!a(OJnA_Ileo`F25&A~}wbrrET>#0__=XDjV89f8hKFV(d zVYbEsy#GwXmr|1khD!t<#_gVVhiqT}n{=#MtJ?|zYUrCze|>Jm4g_y@Z`atlT22}d zOrj9ONF{oY3etI2BmshHgN1CcpoWb15_YJx?-~H%PVV3Gjtt&`QGK;=5)i$d)yomt z8amgd{-W@)ZCiHK(2yjR7;Zn;kJY>`2!?off#A!TS<7Pnuc3Sz@M70oB5G?_RE?;a*~61G(Z;T@m*MdZH$snsAp4L{~4&3w<;PFiA7crzYB19cr z@;Y8_r+lcnl_lw}`D77jNudxik=@Nif=+DGslF_}ZE8F*J1zXj{b50k@ZkoQqxKM) zYFyfFuQ{J{i7aZIle?xoptdFl*cw<;{`HM6YTZ3;^GUa7;X}Vk3_hMf<2?xi@G=B< zIE}uu_#>bb%{N(GS^Ybl)@ek#Qg69!fFW58OfqCx)YI$2q=fPln?uhm5>V~El3be3 zF^{@nNS-hra8`^pQb487yra7;r5JG`%)xV@BnDVy1x$Z;G_JhI_gEI_G=GCkm1WUC zw4wXmS5X%bmU&OeSb<>^;7@^cQY#W`nF#I$e=AqN#y*yVH$E4n(v)X~^HM;^T?i11 zqdaje=HB2BP&+?O-fh>c< zc*UoO^hPodZ@zNStNQ*66Y?Y^HX`~`qHa5h7_^LhGSQP#@!F zO|Nh2GxrP5M@|}KsDn|rww{nCVaXpJ{?Mcq8Kbc1`jSnl<;6R37R8f%Dh%VMk(K%< zF9kh^yb+)9L@cVsFIU&4N7NQ1Az2)#LgD+_ z;F6z0MW8{6xN4(r513cm`pFEXYUT6~io>~nTTfx6B}6h%T-k~JdarMdSmb4OVHIx z?_;)Mc)dNOujjiEO12~_ARFtj)4IDEo%3}psBt97ooyYA_v`JKA;0(4FE87_9vMl0 z51PI#TJL*HH1oR#Y?INdDP<6h0m+f2H<4bXyh{e<`t%87Ng1mfZyj@Y6h59TRM1wu zbFjOaJt}a`WfmQ;eAdVxz*;+ce z7p)tTw3YS&(`0OJe~^A=p+~XuO{P8V{wYn4q>R*Q4D~)Q>e$U?-!gRVHAC-X)>N3T z*XZywk~H@k&&>YF^6|mq!`zF1knO@A^S*NA$x_{X<`Td13QKR1txaA_Kau}E-N;UF z}_Nd@KmPd)J@GAAJyW1HH|?$Muvj@6BexRYo5)cd~F`_-spS9-Q)8GVMN1)L*T=voe>uY0Uw~F(xk?{pI&ZfN1;Q6M*|@;*?k38mE43V=eHCWpfwx_C#r znAllw?Q*~E6z81p{_Bque~HKLaDi1Q*3|XZtP#Ea-Ut0w_7PG`VGJklvgd1dIu%@Ub#a?BJX7Q2*Nx2x$mJ1*^ja}|1R)=J4Vtiv8$kotL2sflbO>$xT?hsO zuY+Alx)(6`Z%|>0ptQfJN+lq2Q~l089zy4B)UX4LKEKP>ou21e(zDC+-0;~l@Bh{E j`2XOe{3aXi30VC`rN0&MDDi9u{X#`SL%vehEckx_MeJN* literal 0 HcmV?d00001 diff --git a/vendor/github.com/docker/docker/hack/generate-authors.sh b/vendor/github.com/docker/docker/hack/generate-authors.sh new file mode 100755 index 000000000000..680bdb7b3f74 --- /dev/null +++ b/vendor/github.com/docker/docker/hack/generate-authors.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -e + +cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." + +# see also ".mailmap" for how email addresses and names are deduplicated + +{ + cat <<-'EOH' + # This file lists all individuals having contributed content to the repository. + # For how it is generated, see `hack/generate-authors.sh`. + EOH + echo + git log --format='%aN <%aE>' | LC_ALL=C.UTF-8 sort -uf +} > AUTHORS diff --git a/vendor/github.com/docker/docker/integration-cli/fixtures/https/ca.pem b/vendor/github.com/docker/docker/integration-cli/fixtures/https/ca.pem new file mode 120000 index 000000000000..70a3e6ce54d6 --- /dev/null +++ b/vendor/github.com/docker/docker/integration-cli/fixtures/https/ca.pem @@ -0,0 +1 @@ +../../../integration/testdata/https/ca.pem \ No newline at end of file diff --git a/vendor/github.com/docker/docker/integration-cli/fixtures/https/client-cert.pem b/vendor/github.com/docker/docker/integration-cli/fixtures/https/client-cert.pem new file mode 120000 index 000000000000..458882026e45 --- /dev/null +++ b/vendor/github.com/docker/docker/integration-cli/fixtures/https/client-cert.pem @@ -0,0 +1 @@ +../../../integration/testdata/https/client-cert.pem \ No newline at end of file diff --git a/vendor/github.com/docker/docker/integration-cli/fixtures/https/client-key.pem b/vendor/github.com/docker/docker/integration-cli/fixtures/https/client-key.pem new file mode 120000 index 000000000000..d5f6bbee571d --- /dev/null +++ b/vendor/github.com/docker/docker/integration-cli/fixtures/https/client-key.pem @@ -0,0 +1 @@ +../../../integration/testdata/https/client-key.pem \ No newline at end of file diff --git a/vendor/github.com/docker/docker/integration-cli/fixtures/https/server-cert.pem b/vendor/github.com/docker/docker/integration-cli/fixtures/https/server-cert.pem new file mode 120000 index 000000000000..c18601067aa7 --- /dev/null +++ b/vendor/github.com/docker/docker/integration-cli/fixtures/https/server-cert.pem @@ -0,0 +1 @@ +../../../integration/testdata/https/server-cert.pem \ No newline at end of file diff --git a/vendor/github.com/docker/docker/integration-cli/fixtures/https/server-key.pem b/vendor/github.com/docker/docker/integration-cli/fixtures/https/server-key.pem new file mode 120000 index 000000000000..48b9c2df6586 --- /dev/null +++ b/vendor/github.com/docker/docker/integration-cli/fixtures/https/server-key.pem @@ -0,0 +1 @@ +../../../integration/testdata/https/server-key.pem \ No newline at end of file diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE new file mode 100644 index 000000000000..5d80670bc0f8 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE @@ -0,0 +1,191 @@ + + Apache License + Version 2.0, January 2004 + http://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 2014-2018 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 + + http://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. diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD new file mode 100644 index 000000000000..2ee8768d3156 --- /dev/null +++ b/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD @@ -0,0 +1,27 @@ +Copyright (c) 2014-2018 The Docker & Go Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/docker/docker/pkg/term/ascii.go b/vendor/github.com/docker/docker/pkg/term/ascii.go index f5262bccf5f3..87bca8d4acdb 100644 --- a/vendor/github.com/docker/docker/pkg/term/ascii.go +++ b/vendor/github.com/docker/docker/pkg/term/ascii.go @@ -1,4 +1,4 @@ -package term +package term // import "github.com/docker/docker/pkg/term" import ( "fmt" @@ -59,7 +59,7 @@ next: return nil, fmt.Errorf("Unknown character: '%s'", key) } } else { - codes = append(codes, byte(key[0])) + codes = append(codes, key[0]) } } return codes, nil diff --git a/vendor/github.com/docker/docker/pkg/term/proxy.go b/vendor/github.com/docker/docker/pkg/term/proxy.go index e648eb81208f..da733e58484c 100644 --- a/vendor/github.com/docker/docker/pkg/term/proxy.go +++ b/vendor/github.com/docker/docker/pkg/term/proxy.go @@ -1,4 +1,4 @@ -package term +package term // import "github.com/docker/docker/pkg/term" import ( "io" @@ -34,6 +34,10 @@ func NewEscapeProxy(r io.Reader, escapeKeys []byte) io.Reader { func (r *escapeProxy) Read(buf []byte) (int, error) { nr, err := r.r.Read(buf) + if len(r.escapeKeys) == 0 { + return nr, err + } + preserve := func() { // this preserves the original key presses in the passed in buffer nr += r.escapeKeyPos diff --git a/vendor/github.com/docker/docker/pkg/term/tc.go b/vendor/github.com/docker/docker/pkg/term/tc.go index 6d2dfd3a8a2a..01bcaa8abb18 100644 --- a/vendor/github.com/docker/docker/pkg/term/tc.go +++ b/vendor/github.com/docker/docker/pkg/term/tc.go @@ -1,7 +1,6 @@ // +build !windows -// +build !solaris !cgo -package term +package term // import "github.com/docker/docker/pkg/term" import ( "syscall" diff --git a/vendor/github.com/docker/docker/pkg/term/tc_solaris_cgo.go b/vendor/github.com/docker/docker/pkg/term/tc_solaris_cgo.go deleted file mode 100644 index 50234affc0a2..000000000000 --- a/vendor/github.com/docker/docker/pkg/term/tc_solaris_cgo.go +++ /dev/null @@ -1,65 +0,0 @@ -// +build solaris,cgo - -package term - -import ( - "syscall" - "unsafe" - - "golang.org/x/sys/unix" -) - -// #include -import "C" - -// Termios is the Unix API for terminal I/O. -// It is passthrough for unix.Termios in order to make it portable with -// other platforms where it is not available or handled differently. -type Termios unix.Termios - -// MakeRaw put the terminal connected to the given file descriptor into raw -// mode and returns the previous state of the terminal so that it can be -// restored. -func MakeRaw(fd uintptr) (*State, error) { - var oldState State - if err := tcget(fd, &oldState.termios); err != 0 { - return nil, err - } - - newState := oldState.termios - - newState.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON | unix.IXANY) - newState.Oflag &^= unix.OPOST - newState.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN) - newState.Cflag &^= (unix.CSIZE | unix.PARENB) - newState.Cflag |= unix.CS8 - - /* - VMIN is the minimum number of characters that needs to be read in non-canonical mode for it to be returned - Since VMIN is overloaded with another element in canonical mode when we switch modes it defaults to 4. It - needs to be explicitly set to 1. - */ - newState.Cc[C.VMIN] = 1 - newState.Cc[C.VTIME] = 0 - - if err := tcset(fd, &newState); err != 0 { - return nil, err - } - return &oldState, nil -} - -func tcget(fd uintptr, p *Termios) syscall.Errno { - ret, err := C.tcgetattr(C.int(fd), (*C.struct_termios)(unsafe.Pointer(p))) - if ret != 0 { - return err.(syscall.Errno) - } - return 0 -} - -func tcset(fd uintptr, p *Termios) syscall.Errno { - ret, err := C.tcsetattr(C.int(fd), C.TCSANOW, (*C.struct_termios)(unsafe.Pointer(p))) - if ret != 0 { - return err.(syscall.Errno) - } - return 0 -} diff --git a/vendor/github.com/docker/docker/pkg/term/term.go b/vendor/github.com/docker/docker/pkg/term/term.go index 4f59d8d9389c..0589a955194b 100644 --- a/vendor/github.com/docker/docker/pkg/term/term.go +++ b/vendor/github.com/docker/docker/pkg/term/term.go @@ -2,7 +2,7 @@ // Package term provides structures and helper functions to work with // terminal (state, sizes). -package term +package term // import "github.com/docker/docker/pkg/term" import ( "errors" diff --git a/vendor/github.com/docker/docker/pkg/term/term_windows.go b/vendor/github.com/docker/docker/pkg/term/term_windows.go index c0332c3cdbfa..a3c3db131574 100644 --- a/vendor/github.com/docker/docker/pkg/term/term_windows.go +++ b/vendor/github.com/docker/docker/pkg/term/term_windows.go @@ -1,6 +1,4 @@ -// +build windows - -package term +package term // import "github.com/docker/docker/pkg/term" import ( "io" @@ -23,14 +21,7 @@ type Winsize struct { Width uint16 } -const ( - // https://msdn.microsoft.com/en-us/library/windows/desktop/ms683167(v=vs.85).aspx - enableVirtualTerminalInput = 0x0200 - enableVirtualTerminalProcessing = 0x0004 - disableNewlineAutoReturn = 0x0008 -) - -// vtInputSupported is true if enableVirtualTerminalInput is supported by the console +// vtInputSupported is true if winterm.ENABLE_VIRTUAL_TERMINAL_INPUT is supported by the console var vtInputSupported bool // StdStreams returns the standard streams (stdin, stdout, stderr). @@ -40,8 +31,8 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) { var emulateStdin, emulateStdout, emulateStderr bool fd := os.Stdin.Fd() if mode, err := winterm.GetConsoleMode(fd); err == nil { - // Validate that enableVirtualTerminalInput is supported, but do not set it. - if err = winterm.SetConsoleMode(fd, mode|enableVirtualTerminalInput); err != nil { + // Validate that winterm.ENABLE_VIRTUAL_TERMINAL_INPUT is supported, but do not set it. + if err = winterm.SetConsoleMode(fd, mode|winterm.ENABLE_VIRTUAL_TERMINAL_INPUT); err != nil { emulateStdin = true } else { vtInputSupported = true @@ -53,31 +44,24 @@ func StdStreams() (stdIn io.ReadCloser, stdOut, stdErr io.Writer) { fd = os.Stdout.Fd() if mode, err := winterm.GetConsoleMode(fd); err == nil { - // Validate disableNewlineAutoReturn is supported, but do not set it. - if err = winterm.SetConsoleMode(fd, mode|enableVirtualTerminalProcessing|disableNewlineAutoReturn); err != nil { + // Validate winterm.DISABLE_NEWLINE_AUTO_RETURN is supported, but do not set it. + if err = winterm.SetConsoleMode(fd, mode|winterm.ENABLE_VIRTUAL_TERMINAL_PROCESSING|winterm.DISABLE_NEWLINE_AUTO_RETURN); err != nil { emulateStdout = true } else { - winterm.SetConsoleMode(fd, mode|enableVirtualTerminalProcessing) + winterm.SetConsoleMode(fd, mode|winterm.ENABLE_VIRTUAL_TERMINAL_PROCESSING) } } fd = os.Stderr.Fd() if mode, err := winterm.GetConsoleMode(fd); err == nil { - // Validate disableNewlineAutoReturn is supported, but do not set it. - if err = winterm.SetConsoleMode(fd, mode|enableVirtualTerminalProcessing|disableNewlineAutoReturn); err != nil { + // Validate winterm.DISABLE_NEWLINE_AUTO_RETURN is supported, but do not set it. + if err = winterm.SetConsoleMode(fd, mode|winterm.ENABLE_VIRTUAL_TERMINAL_PROCESSING|winterm.DISABLE_NEWLINE_AUTO_RETURN); err != nil { emulateStderr = true } else { - winterm.SetConsoleMode(fd, mode|enableVirtualTerminalProcessing) + winterm.SetConsoleMode(fd, mode|winterm.ENABLE_VIRTUAL_TERMINAL_PROCESSING) } } - if os.Getenv("ConEmuANSI") == "ON" || os.Getenv("ConsoleZVersion") != "" { - // The ConEmu and ConsoleZ terminals emulate ANSI on output streams well. - emulateStdin = true - emulateStdout = false - emulateStderr = false - } - // Temporarily use STD_INPUT_HANDLE, STD_OUTPUT_HANDLE and // STD_ERROR_HANDLE from syscall rather than x/sys/windows as long as // go-ansiterm hasn't switch to x/sys/windows. @@ -183,9 +167,9 @@ func SetRawTerminalOutput(fd uintptr) (*State, error) { return nil, err } - // Ignore failures, since disableNewlineAutoReturn might not be supported on this + // Ignore failures, since winterm.DISABLE_NEWLINE_AUTO_RETURN might not be supported on this // version of Windows. - winterm.SetConsoleMode(fd, state.mode|disableNewlineAutoReturn) + winterm.SetConsoleMode(fd, state.mode|winterm.DISABLE_NEWLINE_AUTO_RETURN) return state, err } @@ -215,7 +199,7 @@ func MakeRaw(fd uintptr) (*State, error) { mode |= winterm.ENABLE_INSERT_MODE mode |= winterm.ENABLE_QUICK_EDIT_MODE if vtInputSupported { - mode |= enableVirtualTerminalInput + mode |= winterm.ENABLE_VIRTUAL_TERMINAL_INPUT } err = winterm.SetConsoleMode(fd, mode) diff --git a/vendor/github.com/docker/docker/pkg/term/termios_bsd.go b/vendor/github.com/docker/docker/pkg/term/termios_bsd.go index c47341e8731e..48b16f52039c 100644 --- a/vendor/github.com/docker/docker/pkg/term/termios_bsd.go +++ b/vendor/github.com/docker/docker/pkg/term/termios_bsd.go @@ -1,6 +1,6 @@ -// +build darwin freebsd openbsd +// +build darwin freebsd openbsd netbsd -package term +package term // import "github.com/docker/docker/pkg/term" import ( "unsafe" diff --git a/vendor/github.com/docker/docker/pkg/term/termios_linux.go b/vendor/github.com/docker/docker/pkg/term/termios_linux.go index 3e25eb7a4131..6d4c63fdb75e 100644 --- a/vendor/github.com/docker/docker/pkg/term/termios_linux.go +++ b/vendor/github.com/docker/docker/pkg/term/termios_linux.go @@ -1,4 +1,4 @@ -package term +package term // import "github.com/docker/docker/pkg/term" import ( "golang.org/x/sys/unix" @@ -29,6 +29,8 @@ func MakeRaw(fd uintptr) (*State, error) { termios.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN) termios.Cflag &^= (unix.CSIZE | unix.PARENB) termios.Cflag |= unix.CS8 + termios.Cc[unix.VMIN] = 1 + termios.Cc[unix.VTIME] = 0 if err := unix.IoctlSetTermios(int(fd), setTermios, termios); err != nil { return nil, err diff --git a/vendor/github.com/docker/docker/pkg/term/windows/ansi_reader.go b/vendor/github.com/docker/docker/pkg/term/windows/ansi_reader.go index 29d396318727..1d7c452cc845 100644 --- a/vendor/github.com/docker/docker/pkg/term/windows/ansi_reader.go +++ b/vendor/github.com/docker/docker/pkg/term/windows/ansi_reader.go @@ -1,6 +1,6 @@ // +build windows -package windowsconsole +package windowsconsole // import "github.com/docker/docker/pkg/term/windows" import ( "bytes" diff --git a/vendor/github.com/docker/docker/pkg/term/windows/ansi_writer.go b/vendor/github.com/docker/docker/pkg/term/windows/ansi_writer.go index 256577e1f27f..7799a03fc59e 100644 --- a/vendor/github.com/docker/docker/pkg/term/windows/ansi_writer.go +++ b/vendor/github.com/docker/docker/pkg/term/windows/ansi_writer.go @@ -1,6 +1,6 @@ // +build windows -package windowsconsole +package windowsconsole // import "github.com/docker/docker/pkg/term/windows" import ( "io" diff --git a/vendor/github.com/docker/docker/pkg/term/windows/console.go b/vendor/github.com/docker/docker/pkg/term/windows/console.go index 4bad32ea78cd..527401975805 100644 --- a/vendor/github.com/docker/docker/pkg/term/windows/console.go +++ b/vendor/github.com/docker/docker/pkg/term/windows/console.go @@ -1,6 +1,6 @@ // +build windows -package windowsconsole +package windowsconsole // import "github.com/docker/docker/pkg/term/windows" import ( "os" diff --git a/vendor/github.com/docker/docker/pkg/term/windows/windows.go b/vendor/github.com/docker/docker/pkg/term/windows/windows.go index c02a93a03f14..3e5593ca6a68 100644 --- a/vendor/github.com/docker/docker/pkg/term/windows/windows.go +++ b/vendor/github.com/docker/docker/pkg/term/windows/windows.go @@ -2,14 +2,14 @@ // When asked for the set of standard streams (e.g., stdin, stdout, stderr), the code will create // and return pseudo-streams that convert ANSI sequences to / from Windows Console API calls. -package windowsconsole +package windowsconsole // import "github.com/docker/docker/pkg/term/windows" import ( "io/ioutil" "os" "sync" - ansiterm "github.com/Azure/go-ansiterm" + "github.com/Azure/go-ansiterm" "github.com/sirupsen/logrus" ) diff --git a/vendor/github.com/docker/docker/pkg/term/winsize.go b/vendor/github.com/docker/docker/pkg/term/winsize.go index f58367fe6604..a19663ad834b 100644 --- a/vendor/github.com/docker/docker/pkg/term/winsize.go +++ b/vendor/github.com/docker/docker/pkg/term/winsize.go @@ -1,30 +1,20 @@ -// +build !solaris,!windows +// +build !windows -package term +package term // import "github.com/docker/docker/pkg/term" import ( - "unsafe" - "golang.org/x/sys/unix" ) // GetWinsize returns the window size based on the specified file descriptor. func GetWinsize(fd uintptr) (*Winsize, error) { - ws := &Winsize{} - _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(unix.TIOCGWINSZ), uintptr(unsafe.Pointer(ws))) - // Skipp errno = 0 - if err == 0 { - return ws, nil - } + uws, err := unix.IoctlGetWinsize(int(fd), unix.TIOCGWINSZ) + ws := &Winsize{Height: uws.Row, Width: uws.Col, x: uws.Xpixel, y: uws.Ypixel} return ws, err } // SetWinsize tries to set the specified window size for the specified file descriptor. func SetWinsize(fd uintptr, ws *Winsize) error { - _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, uintptr(unix.TIOCSWINSZ), uintptr(unsafe.Pointer(ws))) - // Skipp errno = 0 - if err == 0 { - return nil - } - return err + uws := &unix.Winsize{Row: ws.Height, Col: ws.Width, Xpixel: ws.x, Ypixel: ws.y} + return unix.IoctlSetWinsize(int(fd), unix.TIOCSWINSZ, uws) } diff --git a/vendor/github.com/docker/docker/pkg/term/winsize_solaris_cgo.go b/vendor/github.com/docker/docker/pkg/term/winsize_solaris_cgo.go deleted file mode 100644 index 39c1d3207cef..000000000000 --- a/vendor/github.com/docker/docker/pkg/term/winsize_solaris_cgo.go +++ /dev/null @@ -1,42 +0,0 @@ -// +build solaris,cgo - -package term - -import ( - "unsafe" - - "golang.org/x/sys/unix" -) - -/* -#include -#include -#include - -// Small wrapper to get rid of variadic args of ioctl() -int my_ioctl(int fd, int cmd, struct winsize *ws) { - return ioctl(fd, cmd, ws); -} -*/ -import "C" - -// GetWinsize returns the window size based on the specified file descriptor. -func GetWinsize(fd uintptr) (*Winsize, error) { - ws := &Winsize{} - ret, err := C.my_ioctl(C.int(fd), C.int(unix.TIOCGWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws))) - // Skip retval = 0 - if ret == 0 { - return ws, nil - } - return ws, err -} - -// SetWinsize tries to set the specified window size for the specified file descriptor. -func SetWinsize(fd uintptr, ws *Winsize) error { - ret, err := C.my_ioctl(C.int(fd), C.int(unix.TIOCSWINSZ), (*C.struct_winsize)(unsafe.Pointer(ws))) - // Skip retval = 0 - if ret == 0 { - return nil - } - return err -} diff --git a/vendor/github.com/docker/docker/project/CONTRIBUTING.md b/vendor/github.com/docker/docker/project/CONTRIBUTING.md new file mode 120000 index 000000000000..44fcc6343937 --- /dev/null +++ b/vendor/github.com/docker/docker/project/CONTRIBUTING.md @@ -0,0 +1 @@ +../CONTRIBUTING.md \ No newline at end of file diff --git a/vendor/github.com/docker/go-units/CONTRIBUTING.md b/vendor/github.com/docker/go-units/CONTRIBUTING.md deleted file mode 100644 index 9ea86d784eca..000000000000 --- a/vendor/github.com/docker/go-units/CONTRIBUTING.md +++ /dev/null @@ -1,67 +0,0 @@ -# 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 - -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`. diff --git a/vendor/github.com/docker/go-units/MAINTAINERS b/vendor/github.com/docker/go-units/MAINTAINERS deleted file mode 100644 index 477be8b214bf..000000000000 --- a/vendor/github.com/docker/go-units/MAINTAINERS +++ /dev/null @@ -1,27 +0,0 @@ -# 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" diff --git a/vendor/github.com/docker/go-units/README.md b/vendor/github.com/docker/go-units/README.md deleted file mode 100644 index 4f70a4e1345f..000000000000 --- a/vendor/github.com/docker/go-units/README.md +++ /dev/null @@ -1,16 +0,0 @@ -[![GoDoc](https://godoc.org/github.com/docker/go-units?status.svg)](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. - -go-units is licensed under the Apache License, Version 2.0. -See [LICENSE](LICENSE) for the full text of the license. diff --git a/vendor/github.com/docker/go-units/circle.yml b/vendor/github.com/docker/go-units/circle.yml deleted file mode 100644 index 9043b35478c9..000000000000 --- a/vendor/github.com/docker/go-units/circle.yml +++ /dev/null @@ -1,11 +0,0 @@ -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)" diff --git a/vendor/github.com/fsnotify/fsnotify/.gitignore b/vendor/github.com/fsnotify/fsnotify/.gitignore deleted file mode 100644 index 4cd0cbaf432c..000000000000 --- a/vendor/github.com/fsnotify/fsnotify/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# Setup a Global .gitignore for OS and editor generated files: -# https://help.github.com/articles/ignoring-files -# git config --global core.excludesfile ~/.gitignore_global - -.vagrant -*.sublime-project diff --git a/vendor/github.com/fsnotify/fsnotify/.travis.yml b/vendor/github.com/fsnotify/fsnotify/.travis.yml deleted file mode 100644 index e6def9aefb93..000000000000 --- a/vendor/github.com/fsnotify/fsnotify/.travis.yml +++ /dev/null @@ -1,29 +0,0 @@ -sudo: false -language: go - -go: - - 1.5.4 - - 1.6.3 - - tip - -matrix: - allow_failures: - - go: tip - -before_script: - - go get -u github.com/golang/lint/golint - -script: - - go test -v --race ./... - -after_script: - - test -z "$(gofmt -s -l -w . | tee /dev/stderr)" - - test -z "$(golint ./... | tee /dev/stderr)" - - go vet ./... - -os: - - linux - - osx - -notifications: - email: false diff --git a/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md b/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md deleted file mode 100644 index f6c7c485cafa..000000000000 --- a/vendor/github.com/fsnotify/fsnotify/CHANGELOG.md +++ /dev/null @@ -1,295 +0,0 @@ -# Changelog - -## v1.3.1 / 2016-06-28 - -* windows: fix for double backslash when watching the root of a drive [#151](https://github.com/fsnotify/fsnotify/issues/151) (thanks @brunoqc) - -## v1.3.0 / 2016-04-19 - -* Support linux/arm64 by [patching](https://go-review.googlesource.com/#/c/21971/) x/sys/unix and switching to to it from syscall (thanks @suihkulokki) [#135](https://github.com/fsnotify/fsnotify/pull/135) - -## v1.2.10 / 2016-03-02 - -* Fix golint errors in windows.go [#121](https://github.com/fsnotify/fsnotify/pull/121) (thanks @tiffanyfj) - -## v1.2.9 / 2016-01-13 - -kqueue: Fix logic for CREATE after REMOVE [#111](https://github.com/fsnotify/fsnotify/pull/111) (thanks @bep) - -## v1.2.8 / 2015-12-17 - -* kqueue: fix race condition in Close [#105](https://github.com/fsnotify/fsnotify/pull/105) (thanks @djui for reporting the issue and @ppknap for writing a failing test) -* inotify: fix race in test -* enable race detection for continuous integration (Linux, Mac, Windows) - -## v1.2.5 / 2015-10-17 - -* inotify: use epoll_create1 for arm64 support (requires Linux 2.6.27 or later) [#100](https://github.com/fsnotify/fsnotify/pull/100) (thanks @suihkulokki) -* inotify: fix path leaks [#73](https://github.com/fsnotify/fsnotify/pull/73) (thanks @chamaken) -* kqueue: watch for rename events on subdirectories [#83](https://github.com/fsnotify/fsnotify/pull/83) (thanks @guotie) -* kqueue: avoid infinite loops from symlinks cycles [#101](https://github.com/fsnotify/fsnotify/pull/101) (thanks @illicitonion) - -## v1.2.1 / 2015-10-14 - -* kqueue: don't watch named pipes [#98](https://github.com/fsnotify/fsnotify/pull/98) (thanks @evanphx) - -## v1.2.0 / 2015-02-08 - -* inotify: use epoll to wake up readEvents [#66](https://github.com/fsnotify/fsnotify/pull/66) (thanks @PieterD) -* inotify: closing watcher should now always shut down goroutine [#63](https://github.com/fsnotify/fsnotify/pull/63) (thanks @PieterD) -* kqueue: close kqueue after removing watches, fixes [#59](https://github.com/fsnotify/fsnotify/issues/59) - -## v1.1.1 / 2015-02-05 - -* inotify: Retry read on EINTR [#61](https://github.com/fsnotify/fsnotify/issues/61) (thanks @PieterD) - -## v1.1.0 / 2014-12-12 - -* kqueue: rework internals [#43](https://github.com/fsnotify/fsnotify/pull/43) - * add low-level functions - * only need to store flags on directories - * less mutexes [#13](https://github.com/fsnotify/fsnotify/issues/13) - * done can be an unbuffered channel - * remove calls to os.NewSyscallError -* More efficient string concatenation for Event.String() [#52](https://github.com/fsnotify/fsnotify/pull/52) (thanks @mdlayher) -* kqueue: fix regression in rework causing subdirectories to be watched [#48](https://github.com/fsnotify/fsnotify/issues/48) -* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51) - -## v1.0.4 / 2014-09-07 - -* kqueue: add dragonfly to the build tags. -* Rename source code files, rearrange code so exported APIs are at the top. -* Add done channel to example code. [#37](https://github.com/fsnotify/fsnotify/pull/37) (thanks @chenyukang) - -## v1.0.3 / 2014-08-19 - -* [Fix] Windows MOVED_TO now translates to Create like on BSD and Linux. [#36](https://github.com/fsnotify/fsnotify/issues/36) - -## v1.0.2 / 2014-08-17 - -* [Fix] Missing create events on OS X. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso) -* [Fix] Make ./path and path equivalent. (thanks @zhsso) - -## v1.0.0 / 2014-08-15 - -* [API] Remove AddWatch on Windows, use Add. -* Improve documentation for exported identifiers. [#30](https://github.com/fsnotify/fsnotify/issues/30) -* Minor updates based on feedback from golint. - -## dev / 2014-07-09 - -* Moved to [github.com/fsnotify/fsnotify](https://github.com/fsnotify/fsnotify). -* Use os.NewSyscallError instead of returning errno (thanks @hariharan-uno) - -## dev / 2014-07-04 - -* kqueue: fix incorrect mutex used in Close() -* Update example to demonstrate usage of Op. - -## dev / 2014-06-28 - -* [API] Don't set the Write Op for attribute notifications [#4](https://github.com/fsnotify/fsnotify/issues/4) -* Fix for String() method on Event (thanks Alex Brainman) -* Don't build on Plan 9 or Solaris (thanks @4ad) - -## dev / 2014-06-21 - -* Events channel of type Event rather than *Event. -* [internal] use syscall constants directly for inotify and kqueue. -* [internal] kqueue: rename events to kevents and fileEvent to event. - -## dev / 2014-06-19 - -* Go 1.3+ required on Windows (uses syscall.ERROR_MORE_DATA internally). -* [internal] remove cookie from Event struct (unused). -* [internal] Event struct has the same definition across every OS. -* [internal] remove internal watch and removeWatch methods. - -## dev / 2014-06-12 - -* [API] Renamed Watch() to Add() and RemoveWatch() to Remove(). -* [API] Pluralized channel names: Events and Errors. -* [API] Renamed FileEvent struct to Event. -* [API] Op constants replace methods like IsCreate(). - -## dev / 2014-06-12 - -* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) - -## dev / 2014-05-23 - -* [API] Remove current implementation of WatchFlags. - * current implementation doesn't take advantage of OS for efficiency - * provides little benefit over filtering events as they are received, but has extra bookkeeping and mutexes - * no tests for the current implementation - * not fully implemented on Windows [#93](https://github.com/howeyc/fsnotify/issues/93#issuecomment-39285195) - -## v0.9.3 / 2014-12-31 - -* kqueue: cleanup internal watch before sending remove event [#51](https://github.com/fsnotify/fsnotify/issues/51) - -## v0.9.2 / 2014-08-17 - -* [Backport] Fix missing create events on OS X. [#14](https://github.com/fsnotify/fsnotify/issues/14) (thanks @zhsso) - -## v0.9.1 / 2014-06-12 - -* Fix data race on kevent buffer (thanks @tilaks) [#98](https://github.com/howeyc/fsnotify/pull/98) - -## v0.9.0 / 2014-01-17 - -* IsAttrib() for events that only concern a file's metadata [#79][] (thanks @abustany) -* [Fix] kqueue: fix deadlock [#77][] (thanks @cespare) -* [NOTICE] Development has moved to `code.google.com/p/go.exp/fsnotify` in preparation for inclusion in the Go standard library. - -## v0.8.12 / 2013-11-13 - -* [API] Remove FD_SET and friends from Linux adapter - -## v0.8.11 / 2013-11-02 - -* [Doc] Add Changelog [#72][] (thanks @nathany) -* [Doc] Spotlight and double modify events on OS X [#62][] (reported by @paulhammond) - -## v0.8.10 / 2013-10-19 - -* [Fix] kqueue: remove file watches when parent directory is removed [#71][] (reported by @mdwhatcott) -* [Fix] kqueue: race between Close and readEvents [#70][] (reported by @bernerdschaefer) -* [Doc] specify OS-specific limits in README (thanks @debrando) - -## v0.8.9 / 2013-09-08 - -* [Doc] Contributing (thanks @nathany) -* [Doc] update package path in example code [#63][] (thanks @paulhammond) -* [Doc] GoCI badge in README (Linux only) [#60][] -* [Doc] Cross-platform testing with Vagrant [#59][] (thanks @nathany) - -## v0.8.8 / 2013-06-17 - -* [Fix] Windows: handle `ERROR_MORE_DATA` on Windows [#49][] (thanks @jbowtie) - -## v0.8.7 / 2013-06-03 - -* [API] Make syscall flags internal -* [Fix] inotify: ignore event changes -* [Fix] race in symlink test [#45][] (reported by @srid) -* [Fix] tests on Windows -* lower case error messages - -## v0.8.6 / 2013-05-23 - -* kqueue: Use EVT_ONLY flag on Darwin -* [Doc] Update README with full example - -## v0.8.5 / 2013-05-09 - -* [Fix] inotify: allow monitoring of "broken" symlinks (thanks @tsg) - -## v0.8.4 / 2013-04-07 - -* [Fix] kqueue: watch all file events [#40][] (thanks @ChrisBuchholz) - -## v0.8.3 / 2013-03-13 - -* [Fix] inoitfy/kqueue memory leak [#36][] (reported by @nbkolchin) -* [Fix] kqueue: use fsnFlags for watching a directory [#33][] (reported by @nbkolchin) - -## v0.8.2 / 2013-02-07 - -* [Doc] add Authors -* [Fix] fix data races for map access [#29][] (thanks @fsouza) - -## v0.8.1 / 2013-01-09 - -* [Fix] Windows path separators -* [Doc] BSD License - -## v0.8.0 / 2012-11-09 - -* kqueue: directory watching improvements (thanks @vmirage) -* inotify: add `IN_MOVED_TO` [#25][] (requested by @cpisto) -* [Fix] kqueue: deleting watched directory [#24][] (reported by @jakerr) - -## v0.7.4 / 2012-10-09 - -* [Fix] inotify: fixes from https://codereview.appspot.com/5418045/ (ugorji) -* [Fix] kqueue: preserve watch flags when watching for delete [#21][] (reported by @robfig) -* [Fix] kqueue: watch the directory even if it isn't a new watch (thanks @robfig) -* [Fix] kqueue: modify after recreation of file - -## v0.7.3 / 2012-09-27 - -* [Fix] kqueue: watch with an existing folder inside the watched folder (thanks @vmirage) -* [Fix] kqueue: no longer get duplicate CREATE events - -## v0.7.2 / 2012-09-01 - -* kqueue: events for created directories - -## v0.7.1 / 2012-07-14 - -* [Fix] for renaming files - -## v0.7.0 / 2012-07-02 - -* [Feature] FSNotify flags -* [Fix] inotify: Added file name back to event path - -## v0.6.0 / 2012-06-06 - -* kqueue: watch files after directory created (thanks @tmc) - -## v0.5.1 / 2012-05-22 - -* [Fix] inotify: remove all watches before Close() - -## v0.5.0 / 2012-05-03 - -* [API] kqueue: return errors during watch instead of sending over channel -* kqueue: match symlink behavior on Linux -* inotify: add `DELETE_SELF` (requested by @taralx) -* [Fix] kqueue: handle EINTR (reported by @robfig) -* [Doc] Godoc example [#1][] (thanks @davecheney) - -## v0.4.0 / 2012-03-30 - -* Go 1 released: build with go tool -* [Feature] Windows support using winfsnotify -* Windows does not have attribute change notifications -* Roll attribute notifications into IsModify - -## v0.3.0 / 2012-02-19 - -* kqueue: add files when watch directory - -## v0.2.0 / 2011-12-30 - -* update to latest Go weekly code - -## v0.1.0 / 2011-10-19 - -* kqueue: add watch on file creation to match inotify -* kqueue: create file event -* inotify: ignore `IN_IGNORED` events -* event String() -* linux: common FileEvent functions -* initial commit - -[#79]: https://github.com/howeyc/fsnotify/pull/79 -[#77]: https://github.com/howeyc/fsnotify/pull/77 -[#72]: https://github.com/howeyc/fsnotify/issues/72 -[#71]: https://github.com/howeyc/fsnotify/issues/71 -[#70]: https://github.com/howeyc/fsnotify/issues/70 -[#63]: https://github.com/howeyc/fsnotify/issues/63 -[#62]: https://github.com/howeyc/fsnotify/issues/62 -[#60]: https://github.com/howeyc/fsnotify/issues/60 -[#59]: https://github.com/howeyc/fsnotify/issues/59 -[#49]: https://github.com/howeyc/fsnotify/issues/49 -[#45]: https://github.com/howeyc/fsnotify/issues/45 -[#40]: https://github.com/howeyc/fsnotify/issues/40 -[#36]: https://github.com/howeyc/fsnotify/issues/36 -[#33]: https://github.com/howeyc/fsnotify/issues/33 -[#29]: https://github.com/howeyc/fsnotify/issues/29 -[#25]: https://github.com/howeyc/fsnotify/issues/25 -[#24]: https://github.com/howeyc/fsnotify/issues/24 -[#21]: https://github.com/howeyc/fsnotify/issues/21 diff --git a/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md b/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md deleted file mode 100644 index 617e45a06e39..000000000000 --- a/vendor/github.com/fsnotify/fsnotify/CONTRIBUTING.md +++ /dev/null @@ -1,77 +0,0 @@ -# Contributing - -## Issues - -* Request features and report bugs using the [GitHub Issue Tracker](https://github.com/fsnotify/fsnotify/issues). -* Please indicate the platform you are using fsnotify on. -* A code example to reproduce the problem is appreciated. - -## Pull Requests - -### Contributor License Agreement - -fsnotify is derived from code in the [golang.org/x/exp](https://godoc.org/golang.org/x/exp) package and it may be included [in the standard library](https://github.com/fsnotify/fsnotify/issues/1) in the future. Therefore fsnotify carries the same [LICENSE](https://github.com/fsnotify/fsnotify/blob/master/LICENSE) as Go. Contributors retain their copyright, so you need to fill out a short form before we can accept your contribution: [Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual). - -Please indicate that you have signed the CLA in your pull request. - -### How fsnotify is Developed - -* Development is done on feature branches. -* Tests are run on BSD, Linux, OS X and Windows. -* Pull requests are reviewed and [applied to master][am] using [hub][]. - * Maintainers may modify or squash commits rather than asking contributors to. -* To issue a new release, the maintainers will: - * Update the CHANGELOG - * Tag a version, which will become available through gopkg.in. - -### How to Fork - -For smooth sailing, always use the original import path. Installing with `go get` makes this easy. - -1. Install from GitHub (`go get -u github.com/fsnotify/fsnotify`) -2. Create your feature branch (`git checkout -b my-new-feature`) -3. Ensure everything works and the tests pass (see below) -4. Commit your changes (`git commit -am 'Add some feature'`) - -Contribute upstream: - -1. Fork fsnotify on GitHub -2. Add your remote (`git remote add fork git@github.com:mycompany/repo.git`) -3. Push to the branch (`git push fork my-new-feature`) -4. Create a new Pull Request on GitHub - -This workflow is [thoroughly explained by Katrina Owen](https://blog.splice.com/contributing-open-source-git-repositories-go/). - -### Testing - -fsnotify uses build tags to compile different code on Linux, BSD, OS X, and Windows. - -Before doing a pull request, please do your best to test your changes on multiple platforms, and list which platforms you were able/unable to test on. - -To aid in cross-platform testing there is a Vagrantfile for Linux and BSD. - -* Install [Vagrant](http://www.vagrantup.com/) and [VirtualBox](https://www.virtualbox.org/) -* Setup [Vagrant Gopher](https://github.com/nathany/vagrant-gopher) in your `src` folder. -* Run `vagrant up` from the project folder. You can also setup just one box with `vagrant up linux` or `vagrant up bsd` (note: the BSD box doesn't support Windows hosts at this time, and NFS may prompt for your host OS password) -* Once setup, you can run the test suite on a given OS with a single command `vagrant ssh linux -c 'cd fsnotify/fsnotify; go test'`. -* When you're done, you will want to halt or destroy the Vagrant boxes. - -Notice: fsnotify file system events won't trigger in shared folders. The tests get around this limitation by using the /tmp directory. - -Right now there is no equivalent solution for Windows and OS X, but there are Windows VMs [freely available from Microsoft](http://www.modern.ie/en-us/virtualization-tools#downloads). - -### Maintainers - -Help maintaining fsnotify is welcome. To be a maintainer: - -* Submit a pull request and sign the CLA as above. -* You must be able to run the test suite on Mac, Windows, Linux and BSD. - -To keep master clean, the fsnotify project uses the "apply mail" workflow outlined in Nathaniel Talbott's post ["Merge pull request" Considered Harmful][am]. This requires installing [hub][]. - -All code changes should be internal pull requests. - -Releases are tagged using [Semantic Versioning](http://semver.org/). - -[hub]: https://github.com/github/hub -[am]: http://blog.spreedly.com/2014/06/24/merge-pull-request-considered-harmful/#.VGa5yZPF_Zs diff --git a/vendor/github.com/fsnotify/fsnotify/README.md b/vendor/github.com/fsnotify/fsnotify/README.md deleted file mode 100644 index 5ebce86eb61d..000000000000 --- a/vendor/github.com/fsnotify/fsnotify/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# File system notifications for Go - -[![GoDoc](https://godoc.org/github.com/fsnotify/fsnotify?status.svg)](https://godoc.org/github.com/fsnotify/fsnotify) [![Go Report Card](https://goreportcard.com/badge/github.com/fsnotify/fsnotify)](https://goreportcard.com/report/github.com/fsnotify/fsnotify) [![Coverage](http://gocover.io/_badge/github.com/fsnotify/fsnotify)](http://gocover.io/github.com/fsnotify/fsnotify) - -fsnotify utilizes [golang.org/x/sys](https://godoc.org/golang.org/x/sys) rather than `syscall` from the standard library. Ensure you have the latest version installed by running: - -```console -go get -u golang.org/x/sys/... -``` - -Cross platform: Windows, Linux, BSD and OS X. - -|Adapter |OS |Status | -|----------|----------|----------| -|inotify |Linux 2.6.27 or later, Android\*|Supported [![Build Status](https://travis-ci.org/fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/fsnotify/fsnotify)| -|kqueue |BSD, OS X, iOS\*|Supported [![Build Status](https://travis-ci.org/fsnotify/fsnotify.svg?branch=master)](https://travis-ci.org/fsnotify/fsnotify)| -|ReadDirectoryChangesW|Windows|Supported [![Build status](https://ci.appveyor.com/api/projects/status/ivwjubaih4r0udeh/branch/master?svg=true)](https://ci.appveyor.com/project/NathanYoungman/fsnotify/branch/master)| -|FSEvents |OS X |[Planned](https://github.com/fsnotify/fsnotify/issues/11)| -|FEN |Solaris 11 |[In Progress](https://github.com/fsnotify/fsnotify/issues/12)| -|fanotify |Linux 2.6.37+ | | -|USN Journals |Windows |[Maybe](https://github.com/fsnotify/fsnotify/issues/53)| -|Polling |*All* |[Maybe](https://github.com/fsnotify/fsnotify/issues/9)| - -\* Android and iOS are untested. - -Please see [the documentation](https://godoc.org/github.com/fsnotify/fsnotify) for usage. Consult the [Wiki](https://github.com/fsnotify/fsnotify/wiki) for the FAQ and further information. - -## API stability - -fsnotify is a fork of [howeyc/fsnotify](https://godoc.org/github.com/howeyc/fsnotify) with a new API as of v1.0. The API is based on [this design document](http://goo.gl/MrYxyA). - -All [releases](https://github.com/fsnotify/fsnotify/releases) are tagged based on [Semantic Versioning](http://semver.org/). Further API changes are [planned](https://github.com/fsnotify/fsnotify/milestones), and will be tagged with a new major revision number. - -Go 1.6 supports dependencies located in the `vendor/` folder. Unless you are creating a library, it is recommended that you copy fsnotify into `vendor/github.com/fsnotify/fsnotify` within your project, and likewise for `golang.org/x/sys`. - -## Contributing - -Please refer to [CONTRIBUTING][] before opening an issue or pull request. - -## Example - -See [example_test.go](https://github.com/fsnotify/fsnotify/blob/master/example_test.go). - -[contributing]: https://github.com/fsnotify/fsnotify/blob/master/CONTRIBUTING.md - -## Related Projects - -* [notify](https://github.com/rjeczalik/notify) -* [fsevents](https://github.com/fsnotify/fsevents) - diff --git a/vendor/github.com/ghodss/yaml/.gitignore b/vendor/github.com/ghodss/yaml/.gitignore deleted file mode 100644 index e256a31e00a5..000000000000 --- a/vendor/github.com/ghodss/yaml/.gitignore +++ /dev/null @@ -1,20 +0,0 @@ -# OSX leaves these everywhere on SMB shares -._* - -# Eclipse files -.classpath -.project -.settings/** - -# Emacs save files -*~ - -# Vim-related files -[._]*.s[a-w][a-z] -[._]s[a-w][a-z] -*.un~ -Session.vim -.netrwhist - -# Go test binaries -*.test diff --git a/vendor/github.com/ghodss/yaml/.travis.yml b/vendor/github.com/ghodss/yaml/.travis.yml deleted file mode 100644 index 0e9d6edc010a..000000000000 --- a/vendor/github.com/ghodss/yaml/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go -go: - - 1.3 - - 1.4 -script: - - go test - - go build diff --git a/vendor/github.com/ghodss/yaml/README.md b/vendor/github.com/ghodss/yaml/README.md deleted file mode 100644 index f8f7e369549c..000000000000 --- a/vendor/github.com/ghodss/yaml/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# YAML marshaling and unmarshaling support for Go - -[![Build Status](https://travis-ci.org/ghodss/yaml.svg)](https://travis-ci.org/ghodss/yaml) - -## Introduction - -A wrapper around [go-yaml](https://github.com/go-yaml/yaml) designed to enable a better way of handling YAML when marshaling to and from structs. - -In short, this library first converts YAML to JSON using go-yaml and then uses `json.Marshal` and `json.Unmarshal` to convert to or from the struct. This means that it effectively reuses the JSON struct tags as well as the custom JSON methods `MarshalJSON` and `UnmarshalJSON` unlike go-yaml. For a detailed overview of the rationale behind this method, [see this blog post](http://ghodss.com/2014/the-right-way-to-handle-yaml-in-golang/). - -## Compatibility - -This package uses [go-yaml v2](https://github.com/go-yaml/yaml) and therefore supports [everything go-yaml supports](https://github.com/go-yaml/yaml#compatibility). - -## Caveats - -**Caveat #1:** When using `yaml.Marshal` and `yaml.Unmarshal`, binary data should NOT be preceded with the `!!binary` YAML tag. If you do, go-yaml will convert the binary data from base64 to native binary data, which is not compatible with JSON. You can still use binary in your YAML files though - just store them without the `!!binary` tag and decode the base64 in your code (e.g. in the custom JSON methods `MarshalJSON` and `UnmarshalJSON`). This also has the benefit that your YAML and your JSON binary data will be decoded exactly the same way. As an example: - -``` -BAD: - exampleKey: !!binary gIGC - -GOOD: - exampleKey: gIGC -... and decode the base64 data in your code. -``` - -**Caveat #2:** When using `YAMLToJSON` directly, maps with keys that are maps will result in an error since this is not supported by JSON. This error will occur in `Unmarshal` as well since you can't unmarshal map keys anyways since struct fields can't be keys. - -## Installation and usage - -To install, run: - -``` -$ go get github.com/ghodss/yaml -``` - -And import using: - -``` -import "github.com/ghodss/yaml" -``` - -Usage is very similar to the JSON library: - -```go -import ( - "fmt" - - "github.com/ghodss/yaml" -) - -type Person struct { - Name string `json:"name"` // Affects YAML field names too. - Age int `json:"name"` -} - -func main() { - // Marshal a Person struct to YAML. - p := Person{"John", 30} - y, err := yaml.Marshal(p) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(y)) - /* Output: - name: John - age: 30 - */ - - // Unmarshal the YAML back into a Person struct. - var p2 Person - err := yaml.Unmarshal(y, &p2) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(p2) - /* Output: - {John 30} - */ -} -``` - -`yaml.YAMLToJSON` and `yaml.JSONToYAML` methods are also available: - -```go -import ( - "fmt" - - "github.com/ghodss/yaml" -) -func main() { - j := []byte(`{"name": "John", "age": 30}`) - y, err := yaml.JSONToYAML(j) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(y)) - /* Output: - name: John - age: 30 - */ - j2, err := yaml.YAMLToJSON(y) - if err != nil { - fmt.Printf("err: %v\n", err) - return - } - fmt.Println(string(j2)) - /* Output: - {"age":30,"name":"John"} - */ -} -``` diff --git a/vendor/github.com/gogo/protobuf/GOLANG_CONTRIBUTORS b/vendor/github.com/gogo/protobuf/GOLANG_CONTRIBUTORS new file mode 100644 index 000000000000..b368efb7f2f8 --- /dev/null +++ b/vendor/github.com/gogo/protobuf/GOLANG_CONTRIBUTORS @@ -0,0 +1,5 @@ +The contributors to the Go protobuf repository: + +# This source code was written by the Go contributors. +# The master list of contributors is in the main Go distribution, +# visible at http://tip.golang.org/CONTRIBUTORS. \ No newline at end of file diff --git a/vendor/github.com/gogo/protobuf/proto/Makefile b/vendor/github.com/gogo/protobuf/proto/Makefile deleted file mode 100644 index 41c717573ea5..000000000000 --- a/vendor/github.com/gogo/protobuf/proto/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -install: - go install - -test: install generate-test-pbs - go test - - -generate-test-pbs: - make install - make -C testdata - protoc-min-version --version="3.0.0" --proto_path=.:../../../../:../protobuf --gogo_out=Mtestdata/test.proto=github.com/gogo/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. proto3_proto/proto3.proto - make diff --git a/vendor/github.com/golang/glog/README b/vendor/github.com/golang/glog/README deleted file mode 100644 index 5f9c11485e03..000000000000 --- a/vendor/github.com/golang/glog/README +++ /dev/null @@ -1,44 +0,0 @@ -glog -==== - -Leveled execution logs for Go. - -This is an efficient pure Go implementation of leveled logs in the -manner of the open source C++ package - http://code.google.com/p/google-glog - -By binding methods to booleans it is possible to use the log package -without paying the expense of evaluating the arguments to the log. -Through the -vmodule flag, the package also provides fine-grained -control over logging at the file level. - -The comment from glog.go introduces the ideas: - - Package glog implements logging analogous to the Google-internal - C++ INFO/ERROR/V setup. It provides functions Info, Warning, - Error, Fatal, plus formatting variants such as Infof. It - also provides V-style logging controlled by the -v and - -vmodule=file=2 flags. - - Basic examples: - - glog.Info("Prepare to repel boarders") - - glog.Fatalf("Initialization failed: %s", err) - - See the documentation for the V function for an explanation - of these examples: - - if glog.V(2) { - glog.Info("Starting transaction...") - } - - glog.V(2).Infoln("Processed", nItems, "elements") - - -The repository contains an open source version of the log package -used inside Google. The master copy of the source lives inside -Google, not here. The code in this repo is for export only and is not itself -under development. Feature requests will be ignored. - -Send bug reports to golang-nuts@googlegroups.com. diff --git a/vendor/github.com/golang/protobuf/proto/Makefile b/vendor/github.com/golang/protobuf/proto/Makefile deleted file mode 100644 index e2e0651a934d..000000000000 --- a/vendor/github.com/golang/protobuf/proto/Makefile +++ /dev/null @@ -1,43 +0,0 @@ -# Go support for Protocol Buffers - Google's data interchange format -# -# Copyright 2010 The Go Authors. All rights reserved. -# https://github.com/golang/protobuf -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are -# met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following disclaimer -# in the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -install: - go install - -test: install generate-test-pbs - go test - - -generate-test-pbs: - make install - make -C testdata - protoc --go_out=Mtestdata/test.proto=github.com/golang/protobuf/proto/testdata,Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. proto3_proto/proto3.proto - make diff --git a/vendor/github.com/golang/protobuf/ptypes/any/any.proto b/vendor/github.com/golang/protobuf/ptypes/any/any.proto deleted file mode 100644 index c74866762315..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/any/any.proto +++ /dev/null @@ -1,149 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option go_package = "github.com/golang/protobuf/ptypes/any"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "AnyProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// `Any` contains an arbitrary serialized protocol buffer message along with a -// URL that describes the type of the serialized message. -// -// Protobuf library provides support to pack/unpack Any values in the form -// of utility functions or additional generated methods of the Any type. -// -// Example 1: Pack and unpack a message in C++. -// -// Foo foo = ...; -// Any any; -// any.PackFrom(foo); -// ... -// if (any.UnpackTo(&foo)) { -// ... -// } -// -// Example 2: Pack and unpack a message in Java. -// -// Foo foo = ...; -// Any any = Any.pack(foo); -// ... -// if (any.is(Foo.class)) { -// foo = any.unpack(Foo.class); -// } -// -// Example 3: Pack and unpack a message in Python. -// -// foo = Foo(...) -// any = Any() -// any.Pack(foo) -// ... -// if any.Is(Foo.DESCRIPTOR): -// any.Unpack(foo) -// ... -// -// Example 4: Pack and unpack a message in Go -// -// foo := &pb.Foo{...} -// any, err := ptypes.MarshalAny(foo) -// ... -// foo := &pb.Foo{} -// if err := ptypes.UnmarshalAny(any, foo); err != nil { -// ... -// } -// -// The pack methods provided by protobuf library will by default use -// 'type.googleapis.com/full.type.name' as the type URL and the unpack -// methods only use the fully qualified type name after the last '/' -// in the type URL, for example "foo.bar.com/x/y.z" will yield type -// name "y.z". -// -// -// JSON -// ==== -// The JSON representation of an `Any` value uses the regular -// representation of the deserialized, embedded message, with an -// additional field `@type` which contains the type URL. Example: -// -// package google.profile; -// message Person { -// string first_name = 1; -// string last_name = 2; -// } -// -// { -// "@type": "type.googleapis.com/google.profile.Person", -// "firstName": , -// "lastName": -// } -// -// If the embedded message type is well-known and has a custom JSON -// representation, that representation will be embedded adding a field -// `value` which holds the custom JSON in addition to the `@type` -// field. Example (for message [google.protobuf.Duration][]): -// -// { -// "@type": "type.googleapis.com/google.protobuf.Duration", -// "value": "1.212s" -// } -// -message Any { - // A URL/resource name whose content describes the type of the - // serialized protocol buffer message. - // - // For URLs which use the scheme `http`, `https`, or no scheme, the - // following restrictions and interpretations apply: - // - // * If no scheme is provided, `https` is assumed. - // * The last segment of the URL's path must represent the fully - // qualified name of the type (as in `path/google.protobuf.Duration`). - // The name should be in a canonical form (e.g., leading "." is - // not accepted). - // * An HTTP GET on the URL must yield a [google.protobuf.Type][] - // value in binary format, or produce an error. - // * Applications are allowed to cache lookup results based on the - // URL, or have them precompiled into a binary to avoid any - // lookup. Therefore, binary compatibility needs to be preserved - // on changes to types. (Use versioned type names to manage - // breaking changes.) - // - // Schemes other than `http`, `https` (or the empty scheme) might be - // used with implementation specific semantics. - // - string type_url = 1; - - // Must be a valid serialized protocol buffer of the above specified type. - bytes value = 2; -} diff --git a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto b/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto deleted file mode 100644 index 975fce41aae0..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/duration/duration.proto +++ /dev/null @@ -1,117 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/duration"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "DurationProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Duration represents a signed, fixed-length span of time represented -// as a count of seconds and fractions of seconds at nanosecond -// resolution. It is independent of any calendar and concepts like "day" -// or "month". It is related to Timestamp in that the difference between -// two Timestamp values is a Duration and it can be added or subtracted -// from a Timestamp. Range is approximately +-10,000 years. -// -// # Examples -// -// Example 1: Compute Duration from two Timestamps in pseudo code. -// -// Timestamp start = ...; -// Timestamp end = ...; -// Duration duration = ...; -// -// duration.seconds = end.seconds - start.seconds; -// duration.nanos = end.nanos - start.nanos; -// -// if (duration.seconds < 0 && duration.nanos > 0) { -// duration.seconds += 1; -// duration.nanos -= 1000000000; -// } else if (durations.seconds > 0 && duration.nanos < 0) { -// duration.seconds -= 1; -// duration.nanos += 1000000000; -// } -// -// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. -// -// Timestamp start = ...; -// Duration duration = ...; -// Timestamp end = ...; -// -// end.seconds = start.seconds + duration.seconds; -// end.nanos = start.nanos + duration.nanos; -// -// if (end.nanos < 0) { -// end.seconds -= 1; -// end.nanos += 1000000000; -// } else if (end.nanos >= 1000000000) { -// end.seconds += 1; -// end.nanos -= 1000000000; -// } -// -// Example 3: Compute Duration from datetime.timedelta in Python. -// -// td = datetime.timedelta(days=3, minutes=10) -// duration = Duration() -// duration.FromTimedelta(td) -// -// # JSON Mapping -// -// In JSON format, the Duration type is encoded as a string rather than an -// object, where the string ends in the suffix "s" (indicating seconds) and -// is preceded by the number of seconds, with nanoseconds expressed as -// fractional seconds. For example, 3 seconds with 0 nanoseconds should be -// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should -// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 -// microsecond should be expressed in JSON format as "3.000001s". -// -// -message Duration { - - // Signed seconds of the span of time. Must be from -315,576,000,000 - // to +315,576,000,000 inclusive. Note: these bounds are computed from: - // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - int64 seconds = 1; - - // Signed fractions of a second at nanosecond resolution of the span - // of time. Durations less than one second are represented with a 0 - // `seconds` field and a positive or negative `nanos` field. For durations - // of one second or more, a non-zero value for the `nanos` field must be - // of the same sign as the `seconds` field. Must be from -999,999,999 - // to +999,999,999 inclusive. - int32 nanos = 2; -} diff --git a/vendor/github.com/golang/protobuf/ptypes/regen.sh b/vendor/github.com/golang/protobuf/ptypes/regen.sh deleted file mode 100755 index b50a9414ac24..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/regen.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/bin/bash -e -# -# This script fetches and rebuilds the "well-known types" protocol buffers. -# To run this you will need protoc and goprotobuf installed; -# see https://github.com/golang/protobuf for instructions. -# You also need Go and Git installed. - -PKG=github.com/golang/protobuf/ptypes -UPSTREAM=https://github.com/google/protobuf -UPSTREAM_SUBDIR=src/google/protobuf -PROTO_FILES=(any duration empty struct timestamp wrappers) - -function die() { - echo 1>&2 $* - exit 1 -} - -# Sanity check that the right tools are accessible. -for tool in go git protoc protoc-gen-go; do - q=$(which $tool) || die "didn't find $tool" - echo 1>&2 "$tool: $q" -done - -tmpdir=$(mktemp -d -t regen-wkt.XXXXXX) -trap 'rm -rf $tmpdir' EXIT - -echo -n 1>&2 "finding package dir... " -pkgdir=$(go list -f '{{.Dir}}' $PKG) -echo 1>&2 $pkgdir -base=$(echo $pkgdir | sed "s,/$PKG\$,,") -echo 1>&2 "base: $base" -cd "$base" - -echo 1>&2 "fetching latest protos... " -git clone -q $UPSTREAM $tmpdir - -for file in ${PROTO_FILES[@]}; do - echo 1>&2 "* $file" - protoc --go_out=. -I$tmpdir/src $tmpdir/src/google/protobuf/$file.proto || die - cp $tmpdir/src/google/protobuf/$file.proto $PKG/$file -done - -echo 1>&2 "All OK" diff --git a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto b/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto deleted file mode 100644 index b7cbd17502f2..000000000000 --- a/vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto +++ /dev/null @@ -1,133 +0,0 @@ -// Protocol Buffers - Google's data interchange format -// Copyright 2008 Google Inc. All rights reserved. -// https://developers.google.com/protocol-buffers/ -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are -// met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -syntax = "proto3"; - -package google.protobuf; - -option csharp_namespace = "Google.Protobuf.WellKnownTypes"; -option cc_enable_arenas = true; -option go_package = "github.com/golang/protobuf/ptypes/timestamp"; -option java_package = "com.google.protobuf"; -option java_outer_classname = "TimestampProto"; -option java_multiple_files = true; -option objc_class_prefix = "GPB"; - -// A Timestamp represents a point in time independent of any time zone -// or calendar, represented as seconds and fractions of seconds at -// nanosecond resolution in UTC Epoch time. It is encoded using the -// Proleptic Gregorian Calendar which extends the Gregorian calendar -// backwards to year one. It is encoded assuming all minutes are 60 -// seconds long, i.e. leap seconds are "smeared" so that no leap second -// table is needed for interpretation. Range is from -// 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. -// By restricting to that range, we ensure that we can convert to -// and from RFC 3339 date strings. -// See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt). -// -// # Examples -// -// Example 1: Compute Timestamp from POSIX `time()`. -// -// Timestamp timestamp; -// timestamp.set_seconds(time(NULL)); -// timestamp.set_nanos(0); -// -// Example 2: Compute Timestamp from POSIX `gettimeofday()`. -// -// struct timeval tv; -// gettimeofday(&tv, NULL); -// -// Timestamp timestamp; -// timestamp.set_seconds(tv.tv_sec); -// timestamp.set_nanos(tv.tv_usec * 1000); -// -// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. -// -// FILETIME ft; -// GetSystemTimeAsFileTime(&ft); -// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; -// -// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z -// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. -// Timestamp timestamp; -// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); -// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); -// -// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. -// -// long millis = System.currentTimeMillis(); -// -// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) -// .setNanos((int) ((millis % 1000) * 1000000)).build(); -// -// -// Example 5: Compute Timestamp from current time in Python. -// -// timestamp = Timestamp() -// timestamp.GetCurrentTime() -// -// # JSON Mapping -// -// In JSON format, the Timestamp type is encoded as a string in the -// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the -// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" -// where {year} is always expressed using four digits while {month}, {day}, -// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional -// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), -// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone -// is required, though only UTC (as indicated by "Z") is presently supported. -// -// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past -// 01:30 UTC on January 15, 2017. -// -// In JavaScript, one can convert a Date object to this format using the -// standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString] -// method. In Python, a standard `datetime.datetime` object can be converted -// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) -// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one -// can use the Joda Time's [`ISODateTimeFormat.dateTime()`]( -// http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()) -// to obtain a formatter capable of generating timestamps in this format. -// -// -message Timestamp { - - // Represents seconds of UTC time since Unix epoch - // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - // 9999-12-31T23:59:59Z inclusive. - int64 seconds = 1; - - // Non-negative fractions of a second at nanosecond resolution. Negative - // second values with fractions must still have non-negative nanos values - // that count forward in time. Must be from 0 to 999,999,999 - // inclusive. - int32 nanos = 2; -} diff --git a/vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi b/vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi new file mode 120000 index 000000000000..5d7eddc7f33a --- /dev/null +++ b/vendor/github.com/google/go-containerregistry/cmd/ko/test/kodata/kenobi @@ -0,0 +1 @@ +../kenobi \ No newline at end of file diff --git a/vendor/github.com/google/gofuzz/.travis.yml b/vendor/github.com/google/gofuzz/.travis.yml deleted file mode 100644 index f8684d99fc4e..000000000000 --- a/vendor/github.com/google/gofuzz/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go - -go: - - 1.4 - - 1.3 - - 1.2 - - tip - -install: - - if ! go get code.google.com/p/go.tools/cmd/cover; then go get golang.org/x/tools/cmd/cover; fi - -script: - - go test -cover diff --git a/vendor/github.com/google/gofuzz/CONTRIBUTING.md b/vendor/github.com/google/gofuzz/CONTRIBUTING.md deleted file mode 100644 index 51cf5cd1adae..000000000000 --- a/vendor/github.com/google/gofuzz/CONTRIBUTING.md +++ /dev/null @@ -1,67 +0,0 @@ -# How to contribute # - -We'd love to accept your patches and contributions to this project. There are -a just a few small guidelines you need to follow. - - -## Contributor License Agreement ## - -Contributions to any Google project must be accompanied by a Contributor -License Agreement. This is not a copyright **assignment**, it simply gives -Google permission to use and redistribute your contributions as part of the -project. - - * If you are an individual writing original source code and you're sure you - own the intellectual property, then you'll need to sign an [individual - CLA][]. - - * If you work for a company that wants to allow you to contribute your work, - then you'll need to sign a [corporate CLA][]. - -You generally only need to submit a CLA once, so if you've already submitted -one (even if it was for a different project), you probably don't need to do it -again. - -[individual CLA]: https://developers.google.com/open-source/cla/individual -[corporate CLA]: https://developers.google.com/open-source/cla/corporate - - -## Submitting a patch ## - - 1. It's generally best to start by opening a new issue describing the bug or - feature you're intending to fix. Even if you think it's relatively minor, - it's helpful to know what people are working on. Mention in the initial - issue that you are planning to work on that bug or feature so that it can - be assigned to you. - - 1. Follow the normal process of [forking][] the project, and setup a new - branch to work in. It's important that each group of changes be done in - separate branches in order to ensure that a pull request only includes the - commits related to that bug or feature. - - 1. Go makes it very simple to ensure properly formatted code, so always run - `go fmt` on your code before committing it. You should also run - [golint][] over your code. As noted in the [golint readme][], it's not - strictly necessary that your code be completely "lint-free", but this will - help you find common style issues. - - 1. Any significant changes should almost always be accompanied by tests. The - project already has good test coverage, so look at some of the existing - tests if you're unsure how to go about it. [gocov][] and [gocov-html][] - are invaluable tools for seeing which parts of your code aren't being - exercised by your tests. - - 1. Do your best to have [well-formed commit messages][] for each change. - This provides consistency throughout the project, and ensures that commit - messages are able to be formatted properly by various git tools. - - 1. Finally, push the commits to your fork and submit a [pull request][]. - -[forking]: https://help.github.com/articles/fork-a-repo -[golint]: https://github.com/golang/lint -[golint readme]: https://github.com/golang/lint/blob/master/README -[gocov]: https://github.com/axw/gocov -[gocov-html]: https://github.com/matm/gocov-html -[well-formed commit messages]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html -[squash]: http://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits -[pull request]: https://help.github.com/articles/creating-a-pull-request diff --git a/vendor/github.com/google/gofuzz/README.md b/vendor/github.com/google/gofuzz/README.md deleted file mode 100644 index 64869af347a5..000000000000 --- a/vendor/github.com/google/gofuzz/README.md +++ /dev/null @@ -1,71 +0,0 @@ -gofuzz -====== - -gofuzz is a library for populating go objects with random values. - -[![GoDoc](https://godoc.org/github.com/google/gofuzz?status.png)](https://godoc.org/github.com/google/gofuzz) -[![Travis](https://travis-ci.org/google/gofuzz.svg?branch=master)](https://travis-ci.org/google/gofuzz) - -This is useful for testing: - -* Do your project's objects really serialize/unserialize correctly in all cases? -* Is there an incorrectly formatted object that will cause your project to panic? - -Import with ```import "github.com/google/gofuzz"``` - -You can use it on single variables: -```go -f := fuzz.New() -var myInt int -f.Fuzz(&myInt) // myInt gets a random value. -``` - -You can use it on maps: -```go -f := fuzz.New().NilChance(0).NumElements(1, 1) -var myMap map[ComplexKeyType]string -f.Fuzz(&myMap) // myMap will have exactly one element. -``` - -Customize the chance of getting a nil pointer: -```go -f := fuzz.New().NilChance(.5) -var fancyStruct struct { - A, B, C, D *string -} -f.Fuzz(&fancyStruct) // About half the pointers should be set. -``` - -You can even customize the randomization completely if needed: -```go -type MyEnum string -const ( - A MyEnum = "A" - B MyEnum = "B" -) -type MyInfo struct { - Type MyEnum - AInfo *string - BInfo *string -} - -f := fuzz.New().NilChance(0).Funcs( - func(e *MyInfo, c fuzz.Continue) { - switch c.Intn(2) { - case 0: - e.Type = A - c.Fuzz(&e.AInfo) - case 1: - e.Type = B - c.Fuzz(&e.BInfo) - } - }, -) - -var myObject MyInfo -f.Fuzz(&myObject) // Type will correspond to whether A or B info is set. -``` - -See more examples in ```example_test.go```. - -Happy testing! diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto b/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto deleted file mode 100644 index 557c88072cd8..000000000000 --- a/vendor/github.com/googleapis/gnostic/OpenAPIv2/OpenAPIv2.proto +++ /dev/null @@ -1,663 +0,0 @@ -// Copyright 2017 Google Inc. All Rights Reserved. -// -// 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 -// -// http://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. - -// THIS FILE IS AUTOMATICALLY GENERATED. - -syntax = "proto3"; - -package openapi.v2; - -import "google/protobuf/any.proto"; - -// This option lets the proto compiler generate Java code inside the package -// name (see below) instead of inside an outer class. It creates a simpler -// developer experience by reducing one-level of name nesting and be -// consistent with most programming languages that don't support outer classes. -option java_multiple_files = true; - -// The Java outer classname should be the filename in UpperCamelCase. This -// class is only used to hold proto descriptor, so developers don't need to -// work with it directly. -option java_outer_classname = "OpenAPIProto"; - -// The Java package name must be proto package name with proper prefix. -option java_package = "org.openapi_v2"; - -// A reasonable prefix for the Objective-C symbols generated from the package. -// It should at a minimum be 3 characters long, all uppercase, and convention -// is to use an abbreviation of the package name. Something short, but -// hopefully unique enough to not conflict with things that may come along in -// the future. 'GPB' is reserved for the protocol buffer implementation itself. -option objc_class_prefix = "OAS"; - -message AdditionalPropertiesItem { - oneof oneof { - Schema schema = 1; - bool boolean = 2; - } -} - -message Any { - google.protobuf.Any value = 1; - string yaml = 2; -} - -message ApiKeySecurity { - string type = 1; - string name = 2; - string in = 3; - string description = 4; - repeated NamedAny vendor_extension = 5; -} - -message BasicAuthenticationSecurity { - string type = 1; - string description = 2; - repeated NamedAny vendor_extension = 3; -} - -message BodyParameter { - // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. - string description = 1; - // The name of the parameter. - string name = 2; - // Determines the location of the parameter. - string in = 3; - // Determines whether or not this parameter is required or optional. - bool required = 4; - Schema schema = 5; - repeated NamedAny vendor_extension = 6; -} - -// Contact information for the owners of the API. -message Contact { - // The identifying name of the contact person/organization. - string name = 1; - // The URL pointing to the contact information. - string url = 2; - // The email address of the contact person/organization. - string email = 3; - repeated NamedAny vendor_extension = 4; -} - -message Default { - repeated NamedAny additional_properties = 1; -} - -// One or more JSON objects describing the schemas being consumed and produced by the API. -message Definitions { - repeated NamedSchema additional_properties = 1; -} - -message Document { - // The Swagger version of this document. - string swagger = 1; - Info info = 2; - // The host (name or ip) of the API. Example: 'swagger.io' - string host = 3; - // The base path to the API. Example: '/api'. - string base_path = 4; - // The transfer protocol of the API. - repeated string schemes = 5; - // A list of MIME types accepted by the API. - repeated string consumes = 6; - // A list of MIME types the API can produce. - repeated string produces = 7; - Paths paths = 8; - Definitions definitions = 9; - ParameterDefinitions parameters = 10; - ResponseDefinitions responses = 11; - repeated SecurityRequirement security = 12; - SecurityDefinitions security_definitions = 13; - repeated Tag tags = 14; - ExternalDocs external_docs = 15; - repeated NamedAny vendor_extension = 16; -} - -message Examples { - repeated NamedAny additional_properties = 1; -} - -// information about external documentation -message ExternalDocs { - string description = 1; - string url = 2; - repeated NamedAny vendor_extension = 3; -} - -// A deterministic version of a JSON Schema object. -message FileSchema { - string format = 1; - string title = 2; - string description = 3; - Any default = 4; - repeated string required = 5; - string type = 6; - bool read_only = 7; - ExternalDocs external_docs = 8; - Any example = 9; - repeated NamedAny vendor_extension = 10; -} - -message FormDataParameterSubSchema { - // Determines whether or not this parameter is required or optional. - bool required = 1; - // Determines the location of the parameter. - string in = 2; - // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. - string description = 3; - // The name of the parameter. - string name = 4; - // allows sending a parameter by name only or with an empty value. - bool allow_empty_value = 5; - string type = 6; - string format = 7; - PrimitivesItems items = 8; - string collection_format = 9; - Any default = 10; - double maximum = 11; - bool exclusive_maximum = 12; - double minimum = 13; - bool exclusive_minimum = 14; - int64 max_length = 15; - int64 min_length = 16; - string pattern = 17; - int64 max_items = 18; - int64 min_items = 19; - bool unique_items = 20; - repeated Any enum = 21; - double multiple_of = 22; - repeated NamedAny vendor_extension = 23; -} - -message Header { - string type = 1; - string format = 2; - PrimitivesItems items = 3; - string collection_format = 4; - Any default = 5; - double maximum = 6; - bool exclusive_maximum = 7; - double minimum = 8; - bool exclusive_minimum = 9; - int64 max_length = 10; - int64 min_length = 11; - string pattern = 12; - int64 max_items = 13; - int64 min_items = 14; - bool unique_items = 15; - repeated Any enum = 16; - double multiple_of = 17; - string description = 18; - repeated NamedAny vendor_extension = 19; -} - -message HeaderParameterSubSchema { - // Determines whether or not this parameter is required or optional. - bool required = 1; - // Determines the location of the parameter. - string in = 2; - // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. - string description = 3; - // The name of the parameter. - string name = 4; - string type = 5; - string format = 6; - PrimitivesItems items = 7; - string collection_format = 8; - Any default = 9; - double maximum = 10; - bool exclusive_maximum = 11; - double minimum = 12; - bool exclusive_minimum = 13; - int64 max_length = 14; - int64 min_length = 15; - string pattern = 16; - int64 max_items = 17; - int64 min_items = 18; - bool unique_items = 19; - repeated Any enum = 20; - double multiple_of = 21; - repeated NamedAny vendor_extension = 22; -} - -message Headers { - repeated NamedHeader additional_properties = 1; -} - -// General information about the API. -message Info { - // A unique and precise title of the API. - string title = 1; - // A semantic version number of the API. - string version = 2; - // A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed. - string description = 3; - // The terms of service for the API. - string terms_of_service = 4; - Contact contact = 5; - License license = 6; - repeated NamedAny vendor_extension = 7; -} - -message ItemsItem { - repeated Schema schema = 1; -} - -message JsonReference { - string _ref = 1; - string description = 2; -} - -message License { - // The name of the license type. It's encouraged to use an OSI compatible license. - string name = 1; - // The URL pointing to the license. - string url = 2; - repeated NamedAny vendor_extension = 3; -} - -// Automatically-generated message used to represent maps of Any as ordered (name,value) pairs. -message NamedAny { - // Map key - string name = 1; - // Mapped value - Any value = 2; -} - -// Automatically-generated message used to represent maps of Header as ordered (name,value) pairs. -message NamedHeader { - // Map key - string name = 1; - // Mapped value - Header value = 2; -} - -// Automatically-generated message used to represent maps of Parameter as ordered (name,value) pairs. -message NamedParameter { - // Map key - string name = 1; - // Mapped value - Parameter value = 2; -} - -// Automatically-generated message used to represent maps of PathItem as ordered (name,value) pairs. -message NamedPathItem { - // Map key - string name = 1; - // Mapped value - PathItem value = 2; -} - -// Automatically-generated message used to represent maps of Response as ordered (name,value) pairs. -message NamedResponse { - // Map key - string name = 1; - // Mapped value - Response value = 2; -} - -// Automatically-generated message used to represent maps of ResponseValue as ordered (name,value) pairs. -message NamedResponseValue { - // Map key - string name = 1; - // Mapped value - ResponseValue value = 2; -} - -// Automatically-generated message used to represent maps of Schema as ordered (name,value) pairs. -message NamedSchema { - // Map key - string name = 1; - // Mapped value - Schema value = 2; -} - -// Automatically-generated message used to represent maps of SecurityDefinitionsItem as ordered (name,value) pairs. -message NamedSecurityDefinitionsItem { - // Map key - string name = 1; - // Mapped value - SecurityDefinitionsItem value = 2; -} - -// Automatically-generated message used to represent maps of string as ordered (name,value) pairs. -message NamedString { - // Map key - string name = 1; - // Mapped value - string value = 2; -} - -// Automatically-generated message used to represent maps of StringArray as ordered (name,value) pairs. -message NamedStringArray { - // Map key - string name = 1; - // Mapped value - StringArray value = 2; -} - -message NonBodyParameter { - oneof oneof { - HeaderParameterSubSchema header_parameter_sub_schema = 1; - FormDataParameterSubSchema form_data_parameter_sub_schema = 2; - QueryParameterSubSchema query_parameter_sub_schema = 3; - PathParameterSubSchema path_parameter_sub_schema = 4; - } -} - -message Oauth2AccessCodeSecurity { - string type = 1; - string flow = 2; - Oauth2Scopes scopes = 3; - string authorization_url = 4; - string token_url = 5; - string description = 6; - repeated NamedAny vendor_extension = 7; -} - -message Oauth2ApplicationSecurity { - string type = 1; - string flow = 2; - Oauth2Scopes scopes = 3; - string token_url = 4; - string description = 5; - repeated NamedAny vendor_extension = 6; -} - -message Oauth2ImplicitSecurity { - string type = 1; - string flow = 2; - Oauth2Scopes scopes = 3; - string authorization_url = 4; - string description = 5; - repeated NamedAny vendor_extension = 6; -} - -message Oauth2PasswordSecurity { - string type = 1; - string flow = 2; - Oauth2Scopes scopes = 3; - string token_url = 4; - string description = 5; - repeated NamedAny vendor_extension = 6; -} - -message Oauth2Scopes { - repeated NamedString additional_properties = 1; -} - -message Operation { - repeated string tags = 1; - // A brief summary of the operation. - string summary = 2; - // A longer description of the operation, GitHub Flavored Markdown is allowed. - string description = 3; - ExternalDocs external_docs = 4; - // A unique identifier of the operation. - string operation_id = 5; - // A list of MIME types the API can produce. - repeated string produces = 6; - // A list of MIME types the API can consume. - repeated string consumes = 7; - // The parameters needed to send a valid API call. - repeated ParametersItem parameters = 8; - Responses responses = 9; - // The transfer protocol of the API. - repeated string schemes = 10; - bool deprecated = 11; - repeated SecurityRequirement security = 12; - repeated NamedAny vendor_extension = 13; -} - -message Parameter { - oneof oneof { - BodyParameter body_parameter = 1; - NonBodyParameter non_body_parameter = 2; - } -} - -// One or more JSON representations for parameters -message ParameterDefinitions { - repeated NamedParameter additional_properties = 1; -} - -message ParametersItem { - oneof oneof { - Parameter parameter = 1; - JsonReference json_reference = 2; - } -} - -message PathItem { - string _ref = 1; - Operation get = 2; - Operation put = 3; - Operation post = 4; - Operation delete = 5; - Operation options = 6; - Operation head = 7; - Operation patch = 8; - // The parameters needed to send a valid API call. - repeated ParametersItem parameters = 9; - repeated NamedAny vendor_extension = 10; -} - -message PathParameterSubSchema { - // Determines whether or not this parameter is required or optional. - bool required = 1; - // Determines the location of the parameter. - string in = 2; - // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. - string description = 3; - // The name of the parameter. - string name = 4; - string type = 5; - string format = 6; - PrimitivesItems items = 7; - string collection_format = 8; - Any default = 9; - double maximum = 10; - bool exclusive_maximum = 11; - double minimum = 12; - bool exclusive_minimum = 13; - int64 max_length = 14; - int64 min_length = 15; - string pattern = 16; - int64 max_items = 17; - int64 min_items = 18; - bool unique_items = 19; - repeated Any enum = 20; - double multiple_of = 21; - repeated NamedAny vendor_extension = 22; -} - -// Relative paths to the individual endpoints. They must be relative to the 'basePath'. -message Paths { - repeated NamedAny vendor_extension = 1; - repeated NamedPathItem path = 2; -} - -message PrimitivesItems { - string type = 1; - string format = 2; - PrimitivesItems items = 3; - string collection_format = 4; - Any default = 5; - double maximum = 6; - bool exclusive_maximum = 7; - double minimum = 8; - bool exclusive_minimum = 9; - int64 max_length = 10; - int64 min_length = 11; - string pattern = 12; - int64 max_items = 13; - int64 min_items = 14; - bool unique_items = 15; - repeated Any enum = 16; - double multiple_of = 17; - repeated NamedAny vendor_extension = 18; -} - -message Properties { - repeated NamedSchema additional_properties = 1; -} - -message QueryParameterSubSchema { - // Determines whether or not this parameter is required or optional. - bool required = 1; - // Determines the location of the parameter. - string in = 2; - // A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed. - string description = 3; - // The name of the parameter. - string name = 4; - // allows sending a parameter by name only or with an empty value. - bool allow_empty_value = 5; - string type = 6; - string format = 7; - PrimitivesItems items = 8; - string collection_format = 9; - Any default = 10; - double maximum = 11; - bool exclusive_maximum = 12; - double minimum = 13; - bool exclusive_minimum = 14; - int64 max_length = 15; - int64 min_length = 16; - string pattern = 17; - int64 max_items = 18; - int64 min_items = 19; - bool unique_items = 20; - repeated Any enum = 21; - double multiple_of = 22; - repeated NamedAny vendor_extension = 23; -} - -message Response { - string description = 1; - SchemaItem schema = 2; - Headers headers = 3; - Examples examples = 4; - repeated NamedAny vendor_extension = 5; -} - -// One or more JSON representations for parameters -message ResponseDefinitions { - repeated NamedResponse additional_properties = 1; -} - -message ResponseValue { - oneof oneof { - Response response = 1; - JsonReference json_reference = 2; - } -} - -// Response objects names can either be any valid HTTP status code or 'default'. -message Responses { - repeated NamedResponseValue response_code = 1; - repeated NamedAny vendor_extension = 2; -} - -// A deterministic version of a JSON Schema object. -message Schema { - string _ref = 1; - string format = 2; - string title = 3; - string description = 4; - Any default = 5; - double multiple_of = 6; - double maximum = 7; - bool exclusive_maximum = 8; - double minimum = 9; - bool exclusive_minimum = 10; - int64 max_length = 11; - int64 min_length = 12; - string pattern = 13; - int64 max_items = 14; - int64 min_items = 15; - bool unique_items = 16; - int64 max_properties = 17; - int64 min_properties = 18; - repeated string required = 19; - repeated Any enum = 20; - AdditionalPropertiesItem additional_properties = 21; - TypeItem type = 22; - ItemsItem items = 23; - repeated Schema all_of = 24; - Properties properties = 25; - string discriminator = 26; - bool read_only = 27; - Xml xml = 28; - ExternalDocs external_docs = 29; - Any example = 30; - repeated NamedAny vendor_extension = 31; -} - -message SchemaItem { - oneof oneof { - Schema schema = 1; - FileSchema file_schema = 2; - } -} - -message SecurityDefinitions { - repeated NamedSecurityDefinitionsItem additional_properties = 1; -} - -message SecurityDefinitionsItem { - oneof oneof { - BasicAuthenticationSecurity basic_authentication_security = 1; - ApiKeySecurity api_key_security = 2; - Oauth2ImplicitSecurity oauth2_implicit_security = 3; - Oauth2PasswordSecurity oauth2_password_security = 4; - Oauth2ApplicationSecurity oauth2_application_security = 5; - Oauth2AccessCodeSecurity oauth2_access_code_security = 6; - } -} - -message SecurityRequirement { - repeated NamedStringArray additional_properties = 1; -} - -message StringArray { - repeated string value = 1; -} - -message Tag { - string name = 1; - string description = 2; - ExternalDocs external_docs = 3; - repeated NamedAny vendor_extension = 4; -} - -message TypeItem { - repeated string value = 1; -} - -// Any property starting with x- is valid. -message VendorExtension { - repeated NamedAny additional_properties = 1; -} - -message Xml { - string name = 1; - string namespace = 2; - string prefix = 3; - bool attribute = 4; - bool wrapped = 5; - repeated NamedAny vendor_extension = 6; -} - diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md b/vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md deleted file mode 100644 index 836fb32a7ef0..000000000000 --- a/vendor/github.com/googleapis/gnostic/OpenAPIv2/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# OpenAPI v2 Protocol Buffer Models - -This directory contains a Protocol Buffer-language model -and related code for supporting OpenAPI v2. - -Gnostic applications and plugins can use OpenAPIv2.proto -to generate Protocol Buffer support code for their preferred languages. - -OpenAPIv2.go is used by Gnostic to read JSON and YAML OpenAPI -descriptions into the Protocol Buffer-based datastructures -generated from OpenAPIv2.proto. - -OpenAPIv2.proto and OpenAPIv2.go are generated by the Gnostic -compiler generator, and OpenAPIv2.pb.go is generated by -protoc, the Protocol Buffer compiler, and protoc-gen-go, the -Protocol Buffer Go code generation plugin. diff --git a/vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json b/vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json deleted file mode 100644 index 2815a26ea718..000000000000 --- a/vendor/github.com/googleapis/gnostic/OpenAPIv2/openapi-2.0.json +++ /dev/null @@ -1,1610 +0,0 @@ -{ - "title": "A JSON Schema for Swagger 2.0 API.", - "id": "http://swagger.io/v2/schema.json#", - "$schema": "http://json-schema.org/draft-04/schema#", - "type": "object", - "required": [ - "swagger", - "info", - "paths" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "swagger": { - "type": "string", - "enum": [ - "2.0" - ], - "description": "The Swagger version of this document." - }, - "info": { - "$ref": "#/definitions/info" - }, - "host": { - "type": "string", - "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$", - "description": "The host (name or ip) of the API. Example: 'swagger.io'" - }, - "basePath": { - "type": "string", - "pattern": "^/", - "description": "The base path to the API. Example: '/api'." - }, - "schemes": { - "$ref": "#/definitions/schemesList" - }, - "consumes": { - "description": "A list of MIME types accepted by the API.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "produces": { - "description": "A list of MIME types the API can produce.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "paths": { - "$ref": "#/definitions/paths" - }, - "definitions": { - "$ref": "#/definitions/definitions" - }, - "parameters": { - "$ref": "#/definitions/parameterDefinitions" - }, - "responses": { - "$ref": "#/definitions/responseDefinitions" - }, - "security": { - "$ref": "#/definitions/security" - }, - "securityDefinitions": { - "$ref": "#/definitions/securityDefinitions" - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/definitions/tag" - }, - "uniqueItems": true - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - } - }, - "definitions": { - "info": { - "type": "object", - "description": "General information about the API.", - "required": [ - "version", - "title" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "title": { - "type": "string", - "description": "A unique and precise title of the API." - }, - "version": { - "type": "string", - "description": "A semantic version number of the API." - }, - "description": { - "type": "string", - "description": "A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed." - }, - "termsOfService": { - "type": "string", - "description": "The terms of service for the API." - }, - "contact": { - "$ref": "#/definitions/contact" - }, - "license": { - "$ref": "#/definitions/license" - } - } - }, - "contact": { - "type": "object", - "description": "Contact information for the owners of the API.", - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "The identifying name of the contact person/organization." - }, - "url": { - "type": "string", - "description": "The URL pointing to the contact information.", - "format": "uri" - }, - "email": { - "type": "string", - "description": "The email address of the contact person/organization.", - "format": "email" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "license": { - "type": "object", - "required": [ - "name" - ], - "additionalProperties": false, - "properties": { - "name": { - "type": "string", - "description": "The name of the license type. It's encouraged to use an OSI compatible license." - }, - "url": { - "type": "string", - "description": "The URL pointing to the license.", - "format": "uri" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "paths": { - "type": "object", - "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.", - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - }, - "^/": { - "$ref": "#/definitions/pathItem" - } - }, - "additionalProperties": false - }, - "definitions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "description": "One or more JSON objects describing the schemas being consumed and produced by the API." - }, - "parameterDefinitions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/parameter" - }, - "description": "One or more JSON representations for parameters" - }, - "responseDefinitions": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/response" - }, - "description": "One or more JSON representations for parameters" - }, - "externalDocs": { - "type": "object", - "additionalProperties": false, - "description": "information about external documentation", - "required": [ - "url" - ], - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "examples": { - "type": "object", - "additionalProperties": true - }, - "mimeType": { - "type": "string", - "description": "The MIME type of the HTTP message." - }, - "operation": { - "type": "object", - "required": [ - "responses" - ], - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "tags": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - }, - "summary": { - "type": "string", - "description": "A brief summary of the operation." - }, - "description": { - "type": "string", - "description": "A longer description of the operation, GitHub Flavored Markdown is allowed." - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - }, - "operationId": { - "type": "string", - "description": "A unique identifier of the operation." - }, - "produces": { - "description": "A list of MIME types the API can produce.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "consumes": { - "description": "A list of MIME types the API can consume.", - "allOf": [ - { - "$ref": "#/definitions/mediaTypeList" - } - ] - }, - "parameters": { - "$ref": "#/definitions/parametersList" - }, - "responses": { - "$ref": "#/definitions/responses" - }, - "schemes": { - "$ref": "#/definitions/schemesList" - }, - "deprecated": { - "type": "boolean", - "default": false - }, - "security": { - "$ref": "#/definitions/security" - } - } - }, - "pathItem": { - "type": "object", - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "$ref": { - "type": "string" - }, - "get": { - "$ref": "#/definitions/operation" - }, - "put": { - "$ref": "#/definitions/operation" - }, - "post": { - "$ref": "#/definitions/operation" - }, - "delete": { - "$ref": "#/definitions/operation" - }, - "options": { - "$ref": "#/definitions/operation" - }, - "head": { - "$ref": "#/definitions/operation" - }, - "patch": { - "$ref": "#/definitions/operation" - }, - "parameters": { - "$ref": "#/definitions/parametersList" - } - } - }, - "responses": { - "type": "object", - "description": "Response objects names can either be any valid HTTP status code or 'default'.", - "minProperties": 1, - "additionalProperties": false, - "patternProperties": { - "^([0-9]{3})$|^(default)$": { - "$ref": "#/definitions/responseValue" - }, - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "not": { - "type": "object", - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - } - }, - "responseValue": { - "oneOf": [ - { - "$ref": "#/definitions/response" - }, - { - "$ref": "#/definitions/jsonReference" - } - ] - }, - "response": { - "type": "object", - "required": [ - "description" - ], - "properties": { - "description": { - "type": "string" - }, - "schema": { - "oneOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "$ref": "#/definitions/fileSchema" - } - ] - }, - "headers": { - "$ref": "#/definitions/headers" - }, - "examples": { - "$ref": "#/definitions/examples" - } - }, - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "headers": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/header" - } - }, - "header": { - "type": "object", - "additionalProperties": false, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "integer", - "boolean", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "vendorExtension": { - "description": "Any property starting with x- is valid.", - "additionalProperties": true, - "additionalItems": true - }, - "bodyParameter": { - "type": "object", - "required": [ - "name", - "in", - "schema" - ], - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "body" - ] - }, - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "schema": { - "$ref": "#/definitions/schema" - } - }, - "additionalProperties": false - }, - "headerParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "header" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "queryParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "query" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "allowEmptyValue": { - "type": "boolean", - "default": false, - "description": "allows sending a parameter by name only or with an empty value." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormatWithMulti" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "formDataParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "required": { - "type": "boolean", - "description": "Determines whether or not this parameter is required or optional.", - "default": false - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "formData" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "allowEmptyValue": { - "type": "boolean", - "default": false, - "description": "allows sending a parameter by name only or with an empty value." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array", - "file" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormatWithMulti" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "pathParameterSubSchema": { - "additionalProperties": false, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "required": [ - "required" - ], - "properties": { - "required": { - "type": "boolean", - "enum": [ - true - ], - "description": "Determines whether or not this parameter is required or optional." - }, - "in": { - "type": "string", - "description": "Determines the location of the parameter.", - "enum": [ - "path" - ] - }, - "description": { - "type": "string", - "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed." - }, - "name": { - "type": "string", - "description": "The name of the parameter." - }, - "type": { - "type": "string", - "enum": [ - "string", - "number", - "boolean", - "integer", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - } - }, - "nonBodyParameter": { - "type": "object", - "required": [ - "name", - "in", - "type" - ], - "oneOf": [ - { - "$ref": "#/definitions/headerParameterSubSchema" - }, - { - "$ref": "#/definitions/formDataParameterSubSchema" - }, - { - "$ref": "#/definitions/queryParameterSubSchema" - }, - { - "$ref": "#/definitions/pathParameterSubSchema" - } - ] - }, - "parameter": { - "oneOf": [ - { - "$ref": "#/definitions/bodyParameter" - }, - { - "$ref": "#/definitions/nonBodyParameter" - } - ] - }, - "schema": { - "type": "object", - "description": "A deterministic version of a JSON Schema object.", - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "properties": { - "$ref": { - "type": "string" - }, - "format": { - "type": "string" - }, - "title": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/title" - }, - "description": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/description" - }, - "default": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/default" - }, - "multipleOf": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" - }, - "maximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" - }, - "exclusiveMaximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" - }, - "minimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" - }, - "exclusiveMinimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" - }, - "maxLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "pattern": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" - }, - "maxItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "uniqueItems": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" - }, - "maxProperties": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minProperties": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "required": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" - }, - "enum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" - }, - "additionalProperties": { - "oneOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "type": "boolean" - } - ], - "default": {} - }, - "type": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/type" - }, - "items": { - "anyOf": [ - { - "$ref": "#/definitions/schema" - }, - { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - } - ], - "default": {} - }, - "allOf": { - "type": "array", - "minItems": 1, - "items": { - "$ref": "#/definitions/schema" - } - }, - "properties": { - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/schema" - }, - "default": {} - }, - "discriminator": { - "type": "string" - }, - "readOnly": { - "type": "boolean", - "default": false - }, - "xml": { - "$ref": "#/definitions/xml" - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - }, - "example": {} - }, - "additionalProperties": false - }, - "fileSchema": { - "type": "object", - "description": "A deterministic version of a JSON Schema object.", - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - }, - "required": [ - "type" - ], - "properties": { - "format": { - "type": "string" - }, - "title": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/title" - }, - "description": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/description" - }, - "default": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/default" - }, - "required": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray" - }, - "type": { - "type": "string", - "enum": [ - "file" - ] - }, - "readOnly": { - "type": "boolean", - "default": false - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - }, - "example": {} - }, - "additionalProperties": false - }, - "primitivesItems": { - "type": "object", - "additionalProperties": false, - "properties": { - "type": { - "type": "string", - "enum": [ - "string", - "number", - "integer", - "boolean", - "array" - ] - }, - "format": { - "type": "string" - }, - "items": { - "$ref": "#/definitions/primitivesItems" - }, - "collectionFormat": { - "$ref": "#/definitions/collectionFormat" - }, - "default": { - "$ref": "#/definitions/default" - }, - "maximum": { - "$ref": "#/definitions/maximum" - }, - "exclusiveMaximum": { - "$ref": "#/definitions/exclusiveMaximum" - }, - "minimum": { - "$ref": "#/definitions/minimum" - }, - "exclusiveMinimum": { - "$ref": "#/definitions/exclusiveMinimum" - }, - "maxLength": { - "$ref": "#/definitions/maxLength" - }, - "minLength": { - "$ref": "#/definitions/minLength" - }, - "pattern": { - "$ref": "#/definitions/pattern" - }, - "maxItems": { - "$ref": "#/definitions/maxItems" - }, - "minItems": { - "$ref": "#/definitions/minItems" - }, - "uniqueItems": { - "$ref": "#/definitions/uniqueItems" - }, - "enum": { - "$ref": "#/definitions/enum" - }, - "multipleOf": { - "$ref": "#/definitions/multipleOf" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "security": { - "type": "array", - "items": { - "$ref": "#/definitions/securityRequirement" - }, - "uniqueItems": true - }, - "securityRequirement": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - }, - "uniqueItems": true - } - }, - "xml": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "namespace": { - "type": "string" - }, - "prefix": { - "type": "string" - }, - "attribute": { - "type": "boolean", - "default": false - }, - "wrapped": { - "type": "boolean", - "default": false - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "tag": { - "type": "object", - "additionalProperties": false, - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "$ref": "#/definitions/externalDocs" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "securityDefinitions": { - "type": "object", - "additionalProperties": { - "oneOf": [ - { - "$ref": "#/definitions/basicAuthenticationSecurity" - }, - { - "$ref": "#/definitions/apiKeySecurity" - }, - { - "$ref": "#/definitions/oauth2ImplicitSecurity" - }, - { - "$ref": "#/definitions/oauth2PasswordSecurity" - }, - { - "$ref": "#/definitions/oauth2ApplicationSecurity" - }, - { - "$ref": "#/definitions/oauth2AccessCodeSecurity" - } - ] - } - }, - "basicAuthenticationSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "basic" - ] - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "apiKeySecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "name", - "in" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "apiKey" - ] - }, - "name": { - "type": "string" - }, - "in": { - "type": "string", - "enum": [ - "header", - "query" - ] - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2ImplicitSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "authorizationUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "implicit" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "authorizationUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2PasswordSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "tokenUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "password" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "tokenUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2ApplicationSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "tokenUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "application" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "tokenUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2AccessCodeSecurity": { - "type": "object", - "additionalProperties": false, - "required": [ - "type", - "flow", - "authorizationUrl", - "tokenUrl" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "oauth2" - ] - }, - "flow": { - "type": "string", - "enum": [ - "accessCode" - ] - }, - "scopes": { - "$ref": "#/definitions/oauth2Scopes" - }, - "authorizationUrl": { - "type": "string", - "format": "uri" - }, - "tokenUrl": { - "type": "string", - "format": "uri" - }, - "description": { - "type": "string" - } - }, - "patternProperties": { - "^x-": { - "$ref": "#/definitions/vendorExtension" - } - } - }, - "oauth2Scopes": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "mediaTypeList": { - "type": "array", - "items": { - "$ref": "#/definitions/mimeType" - }, - "uniqueItems": true - }, - "parametersList": { - "type": "array", - "description": "The parameters needed to send a valid API call.", - "additionalItems": false, - "items": { - "oneOf": [ - { - "$ref": "#/definitions/parameter" - }, - { - "$ref": "#/definitions/jsonReference" - } - ] - }, - "uniqueItems": true - }, - "schemesList": { - "type": "array", - "description": "The transfer protocol of the API.", - "items": { - "type": "string", - "enum": [ - "http", - "https", - "ws", - "wss" - ] - }, - "uniqueItems": true - }, - "collectionFormat": { - "type": "string", - "enum": [ - "csv", - "ssv", - "tsv", - "pipes" - ], - "default": "csv" - }, - "collectionFormatWithMulti": { - "type": "string", - "enum": [ - "csv", - "ssv", - "tsv", - "pipes", - "multi" - ], - "default": "csv" - }, - "title": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/title" - }, - "description": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/description" - }, - "default": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/default" - }, - "multipleOf": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf" - }, - "maximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum" - }, - "exclusiveMaximum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum" - }, - "minimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum" - }, - "exclusiveMinimum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum" - }, - "maxLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minLength": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "pattern": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern" - }, - "maxItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger" - }, - "minItems": { - "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0" - }, - "uniqueItems": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems" - }, - "enum": { - "$ref": "http://json-schema.org/draft-04/schema#/properties/enum" - }, - "jsonReference": { - "type": "object", - "required": [ - "$ref" - ], - "additionalProperties": false, - "properties": { - "$ref": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - } -} diff --git a/vendor/github.com/googleapis/gnostic/compiler/README.md b/vendor/github.com/googleapis/gnostic/compiler/README.md deleted file mode 100644 index 848b16c69b80..000000000000 --- a/vendor/github.com/googleapis/gnostic/compiler/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Compiler support code - -This directory contains compiler support code used by Gnostic and Gnostic extensions. \ No newline at end of file diff --git a/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh b/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh deleted file mode 100755 index 68d02a02ac5d..000000000000 --- a/vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh +++ /dev/null @@ -1,5 +0,0 @@ -go get github.com/golang/protobuf/protoc-gen-go - -protoc \ ---go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any:. *.proto - diff --git a/vendor/github.com/googleapis/gnostic/extensions/README.md b/vendor/github.com/googleapis/gnostic/extensions/README.md deleted file mode 100644 index ff1c2eb1e3ad..000000000000 --- a/vendor/github.com/googleapis/gnostic/extensions/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Extensions - -This directory contains support code for building Gnostic extensions and associated examples. - -Extensions are used to compile vendor or specification extensions into protocol buffer structures. diff --git a/vendor/github.com/googleapis/gnostic/extensions/extension.proto b/vendor/github.com/googleapis/gnostic/extensions/extension.proto deleted file mode 100644 index 806760a13292..000000000000 --- a/vendor/github.com/googleapis/gnostic/extensions/extension.proto +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright 2017 Google Inc. All Rights Reserved. -// -// 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 -// -// http://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. - -syntax = "proto3"; - -import "google/protobuf/any.proto"; -package openapiextension.v1; - -// This option lets the proto compiler generate Java code inside the package -// name (see below) instead of inside an outer class. It creates a simpler -// developer experience by reducing one-level of name nesting and be -// consistent with most programming languages that don't support outer classes. -option java_multiple_files = true; - -// The Java outer classname should be the filename in UpperCamelCase. This -// class is only used to hold proto descriptor, so developers don't need to -// work with it directly. -option java_outer_classname = "OpenAPIExtensionV1"; - -// The Java package name must be proto package name with proper prefix. -option java_package = "org.openapic.v1"; - -// A reasonable prefix for the Objective-C symbols generated from the package. -// It should at a minimum be 3 characters long, all uppercase, and convention -// is to use an abbreviation of the package name. Something short, but -// hopefully unique enough to not conflict with things that may come along in -// the future. 'GPB' is reserved for the protocol buffer implementation itself. -// -option objc_class_prefix = "OAE"; // "OpenAPI Extension" - -// The version number of OpenAPI compiler. -message Version { - int32 major = 1; - int32 minor = 2; - int32 patch = 3; - // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should - // be empty for mainline stable releases. - string suffix = 4; -} - -// An encoded Request is written to the ExtensionHandler's stdin. -message ExtensionHandlerRequest { - - // The OpenAPI descriptions that were explicitly listed on the command line. - // The specifications will appear in the order they are specified to openapic. - Wrapper wrapper = 1; - - // The version number of openapi compiler. - Version compiler_version = 3; -} - -// The extensions writes an encoded ExtensionHandlerResponse to stdout. -message ExtensionHandlerResponse { - - // true if the extension is handled by the extension handler; false otherwise - bool handled = 1; - - // Error message. If non-empty, the extension handling failed. - // The extension handler process should exit with status code zero - // even if it reports an error in this way. - // - // This should be used to indicate errors which prevent the extension from - // operating as intended. Errors which indicate a problem in gnostic - // itself -- such as the input Document being unparseable -- should be - // reported by writing a message to stderr and exiting with a non-zero - // status code. - repeated string error = 2; - - // text output - google.protobuf.Any value = 3; -} - -message Wrapper { - // version of the OpenAPI specification in which this extension was written. - string version = 1; - - // Name of the extension - string extension_name = 2; - - // Must be a valid yaml for the proto - string yaml = 3; -} diff --git a/vendor/github.com/hashicorp/errwrap/README.md b/vendor/github.com/hashicorp/errwrap/README.md deleted file mode 100644 index 1c95f59782bb..000000000000 --- a/vendor/github.com/hashicorp/errwrap/README.md +++ /dev/null @@ -1,89 +0,0 @@ -# errwrap - -`errwrap` is a package for Go that formalizes the pattern of wrapping errors -and checking if an error contains another error. - -There is a common pattern in Go of taking a returned `error` value and -then wrapping it (such as with `fmt.Errorf`) before returning it. The problem -with this pattern is that you completely lose the original `error` structure. - -Arguably the _correct_ approach is that you should make a custom structure -implementing the `error` interface, and have the original error as a field -on that structure, such [as this example](http://golang.org/pkg/os/#PathError). -This is a good approach, but you have to know the entire chain of possible -rewrapping that happens, when you might just care about one. - -`errwrap` formalizes this pattern (it doesn't matter what approach you use -above) by giving a single interface for wrapping errors, checking if a specific -error is wrapped, and extracting that error. - -## Installation and Docs - -Install using `go get github.com/hashicorp/errwrap`. - -Full documentation is available at -http://godoc.org/github.com/hashicorp/errwrap - -## Usage - -#### Basic Usage - -Below is a very basic example of its usage: - -```go -// A function that always returns an error, but wraps it, like a real -// function might. -func tryOpen() error { - _, err := os.Open("/i/dont/exist") - if err != nil { - return errwrap.Wrapf("Doesn't exist: {{err}}", err) - } - - return nil -} - -func main() { - err := tryOpen() - - // We can use the Contains helpers to check if an error contains - // another error. It is safe to do this with a nil error, or with - // an error that doesn't even use the errwrap package. - if errwrap.Contains(err, ErrNotExist) { - // Do something - } - if errwrap.ContainsType(err, new(os.PathError)) { - // Do something - } - - // Or we can use the associated `Get` functions to just extract - // a specific error. This would return nil if that specific error doesn't - // exist. - perr := errwrap.GetType(err, new(os.PathError)) -} -``` - -#### Custom Types - -If you're already making custom types that properly wrap errors, then -you can get all the functionality of `errwraps.Contains` and such by -implementing the `Wrapper` interface with just one function. Example: - -```go -type AppError { - Code ErrorCode - Err error -} - -func (e *AppError) WrappedErrors() []error { - return []error{e.Err} -} -``` - -Now this works: - -```go -err := &AppError{Err: fmt.Errorf("an error")} -if errwrap.ContainsType(err, fmt.Errorf("")) { - // This will work! -} -``` diff --git a/vendor/github.com/hashicorp/go-multierror/.travis.yml b/vendor/github.com/hashicorp/go-multierror/.travis.yml deleted file mode 100644 index 4b865d194a60..000000000000 --- a/vendor/github.com/hashicorp/go-multierror/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: false - -language: go - -go: - - 1.6 - -branches: - only: - - master - -script: make test testrace diff --git a/vendor/github.com/hashicorp/go-multierror/Makefile b/vendor/github.com/hashicorp/go-multierror/Makefile deleted file mode 100644 index b97cd6ed02b5..000000000000 --- a/vendor/github.com/hashicorp/go-multierror/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -TEST?=./... - -default: test - -# test runs the test suite and vets the code. -test: generate - @echo "==> Running tests..." - @go list $(TEST) \ - | grep -v "/vendor/" \ - | xargs -n1 go test -timeout=60s -parallel=10 ${TESTARGS} - -# testrace runs the race checker -testrace: generate - @echo "==> Running tests (race)..." - @go list $(TEST) \ - | grep -v "/vendor/" \ - | xargs -n1 go test -timeout=60s -race ${TESTARGS} - -# updatedeps installs all the dependencies needed to run and build. -updatedeps: - @sh -c "'${CURDIR}/scripts/deps.sh' '${NAME}'" - -# generate runs `go generate` to build the dynamically generated source files. -generate: - @echo "==> Generating..." - @find . -type f -name '.DS_Store' -delete - @go list ./... \ - | grep -v "/vendor/" \ - | xargs -n1 go generate - -.PHONY: default test testrace updatedeps generate diff --git a/vendor/github.com/hashicorp/go-multierror/README.md b/vendor/github.com/hashicorp/go-multierror/README.md deleted file mode 100644 index ead5830f7b76..000000000000 --- a/vendor/github.com/hashicorp/go-multierror/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# go-multierror - -[![Build Status](http://img.shields.io/travis/hashicorp/go-multierror.svg?style=flat-square)][travis] -[![Go Documentation](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)][godocs] - -[travis]: https://travis-ci.org/hashicorp/go-multierror -[godocs]: https://godoc.org/github.com/hashicorp/go-multierror - -`go-multierror` is a package for Go that provides a mechanism for -representing a list of `error` values as a single `error`. - -This allows a function in Go to return an `error` that might actually -be a list of errors. If the caller knows this, they can unwrap the -list and access the errors. If the caller doesn't know, the error -formats to a nice human-readable format. - -`go-multierror` implements the -[errwrap](https://github.com/hashicorp/errwrap) interface so that it can -be used with that library, as well. - -## Installation and Docs - -Install using `go get github.com/hashicorp/go-multierror`. - -Full documentation is available at -http://godoc.org/github.com/hashicorp/go-multierror - -## Usage - -go-multierror is easy to use and purposely built to be unobtrusive in -existing Go applications/libraries that may not be aware of it. - -**Building a list of errors** - -The `Append` function is used to create a list of errors. This function -behaves a lot like the Go built-in `append` function: it doesn't matter -if the first argument is nil, a `multierror.Error`, or any other `error`, -the function behaves as you would expect. - -```go -var result error - -if err := step1(); err != nil { - result = multierror.Append(result, err) -} -if err := step2(); err != nil { - result = multierror.Append(result, err) -} - -return result -``` - -**Customizing the formatting of the errors** - -By specifying a custom `ErrorFormat`, you can customize the format -of the `Error() string` function: - -```go -var result *multierror.Error - -// ... accumulate errors here, maybe using Append - -if result != nil { - result.ErrorFormat = func([]error) string { - return "errors!" - } -} -``` - -**Accessing the list of errors** - -`multierror.Error` implements `error` so if the caller doesn't know about -multierror, it will work just fine. But if you're aware a multierror might -be returned, you can use type switches to access the list of errors: - -```go -if err := something(); err != nil { - if merr, ok := err.(*multierror.Error); ok { - // Use merr.Errors - } -} -``` - -**Returning a multierror only if there are errors** - -If you build a `multierror.Error`, you can use the `ErrorOrNil` function -to return an `error` implementation only if there are errors to return: - -```go -var result *multierror.Error - -// ... accumulate errors here - -// Return the `error` only if errors were added to the multierror, otherwise -// return nil since there are no errors. -return result.ErrorOrNil() -``` diff --git a/vendor/github.com/hashicorp/golang-lru/.gitignore b/vendor/github.com/hashicorp/golang-lru/.gitignore deleted file mode 100644 index 836562412fe8..000000000000 --- a/vendor/github.com/hashicorp/golang-lru/.gitignore +++ /dev/null @@ -1,23 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test diff --git a/vendor/github.com/hashicorp/golang-lru/README.md b/vendor/github.com/hashicorp/golang-lru/README.md deleted file mode 100644 index 33e58cfaf97e..000000000000 --- a/vendor/github.com/hashicorp/golang-lru/README.md +++ /dev/null @@ -1,25 +0,0 @@ -golang-lru -========== - -This provides the `lru` package which implements a fixed-size -thread safe LRU cache. It is based on the cache in Groupcache. - -Documentation -============= - -Full docs are available on [Godoc](http://godoc.org/github.com/hashicorp/golang-lru) - -Example -======= - -Using the LRU is very simple: - -```go -l, _ := New(128) -for i := 0; i < 256; i++ { - l.Add(i, nil) -} -if l.Len() != 128 { - panic(fmt.Sprintf("bad len: %v", l.Len())) -} -``` diff --git a/vendor/github.com/hashicorp/hcl/.gitignore b/vendor/github.com/hashicorp/hcl/.gitignore deleted file mode 100644 index 15586a2b540d..000000000000 --- a/vendor/github.com/hashicorp/hcl/.gitignore +++ /dev/null @@ -1,9 +0,0 @@ -y.output - -# ignore intellij files -.idea -*.iml -*.ipr -*.iws - -*.test diff --git a/vendor/github.com/hashicorp/hcl/.travis.yml b/vendor/github.com/hashicorp/hcl/.travis.yml deleted file mode 100644 index 83dc540ef914..000000000000 --- a/vendor/github.com/hashicorp/hcl/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -sudo: false -language: go -go: 1.5 diff --git a/vendor/github.com/hashicorp/hcl/Makefile b/vendor/github.com/hashicorp/hcl/Makefile deleted file mode 100644 index ad404a8113bc..000000000000 --- a/vendor/github.com/hashicorp/hcl/Makefile +++ /dev/null @@ -1,17 +0,0 @@ -TEST?=./... - -default: test - -fmt: generate - go fmt ./... - -test: generate - go test $(TEST) $(TESTARGS) - -generate: - go generate ./... - -updatedeps: - go get -u golang.org/x/tools/cmd/stringer - -.PHONY: default generate test updatedeps diff --git a/vendor/github.com/hashicorp/hcl/README.md b/vendor/github.com/hashicorp/hcl/README.md deleted file mode 100644 index e292d59999dc..000000000000 --- a/vendor/github.com/hashicorp/hcl/README.md +++ /dev/null @@ -1,115 +0,0 @@ -# HCL - -[![GoDoc](https://godoc.org/github.com/hashicorp/hcl?status.png)](https://godoc.org/github.com/hashicorp/hcl) [![Build Status](https://travis-ci.org/hashicorp/hcl.svg?branch=master)](https://travis-ci.org/hashicorp/hcl) - -HCL (HashiCorp Configuration Language) is a configuration language built -by HashiCorp. The goal of HCL is to build a structured configuration language -that is both human and machine friendly for use with command-line tools, but -specifically targeted towards DevOps tools, servers, etc. - -HCL is also fully JSON compatible. That is, JSON can be used as completely -valid input to a system expecting HCL. This helps makes systems -interoperable with other systems. - -HCL is heavily inspired by -[libucl](https://github.com/vstakhov/libucl), -nginx configuration, and others similar. - -## Why? - -A common question when viewing HCL is to ask the question: why not -JSON, YAML, etc.? - -Prior to HCL, the tools we built at [HashiCorp](http://www.hashicorp.com) -used a variety of configuration languages from full programming languages -such as Ruby to complete data structure languages such as JSON. What we -learned is that some people wanted human-friendly configuration languages -and some people wanted machine-friendly languages. - -JSON fits a nice balance in this, but is fairly verbose and most -importantly doesn't support comments. With YAML, we found that beginners -had a really hard time determining what the actual structure was, and -ended up guessing more often than not whether to use a hyphen, colon, etc. -in order to represent some configuration key. - -Full programming languages such as Ruby enable complex behavior -a configuration language shouldn't usually allow, and also forces -people to learn some set of Ruby. - -Because of this, we decided to create our own configuration language -that is JSON-compatible. Our configuration language (HCL) is designed -to be written and modified by humans. The API for HCL allows JSON -as an input so that it is also machine-friendly (machines can generate -JSON instead of trying to generate HCL). - -Our goal with HCL is not to alienate other configuration languages. -It is instead to provide HCL as a specialized language for our tools, -and JSON as the interoperability layer. - -## Syntax - -For a complete grammar, please see the parser itself. A high-level overview -of the syntax and grammar is listed here. - - * Single line comments start with `#` or `//` - - * Multi-line comments are wrapped in `/*` and `*/`. Nested block comments - are not allowed. A multi-line comment (also known as a block comment) - terminates at the first `*/` found. - - * Values are assigned with the syntax `key = value` (whitespace doesn't - matter). The value can be any primitive: a string, number, boolean, - object, or list. - - * Strings are double-quoted and can contain any UTF-8 characters. - Example: `"Hello, World"` - - * Multi-line strings start with `<- - echo %Path% - - go version - - go env -build_script: -- cmd: go test -v ./... diff --git a/vendor/github.com/hooklift/iso9660/.travis.yml b/vendor/github.com/hooklift/iso9660/.travis.yml deleted file mode 100644 index 40ea7c80c6f5..000000000000 --- a/vendor/github.com/hooklift/iso9660/.travis.yml +++ /dev/null @@ -1,15 +0,0 @@ -sudo: false -language: go - -go: - - 1.4 - - 1.5 - - 1.8 - - tip - -matrix: - allow_failures: - - go: tip - -install: - - make deps diff --git a/vendor/github.com/hooklift/iso9660/CONTRIBUTING.md b/vendor/github.com/hooklift/iso9660/CONTRIBUTING.md deleted file mode 100644 index 9e90de7c463d..000000000000 --- a/vendor/github.com/hooklift/iso9660/CONTRIBUTING.md +++ /dev/null @@ -1,51 +0,0 @@ -### Thanks for your interest in contributing to this project and for taking the time to read this guide. - -## Code of conduct -*Taken from http://libvirt.org/governance.html with minor adjustments.* - -The open source community covers people from a wide variety of countries, backgrounds and positions. This global diversity is a great strength for this project, but can also lead to communication issues, which may in turn cause unhappiness. To maximize happiness of the project community taken as a whole, all members (whether users, contributors or committers) are expected to abide by the project's code of conduct. At a high level the code can be summarized as "be excellent to each other". Expanding on this: - -**Be respectful:** disagreements between people are to be expected and are usually the sign of healthy debate and engagement. Disagreements can lead to frustration and even anger for some members. Turning to personal insults, intimidation or threatening behavior does not improve the situation. Participants should thus take care to ensure all communications / interactions stay professional at all times. - -**Be considerate:** remember that the community has members with a diverse background many of whom have English as a second language. What might appear impolite, may simply be a result of a lack of knowledge of the English language. Bear in mind that actions will have an impact on other community members and the project as a whole, so take potential consequences into account before pursuing a course of action. - -**Be forgiving:** humans are fallible and as such prone to make mistakes and inexplicably change their positions at times. Don't assume that other members are acting with malicious intent. Be prepared to forgive people who make mistakes and assist each other in learning from them. Playing a blame game doesn't help anyone. - -## Issues -* Before reporting an issue make sure you search first if anybody has already reported a similar issue and whether or not it has been fixed. -* Make sure your issue report sufficiently details the problem. -* Include code samples reproducing the issue. -* Please do not derail or troll issues. Keep the discussion on topic and respect the Code of conduct. -* If you want to tackle any open issue, make sure you let people know you are working on it. - -## Development workflow -Go is unlike any other language in that it forces a specific development workflow and project structure. Trying to fight it is useless, frustrating and time consuming. So, you better be prepare to adapt your workflow when contributing to Go projects. - -### Prerequisites -* **Go**: To install Go please follow its installation guide at https://golang.org/doc/install -* **Git:** brew install git - -### Pull Requests -* Please be generous describing your changes. -* Although it is highly suggested to include tests, they are not a hard requirement in order to get your contributions accepted. -* Keep pull requests small so core developers can review them quickly. - -### Workflow for third-party code contributions -* In Github, fork `https://github.com/hooklift/iso9660.git` to your own account -* Get the package using "go get": `go get github.com/hooklift/iso9660` -* Move to where the package was cloned: `cd $GOPATH/src/github.com/hooklift/iso9660` -* Add a git remote pointing to your own fork: `git remote add downstream git@github.com:/iso9660.git` -* Create a branch for making your changes, then commit them. -* Push changes to downstream repository, this is your own fork: `git push downstream` -* In Github, from your fork, create the Pull Request and send it upstream. -* You are done. - - -### Workflow for core developers -Since core developers usually have access to the upstream repository, there is no need for having a workflow like the one for thid-party contributors. - -* Get the package using "go get": `go get github.com/hooklift/iso9660` -* Create a branch for making your changes, then commit them. -* Push changes to the repository: `git push origin ` -* In Github, create the Pull Request from your branch to master. -* Before merging into master, wait for at least two developers to code review your contribution. diff --git a/vendor/github.com/hooklift/iso9660/Makefile b/vendor/github.com/hooklift/iso9660/Makefile deleted file mode 100644 index 03b588a4e28c..000000000000 --- a/vendor/github.com/hooklift/iso9660/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -GHACCOUNT := hooklift -NAME := iso9660 -VERSION := v1.0.0 - -include common.mk - -deps: - go get github.com/c4milo/github-release - go get github.com/mitchellh/gox - go get github.com/docopt/docopt-go - go get github.com/c4milo/gotoolkit - go get github.com/hooklift/assert diff --git a/vendor/github.com/hooklift/iso9660/README.md b/vendor/github.com/hooklift/iso9660/README.md deleted file mode 100644 index 8a529a4a96ef..000000000000 --- a/vendor/github.com/hooklift/iso9660/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# iso9660 -[![GoDoc](https://godoc.org/github.com/hooklift/iso9660?status.svg)](https://godoc.org/github.com/hooklift/iso9660) -[![Build Status](https://travis-ci.org/hooklift/iso9660.svg?branch=master)](https://travis-ci.org/hooklift/iso9660) - -Go library and CLI to extract data from ISO9660 images. - -### CLI -``` -$ ./iso9660 -Usage: - iso9660 - iso9660 -h | --help - iso9660 --version -``` - -### Library -An example on how to use the library to extract files and directories from an ISO image can be found in our CLI source code at: -https://github.com/hooklift/iso9660/blob/master/cmd/iso9660/main.go - -### Not supported -* Reading files recorded in interleave mode -* Multi-extent or reading individual files larger than 4GB -* Joliet extensions, meaning that file names longer than 32 characters are going to be truncated. Unicode characters are not going to be properly decoded either. -* Multisession extension -* Rock Ridge extension, making unable to return recorded POSIX permissions, timestamps as well as owner and group for files and directories. diff --git a/vendor/github.com/hooklift/iso9660/common.mk b/vendor/github.com/hooklift/iso9660/common.mk deleted file mode 100644 index 35b67b4403bb..000000000000 --- a/vendor/github.com/hooklift/iso9660/common.mk +++ /dev/null @@ -1,43 +0,0 @@ -PLATFORM := $(shell go env | grep GOHOSTOS | cut -d '"' -f 2) -ARCH := $(shell go env | grep GOARCH | cut -d '"' -f 2) -BRANCH := $(shell git rev-parse --abbrev-ref HEAD) -LDFLAGS := -ldflags "-X main.Version=$(VERSION) -X main.Name=$(NAME)" - -test: - go test ./... - -build: - go build -o build/$(NAME) $(LDFLAGS) cmd/$(NAME)/main.go - -install: - go install $(LDFLAGS) - -compile: - @rm -rf build/ - @gox $(LDFLAGS) \ - -osarch="darwin/amd64" \ - -os="linux" \ - -os="solaris" \ - -os="freebsd" \ - -os="windows" \ - -output "build/$(NAME)_$(VERSION)_{{.OS}}_{{.Arch}}/$(NAME)" \ - ./... - -dist: compile - $(eval FILES := $(shell ls build)) - @rm -rf dist && mkdir dist - @for f in $(FILES); do \ - (cd $(shell pwd)/build/$$f && tar -cvzf ../../dist/$$f.tar.gz *); \ - (cd $(shell pwd)/dist && shasum -a 512 $$f.tar.gz > $$f.sha512); \ - echo $$f; \ - done - -release: dist - @latest_tag=$$(git describe --tags `git rev-list --tags --max-count=1`); \ - comparison="$$latest_tag..HEAD"; \ - if [ -z "$$latest_tag" ]; then comparison=""; fi; \ - changelog=$$(git log $$comparison --oneline --no-merges); \ - github-release $(GHACCOUNT)/$(NAME) $(VERSION) $(BRANCH) "**Changelog**
$$changelog" 'dist/*'; \ - git pull - -.PHONY: test build install compile deps dist release diff --git a/vendor/github.com/howeyc/gopass/.travis.yml b/vendor/github.com/howeyc/gopass/.travis.yml deleted file mode 100644 index cc5d509fdf5d..000000000000 --- a/vendor/github.com/howeyc/gopass/.travis.yml +++ /dev/null @@ -1,11 +0,0 @@ -language: go - -os: - - linux - - osx - -go: - - 1.3 - - 1.4 - - 1.5 - - tip diff --git a/vendor/github.com/howeyc/gopass/OPENSOLARIS.LICENSE b/vendor/github.com/howeyc/gopass/OPENSOLARIS.LICENSE deleted file mode 100644 index da23621dc843..000000000000 --- a/vendor/github.com/howeyc/gopass/OPENSOLARIS.LICENSE +++ /dev/null @@ -1,384 +0,0 @@ -Unless otherwise noted, all files in this distribution are released -under the Common Development and Distribution License (CDDL). -Exceptions are noted within the associated source files. - --------------------------------------------------------------------- - - -COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0 - -1. Definitions. - - 1.1. "Contributor" means each individual or entity that creates - or contributes to the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Software, prior Modifications used by a Contributor (if any), - and the Modifications made by that particular Contributor. - - 1.3. "Covered Software" means (a) the Original Software, or (b) - Modifications, or (c) the combination of files containing - Original Software with files containing Modifications, in - each case including portions thereof. - - 1.4. "Executable" means the Covered Software in any form other - than Source Code. - - 1.5. "Initial Developer" means the individual or entity that first - makes Original Software available under this License. - - 1.6. "Larger Work" means a work which combines Covered Software or - portions thereof with code not governed by the terms of this - License. - - 1.7. "License" means this document. - - 1.8. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed - herein. - - 1.9. "Modifications" means the Source Code and Executable form of - any of the following: - - A. Any file that results from an addition to, deletion from or - modification of the contents of a file containing Original - Software or previous Modifications; - - B. Any new file that contains any part of the Original - Software or previous Modifications; or - - C. Any new file that is contributed or otherwise made - available under the terms of this License. - - 1.10. "Original Software" means the Source Code and Executable - form of computer software code that is originally released - under this License. - - 1.11. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, - process, and apparatus claims, in any patent Licensable by - grantor. - - 1.12. "Source Code" means (a) the common form of computer software - code in which modifications are made and (b) associated - documentation included in or with such code. - - 1.13. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms - of, this License. For legal entities, "You" includes any - entity which controls, is controlled by, or is under common - control with You. For purposes of this definition, - "control" means (a) the power, direct or indirect, to cause - the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty - percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants. - - 2.1. The Initial Developer Grant. - - Conditioned upon Your compliance with Section 3.1 below and - subject to third party intellectual property claims, the Initial - Developer hereby grants You a world-wide, royalty-free, - non-exclusive license: - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer, to use, - reproduce, modify, display, perform, sublicense and - distribute the Original Software (or portions thereof), - with or without Modifications, and/or as part of a Larger - Work; and - - (b) under Patent Claims infringed by the making, using or - selling of Original Software, to make, have made, use, - practice, sell, and offer for sale, and/or otherwise - dispose of the Original Software (or portions thereof). - - (c) The licenses granted in Sections 2.1(a) and (b) are - effective on the date Initial Developer first distributes - or otherwise makes the Original Software available to a - third party under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: (1) for code that You delete from the Original - Software, or (2) for infringements caused by: (i) the - modification of the Original Software, or (ii) the - combination of the Original Software with other software - or devices. - - 2.2. Contributor Grant. - - Conditioned upon Your compliance with Section 3.1 below and - subject to third party intellectual property claims, each - Contributor hereby grants You a world-wide, royalty-free, - non-exclusive license: - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor to use, reproduce, - modify, display, perform, sublicense and distribute the - Modifications created by such Contributor (or portions - thereof), either on an unmodified basis, with other - Modifications, as Covered Software and/or as part of a - Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either - alone and/or in combination with its Contributor Version - (or portions of such combination), to make, use, sell, - offer for sale, have made, and/or otherwise dispose of: - (1) Modifications made by that Contributor (or portions - thereof); and (2) the combination of Modifications made by - that Contributor with its Contributor Version (or portions - of such combination). - - (c) The licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first distributes or - otherwise makes the Modifications available to a third - party. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: (1) for any code that Contributor has deleted - from the Contributor Version; (2) for infringements caused - by: (i) third party modifications of Contributor Version, - or (ii) the combination of Modifications made by that - Contributor with other software (except as part of the - Contributor Version) or other devices; or (3) under Patent - Claims infringed by Covered Software in the absence of - Modifications made by that Contributor. - -3. Distribution Obligations. - - 3.1. Availability of Source Code. - - Any Covered Software that You distribute or otherwise make - available in Executable form must also be made available in Source - Code form and that Source Code form must be distributed only under - the terms of this License. You must include a copy of this - License with every copy of the Source Code form of the Covered - Software You distribute or otherwise make available. You must - inform recipients of any such Covered Software in Executable form - as to how they can obtain such Covered Software in Source Code - form in a reasonable manner on or through a medium customarily - used for software exchange. - - 3.2. Modifications. - - The Modifications that You create or to which You contribute are - governed by the terms of this License. You represent that You - believe Your Modifications are Your original creation(s) and/or - You have sufficient rights to grant the rights conveyed by this - License. - - 3.3. Required Notices. - - You must include a notice in each of Your Modifications that - identifies You as the Contributor of the Modification. You may - not remove or alter any copyright, patent or trademark notices - contained within the Covered Software, or any notices of licensing - or any descriptive text giving attribution to any Contributor or - the Initial Developer. - - 3.4. Application of Additional Terms. - - You may not offer or impose any terms on any Covered Software in - Source Code form that alters or restricts the applicable version - of this License or the recipients' rights hereunder. You may - choose to offer, and to charge a fee for, warranty, support, - indemnity or liability obligations to one or more recipients of - Covered Software. However, you may do so only on Your own behalf, - and not on behalf of the Initial Developer or any Contributor. - You must make it absolutely clear that any such warranty, support, - indemnity or liability obligation is offered by You alone, and You - hereby agree to indemnify the Initial Developer and every - Contributor for any liability incurred by the Initial Developer or - such Contributor as a result of warranty, support, indemnity or - liability terms You offer. - - 3.5. Distribution of Executable Versions. - - You may distribute the Executable form of the Covered Software - under the terms of this License or under the terms of a license of - Your choice, which may contain terms different from this License, - provided that You are in compliance with the terms of this License - and that the license for the Executable form does not attempt to - limit or alter the recipient's rights in the Source Code form from - the rights set forth in this License. If You distribute the - Covered Software in Executable form under a different license, You - must make it absolutely clear that any terms which differ from - this License are offered by You alone, not by the Initial - Developer or Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred - by the Initial Developer or such Contributor as a result of any - such terms You offer. - - 3.6. Larger Works. - - You may create a Larger Work by combining Covered Software with - other code not governed by the terms of this License and - distribute the Larger Work as a single product. In such a case, - You must make sure the requirements of this License are fulfilled - for the Covered Software. - -4. Versions of the License. - - 4.1. New Versions. - - Sun Microsystems, Inc. is the initial license steward and may - publish revised and/or new versions of this License from time to - time. Each version will be given a distinguishing version number. - Except as provided in Section 4.3, no one other than the license - steward has the right to modify this License. - - 4.2. Effect of New Versions. - - You may always continue to use, distribute or otherwise make the - Covered Software available under the terms of the version of the - License under which You originally received the Covered Software. - If the Initial Developer includes a notice in the Original - Software prohibiting it from being distributed or otherwise made - available under any subsequent version of the License, You must - distribute and make the Covered Software available under the terms - of the version of the License under which You originally received - the Covered Software. Otherwise, You may also choose to use, - distribute or otherwise make the Covered Software available under - the terms of any subsequent version of the License published by - the license steward. - - 4.3. Modified Versions. - - When You are an Initial Developer and You want to create a new - license for Your Original Software, You may create and use a - modified version of this License if You: (a) rename the license - and remove any references to the name of the license steward - (except to note that the license differs from this License); and - (b) otherwise make it clear that the license contains terms which - differ from this License. - -5. DISCLAIMER OF WARRANTY. - - COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" - BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, - INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED - SOFTWARE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR - PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND - PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY - COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE - INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY - NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF - WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS - DISCLAIMER. - -6. TERMINATION. - - 6.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to - cure such breach within 30 days of becoming aware of the breach. - Provisions which, by their nature, must remain in effect beyond - the termination of this License shall survive. - - 6.2. If You assert a patent infringement claim (excluding - declaratory judgment actions) against Initial Developer or a - Contributor (the Initial Developer or Contributor against whom You - assert such claim is referred to as "Participant") alleging that - the Participant Software (meaning the Contributor Version where - the Participant is a Contributor or the Original Software where - the Participant is the Initial Developer) directly or indirectly - infringes any patent, then any and all rights granted directly or - indirectly to You by such Participant, the Initial Developer (if - the Initial Developer is not the Participant) and all Contributors - under Sections 2.1 and/or 2.2 of this License shall, upon 60 days - notice from Participant terminate prospectively and automatically - at the expiration of such 60 day notice period, unless if within - such 60 day period You withdraw Your claim with respect to the - Participant Software against such Participant either unilaterally - or pursuant to a written agreement with Participant. - - 6.3. In the event of termination under Sections 6.1 or 6.2 above, - all end user licenses that have been validly granted by You or any - distributor hereunder prior to termination (excluding licenses - granted to You by any distributor) shall survive termination. - -7. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE - INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF - COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE - LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR - CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT - LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK - STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL - INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT - APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO - NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR - CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT - APPLY TO YOU. - -8. U.S. GOVERNMENT END USERS. - - The Covered Software is a "commercial item," as that term is - defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial - computer software" (as that term is defined at 48 - C.F.R. 252.227-7014(a)(1)) and "commercial computer software - documentation" as such terms are used in 48 C.F.R. 12.212 - (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 - C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all - U.S. Government End Users acquire Covered Software with only those - rights set forth herein. This U.S. Government Rights clause is in - lieu of, and supersedes, any other FAR, DFAR, or other clause or - provision that addresses Government rights in computer software - under this License. - -9. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed - by the law of the jurisdiction specified in a notice contained - within the Original Software (except to the extent applicable law, - if any, provides otherwise), excluding such jurisdiction's - conflict-of-law provisions. Any litigation relating to this - License shall be subject to the jurisdiction of the courts located - in the jurisdiction and venue specified in a notice contained - within the Original Software, with the losing party responsible - for costs, including, without limitation, court costs and - reasonable attorneys' fees and expenses. The application of the - United Nations Convention on Contracts for the International Sale - of Goods is expressly excluded. Any law or regulation which - provides that the language of a contract shall be construed - against the drafter shall not apply to this License. You agree - that You alone are responsible for compliance with the United - States export administration regulations (and the export control - laws and regulation of any other countries) when You use, - distribute or otherwise make available any Covered Software. - -10. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or - indirectly, out of its utilization of rights under this License - and You agree to work with Initial Developer and Contributors to - distribute such responsibility on an equitable basis. Nothing - herein is intended or shall be deemed to constitute any admission - of liability. - --------------------------------------------------------------------- - -NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND -DISTRIBUTION LICENSE (CDDL) - -For Covered Software in this distribution, this License shall -be governed by the laws of the State of California (excluding -conflict-of-law provisions). - -Any litigation relating to this License shall be subject to the -jurisdiction of the Federal Courts of the Northern District of -California and the state courts of the State of California, with -venue lying in Santa Clara County, California. diff --git a/vendor/github.com/howeyc/gopass/README.md b/vendor/github.com/howeyc/gopass/README.md deleted file mode 100644 index 2d6a4e72c923..000000000000 --- a/vendor/github.com/howeyc/gopass/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# getpasswd in Go [![GoDoc](https://godoc.org/github.com/howeyc/gopass?status.svg)](https://godoc.org/github.com/howeyc/gopass) [![Build Status](https://secure.travis-ci.org/howeyc/gopass.png?branch=master)](http://travis-ci.org/howeyc/gopass) - -Retrieve password from user terminal or piped input without echo. - -Verified on BSD, Linux, and Windows. - -Example: -```go -package main - -import "fmt" -import "github.com/howeyc/gopass" - -func main() { - fmt.Printf("Password: ") - - // Silent. For printing *'s use gopass.GetPasswdMasked() - pass, err := gopass.GetPasswd() - if err != nil { - // Handle gopass.ErrInterrupted or getch() read error - } - - // Do something with pass -} -``` - -Caution: Multi-byte characters not supported! diff --git a/vendor/github.com/imdario/mergo/.travis.yml b/vendor/github.com/imdario/mergo/.travis.yml deleted file mode 100644 index 9d91c6339f10..000000000000 --- a/vendor/github.com/imdario/mergo/.travis.yml +++ /dev/null @@ -1,2 +0,0 @@ -language: go -install: go get -t diff --git a/vendor/github.com/imdario/mergo/README.md b/vendor/github.com/imdario/mergo/README.md deleted file mode 100644 index cdcea0f65929..000000000000 --- a/vendor/github.com/imdario/mergo/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# Mergo - -A helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements. - -Also a lovely [comune](http://en.wikipedia.org/wiki/Mergo) (municipality) in the Province of Ancona in the Italian region Marche. - -![Mergo dall'alto](http://www.comune.mergo.an.it/Siti/Mergo/Immagini/Foto/mergo_dall_alto.jpg) - -## Status - -It is ready for production use. It works fine although it may use more of testing. Here some projects in the wild using Mergo: - -- [EagerIO/Stout](https://github.com/EagerIO/Stout) -- [lynndylanhurley/defsynth-api](https://github.com/lynndylanhurley/defsynth-api) -- [russross/canvasassignments](https://github.com/russross/canvasassignments) -- [rdegges/cryptly-api](https://github.com/rdegges/cryptly-api) -- [casualjim/exeggutor](https://github.com/casualjim/exeggutor) -- [divshot/gitling](https://github.com/divshot/gitling) -- [RWJMurphy/gorl](https://github.com/RWJMurphy/gorl) - -[![Build Status][1]][2] -[![GoDoc](https://godoc.org/github.com/imdario/mergo?status.svg)](https://godoc.org/github.com/imdario/mergo) - -[1]: https://travis-ci.org/imdario/mergo.png -[2]: https://travis-ci.org/imdario/mergo - -## Installation - - go get github.com/imdario/mergo - - // use in your .go code - import ( - "github.com/imdario/mergo" - ) - -## Usage - -You can only merge same-type structs with exported fields initialized as zero value of their type and same-types maps. Mergo won't merge unexported (private) fields but will do recursively any exported one. Also maps will be merged recursively except for structs inside maps (because they are not addressable using Go reflection). - - if err := mergo.Merge(&dst, src); err != nil { - // ... - } - -Additionally, you can map a map[string]interface{} to a struct (and otherwise, from struct to map), following the same restrictions as in Merge(). Keys are capitalized to find each corresponding exported field. - - if err := mergo.Map(&dst, srcMap); err != nil { - // ... - } - -Warning: if you map a struct to map, it won't do it recursively. Don't expect Mergo to map struct members of your struct as map[string]interface{}. They will be just assigned as values. - -More information and examples in [godoc documentation](http://godoc.org/github.com/imdario/mergo). - -Note: if test are failing due missing package, please execute: - - go get gopkg.in/yaml.v1 - -## Contact me - -If I can help you, you have an idea or you are using Mergo in your projects, don't hesitate to drop me a line (or a pull request): [@im_dario](https://twitter.com/im_dario) - -## About - -Written by [Dario Castañé](http://dario.im). - -## License - -[BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) license, as [Go language](http://golang.org/LICENSE). diff --git a/vendor/github.com/imdario/mergo/testdata/license.yml b/vendor/github.com/imdario/mergo/testdata/license.yml new file mode 100644 index 000000000000..62fdb61ec329 --- /dev/null +++ b/vendor/github.com/imdario/mergo/testdata/license.yml @@ -0,0 +1,3 @@ +import: ../../../../fossene/db/schema/thing.yml +fields: + site: string diff --git a/vendor/github.com/inconshreveable/mousetrap/README.md b/vendor/github.com/inconshreveable/mousetrap/README.md deleted file mode 100644 index 7a950d1774f0..000000000000 --- a/vendor/github.com/inconshreveable/mousetrap/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# mousetrap - -mousetrap is a tiny library that answers a single question. - -On a Windows machine, was the process invoked by someone double clicking on -the executable file while browsing in explorer? - -### Motivation - -Windows developers unfamiliar with command line tools will often "double-click" -the executable for a tool. Because most CLI tools print the help and then exit -when invoked without arguments, this is often very frustrating for those users. - -mousetrap provides a way to detect these invocations so that you can provide -more helpful behavior and instructions on how to run the CLI tool. To see what -this looks like, both from an organizational and a technical perspective, see -https://inconshreveable.com/09-09-2014/sweat-the-small-stuff/ - -### The interface - -The library exposes a single interface: - - func StartedByExplorer() (bool) diff --git a/vendor/github.com/jimmidyson/go-download/.gitignore b/vendor/github.com/jimmidyson/go-download/.gitignore deleted file mode 100644 index 1739ecab664d..000000000000 --- a/vendor/github.com/jimmidyson/go-download/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -coverage.txt -profile.out -testdata/output diff --git a/vendor/github.com/jimmidyson/go-download/.travis.yml b/vendor/github.com/jimmidyson/go-download/.travis.yml deleted file mode 100644 index 73fdcfb124a6..000000000000 --- a/vendor/github.com/jimmidyson/go-download/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -language: go - -branches: - only: - - master - -go: - - 1.6.3 - - 1.7.1 - -before_install: - - go get -t -v ./... - -before_install: - - go get github.com/mattn/goveralls - -script: - - ./test.sh - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/jimmidyson/go-download/README.md b/vendor/github.com/jimmidyson/go-download/README.md deleted file mode 100644 index f72ca78def3e..000000000000 --- a/vendor/github.com/jimmidyson/go-download/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# go-download - -[![Travis](https://img.shields.io/travis/jimmidyson/go-download.svg)](https://travis-ci.org/jimmidyson/go-download) -[![Appveyor](https://ci.appveyor.com/api/projects/status/qr0heq7quf8inv11?svg=true)](https://ci.appveyor.com/project/jimmidyson/go-download) -[![Go Report Card](https://goreportcard.com/badge/github.com/jimmidyson/go-download)](https://goreportcard.com/report/github.com/jimmidyson/go-download) -[![Coverage](https://img.shields.io/codecov/c/github/jimmidyson/go-download.svg)](https://codecov.io/gh/jimmidyson/go-download) -[![GoDoc](https://godoc.org/github.com/jimmidyson/go-download?status.svg)](https://godoc.org/github.com/jimmidyson/go-download) -[![license](https://img.shields.io/github/license/jimmidyson/go-download.svg)](https://github.com/jimmidyson/go-download) diff --git a/vendor/github.com/jimmidyson/go-download/appveyor.yml b/vendor/github.com/jimmidyson/go-download/appveyor.yml deleted file mode 100644 index c0af0caae6a2..000000000000 --- a/vendor/github.com/jimmidyson/go-download/appveyor.yml +++ /dev/null @@ -1,23 +0,0 @@ -version: 1.0.{build} -pull_requests: - do_not_increment_build_number: true -platform: x64 -branches: - only: - - master - -clone_folder: c:\gopath\src\github.com\jimmidyson\go-download - -environment: - GOPATH: c:\gopath - -install: - - echo %PATH% - - echo %GOPATH% - - set PATH=%GOPATH%\bin;c:\go\bin;%PATH% - - go version - - go env - -build_script: - - go get -t -v ./... - - go test -v -race ./... diff --git a/vendor/github.com/jimmidyson/go-download/test.sh b/vendor/github.com/jimmidyson/go-download/test.sh deleted file mode 100755 index 92ebd7f83fc2..000000000000 --- a/vendor/github.com/jimmidyson/go-download/test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -e -echo "" > coverage.txt - -for d in $(go list ./... | grep -v vendor); do - go test -race -coverprofile=profile.out -covermode=atomic $d - if [ -f profile.out ]; then - cat profile.out >> coverage.txt - rm profile.out - fi - done diff --git a/vendor/github.com/johanneswuerbach/nfsexports/.travis.yml b/vendor/github.com/johanneswuerbach/nfsexports/.travis.yml deleted file mode 100644 index 5f94cf752e2b..000000000000 --- a/vendor/github.com/johanneswuerbach/nfsexports/.travis.yml +++ /dev/null @@ -1,10 +0,0 @@ -os: osx -language: go -go: - - 1.5.1 - -before_script: - - sudo nfsd status - - sudo touch /etc/exports # Auto-starts nfsd on OS X - - sleep 5 - - sudo nfsd status diff --git a/vendor/github.com/johanneswuerbach/nfsexports/README.md b/vendor/github.com/johanneswuerbach/nfsexports/README.md deleted file mode 100644 index bf1d7e155589..000000000000 --- a/vendor/github.com/johanneswuerbach/nfsexports/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# nfsexports [![Build Status](https://travis-ci.org/johanneswuerbach/nfsexports.svg?branch=master)](https://travis-ci.org/johanneswuerbach/nfsexports) - -Go util to manage NFS exports `/etc/exports`. - -## Features - -* Add and remove exports -* Verify the added export is valid, before updating -* Auto-creates missing exports file, which auto starts nfsd on OS X -* Handles missing line breaks - -```go -package main - -import ( - "github.com/johanneswuerbach/nfsexports" -) - -func main() { - newExports, err := nfsexports.Add("", "myExport", "/Users 192.168.64.16 -alldirs -maproot=root") - if err != nil { - panic(err) - } - - newExports, err := nfsexports.Remove("", "myExport") - if err != nil { - panic(err) - } - - if err = nfsexports.ReloadDaemon(); err != nil { - panic(err) - } -} -``` diff --git a/vendor/github.com/json-iterator/go/.codecov.yml b/vendor/github.com/json-iterator/go/.codecov.yml deleted file mode 100644 index 955dc0be5fa6..000000000000 --- a/vendor/github.com/json-iterator/go/.codecov.yml +++ /dev/null @@ -1,3 +0,0 @@ -ignore: - - "output_tests/.*" - diff --git a/vendor/github.com/json-iterator/go/.gitignore b/vendor/github.com/json-iterator/go/.gitignore deleted file mode 100644 index 15556530a854..000000000000 --- a/vendor/github.com/json-iterator/go/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/vendor -/bug_test.go -/coverage.txt -/.idea diff --git a/vendor/github.com/json-iterator/go/.travis.yml b/vendor/github.com/json-iterator/go/.travis.yml deleted file mode 100644 index 449e67cd01ac..000000000000 --- a/vendor/github.com/json-iterator/go/.travis.yml +++ /dev/null @@ -1,14 +0,0 @@ -language: go - -go: - - 1.8.x - - 1.x - -before_install: - - go get -t -v ./... - -script: - - ./test.sh - -after_success: - - bash <(curl -s https://codecov.io/bash) diff --git a/vendor/github.com/json-iterator/go/Gopkg.lock b/vendor/github.com/json-iterator/go/Gopkg.lock deleted file mode 100644 index f34f5b4ad1c8..000000000000 --- a/vendor/github.com/json-iterator/go/Gopkg.lock +++ /dev/null @@ -1,33 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - name = "github.com/davecgh/go-spew" - packages = ["spew"] - revision = "346938d642f2ec3594ed81d874461961cd0faa76" - version = "v1.1.0" - -[[projects]] - branch = "master" - name = "github.com/google/gofuzz" - packages = ["."] - revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1" - -[[projects]] - name = "github.com/pmezard/go-difflib" - packages = ["difflib"] - revision = "792786c7400a136282c1664665ae0a8db921c6c2" - version = "v1.0.0" - -[[projects]] - name = "github.com/stretchr/testify" - packages = ["assert","require"] - revision = "69483b4bd14f5845b5a1e55bca19e954e827f1d0" - version = "v1.1.4" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "f8b7cf3941d3792cbbd570bb53c093adaf774334d1162c651565c97a58dc9d09" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/vendor/github.com/json-iterator/go/Gopkg.toml b/vendor/github.com/json-iterator/go/Gopkg.toml deleted file mode 100644 index 0ac55ef876ac..000000000000 --- a/vendor/github.com/json-iterator/go/Gopkg.toml +++ /dev/null @@ -1,33 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" - - -[[constraint]] - name = "github.com/davecgh/go-spew" - version = "1.1.0" - -[[constraint]] - branch = "master" - name = "github.com/google/gofuzz" - -[[constraint]] - name = "github.com/stretchr/testify" - version = "1.1.4" diff --git a/vendor/github.com/json-iterator/go/README.md b/vendor/github.com/json-iterator/go/README.md deleted file mode 100644 index 3a0d680983b9..000000000000 --- a/vendor/github.com/json-iterator/go/README.md +++ /dev/null @@ -1,86 +0,0 @@ -[![Sourcegraph](https://sourcegraph.com/github.com/json-iterator/go/-/badge.svg)](https://sourcegraph.com/github.com/json-iterator/go?badge) -[![GoDoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](http://godoc.org/github.com/json-iterator/go) -[![Build Status](https://travis-ci.org/json-iterator/go.svg?branch=master)](https://travis-ci.org/json-iterator/go) -[![codecov](https://codecov.io/gh/json-iterator/go/branch/master/graph/badge.svg)](https://codecov.io/gh/json-iterator/go) -[![rcard](https://goreportcard.com/badge/github.com/json-iterator/go)](https://goreportcard.com/report/github.com/json-iterator/go) -[![License](http://img.shields.io/badge/license-mit-blue.svg?style=flat-square)](https://raw.githubusercontent.com/json-iterator/go/master/LICENSE) -[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby) - -A high-performance 100% compatible drop-in replacement of "encoding/json" - -``` -Go开发者们请加入我们,滴滴出行平台技术部 taowen@didichuxing.com -``` - -# Benchmark - -![benchmark](http://jsoniter.com/benchmarks/go-benchmark.png) - -Source code: https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go - -Raw Result (easyjson requires static code generation) - -| | ns/op | allocation bytes | allocation times | -| --- | --- | --- | --- | -| std decode | 35510 ns/op | 1960 B/op | 99 allocs/op | -| easyjson decode | 8499 ns/op | 160 B/op | 4 allocs/op | -| jsoniter decode | 5623 ns/op | 160 B/op | 3 allocs/op | -| std encode | 2213 ns/op | 712 B/op | 5 allocs/op | -| easyjson encode | 883 ns/op | 576 B/op | 3 allocs/op | -| jsoniter encode | 837 ns/op | 384 B/op | 4 allocs/op | - -# Usage - -100% compatibility with standard lib - -Replace - -```go -import "encoding/json" -json.Marshal(&data) -``` - -with - -```go -import "github.com/json-iterator/go" - -var json = jsoniter.ConfigCompatibleWithStandardLibrary -json.Marshal(&data) -``` - -Replace - -```go -import "encoding/json" -json.Unmarshal(input, &data) -``` - -with - -```go -import "github.com/json-iterator/go" - -var json = jsoniter.ConfigCompatibleWithStandardLibrary -json.Unmarshal(input, &data) -``` - -[More documentation](http://jsoniter.com/migrate-from-go-std.html) - -# How to get - -``` -go get github.com/json-iterator/go -``` - -# Contribution Welcomed ! - -Contributors - -* [thockin](https://github.com/thockin) -* [mattn](https://github.com/mattn) -* [cch123](https://github.com/cch123) -* [Oleg Shaldybin](https://github.com/olegshaldybin) -* [Jason Toffaletti](https://github.com/toffaletti) - -Report issue or pull request, or email taowen@gmail.com, or [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby) diff --git a/vendor/github.com/json-iterator/go/build.sh b/vendor/github.com/json-iterator/go/build.sh deleted file mode 100755 index b45ef688313e..000000000000 --- a/vendor/github.com/json-iterator/go/build.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -e -set -x - -if [ ! -d /tmp/build-golang/src/github.com/json-iterator ]; then - mkdir -p /tmp/build-golang/src/github.com/json-iterator - ln -s $PWD /tmp/build-golang/src/github.com/json-iterator/go -fi -export GOPATH=/tmp/build-golang -go get -u github.com/golang/dep/cmd/dep -cd /tmp/build-golang/src/github.com/json-iterator/go -exec $GOPATH/bin/dep ensure -update diff --git a/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md b/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md deleted file mode 100644 index 3095662b0610..000000000000 --- a/vendor/github.com/json-iterator/go/fuzzy_mode_convert_table.md +++ /dev/null @@ -1,7 +0,0 @@ -| json type \ dest type | bool | int | uint | float |string| -| --- | --- | --- | --- |--|--| -| number | positive => true
negative => true
zero => false| 23.2 => 23
-32.1 => -32| 12.1 => 12
-12.1 => 0|as normal|same as origin| -| string | empty string => false
string "0" => false
other strings => true | "123.32" => 123
"-123.4" => -123
"123.23xxxw" => 123
"abcde12" => 0
"-32.1" => -32| 13.2 => 13
-1.1 => 0 |12.1 => 12.1
-12.3 => -12.3
12.4xxa => 12.4
+1.1e2 =>110 |same as origin| -| bool | true => true
false => false| true => 1
false => 0 | true => 1
false => 0 |true => 1
false => 0|true => "true"
false => "false"| -| object | true | 0 | 0 |0|originnal json| -| array | empty array => false
nonempty array => true| [] => 0
[1,2] => 1 | [] => 0
[1,2] => 1 |[] => 0
[1,2] => 1|original json| \ No newline at end of file diff --git a/vendor/github.com/json-iterator/go/test.sh b/vendor/github.com/json-iterator/go/test.sh deleted file mode 100755 index 466f1141ae40..000000000000 --- a/vendor/github.com/json-iterator/go/test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -e -echo "" > coverage.txt - -for d in $(go list ./... | grep -v vendor); do - go test -coverprofile=profile.out $d - if [ -f profile.out ]; then - cat profile.out >> coverage.txt - rm profile.out - fi -done diff --git a/vendor/github.com/kr/fs/Readme b/vendor/github.com/kr/fs/Readme deleted file mode 100644 index c95e13fc84f0..000000000000 --- a/vendor/github.com/kr/fs/Readme +++ /dev/null @@ -1,3 +0,0 @@ -Filesystem Package - -http://godoc.org/github.com/kr/fs diff --git a/vendor/github.com/libvirt/libvirt-go/.gitignore b/vendor/github.com/libvirt/libvirt-go/.gitignore deleted file mode 100644 index 3624e1cfa0da..000000000000 --- a/vendor/github.com/libvirt/libvirt-go/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -*.sublime-workspace -*.sublime-project -.vagrant -/libvirt-go.test -*~ -.#* -\#* diff --git a/vendor/github.com/libvirt/libvirt-go/.travis.yml b/vendor/github.com/libvirt/libvirt-go/.travis.yml deleted file mode 100644 index 63c0c672429b..000000000000 --- a/vendor/github.com/libvirt/libvirt-go/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -language: go -os: linux -dist: trusty -sudo: require - -go: - - 1.5 - - 1.6 - - 1.7 - -env: - - LIBVIRT=1.2.0 EXT=gz - - LIBVIRT=1.2.10 EXT=gz - - LIBVIRT=1.2.20 EXT=gz - - LIBVIRT=2.5.0 EXT=xz - -install: - - sudo apt-get -qqy build-dep libvirt - - sudo apt-get -qqy install curl qemu-system-x86 sasl2-bin - - sudo mkdir -p /usr/src && sudo chown $(id -u) /usr/src - - curl -O -s https://libvirt.org/sources/libvirt-${LIBVIRT}.tar.${EXT} - - tar -C /usr/src -xf libvirt-${LIBVIRT}.tar.${EXT} - - pushd /usr/src/libvirt-${LIBVIRT} - - | - ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc \ - --without-polkit \ - --without-esx --without-vbox --without-xen --without-libxl \ - --with-qemu --with-lxc - - make - - sudo make install - - popd - - sudo libvirtd -d -l -f libvirtd.conf - - sudo virtlogd -d || true - - sudo chmod a+rwx /var/run/libvirt/libvirt-sock* - - echo "pass" | sudo saslpasswd2 -p -a libvirt user - -script: - go test -timeout 1m -tags "integration" -v diff --git a/vendor/github.com/libvirt/libvirt-go/FAQ.md b/vendor/github.com/libvirt/libvirt-go/FAQ.md deleted file mode 100644 index 0e731817a5fc..000000000000 --- a/vendor/github.com/libvirt/libvirt-go/FAQ.md +++ /dev/null @@ -1,19 +0,0 @@ -#libvirt-go - -##FAQ - Frequently asked questions - -If your question is a good one, please ask it as a well-formatted patch to this -repository, and we'll merge it along with the answer. - -###Why does this fail when added to my project in travis? - -This lib requires a newish version of the libvirt-dev library to compile. These -are only available in the newer travis environment. You can add: - -``` -sudo: true -dist: trusty -install: sudo apt-get install -y libvirt-dev -``` - -to your `.travis.yaml` file to avoid these errors. diff --git a/vendor/github.com/libvirt/libvirt-go/README.md b/vendor/github.com/libvirt/libvirt-go/README.md deleted file mode 100644 index 326d6a0604a3..000000000000 --- a/vendor/github.com/libvirt/libvirt-go/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# libvirt-go [![Build Status](https://travis-ci.org/libvirt/libvirt-go.svg?branch=master)](https://travis-ci.org/libvirt/libvirt-go) [![GoDoc](https://godoc.org/github.com/libvirt/libvirt-go?status.svg)](https://godoc.org/github.com/libvirt/libvirt-go) - -Go bindings for libvirt. - -Make sure to have `libvirt-dev` package (or the development files otherwise somewhere in your include path) - -## Version Support - -The libvirt go package provides API coverage for libvirt versions -from 1.2.0 onwards, through conditional compilation of newer APIs. - -By default the binding will support APIs in libvirt.so, libvirt-qemu.so -and libvirt-lxc.so. Coverage for the latter two libraries can be dropped -from the build using build tags 'without_qemu' or 'without_lxc' -respectively. - -## Development status - -The Go API is considered to be production ready and aims to be kept -stable across future versions. Note, however, that the following -changes may apply to future versions: - -* Existing structs can be augmented with new fields, but no existing - fields will be changed / removed. New fields are needed when libvirt - defines new typed parameters for various methods - -* Any method with an 'flags uint32' parameter will have its parameter - type changed to a specific typedef, if & when the libvirt API defines - constants for the flags. To avoid breakage, always pass a literal - '0' to any 'flags uint32' parameter, since this will auto-cast to - any future typedef that is introduced. - -## Documentation - -* [api documentation for the bindings](https://godoc.org/github.com/libvirt/libvirt-go) -* [api documentation for libvirt](http://libvirt.org/html/libvirt-libvirt.html) - -## Contributing - -The libvirt project aims to add support for new APIs to libvirt-go -as soon as they are added to the main libvirt C library. If you -are submitting changes to the libvirt C library API, please submit -a libvirt-go change at the same time. - -Bug fixes and other improvements to the libvirt-go library are -welcome at any time. The preferred submission method is to use -git send-email to submit patches to the libvir-list@redhat.com -mailing list. eg. to send a single patch - - git send-email --to libvir-list@redhat.com --subject-prefix "PATCH go" \ - --smtp-server=$HOSTNAME -1 - -Or to send all patches on the current branch, against master - - git send-email --to libvir-list@redhat.com --subject-prefix "PATCH go" \ - --smtp-server=$HOSTNAME --no-chain-reply-to --cover-letter --annotate \ - master.. - -Note the master GIT repository is at - -* http://libvirt.org/git/?p=libvirt-go.git;a=summary - -The following automatic read-only mirrors are available as a -convenience to allow contributors to "fork" the repository: - -* https://gitlab.com/libvirt/libvirt-go -* https://github.com/libvirt/libvirt-go - -While you can send pull-requests to these mirrors, they will be -re-submitted via emai to the mailing list for review before -being merged, unless they are trivial/obvious bug fixes. - -## Testing - -The core API unit tests are all written to use the built-in -test driver (test:///default), so they have no interaction -with the host OS environment. - -Coverage of libvirt C library APIs / constants is verified -using automated tests. These can be run by passing the 'api' -build tag. eg go test -tags api - -For areas where the test driver lacks functionality, it is -possible to use the QEMU or LXC drivers to exercise code. -Such tests must be part of the 'integration_test.go' file -though, which is only run when passing the 'integration' -build tag. eg go test -tags integration - -In order to run the unit tests, libvirtd should be configured -to allow your user account read-write access with no passwords. -This can be easily done using polkit config files - -``` -# cat > /etc/polkit-1/localauthority/50-local.d/50-libvirt.pkla < + +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/mattn/go-runewidth/.travis.yml b/vendor/github.com/mattn/go-runewidth/.travis.yml deleted file mode 100644 index 5c9c2a30f078..000000000000 --- a/vendor/github.com/mattn/go-runewidth/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: go -go: - - tip -before_install: - - go get github.com/mattn/goveralls - - go get golang.org/x/tools/cmd/cover -script: - - $HOME/gopath/bin/goveralls -repotoken lAKAWPzcGsD3A8yBX3BGGtRUdJ6CaGERL diff --git a/vendor/github.com/mattn/go-runewidth/README.mkd b/vendor/github.com/mattn/go-runewidth/README.mkd deleted file mode 100644 index 66663a94b0b4..000000000000 --- a/vendor/github.com/mattn/go-runewidth/README.mkd +++ /dev/null @@ -1,27 +0,0 @@ -go-runewidth -============ - -[![Build Status](https://travis-ci.org/mattn/go-runewidth.png?branch=master)](https://travis-ci.org/mattn/go-runewidth) -[![Coverage Status](https://coveralls.io/repos/mattn/go-runewidth/badge.png?branch=HEAD)](https://coveralls.io/r/mattn/go-runewidth?branch=HEAD) -[![GoDoc](https://godoc.org/github.com/mattn/go-runewidth?status.svg)](http://godoc.org/github.com/mattn/go-runewidth) -[![Go Report Card](https://goreportcard.com/badge/github.com/mattn/go-runewidth)](https://goreportcard.com/report/github.com/mattn/go-runewidth) - -Provides functions to get fixed width of the character or string. - -Usage ------ - -```go -runewidth.StringWidth("つのだ☆HIRO") == 12 -``` - - -Author ------- - -Yasuhiro Matsumoto - -License -------- - -under the MIT License: http://mattn.mit-license.org/2013 diff --git a/vendor/github.com/mitchellh/go-ps/.gitignore b/vendor/github.com/mitchellh/go-ps/.gitignore deleted file mode 100644 index a977916f6583..000000000000 --- a/vendor/github.com/mitchellh/go-ps/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.vagrant/ diff --git a/vendor/github.com/mitchellh/go-ps/.travis.yml b/vendor/github.com/mitchellh/go-ps/.travis.yml deleted file mode 100644 index 8f794f71da43..000000000000 --- a/vendor/github.com/mitchellh/go-ps/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: go - -go: - - 1.2.1 diff --git a/vendor/github.com/mitchellh/go-ps/README.md b/vendor/github.com/mitchellh/go-ps/README.md deleted file mode 100644 index 8e8baf9d2605..000000000000 --- a/vendor/github.com/mitchellh/go-ps/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# Process List Library for Go - -go-ps is a library for Go that implements OS-specific APIs to list and -manipulate processes in a platform-safe way. The library can find and -list processes on Linux, Mac OS X, Solaris, and Windows. - -If you're new to Go, this library has a good amount of advanced Go educational -value as well. It uses some advanced features of Go: build tags, accessing -DLL methods for Windows, cgo for Darwin, etc. - -How it works: - - * **Darwin** uses the `sysctl` syscall to retrieve the process table. - * **Unix** uses the procfs at `/proc` to inspect the process tree. - * **Windows** uses the Windows API, and methods such as - `CreateToolhelp32Snapshot` to get a point-in-time snapshot of - the process table. - -## Installation - -Install using standard `go get`: - -``` -$ go get github.com/mitchellh/go-ps -... -``` - -## TODO - -Want to contribute? Here is a short TODO list of things that aren't -implemented for this library that would be nice: - - * FreeBSD support - * Plan9 support diff --git a/vendor/github.com/mitchellh/go-ps/Vagrantfile b/vendor/github.com/mitchellh/go-ps/Vagrantfile deleted file mode 100644 index 61662ab1e3e7..000000000000 --- a/vendor/github.com/mitchellh/go-ps/Vagrantfile +++ /dev/null @@ -1,43 +0,0 @@ -# -*- mode: ruby -*- -# vi: set ft=ruby : - -# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! -VAGRANTFILE_API_VERSION = "2" - -Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| - config.vm.box = "chef/ubuntu-12.04" - - config.vm.provision "shell", inline: $script - - ["vmware_fusion", "vmware_workstation"].each do |p| - config.vm.provider "p" do |v| - v.vmx["memsize"] = "1024" - v.vmx["numvcpus"] = "2" - v.vmx["cpuid.coresPerSocket"] = "1" - end - end -end - -$script = <