From 8ed2eb751f2b72ef55be0e234fa17561671a5416 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Sat, 31 Aug 2019 21:58:08 -0700 Subject: [PATCH 1/4] Update version scripts to read from go.mod --- scripts/version.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/version.sh b/scripts/version.sh index 052c0fdbe2..9bfff5bd17 100755 --- a/scripts/version.sh +++ b/scripts/version.sh @@ -16,5 +16,5 @@ fi ARCH=$(go env GOARCH) SUFFIX="-${ARCH}" -VERSION_CONTAINERD=$(grep ^github.com/containerd/containerd $(dirname $0)/../vendor.conf | awk '{print $2}') -VERSION_CRICTL=$(grep ^github.com/kubernetes-sigs/cri-tools $(dirname $0)/../vendor.conf | awk '{print $2}') +VERSION_CONTAINERD=$(grep github.com/containerd/containerd $(dirname $0)/../go.mod | head -n1 | awk '{print $4}') +VERSION_CRICTL=$(grep github.com/kubernetes-sigs/cri-tools $(dirname $0)/../go.mod | head -n1 | awk '{print $4}') From 3ce8310a170a5838b100dc4b189f0492d396f6f3 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Thu, 5 Sep 2019 11:55:28 -0700 Subject: [PATCH 2/4] Switch to go modules --- go.mod | 126 ++++++++++ go.sum | 683 ++++++++++++++++++++++++++++++++++++++++++++++++++++ trash.lock | 392 ------------------------------ vendor.conf | 143 ----------- vendor.go | 17 ++ 5 files changed, 826 insertions(+), 535 deletions(-) create mode 100644 go.mod create mode 100644 go.sum delete mode 100755 trash.lock delete mode 100644 vendor.conf create mode 100644 vendor.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000000..906364d35c --- /dev/null +++ b/go.mod @@ -0,0 +1,126 @@ +module github.com/rancher/k3s + +go 1.12 + +replace ( + github.com/containerd/containerd => github.com/rancher/containerd v1.2.8-k3s.1 + github.com/containerd/cri => github.com/rancher/cri v1.2.8-k3s.1 + github.com/containernetworking/plugins => github.com/rancher/plugins v0.7.5-k3s1 + github.com/coreos/flannel => github.com/ibuildthecloud/flannel v0.10.1-0.20190131215433-823afe66b226 + github.com/kubernetes-sigs/cri-tools => github.com/rancher/cri-tools v1.15.0-k3s.2 + github.com/matryer/moq => github.com/rancher/moq v0.0.0-20190404221404-ee5226d43009 + github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v0.0.0-20180911193056-5684b8af48c1 + github.com/rancher/dynamiclistener => github.com/erikwilson/rancher-dynamiclistener v0.0.0-20190717164634-c08b499d1719 + github.com/rancher/kine => github.com/ibuildthecloud/kine v0.1.0 + golang.org/x/sys => github.com/golang/sys v0.0.0-20190204203706-41f3e6584952 + k8s.io/api => github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3 + k8s.io/apiextensions-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3 + k8s.io/apimachinery => github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3 + k8s.io/apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3 + k8s.io/cli-runtime => github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3 + k8s.io/client-go => github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3 + k8s.io/cloud-provider => github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3 + k8s.io/cluster-bootstrap => github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3 + k8s.io/code-generator => github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3 + k8s.io/component-base => github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3 + k8s.io/cri-api => github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3 + k8s.io/csi-translation-lib => github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3 + k8s.io/kube-aggregator => github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3 + k8s.io/kube-controller-manager => github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3 + k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 + k8s.io/kube-proxy => github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3 + k8s.io/kube-scheduler => github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3 + k8s.io/kubectl => github.com/rancher/kubernetes/staging/src/k8s.io/kubectl v1.15.3-k3s.3 + k8s.io/kubelet => github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3 + k8s.io/kubernetes => github.com/rancher/kubernetes v1.15.3-k3s.3 + k8s.io/legacy-cloud-providers => github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3 + k8s.io/metrics => github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3 + k8s.io/node-api => github.com/rancher/kubernetes/staging/src/k8s.io/node-api v1.15.3-k3s.3 + k8s.io/sample-apiserver => github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.15.3-k3s.3 + k8s.io/sample-cli-plugin => github.com/rancher/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.15.3-k3s.3 + k8s.io/sample-controller => github.com/rancher/kubernetes/staging/src/k8s.io/sample-controller v1.15.3-k3s.3 + sigs.k8s.io/structured-merge-diff => sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2 +) + +require ( + github.com/Microsoft/go-winio v0.4.12 // indirect + github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae // indirect + github.com/bhendo/go-powershell v0.0.0-20190719160123-219e7fb4e41e // indirect + github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 // indirect + github.com/containerd/cgroups v0.0.0-20190328223300-4994991857f9 // indirect + github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1 // indirect + github.com/containerd/containerd v1.2.8 + github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352 // indirect + github.com/containerd/cri v1.11.1 + github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260 // indirect + github.com/containerd/go-cni v0.0.0-20181011142537-40bcf8ec8acd // indirect + github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3 // indirect + github.com/containerd/ttrpc v0.0.0-20190513141551-f82148331ad2 // indirect + github.com/containernetworking/plugins v0.8.2 + github.com/coreos/flannel v0.11.0 + github.com/coreos/go-iptables v0.4.2 // indirect + github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 + github.com/docker/distribution v0.0.0-20190205005809-0d3efadf0154 // indirect + github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0 + github.com/docker/go-events v0.0.0-20170721190031-9461782956ad // indirect + github.com/docker/go-metrics v0.0.0-20180131145841-4ea375f7759c // indirect + github.com/emicklei/go-restful v2.2.1+incompatible // indirect + github.com/go-bindata/go-bindata v3.1.2+incompatible + github.com/go-sql-driver/mysql v1.4.1 + github.com/gofrs/flock v0.7.1 // indirect + github.com/gogo/googleapis v1.0.0 // indirect + github.com/google/cadvisor v0.34.0 // indirect + github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2 + github.com/gorilla/mux v1.7.3 + github.com/gorilla/websocket v1.4.0 + github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce // indirect + github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874 // indirect + github.com/j-keck/arping v1.0.0 // indirect + github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d // indirect + github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 // indirect + github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 // indirect + github.com/kubernetes-sigs/cri-tools v1.15.0 + github.com/lib/pq v1.1.1 + github.com/mattn/go-sqlite3 v1.10.0 + github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 // indirect + github.com/mistifyio/go-zfs v0.0.0-20171122051224-166add352731 // indirect + github.com/natefinch/lumberjack v2.0.0+incompatible + github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2 // indirect + github.com/opencontainers/image-spec v1.0.1 // indirect + github.com/opencontainers/runc v0.0.0-20181113202123-f000fe11ece1 + github.com/opencontainers/runtime-tools v0.6.0 // indirect + github.com/opencontainers/selinux v1.2.2 // indirect + github.com/pkg/errors v0.8.1 + github.com/rakelkar/gonetsh v0.0.0-20190719023240-501daadcadf8 // indirect + github.com/rancher/dynamiclistener v0.0.0-20190717164634-c08b499d1719 + github.com/rancher/helm-controller v0.2.2 + github.com/rancher/kine v0.0.0-00010101000000-000000000000 + github.com/rancher/remotedialer v0.2.0 + github.com/rancher/wrangler v0.2.0 + github.com/rancher/wrangler-api v0.2.0 + github.com/rootless-containers/rootlesskit v0.6.0 + github.com/seccomp/libseccomp-golang v0.0.0-20160531183505-32f571b70023 // indirect + github.com/sirupsen/logrus v1.4.2 + github.com/spf13/pflag v1.0.1 + github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8 // indirect + github.com/tchap/go-patricia v2.2.6+incompatible // indirect + github.com/theckman/go-flock v0.7.1 // indirect + github.com/urfave/cli v1.21.0 + github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect + github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect + github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f // indirect + go.etcd.io/bbolt v1.3.1-etcd.8 // indirect + golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc + golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f + google.golang.org/grpc v1.20.1 + gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect + k8s.io/api v0.0.0 + k8s.io/apimachinery v0.0.0 + k8s.io/apiserver v0.0.0 + k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible + k8s.io/component-base v0.0.0 + k8s.io/cri-api v0.0.0 + k8s.io/klog v0.3.1 + k8s.io/kubernetes v1.15.3 + k8s.io/utils v0.0.0-20190829053155-3a4a5477acf8 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000000..bd3604e2cf --- /dev/null +++ b/go.sum @@ -0,0 +1,683 @@ +bitbucket.org/bertimus9/systemstat v0.0.0-20180207000608-0eeff89b0690/go.mod h1:Ulb78X89vxKYgdL24HMTiXYHlyHEvruOj1ZPlqeNEZM= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/Azure/azure-sdk-for-go v21.4.0+incompatible h1:rsdM2HqR64WhJv7YqMAjWOLAebbx4c9/gzcLC7yoDDE= +github.com/Azure/azure-sdk-for-go v21.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v11.1.2+incompatible h1:viZ3tV5l4gE2Sw0xrasFHytCGtzYCrT+um/rrSQ1BfA= +github.com/Azure/go-autorest v11.1.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/BurntSushi/toml v0.3.0/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20181220005116-f8e995905100 h1:EXrpgbxknFeRM6X/OgRqcbVtl5zqUFD5eV8O8M1BLzo= +github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20181220005116-f8e995905100/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= +github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab h1:UKkYhof1njT1/xq4SEg5z+VpTgjmNeHwPGRQl7takDI= +github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab/go.mod h1:3VYc5hodBMJ5+l/7J4xAyMeuM2PNuepvHlGs8yilUCA= +github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd h1:sjQovDkwrZp8u+gxLtPgKGjk5hCxuy2hrRejBTA9xFU= +github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E= +github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/go-winio v0.4.12 h1:xAfWHN1IrQ0NJ9TBC0KBZoqLjzDTr1ML+4MywiUOryc= +github.com/Microsoft/go-winio v0.4.12/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/Microsoft/hcsshim v0.8.6 h1:ZfF0+zZeYdzMIVMZHKtDKJvLHj76XCuVae/jNkjj0IA= +github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/PuerkitoBio/purell v1.1.0 h1:rmGxhojJlM0tuKtfdvliR84CFHljx9ag64t2xmVkjK4= +github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Rican7/retry v0.1.0 h1:FqK94z34ly8Baa6K+G8Mmza9rYWTKOJk+yckIBB5qVk= +github.com/Rican7/retry v0.1.0/go.mod h1:FgOROf8P5bebcC1DS0PdOQiqGUridaZvikzUmkFW6gg= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae h1:AMzIhMUqU3jMrZiTuW0zkYeKlKDAFD+DG20IoO421/Y= +github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/auth0/go-jwt-middleware v0.0.0-20170425171159-5493cabe49f7/go.mod h1:LWMyo4iOLWXHGdBki7NIht1kHru/0wM179h+d3g8ATM= +github.com/aws/aws-sdk-go v1.16.26 h1:GWkl3rkRO/JGRTWoLLIqwf7AWC4/W/1hMOUZqmX0js4= +github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/bazelbuild/bazel-gazelle v0.0.0-20181012220611-c728ce9f663e/go.mod h1:uHBSeeATKpVazAACZBDPL/Nk/UhQDDsJWDlqYJo8/Us= +github.com/bazelbuild/buildtools v0.0.0-20180226164855-80c7f0d45d7e/go.mod h1:5JP0TXzWDHXv8qvxRC4InIazwdyDseBDbzESUMKk1yU= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/bhendo/go-powershell v0.0.0-20190719160123-219e7fb4e41e h1:KCjb01YiNoRaJ5c+SbnPLWjVzU9vqRYHg3e5JcN50nM= +github.com/bhendo/go-powershell v0.0.0-20190719160123-219e7fb4e41e/go.mod h1:f7vw6ObmmNcyFQLhZX9eUGBJGpnwTJFDvVjqZxIxHWY= +github.com/blang/semver v3.5.0+incompatible h1:CGxCgetQ64DKk7rdZ++Vfnb1+ogGNnB17OJKJXD2Cfs= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= +github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23 h1:D21IyuvjDCshj1/qq+pCNd3VZOAEI9jy6Bi131YlXgI= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/cespare/prettybench v0.0.0-20150116022406-03b8cfe5406c/go.mod h1:Xe6ZsFhtM8HrDku0pxJ3/Lr51rwykrzgFwpmTzleatY= +github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8= +github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5/go.mod h1:/iP1qXHoty45bqomnu2LM+VVyAEdWN+vtSHGlQgyxbw= +github.com/client9/misspell v0.0.0-20170928000206-9ce5d979ffda/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cfssl v0.0.0-20180726162950-56268a613adf h1:eOyFuj3h/Vj5e4voOM16NNrHsUR3jhD0duh76LHMj6Y= +github.com/cloudflare/cfssl v0.0.0-20180726162950-56268a613adf/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA= +github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= +github.com/codedellemc/goscaleio v0.0.0-20170830184815-20e2ce2cf885/go.mod h1:JIHmDHNZO4tmA3y3RHp6+Gap6kFsNf55W9Pn/3YS9IY= +github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0= +github.com/container-storage-interface/spec v1.1.0 h1:qPsTqtR1VUPvMPeK0UnCZMtXaKGyyLPG8gj/wG6VqMs= +github.com/container-storage-interface/spec v1.1.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= +github.com/containerd/cgroups v0.0.0-20190328223300-4994991857f9 h1:LmZz7ns2YaWWJ6m17esVvIMNOfKcw+f/sCneqxKawB4= +github.com/containerd/cgroups v0.0.0-20190328223300-4994991857f9/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= +github.com/containerd/console v0.0.0-20170925154832-84eeaae905fa/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1 h1:uict5mhHFTzKLUCufdSLym7z/J0CbBJT59lYbP9wtbg= +github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= +github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352 h1:CdBoaTKPl60tksFVWYc5QnLWwXBcU+XcLiXx8+NcZ9o= +github.com/containerd/continuity v0.0.0-20181001140422-bd77b46c8352/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260 h1:XGyg7oTtD0DoRFhbpV6x1WfV0flKC4UxXU7ab1zC08U= +github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= +github.com/containerd/go-cni v0.0.0-20181011142537-40bcf8ec8acd h1:joFNf8tTYsguuv6/HMvyPSnMsGloCVSUVDI9TaE4rpM= +github.com/containerd/go-cni v0.0.0-20181011142537-40bcf8ec8acd/go.mod h1:2wlRxCQdiBY+OcjNg5x8kI+5mEL1fGt25L4IzQHYJsM= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3 h1:esQOJREg8nw8aXj6uCN5dfW5cKUBiEJ/+nni1Q/D/sw= +github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= +github.com/containerd/ttrpc v0.0.0-20190513141551-f82148331ad2 h1:4psa145z7RZ+4szPQ9fZbwTx0x/G1ezlB8eLkESPC4o= +github.com/containerd/ttrpc v0.0.0-20190513141551-f82148331ad2/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= +github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20 h1:14r0i3IeJj6zkNLigAJiv/TWSR8EY+pxIjv5tFiT+n8= +github.com/containerd/typeurl v0.0.0-20190228175220-2a93cfde8c20/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= +github.com/containernetworking/cni v0.6.0 h1:FXICGBZNMtdHlW65trpoHviHctQD3seWhRRcqp2hMOU= +github.com/containernetworking/cni v0.6.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/coreos/bbolt v1.3.1-coreos.6 h1:uTXKg9gY70s9jMAKdfljFQcuh4e/BXOM+V+d00KFj3A= +github.com/coreos/bbolt v1.3.1-coreos.6/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-iptables v0.4.2 h1:KH0EwId05JwWIfb96gWvkiT2cbuOu8ygqUaB+yPAwIg= +github.com/coreos/go-iptables v0.4.2/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-oidc v0.0.0-20180117170138-065b426bd416 h1:X+JQSgXg3CcxgcBoMAqU8NoS0fch8zHxjiKWcXclxaI= +github.com/coreos/go-oidc v0.0.0-20180117170138-065b426bd416/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.0.0-20180108230905-e214231b295a h1:WqY2Kv7eI1jeoU3pC05YYK/kK4tdXyLzzaBzCR51r9M= +github.com/coreos/go-semver v0.0.0-20180108230905-e214231b295a/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7 h1:u9SHYsPQNyt5tgDm3YN7+9dYrpK96E5wFilTFWIDZOM= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea h1:n2Ltr3SrfQlf/9nOna1DoGKxLx3qTSI8Ttl6Xrqp6mw= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/rkt v1.30.0 h1:Kkt6sYeEGKxA3Y7SCrY+nHoXkWed6Jr2BBY42GqMymM= +github.com/coreos/rkt v1.30.0/go.mod h1:O634mlH6U7qk87poQifK6M2rsFNt+FyUTWNMnP1hF1U= +github.com/cpuguy83/go-md2man v1.0.4/go.mod h1:N6JayAiVKtlHSnuTCeuLSQVs75hb8q+dYQLjr7cDsKY= +github.com/cyphar/filepath-securejoin v0.0.0-20170720062807-ae69057f2299 h1:2pOMM/RaFhI52FyCITl8aTf5HZ9LoHD8SkjbghAEG1E= +github.com/cyphar/filepath-securejoin v0.0.0-20170720062807-ae69057f2299/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= +github.com/d2g/dhcp4client v0.0.0-20170829104524-6e570ed0a266/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd h1:uVsMphB1eRx7xB1njzL3fuMdWRN8HtVzoUOItHMwv5c= +github.com/daviddengcn/go-colortext v0.0.0-20160507010035-511bcaf42ccd/go.mod h1:dv4zxwHi5C/8AeI+4gX4dCWOIvNi7I6JCSX0HvlKPgE= +github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda h1:NyywMz59neOoVRFDz+ccfKWxn784fiHMDnZSy6T+JXY= +github.com/dgrijalva/jwt-go v0.0.0-20160705203006-01aeca54ebda/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dnaeon/go-vcr v1.0.1 h1:r8L/HqC0Hje5AXMu1ooW8oyQyOFv4GxqpL0nRP7SLLY= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/distribution v0.0.0-20170726174610-edc3ab29cdff h1:FKH02LHYqSmeWd3GBh0KIkM8JBpw3RrShgtcWShdWJg= +github.com/docker/distribution v0.0.0-20170726174610-edc3ab29cdff/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v0.0.0-20190205005809-0d3efadf0154 h1:C8WBRZDiZn3IZnBlbHVeTWF32XhVGK69Li4GC/3jL9Q= +github.com/docker/distribution v0.0.0-20190205005809-0d3efadf0154/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0 h1:w3NnFcKR5241cfmQU5ZZAsf0xcpId6mWOupTvJlUX2U= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.3.0 h1:3lOnM9cSzgGwx8VfK/NGOW5fLQ0GjIlCkaktF+n1M6o= +github.com/docker/go-connections v0.3.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad h1:VXIse57M5C6ezDuCPyq6QmMvEJ2xclYKZ35SfkXdm3E= +github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.0-20180131145841-4ea375f7759c h1:oKvAcvys1isfMMXIOxB2C4f1VXSFy7PFjsecI//7BMo= +github.com/docker/go-metrics v0.0.0-20180131145841-4ea375f7759c/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= +github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/libnetwork v0.0.0-20180830151422-a9cd636e3789 h1:8rOK787QQFFZJcOLXPiKKidY/ie2OQpblM5gEAaenPs= +github.com/docker/libnetwork v0.0.0-20180830151422-a9cd636e3789/go.mod h1:93m0aTqz6z+g32wla4l4WxTrdtvBRmVzYRkYvasA5Z8= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e h1:p1yVGRW3nmb85p1Sh1ZJSDm4A4iKLS5QNbvUHMgGu/M= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633 h1:H2pdYOb3KQ1/YsqVWoWNLQO+fusocsw354rqGTZtAgw= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.2.1+incompatible h1:yreWt49MQDL5ac0Dau9EKE22or+LrHikXVhAqUAXnfk= +github.com/emicklei/go-restful v2.2.1+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/erikwilson/rancher-dynamiclistener v0.0.0-20190717164634-c08b499d1719 h1:oBIokhBifMqHqzn1e6973Uyh+tmEG1gjTJxYN8BVWxE= +github.com/erikwilson/rancher-dynamiclistener v0.0.0-20190717164634-c08b499d1719/go.mod h1:vNqDnGTkrX8tiBUevkvjZoQoiZOjaahVbMaYRIl25l0= +github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= +github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= +github.com/evanphx/json-patch v0.0.0-20190203023257-5858425f7550/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.2.0+incompatible h1:fUDGZCv/7iAN7u0puUVhvKCcsR6vRfwrJatElLBEf0I= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/fatih/camelcase v0.0.0-20160318181535-f6a740d52f96 h1:5e8GDOdG6jKeeqNGbR+tlmqhf4vQVs3atTTMEWeEcAk= +github.com/fatih/camelcase v0.0.0-20160318181535-f6a740d52f96/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= +github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v0.0.0-20180820084758-c7ce16629ff4/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-bindata/go-bindata v3.1.2+incompatible h1:5vjJMVhowQdPzjE1LdxyFF7YFTXg5IgGVW4gBr5IbvE= +github.com/go-bindata/go-bindata v3.1.2+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= +github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= +github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/analysis v0.17.2 h1:eYp14J1o8TTSCzndHBtsNuckikV1PfZOSnx4BcBeu0c= +github.com/go-openapi/analysis v0.17.2/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= +github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/errors v0.17.2 h1:azEQ8Fnx0jmtFF2fxsnmd6I0x6rsweUF63qqSO1NmKk= +github.com/go-openapi/errors v0.17.2/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= +github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonpointer v0.19.0 h1:FTUMcX77w5rQkClIzDtTxvn6Bsa894CcrzNj2MMfeg8= +github.com/go-openapi/jsonpointer v0.19.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= +github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/jsonreference v0.19.0 h1:BqWKpV1dFd+AuiKlgtddwVIFQsuMpxfBDBHGfM2yNpk= +github.com/go-openapi/jsonreference v0.19.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= +github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/loads v0.17.2 h1:tEXYu6Xc0pevpzzQx5ghrMN9F7IVpN/+u4iD3rkYE5o= +github.com/go-openapi/loads v0.17.2/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= +github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= +github.com/go-openapi/runtime v0.17.2 h1:/ZK67ikFhQAMFFH/aPu2MaGH7QjP4wHBvHYOVIzDAw0= +github.com/go-openapi/runtime v0.17.2/go.mod h1:QO936ZXeisByFmZEO1IS1Dqhtf4QV1sYYFtIq6Ld86Q= +github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/spec v0.17.2 h1:eb2NbuCnoe8cWAxhtK6CfMWUYmiFEZJ9Hx3Z2WRwJ5M= +github.com/go-openapi/spec v0.17.2/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= +github.com/go-openapi/strfmt v0.17.0 h1:1isAxYf//QDTnVzbLAMrUK++0k1EjeLJU/gTOR0o3Mc= +github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= +github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/swag v0.17.2 h1:K/ycE/XTUDFltNHSO32cGRUhrVGJD64o8WgAIZNyc3k= +github.com/go-openapi/swag v0.17.2/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= +github.com/go-openapi/validate v0.17.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-openapi/validate v0.18.0 h1:PVXYcP1GkTl+XIAJnyJxOmK6CSG5Q1UcvoCvNO++5Kg= +github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= +github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= +github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55 h1:oIgNYSrSUbNH5DJh6DMhU1PiOKOYIHNxrV3djLsLpEI= +github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/gofrs/flock v0.7.1 h1:DP+LD/t0njgoPBvT5MJLeliUIVQR03hiKR6vezdwHlc= +github.com/gofrs/flock v0.7.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/googleapis v1.0.0 h1:7wwW6yQ5xmZE42/QWNC87xHgnHxIh7pWvtc1BhI/0DU= +github.com/gogo/googleapis v1.0.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/protobuf v0.0.0-20171007142547-342cbe0a0415/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef h1:veQD95Isof8w9/WXiA+pa3tz3fJXkt5B7QaRBrM62gk= +github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v0.0.0-20160127222235-bd3c8e81be01/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.1.1 h1:G5FRp8JnTd7RQH5kemVNlMeyXQAztQ3mOWV95KxsXH8= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/sys v0.0.0-20190204203706-41f3e6584952 h1:kjFPJKXuCmzcfJwPQp3+jn/ZtE7aEwV5w/ot1gS7EEA= +github.com/golang/sys v0.0.0-20190204203706-41f3e6584952/go.mod h1:5JyrLPvD/ZdaYkT7IqKhsP5xt7aLjA99KXRtk4EIYDk= +github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450 h1:7xqw01UYS+KCI25bMrPxwNYkSns2Db1ziQPpVq99FpE= +github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= +github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995 h1:f5gsjBiF9tRRVomCvrkGMMWI8W1f2OBFar2c5oakAP0= +github.com/golangplus/fmt v0.0.0-20150411045040-2a5d6d7d2995/go.mod h1:lJgMEyOkYFkPcDKwRXegd+iM6E7matEszMG5HhwytU8= +github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e h1:KhcknUwkWHKZPbFy2P7jH5LKJ3La+0ZeknkkmrSgqb0= +github.com/golangplus/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk= +github.com/google/btree v0.0.0-20160524151835-7d79101e329e h1:JHB7F/4TJCrYBW8+GZO8VkWDj1jxcWuCl6uxKODiyi4= +github.com/google/btree v0.0.0-20160524151835-7d79101e329e/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/cadvisor v0.33.2-0.20190411163913-9db8c7dee20a h1:4N3IykedbdXG1ganAZbAKlViPjrtfrx2nC4qzUHieOk= +github.com/google/cadvisor v0.33.2-0.20190411163913-9db8c7dee20a/go.mod h1:1nql6U13uTHaLYB8rLS5x9IJc2qT6Xd/Tr1sTX6NE48= +github.com/google/cadvisor v0.34.0 h1:No7G6U/TasplR9uNqyc5Jj0Bet5VSYsK5xLygOf4pUw= +github.com/google/cadvisor v0.34.0/go.mod h1:1nql6U13uTHaLYB8rLS5x9IJc2qT6Xd/Tr1sTX6NE48= +github.com/google/certificate-transparency-go v1.0.21 h1:Yf1aXowfZ2nuboBsg7iYGLmwsOARdV86pfH3g95wXmE= +github.com/google/certificate-transparency-go v1.0.21/go.mod h1:QeJfpSbVSfYc7RgB3gJFj9cbuQMMchQxrWXz8Ruopmg= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-containerregistry v0.0.0-20190617215043-876b8855d23c/go.mod h1:yZAFP63pRshzrEYLXLGPmUt0Ay+2zdjmMN1loCnRLUk= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2 h1:AtvtonGEH/fZK0XPNNBdB6swgy7Iudfx88wzyIpwqJ8= +github.com/google/tcpproxy v0.0.0-20180808230851-dfa16c61dad2/go.mod h1:DavVbd41y+b7ukKDmlnPR4nGYmkWXR6vHUkjQNiHPBs= +github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g= +github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/gophercloud/gophercloud v0.0.0-20190126172459-c818fa66e4c8/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.7.0/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3 h1:gnP5JzjVOuiZD07fKKToCAOjS0yOpj/qPETTXCCS6hw= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7 h1:6TSoaYExHper8PYsJu23GWVNOyYRCSnIFyxKgLSZ54w= +github.com/gregjones/httpcache v0.0.0-20170728041850-787624de3eb7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79 h1:lR9ssWAqp9qL0bALxqEEkuudiP1eweOdv9jsRK3e7lE= +github.com/grpc-ecosystem/go-grpc-middleware v0.0.0-20190222133341-cfaf5686ec79/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611 h1:f5vL2EW5pL274ztMNnizZAEa457nKyKPEaN/sm/kdBk= +github.com/grpc-ecosystem/go-grpc-prometheus v0.0.0-20170330212424-2500245aa611/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.3.0 h1:HJtP6RRwj2EpPCD/mhAWzSvLL/dFTdPm1UrWwanoFos= +github.com/grpc-ecosystem/grpc-gateway v1.3.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce h1:prjrVgOk2Yg6w+PflHoszQNLTUh4kaByUcEWM/9uin4= +github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874 h1:cAv7ZbSmyb1wjn6T4TIiyFCkpcfgpbcNNC3bM2srLaI= +github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v0.0.0-20160711231752-d8c773c4cba1/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= +github.com/heketi/heketi v0.0.0-20181109135656-558b29266ce0/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o= +github.com/heketi/rest v0.0.0-20180404230133-aa6a65207413/go.mod h1:BeS3M108VzVlmAue3lv2WcGuPAX94/KN63MUURzbYSI= +github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= +github.com/heketi/utils v0.0.0-20170317161834-435bc5bdfa64/go.mod h1:RYlF4ghFZPPmk2TC5REt5OFwvfb6lzxFWrTWB+qs28s= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ibuildthecloud/flannel v0.10.1-0.20190131215433-823afe66b226 h1:XdW09kPx8lMtvPAPVnlIG4H/kTC01x5ADdN1J+KsglM= +github.com/ibuildthecloud/flannel v0.10.1-0.20190131215433-823afe66b226/go.mod h1:HCHln+957B/ml+RJJ4fnilxsq7wN5dOnytc3nLQchV4= +github.com/ibuildthecloud/kine v0.1.0 h1:nF/wtPm7qECzZeagEyZgy8seFcwpJz8LRF6pc7hYSl0= +github.com/ibuildthecloud/kine v0.1.0/go.mod h1:TTWUtUeu7dHQan9BrCtlRbKr9eK7epHqrBFOAae15Bg= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/j-keck/arping v1.0.0 h1:DN6Wy73IeadEEo5xVCgEp+ZGn2xmAypggxj8mtxXBD0= +github.com/j-keck/arping v1.0.0/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= +github.com/jetstack/cert-manager v0.7.2/go.mod h1:nbddmhjWxYGt04bxvwVGUSeLhZ2PCyNvd7MpXdq+yWY= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jonboulle/clockwork v0.0.0-20141017032234-72f9bd7c4e0c h1:XpRROA6ssPlTwJI8/pH+61uieOkcJhmAFz25cu0B94Y= +github.com/jonboulle/clockwork v0.0.0-20141017032234-72f9bd7c4e0c/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6 h1:MrUvLMLTMxbqFJ9kzlvat/rYZqZnW3u4wkLzWTaFwKs= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jteeuwen/go-bindata v0.0.0-20151023091102-a0ff2567cfb7/go.mod h1:JVvhzYOiGBnFSYRyV00iY8q7/0PThjIYav1p9h5dmKs= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d h1:hJXjZMxj0SWlMoQkzeZDLi2cmeiWKa7y1B8Rg+qaoEc= +github.com/juju/errors v0.0.0-20190806202954-0232dcc7464d/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= +github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8 h1:UUHMLvzt/31azWTN/ifGWef4WUqvXk0iRqdhdy/2uzI= +github.com/juju/loggo v0.0.0-20190526231331-6e530bcce5d8/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= +github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2 h1:Pp8RxiF4rSoXP9SED26WCfNB28/dwTDpPXS8XMJR8rc= +github.com/juju/testing v0.0.0-20190723135506-ce30eb24acd2/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= +github.com/kardianos/osext v0.0.0-20150410034420-8fef92e41e22/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= +github.com/karrick/godirwalk v1.7.5 h1:VbzFqwXwNbAZoA6W5odrLr+hKK197CcENcPh6E/gJ0M= +github.com/karrick/godirwalk v1.7.5/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/knative/build v0.6.0/go.mod h1:/sU74ZQkwlYA5FwYDJhYTy61i/Kn+5eWfln2jDbw3Qo= +github.com/knative/pkg v0.0.0-20190514205332-5e4512dcb2ca/go.mod h1:7Ijfhw7rfB+H9VtosIsDYvZQ+qYTz7auK3fHW/5z4ww= +github.com/knative/serving v0.6.1/go.mod h1:ljvMfwQy2qanaM/8xnBSK4Mz3Vv2NawC2fo5kFRJS1A= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.0.0-20131111012553-2788f0dbd169/go.mod h1:glhvuHOU9Hy7/8PwwdtnarXqLagOX0b/TbZx2zLMqEg= +github.com/kr/pretty v0.0.0-20140812000539-f31442d60e51/go.mod h1:Bvhd+E3laJ0AVkG0c9rmtZcnhV0HQ3+c3YxxqTvc/gA= +github.com/kr/text v0.0.0-20130911015532-6807e777504f/go.mod h1:sjUstKUATFIcff4qlB53Kml0wQPtJVc/3fWrmuUmcfA= +github.com/lib/pq v1.1.1 h1:sJZmqHoEaY7f+NPP8pgLB/WxulyR3fewgCM2qaSlBb4= +github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/libopenstorage/openstorage v0.0.0-20170906232338-093a0c388875/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= +github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= +github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA= +github.com/magiconair/properties v0.0.0-20160816085511-61b492c03cf4/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329 h1:2gxZ0XQIU/5z3Z3bUBu+FXuk2pFbkN6tcwi/pjyaDic= +github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marstr/guid v0.0.0-20170427235115-8bdf7d1a087c h1:N7uWGS2fTwH/4BwxbHiJZNAFTSJ5yPU0emHsQWvkxEY= +github.com/marstr/guid v0.0.0-20170427235115-8bdf7d1a087c/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= +github.com/mattbaird/jsonpatch v0.0.0-20171005235357-81af80346b1a/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= +github.com/mattn/go-shellwords v0.0.0-20180605041737-f8471b0a71de h1:ryDLMbZGgf2bSdLfdQFaJuuP4No40cDUt62Mdv+3TW8= +github.com/mattn/go-shellwords v0.0.0-20180605041737-f8471b0a71de/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= +github.com/mattn/go-sqlite3 v1.10.0 h1:jbhqpg7tQe4SupckyijYiy0mJJ/pRyHvXf7JdWK860o= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mesos/mesos-go v0.0.9 h1:w8V5sOEnxzHZ2kAOy273v/HgbolyI6XI+qe5jx5u+Y0= +github.com/mesos/mesos-go v0.0.9/go.mod h1:kPYCMQ9gsOXVAle1OsoY4I1+9kPu8GHkf88aV59fDr4= +github.com/mholt/caddy v0.0.0-20180213163048-2de495001514/go.mod h1:Wb1PlT4DAYSqOEd03MsqkdkXnTxA8v9pKjdpxbqM1kY= +github.com/miekg/dns v0.0.0-20160614162101-5d001d020961 h1:vX2vkMipgQZ8gfmAsFeZdcgmhHoB7jMo6chAtajG3AI= +github.com/miekg/dns v0.0.0-20160614162101-5d001d020961/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mindprince/gonvml v0.0.0-20171110221305-fee913ce8fb2 h1:v3dy+FJr7gS7nLgYG7YjX/pmUWuFdudcpnoRNHt2heo= +github.com/mindprince/gonvml v0.0.0-20171110221305-fee913ce8fb2/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= +github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= +github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= +github.com/mistifyio/go-zfs v0.0.0-20151009155749-1b4ae6fb4e77 h1:FGBFB7BrG/ERBtzqLKd3JoDHkVSGHX7GXaWZyG1RLno= +github.com/mistifyio/go-zfs v0.0.0-20151009155749-1b4ae6fb4e77/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mistifyio/go-zfs v0.0.0-20171122051224-166add352731 h1:2kI6piV7D1QfQwaJsvDK5+zwDtz5Z5pODaPZbAbIers= +github.com/mistifyio/go-zfs v0.0.0-20171122051224-166add352731/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= +github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c h1:nXxl5PrvVm2L/wCy8dQu6DMTwH4oIuGN8GJDAlqDdVE= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mrunalp/fileutils v0.0.0-20160930181131-4ee1cc9a8058 h1:A4y2IxU1GcIzlcmUlQ6yr/mrvYZhqo+HakAPwgwaa6s= +github.com/mrunalp/fileutils v0.0.0-20160930181131-4ee1cc9a8058/go.mod h1:x8F1gnqOkIEiO4rqoeEEEqQbo7HjGMTvyoq3gej4iT0= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d h1:7PxY7LVfSZm7PEeBTyK1rj1gABdCO2mbri6GKO1cMDs= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mvdan/xurls v0.0.0-20160110113200-1b768d7c393a/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/natefinch/lumberjack v2.0.0+incompatible h1:4QJd3OLAMgj7ph+yZTuX13Ld4UpgHp07nNdFX7mqFfM= +github.com/natefinch/lumberjack v2.0.0+incompatible/go.mod h1:Wi9p2TTF5DG5oU+6YfsmYQpsTIOm0B1VNzQg9Mw6nPk= +github.com/onsi/ginkgo v1.6.0 h1:Ix8l273rp3QzYgXSR+c8d1fTG7UPgYkOSELPhiY/YGw= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3 h1:EooPXg51Tn+xmWPXJUGCnJhJSpeuMlBmfJVcqIRmmv8= +github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420 h1:Yu3681ykYHDfLoI6XVjL4JWmkE+3TX9yfIWwRCh1kFM= +github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2 h1:QhPf3A2AZW3tTGvHPg0TA+CR3oHbVLlXUhlghqISp1I= +github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/image-spec v0.0.0-20170604055404-372ad780f634 h1:BNgUWy7fCNMkfpyG05/9wWeDnIY4hqs9UpqkGIjAb68= +github.com/opencontainers/image-spec v0.0.0-20170604055404-372ad780f634/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/runc v0.0.0-20181113202123-f000fe11ece1 h1:3gyy8YoD+PvTCqjFmlndbR6viQwoN2MJlApTpCmrTM8= +github.com/opencontainers/runc v0.0.0-20181113202123-f000fe11ece1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= +github.com/opencontainers/runtime-spec v0.0.0-20180911193056-5684b8af48c1 h1:AcjCvgprf9I23wEYTHuyuHcuuQAp4hK5l+u1FUXgVaM= +github.com/opencontainers/runtime-spec v0.0.0-20180911193056-5684b8af48c1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.6.0 h1:NYIDT9KoSAIfmXpMrulp/j+64c8OBb2l19u3vmOl4so= +github.com/opencontainers/runtime-tools v0.6.0/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= +github.com/opencontainers/selinux v0.0.0-20170621221121-4a2974bf1ee9 h1:vVmQZ2IaaEe1MiuvZQbcydTbnlTG0OnZO5/4j7VZv0A= +github.com/opencontainers/selinux v0.0.0-20170621221121-4a2974bf1ee9/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= +github.com/opencontainers/selinux v1.2.2 h1:Kx9J6eDG5/24A6DtUquGSpJQ+m2MUTahn4FtGEe8bFg= +github.com/opencontainers/selinux v1.2.2/go.mod h1:+BLncwf63G4dgOzykXAxcmnFlUaOlkDdmw/CqsW6pjs= +github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.0.1/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v0.0.0-20160930220758-4d0e916071f6/go.mod h1:NxmoDg/QLVWluQDUYG7XBZTLUpKeFa8e3aMf1BfjyHk= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20 h1:7sBb9iOkeq+O7AXlVoH/8zpIcRXX523zMkKKspHjjx8= +github.com/pquerna/ffjson v0.0.0-20180717144149-af8b230fcd20/go.mod h1:YARuvh7BUWHNhzDq2OM5tzR2RiCcN2D7sapiKyCel/M= +github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/quobyte/api v0.1.2/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= +github.com/rakelkar/gonetsh v0.0.0-20190719023240-501daadcadf8 h1:83l9gPhYtgxODlZKU0Odq4pQuDcMZEVgAh364+PV3OU= +github.com/rakelkar/gonetsh v0.0.0-20190719023240-501daadcadf8/go.mod h1:4XHkfaUj+URzGO9sohoAgt2V9Y8nIW7fugpu0E6gShk= +github.com/rancher/containerd v1.2.8-k3s.1 h1:KNheWLnUMklsknE3xk/4pdkKhA1C2T6Avf3uNcfTqKw= +github.com/rancher/containerd v1.2.8-k3s.1/go.mod h1:ZMfzmqce2Z+QSEqdHMfeJs1TZ/UeJ1aDrazjpQT4ehM= +github.com/rancher/cri v1.2.8-k3s.1 h1:pvMDfF9PW1f7O7VbpD1KfwI0glNsQ8hZnPvhwnhRI5Y= +github.com/rancher/cri v1.2.8-k3s.1/go.mod h1:Ht5T1dIKzm+4NExmb7wDVG6qR+j0xeXIjjhCv1d9geY= +github.com/rancher/cri-tools v1.15.0-k3s.2 h1:h9a5aB9RLesRoErka1j63tRVJ9q4CF1+BNwT+AfsUvk= +github.com/rancher/cri-tools v1.15.0-k3s.2/go.mod h1:Kb50VzhsJdp9Rkg69PcPA4tl/f+HLwA5WWH86OXbbKM= +github.com/rancher/helm-controller v0.2.2 h1:MUqisy53/Ay1EYOF2uTCYBbGpgtZLNKKrI01BdxIbQo= +github.com/rancher/helm-controller v0.2.2/go.mod h1:0JkL0UjxddNbT4FmLoESarD4Mz8xzA5YlejqJ/U4g+8= +github.com/rancher/kubernetes v1.15.3-k3s.3 h1:C0+eViQHV3mSgjg7q6NXA54Wd6HX1mJaDI5TQNiycsU= +github.com/rancher/kubernetes v1.15.3-k3s.3/go.mod h1:4Ggyo4AFgjbIzULOminzUJAvgbzY3j5ysXlW/a0PdcQ= +github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3 h1:wsosIFUS3v3VQwOPRP3/njSrW/O9WXTBzvAMdGcfmL0= +github.com/rancher/kubernetes/staging/src/k8s.io/api v1.15.3-k3s.3/go.mod h1:rcBmQEBoKrTUCORrHN/yvdmJPQsGpCEL61sZkMpMX/8= +github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3 h1:xNfIaZNd3xtSahAkeLlaQ8o2b4b5gwig/JJXoCPHmZ4= +github.com/rancher/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.15.3-k3s.3/go.mod h1:F6Fl77o501YUXNsJfBI+WAoC0ZcVGbw3FWQYig2Eplw= +github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3 h1:rUySia7I1z2Xe2PkmhMRonOMTbloHCsxScEOasQ99PM= +github.com/rancher/kubernetes/staging/src/k8s.io/apimachinery v1.15.3-k3s.3/go.mod h1:EM3ldevXE4F3MtIQ4hiuD/tCPbERnIGmMbh/rRhJTWU= +github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3 h1:xFedGXf+VUbMti9c3PH9blVGQ+UzrKwO+YtBb9vDjp8= +github.com/rancher/kubernetes/staging/src/k8s.io/apiserver v1.15.3-k3s.3/go.mod h1:OZJzR5V6BBBN4xOUBmqtPhb4RuJez+IWLMODK/NIlJQ= +github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3 h1:r6P2sKF2lvqXDR6h2PheToO/76h4EceWM09Mk1dCE3k= +github.com/rancher/kubernetes/staging/src/k8s.io/cli-runtime v1.15.3-k3s.3/go.mod h1:dKWyWMnUIiQfD5yrNxeI07y0i6s19N9qnMId+knbLPI= +github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3 h1:1hl9lTSH1Xe3LdGQ+L0AMeGl9NceYLV8wPjDO9g1orY= +github.com/rancher/kubernetes/staging/src/k8s.io/client-go v1.15.3-k3s.3/go.mod h1:NDJvuHvuvLV6miyzCs9HtkqBxy1Z+6UhEPYnUx38+6E= +github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3 h1:hcCwq8UDFRFZzR4ScuxacG3mdqtd4AibaG0hbosalxY= +github.com/rancher/kubernetes/staging/src/k8s.io/cloud-provider v1.15.3-k3s.3/go.mod h1:861E8pSdrE1y4su5sU2ybvnPMpymHFWZtnFl75mWktE= +github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3 h1:Ix389bAy7HcjuD5Gh0chZatfFz9u51J6JPUnfWKYT78= +github.com/rancher/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.15.3-k3s.3/go.mod h1:r5Ddw/Lh5GppfYcOPMtWU06QKtXaHj6iPHSZ3RZeJGU= +github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3 h1:VDExwnGFKg2Va00PtMQm3Vmv3+/PrQzomEoItf8jEIw= +github.com/rancher/kubernetes/staging/src/k8s.io/code-generator v1.15.3-k3s.3/go.mod h1:4Gc8gg/oUtfQgnOvrhYAu1AEwEpSzP8er8bKHbjVJBo= +github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3 h1:pnmX6BYGUJnBUwMqVMOOnQiNRAa//IRaqxWMUuivH48= +github.com/rancher/kubernetes/staging/src/k8s.io/component-base v1.15.3-k3s.3/go.mod h1:NJRBXyb9zH0JrIobSBvZBoqUyxFXxcm0bN7Qr6MN12k= +github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3 h1:iJT30DO49MEZzLInZInuYPU+IaF9Cac9ClHJZzmhA7g= +github.com/rancher/kubernetes/staging/src/k8s.io/cri-api v1.15.3-k3s.3/go.mod h1:NXoFYaThKj0dmWgmQCs5fyce69w7dSPgJSjopV7HbwM= +github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3 h1:lmF34d/m1evfkXUsIdchtTOElnZlxu6TPyTf7i9KZ+U= +github.com/rancher/kubernetes/staging/src/k8s.io/csi-translation-lib v1.15.3-k3s.3/go.mod h1:xwK4w9WjvsWqe6BcCPgj/LRCLt0DyP2z0jLzkskrqk4= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3 h1:ViK6cKoDs+nP7gu5WulYdkAx0pEHBRZsOFV0kdX2MpU= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-aggregator v1.15.3-k3s.3/go.mod h1:B0gdwJ6Lc3iB67M8vFyHLt9FMFIFmSuFqmrqlVzYjSM= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3 h1:quvRjcQ6yBdTm1O0NxuI4vQs+H3J+uj7nQ8SG3xVe84= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-controller-manager v1.15.3-k3s.3/go.mod h1:ZiwCid/JscSDAF4cNOV+Cq+8t61kYWZoTsjhH8OaguY= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3 h1://sOTht3YA161msP3KQrGG/wozunKsKou4zTg+y1EWA= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-proxy v1.15.3-k3s.3/go.mod h1:zFgVsUCkS999et21KQUK67gYZkbJbdRY0YJIw6TZyMg= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3 h1:3CEMKNKuqeUC7e4HrkparvR9ETBvcydqcSPYMC25rZU= +github.com/rancher/kubernetes/staging/src/k8s.io/kube-scheduler v1.15.3-k3s.3/go.mod h1:Q70yepfdw1i1HQkSCMIL1gzcS4keWGjjDPkFIWEGX64= +github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3 h1:ZW8V6VwZa0AwHCx603gGu5I4HgoghCSuiAbeT7shIdA= +github.com/rancher/kubernetes/staging/src/k8s.io/kubelet v1.15.3-k3s.3/go.mod h1:PtmuzszR3KI3+Ao8TV/Vm2c28uiLf/RT2P8PQR3Ddfg= +github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3 h1:359wZ/EGd68CDorYfojhXqjpV0G8Qt1fJ5VxCzSWGxk= +github.com/rancher/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.15.3-k3s.3/go.mod h1:nypsLFh31wJ+39/Hc52DBhS3277H3ztzYah1d4J0kaw= +github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3 h1:++ilYPjCqGUMb9SdlS9F+8rU6DccMjVwRoxywmrYjgc= +github.com/rancher/kubernetes/staging/src/k8s.io/metrics v1.15.3-k3s.3/go.mod h1:ZXuwfKuK6ZMbreRcmr4gRIa5dfuA+IG5oB+HhpB1Hjo= +github.com/rancher/kubernetes/staging/src/k8s.io/sample-apiserver v1.15.3-k3s.3/go.mod h1:AV4PilnJ+BCoSk8Y3pNti4CEBwVDOyTf1yFmyxj69ng= +github.com/rancher/moq v0.0.0-20190404221404-ee5226d43009 h1:Xsxh7fX3+2wAUJtPy8g2lZh0cYuyifqhBL0vxCIYojs= +github.com/rancher/moq v0.0.0-20190404221404-ee5226d43009/go.mod h1:wpITyDPTi/Na5h73XkbuEf2AP9fbgrIGqqxVzFhYD6U= +github.com/rancher/plugins v0.7.5-k3s1 h1:iYLbr8cq41S3WNPXTY3y9NWnjT0D1bCzu7MqjcG0NQU= +github.com/rancher/plugins v0.7.5-k3s1/go.mod h1:dQhhj8PsxoQ5PFfGyZ3xxF73OwUD/LC9bn1HnGfGJz0= +github.com/rancher/remotedialer v0.2.0 h1:xD7t3K6JYwTdAsxmGtTHQMkEkFgKouQ1foLxVW424Dc= +github.com/rancher/remotedialer v0.2.0/go.mod h1:tkU8ZvrR5lRgaKWaX71nAy6daeqvPFx/lJEnbW7tXSI= +github.com/rancher/wrangler v0.0.0-20190512193419-40fa298578b9/go.mod h1:HM0BuhAugqM5cGtQn2hrMwpbExuLQe7NCUTD+crAxV0= +github.com/rancher/wrangler v0.1.4 h1:bdzBw4H9JKQhXPBPNp4eHbmrkA24+VII865VLiVWcw8= +github.com/rancher/wrangler v0.1.4/go.mod h1:EYP7cqpg42YqElaCm+U9ieSrGQKAXxUH5xsr+XGpWyE= +github.com/rancher/wrangler v0.2.0 h1:ENg7iac/aLgCbugUYosUMG7Kj97i4qMPejjqZFVorbw= +github.com/rancher/wrangler v0.2.0/go.mod h1:TLc4vXF21FWz2MYNHny5zDwFwBqvgBViU5n9CHrJRQ0= +github.com/rancher/wrangler-api v0.1.4 h1:2jkZBat27ZHR2RCWQacFEIMdkA1A5fbDE439s3gHLU8= +github.com/rancher/wrangler-api v0.1.4/go.mod h1:Mc8bNN5rNxpQ7am2orUbonahw4xJ6ztF+fUTSku8KnE= +github.com/rancher/wrangler-api v0.2.0 h1:VR7hLNnDrKykKLqthtwZ58pDDtUa9ijSNToPaJLEkWc= +github.com/rancher/wrangler-api v0.2.0/go.mod h1:zTPdNLZO07KvRaVOx6XQbKBSV55Fnn4s7nqmrMPJqd8= +github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/robfig/cron v0.0.0-20170309132418-df38d32658d8 h1:b904/jbnmYuSPd5ojGzVTLjKPVTSj3t/e1vEPiPGjEg= +github.com/robfig/cron v0.0.0-20170309132418-df38d32658d8/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= +github.com/rootless-containers/rootlesskit v0.6.0 h1:L7DxVAlaNhg4M/+i2GCl24kRkXO5q81C/lu4jlMz3bE= +github.com/rootless-containers/rootlesskit v0.6.0/go.mod h1:HO7iU3+dH2N6yQL4DcUGQpzVZ7e7VYWNdtTAOR/P3FM= +github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c h1:ht7N4d/B7Ezf58nvMNVF3OlvDlz9pp+WHVcRNS0nink= +github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= +github.com/russross/blackfriday v0.0.0-20151117072312-300106c228d5 h1:+6eORf9Bt4C3Wjt91epyu6wvLW+P6+AEODb6uKgO+4g= +github.com/russross/blackfriday v0.0.0-20151117072312-300106c228d5/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/seccomp/libseccomp-golang v0.0.0-20150813023252-1b506fc7c24e h1:HJbgNpzYMeTLPpkMwbPNTPlhNd9r4xQtqcZG6qoIGgs= +github.com/seccomp/libseccomp-golang v0.0.0-20150813023252-1b506fc7c24e/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.0.0-20160531183505-32f571b70023 h1:ZtrLs4RfZhyCYqamkjrwNSSAYhnRYqBSi8g17h2kars= +github.com/seccomp/libseccomp-golang v0.0.0-20160531183505-32f571b70023/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20151028001915-10ef21a441db h1:lrOUn8raSZS/V52c7elGaEyuogqSkEo/Qj2Auo2G1ik= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20151028001915-10ef21a441db/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sigma/go-inotify v0.0.0-20181102212354-c87b6cf5033d h1:G1nNtZVTzcCvVKMwcG0Vispo3bhc15EbjO5uamiLikI= +github.com/sigma/go-inotify v0.0.0-20181102212354-c87b6cf5033d/go.mod h1:stlh9OsqBQSdwxTxX73mu41BBtRbIpZLQ7flcAoxAfo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.3 h1:09wy7WZk4AqO03yH85Ex1X+Uo3vDsil3Fa9AgF8Emss= +github.com/soheilhy/cmux v0.1.3/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spf13/afero v0.0.0-20160816080757-b28a7effac97/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v0.0.0-20160730092037-e31f36ffc91a/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg= +github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937 h1:+ryWjMVzFAkEz5zT+Ms49aROZwxlJce3x3zLTFpkz3Y= +github.com/spf13/cobra v0.0.0-20180319062004-c439c4fa0937/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/jwalterweatherman v0.0.0-20160311093646-33c24e77fb80/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v1.0.1 h1:aCvUg6QPl3ibpQUxyLkrEkCHtPqYJL4x9AuhqVqFis4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/viper v0.0.0-20160820190039-7fb2782df3d8/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM= +github.com/storageos/go-api v0.0.0-20180912212459-343b3eff91fc/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/syndtr/gocapability v0.0.0-20160928074757-e7cb7fa329f4/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8 h1:zLV6q4e8Jv9EHjNg/iHfzwDkCve6Ua5jCygptrtXHvI= +github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tchap/go-patricia v2.2.6+incompatible h1:JvoDL7JSoIP2HDE8AbDH3zC8QBPxmzYe32HHy5yQ+Ck= +github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= +github.com/tektoncd/pipeline v0.4.0/go.mod h1:IZzJdiX9EqEMuUcgdnElozdYYRh0/ZRC+NKMLj1K3Yw= +github.com/theckman/go-flock v0.7.1 h1:YdJyIjDuQdEU7voZ9YaeXSO4OnrxdI+WejPUwyZ/Txs= +github.com/theckman/go-flock v0.7.1/go.mod h1:kjuth3y9VJ2aNlkNEO99G/8lp9fMIKaGyBmh84IBheM= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8 h1:ndzgwNDnKIqyCvHTXaCqh9KlOWKvBry6nuXMJmonVsE= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/urfave/cli v1.20.0 h1:fDqGv3UG/4jbVl/QkFwEdddtEDjh/5Ov6X+0B/3bPaw= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.21.0 h1:wYSSj06510qPIzGSua9ZqsncMmWE3Zr55KBERygyrxE= +github.com/urfave/cli v1.21.0/go.mod h1:lxDj6qX9Q6lWQxIrbrT0nwecwUtRnhVZAJjJZrVUZZQ= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e h1:f1yevOHP+Suqk0rVc13fIkzcLULJbyQcXDba2klljD0= +github.com/vishvananda/netlink v0.0.0-20171020171820-b2de5d10e38e/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= +github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936 h1:J9gO8RJCAFlln1jsvRba/CWVUnMHwObklfxxjErl1uk= +github.com/vishvananda/netns v0.0.0-20171111001504-be1fbeda1936/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= +github.com/vmware/govmomi v0.20.1/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/vmware/photon-controller-go-sdk v0.0.0-20170310013346-4a435daef6cc/go.mod h1:e6humHha1ekIwTCm+A5Qed5mG8V4JL+ChHcUOJ+L/8U= +github.com/xanzy/go-cloudstack v0.0.0-20160728180336-1e2cbf647e57/go.mod h1:s3eL3z5pNXF5FVybcT+LIVdId8pYn709yv6v5mrkrQE= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f h1:mvXjJIHRZyhNuGassLTcXTwjiWq7NmjdavZsUnmFybQ= +github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18 h1:MPPkRncZLN9Kh4MEFmbnK4h3BD7AUmskWv2+EeZJCCs= +github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1 h1:j2hhcujLRHAg872RWAV5yaUrEjHEObwDv3aImCaNLek= +github.com/xlab/handysort v0.0.0-20150421192137-fb3537ed64a1/go.mod h1:QcJo0QPSfTONNIgpN5RA8prR7fF8nkF6cTWTcNerRO8= +go.etcd.io/bbolt v1.3.1-etcd.8 h1:6J7QAKqfFBGnU80KRnuQxfjjeE5xAGE/qB810I3FQHQ= +go.etcd.io/bbolt v1.3.1-etcd.8/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569 h1:nSQar3Y0E3VQF/VdZ8PTAilaXpER+d7ypdABCrpwMdg= +go.uber.org/atomic v0.0.0-20181018215023-8dc6146f7569/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df h1:shvkWr0NAZkg4nPuE3XrKP0VuBPijjk3TfX6Y6acFNg= +go.uber.org/multierr v0.0.0-20180122172545-ddea229ff1df/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15 h1:Z2sc4+v0JHV6Mn4kX1f2a5nruNjmV+Th32sugE8zwz8= +go.uber.org/zap v0.0.0-20180814183419-67bc79d13d15/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181025213731-e84da0312774/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284 h1:rlLehGeYg6jfoyz/eDqDU1iRXLKfR42nnNh57ytKEWo= +golang.org/x/crypto v0.0.0-20190506204251-e1dfcc566284/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 h1:I6A9Ag9FpEKOjcKrRNjQkPHawoXIhKyTGfvvjFAiiAk= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc h1:gkKoSkUmnU6bpS/VhkuO27bzQeSA51uaEfbOW5dNb68= +golang.org/x/net v0.0.0-20190812203447-cdfb69ac37fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a h1:tImsplftrFpALCYumobsd0K86vlAs/eXGFms2txfJfA= +golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20161028155119-f51c12702a4d/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20170824195420-5d2fd3ccab98/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384 h1:TFlARGu6Czu1z7q93HTxcP1P+/ZFC/IKythI5RzrnRg= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485 h1:OB/uP/Puiu5vS5QMRPrXCDWUPb+kt8f1KW8oQzFejQw= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e h1:jRyg0XfpwWlhEV8mDfdNGBeSJM2fuyh9Yjrnd8kF2Ts= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +google.golang.org/api v0.0.0-20181220000619-583d854617af h1:iQMS7JKv/0w/iiWf1M49Cg3dmOkBoBZT5KheqPDpaac= +google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4c= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20170731182057-09f6ed296fc6/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/grpc v1.13.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.0 h1:0HIbH907iBTAntm+88IJV2qmJALDAh8sPekI9Vc1fm0= +gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/natefinch/lumberjack.v2 v2.0.0-20150622162204-20b71e5b60d7 h1:986b60BAz5vO2Vaf48yQaq+wb2bU4JsXxKu1+itW6x8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0-20150622162204-20b71e5b60d7/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84 h1:ELQJ5WuT+ydETLCpWvAuw8iGBQRGoJq+A3RAbbAcZUY= +gopkg.in/square/go-jose.v2 v2.0.0-20180411045311-89060dee6a84/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.1 h1:XM28wIgFzaBmeZ5dNHIpWLQpt/9DGKxk+rCg/22nnYE= +gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0 h1:POO/ycCATvegFmVuPpQzZFJ+pGZeX22Ufu6fibxDVjU= +gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +k8s.io/gengo v0.0.0-20190116091435-f8a0810f38af/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20190327210449-e17681d19d3a h1:QoHVuRquf80YZ+/bovwxoMO3Q/A3nt3yTgS0/0nejuk= +k8s.io/gengo v0.0.0-20190327210449-e17681d19d3a/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/heapster v1.2.0-beta.1 h1:lUsE/AHOMHpi3MLlBEkaU8Esxm5QhdyCrv1o7ot0s84= +k8s.io/heapster v1.2.0-beta.1/go.mod h1:h1uhptVXMwC8xtZBYsPXKVi8fpdlYkTs6k949KozGrM= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.1 h1:RVgyDHY/kFKtLqh67NvEWIgkMneNoIrdkN0CxDSQc68= +k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30 h1:TRb4wNWoBVrH9plmkp2q86FIDppkbrEXdXlxU3a3BMI= +k8s.io/kube-openapi v0.0.0-20190228160746-b3a7cee44a30/go.mod h1:BXM9ceUBTj2QnfH2MK1odQs778ajze1RxcmP6S8RVVc= +k8s.io/repo-infra v0.0.0-20181204233714-00fe14e3d1a3/go.mod h1:+G1xBfZDfVFsm1Tj/HNCvg4QqWx8rJ2Fxpqr1rqp/gQ= +k8s.io/utils v0.0.0-20190221042446-c2654d5206da/go.mod h1:8k8uAuAQ0rXslZKaEWd0c3oVhZz7sSzSiPnVZayjIX0= +k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5 h1:VBM/0P5TWxwk+Nw6Z+lAw3DKgO76g90ETOiA6rfLV1Y= +k8s.io/utils v0.0.0-20190506122338-8fab8cb257d5/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20190829053155-3a4a5477acf8 h1:khtxGxwSe3nyReEEggzTwQigMT3g40enrlivMlMeaGY= +k8s.io/utils v0.0.0-20190829053155-3a4a5477acf8/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0= +sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU= +sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2 h1:9r5DY45ef9LtcA6BnkhW8MPV7OKAfbf2AUwUhq3LeRk= +sigs.k8s.io/structured-merge-diff v0.0.0-20190302045857-e85c7b244fd2/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc h1:MksmcCZQWAQJCTA5T0jgI/0sJ51AVm4Z41MrmfczEoc= +vbom.ml/util v0.0.0-20160121211510-db5cfe13f5cc/go.mod h1:so/NYdZXCz+E3ZpW0uAoCj6uzU2+8OWDFv/HxUSs7kI= diff --git a/trash.lock b/trash.lock deleted file mode 100755 index 406e76189f..0000000000 --- a/trash.lock +++ /dev/null @@ -1,392 +0,0 @@ -package: package=github.com/rancher/k3s -import: -- package: cloud.google.com/go - version: v0.34.0 -- package: github.com/Azure/go-ansiterm - version: d6e3b3328b78 -- package: github.com/BurntSushi/toml - version: a368813c5e648fee92e5f6c30e3944ff9d5e8895 -- package: github.com/GoogleCloudPlatform/k8s-cloud-provider - version: f8e995905100 -- package: github.com/JeffAshton/win_pdh - version: 76bb4ee9f0ab -- package: github.com/MakeNowJust/heredoc - version: bb23615498cd -- package: github.com/Microsoft/go-winio - version: v0.4.12 -- package: github.com/Microsoft/hcsshim - version: v0.8.6 -- package: github.com/NYTimes/gziphandler - version: 56545f4a5d46 -- package: github.com/PuerkitoBio/purell - version: v1.1.0 -- package: github.com/PuerkitoBio/urlesc - version: de5bf2ad4578 -- package: github.com/alexflint/go-filemutex - version: 72bdc8eae2aef913234599b837f5dda445ca9bd9 -- package: github.com/armon/circbuf - version: bbbad097214e -- package: github.com/asaskevich/govalidator - version: f9ffefc3facf -- package: github.com/beorn7/perks - version: 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9 -- package: github.com/blang/semver - version: v3.1.0 -- package: github.com/chai2010/gettext-go - version: c6fed771bfd5 -- package: github.com/cloudflare/cfssl - version: 56268a613adf -- package: github.com/container-storage-interface/spec - version: v1.1.0 -- package: github.com/containerd/cgroups - version: 4994991857f9b0ae8dc439551e8bebdbb4bf66c1 -- package: github.com/containerd/console - version: c12b1e7919c14469339a5d38f2f8ed9b64a9de23 -- package: github.com/containerd/containerd - version: v1.2.8-k3s.1 - repo: https://github.com/rancher/containerd.git -- package: github.com/containerd/continuity - version: bd77b46c8352f74eb12c85bdc01f4b90f69d66b4 -- package: github.com/containerd/cri - version: v1.2.8-k3s.1 - repo: https://github.com/rancher/cri.git -- package: github.com/containerd/fifo - version: 3d5202aec260678c48179c56f40e6f38a095738c -- package: github.com/containerd/go-cni - version: 40bcf8ec8acd7372be1d77031d585d5d8e561c90 -- package: github.com/containerd/go-runc - version: 5a6d9f37cfa36b15efba46dc7ea349fa9b7143c3 -- package: github.com/containerd/ttrpc - version: f82148331ad2181edea8f3f649a1f7add6c3f9c2 -- package: github.com/containerd/typeurl - version: a93fcdb778cd272c6e9b3028b2f42d813e785d40 -- package: github.com/containernetworking/cni - version: v0.6.0 -- package: github.com/containernetworking/plugins - version: v0.7.5-k3s1 - repo: https://github.com/rancher/plugins.git -- package: github.com/coreos/etcd - version: v3.3.13 -- package: github.com/coreos/flannel - version: 823afe66b2266bf71f5bec24e6e28b26d70cfc7c - repo: https://github.com/ibuildthecloud/flannel.git -- package: github.com/coreos/go-iptables - version: 47f22b0dd3355c0ba570ba12b0b8a36bf214c04b -- package: github.com/coreos/go-oidc - version: 065b426bd416 -- package: github.com/coreos/go-semver - version: e214231b295a -- package: github.com/coreos/go-systemd - version: v14 -- package: github.com/coreos/pkg - version: 97fdf19511ea -- package: github.com/cyphar/filepath-securejoin - version: ae69057f2299 -- package: github.com/davecgh/go-spew - version: v1.1.0 -- package: github.com/daviddengcn/go-colortext - version: 511bcaf42ccd -- package: github.com/docker/distribution - version: 0d3efadf0154c2b8a4e7b6621fff9809655cc580 -- package: github.com/docker/docker - version: c12f09bf99b54f274a5ae241dd154fa74020cbab -- package: github.com/docker/go-connections - version: v0.3.0 -- package: github.com/docker/go-events - version: 9461782956ad83b30282bf90e31fa6a70c255ba9 -- package: github.com/docker/go-metrics - version: 4ea375f7759c82740c893fc030bc37088d2ec098 -- package: github.com/docker/go-units - version: v0.3.3 -- package: github.com/docker/libnetwork - version: a9cd636e3789 -- package: github.com/docker/spdystream - version: 449fdfce4d962303d702fec724ef0ad181c92528 -- package: github.com/emicklei/go-restful - version: v2.2.1 -- package: github.com/euank/go-kmsg-parser - version: v2.0.0 -- package: github.com/evanphx/json-patch - version: 5858425f7550 -- package: github.com/exponent-io/jsonpath - version: d6023ce2651d -- package: github.com/fatih/camelcase - version: f6a740d52f96 -- package: github.com/fsnotify/fsnotify - version: v1.4.7 -- package: github.com/ghodss/yaml - version: v1.0.0 -- package: github.com/globalsign/mgo - version: eeefdecb41b8 -- package: github.com/go-bindata/go-bindata - version: v3.1.2 -- package: github.com/go-openapi/analysis - version: v0.17.2 -- package: github.com/go-openapi/errors - version: v0.17.2 -- package: github.com/go-openapi/jsonpointer - version: v0.19.0 -- package: github.com/go-openapi/jsonreference - version: v0.19.0 -- package: github.com/go-openapi/loads - version: v0.17.2 -- package: github.com/go-openapi/runtime - version: v0.17.2 -- package: github.com/go-openapi/spec - version: v0.17.2 -- package: github.com/go-openapi/strfmt - version: v0.17.0 -- package: github.com/go-openapi/swag - version: v0.17.2 -- package: github.com/go-openapi/validate - version: v0.18.0 -- package: github.com/go-sql-driver/mysql - version: v1.4.1 -- package: github.com/godbus/dbus - version: v3 -- package: github.com/gogo/googleapis - version: 08a7655d27152912db7aaf4f983275eaf8d128ef -- package: github.com/gogo/protobuf - version: v1.0.0 -- package: github.com/golang/groupcache - version: 02826c3e7903 -- package: github.com/golang/protobuf - version: v1.1.0 -- package: github.com/google/btree - version: 7d79101e329e -- package: github.com/google/cadvisor - version: v0.34.0 -- package: github.com/google/certificate-transparency-go - version: v1.0.21 -- package: github.com/google/go-cmp - version: v0.1.0 -- package: github.com/google/gofuzz - version: 44d81051d367757e1c7c6a5a86423ece9afcf63c -- package: github.com/google/tcpproxy - version: dfa16c61dad2b18a385dfb351adf71566720535b -- package: github.com/google/uuid - version: v1.0.0 -- package: github.com/googleapis/gnostic - version: 0c5108395e2d -- package: github.com/gorilla/context - version: v1.1.1 -- package: github.com/gorilla/mux - version: v1.6.2 -- package: github.com/gorilla/websocket - version: v1.2.0 -- package: github.com/gregjones/httpcache - version: 787624de3eb7 -- package: github.com/grpc-ecosystem/go-grpc-prometheus - version: v1.1 -- package: github.com/hashicorp/errwrap - version: 7554cd9344cec97297fa6649b055a8c98c2a1e55 -- package: github.com/hashicorp/go-multierror - version: ed905158d87462226a13fe39ddf685ea65f1c11f -- package: github.com/hashicorp/golang-lru - version: v0.5.0 -- package: github.com/imdario/mergo - version: v0.3.5 -- package: github.com/inconshreveable/mousetrap - version: v1.0.0 -- package: github.com/j-keck/arping - version: 2cf9dc699c5640a7e2c81403a44127bf28033600 -- package: github.com/jonboulle/clockwork - version: 72f9bd7c4e0c -- package: github.com/json-iterator/go - version: 1.1.5 -- package: github.com/karrick/godirwalk - version: v1.7.5 -- package: github.com/konsorten/go-windows-terminal-sequences - version: v1.0.1 -- package: github.com/kr/fs - version: 2788f0dbd169 -- package: github.com/kubernetes-sigs/cri-tools - version: v1.15.0-k3s.2 - repo: https://github.com/rancher/cri-tools.git -- package: github.com/lib/pq - version: v1.1.1 -- package: github.com/liggitt/tabwriter - version: 89fcab3d43de -- package: github.com/lithammer/dedent - version: v1.1.0 -- package: github.com/mailru/easyjson - version: 60711f1a8329 -- package: github.com/matryer/moq - version: ee5226d43009 - repo: https://github.com/rancher/moq.git -- package: github.com/mattn/go-shellwords - version: f8471b0a71de -- package: github.com/mattn/go-sqlite3 - version: v1.10.0 -- package: github.com/matttproud/golang_protobuf_extensions - version: v1.0.0 -- package: github.com/miekg/dns - version: 5d001d020961 -- package: github.com/mindprince/gonvml - version: fee913ce8fb2 -- package: github.com/mistifyio/go-zfs - version: 166add352731e515512690329794ee593f1aaff2 -- package: github.com/mitchellh/go-wordwrap - version: ad45545899c7 -- package: github.com/mitchellh/mapstructure - version: v1.1.2 -- package: github.com/modern-go/concurrent - version: 1.0.3 -- package: github.com/modern-go/reflect2 - version: 1.0.1 -- package: github.com/morikuni/aec - version: 39771216ff4c63d11f5e604076f9c45e8be1067b -- package: github.com/mrunalp/fileutils - version: 4ee1cc9a8058 -- package: github.com/munnerz/goautoneg - version: a547fc61f48d -- package: github.com/mxk/go-flowrate - version: cca7078d478f -- package: github.com/natefinch/lumberjack - version: aee4629129445bbdfb69aa565537dcfa16544311 -- package: github.com/opencontainers/go-digest - version: c9281466c8b2f606084ac71339773efd177436e7 -- package: github.com/opencontainers/image-spec - version: v1.0.1 -- package: github.com/opencontainers/runc - version: f000fe11ece1 -- package: github.com/opencontainers/runtime-spec - version: 5684b8af48c1ac3b1451fa499724e30e3c20a294 -- package: github.com/opencontainers/runtime-tools - version: v0.6.0 -- package: github.com/opencontainers/selinux - version: v1.2.2 -- package: github.com/pborman/uuid - version: c65b2f87fee37d1c7854c9164a450713c28d50cd -- package: github.com/peterbourgon/diskv - version: v2.0.1 -- package: github.com/pkg/errors - version: v0.8.0 -- package: github.com/pkg/sftp - version: 4d0e916071f6 -- package: github.com/pquerna/cachecontrol - version: 0dec1b30a021 -- package: github.com/prometheus/client_golang - version: v0.9.2 -- package: github.com/prometheus/client_model - version: 5c3871d89910 -- package: github.com/prometheus/common - version: 4724e9255275 -- package: github.com/prometheus/procfs - version: 1dc9a6cbc91a -- package: github.com/rancher/dynamiclistener - version: c08b499d17195fbc2c1764b21c322951811629a5 - repo: https://github.com/erikwilson/rancher-dynamiclistener.git -- package: github.com/rancher/helm-controller - version: v0.2.2 -- package: github.com/rancher/kine - version: v0.1.0 - repo: https://github.com/ibuildthecloud/kine.git -- package: github.com/rancher/remotedialer - version: v0.2.0 -- package: github.com/rancher/wrangler - version: 7737c167e16514a38229bc64c839cee8cd14e6d3 -- package: github.com/rancher/wrangler-api - version: v0.1.4 -- package: github.com/robfig/cron - version: df38d32658d8 -- package: github.com/rootless-containers/rootlesskit - version: v0.6.0 -- package: github.com/russross/blackfriday - version: 300106c228d5 -- package: github.com/seccomp/libseccomp-golang - version: 32f571b70023028bd57d9288c20efbcb237f3ce0 -- package: github.com/shurcooL/sanitized_anchor_name - version: 10ef21a441db -- package: github.com/sigma/go-inotify - version: c87b6cf5033d -- package: github.com/sirupsen/logrus - version: v1.4.1 -- package: github.com/spf13/afero - version: b28a7effac97 -- package: github.com/spf13/cobra - version: c439c4fa0937 -- package: github.com/spf13/pflag - version: v1.0.1 -- package: github.com/syndtr/gocapability - version: db04d3cc01c8b54962a58ec7e491717d06cfcc16 -- package: github.com/tchap/go-patricia - version: v2.2.6 -- package: github.com/theckman/go-flock - version: v0.7.1 -- package: github.com/urfave/cli - version: 8e01ec4cd3e2d84ab2fe90d8210528ffbb06d8ff -- package: github.com/vishvananda/netlink - version: b2de5d10e38e -- package: github.com/vishvananda/netns - version: be1fbeda1936 -- package: github.com/xeipuuv/gojsonpointer - version: 4e3ac2762d5f479393488629ee9370b50873b3a6 -- package: github.com/xeipuuv/gojsonreference - version: bd5ef7bd5415a7ac448318e64f11a24cd21e594b -- package: github.com/xeipuuv/gojsonschema - version: 1d523034197ff1f222f6429836dd36a2457a1874 -- package: go.etcd.io/bbolt - version: v1.3.1-etcd.8 -- package: golang.org/x/crypto - version: a49355c7e3f8fe157a85be2f77e6e269a0f89602 -- package: golang.org/x/net - version: cdfb69ac37fc6fa907650654115ebebb3aae2087 -- package: golang.org/x/oauth2 - version: a6bd8cefa1811bd24b86f8902872e4e8225f74c4 -- package: golang.org/x/sync - version: 450f422ab23cf9881c94e2db30cac0eb1b7cf80c -- package: golang.org/x/sys - version: 41f3e6584952bb034a481797859f6ab34b6803bd - repo: https://github.com/golang/sys -- package: golang.org/x/text - version: 19e51611da83d6be54ddafce4a4af510cb3e9ea4 -- package: golang.org/x/time - version: f51c12702a4d776e4c1fa9b0fabab841babae631 -- package: golang.org/x/tools - version: aa82965741a9 -- package: gonum.org/v1/gonum - version: 3d26580ed485 -- package: google.golang.org/api - version: 583d854617af -- package: google.golang.org/appengine - version: v1.5.0 -- package: google.golang.org/genproto - version: d80a6e20e776b0b17a324d0ba1ab50a39c8e8944 -- package: google.golang.org/grpc - version: v1.12.0 -- package: gopkg.in/gcfg.v1 - version: v1.2.0 -- package: gopkg.in/inf.v0 - version: 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 -- package: gopkg.in/natefinch/lumberjack.v2 - version: 20b71e5b60d7 -- package: gopkg.in/square/go-jose.v2 - version: 89060dee6a84 -- package: gopkg.in/warnings.v0 - version: v0.1.1 -- package: gopkg.in/yaml.v2 - version: v2.2.1 -- package: k8s.io/gengo - version: f8a0810f38af -- package: k8s.io/heapster - version: v1.2.0-beta.1 -- package: k8s.io/klog - version: v0.3.1 -- package: k8s.io/kube-openapi - version: b3a7cee44a30 -- package: k8s.io/kubernetes - version: v1.15.3-k3s.1 - repo: https://github.com/rancher/k3s.git - transitive: true - staging: true -- package: k8s.io/utils - version: 6c36bc71fc4aeb1f49801054e71aebdaef1fbeb4 -- package: sigs.k8s.io/kustomize - version: v2.0.3 -- package: sigs.k8s.io/structured-merge-diff - version: e85c7b244fd2 -- package: sigs.k8s.io/yaml - version: v1.1.0 -- package: vbom.ml/util - version: db5cfe13f5cc diff --git a/vendor.conf b/vendor.conf deleted file mode 100644 index 36115b6d53..0000000000 --- a/vendor.conf +++ /dev/null @@ -1,143 +0,0 @@ -package=github.com/rancher/k3s -package=github.com/go-bindata/go-bindata -package=github.com/go-bindata/go-bindata/go-bindata -package=github.com/containerd/containerd/cmd/containerd-shim -package=k8s.io/kubernetes/cmd/hyperkube -package=github.com/opencontainers/runc -package=github.com/coreos/go-systemd/activation -package=github.com/opencontainers/runc/libcontainer/nsenter -package=github.com/opencontainers/runc/libcontainer/specconv -package=github.com/opencontainers/runc/contrib/cmd/recvtty - -k8s.io/kubernetes v1.15.3-k3s.1 https://github.com/rancher/k3s.git transitive=true,staging=true -github.com/google/cadvisor v0.34.0 -k8s.io/utils 6c36bc71fc4aeb1f49801054e71aebdaef1fbeb4 - -github.com/go-bindata/go-bindata v3.1.2 -github.com/rancher/wrangler 7737c167e16514a38229bc64c839cee8cd14e6d3 -github.com/rancher/wrangler-api v0.1.4 -github.com/rancher/dynamiclistener c08b499d17195fbc2c1764b21c322951811629a5 https://github.com/erikwilson/rancher-dynamiclistener.git -github.com/rancher/remotedialer v0.2.0 -github.com/rancher/helm-controller v0.2.2 -github.com/matryer/moq ee5226d43009 https://github.com/rancher/moq.git -github.com/coreos/flannel 823afe66b2266bf71f5bec24e6e28b26d70cfc7c https://github.com/ibuildthecloud/flannel.git -github.com/natefinch/lumberjack aee4629129445bbdfb69aa565537dcfa16544311 -github.com/gorilla/mux v1.6.2 -github.com/gorilla/websocket v1.2.0 -github.com/mattn/go-sqlite3 v1.10.0 -github.com/go-sql-driver/mysql v1.4.1 -github.com/lib/pq v1.1.1 -go.etcd.io/etcd v3.3.11 -github.com/patrickmn/go-cache v2.1.0 -golang.org/x/crypto a49355c7e3f8fe157a85be2f77e6e269a0f89602 -gopkg.in/freddierice/go-losetup.v1 fc9adea44124401d8bfef3a97eaf61b5d44cc2c6 -github.com/urfave/cli 8e01ec4cd3e2d84ab2fe90d8210528ffbb06d8ff -golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c -github.com/docker/docker c12f09bf99b54f274a5ae241dd154fa74020cbab -github.com/google/tcpproxy dfa16c61dad2b18a385dfb351adf71566720535b -github.com/morikuni/aec 39771216ff4c63d11f5e604076f9c45e8be1067b - -# flannel -github.com/golang/glog 23def4e6c14b4da8ac2ed8007337bc5eb5007998 -github.com/coreos/go-iptables 47f22b0dd3355c0ba570ba12b0b8a36bf214c04b - -# cni -github.com/containernetworking/plugins v0.7.5-k3s1 https://github.com/rancher/plugins.git -github.com/j-keck/arping 2cf9dc699c5640a7e2c81403a44127bf28033600 -github.com/alexflint/go-filemutex 72bdc8eae2aef913234599b837f5dda445ca9bd9 - -# runc -github.com/opencontainers/runtime-spec 5684b8af48c1ac3b1451fa499724e30e3c20a294 - -# containerd -github.com/containerd/containerd v1.2.8-k3s.1 https://github.com/rancher/containerd.git -github.com/containerd/go-runc 5a6d9f37cfa36b15efba46dc7ea349fa9b7143c3 -github.com/containerd/console c12b1e7919c14469339a5d38f2f8ed9b64a9de23 -github.com/containerd/cgroups 4994991857f9b0ae8dc439551e8bebdbb4bf66c1 -github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40 -github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c -github.com/containerd/btrfs 2e1aa0ddf94f91fa282b6ed87c23bf0d64911244 -github.com/containerd/continuity bd77b46c8352f74eb12c85bdc01f4b90f69d66b4 -github.com/coreos/go-systemd v14 -github.com/docker/go-metrics 4ea375f7759c82740c893fc030bc37088d2ec098 -github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9 -#github.com/docker/go-units v0.3.3 -github.com/godbus/dbus v3 -#github.com/prometheus/client_golang f4fb1b73fb099f396a7f0036bf86aa8def4ed823 -#github.com/prometheus/client_model 99fa1f4be8e564e8a6b613da7fa6f46c9edafc6c -#github.com/prometheus/common 89604d197083d4781071d3c65855d24ecfb0a563 -#github.com/prometheus/procfs cb4147076ac75738c9a7d279075a253c0cc5acbd -github.com/beorn7/perks 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9 -github.com/matttproud/golang_protobuf_extensions v1.0.0 -github.com/gogo/protobuf v1.0.0 -github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef -github.com/golang/protobuf v1.1.0 -#github.com/opencontainers/runtime-spec eba862dc2470385a233c7507392675cbeadf7353 # v1.0.1-45-geba862d -#github.com/opencontainers/runc v1.0.0-rc8 -github.com/sirupsen/logrus v1.4.1 -#github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c -golang.org/x/net cdfb69ac37fc6fa907650654115ebebb3aae2087 -google.golang.org/grpc v1.12.0 -github.com/pkg/errors v0.8.0 -github.com/opencontainers/go-digest c9281466c8b2f606084ac71339773efd177436e7 -golang.org/x/sys 41f3e6584952bb034a481797859f6ab34b6803bd https://github.com/golang/sys -github.com/opencontainers/image-spec v1.0.1 -#golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c -github.com/BurntSushi/toml a368813c5e648fee92e5f6c30e3944ff9d5e8895 -github.com/grpc-ecosystem/go-grpc-prometheus v1.1 -github.com/Microsoft/go-winio v0.4.12 -github.com/Microsoft/hcsshim v0.8.6 -google.golang.org/genproto d80a6e20e776b0b17a324d0ba1ab50a39c8e8944 -golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4 -github.com/containerd/ttrpc f82148331ad2181edea8f3f649a1f7add6c3f9c2 -github.com/syndtr/gocapability db04d3cc01c8b54962a58ec7e491717d06cfcc16 -gotest.tools v2.1.0 -github.com/google/go-cmp v0.1.0 -go.etcd.io/bbolt v1.3.1-etcd.8 - -# crictl -github.com/kubernetes-sigs/cri-tools v1.15.0-k3s.2 https://github.com/rancher/cri-tools.git - -# cri dependencies -github.com/containerd/cri v1.2.8-k3s.1 https://github.com/rancher/cri.git -github.com/containerd/go-cni 40bcf8ec8acd7372be1d77031d585d5d8e561c90 -github.com/blang/semver v3.1.0 -github.com/containernetworking/cni v0.6.0 -#github.com/containernetworking/plugins v0.7.5 -github.com/davecgh/go-spew v1.1.0 -github.com/docker/distribution 0d3efadf0154c2b8a4e7b6621fff9809655cc580 -#github.com/docker/docker 86f080cff0914e9694068ed78d503701667c4c00 -github.com/docker/spdystream 449fdfce4d962303d702fec724ef0ad181c92528 -github.com/emicklei/go-restful v2.2.1 -github.com/ghodss/yaml v1.0.0 -#github.com/golang/glog 44145f04b68cf362d9c4df2182967c2275eaefed -github.com/google/gofuzz 44d81051d367757e1c7c6a5a86423ece9afcf63c -github.com/hashicorp/errwrap 7554cd9344cec97297fa6649b055a8c98c2a1e55 -github.com/hashicorp/go-multierror ed905158d87462226a13fe39ddf685ea65f1c11f -github.com/json-iterator/go 1.1.5 -github.com/modern-go/reflect2 1.0.1 -github.com/modern-go/concurrent 1.0.3 -github.com/opencontainers/runtime-tools v0.6.0 -github.com/opencontainers/selinux v1.2.2 -github.com/seccomp/libseccomp-golang 32f571b70023028bd57d9288c20efbcb237f3ce0 -github.com/tchap/go-patricia v2.2.6 -github.com/xeipuuv/gojsonpointer 4e3ac2762d5f479393488629ee9370b50873b3a6 -github.com/xeipuuv/gojsonreference bd5ef7bd5415a7ac448318e64f11a24cd21e594b -github.com/xeipuuv/gojsonschema 1d523034197ff1f222f6429836dd36a2457a1874 -#golang.org/x/crypto 49796115aa4b964c318aad4f3084fdb41e9aa067 -golang.org/x/oauth2 a6bd8cefa1811bd24b86f8902872e4e8225f74c4 -golang.org/x/time f51c12702a4d776e4c1fa9b0fabab841babae631 -gopkg.in/inf.v0 3887ee99ecf07df5b447e9b00d9c0b2adaa9f3e4 -gopkg.in/yaml.v2 v2.2.1 - -# zfs dependencies -github.com/containerd/zfs 9a0b8b8b5982014b729cd34eb7cd7a11062aa6ec -github.com/mistifyio/go-zfs 166add352731e515512690329794ee593f1aaff2 -github.com/pborman/uuid c65b2f87fee37d1c7854c9164a450713c28d50cd - -github.com/rancher/kine v0.1.0 https://github.com/ibuildthecloud/kine.git -google.golang.org/grpc v1.20.1 - -# rootless -github.com/rootless-containers/rootlesskit v0.6.0 -github.com/theckman/go-flock v0.7.1 diff --git a/vendor.go b/vendor.go new file mode 100644 index 0000000000..7ea9354773 --- /dev/null +++ b/vendor.go @@ -0,0 +1,17 @@ +// +build vendor + +package main + +import ( + _ "github.com/containerd/containerd/cmd/containerd-shim" + _ "github.com/coreos/go-systemd/activation" + _ "github.com/go-bindata/go-bindata" + _ "github.com/go-bindata/go-bindata/go-bindata" + _ "github.com/opencontainers/runc" + _ "github.com/opencontainers/runc/contrib/cmd/recvtty" + _ "github.com/opencontainers/runc/libcontainer/nsenter" + _ "github.com/opencontainers/runc/libcontainer/specconv" + _ "k8s.io/kubernetes/cmd/hyperkube" +) + +func main() {} From d246c89254323fdfdbeaab451ba95ccf8ab219ec Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Thu, 5 Sep 2019 11:55:53 -0700 Subject: [PATCH 3/4] go mod vendor --- vendor/cloud.google.com/go/CHANGES.md | 1024 --- vendor/cloud.google.com/go/CODE_OF_CONDUCT.md | 44 - vendor/cloud.google.com/go/CONTRIBUTING.md | 234 - vendor/cloud.google.com/go/README.md | 505 -- vendor/cloud.google.com/go/RELEASING.md | 47 - vendor/cloud.google.com/go/issue_template.md | 17 - vendor/cloud.google.com/go/keys.tar.enc | Bin 10256 -> 0 bytes vendor/cloud.google.com/go/old-news.md | 698 -- vendor/cloud.google.com/go/regen-gapic.sh | 86 - vendor/cloud.google.com/go/run-tests.sh | 88 - .../k8s-cloud-provider/.gitignore | 5 - .../k8s-cloud-provider/CONTRIBUTING.md | 28 - .../k8s-cloud-provider/Gopkg.lock | 38 - .../k8s-cloud-provider/Gopkg.toml | 33 - .../k8s-cloud-provider/Makefile | 36 - .../k8s-cloud-provider/README.md | 9 - vendor/github.com/armon/circbuf/.gitignore | 0 vendor/github.com/armon/circbuf/LICENSE | 0 vendor/github.com/beorn7/perks/.gitignore | 2 - vendor/github.com/beorn7/perks/README.md | 31 - .../beorn7/perks/quantile/stream.go | 34 +- .../github.com/bhendo/go-powershell/LICENSE | 21 + .../github.com/bhendo/go-powershell/README.md | 110 + .../bhendo/go-powershell/backend/local.go | 38 + .../bhendo/go-powershell/backend/ssh.go | 69 + .../bhendo/go-powershell/backend/types.go | 13 + .../github.com/bhendo/go-powershell/shell.go | 120 + .../bhendo/go-powershell/utils/quote.go | 9 + .../bhendo/go-powershell/utils/rand.go | 20 + vendor/github.com/blang/semver/package.json | 17 + vendor/github.com/blang/semver/range.go | 200 +- vendor/github.com/blang/semver/semver.go | 23 + vendor/github.com/buger/jsonparser/.gitignore | 10 + .../github.com/buger/jsonparser/.travis.yml | 8 + vendor/github.com/buger/jsonparser/Dockerfile | 12 + vendor/github.com/buger/jsonparser/LICENSE | 21 + vendor/github.com/buger/jsonparser/Makefile | 36 + vendor/github.com/buger/jsonparser/README.md | 365 + vendor/github.com/buger/jsonparser/bytes.go | 47 + .../github.com/buger/jsonparser/bytes_safe.go | 25 + .../buger/jsonparser/bytes_unsafe.go | 42 + vendor/github.com/buger/jsonparser/escape.go | 173 + vendor/github.com/buger/jsonparser/parser.go | 1211 +++ .../chai2010/gettext-go/.travis.yml | 7 - .../github.com/chai2010/gettext-go/README.md | 58 - .../github.com/cloudflare/cfssl/.dockerignore | 4 - vendor/github.com/cloudflare/cfssl/.gitignore | 5 - .../github.com/cloudflare/cfssl/.travis.yml | 74 - .../github.com/cloudflare/cfssl/BUILDING.md | 38 - vendor/github.com/cloudflare/cfssl/CHANGELOG | 72 - vendor/github.com/cloudflare/cfssl/Dockerfile | 18 - .../cloudflare/cfssl/Dockerfile.build | 11 - .../cloudflare/cfssl/Dockerfile.minimal | 30 - vendor/github.com/cloudflare/cfssl/Gopkg.lock | 186 - vendor/github.com/cloudflare/cfssl/Gopkg.toml | 86 - vendor/github.com/cloudflare/cfssl/README.md | 390 - vendor/github.com/cloudflare/cfssl/test.sh | 70 - .../spec/.gitignore | 4 - .../spec/.travis.yml | 38 - .../container-storage-interface/spec/CCLA.pdf | Bin 67545 -> 0 bytes .../spec/CONTRIBUTING.md | 59 - .../container-storage-interface/spec/Makefile | 51 - .../container-storage-interface/spec/OWNERS | 10 - .../spec/README.md | 13 - .../container-storage-interface/spec/VERSION | 1 - .../spec/csi.proto | 1306 --- .../spec/lib/README.md | 2 - .../spec/lib/go/.gitignore | 4 - .../spec/lib/go/Makefile | 136 - .../spec/lib/go/README.md | 21 - .../container-storage-interface/spec/logo.png | Bin 21136 -> 0 bytes .../container-storage-interface/spec/spec.md | 2459 ------ .../containerd/cgroups/metrics.pb.txt | 0 .../containerd/containerd/api/1.0.pb.txt | 4181 --------- .../containerd/containerd/api/1.1.pb.txt | 4181 --------- .../containerd/containerd/api/1.2.pb.txt | 4205 --------- .../containerd/containerd/api/README.md | 18 - .../containerd/containerd/api/next.pb.txt | 4233 --------- .../containerd/contrib/Dockerfile.test | 53 - .../containerd/containerd/contrib/README.md | 11 - .../runtime/linux/runctypes/1.0.pb.txt | 0 .../runtime/linux/runctypes/next.pb.txt | 0 .../runtime/v2/runc/options/next.pb.txt | 0 .../containerd/continuity/sysx/generate.sh | 0 .../github.com/containerd/typeurl/.travis.yml | 10 + vendor/github.com/containerd/typeurl/LICENSE | 18 +- .../github.com/containerd/typeurl/README.md | 10 + vendor/github.com/containerd/typeurl/doc.go | 83 + vendor/github.com/containerd/typeurl/types.go | 5 +- .../containernetworking/cni/.gitignore | 5 - .../containernetworking/cni/.travis.yml | 41 - .../cni/CODE-OF-CONDUCT.md | 4 - .../containernetworking/cni/CONTRIBUTING.md | 125 - .../containernetworking/cni/CONVENTIONS.md | 108 - vendor/github.com/containernetworking/cni/DCO | 36 - .../containernetworking/cni/MAINTAINERS | 6 - .../containernetworking/cni/README.md | 191 - .../containernetworking/cni/RELEASING.md | 34 - .../containernetworking/cni/ROADMAP.md | 33 - .../containernetworking/cni/SPEC.md | 535 -- .../containernetworking/cni/Vagrantfile | 26 - .../containernetworking/cni/build.sh | 29 - .../containernetworking/cni/logo.png | Bin 11604 -> 0 bytes .../containernetworking/cni/test.sh | 80 - .../containernetworking/plugins/.appveyor.yml | 28 - .../containernetworking/plugins/.gitignore | 28 - .../containernetworking/plugins/.travis.yml | 37 - .../plugins/CONTRIBUTING.md | 134 - .../containernetworking/plugins/README.md | 26 - .../containernetworking/plugins/RELEASING.md | 35 - .../containernetworking/plugins/Vagrantfile | 21 - .../containernetworking/plugins/build.sh | 35 - .../plugins/plugins/linux_only.txt | 10 - .../containernetworking/plugins/test.sh | 46 - vendor/github.com/coreos/etcd/.dockerignore | 1 - vendor/github.com/coreos/etcd/.gitignore | 21 - vendor/github.com/coreos/etcd/.godir | 1 - vendor/github.com/coreos/etcd/.header | 13 - vendor/github.com/coreos/etcd/.travis.yml | 73 - vendor/github.com/coreos/etcd/.words | 44 - vendor/github.com/coreos/etcd/CHANGELOG.md | 746 -- .../github.com/coreos/etcd/CODE_OF_CONDUCT.md | 63 - vendor/github.com/coreos/etcd/CONTRIBUTING.md | 62 - vendor/github.com/coreos/etcd/DCO | 36 - vendor/github.com/coreos/etcd/Dockerfile | 6 - .../coreos/etcd/Dockerfile-functional-tester | 53 - .../github.com/coreos/etcd/Dockerfile-release | 17 - .../coreos/etcd/Dockerfile-release.arm64 | 11 - .../coreos/etcd/Dockerfile-release.ppc64le | 11 - vendor/github.com/coreos/etcd/Dockerfile-test | 58 - vendor/github.com/coreos/etcd/MAINTAINERS | 8 - vendor/github.com/coreos/etcd/Makefile | 517 -- vendor/github.com/coreos/etcd/Procfile | 5 - vendor/github.com/coreos/etcd/Procfile.v2 | 6 - vendor/github.com/coreos/etcd/README.md | 161 - vendor/github.com/coreos/etcd/ROADMAP.md | 23 - vendor/github.com/coreos/etcd/V2Procfile | 5 - .../coreos/etcd/bill-of-materials.json | 469 - .../etcd/bill-of-materials.override.json | 26 - vendor/github.com/coreos/etcd/build | 66 - vendor/github.com/coreos/etcd/build.bat | 1 - vendor/github.com/coreos/etcd/build.ps1 | 81 - vendor/github.com/coreos/etcd/cover | 31 - .../coreos/etcd/etcd.conf.yml.sample | 144 - vendor/github.com/coreos/etcd/functional.yaml | 206 - vendor/github.com/coreos/etcd/glide.lock | 199 - vendor/github.com/coreos/etcd/glide.yaml | 152 - vendor/github.com/coreos/etcd/meeting.ics | 49 - vendor/github.com/coreos/etcd/pkg/README.md | 2 - vendor/github.com/coreos/etcd/test | 632 -- .../github.com/coreos/flannel/.appveyor.yml | 21 - .../github.com/coreos/flannel/.dockerignore | 5 - vendor/github.com/coreos/flannel/.gitignore | 11 - vendor/github.com/coreos/flannel/.travis.yml | 26 - .../github.com/coreos/flannel/CONTRIBUTING.md | 71 - vendor/github.com/coreos/flannel/DCO | 36 - .../coreos/flannel/Dockerfile.amd64 | 13 - .../github.com/coreos/flannel/Dockerfile.arm | 14 - .../coreos/flannel/Dockerfile.arm64 | 14 - .../coreos/flannel/Dockerfile.ppc64le | 14 - .../coreos/flannel/Dockerfile.s390x | 14 - vendor/github.com/coreos/flannel/MAINTAINERS | 2 - vendor/github.com/coreos/flannel/Makefile | 269 - vendor/github.com/coreos/flannel/README.md | 84 - .../coreos/flannel/bill-of-materials.json | 162 - .../flannel/bill-of-materials.override.json | 6 - .../coreos/flannel/code-of-conduct.md | 61 - vendor/github.com/coreos/flannel/glide.lock | 375 - vendor/github.com/coreos/flannel/glide.yaml | 71 - .../github.com/coreos/flannel/header-check.sh | 9 - .../github.com/coreos/flannel/packet-01.png | Bin 76776 -> 0 bytes .../github.com/coreos/go-iptables/.travis.yml | 23 - vendor/github.com/coreos/go-iptables/DCO | 36 - .../github.com/coreos/go-iptables/README.md | 10 - vendor/github.com/coreos/go-iptables/build | 22 - .../coreos/go-iptables/code-of-conduct.md | 61 - .../coreos/go-iptables/iptables/iptables.go | 90 +- vendor/github.com/coreos/go-iptables/test | 58 - vendor/github.com/coreos/go-oidc/test | 0 .../github.com/coreos/go-semver/.travis.yml | 8 - vendor/github.com/coreos/go-semver/DCO | 36 - vendor/github.com/coreos/go-semver/README.md | 28 - .../coreos/go-semver/code-of-conduct.md | 61 - .../github.com/coreos/go-systemd/.travis.yml | 27 - .../coreos/go-systemd/CONTRIBUTING.md | 77 - vendor/github.com/coreos/go-systemd/DCO | 36 - vendor/github.com/coreos/go-systemd/NOTICE | 5 + vendor/github.com/coreos/go-systemd/README.md | 54 - .../coreos/go-systemd/activation/files.go | 19 +- .../coreos/go-systemd/activation/listeners.go | 51 +- .../go-systemd/activation/packetconns.go | 5 +- .../coreos/go-systemd/daemon/sdnotify.go | 39 +- .../coreos/go-systemd/daemon/watchdog.go | 9 +- .../github.com/coreos/go-systemd/dbus/dbus.go | 31 +- .../coreos/go-systemd/dbus/methods.go | 43 +- .../github.com/coreos/go-systemd/dbus/set.go | 2 +- .../coreos/go-systemd/dbus/subscription.go | 171 +- vendor/github.com/coreos/go-systemd/test | 87 - .../coreos/go-systemd/util/util_cgo.go | 5 +- vendor/github.com/coreos/pkg/.gitignore | 27 - vendor/github.com/coreos/pkg/.travis.yml | 8 - vendor/github.com/coreos/pkg/CONTRIBUTING.md | 71 - vendor/github.com/coreos/pkg/DCO | 36 - vendor/github.com/coreos/pkg/MAINTAINERS | 1 - vendor/github.com/coreos/pkg/README.md | 4 - vendor/github.com/coreos/pkg/build.sh | 3 - .../github.com/coreos/pkg/code-of-conduct.md | 61 - vendor/github.com/coreos/pkg/test.sh | 56 - vendor/github.com/davecgh/go-spew/.gitignore | 22 - vendor/github.com/davecgh/go-spew/.travis.yml | 14 - vendor/github.com/davecgh/go-spew/LICENSE | 2 +- vendor/github.com/davecgh/go-spew/README.md | 205 - .../github.com/davecgh/go-spew/cov_report.sh | 22 - .../github.com/davecgh/go-spew/spew/bypass.go | 187 +- .../davecgh/go-spew/spew/bypasssafe.go | 2 +- .../github.com/davecgh/go-spew/spew/common.go | 2 +- .../github.com/davecgh/go-spew/spew/dump.go | 10 +- .../github.com/davecgh/go-spew/spew/format.go | 4 +- .../davecgh/go-spew/test_coverage.txt | 61 - .../github.com/docker/distribution/.gitignore | 38 - .../docker/distribution/.gometalinter.json | 16 - .../github.com/docker/distribution/.mailmap | 32 - .../docker/distribution/.travis.yml | 51 - .../docker/distribution/BUILDING.md | 117 - .../docker/distribution/CONTRIBUTING.md | 148 - .../github.com/docker/distribution/Dockerfile | 23 - .../docker/distribution/MAINTAINERS | 243 - .../github.com/docker/distribution/Makefile | 102 - .../github.com/docker/distribution/README.md | 130 - .../github.com/docker/distribution/ROADMAP.md | 267 - .../docker/distribution/vendor.conf | 51 - vendor/github.com/docker/docker/.DEREK.yml | 21 - vendor/github.com/docker/docker/.dockerignore | 7 - vendor/github.com/docker/docker/.gitignore | 24 - vendor/github.com/docker/docker/.mailmap | 530 -- vendor/github.com/docker/docker/CHANGELOG.md | 3609 -------- .../github.com/docker/docker/CONTRIBUTING.md | 458 - vendor/github.com/docker/docker/Dockerfile | 246 - .../github.com/docker/docker/Dockerfile.e2e | 72 - .../docker/docker/Dockerfile.simple | 50 - .../docker/docker/Dockerfile.windows | 263 - vendor/github.com/docker/docker/Jenkinsfile | 325 - vendor/github.com/docker/docker/MAINTAINERS | 484 -- vendor/github.com/docker/docker/Makefile | 219 - vendor/github.com/docker/docker/README.md | 57 - vendor/github.com/docker/docker/ROADMAP.md | 117 - vendor/github.com/docker/docker/TESTING.md | 89 - vendor/github.com/docker/docker/VENDORING.md | 46 - .../github.com/docker/docker/client/hijack.go | 11 - .../docker/docker/client/interface.go | 2 +- .../docker/docker/client/session.go | 18 + vendor/github.com/docker/docker/codecov.yml | 17 - vendor/github.com/docker/docker/pkg/README.md | 11 - .../docker/pkg/mount/mountinfo_linux.go | 18 +- vendor/github.com/docker/docker/poule.yml | 134 - vendor/github.com/docker/docker/vendor.conf | 164 - .../docker/go-connections/CONTRIBUTING.md | 55 - .../docker/go-connections/MAINTAINERS | 27 - .../docker/go-connections/README.md | 13 - .../docker/go-connections/circle.yml | 14 - .../docker/libnetwork/.dockerignore | 5 - .../github.com/docker/libnetwork/.gitignore | 45 - .../github.com/docker/libnetwork/CHANGELOG.md | 199 - .../github.com/docker/libnetwork/Dockerfile | 21 - .../github.com/docker/libnetwork/MAINTAINERS | 59 - vendor/github.com/docker/libnetwork/Makefile | 182 - vendor/github.com/docker/libnetwork/README.md | 100 - .../github.com/docker/libnetwork/ROADMAP.md | 20 - .../github.com/docker/libnetwork/Vagrantfile | 58 - .../github.com/docker/libnetwork/agent.proto | 76 - vendor/github.com/docker/libnetwork/machines | 111 - .../github.com/docker/libnetwork/vendor.conf | 51 - .../euank/go-kmsg-parser/.gitignore | 1 - .../euank/go-kmsg-parser/.travis.yml | 15 - .../github.com/euank/go-kmsg-parser/Makefile | 12 - .../github.com/euank/go-kmsg-parser/README.md | 19 - vendor/github.com/globalsign/mgo/.gitignore | 2 - vendor/github.com/globalsign/mgo/.travis.yml | 49 - .../github.com/globalsign/mgo/CONTRIBUTING.md | 14 - vendor/github.com/globalsign/mgo/Makefile | 5 - vendor/github.com/globalsign/mgo/README.md | 105 - .../go-openapi/validate/update-fixtures.sh | 0 vendor/github.com/gogo/googleapis/.travis.yml | 16 - vendor/github.com/gogo/googleapis/Makefile | 58 - vendor/github.com/gogo/googleapis/Readme.md | 5 - .../gogo/googleapis/install-protobuf.sh | 10 - vendor/github.com/gogo/protobuf/.gitignore | 3 - vendor/github.com/gogo/protobuf/.mailmap | 8 - vendor/github.com/gogo/protobuf/.travis.yml | 20 - .../gogo/protobuf/GOLANG_CONTRIBUTORS | 5 - vendor/github.com/gogo/protobuf/LICENSE | 5 +- vendor/github.com/gogo/protobuf/Makefile | 162 - vendor/github.com/gogo/protobuf/README | 258 - vendor/github.com/gogo/protobuf/Readme.md | 139 - vendor/github.com/gogo/protobuf/bench.md | 190 - .../github.com/gogo/protobuf/custom_types.md | 68 - vendor/github.com/gogo/protobuf/extensions.md | 162 - .../github.com/gogo/protobuf/gogoproto/doc.go | 2 +- .../gogo/protobuf/gogoproto/gogo.pb.go | 476 +- .../gogo/protobuf/gogoproto/gogo.proto | 11 + .../gogo/protobuf/gogoproto/helper.go | 64 +- .../gogo/protobuf/install-protobuf.sh | 28 - .../github.com/gogo/protobuf/proto/Makefile | 4 +- .../github.com/gogo/protobuf/proto/clone.go | 46 +- .../gogo/protobuf/proto/custom_gogo.go | 39 + .../github.com/gogo/protobuf/proto/decode.go | 677 +- .../gogo/protobuf/proto/decode_gogo.go | 172 - .../gogo/protobuf/proto/deprecated.go | 63 + .../github.com/gogo/protobuf/proto/discard.go | 201 +- .../gogo/protobuf/proto/duration_gogo.go | 154 - .../github.com/gogo/protobuf/proto/encode.go | 1207 +-- .../gogo/protobuf/proto/encode_gogo.go | 317 - .../github.com/gogo/protobuf/proto/equal.go | 30 +- .../gogo/protobuf/proto/extensions.go | 289 +- .../gogo/protobuf/proto/extensions_gogo.go | 162 +- vendor/github.com/gogo/protobuf/proto/lib.go | 166 +- .../gogo/protobuf/proto/lib_gogo.go | 8 + .../gogo/protobuf/proto/message_set.go | 138 +- .../gogo/protobuf/proto/pointer_reflect.go | 645 +- .../protobuf/proto/pointer_reflect_gogo.go | 66 +- .../gogo/protobuf/proto/pointer_unsafe.go | 402 +- .../protobuf/proto/pointer_unsafe_gogo.go | 100 +- .../gogo/protobuf/proto/properties.go | 508 +- .../gogo/protobuf/proto/properties_gogo.go | 81 +- .../gogo/protobuf/proto/table_marshal.go | 3006 +++++++ .../gogo/protobuf/proto/table_marshal_gogo.go | 388 + .../gogo/protobuf/proto/table_merge.go | 657 ++ .../gogo/protobuf/proto/table_unmarshal.go | 2245 +++++ .../protobuf/proto/table_unmarshal_gogo.go | 385 + vendor/github.com/gogo/protobuf/proto/text.go | 65 +- .../gogo/protobuf/proto/text_parser.go | 103 +- .../gogo/protobuf/proto/timestamp_gogo.go | 180 - .../gogo/protobuf/proto/wrappers.go | 1888 ++++ .../gogo/protobuf/proto/wrappers_gogo.go | 113 + .../gogo/protobuf/protoc-gen-gogo/Makefile | 33 - .../descriptor/descriptor.pb.go | 1265 ++- .../descriptor/descriptor_gostring.gen.go | 58 +- .../github.com/gogo/protobuf/types/Makefile | 39 - vendor/github.com/gogo/protobuf/types/any.go | 10 +- .../github.com/gogo/protobuf/types/any.pb.go | 180 +- .../github.com/gogo/protobuf/types/api.pb.go | 2118 +++++ .../gogo/protobuf/types/duration.go | 2 +- .../gogo/protobuf/types/duration.pb.go | 148 +- .../gogo/protobuf/types/empty.pb.go | 139 +- .../gogo/protobuf/types/field_mask.pb.go | 198 +- .../gogo/protobuf/types/protosize.go | 34 + .../gogo/protobuf/types/source_context.pb.go | 550 ++ .../gogo/protobuf/types/struct.pb.go | 414 +- .../gogo/protobuf/types/timestamp.go | 6 +- .../gogo/protobuf/types/timestamp.pb.go | 182 +- .../github.com/gogo/protobuf/types/type.pb.go | 3320 +++++++ .../gogo/protobuf/types/wrappers.pb.go | 764 +- .../gogo/protobuf/types/wrappers_gogo.go | 300 + .../github.com/golang/groupcache/.gitignore | 1 - vendor/github.com/golang/groupcache/README.md | 73 - .../github.com/golang/groupcache/lru/lru.go | 14 +- vendor/github.com/golang/protobuf/.gitignore | 17 - vendor/github.com/golang/protobuf/.travis.yml | 30 - vendor/github.com/golang/protobuf/LICENSE | 3 - vendor/github.com/golang/protobuf/Makefile | 48 - vendor/github.com/golang/protobuf/README.md | 283 - .../golang/protobuf/jsonpb/jsonpb.go | 60 +- .../golang/protobuf/proto/decode.go | 1 - .../golang/protobuf/proto/deprecated.go | 63 + .../golang/protobuf/proto/encode.go | 18 - .../github.com/golang/protobuf/proto/equal.go | 3 +- .../golang/protobuf/proto/extensions.go | 78 +- .../github.com/golang/protobuf/proto/lib.go | 100 +- .../golang/protobuf/proto/message_set.go | 137 +- .../golang/protobuf/proto/pointer_reflect.go | 5 +- .../golang/protobuf/proto/pointer_unsafe.go | 15 +- .../golang/protobuf/proto/properties.go | 47 +- .../golang/protobuf/proto/table_marshal.go | 235 +- .../golang/protobuf/proto/table_unmarshal.go | 198 +- .../github.com/golang/protobuf/proto/text.go | 4 +- .../golang/protobuf/proto/text_parser.go | 6 +- .../protoc-gen-go/descriptor/descriptor.pb.go | 601 +- .../protoc-gen-go/descriptor/descriptor.proto | 11 + .../github.com/golang/protobuf/ptypes/any.go | 10 +- .../golang/protobuf/ptypes/any/any.pb.go | 47 +- .../golang/protobuf/ptypes/any/any.proto | 21 +- .../golang/protobuf/ptypes/duration.go | 2 +- .../protobuf/ptypes/duration/duration.pb.go | 30 +- .../protobuf/ptypes/struct/struct.pb.go | 230 +- .../golang/protobuf/ptypes/timestamp.go | 6 +- .../protobuf/ptypes/timestamp/timestamp.pb.go | 38 +- .../protobuf/ptypes/timestamp/timestamp.proto | 8 +- .../protobuf/ptypes/wrappers/wrappers.pb.go | 106 +- .../github.com/golang/protobuf/regenerate.sh | 53 - vendor/github.com/google/cadvisor/.gitignore | 10 - .../github.com/google/cadvisor/CHANGELOG.md | 378 - .../google/cadvisor/CONTRIBUTING.md | 14 - vendor/github.com/google/cadvisor/Makefile | 62 - vendor/github.com/google/cadvisor/README.md | 65 - vendor/github.com/google/cadvisor/logo.png | Bin 75895 -> 0 bytes .../github.com/google/cadvisor/test.htdigest | 1 - .../github.com/google/cadvisor/test.htpasswd | 1 - vendor/github.com/google/go-cmp/.travis.yml | 18 - .../github.com/google/go-cmp/CONTRIBUTING.md | 23 - vendor/github.com/google/go-cmp/README.md | 44 - .../github.com/google/go-cmp/cmp/compare.go | 579 +- .../cmp/{unsafe_panic.go => export_panic.go} | 6 +- .../{unsafe_reflect.go => export_unsafe.go} | 8 +- .../go-cmp/cmp/internal/diff/debug_disable.go | 2 +- .../go-cmp/cmp/internal/diff/debug_enable.go | 6 +- .../google/go-cmp/cmp/internal/diff/diff.go | 49 +- .../google/go-cmp/cmp/internal/flags/flags.go | 9 + .../cmp/internal/flags/toolchain_legacy.go | 10 + .../cmp/internal/flags/toolchain_recent.go | 10 + .../go-cmp/cmp/internal/function/func.go | 64 +- .../go-cmp/cmp/internal/value/format.go | 259 - .../cmp/internal/value/pointer_purego.go | 23 + .../cmp/internal/value/pointer_unsafe.go | 26 + .../google/go-cmp/cmp/internal/value/sort.go | 11 +- .../google/go-cmp/cmp/internal/value/zero.go | 45 + .../github.com/google/go-cmp/cmp/options.go | 284 +- vendor/github.com/google/go-cmp/cmp/path.go | 349 +- vendor/github.com/google/go-cmp/cmp/report.go | 51 + .../google/go-cmp/cmp/report_compare.go | 296 + .../google/go-cmp/cmp/report_reflect.go | 279 + .../google/go-cmp/cmp/report_slices.go | 333 + .../google/go-cmp/cmp/report_text.go | 382 + .../google/go-cmp/cmp/report_value.go | 121 + .../github.com/google/go-cmp/cmp/reporter.go | 53 - vendor/github.com/google/gofuzz/fuzz.go | 96 +- vendor/github.com/google/gofuzz/go.mod | 3 + .../github.com/googleapis/gnostic/.gitignore | 13 - .../googleapis/gnostic/.travis-install.sh | 36 - .../github.com/googleapis/gnostic/.travis.yml | 43 - .../googleapis/gnostic/COMPILE-PROTOS.sh | 31 - .../googleapis/gnostic/CONTRIBUTING.md | 35 - vendor/github.com/googleapis/gnostic/Makefile | 15 - .../googleapis/gnostic/OpenAPIv2/OpenAPIv2.go | 616 +- .../gnostic/OpenAPIv2/OpenAPIv2.pb.go | 5 +- .../github.com/googleapis/gnostic/README.md | 103 - .../googleapis/gnostic/compiler/reader.go | 12 +- .../gnostic/extensions/COMPILE-EXTENSION.sh | 0 .../gnostic/extensions/extension.pb.go | 53 +- .../gnostic/extensions/extension.proto | 4 +- vendor/github.com/gorilla/context/.travis.yml | 19 - vendor/github.com/gorilla/context/LICENSE | 27 - vendor/github.com/gorilla/context/README.md | 10 - vendor/github.com/gorilla/context/context.go | 143 - vendor/github.com/gorilla/context/doc.go | 88 - vendor/github.com/gorilla/mux/.travis.yml | 23 - vendor/github.com/gorilla/mux/AUTHORS | 8 + .../github.com/gorilla/mux/ISSUE_TEMPLATE.md | 11 - vendor/github.com/gorilla/mux/LICENSE | 2 +- vendor/github.com/gorilla/mux/README.md | 85 +- .../mux/{context_native.go => context.go} | 6 - .../github.com/gorilla/mux/context_gorilla.go | 26 - vendor/github.com/gorilla/mux/doc.go | 2 +- vendor/github.com/gorilla/mux/go.mod | 1 + vendor/github.com/gorilla/mux/middleware.go | 61 +- vendor/github.com/gorilla/mux/mux.go | 129 +- vendor/github.com/gorilla/mux/regexp.go | 51 +- vendor/github.com/gorilla/mux/route.go | 141 +- .../github.com/gorilla/websocket/.gitignore | 2 +- .../github.com/gorilla/websocket/.travis.yml | 10 +- vendor/github.com/gorilla/websocket/AUTHORS | 1 + vendor/github.com/gorilla/websocket/README.md | 2 +- vendor/github.com/gorilla/websocket/client.go | 253 +- vendor/github.com/gorilla/websocket/conn.go | 174 +- .../gorilla/websocket/conn_read_legacy.go | 21 - .../websocket/{conn_read.go => conn_write.go} | 15 +- .../gorilla/websocket/conn_write_legacy.go | 18 + vendor/github.com/gorilla/websocket/doc.go | 56 +- vendor/github.com/gorilla/websocket/json.go | 11 +- vendor/github.com/gorilla/websocket/mask.go | 1 - .../github.com/gorilla/websocket/prepared.go | 1 - vendor/github.com/gorilla/websocket/proxy.go | 77 + vendor/github.com/gorilla/websocket/server.go | 136 +- vendor/github.com/gorilla/websocket/trace.go | 19 + .../github.com/gorilla/websocket/trace_17.go | 12 + vendor/github.com/gorilla/websocket/util.go | 35 +- .../gorilla/websocket/x_net_proxy.go | 473 + .../go-grpc-prometheus/.gitignore | 1 + .../go-grpc-prometheus/.travis.yml | 11 +- .../go-grpc-prometheus/README.md | 2 + .../go-grpc-prometheus/test_all.sh | 14 + vendor/github.com/hashicorp/golang-lru/lru.go | 30 +- vendor/github.com/imdario/mergo/README.md | 18 +- vendor/github.com/imdario/mergo/map.go | 1 + vendor/github.com/imdario/mergo/merge.go | 26 +- vendor/github.com/j-keck/arping/arping.go | 33 + vendor/github.com/j-keck/arping/go.mod | 1 + vendor/github.com/json-iterator/go/README.md | 4 - vendor/github.com/json-iterator/go/any.go | 4 + vendor/github.com/json-iterator/go/build.sh | 0 .../github.com/json-iterator/go/iter_float.go | 20 +- .../json-iterator/go/iter_skip_strict.go | 14 +- .../json-iterator/go/reflect_extension.go | 2 +- .../json-iterator/go/reflect_map.go | 16 +- .../json-iterator/go/reflect_marshaler.go | 3 +- vendor/github.com/json-iterator/go/test.sh | 0 .../juju/errors}/.gitignore | 6 +- vendor/github.com/juju/errors/LICENSE | 191 + vendor/github.com/juju/errors/Makefile | 24 + vendor/github.com/juju/errors/README.md | 707 ++ .../github.com/juju/errors/dependencies.tsv | 5 + vendor/github.com/juju/errors/doc.go | 79 + vendor/github.com/juju/errors/error.go | 176 + vendor/github.com/juju/errors/errortypes.go | 333 + vendor/github.com/juju/errors/functions.go | 330 + vendor/github.com/juju/errors/path.go | 32 + .../go-windows-terminal-sequences/README.md | 1 + .../sequences_dummy.go | 11 + vendor/github.com/kr/fs/LICENSE | 27 - vendor/github.com/kr/fs/Readme | 3 - vendor/github.com/kr/fs/filesystem.go | 36 - vendor/github.com/kr/fs/walk.go | 95 - .../kubernetes-sigs/cri-tools/.gitignore | 32 - .../kubernetes-sigs/cri-tools/.travis.yml | 59 - .../kubernetes-sigs/cri-tools/CHANGELOG.md | 342 - .../kubernetes-sigs/cri-tools/CONTRIBUTING.md | 28 - .../kubernetes-sigs/cri-tools/Makefile | 122 - .../kubernetes-sigs/cri-tools/OWNERS | 15 - .../kubernetes-sigs/cri-tools/README.md | 86 - .../kubernetes-sigs/cri-tools/RELEASE.md | 9 - .../cri-tools/SECURITY_CONTACTS | 15 - .../cri-tools/code-of-conduct.md | 3 - .../kubernetes-sigs/cri-tools/vendor.conf | 42 - vendor/github.com/lib/pq/.travis.sh | 0 vendor/github.com/mailru/easyjson/.gitignore | 5 - vendor/github.com/mailru/easyjson/.travis.yml | 9 - vendor/github.com/mailru/easyjson/Makefile | 61 - vendor/github.com/mailru/easyjson/README.md | 333 - vendor/github.com/matryer/moq/.gitignore | 25 - vendor/github.com/matryer/moq/.travis.yml | 19 - vendor/github.com/matryer/moq/README.md | 108 - .../github.com/matryer/moq/moq-logo-small.png | Bin 32570 -> 0 bytes vendor/github.com/matryer/moq/moq-logo.png | Bin 29562 -> 0 bytes vendor/github.com/matryer/moq/preview.png | Bin 743543 -> 0 bytes .../golang_protobuf_extensions/.travis.yml | 2 - .../golang_protobuf_extensions/README.md | 20 - .../pbutil/.gitignore | 1 + .../pbutil/Makefile | 7 + .../mindprince/gonvml/.travis.gofmt.sh | 7 + .../github.com/mindprince/gonvml/.travis.yml | 9 + vendor/github.com/mindprince/gonvml/Makefile | 3 + .../github.com/mindprince/gonvml/bindings.go | 95 +- .../mindprince/gonvml/bindings_nocgo.go | 115 + .../github.com/modern-go/concurrent/test.sh | 0 vendor/github.com/modern-go/reflect2/test.sh | 0 .../github.com/modern-go/reflect2/type_map.go | 16 +- vendor/github.com/mxk/go-flowrate/README | 10 - .../opencontainers/image-spec/.gitignore | 3 - .../opencontainers/image-spec/.header | 14 - .../image-spec/.pullapprove.yml | 27 - .../opencontainers/image-spec/.travis.yml | 28 - .../opencontainers/image-spec/GOVERNANCE.md | 70 - .../opencontainers/image-spec/HACKING.md | 104 - .../opencontainers/image-spec/MAINTAINERS | 9 - .../opencontainers/image-spec/Makefile | 146 - .../opencontainers/image-spec/README.md | 167 - .../opencontainers/image-spec/RELEASES.md | 51 - .../opencontainers/image-spec/annotations.md | 67 - .../opencontainers/image-spec/config.md | 274 - .../image-spec/considerations.md | 137 - .../opencontainers/image-spec/conversion.md | 120 - .../opencontainers/image-spec/descriptor.md | 185 - .../opencontainers/image-spec/image-index.md | 129 - .../opencontainers/image-spec/image-layout.md | 205 - .../image-spec/implementations.md | 21 - .../opencontainers/image-spec/layer.md | 333 - .../opencontainers/image-spec/manifest.md | 106 - .../opencontainers/image-spec/media-types.md | 68 - .../opencontainers/image-spec/project.md | 7 - .../opencontainers/image-spec/spec.md | 69 - .../runtime-spec/.gitattributes | 2 - .../opencontainers/runtime-spec/.gitignore | 3 - .../opencontainers/runtime-spec/.mailmap | 21 - .../runtime-spec/.pullapprove.yml | 27 - .../opencontainers/runtime-spec/.travis.yml | 25 - .../opencontainers/runtime-spec/ChangeLog | 684 -- .../opencontainers/runtime-spec/GOVERNANCE.md | 70 - .../opencontainers/runtime-spec/MAINTAINERS | 8 - .../opencontainers/runtime-spec/Makefile | 94 - .../opencontainers/runtime-spec/README.md | 153 - .../opencontainers/runtime-spec/RELEASES.md | 51 - .../opencontainers/runtime-spec/bundle.md | 22 - .../runtime-spec/config-linux.md | 720 -- .../runtime-spec/config-solaris.md | 120 - .../opencontainers/runtime-spec/config-vm.md | 68 - .../runtime-spec/config-windows.md | 205 - .../opencontainers/runtime-spec/config.md | 864 -- .../opencontainers/runtime-spec/glossary.md | 38 - .../runtime-spec/implementations.md | 37 - .../opencontainers/runtime-spec/meeting.ics | 41 - .../opencontainers/runtime-spec/principles.md | 46 - .../opencontainers/runtime-spec/project.md | 12 - .../runtime-spec/runtime-linux.md | 21 - .../opencontainers/runtime-spec/runtime.md | 140 - .../opencontainers/runtime-spec/spec.md | 48 - .../opencontainers/runtime-spec/style.md | 131 - .../opencontainers/runtime-tools/.gitignore | 36 - .../opencontainers/runtime-tools/.mailmap | 4 - .../runtime-tools/.pullapprove.yml | 28 - .../opencontainers/runtime-tools/.travis.yml | 20 - .../opencontainers/runtime-tools/CHANGELOG.md | 171 - .../runtime-tools/CONTRIBUTING.md | 116 - .../opencontainers/runtime-tools/MAINTAINERS | 11 - .../runtime-tools/MAINTAINERS_GUIDE.md | 121 - .../opencontainers/runtime-tools/Makefile | 77 - .../opencontainers/runtime-tools/README.md | 128 - .../opencontainers/runtime-tools/VERSION | 1 - .../runtime-tools/rootfs-386.tar.gz | Bin 1062010 -> 0 bytes .../runtime-tools/rootfs-amd64.tar.gz | Bin 1085474 -> 0 bytes .../opencontainers/selinux/.pullapprove.yml | 10 - .../opencontainers/selinux/.travis.yml | 19 - .../opencontainers/selinux/CONTRIBUTING.md | 119 - .../opencontainers/selinux/MAINTAINERS | 3 - .../opencontainers/selinux/Makefile | 19 - .../opencontainers/selinux/README.md | 18 - .../github.com/opencontainers/selinux/VERSION | 1 - vendor/github.com/pborman/uuid/.travis.yml | 5 +- vendor/github.com/pborman/uuid/README.md | 2 + vendor/github.com/pborman/uuid/doc.go | 7 +- vendor/github.com/pborman/uuid/go.mod | 3 + vendor/github.com/pborman/uuid/go.sum | 2 + vendor/github.com/pborman/uuid/marshal.go | 10 +- vendor/github.com/pborman/uuid/node.go | 68 +- vendor/github.com/pborman/uuid/node_js.go | 12 - vendor/github.com/pborman/uuid/node_net.go | 36 - vendor/github.com/pborman/uuid/sql.go | 4 +- vendor/github.com/pborman/uuid/time.go | 87 +- vendor/github.com/pborman/uuid/util.go | 11 - vendor/github.com/pborman/uuid/uuid.go | 89 +- vendor/github.com/pborman/uuid/version1.go | 26 +- vendor/github.com/pborman/uuid/version4.go | 13 +- vendor/github.com/pkg/errors/.travis.yml | 12 +- vendor/github.com/pkg/errors/README.md | 4 +- vendor/github.com/pkg/errors/errors.go | 43 +- vendor/github.com/pkg/errors/stack.go | 51 +- vendor/github.com/pkg/sftp/.gitignore | 8 - vendor/github.com/pkg/sftp/.travis.yml | 25 - vendor/github.com/pkg/sftp/CONTRIBUTORS | 2 - vendor/github.com/pkg/sftp/LICENSE | 9 - vendor/github.com/pkg/sftp/README.md | 27 - vendor/github.com/pkg/sftp/attrs.go | 237 - vendor/github.com/pkg/sftp/attrs_stubs.go | 11 - vendor/github.com/pkg/sftp/attrs_unix.go | 17 - vendor/github.com/pkg/sftp/client.go | 1128 --- vendor/github.com/pkg/sftp/conn.go | 122 - vendor/github.com/pkg/sftp/debug.go | 9 - vendor/github.com/pkg/sftp/packet.go | 901 -- vendor/github.com/pkg/sftp/release.go | 5 - vendor/github.com/pkg/sftp/server.go | 607 -- .../pkg/sftp/server_statvfs_darwin.go | 21 - .../pkg/sftp/server_statvfs_impl.go | 25 - .../pkg/sftp/server_statvfs_linux.go | 22 - .../pkg/sftp/server_statvfs_stubs.go | 11 - vendor/github.com/pkg/sftp/server_stubs.go | 12 - vendor/github.com/pkg/sftp/server_unix.go | 143 - vendor/github.com/pkg/sftp/sftp.go | 217 - .../prometheus/client_golang/.gitignore | 30 - .../prometheus/client_golang/.travis.yml | 13 - .../prometheus/client_golang/CHANGELOG.md | 181 - .../prometheus/client_golang/CONTRIBUTING.md | 20 - .../prometheus/client_golang/Dockerfile | 23 - .../prometheus/client_golang/MAINTAINERS.md | 2 - .../prometheus/client_golang/Makefile | 32 - .../prometheus/client_golang/Makefile.common | 223 - .../prometheus/client_golang/README.md | 98 - .../prometheus/client_golang/VERSION | 1 - .../prometheus/client_golang/go.mod | 12 - .../prometheus/client_golang/go.sum | 16 - .../prometheus/client_model/.gitignore | 1 - .../prometheus/client_model/CONTRIBUTING.md | 18 - .../prometheus/client_model/MAINTAINERS.md | 1 - .../prometheus/client_model/Makefile | 62 - .../prometheus/client_model/README.md | 26 - .../prometheus/client_model/metrics.proto | 82 - .../prometheus/client_model/pom.xml | 130 - .../prometheus/client_model/setup.py | 23 - .../github.com/prometheus/common/.travis.yml | 6 - .../prometheus/common/CONTRIBUTING.md | 18 - .../prometheus/common/MAINTAINERS.md | 1 - vendor/github.com/prometheus/common/README.md | 12 - vendor/github.com/prometheus/procfs/ttar | 0 vendor/github.com/rakelkar/gonetsh/LICENSE | 201 + .../rakelkar/gonetsh/netroute/netroute.go | 162 + .../rakelkar/gonetsh/netsh/netsh.go | 335 + .../rancher/helm-controller/.dockerignore | 4 - .../rancher/helm-controller/.drone.yml | 221 - .../rancher/helm-controller/.gitignore | 6 - .../rancher/helm-controller/Dockerfile.dapper | 26 - .../Dockerfile.dapper479579668 | 26 - .../rancher/helm-controller/Makefile | 23 - .../rancher/helm-controller/README.md | 50 - .../github.com/rancher/helm-controller/go.mod | 17 - .../github.com/rancher/helm-controller/go.sum | 141 - .../rancher/helm-controller/vendor.conf | 5 - vendor/github.com/rancher/kine/go.mod | 16 - vendor/github.com/rancher/kine/go.sum | 159 - .../rancher/wrangler-api/.dockerignore | 3 - .../rancher/wrangler-api/.drone.yml | 221 - .../rancher/wrangler-api/.gitignore | 6 - .../rancher/wrangler-api/.golangci.json | 19 - .../rancher/wrangler-api/Dockerfile.dapper | 28 - .../github.com/rancher/wrangler-api/Makefile | 15 - .../github.com/rancher/wrangler-api/README.md | 24 - vendor/github.com/rancher/wrangler-api/go.mod | 22 - vendor/github.com/rancher/wrangler-api/go.sum | 175 - vendor/github.com/rancher/wrangler/README.md | 77 - vendor/github.com/rancher/wrangler/go.mod | 38 - vendor/github.com/rancher/wrangler/go.sum | 316 - .../rancher/wrangler/pkg/apply/apply.go | 16 + .../rancher/wrangler/pkg/apply/desiredset.go | 6 + .../wrangler/pkg/apply/desiredset_process.go | 80 +- .../generators/register_group_version_go.go | 13 + .../pkg/controller-gen/generators/type_go.go | 1 + .../wrangler/pkg/controller-gen/main.go | 8 +- .../rancher/wrangler/pkg/crd/init.go | 11 +- .../rancher/wrangler/pkg/gvk/get.go | 20 + .../rancher/wrangler/pkg/leader/leader.go | 6 +- .../rootlesskit/.gitignore | 1 - .../rootlesskit/.travis.yml | 8 - .../rootlesskit/Gopkg.lock | 208 - .../rootlesskit/Gopkg.toml | 45 - .../rootless-containers/rootlesskit/Makefile | 23 - .../rootless-containers/rootlesskit/README.md | 394 - .../rootlesskit/pkg/api/openapi.yaml | 82 - vendor/github.com/sirupsen/logrus/.travis.yml | 12 +- .../github.com/sirupsen/logrus/CHANGELOG.md | 2 + vendor/github.com/sirupsen/logrus/go.mod | 2 +- vendor/github.com/sirupsen/logrus/go.sum | 3 + ...ck_js.go => terminal_check_no_terminal.go} | 2 +- .../logrus/terminal_check_notappengine.go | 2 +- .../sirupsen/logrus/terminal_check_solaris.go | 11 + .../sirupsen/logrus/terminal_check_windows.go | 18 +- .../sirupsen/logrus/terminal_notwindows.go | 8 - .../sirupsen/logrus/terminal_windows.go | 18 - .../sirupsen/logrus/text_formatter.go | 4 - vendor/github.com/spf13/afero/.travis.yml | 8 +- vendor/github.com/spf13/afero/README.md | 23 +- vendor/github.com/spf13/afero/afero.go | 2 +- vendor/github.com/spf13/afero/appveyor.yml | 2 +- vendor/github.com/spf13/afero/basepath.go | 71 +- .../github.com/spf13/afero/cacheOnReadFs.go | 18 +- .../github.com/spf13/afero/copyOnWriteFs.go | 58 +- vendor/github.com/spf13/afero/go.mod | 3 + vendor/github.com/spf13/afero/go.sum | 2 + .../spf13/afero/{memradix.go => lstater.go} | 15 +- vendor/github.com/spf13/afero/match.go | 110 + vendor/github.com/spf13/afero/mem/file.go | 56 +- vendor/github.com/spf13/afero/memmap.go | 66 +- vendor/github.com/spf13/afero/os.go | 7 + vendor/github.com/spf13/afero/path.go | 18 +- vendor/github.com/spf13/afero/readonlyfs.go | 10 + vendor/github.com/spf13/afero/sftp.go | 128 - vendor/github.com/spf13/afero/sftp/file.go | 95 - vendor/github.com/spf13/afero/sftp_test_go | 286 - vendor/github.com/spf13/afero/unionFile.go | 208 +- vendor/github.com/spf13/afero/util.go | 7 +- .../github.com/tchap/go-patricia/.gitignore | 25 - vendor/github.com/tchap/go-patricia/README.md | 123 - vendor/github.com/urfave/cli/.travis.yml | 2 +- vendor/github.com/urfave/cli/CHANGELOG.md | 29 +- vendor/github.com/urfave/cli/MAINTAINERS.md | 3 + vendor/github.com/urfave/cli/README.md | 4 +- vendor/github.com/urfave/cli/app.go | 19 +- vendor/github.com/urfave/cli/command.go | 65 +- vendor/github.com/urfave/cli/context.go | 41 + vendor/github.com/urfave/cli/flag.go | 8 + .../github.com/urfave/cli/flag_generated.go | 78 + .../github.com/urfave/cli/generate-flag-types | 6 + vendor/github.com/urfave/cli/go.mod | 8 + vendor/github.com/urfave/cli/go.sum | 6 + vendor/github.com/urfave/cli/help.go | 19 +- vendor/github.com/urfave/cli/runtests | 0 vendor/golang.org/x/crypto/.gitattributes | 10 - vendor/golang.org/x/crypto/.gitignore | 2 - vendor/golang.org/x/crypto/CONTRIBUTING.md | 26 - vendor/golang.org/x/crypto/README.md | 21 - vendor/golang.org/x/crypto/codereview.cfg | 1 - .../golang.org/x/crypto/cryptobyte/builder.go | 38 +- .../x/crypto/curve25519/curve25519.go | 2 +- .../x/crypto/curve25519/ladderstep_amd64.s | 90 +- .../x/crypto/curve25519/mul_amd64.s | 10 +- .../x/crypto/curve25519/square_amd64.s | 10 +- .../x/crypto/internal/chacha20/asm_arm64.s | 308 + .../crypto/internal/chacha20/chacha_arm64.go | 31 + .../internal/chacha20/chacha_generic.go | 110 +- .../crypto/internal/chacha20/chacha_noasm.go | 2 +- .../crypto/internal/chacha20/chacha_s390x.go | 11 +- .../chacha20/{asm_s390x.s => chacha_s390x.s} | 23 - vendor/golang.org/x/crypto/ocsp/ocsp.go | 5 +- vendor/golang.org/x/crypto/pkcs12/pkcs12.go | 7 +- .../golang.org/x/crypto/poly1305/mac_noasm.go | 11 + .../golang.org/x/crypto/poly1305/poly1305.go | 80 +- .../golang.org/x/crypto/poly1305/sum_amd64.go | 60 +- .../golang.org/x/crypto/poly1305/sum_amd64.s | 61 +- .../poly1305/{sum_ref.go => sum_generic.go} | 121 +- .../golang.org/x/crypto/poly1305/sum_noasm.go | 4 +- .../golang.org/x/crypto/poly1305/sum_s390x.go | 17 +- .../golang.org/x/crypto/poly1305/sum_s390x.s | 22 - .../x/crypto/poly1305/sum_vmsl_s390x.s | 22 - .../x/crypto/salsa20/salsa/salsa20_amd64.go | 3 +- .../{salsa2020_amd64.s => salsa20_amd64.s} | 8 +- .../x/crypto/salsa20/salsa/salsa20_noasm.go | 14 + .../x/crypto/salsa20/salsa/salsa20_ref.go | 9 +- vendor/golang.org/x/crypto/ssh/certs.go | 16 +- vendor/golang.org/x/crypto/ssh/cipher.go | 24 +- vendor/golang.org/x/crypto/ssh/client.go | 2 +- vendor/golang.org/x/crypto/ssh/common.go | 20 +- vendor/golang.org/x/crypto/ssh/handshake.go | 5 +- vendor/golang.org/x/crypto/ssh/keys.go | 98 +- vendor/golang.org/x/crypto/ssh/messages.go | 26 + vendor/golang.org/x/crypto/ssh/server.go | 3 +- .../x/crypto/ssh/terminal/terminal.go | 67 +- .../golang.org/x/crypto/ssh/terminal/util.go | 4 +- .../x/crypto/ssh/terminal/util_aix.go | 12 + .../x/crypto/ssh/terminal/util_plan9.go | 2 +- .../x/crypto/ssh/terminal/util_solaris.go | 2 +- .../x/crypto/ssh/terminal/util_windows.go | 8 +- vendor/golang.org/x/crypto/ssh/transport.go | 12 +- vendor/golang.org/x/net/.gitattributes | 10 - vendor/golang.org/x/net/.gitignore | 2 - vendor/golang.org/x/net/CONTRIBUTING.md | 26 - vendor/golang.org/x/net/README.md | 16 - vendor/golang.org/x/net/codereview.cfg | 1 - vendor/golang.org/x/oauth2/CONTRIBUTING.md | 15 +- vendor/golang.org/x/oauth2/LICENSE | 2 +- vendor/golang.org/x/oauth2/README.md | 65 +- .../golang.org/x/oauth2/client_appengine.go | 25 - vendor/golang.org/x/oauth2/go.mod | 10 + vendor/golang.org/x/oauth2/go.sum | 12 + .../golang.org/x/oauth2/google/appengine.go | 89 +- .../x/oauth2/google/appengine_gen1.go | 77 + .../x/oauth2/google/appengine_gen2_flex.go | 27 + .../x/oauth2/google/appengine_hook.go | 14 - .../x/oauth2/google/appengineflex_hook.go | 11 - vendor/golang.org/x/oauth2/google/default.go | 76 +- vendor/golang.org/x/oauth2/google/doc.go | 40 + vendor/golang.org/x/oauth2/google/google.go | 36 +- vendor/golang.org/x/oauth2/google/sdk.go | 35 +- .../x/oauth2/internal/client_appengine.go | 13 + vendor/golang.org/x/oauth2/internal/doc.go | 6 + vendor/golang.org/x/oauth2/internal/oauth2.go | 41 +- vendor/golang.org/x/oauth2/internal/token.go | 237 +- .../golang.org/x/oauth2/internal/transport.go | 50 +- vendor/golang.org/x/oauth2/jwt/jwt.go | 15 +- vendor/golang.org/x/oauth2/oauth2.go | 115 +- vendor/golang.org/x/oauth2/token.go | 28 +- vendor/golang.org/x/oauth2/transport.go | 16 +- vendor/golang.org/x/sync/CONTRIBUTING.md | 31 - vendor/golang.org/x/sync/README | 2 - vendor/golang.org/x/sync/codereview.cfg | 1 - vendor/golang.org/x/sync/errgroup/errgroup.go | 3 +- vendor/golang.org/x/sys/.gitattributes | 10 - vendor/golang.org/x/sys/.gitignore | 2 - vendor/golang.org/x/sys/CONTRIBUTING.md | 26 - vendor/golang.org/x/sys/README.md | 18 - vendor/golang.org/x/sys/codereview.cfg | 1 - vendor/golang.org/x/sys/cpu/cpu.go | 89 + vendor/golang.org/x/sys/cpu/cpu_arm.go | 9 + vendor/golang.org/x/sys/cpu/cpu_arm64.go | 67 + vendor/golang.org/x/sys/cpu/cpu_gc_x86.go | 16 + vendor/golang.org/x/sys/cpu/cpu_gccgo.c | 43 + vendor/golang.org/x/sys/cpu/cpu_gccgo.go | 26 + vendor/golang.org/x/sys/cpu/cpu_linux.go | 61 + vendor/golang.org/x/sys/cpu/cpu_mips64x.go | 11 + vendor/golang.org/x/sys/cpu/cpu_mipsx.go | 11 + vendor/golang.org/x/sys/cpu/cpu_ppc64x.go | 32 + vendor/golang.org/x/sys/cpu/cpu_s390x.go | 9 + vendor/golang.org/x/sys/cpu/cpu_x86.go | 57 + vendor/golang.org/x/sys/cpu/cpu_x86.s | 27 + vendor/golang.org/x/sys/unix/mkall.sh | 0 vendor/golang.org/x/sys/unix/mkerrors.sh | 0 .../x/sys/unix/mksyscall_solaris.pl | 0 .../golang.org/x/sys/unix/mksysctl_openbsd.pl | 0 vendor/golang.org/x/text/.gitattributes | 10 - vendor/golang.org/x/text/.gitignore | 6 - vendor/golang.org/x/text/CONTRIBUTING.md | 31 - vendor/golang.org/x/text/README | 23 - vendor/golang.org/x/text/codereview.cfg | 1 - vendor/golang.org/x/text/encoding/encoding.go | 2 +- .../text/encoding/internal/identifier/gen.go | 7 +- .../internal/identifier/identifier.go | 2 +- .../text/encoding/internal/identifier/mib.go | 96 +- .../x/text/encoding/unicode/unicode.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 - .../x/text/secure/bidirule/bidirule.go | 8 +- .../x/text/secure/bidirule/bidirule10.0.0.go | 11 + .../x/text/secure/bidirule/bidirule9.0.0.go | 14 + .../golang.org/x/text/transform/transform.go | 6 +- vendor/golang.org/x/text/unicode/bidi/bidi.go | 2 +- .../golang.org/x/text/unicode/bidi/bracket.go | 4 +- vendor/golang.org/x/text/unicode/bidi/core.go | 2 +- vendor/golang.org/x/text/unicode/bidi/gen.go | 4 +- .../x/text/unicode/bidi/gen_ranges.go | 2 +- .../x/text/unicode/bidi/tables10.0.0.go | 1815 ++++ .../x/text/unicode/bidi/tables11.0.0.go | 1887 ++++ .../bidi/{tables.go => tables9.0.0.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 | 1456 ---- .../x/text/unicode/norm/composition.go | 8 +- .../x/text/unicode/norm/forminfo.go | 19 + vendor/golang.org/x/text/unicode/norm/iter.go | 3 +- .../x/text/unicode/norm/maketables.go | 24 +- .../x/text/unicode/norm/normalize.go | 4 +- .../x/text/unicode/norm/readwriter.go | 4 +- .../x/text/unicode/norm/tables10.0.0.go | 7657 ++++++++++++++++ .../x/text/unicode/norm/tables11.0.0.go | 7693 +++++++++++++++++ .../norm/{tables.go => tables9.0.0.go} | 1892 ++-- .../x/text/unicode/norm/transform.go | 12 +- .../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/golang.org/x/text/width/gen.go | 2 +- vendor/golang.org/x/text/width/kind_string.go | 18 +- .../golang.org/x/text/width/tables10.0.0.go | 1318 +++ .../golang.org/x/text/width/tables11.0.0.go | 1330 +++ .../text/width/{tables.go => tables9.0.0.go} | 2 + vendor/golang.org/x/text/width/width.go | 6 +- vendor/golang.org/x/time/CONTRIBUTING.md | 31 - vendor/golang.org/x/time/README | 1 - vendor/golang.org/x/time/rate/rate.go | 11 +- vendor/golang.org/x/tools/.gitattributes | 10 - vendor/golang.org/x/tools/.gitignore | 2 - vendor/golang.org/x/tools/CONTRIBUTING.md | 26 - vendor/golang.org/x/tools/README.md | 27 - vendor/golang.org/x/tools/codereview.cfg | 1 - .../golang.org/x/tools/go/internal/cgo/cgo.go | 220 - .../x/tools/go/internal/cgo/cgo_pkgconfig.go | 39 - .../golang.org/x/tools/go/packages/golist.go | 104 +- .../x/tools/go/packages/golist_fallback.go | 450 - .../go/packages/golist_fallback_testmain.go | 318 - .../x/tools/go/packages/packages.go | 140 +- .../x/tools/go/types/typeutil/callee.go | 46 - .../x/tools/go/types/typeutil/imports.go | 31 - .../x/tools/go/types/typeutil/map.go | 313 - .../tools/go/types/typeutil/methodsetcache.go | 72 - .../x/tools/go/types/typeutil/ui.go | 52 - vendor/golang.org/x/tools/imports/mod.go | 8 +- vendor/gonum.org/v1/gonum/.travis.yml | 68 - vendor/gonum.org/v1/gonum/CONDUCT.md | 12 - vendor/gonum.org/v1/gonum/CONTRIBUTING.md | 115 - vendor/gonum.org/v1/gonum/GOPHER | 1 - vendor/gonum.org/v1/gonum/README.md | 41 - vendor/gonum.org/v1/gonum/appveyor.yml | 28 - .../gonum.org/v1/gonum/blas/conversions.bash | 0 .../v1/gonum/blas/gonum/single_precision.bash | 0 vendor/gonum.org/v1/gonum/go.mod | 7 - vendor/gonum.org/v1/gonum/go.sum | 6 - vendor/gonum.org/v1/gonum/gopher.png | Bin 152855 -> 0 bytes .../gonum/graph/formats/dot/internal/Makefile | 33 - .../gonum/graph/formats/dot/internal/dot.bnf | 359 - .../gonum/graph/formats/dot/makeinternal.bash | 0 vendor/gonum.org/v1/gonum/internal/README.md | 3 - .../v1/gonum/internal/asm/bench_gen.sh | 30 - vendor/google.golang.org/api/.gitignore | 12 - vendor/google.golang.org/api/.hgtags | 1 - vendor/google.golang.org/api/CONTRIBUTING.md | 484 -- .../google.golang.org/api/GettingStarted.md | 146 - vendor/google.golang.org/api/NOTES | 13 - vendor/google.golang.org/api/README.md | 104 - vendor/google.golang.org/api/TODO | 2 - vendor/google.golang.org/api/api-list.json | 3404 -------- vendor/google.golang.org/api/key.json.enc | Bin 2432 -> 0 bytes .../internal/datastore/datastore_v3.proto | 0 .../appengine/internal/regen.sh | 0 .../appengine/travis_install.sh | 0 .../appengine/travis_test.sh | 0 vendor/google.golang.org/genproto/.travis.yml | 12 - .../genproto/CONTRIBUTING.md | 27 - vendor/google.golang.org/genproto/README.md | 28 - .../googleapis/rpc/status/status.pb.go | 66 +- vendor/google.golang.org/genproto/regen.sh | 78 - vendor/google.golang.org/grpc/.travis.yml | 41 +- vendor/google.golang.org/grpc/CONTRIBUTING.md | 1 + vendor/google.golang.org/grpc/Makefile | 60 +- vendor/google.golang.org/grpc/README.md | 26 +- vendor/google.golang.org/grpc/backoff.go | 66 +- vendor/google.golang.org/grpc/balancer.go | 27 +- .../grpc/balancer/balancer.go | 128 +- .../grpc/balancer/base/balancer.go | 74 +- .../grpc/balancer/base/base.go | 12 + .../grpc/balancer/roundrobin/roundrobin.go | 16 +- .../grpc/balancer_conn_wrappers.go | 55 +- .../grpc/balancer_v1_wrapper.go | 125 +- .../grpc_binarylog_v1/binarylog.pb.go | 900 ++ vendor/google.golang.org/grpc/call.go | 37 +- vendor/google.golang.org/grpc/clientconn.go | 1489 ++-- vendor/google.golang.org/grpc/codegen.sh | 0 vendor/google.golang.org/grpc/codes/codes.go | 13 + .../grpc/connectivity/connectivity.go | 5 +- .../grpc/credentials/credentials.go | 132 +- .../grpc/credentials/credentials_util_go17.go | 60 - .../credentials/credentials_util_pre_go17.go | 57 - .../grpc/credentials/internal/syscallconn.go | 61 + .../internal/syscallconn_appengine.go} | 19 +- .../{credentials_util_go18.go => tls13.go} | 24 +- vendor/google.golang.org/grpc/dialoptions.go | 532 ++ .../grpc/encoding/encoding.go | 6 +- vendor/google.golang.org/grpc/go.mod | 19 + vendor/google.golang.org/grpc/go.sum | 33 + vendor/google.golang.org/grpc/go16.go | 70 - vendor/google.golang.org/grpc/go17.go | 71 - vendor/google.golang.org/grpc/grpclb.go | 341 - .../grpclb/grpc_lb_v1/messages/messages.pb.go | 799 -- .../grpclb/grpc_lb_v1/messages/messages.proto | 155 - .../google.golang.org/grpc/grpclb_picker.go | 159 - .../grpc/grpclb_remote_balancer.go | 266 - vendor/google.golang.org/grpc/grpclb_util.go | 214 - .../google.golang.org/grpc/grpclog/grpclog.go | 2 +- .../google.golang.org/grpc/health/client.go | 107 + .../grpc/health/grpc_health_v1/health.pb.go | 174 +- .../grpc/health/grpc_health_v1/health.proto | 44 - .../google.golang.org/grpc/health/health.go | 72 - .../grpc/health/regenerate.sh | 33 + .../google.golang.org/grpc/health/server.go | 165 + vendor/google.golang.org/grpc/install_gae.sh | 6 + vendor/google.golang.org/grpc/interceptor.go | 2 +- .../grpc/internal/backoff/backoff.go | 78 + .../grpc/internal/balancerload/load.go | 46 + .../grpc/internal/binarylog/binarylog.go | 167 + .../internal/binarylog/binarylog_testutil.go | 42 + .../grpc/internal/binarylog/env_config.go | 210 + .../grpc/internal/binarylog/method_logger.go | 423 + .../grpc/internal/binarylog/regenerate.sh | 33 + .../grpc/internal/binarylog/sink.go | 162 + .../grpc/internal/binarylog/util.go | 41 + .../grpc/{ => internal}/channelz/funcs.go | 202 +- .../grpc/{ => internal}/channelz/types.go | 318 +- .../grpc/internal/channelz/types_linux.go | 53 + .../grpc/internal/channelz/types_nonlinux.go | 44 + .../channelz/util_linux.go} | 27 +- .../channelz/util_nonlinux.go} | 23 +- .../grpc/internal/envconfig/envconfig.go | 64 + .../grpc/internal/grpcrand/grpcrand.go | 56 + .../grpc/internal/grpcsync/event.go | 61 + .../grpc/internal/internal.go | 43 +- .../grpc/internal/syscall/syscall_linux.go | 114 + .../grpc/internal/syscall/syscall_nonlinux.go | 73 + .../{ => internal}/transport/bdp_estimator.go | 7 +- .../{ => internal}/transport/controlbuf.go | 193 +- .../grpc/internal/transport/defaults.go | 49 + .../{ => internal}/transport/flowcontrol.go | 34 +- .../transport/handler_server.go | 55 +- .../{ => internal}/transport/http2_client.go | 385 +- .../{ => internal}/transport/http2_server.go | 446 +- .../{ => internal}/transport/http_util.go | 262 +- .../grpc/{ => internal}/transport/log.go | 6 - .../{ => internal}/transport/transport.go | 237 +- .../grpc/keepalive/keepalive.go | 64 +- .../grpc/metadata/metadata.go | 3 +- .../grpc/naming/dns_resolver.go | 11 +- .../google.golang.org/grpc/naming/naming.go | 2 +- vendor/google.golang.org/grpc/peer/peer.go | 2 +- .../google.golang.org/grpc/picker_wrapper.go | 182 +- vendor/google.golang.org/grpc/pickfirst.go | 4 +- vendor/google.golang.org/grpc/proxy.go | 52 +- .../grpc/resolver/dns/dns_resolver.go | 137 +- .../grpc/resolver/dns/go17.go | 35 - .../grpc/resolver/passthrough/passthrough.go | 2 +- .../grpc/resolver/resolver.go | 23 +- .../grpc/resolver_conn_wrapper.go | 117 +- vendor/google.golang.org/grpc/rpc_util.go | 316 +- vendor/google.golang.org/grpc/server.go | 462 +- .../google.golang.org/grpc/service_config.go | 174 +- .../google.golang.org/grpc/stats/handlers.go | 3 +- vendor/google.golang.org/grpc/stats/stats.go | 6 +- .../google.golang.org/grpc/status/status.go | 25 +- vendor/google.golang.org/grpc/stream.go | 1265 ++- vendor/google.golang.org/grpc/tap/tap.go | 2 +- vendor/google.golang.org/grpc/trace.go | 13 + .../google.golang.org/grpc/transport/go16.go | 51 - .../google.golang.org/grpc/transport/go17.go | 52 - .../grpc/{naming/go18.go => version.go} | 14 +- vendor/google.golang.org/grpc/vet.sh | 132 +- vendor/gopkg.in/inf.v0/dec.go | 2 +- vendor/gopkg.in/yaml.v2/encode.go | 28 + vendor/k8s.io/api/BUILD | 106 - vendor/k8s.io/api/CONTRIBUTING.md | 7 - vendor/k8s.io/api/OWNERS | 15 - vendor/k8s.io/api/README.md | 19 - vendor/k8s.io/api/SECURITY_CONTACTS | 17 - vendor/k8s.io/api/apps/OWNERS | 21 - vendor/k8s.io/api/auditregistration/OWNERS | 8 - vendor/k8s.io/api/authentication/OWNERS | 8 - vendor/k8s.io/api/authorization/OWNERS | 9 - vendor/k8s.io/api/autoscaling/OWNERS | 20 - vendor/k8s.io/api/batch/OWNERS | 20 - vendor/k8s.io/api/certificates/OWNERS | 16 - vendor/k8s.io/api/code-of-conduct.md | 3 - vendor/k8s.io/api/events/OWNERS | 10 - vendor/k8s.io/api/extensions/OWNERS | 40 - vendor/k8s.io/api/go.mod | 19 - vendor/k8s.io/api/go.sum | 57 - vendor/k8s.io/api/imagepolicy/OWNERS | 9 - vendor/k8s.io/api/networking/OWNERS | 7 - vendor/k8s.io/api/node/OWNERS | 9 - vendor/k8s.io/api/policy/OWNERS | 10 - vendor/k8s.io/api/rbac/OWNERS | 9 - vendor/k8s.io/api/storage/OWNERS | 5 - vendor/k8s.io/apiextensions-apiserver/BUILD | 61 - .../apiextensions-apiserver/CONTRIBUTING.md | 7 - vendor/k8s.io/apiextensions-apiserver/OWNERS | 14 - .../k8s.io/apiextensions-apiserver/README.md | 20 - .../apiextensions-apiserver/SECURITY_CONTACTS | 17 - .../code-of-conduct.md | 3 - vendor/k8s.io/apiextensions-apiserver/go.mod | 52 - vendor/k8s.io/apiextensions-apiserver/go.sum | 249 - .../apiextensions-apiserver/pkg/apis/OWNERS | 11 - .../pkg/cmd/server/BUILD | 36 - vendor/k8s.io/apimachinery/BUILD | 64 - vendor/k8s.io/apimachinery/CONTRIBUTING.md | 7 - vendor/k8s.io/apimachinery/OWNERS | 26 - vendor/k8s.io/apimachinery/README.md | 29 - vendor/k8s.io/apimachinery/SECURITY_CONTACTS | 17 - vendor/k8s.io/apimachinery/code-of-conduct.md | 3 - vendor/k8s.io/apimachinery/go.mod | 44 - vendor/k8s.io/apimachinery/go.sum | 73 - vendor/k8s.io/apimachinery/pkg/OWNERS | 8 - vendor/k8s.io/apimachinery/pkg/apis/OWNERS | 11 - vendor/k8s.io/apiserver/.import-restrictions | 10 - vendor/k8s.io/apiserver/BUILD | 56 - vendor/k8s.io/apiserver/CONTRIBUTING.md | 7 - vendor/k8s.io/apiserver/OWNERS | 26 - vendor/k8s.io/apiserver/README.md | 30 - vendor/k8s.io/apiserver/SECURITY_CONTACTS | 17 - vendor/k8s.io/apiserver/code-of-conduct.md | 3 - vendor/k8s.io/apiserver/go.mod | 80 - vendor/k8s.io/apiserver/go.sum | 204 - vendor/k8s.io/apiserver/pkg/apis/OWNERS | 11 - .../apiserver/pkg/authentication/OWNERS | 9 - .../k8s.io/apiserver/pkg/authorization/OWNERS | 9 - .../handlers/responsewriters/status.go | 0 vendor/k8s.io/apiserver/pkg/registry/BUILD | 30 - .../pkg/storage/value/encrypt/OWNERS | 9 - .../apiserver/pkg/util/webhook/gencerts.sh | 0 .../apiserver/pkg/util/webhook/webhook.go | 0 .../k8s.io/apiserver/plugin/pkg/audit/BUILD | 34 - .../k8s.io/apiserver/plugin/pkg/audit/OWNERS | 9 - .../apiserver/plugin/pkg/authenticator/BUILD | 33 - .../apiserver/plugin/pkg/authenticator/OWNERS | 9 - .../plugin/pkg/authenticator/password/BUILD | 29 - .../apiserver/plugin/pkg/authorizer/OWNERS | 9 - .../plugin/pkg/authorizer/webhook/gencerts.sh | 0 vendor/k8s.io/cli-runtime/BUILD | 20 - vendor/k8s.io/cli-runtime/CONTRIBUTING.md | 7 - vendor/k8s.io/cli-runtime/OWNERS | 16 - vendor/k8s.io/cli-runtime/README.md | 30 - vendor/k8s.io/cli-runtime/SECURITY_CONTACTS | 17 - vendor/k8s.io/cli-runtime/code-of-conduct.md | 3 - vendor/k8s.io/cli-runtime/go.mod | 37 - vendor/k8s.io/cli-runtime/go.sum | 122 - vendor/k8s.io/client-go/BUILD | 96 - vendor/k8s.io/client-go/CONTRIBUTING.md | 7 - vendor/k8s.io/client-go/INSTALL.md | 198 - vendor/k8s.io/client-go/OWNERS | 19 - vendor/k8s.io/client-go/SECURITY_CONTACTS | 17 - vendor/k8s.io/client-go/code-of-conduct.md | 3 - vendor/k8s.io/client-go/go.mod | 43 - vendor/k8s.io/client-go/go.sum | 101 - .../kubernetes/typed/authentication/OWNERS | 9 - .../kubernetes/typed/authorization/OWNERS | 9 - .../client-go/kubernetes/typed/rbac/OWNERS | 9 - vendor/k8s.io/client-go/listers/rbac/OWNERS | 9 - vendor/k8s.io/client-go/pkg/version/base.go | 6 +- .../client-go/plugin/pkg/client/auth/BUILD | 39 - .../client-go/plugin/pkg/client/auth/OWNERS | 9 - vendor/k8s.io/client-go/tools/cache/store.go | 0 vendor/k8s.io/cluster-bootstrap/BUILD | 17 - .../k8s.io/cluster-bootstrap/CONTRIBUTING.md | 7 - vendor/k8s.io/cluster-bootstrap/OWNERS | 8 - vendor/k8s.io/cluster-bootstrap/README.md | 21 - .../cluster-bootstrap/SECURITY_CONTACTS | 17 - .../cluster-bootstrap/code-of-conduct.md | 3 - vendor/k8s.io/cluster-bootstrap/go.mod | 19 - vendor/k8s.io/cluster-bootstrap/go.sum | 55 - vendor/k8s.io/cluster-bootstrap/token/OWNERS | 7 - vendor/k8s.io/code-generator/BUILD | 29 - vendor/k8s.io/code-generator/CONTRIBUTING.md | 7 - vendor/k8s.io/code-generator/OWNERS | 13 - vendor/k8s.io/code-generator/README.md | 24 - .../k8s.io/code-generator/SECURITY_CONTACTS | 17 - .../code-generator/cmd/client-gen/BUILD | 46 - .../code-generator/cmd/client-gen/OWNERS | 10 - .../code-generator/cmd/client-gen/README.md | 4 - .../code-generator/cmd/deepcopy-gen/BUILD | 43 - .../code-generator/cmd/informer-gen/BUILD | 44 - .../cmd/lister-gen/.import-restrictions | 1 - .../code-generator/cmd/lister-gen/BUILD | 44 - .../k8s.io/code-generator/code-of-conduct.md | 3 - .../k8s.io/code-generator/generate-groups.sh | 92 - .../generate-internal-groups.sh | 110 - vendor/k8s.io/code-generator/go.mod | 21 - vendor/k8s.io/code-generator/go.sum | 29 - vendor/k8s.io/component-base/BUILD | 21 - vendor/k8s.io/component-base/CONTRIBUTING.md | 7 - vendor/k8s.io/component-base/OWNERS | 17 - vendor/k8s.io/component-base/README.md | 34 - .../k8s.io/component-base/SECURITY_CONTACTS | 17 - .../k8s.io/component-base/code-of-conduct.md | 3 - vendor/k8s.io/component-base/go.mod | 26 - vendor/k8s.io/component-base/go.sum | 74 - vendor/k8s.io/cri-api/BUILD | 16 - vendor/k8s.io/cri-api/CONTRIBUTING.md | 7 - vendor/k8s.io/cri-api/OWNERS | 15 - vendor/k8s.io/cri-api/README.md | 26 - vendor/k8s.io/cri-api/SECURITY_CONTACTS | 15 - vendor/k8s.io/cri-api/code-of-conduct.md | 3 - vendor/k8s.io/cri-api/go.mod | 25 - vendor/k8s.io/cri-api/go.sum | 23 - vendor/k8s.io/cri-api/pkg/OWNERS | 17 - vendor/k8s.io/gengo/.import-restrictions | 11 - vendor/k8s.io/gengo/.travis.yml | 16 - vendor/k8s.io/gengo/CONTRIBUTING.md | 9 - vendor/k8s.io/gengo/OWNERS | 4 - vendor/k8s.io/gengo/README.md | 56 - vendor/k8s.io/gengo/SECURITY_CONTACTS | 15 - vendor/k8s.io/gengo/code-of-conduct.md | 3 - .../gengo/examples/deepcopy-gen/.gitignore | 1 - .../gengo/examples/deepcopy-gen/Makefile | 16 - .../deepcopy-gen/generators/deepcopy.go | 22 +- .../k8s.io/gengo/examples/set-gen/.gitignore | 1 - vendor/k8s.io/gengo/examples/set-gen/Makefile | 15 - vendor/k8s.io/heapster/.gitignore | 10 - vendor/k8s.io/heapster/.travis.yml | 16 - vendor/k8s.io/heapster/CONTRIBUTING.md | 14 - vendor/k8s.io/heapster/Makefile | 49 - vendor/k8s.io/heapster/README.md | 40 - vendor/k8s.io/heapster/RELEASES.md | 125 - vendor/k8s.io/kube-aggregator/BUILD | 61 - vendor/k8s.io/kube-aggregator/CONTRIBUTING.md | 7 - vendor/k8s.io/kube-aggregator/OWNERS | 16 - vendor/k8s.io/kube-aggregator/README.md | 27 - .../k8s.io/kube-aggregator/SECURITY_CONTACTS | 17 - .../k8s.io/kube-aggregator/code-of-conduct.md | 3 - vendor/k8s.io/kube-aggregator/go.mod | 40 - vendor/k8s.io/kube-aggregator/go.sum | 225 - vendor/k8s.io/kube-aggregator/pkg/apis/OWNERS | 11 - vendor/k8s.io/kube-controller-manager/BUILD | 16 - .../kube-controller-manager/CONTRIBUTING.md | 7 - vendor/k8s.io/kube-controller-manager/OWNERS | 15 - .../k8s.io/kube-controller-manager/README.md | 25 - .../kube-controller-manager/SECURITY_CONTACTS | 17 - .../code-of-conduct.md | 3 - .../kube-controller-manager/config/OWNERS | 16 - vendor/k8s.io/kube-controller-manager/go.mod | 19 - vendor/k8s.io/kube-controller-manager/go.sum | 65 - vendor/k8s.io/kube-openapi/.gitignore | 20 - vendor/k8s.io/kube-openapi/.travis.yml | 24 - vendor/k8s.io/kube-openapi/CONTRIBUTING.md | 9 - vendor/k8s.io/kube-openapi/OWNERS | 14 - vendor/k8s.io/kube-openapi/README.md | 18 - vendor/k8s.io/kube-openapi/SECURITY_CONTACTS | 13 - vendor/k8s.io/kube-openapi/code-of-conduct.md | 3 - vendor/k8s.io/kube-proxy/BUILD | 16 - vendor/k8s.io/kube-proxy/CONTRIBUTING.md | 7 - vendor/k8s.io/kube-proxy/OWNERS | 11 - vendor/k8s.io/kube-proxy/README.md | 16 - vendor/k8s.io/kube-proxy/SECURITY_CONTACTS | 17 - vendor/k8s.io/kube-proxy/code-of-conduct.md | 3 - vendor/k8s.io/kube-proxy/config/OWNERS | 12 - vendor/k8s.io/kube-proxy/go.mod | 19 - vendor/k8s.io/kube-proxy/go.sum | 65 - vendor/k8s.io/kube-scheduler/BUILD | 16 - vendor/k8s.io/kube-scheduler/CONTRIBUTING.md | 7 - vendor/k8s.io/kube-scheduler/OWNERS | 11 - vendor/k8s.io/kube-scheduler/README.md | 16 - .../k8s.io/kube-scheduler/SECURITY_CONTACTS | 17 - .../k8s.io/kube-scheduler/code-of-conduct.md | 3 - vendor/k8s.io/kube-scheduler/config/OWNERS | 12 - vendor/k8s.io/kube-scheduler/go.mod | 19 - vendor/k8s.io/kube-scheduler/go.sum | 65 - vendor/k8s.io/kubelet/BUILD | 16 - vendor/k8s.io/kubelet/CONTRIBUTING.md | 7 - vendor/k8s.io/kubelet/OWNERS | 11 - vendor/k8s.io/kubelet/README.md | 16 - vendor/k8s.io/kubelet/SECURITY_CONTACTS | 17 - vendor/k8s.io/kubelet/code-of-conduct.md | 3 - vendor/k8s.io/kubelet/config/OWNERS | 12 - vendor/k8s.io/kubelet/go.mod | 19 - vendor/k8s.io/kubelet/go.sum | 55 - vendor/k8s.io/kubernetes/.bazelrc | 1 - vendor/k8s.io/kubernetes/.generated_files | 27 - vendor/k8s.io/kubernetes/.gitattributes | 10 - vendor/k8s.io/kubernetes/.gitignore | 134 - vendor/k8s.io/kubernetes/.kazelcfg.json | 1 - vendor/k8s.io/kubernetes/BUILD.bazel | 1 - vendor/k8s.io/kubernetes/CHANGELOG-1.15.md | 1530 ---- vendor/k8s.io/kubernetes/CHANGELOG.md | 23 - vendor/k8s.io/kubernetes/CONTRIBUTING.md | 7 - vendor/k8s.io/kubernetes/Makefile | 1 - .../kubernetes/Makefile.generated_files | 1 - vendor/k8s.io/kubernetes/OWNERS | 41 - vendor/k8s.io/kubernetes/OWNERS_ALIASES | 450 - vendor/k8s.io/kubernetes/README.md | 84 - vendor/k8s.io/kubernetes/SECURITY_CONTACTS | 17 - vendor/k8s.io/kubernetes/SUPPORT.md | 29 - vendor/k8s.io/kubernetes/WORKSPACE | 1 - vendor/k8s.io/kubernetes/cmd/BUILD | 36 - vendor/k8s.io/kubernetes/cmd/OWNERS | 12 - .../kubernetes/cmd/controller-manager/OWNERS | 17 - .../kubernetes/cmd/kube-apiserver/BUILD | 43 - .../kubernetes/cmd/kube-apiserver/OWNERS | 30 - .../cmd/kube-controller-manager/BUILD | 43 - .../cmd/kube-controller-manager/OWNERS | 72 - vendor/k8s.io/kubernetes/cmd/kube-proxy/BUILD | 45 - .../k8s.io/kubernetes/cmd/kube-proxy/OWNERS | 8 - .../kubernetes/cmd/kube-scheduler/BUILD | 45 - .../kubernetes/cmd/kube-scheduler/OWNERS | 8 - vendor/k8s.io/kubernetes/cmd/kubelet/BUILD | 42 - vendor/k8s.io/kubernetes/cmd/kubelet/OWNERS | 13 - vendor/k8s.io/kubernetes/code-of-conduct.md | 3 - vendor/k8s.io/kubernetes/go.mod | 470 - vendor/k8s.io/kubernetes/go.sum | 485 -- .../kubernetes/pkg/.import-restrictions | 14 - vendor/k8s.io/kubernetes/pkg/BUILD | 90 - vendor/k8s.io/kubernetes/pkg/OWNERS | 14 - vendor/k8s.io/kubernetes/pkg/api/OWNERS | 18 - vendor/k8s.io/kubernetes/pkg/api/v1/OWNERS | 40 - vendor/k8s.io/kubernetes/pkg/apis/OWNERS | 55 - vendor/k8s.io/kubernetes/pkg/auth/OWNERS | 10 - vendor/k8s.io/kubernetes/pkg/client/OWNERS | 45 - .../kubernetes/pkg/client/metrics/OWNERS | 9 - .../kubernetes/pkg/controller/volume/OWNERS | 17 - vendor/k8s.io/kubernetes/pkg/generated/BUILD | 43 - .../pkg/kubelet/apis/deviceplugin/OWNERS | 7 - .../pkg/kubelet/apis/resourcemetrics/OWNERS | 4 - .../kubernetes/pkg/kubelet/apis/stats/OWNERS | 4 - .../kubernetes/pkg/kubelet/network/BUILD | 17 - .../kubernetes/pkg/kubelet/network/OWNERS | 11 - vendor/k8s.io/kubernetes/pkg/quota/BUILD | 17 - .../kubernetes/pkg/quota/v1/evaluator/OWNERS | 7 - vendor/k8s.io/kubernetes/pkg/registry/BUILD | 97 - vendor/k8s.io/kubernetes/pkg/registry/OWNERS | 43 - .../kubernetes/pkg/registry/apps/OWNERS | 5 - .../pkg/registry/authentication/OWNERS | 9 - .../pkg/registry/authorization/OWNERS | 9 - .../pkg/registry/autoscaling/OWNERS | 5 - .../kubernetes/pkg/registry/batch/OWNERS | 5 - .../pkg/registry/certificates/OWNERS | 9 - .../kubernetes/pkg/registry/core/OWNERS | 9 - .../kubernetes/pkg/registry/events/OWNERS | 10 - .../kubernetes/pkg/registry/extensions/OWNERS | 6 - .../kubernetes/pkg/registry/policy/OWNERS | 9 - .../kubernetes/pkg/registry/storage/OWNERS | 5 - .../kubernetes/pkg/scheduler/framework/BUILD | 17 - vendor/k8s.io/kubernetes/pkg/security/BUILD | 29 - vendor/k8s.io/kubernetes/pkg/util/BUILD | 67 - .../kubernetes/pkg/util/verify-util-pkg.sh | 48 - vendor/k8s.io/kubernetes/pkg/version/base.go | 6 +- vendor/k8s.io/kubernetes/plugin/BUILD | 44 - vendor/k8s.io/kubernetes/plugin/OWNERS | 14 - .../kubernetes/plugin/pkg/admission/OWNERS | 9 - .../pkg/admission/imagepolicy/gencerts.sh | 0 .../plugin/pkg/admission/security/BUILD | 28 - .../k8s.io/kubernetes/plugin/pkg/auth/BUILD | 29 - .../k8s.io/kubernetes/plugin/pkg/auth/OWNERS | 13 - .../plugin/pkg/auth/authenticator/OWNERS | 9 - .../plugin/pkg/auth/authorizer/BUILD | 29 - .../plugin/pkg/auth/authorizer/OWNERS | 9 - vendor/k8s.io/kubernetes/tag.sh | 42 - vendor/k8s.io/kubernetes/third_party/BUILD | 32 - vendor/k8s.io/kubernetes/third_party/OWNERS | 10 - vendor/k8s.io/kubernetes/vendor.conf | 247 - vendor/k8s.io/legacy-cloud-providers/BUILD | 19 - vendor/k8s.io/legacy-cloud-providers/OWNERS | 17 - .../k8s.io/legacy-cloud-providers/README.md | 29 - .../legacy-cloud-providers/SECURITY_CONTACTS | 15 - .../legacy-cloud-providers/code-of-conduct.md | 3 - vendor/k8s.io/legacy-cloud-providers/go.mod | 46 - vendor/k8s.io/legacy-cloud-providers/go.sum | 133 - vendor/k8s.io/metrics/BUILD | 23 - vendor/k8s.io/metrics/CONTRIBUTING.md | 7 - vendor/k8s.io/metrics/IMPLEMENTATIONS.md | 34 - vendor/k8s.io/metrics/OWNERS | 4 - vendor/k8s.io/metrics/README.md | 71 - vendor/k8s.io/metrics/SECURITY_CONTACTS | 17 - vendor/k8s.io/metrics/code-of-conduct.md | 3 - vendor/k8s.io/metrics/go.mod | 25 - vendor/k8s.io/metrics/go.sum | 108 - vendor/k8s.io/metrics/pkg/apis/OWNERS | 12 - vendor/k8s.io/utils/.travis.yml | 10 - vendor/k8s.io/utils/CONTRIBUTING.md | 9 - vendor/k8s.io/utils/HOWTOMOVE.md | 31 - vendor/k8s.io/utils/Makefile | 37 - vendor/k8s.io/utils/OWNERS | 21 - vendor/k8s.io/utils/README.md | 69 - vendor/k8s.io/utils/SECURITY_CONTACTS | 13 - vendor/k8s.io/utils/code-of-conduct.md | 3 - vendor/k8s.io/utils/go.mod | 10 - vendor/k8s.io/utils/go.sum | 14 - vendor/modules.txt | 2301 +++++ vendor/sigs.k8s.io/kustomize/.gitignore | 19 - vendor/sigs.k8s.io/kustomize/.golangci.yml | 30 - vendor/sigs.k8s.io/kustomize/.travis.yml | 46 - vendor/sigs.k8s.io/kustomize/CONTRIBUTING.md | 22 - vendor/sigs.k8s.io/kustomize/Gopkg.lock | 389 - vendor/sigs.k8s.io/kustomize/Gopkg.toml | 58 - vendor/sigs.k8s.io/kustomize/OWNERS | 4 - vendor/sigs.k8s.io/kustomize/OWNERS_ALIASES | 11 - vendor/sigs.k8s.io/kustomize/README.md | 212 - .../sigs.k8s.io/kustomize/SECURITY_CONTACTS | 15 - .../sigs.k8s.io/kustomize/code-of-conduct.md | 3 - .../structured-merge-diff/CONTRIBUTING.md | 31 - .../sigs.k8s.io/structured-merge-diff/OWNERS | 10 - .../structured-merge-diff/README.md | 67 - .../structured-merge-diff/RELEASE.md | 24 - .../structured-merge-diff/SECURITY_CONTACTS | 13 - .../structured-merge-diff/code-of-conduct.md | 3 - .../sigs.k8s.io/structured-merge-diff/go.mod | 3 - .../sigs.k8s.io/structured-merge-diff/go.sum | 4 - vendor/vbom.ml/util/README.md | 5 - 1421 files changed, 67689 insertions(+), 108333 deletions(-) delete mode 100644 vendor/cloud.google.com/go/CHANGES.md delete mode 100644 vendor/cloud.google.com/go/CODE_OF_CONDUCT.md delete mode 100644 vendor/cloud.google.com/go/CONTRIBUTING.md delete mode 100644 vendor/cloud.google.com/go/README.md delete mode 100644 vendor/cloud.google.com/go/RELEASING.md delete mode 100644 vendor/cloud.google.com/go/issue_template.md delete mode 100644 vendor/cloud.google.com/go/keys.tar.enc delete mode 100644 vendor/cloud.google.com/go/old-news.md delete mode 100755 vendor/cloud.google.com/go/regen-gapic.sh delete mode 100755 vendor/cloud.google.com/go/run-tests.sh delete mode 100644 vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/.gitignore delete mode 100644 vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/CONTRIBUTING.md delete mode 100644 vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.lock delete mode 100644 vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.toml delete mode 100644 vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Makefile delete mode 100644 vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/README.md mode change 100755 => 100644 vendor/github.com/armon/circbuf/.gitignore mode change 100755 => 100644 vendor/github.com/armon/circbuf/LICENSE delete mode 100644 vendor/github.com/beorn7/perks/.gitignore delete mode 100644 vendor/github.com/beorn7/perks/README.md create mode 100644 vendor/github.com/bhendo/go-powershell/LICENSE create mode 100644 vendor/github.com/bhendo/go-powershell/README.md create mode 100644 vendor/github.com/bhendo/go-powershell/backend/local.go create mode 100644 vendor/github.com/bhendo/go-powershell/backend/ssh.go create mode 100644 vendor/github.com/bhendo/go-powershell/backend/types.go create mode 100644 vendor/github.com/bhendo/go-powershell/shell.go create mode 100644 vendor/github.com/bhendo/go-powershell/utils/quote.go create mode 100644 vendor/github.com/bhendo/go-powershell/utils/rand.go create mode 100644 vendor/github.com/blang/semver/package.json create mode 100644 vendor/github.com/buger/jsonparser/.gitignore create mode 100644 vendor/github.com/buger/jsonparser/.travis.yml create mode 100644 vendor/github.com/buger/jsonparser/Dockerfile create mode 100644 vendor/github.com/buger/jsonparser/LICENSE create mode 100644 vendor/github.com/buger/jsonparser/Makefile create mode 100644 vendor/github.com/buger/jsonparser/README.md create mode 100644 vendor/github.com/buger/jsonparser/bytes.go create mode 100644 vendor/github.com/buger/jsonparser/bytes_safe.go create mode 100644 vendor/github.com/buger/jsonparser/bytes_unsafe.go create mode 100644 vendor/github.com/buger/jsonparser/escape.go create mode 100644 vendor/github.com/buger/jsonparser/parser.go delete mode 100644 vendor/github.com/chai2010/gettext-go/.travis.yml delete mode 100644 vendor/github.com/chai2010/gettext-go/README.md delete mode 100644 vendor/github.com/cloudflare/cfssl/.dockerignore delete mode 100644 vendor/github.com/cloudflare/cfssl/.gitignore delete mode 100644 vendor/github.com/cloudflare/cfssl/.travis.yml delete mode 100644 vendor/github.com/cloudflare/cfssl/BUILDING.md delete mode 100644 vendor/github.com/cloudflare/cfssl/CHANGELOG delete mode 100644 vendor/github.com/cloudflare/cfssl/Dockerfile delete mode 100644 vendor/github.com/cloudflare/cfssl/Dockerfile.build delete mode 100644 vendor/github.com/cloudflare/cfssl/Dockerfile.minimal delete mode 100644 vendor/github.com/cloudflare/cfssl/Gopkg.lock delete mode 100644 vendor/github.com/cloudflare/cfssl/Gopkg.toml delete mode 100644 vendor/github.com/cloudflare/cfssl/README.md delete mode 100755 vendor/github.com/cloudflare/cfssl/test.sh delete mode 100644 vendor/github.com/container-storage-interface/spec/.gitignore delete mode 100644 vendor/github.com/container-storage-interface/spec/.travis.yml delete mode 100644 vendor/github.com/container-storage-interface/spec/CCLA.pdf delete mode 100644 vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md delete mode 100644 vendor/github.com/container-storage-interface/spec/Makefile delete mode 100644 vendor/github.com/container-storage-interface/spec/OWNERS delete mode 100644 vendor/github.com/container-storage-interface/spec/README.md delete mode 100644 vendor/github.com/container-storage-interface/spec/VERSION delete mode 100644 vendor/github.com/container-storage-interface/spec/csi.proto delete mode 100644 vendor/github.com/container-storage-interface/spec/lib/README.md delete mode 100644 vendor/github.com/container-storage-interface/spec/lib/go/.gitignore delete mode 100644 vendor/github.com/container-storage-interface/spec/lib/go/Makefile delete mode 100644 vendor/github.com/container-storage-interface/spec/lib/go/README.md delete mode 100755 vendor/github.com/container-storage-interface/spec/logo.png delete mode 100644 vendor/github.com/container-storage-interface/spec/spec.md mode change 100755 => 100644 vendor/github.com/containerd/cgroups/metrics.pb.txt delete mode 100755 vendor/github.com/containerd/containerd/api/1.0.pb.txt delete mode 100755 vendor/github.com/containerd/containerd/api/1.1.pb.txt delete mode 100755 vendor/github.com/containerd/containerd/api/1.2.pb.txt delete mode 100644 vendor/github.com/containerd/containerd/api/README.md delete mode 100755 vendor/github.com/containerd/containerd/api/next.pb.txt delete mode 100644 vendor/github.com/containerd/containerd/contrib/Dockerfile.test delete mode 100644 vendor/github.com/containerd/containerd/contrib/README.md mode change 100755 => 100644 vendor/github.com/containerd/containerd/runtime/linux/runctypes/1.0.pb.txt mode change 100755 => 100644 vendor/github.com/containerd/containerd/runtime/linux/runctypes/next.pb.txt mode change 100755 => 100644 vendor/github.com/containerd/containerd/runtime/v2/runc/options/next.pb.txt mode change 100755 => 100644 vendor/github.com/containerd/continuity/sysx/generate.sh create mode 100644 vendor/github.com/containerd/typeurl/doc.go delete mode 100644 vendor/github.com/containernetworking/cni/.gitignore delete mode 100644 vendor/github.com/containernetworking/cni/.travis.yml delete mode 100644 vendor/github.com/containernetworking/cni/CODE-OF-CONDUCT.md delete mode 100644 vendor/github.com/containernetworking/cni/CONTRIBUTING.md delete mode 100644 vendor/github.com/containernetworking/cni/CONVENTIONS.md delete mode 100644 vendor/github.com/containernetworking/cni/DCO delete mode 100644 vendor/github.com/containernetworking/cni/MAINTAINERS delete mode 100644 vendor/github.com/containernetworking/cni/README.md delete mode 100644 vendor/github.com/containernetworking/cni/RELEASING.md delete mode 100644 vendor/github.com/containernetworking/cni/ROADMAP.md delete mode 100644 vendor/github.com/containernetworking/cni/SPEC.md delete mode 100644 vendor/github.com/containernetworking/cni/Vagrantfile delete mode 100755 vendor/github.com/containernetworking/cni/build.sh delete mode 100644 vendor/github.com/containernetworking/cni/logo.png delete mode 100755 vendor/github.com/containernetworking/cni/test.sh delete mode 100644 vendor/github.com/containernetworking/plugins/.appveyor.yml delete mode 100644 vendor/github.com/containernetworking/plugins/.gitignore delete mode 100644 vendor/github.com/containernetworking/plugins/.travis.yml delete mode 100644 vendor/github.com/containernetworking/plugins/CONTRIBUTING.md delete mode 100644 vendor/github.com/containernetworking/plugins/README.md delete mode 100644 vendor/github.com/containernetworking/plugins/RELEASING.md delete mode 100644 vendor/github.com/containernetworking/plugins/Vagrantfile delete mode 100755 vendor/github.com/containernetworking/plugins/build.sh delete mode 100644 vendor/github.com/containernetworking/plugins/plugins/linux_only.txt delete mode 100755 vendor/github.com/containernetworking/plugins/test.sh delete mode 100644 vendor/github.com/coreos/etcd/.dockerignore delete mode 100644 vendor/github.com/coreos/etcd/.gitignore delete mode 100644 vendor/github.com/coreos/etcd/.godir delete mode 100644 vendor/github.com/coreos/etcd/.header delete mode 100644 vendor/github.com/coreos/etcd/.travis.yml delete mode 100644 vendor/github.com/coreos/etcd/.words delete mode 100644 vendor/github.com/coreos/etcd/CHANGELOG.md delete mode 100644 vendor/github.com/coreos/etcd/CODE_OF_CONDUCT.md delete mode 100644 vendor/github.com/coreos/etcd/CONTRIBUTING.md delete mode 100644 vendor/github.com/coreos/etcd/DCO delete mode 100644 vendor/github.com/coreos/etcd/Dockerfile delete mode 100644 vendor/github.com/coreos/etcd/Dockerfile-functional-tester delete mode 100644 vendor/github.com/coreos/etcd/Dockerfile-release delete mode 100644 vendor/github.com/coreos/etcd/Dockerfile-release.arm64 delete mode 100644 vendor/github.com/coreos/etcd/Dockerfile-release.ppc64le delete mode 100644 vendor/github.com/coreos/etcd/Dockerfile-test delete mode 100644 vendor/github.com/coreos/etcd/MAINTAINERS delete mode 100644 vendor/github.com/coreos/etcd/Makefile delete mode 100644 vendor/github.com/coreos/etcd/Procfile delete mode 100644 vendor/github.com/coreos/etcd/Procfile.v2 delete mode 100644 vendor/github.com/coreos/etcd/README.md delete mode 100644 vendor/github.com/coreos/etcd/ROADMAP.md delete mode 100644 vendor/github.com/coreos/etcd/V2Procfile delete mode 100644 vendor/github.com/coreos/etcd/bill-of-materials.json delete mode 100644 vendor/github.com/coreos/etcd/bill-of-materials.override.json delete mode 100755 vendor/github.com/coreos/etcd/build delete mode 100755 vendor/github.com/coreos/etcd/build.bat delete mode 100644 vendor/github.com/coreos/etcd/build.ps1 delete mode 100755 vendor/github.com/coreos/etcd/cover delete mode 100644 vendor/github.com/coreos/etcd/etcd.conf.yml.sample delete mode 100644 vendor/github.com/coreos/etcd/functional.yaml delete mode 100644 vendor/github.com/coreos/etcd/glide.lock delete mode 100644 vendor/github.com/coreos/etcd/glide.yaml delete mode 100644 vendor/github.com/coreos/etcd/meeting.ics delete mode 100644 vendor/github.com/coreos/etcd/pkg/README.md delete mode 100755 vendor/github.com/coreos/etcd/test delete mode 100644 vendor/github.com/coreos/flannel/.appveyor.yml delete mode 100644 vendor/github.com/coreos/flannel/.dockerignore delete mode 100644 vendor/github.com/coreos/flannel/.gitignore delete mode 100644 vendor/github.com/coreos/flannel/.travis.yml delete mode 100644 vendor/github.com/coreos/flannel/CONTRIBUTING.md delete mode 100644 vendor/github.com/coreos/flannel/DCO delete mode 100644 vendor/github.com/coreos/flannel/Dockerfile.amd64 delete mode 100644 vendor/github.com/coreos/flannel/Dockerfile.arm delete mode 100644 vendor/github.com/coreos/flannel/Dockerfile.arm64 delete mode 100644 vendor/github.com/coreos/flannel/Dockerfile.ppc64le delete mode 100644 vendor/github.com/coreos/flannel/Dockerfile.s390x delete mode 100644 vendor/github.com/coreos/flannel/MAINTAINERS delete mode 100644 vendor/github.com/coreos/flannel/Makefile delete mode 100644 vendor/github.com/coreos/flannel/README.md delete mode 100644 vendor/github.com/coreos/flannel/bill-of-materials.json delete mode 100644 vendor/github.com/coreos/flannel/bill-of-materials.override.json delete mode 100644 vendor/github.com/coreos/flannel/code-of-conduct.md delete mode 100644 vendor/github.com/coreos/flannel/glide.lock delete mode 100644 vendor/github.com/coreos/flannel/glide.yaml delete mode 100755 vendor/github.com/coreos/flannel/header-check.sh delete mode 100644 vendor/github.com/coreos/flannel/packet-01.png delete mode 100644 vendor/github.com/coreos/go-iptables/.travis.yml delete mode 100644 vendor/github.com/coreos/go-iptables/DCO delete mode 100644 vendor/github.com/coreos/go-iptables/README.md delete mode 100755 vendor/github.com/coreos/go-iptables/build delete mode 100644 vendor/github.com/coreos/go-iptables/code-of-conduct.md delete mode 100755 vendor/github.com/coreos/go-iptables/test mode change 100755 => 100644 vendor/github.com/coreos/go-oidc/test delete mode 100644 vendor/github.com/coreos/go-semver/.travis.yml delete mode 100644 vendor/github.com/coreos/go-semver/DCO delete mode 100644 vendor/github.com/coreos/go-semver/README.md delete mode 100644 vendor/github.com/coreos/go-semver/code-of-conduct.md delete mode 100644 vendor/github.com/coreos/go-systemd/.travis.yml delete mode 100644 vendor/github.com/coreos/go-systemd/CONTRIBUTING.md delete mode 100644 vendor/github.com/coreos/go-systemd/DCO create mode 100644 vendor/github.com/coreos/go-systemd/NOTICE delete mode 100644 vendor/github.com/coreos/go-systemd/README.md delete mode 100755 vendor/github.com/coreos/go-systemd/test delete mode 100644 vendor/github.com/coreos/pkg/.gitignore delete mode 100644 vendor/github.com/coreos/pkg/.travis.yml delete mode 100644 vendor/github.com/coreos/pkg/CONTRIBUTING.md delete mode 100644 vendor/github.com/coreos/pkg/DCO delete mode 100644 vendor/github.com/coreos/pkg/MAINTAINERS delete mode 100644 vendor/github.com/coreos/pkg/README.md delete mode 100755 vendor/github.com/coreos/pkg/build.sh delete mode 100644 vendor/github.com/coreos/pkg/code-of-conduct.md delete mode 100755 vendor/github.com/coreos/pkg/test.sh delete mode 100644 vendor/github.com/davecgh/go-spew/.gitignore delete mode 100644 vendor/github.com/davecgh/go-spew/.travis.yml delete mode 100644 vendor/github.com/davecgh/go-spew/README.md delete mode 100644 vendor/github.com/davecgh/go-spew/cov_report.sh delete mode 100644 vendor/github.com/davecgh/go-spew/test_coverage.txt delete mode 100644 vendor/github.com/docker/distribution/.gitignore delete mode 100644 vendor/github.com/docker/distribution/.gometalinter.json delete mode 100644 vendor/github.com/docker/distribution/.mailmap delete mode 100644 vendor/github.com/docker/distribution/.travis.yml delete mode 100644 vendor/github.com/docker/distribution/BUILDING.md delete mode 100644 vendor/github.com/docker/distribution/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/distribution/Dockerfile delete mode 100644 vendor/github.com/docker/distribution/MAINTAINERS delete mode 100644 vendor/github.com/docker/distribution/Makefile delete mode 100644 vendor/github.com/docker/distribution/README.md delete mode 100644 vendor/github.com/docker/distribution/ROADMAP.md delete mode 100644 vendor/github.com/docker/distribution/vendor.conf delete mode 100644 vendor/github.com/docker/docker/.DEREK.yml delete mode 100644 vendor/github.com/docker/docker/.dockerignore delete mode 100644 vendor/github.com/docker/docker/.gitignore delete mode 100644 vendor/github.com/docker/docker/.mailmap delete mode 100644 vendor/github.com/docker/docker/CHANGELOG.md delete mode 100644 vendor/github.com/docker/docker/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/docker/Dockerfile delete mode 100644 vendor/github.com/docker/docker/Dockerfile.e2e delete mode 100644 vendor/github.com/docker/docker/Dockerfile.simple delete mode 100644 vendor/github.com/docker/docker/Dockerfile.windows delete mode 100644 vendor/github.com/docker/docker/Jenkinsfile delete mode 100644 vendor/github.com/docker/docker/MAINTAINERS delete mode 100644 vendor/github.com/docker/docker/Makefile delete mode 100644 vendor/github.com/docker/docker/README.md delete mode 100644 vendor/github.com/docker/docker/ROADMAP.md delete mode 100644 vendor/github.com/docker/docker/TESTING.md delete mode 100644 vendor/github.com/docker/docker/VENDORING.md create mode 100644 vendor/github.com/docker/docker/client/session.go delete mode 100644 vendor/github.com/docker/docker/codecov.yml delete mode 100644 vendor/github.com/docker/docker/pkg/README.md delete mode 100644 vendor/github.com/docker/docker/poule.yml delete mode 100644 vendor/github.com/docker/docker/vendor.conf delete mode 100644 vendor/github.com/docker/go-connections/CONTRIBUTING.md delete mode 100644 vendor/github.com/docker/go-connections/MAINTAINERS delete mode 100644 vendor/github.com/docker/go-connections/README.md delete mode 100644 vendor/github.com/docker/go-connections/circle.yml delete mode 100644 vendor/github.com/docker/libnetwork/.dockerignore delete mode 100644 vendor/github.com/docker/libnetwork/.gitignore delete mode 100644 vendor/github.com/docker/libnetwork/CHANGELOG.md delete mode 100644 vendor/github.com/docker/libnetwork/Dockerfile delete mode 100644 vendor/github.com/docker/libnetwork/MAINTAINERS delete mode 100644 vendor/github.com/docker/libnetwork/Makefile delete mode 100644 vendor/github.com/docker/libnetwork/README.md delete mode 100644 vendor/github.com/docker/libnetwork/ROADMAP.md delete mode 100644 vendor/github.com/docker/libnetwork/Vagrantfile delete mode 100644 vendor/github.com/docker/libnetwork/agent.proto delete mode 100755 vendor/github.com/docker/libnetwork/machines delete mode 100644 vendor/github.com/docker/libnetwork/vendor.conf delete mode 100644 vendor/github.com/euank/go-kmsg-parser/.gitignore delete mode 100644 vendor/github.com/euank/go-kmsg-parser/.travis.yml delete mode 100644 vendor/github.com/euank/go-kmsg-parser/Makefile delete mode 100644 vendor/github.com/euank/go-kmsg-parser/README.md delete mode 100644 vendor/github.com/globalsign/mgo/.gitignore delete mode 100644 vendor/github.com/globalsign/mgo/.travis.yml delete mode 100644 vendor/github.com/globalsign/mgo/CONTRIBUTING.md delete mode 100644 vendor/github.com/globalsign/mgo/Makefile delete mode 100644 vendor/github.com/globalsign/mgo/README.md mode change 100755 => 100644 vendor/github.com/go-openapi/validate/update-fixtures.sh delete mode 100644 vendor/github.com/gogo/googleapis/.travis.yml delete mode 100644 vendor/github.com/gogo/googleapis/Makefile delete mode 100644 vendor/github.com/gogo/googleapis/Readme.md delete mode 100755 vendor/github.com/gogo/googleapis/install-protobuf.sh delete mode 100644 vendor/github.com/gogo/protobuf/.gitignore delete mode 100644 vendor/github.com/gogo/protobuf/.mailmap delete mode 100644 vendor/github.com/gogo/protobuf/.travis.yml delete mode 100644 vendor/github.com/gogo/protobuf/GOLANG_CONTRIBUTORS delete mode 100644 vendor/github.com/gogo/protobuf/Makefile delete mode 100644 vendor/github.com/gogo/protobuf/README delete mode 100644 vendor/github.com/gogo/protobuf/Readme.md delete mode 100644 vendor/github.com/gogo/protobuf/bench.md delete mode 100644 vendor/github.com/gogo/protobuf/custom_types.md delete mode 100644 vendor/github.com/gogo/protobuf/extensions.md delete mode 100755 vendor/github.com/gogo/protobuf/install-protobuf.sh create mode 100644 vendor/github.com/gogo/protobuf/proto/custom_gogo.go delete mode 100644 vendor/github.com/gogo/protobuf/proto/decode_gogo.go create mode 100644 vendor/github.com/gogo/protobuf/proto/deprecated.go create mode 100644 vendor/github.com/gogo/protobuf/proto/table_marshal.go create mode 100644 vendor/github.com/gogo/protobuf/proto/table_marshal_gogo.go create mode 100644 vendor/github.com/gogo/protobuf/proto/table_merge.go create mode 100644 vendor/github.com/gogo/protobuf/proto/table_unmarshal.go create mode 100644 vendor/github.com/gogo/protobuf/proto/table_unmarshal_gogo.go create mode 100644 vendor/github.com/gogo/protobuf/proto/wrappers.go create mode 100644 vendor/github.com/gogo/protobuf/proto/wrappers_gogo.go delete mode 100644 vendor/github.com/gogo/protobuf/protoc-gen-gogo/Makefile delete mode 100644 vendor/github.com/gogo/protobuf/types/Makefile create mode 100644 vendor/github.com/gogo/protobuf/types/api.pb.go create mode 100644 vendor/github.com/gogo/protobuf/types/protosize.go create mode 100644 vendor/github.com/gogo/protobuf/types/source_context.pb.go create mode 100644 vendor/github.com/gogo/protobuf/types/type.pb.go create mode 100644 vendor/github.com/gogo/protobuf/types/wrappers_gogo.go delete mode 100644 vendor/github.com/golang/groupcache/.gitignore delete mode 100644 vendor/github.com/golang/groupcache/README.md delete mode 100644 vendor/github.com/golang/protobuf/.gitignore delete mode 100644 vendor/github.com/golang/protobuf/.travis.yml delete mode 100644 vendor/github.com/golang/protobuf/Makefile delete mode 100644 vendor/github.com/golang/protobuf/README.md create mode 100644 vendor/github.com/golang/protobuf/proto/deprecated.go delete mode 100755 vendor/github.com/golang/protobuf/regenerate.sh delete mode 100644 vendor/github.com/google/cadvisor/.gitignore delete mode 100644 vendor/github.com/google/cadvisor/CHANGELOG.md delete mode 100644 vendor/github.com/google/cadvisor/CONTRIBUTING.md delete mode 100644 vendor/github.com/google/cadvisor/Makefile delete mode 100644 vendor/github.com/google/cadvisor/README.md delete mode 100644 vendor/github.com/google/cadvisor/logo.png delete mode 100644 vendor/github.com/google/cadvisor/test.htdigest delete mode 100644 vendor/github.com/google/cadvisor/test.htpasswd delete mode 100644 vendor/github.com/google/go-cmp/.travis.yml delete mode 100644 vendor/github.com/google/go-cmp/CONTRIBUTING.md delete mode 100644 vendor/github.com/google/go-cmp/README.md rename vendor/github.com/google/go-cmp/cmp/{unsafe_panic.go => export_panic.go} (60%) rename vendor/github.com/google/go-cmp/cmp/{unsafe_reflect.go => export_unsafe.go} (65%) create mode 100644 vendor/github.com/google/go-cmp/cmp/internal/flags/flags.go create mode 100644 vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_legacy.go create mode 100644 vendor/github.com/google/go-cmp/cmp/internal/flags/toolchain_recent.go delete mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/format.go create mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/pointer_purego.go create mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/pointer_unsafe.go create mode 100644 vendor/github.com/google/go-cmp/cmp/internal/value/zero.go create mode 100644 vendor/github.com/google/go-cmp/cmp/report.go create mode 100644 vendor/github.com/google/go-cmp/cmp/report_compare.go create mode 100644 vendor/github.com/google/go-cmp/cmp/report_reflect.go create mode 100644 vendor/github.com/google/go-cmp/cmp/report_slices.go create mode 100644 vendor/github.com/google/go-cmp/cmp/report_text.go create mode 100644 vendor/github.com/google/go-cmp/cmp/report_value.go delete mode 100644 vendor/github.com/google/go-cmp/cmp/reporter.go create mode 100644 vendor/github.com/google/gofuzz/go.mod delete mode 100644 vendor/github.com/googleapis/gnostic/.gitignore delete mode 100755 vendor/github.com/googleapis/gnostic/.travis-install.sh delete mode 100644 vendor/github.com/googleapis/gnostic/.travis.yml delete mode 100755 vendor/github.com/googleapis/gnostic/COMPILE-PROTOS.sh delete mode 100644 vendor/github.com/googleapis/gnostic/CONTRIBUTING.md delete mode 100644 vendor/github.com/googleapis/gnostic/Makefile delete mode 100644 vendor/github.com/googleapis/gnostic/README.md mode change 100755 => 100644 vendor/github.com/googleapis/gnostic/extensions/COMPILE-EXTENSION.sh delete mode 100644 vendor/github.com/gorilla/context/.travis.yml delete mode 100644 vendor/github.com/gorilla/context/LICENSE delete mode 100644 vendor/github.com/gorilla/context/README.md delete mode 100644 vendor/github.com/gorilla/context/context.go delete mode 100644 vendor/github.com/gorilla/context/doc.go delete mode 100644 vendor/github.com/gorilla/mux/.travis.yml create mode 100644 vendor/github.com/gorilla/mux/AUTHORS delete mode 100644 vendor/github.com/gorilla/mux/ISSUE_TEMPLATE.md rename vendor/github.com/gorilla/mux/{context_native.go => context.go} (82%) delete mode 100644 vendor/github.com/gorilla/mux/context_gorilla.go create mode 100644 vendor/github.com/gorilla/mux/go.mod delete mode 100644 vendor/github.com/gorilla/websocket/conn_read_legacy.go rename vendor/github.com/gorilla/websocket/{conn_read.go => conn_write.go} (52%) create mode 100644 vendor/github.com/gorilla/websocket/conn_write_legacy.go create mode 100644 vendor/github.com/gorilla/websocket/proxy.go create mode 100644 vendor/github.com/gorilla/websocket/trace.go create mode 100644 vendor/github.com/gorilla/websocket/trace_17.go create mode 100644 vendor/github.com/gorilla/websocket/x_net_proxy.go create mode 100644 vendor/github.com/grpc-ecosystem/go-grpc-prometheus/test_all.sh create mode 100644 vendor/github.com/j-keck/arping/go.mod mode change 100755 => 100644 vendor/github.com/json-iterator/go/build.sh mode change 100755 => 100644 vendor/github.com/json-iterator/go/test.sh rename vendor/{vbom.ml/util => github.com/juju/errors}/.gitignore (97%) create mode 100644 vendor/github.com/juju/errors/LICENSE create mode 100644 vendor/github.com/juju/errors/Makefile create mode 100644 vendor/github.com/juju/errors/README.md create mode 100644 vendor/github.com/juju/errors/dependencies.tsv create mode 100644 vendor/github.com/juju/errors/doc.go create mode 100644 vendor/github.com/juju/errors/error.go create mode 100644 vendor/github.com/juju/errors/errortypes.go create mode 100644 vendor/github.com/juju/errors/functions.go create mode 100644 vendor/github.com/juju/errors/path.go create mode 100644 vendor/github.com/konsorten/go-windows-terminal-sequences/sequences_dummy.go delete mode 100644 vendor/github.com/kr/fs/LICENSE delete mode 100644 vendor/github.com/kr/fs/Readme delete mode 100644 vendor/github.com/kr/fs/filesystem.go delete mode 100644 vendor/github.com/kr/fs/walk.go delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/.gitignore delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/.travis.yml delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/CHANGELOG.md delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/CONTRIBUTING.md delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/Makefile delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/OWNERS delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/README.md delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/RELEASE.md delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/SECURITY_CONTACTS delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/code-of-conduct.md delete mode 100644 vendor/github.com/kubernetes-sigs/cri-tools/vendor.conf mode change 100755 => 100644 vendor/github.com/lib/pq/.travis.sh delete mode 100644 vendor/github.com/mailru/easyjson/.gitignore delete mode 100644 vendor/github.com/mailru/easyjson/.travis.yml delete mode 100644 vendor/github.com/mailru/easyjson/Makefile delete mode 100644 vendor/github.com/mailru/easyjson/README.md delete mode 100644 vendor/github.com/matryer/moq/.gitignore delete mode 100644 vendor/github.com/matryer/moq/.travis.yml delete mode 100644 vendor/github.com/matryer/moq/README.md delete mode 100644 vendor/github.com/matryer/moq/moq-logo-small.png delete mode 100644 vendor/github.com/matryer/moq/moq-logo.png delete mode 100644 vendor/github.com/matryer/moq/preview.png delete mode 100644 vendor/github.com/matttproud/golang_protobuf_extensions/.travis.yml delete mode 100644 vendor/github.com/matttproud/golang_protobuf_extensions/README.md create mode 100644 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/.gitignore create mode 100644 vendor/github.com/matttproud/golang_protobuf_extensions/pbutil/Makefile create mode 100644 vendor/github.com/mindprince/gonvml/.travis.gofmt.sh create mode 100644 vendor/github.com/mindprince/gonvml/.travis.yml create mode 100644 vendor/github.com/mindprince/gonvml/bindings_nocgo.go mode change 100755 => 100644 vendor/github.com/modern-go/concurrent/test.sh mode change 100755 => 100644 vendor/github.com/modern-go/reflect2/test.sh delete mode 100644 vendor/github.com/mxk/go-flowrate/README delete mode 100644 vendor/github.com/opencontainers/image-spec/.gitignore delete mode 100644 vendor/github.com/opencontainers/image-spec/.header delete mode 100644 vendor/github.com/opencontainers/image-spec/.pullapprove.yml delete mode 100644 vendor/github.com/opencontainers/image-spec/.travis.yml delete mode 100644 vendor/github.com/opencontainers/image-spec/GOVERNANCE.md delete mode 100644 vendor/github.com/opencontainers/image-spec/HACKING.md delete mode 100644 vendor/github.com/opencontainers/image-spec/MAINTAINERS delete mode 100644 vendor/github.com/opencontainers/image-spec/Makefile delete mode 100644 vendor/github.com/opencontainers/image-spec/README.md delete mode 100644 vendor/github.com/opencontainers/image-spec/RELEASES.md delete mode 100644 vendor/github.com/opencontainers/image-spec/annotations.md delete mode 100644 vendor/github.com/opencontainers/image-spec/config.md delete mode 100644 vendor/github.com/opencontainers/image-spec/considerations.md delete mode 100644 vendor/github.com/opencontainers/image-spec/conversion.md delete mode 100644 vendor/github.com/opencontainers/image-spec/descriptor.md delete mode 100644 vendor/github.com/opencontainers/image-spec/image-index.md delete mode 100644 vendor/github.com/opencontainers/image-spec/image-layout.md delete mode 100644 vendor/github.com/opencontainers/image-spec/implementations.md delete mode 100644 vendor/github.com/opencontainers/image-spec/layer.md delete mode 100644 vendor/github.com/opencontainers/image-spec/manifest.md delete mode 100644 vendor/github.com/opencontainers/image-spec/media-types.md delete mode 100644 vendor/github.com/opencontainers/image-spec/project.md delete mode 100644 vendor/github.com/opencontainers/image-spec/spec.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/.gitattributes delete mode 100644 vendor/github.com/opencontainers/runtime-spec/.gitignore delete mode 100644 vendor/github.com/opencontainers/runtime-spec/.mailmap delete mode 100644 vendor/github.com/opencontainers/runtime-spec/.pullapprove.yml delete mode 100644 vendor/github.com/opencontainers/runtime-spec/.travis.yml delete mode 100644 vendor/github.com/opencontainers/runtime-spec/ChangeLog delete mode 100644 vendor/github.com/opencontainers/runtime-spec/GOVERNANCE.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/MAINTAINERS delete mode 100644 vendor/github.com/opencontainers/runtime-spec/Makefile delete mode 100644 vendor/github.com/opencontainers/runtime-spec/README.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/RELEASES.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/bundle.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/config-linux.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/config-solaris.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/config-vm.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/config-windows.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/config.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/glossary.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/implementations.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/meeting.ics delete mode 100644 vendor/github.com/opencontainers/runtime-spec/principles.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/project.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/runtime-linux.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/runtime.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/spec.md delete mode 100644 vendor/github.com/opencontainers/runtime-spec/style.md delete mode 100644 vendor/github.com/opencontainers/runtime-tools/.gitignore delete mode 100644 vendor/github.com/opencontainers/runtime-tools/.mailmap delete mode 100644 vendor/github.com/opencontainers/runtime-tools/.pullapprove.yml delete mode 100644 vendor/github.com/opencontainers/runtime-tools/.travis.yml delete mode 100644 vendor/github.com/opencontainers/runtime-tools/CHANGELOG.md delete mode 100644 vendor/github.com/opencontainers/runtime-tools/CONTRIBUTING.md delete mode 100644 vendor/github.com/opencontainers/runtime-tools/MAINTAINERS delete mode 100644 vendor/github.com/opencontainers/runtime-tools/MAINTAINERS_GUIDE.md delete mode 100644 vendor/github.com/opencontainers/runtime-tools/Makefile delete mode 100644 vendor/github.com/opencontainers/runtime-tools/README.md delete mode 100644 vendor/github.com/opencontainers/runtime-tools/VERSION delete mode 100644 vendor/github.com/opencontainers/runtime-tools/rootfs-386.tar.gz delete mode 100644 vendor/github.com/opencontainers/runtime-tools/rootfs-amd64.tar.gz delete mode 100644 vendor/github.com/opencontainers/selinux/.pullapprove.yml delete mode 100644 vendor/github.com/opencontainers/selinux/.travis.yml delete mode 100644 vendor/github.com/opencontainers/selinux/CONTRIBUTING.md delete mode 100644 vendor/github.com/opencontainers/selinux/MAINTAINERS delete mode 100644 vendor/github.com/opencontainers/selinux/Makefile delete mode 100644 vendor/github.com/opencontainers/selinux/README.md delete mode 100644 vendor/github.com/opencontainers/selinux/VERSION create mode 100644 vendor/github.com/pborman/uuid/go.mod create mode 100644 vendor/github.com/pborman/uuid/go.sum delete mode 100644 vendor/github.com/pborman/uuid/node_js.go delete mode 100644 vendor/github.com/pborman/uuid/node_net.go 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/CONTRIBUTORS delete mode 100644 vendor/github.com/pkg/sftp/LICENSE delete mode 100644 vendor/github.com/pkg/sftp/README.md delete mode 100644 vendor/github.com/pkg/sftp/attrs.go delete mode 100644 vendor/github.com/pkg/sftp/attrs_stubs.go delete mode 100644 vendor/github.com/pkg/sftp/attrs_unix.go delete mode 100644 vendor/github.com/pkg/sftp/client.go delete mode 100644 vendor/github.com/pkg/sftp/conn.go delete mode 100644 vendor/github.com/pkg/sftp/debug.go delete mode 100644 vendor/github.com/pkg/sftp/packet.go delete mode 100644 vendor/github.com/pkg/sftp/release.go delete mode 100644 vendor/github.com/pkg/sftp/server.go delete mode 100644 vendor/github.com/pkg/sftp/server_statvfs_darwin.go delete mode 100644 vendor/github.com/pkg/sftp/server_statvfs_impl.go delete mode 100644 vendor/github.com/pkg/sftp/server_statvfs_linux.go delete mode 100644 vendor/github.com/pkg/sftp/server_statvfs_stubs.go delete mode 100644 vendor/github.com/pkg/sftp/server_stubs.go delete mode 100644 vendor/github.com/pkg/sftp/server_unix.go delete mode 100644 vendor/github.com/pkg/sftp/sftp.go delete mode 100644 vendor/github.com/prometheus/client_golang/.gitignore delete mode 100644 vendor/github.com/prometheus/client_golang/.travis.yml delete mode 100644 vendor/github.com/prometheus/client_golang/CHANGELOG.md delete mode 100644 vendor/github.com/prometheus/client_golang/CONTRIBUTING.md delete mode 100644 vendor/github.com/prometheus/client_golang/Dockerfile delete mode 100644 vendor/github.com/prometheus/client_golang/MAINTAINERS.md delete mode 100644 vendor/github.com/prometheus/client_golang/Makefile delete mode 100644 vendor/github.com/prometheus/client_golang/Makefile.common delete mode 100644 vendor/github.com/prometheus/client_golang/README.md delete mode 100644 vendor/github.com/prometheus/client_golang/VERSION delete mode 100644 vendor/github.com/prometheus/client_golang/go.mod delete mode 100644 vendor/github.com/prometheus/client_golang/go.sum delete mode 100644 vendor/github.com/prometheus/client_model/.gitignore delete mode 100644 vendor/github.com/prometheus/client_model/CONTRIBUTING.md delete mode 100644 vendor/github.com/prometheus/client_model/MAINTAINERS.md delete mode 100644 vendor/github.com/prometheus/client_model/Makefile delete mode 100644 vendor/github.com/prometheus/client_model/README.md delete mode 100644 vendor/github.com/prometheus/client_model/metrics.proto delete mode 100644 vendor/github.com/prometheus/client_model/pom.xml delete mode 100644 vendor/github.com/prometheus/client_model/setup.py delete mode 100644 vendor/github.com/prometheus/common/.travis.yml delete mode 100644 vendor/github.com/prometheus/common/CONTRIBUTING.md delete mode 100644 vendor/github.com/prometheus/common/MAINTAINERS.md delete mode 100644 vendor/github.com/prometheus/common/README.md mode change 100755 => 100644 vendor/github.com/prometheus/procfs/ttar create mode 100644 vendor/github.com/rakelkar/gonetsh/LICENSE create mode 100644 vendor/github.com/rakelkar/gonetsh/netroute/netroute.go create mode 100644 vendor/github.com/rakelkar/gonetsh/netsh/netsh.go delete mode 100644 vendor/github.com/rancher/helm-controller/.dockerignore delete mode 100644 vendor/github.com/rancher/helm-controller/.drone.yml delete mode 100644 vendor/github.com/rancher/helm-controller/.gitignore delete mode 100644 vendor/github.com/rancher/helm-controller/Dockerfile.dapper delete mode 100644 vendor/github.com/rancher/helm-controller/Dockerfile.dapper479579668 delete mode 100644 vendor/github.com/rancher/helm-controller/Makefile delete mode 100644 vendor/github.com/rancher/helm-controller/README.md delete mode 100644 vendor/github.com/rancher/helm-controller/go.mod delete mode 100644 vendor/github.com/rancher/helm-controller/go.sum delete mode 100644 vendor/github.com/rancher/helm-controller/vendor.conf delete mode 100644 vendor/github.com/rancher/kine/go.mod delete mode 100644 vendor/github.com/rancher/kine/go.sum delete mode 100644 vendor/github.com/rancher/wrangler-api/.dockerignore delete mode 100644 vendor/github.com/rancher/wrangler-api/.drone.yml delete mode 100644 vendor/github.com/rancher/wrangler-api/.gitignore delete mode 100644 vendor/github.com/rancher/wrangler-api/.golangci.json delete mode 100644 vendor/github.com/rancher/wrangler-api/Dockerfile.dapper delete mode 100644 vendor/github.com/rancher/wrangler-api/Makefile delete mode 100644 vendor/github.com/rancher/wrangler-api/README.md delete mode 100644 vendor/github.com/rancher/wrangler-api/go.mod delete mode 100644 vendor/github.com/rancher/wrangler-api/go.sum delete mode 100644 vendor/github.com/rancher/wrangler/README.md delete mode 100644 vendor/github.com/rancher/wrangler/go.mod delete mode 100644 vendor/github.com/rancher/wrangler/go.sum delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/.gitignore delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/.travis.yml delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/Gopkg.lock delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/Gopkg.toml delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/Makefile delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/README.md delete mode 100644 vendor/github.com/rootless-containers/rootlesskit/pkg/api/openapi.yaml rename vendor/github.com/sirupsen/logrus/{terminal_check_js.go => terminal_check_no_terminal.go} (79%) create mode 100644 vendor/github.com/sirupsen/logrus/terminal_check_solaris.go delete mode 100644 vendor/github.com/sirupsen/logrus/terminal_notwindows.go delete mode 100644 vendor/github.com/sirupsen/logrus/terminal_windows.go create mode 100644 vendor/github.com/spf13/afero/go.mod create mode 100644 vendor/github.com/spf13/afero/go.sum rename vendor/github.com/spf13/afero/{memradix.go => lstater.go} (54%) create mode 100644 vendor/github.com/spf13/afero/match.go delete mode 100644 vendor/github.com/spf13/afero/sftp.go delete mode 100644 vendor/github.com/spf13/afero/sftp/file.go delete mode 100644 vendor/github.com/spf13/afero/sftp_test_go delete mode 100644 vendor/github.com/tchap/go-patricia/.gitignore delete mode 100644 vendor/github.com/tchap/go-patricia/README.md mode change 100755 => 100644 vendor/github.com/urfave/cli/generate-flag-types create mode 100644 vendor/github.com/urfave/cli/go.mod create mode 100644 vendor/github.com/urfave/cli/go.sum mode change 100755 => 100644 vendor/github.com/urfave/cli/runtests delete mode 100644 vendor/golang.org/x/crypto/.gitattributes delete mode 100644 vendor/golang.org/x/crypto/.gitignore delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/crypto/README.md delete mode 100644 vendor/golang.org/x/crypto/codereview.cfg create mode 100644 vendor/golang.org/x/crypto/internal/chacha20/asm_arm64.s create mode 100644 vendor/golang.org/x/crypto/internal/chacha20/chacha_arm64.go rename vendor/golang.org/x/crypto/internal/chacha20/{asm_s390x.s => chacha_s390x.s} (91%) create mode 100644 vendor/golang.org/x/crypto/poly1305/mac_noasm.go rename vendor/golang.org/x/crypto/poly1305/{sum_ref.go => sum_generic.go} (54%) rename vendor/golang.org/x/crypto/salsa20/salsa/{salsa2020_amd64.s => salsa20_amd64.s} (99%) create mode 100644 vendor/golang.org/x/crypto/salsa20/salsa/salsa20_noasm.go create mode 100644 vendor/golang.org/x/crypto/ssh/terminal/util_aix.go delete mode 100644 vendor/golang.org/x/net/.gitattributes delete mode 100644 vendor/golang.org/x/net/.gitignore delete mode 100644 vendor/golang.org/x/net/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/net/README.md delete mode 100644 vendor/golang.org/x/net/codereview.cfg delete mode 100644 vendor/golang.org/x/oauth2/client_appengine.go create mode 100644 vendor/golang.org/x/oauth2/go.mod create mode 100644 vendor/golang.org/x/oauth2/go.sum create mode 100644 vendor/golang.org/x/oauth2/google/appengine_gen1.go create mode 100644 vendor/golang.org/x/oauth2/google/appengine_gen2_flex.go delete mode 100644 vendor/golang.org/x/oauth2/google/appengine_hook.go delete mode 100644 vendor/golang.org/x/oauth2/google/appengineflex_hook.go create mode 100644 vendor/golang.org/x/oauth2/google/doc.go create mode 100644 vendor/golang.org/x/oauth2/internal/client_appengine.go create mode 100644 vendor/golang.org/x/oauth2/internal/doc.go delete mode 100644 vendor/golang.org/x/sync/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/sync/README delete mode 100644 vendor/golang.org/x/sync/codereview.cfg delete mode 100644 vendor/golang.org/x/sys/.gitattributes delete mode 100644 vendor/golang.org/x/sys/.gitignore delete mode 100644 vendor/golang.org/x/sys/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/sys/README.md delete mode 100644 vendor/golang.org/x/sys/codereview.cfg create mode 100644 vendor/golang.org/x/sys/cpu/cpu.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_arm64.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gc_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.c create mode 100644 vendor/golang.org/x/sys/cpu/cpu_gccgo.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_linux.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_mips64x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_mipsx.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_ppc64x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_s390x.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.go create mode 100644 vendor/golang.org/x/sys/cpu/cpu_x86.s mode change 100755 => 100644 vendor/golang.org/x/sys/unix/mkall.sh mode change 100755 => 100644 vendor/golang.org/x/sys/unix/mkerrors.sh mode change 100755 => 100644 vendor/golang.org/x/sys/unix/mksyscall_solaris.pl mode change 100755 => 100644 vendor/golang.org/x/sys/unix/mksysctl_openbsd.pl delete mode 100644 vendor/golang.org/x/text/.gitattributes delete mode 100644 vendor/golang.org/x/text/.gitignore delete mode 100644 vendor/golang.org/x/text/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/text/README delete mode 100644 vendor/golang.org/x/text/codereview.cfg delete mode 100644 vendor/golang.org/x/text/internal/gen/code.go delete mode 100644 vendor/golang.org/x/text/internal/gen/gen.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/compact.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/print.go delete mode 100644 vendor/golang.org/x/text/internal/triegen/triegen.go delete mode 100644 vendor/golang.org/x/text/internal/ucd/ucd.go create mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go create mode 100644 vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go rename vendor/golang.org/x/text/unicode/bidi/{tables.go => tables9.0.0.go} (99%) delete mode 100644 vendor/golang.org/x/text/unicode/cldr/base.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/cldr.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/collate.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/decode.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/makexml.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/resolve.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/slice.go delete mode 100644 vendor/golang.org/x/text/unicode/cldr/xml.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables10.0.0.go create mode 100644 vendor/golang.org/x/text/unicode/norm/tables11.0.0.go rename vendor/golang.org/x/text/unicode/norm/{tables.go => tables9.0.0.go} (85%) delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/gen.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/merge.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/rangetable.go delete mode 100644 vendor/golang.org/x/text/unicode/rangetable/tables.go create mode 100644 vendor/golang.org/x/text/width/tables10.0.0.go create mode 100644 vendor/golang.org/x/text/width/tables11.0.0.go rename vendor/golang.org/x/text/width/{tables.go => tables9.0.0.go} (99%) delete mode 100644 vendor/golang.org/x/time/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/time/README delete mode 100644 vendor/golang.org/x/tools/.gitattributes delete mode 100644 vendor/golang.org/x/tools/.gitignore delete mode 100644 vendor/golang.org/x/tools/CONTRIBUTING.md delete mode 100644 vendor/golang.org/x/tools/README.md delete mode 100644 vendor/golang.org/x/tools/codereview.cfg delete mode 100644 vendor/golang.org/x/tools/go/internal/cgo/cgo.go delete mode 100644 vendor/golang.org/x/tools/go/internal/cgo/cgo_pkgconfig.go delete mode 100644 vendor/golang.org/x/tools/go/packages/golist_fallback.go delete mode 100644 vendor/golang.org/x/tools/go/packages/golist_fallback_testmain.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/callee.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/imports.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/map.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/methodsetcache.go delete mode 100644 vendor/golang.org/x/tools/go/types/typeutil/ui.go delete mode 100644 vendor/gonum.org/v1/gonum/.travis.yml delete mode 100644 vendor/gonum.org/v1/gonum/CONDUCT.md delete mode 100644 vendor/gonum.org/v1/gonum/CONTRIBUTING.md delete mode 100644 vendor/gonum.org/v1/gonum/GOPHER delete mode 100644 vendor/gonum.org/v1/gonum/README.md delete mode 100644 vendor/gonum.org/v1/gonum/appveyor.yml mode change 100755 => 100644 vendor/gonum.org/v1/gonum/blas/conversions.bash mode change 100755 => 100644 vendor/gonum.org/v1/gonum/blas/gonum/single_precision.bash delete mode 100644 vendor/gonum.org/v1/gonum/go.mod delete mode 100644 vendor/gonum.org/v1/gonum/go.sum delete mode 100644 vendor/gonum.org/v1/gonum/gopher.png delete mode 100644 vendor/gonum.org/v1/gonum/graph/formats/dot/internal/Makefile delete mode 100644 vendor/gonum.org/v1/gonum/graph/formats/dot/internal/dot.bnf mode change 100755 => 100644 vendor/gonum.org/v1/gonum/graph/formats/dot/makeinternal.bash delete mode 100644 vendor/gonum.org/v1/gonum/internal/README.md delete mode 100755 vendor/gonum.org/v1/gonum/internal/asm/bench_gen.sh delete mode 100644 vendor/google.golang.org/api/.gitignore delete mode 100644 vendor/google.golang.org/api/.hgtags delete mode 100644 vendor/google.golang.org/api/CONTRIBUTING.md delete mode 100644 vendor/google.golang.org/api/GettingStarted.md delete mode 100644 vendor/google.golang.org/api/NOTES delete mode 100644 vendor/google.golang.org/api/README.md delete mode 100644 vendor/google.golang.org/api/TODO delete mode 100644 vendor/google.golang.org/api/api-list.json delete mode 100644 vendor/google.golang.org/api/key.json.enc mode change 100755 => 100644 vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto mode change 100755 => 100644 vendor/google.golang.org/appengine/internal/regen.sh mode change 100755 => 100644 vendor/google.golang.org/appengine/travis_install.sh mode change 100755 => 100644 vendor/google.golang.org/appengine/travis_test.sh delete mode 100644 vendor/google.golang.org/genproto/.travis.yml delete mode 100644 vendor/google.golang.org/genproto/CONTRIBUTING.md delete mode 100644 vendor/google.golang.org/genproto/README.md delete mode 100755 vendor/google.golang.org/genproto/regen.sh create mode 100644 vendor/google.golang.org/grpc/binarylog/grpc_binarylog_v1/binarylog.pb.go mode change 100755 => 100644 vendor/google.golang.org/grpc/codegen.sh delete mode 100644 vendor/google.golang.org/grpc/credentials/credentials_util_go17.go delete mode 100644 vendor/google.golang.org/grpc/credentials/credentials_util_pre_go17.go create mode 100644 vendor/google.golang.org/grpc/credentials/internal/syscallconn.go rename vendor/google.golang.org/grpc/{resolver/dns/go18.go => credentials/internal/syscallconn_appengine.go} (73%) rename vendor/google.golang.org/grpc/credentials/{credentials_util_go18.go => tls13.go} (59%) create mode 100644 vendor/google.golang.org/grpc/dialoptions.go create mode 100644 vendor/google.golang.org/grpc/go.mod create mode 100644 vendor/google.golang.org/grpc/go.sum delete mode 100644 vendor/google.golang.org/grpc/go16.go delete mode 100644 vendor/google.golang.org/grpc/go17.go delete mode 100644 vendor/google.golang.org/grpc/grpclb.go delete mode 100644 vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.pb.go delete mode 100644 vendor/google.golang.org/grpc/grpclb/grpc_lb_v1/messages/messages.proto delete mode 100644 vendor/google.golang.org/grpc/grpclb_picker.go delete mode 100644 vendor/google.golang.org/grpc/grpclb_remote_balancer.go delete mode 100644 vendor/google.golang.org/grpc/grpclb_util.go create mode 100644 vendor/google.golang.org/grpc/health/client.go delete mode 100644 vendor/google.golang.org/grpc/health/grpc_health_v1/health.proto delete mode 100644 vendor/google.golang.org/grpc/health/health.go create mode 100644 vendor/google.golang.org/grpc/health/regenerate.sh create mode 100644 vendor/google.golang.org/grpc/health/server.go create mode 100644 vendor/google.golang.org/grpc/install_gae.sh create mode 100644 vendor/google.golang.org/grpc/internal/backoff/backoff.go create mode 100644 vendor/google.golang.org/grpc/internal/balancerload/load.go create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/binarylog.go create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/binarylog_testutil.go create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/env_config.go create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/method_logger.go create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/regenerate.sh create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/sink.go create mode 100644 vendor/google.golang.org/grpc/internal/binarylog/util.go rename vendor/google.golang.org/grpc/{ => internal}/channelz/funcs.go (70%) rename vendor/google.golang.org/grpc/{ => internal}/channelz/types.go (59%) create mode 100644 vendor/google.golang.org/grpc/internal/channelz/types_linux.go create mode 100644 vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go rename vendor/google.golang.org/grpc/{naming/go17.go => internal/channelz/util_linux.go} (59%) rename vendor/google.golang.org/grpc/{envconfig.go => internal/channelz/util_nonlinux.go} (68%) create mode 100644 vendor/google.golang.org/grpc/internal/envconfig/envconfig.go create mode 100644 vendor/google.golang.org/grpc/internal/grpcrand/grpcrand.go create mode 100644 vendor/google.golang.org/grpc/internal/grpcsync/event.go create mode 100644 vendor/google.golang.org/grpc/internal/syscall/syscall_linux.go create mode 100644 vendor/google.golang.org/grpc/internal/syscall/syscall_nonlinux.go rename vendor/google.golang.org/grpc/{ => internal}/transport/bdp_estimator.go (94%) rename vendor/google.golang.org/grpc/{ => internal}/transport/controlbuf.go (72%) create mode 100644 vendor/google.golang.org/grpc/internal/transport/defaults.go rename vendor/google.golang.org/grpc/{ => internal}/transport/flowcontrol.go (84%) rename vendor/google.golang.org/grpc/{ => internal}/transport/handler_server.go (90%) rename vendor/google.golang.org/grpc/{ => internal}/transport/http2_client.go (78%) rename vendor/google.golang.org/grpc/{ => internal}/transport/http2_server.go (76%) rename vendor/google.golang.org/grpc/{ => internal}/transport/http_util.go (65%) rename vendor/google.golang.org/grpc/{ => internal}/transport/log.go (90%) rename vendor/google.golang.org/grpc/{ => internal}/transport/transport.go (76%) delete mode 100644 vendor/google.golang.org/grpc/resolver/dns/go17.go delete mode 100644 vendor/google.golang.org/grpc/transport/go16.go delete mode 100644 vendor/google.golang.org/grpc/transport/go17.go rename vendor/google.golang.org/grpc/{naming/go18.go => version.go} (76%) mode change 100755 => 100644 vendor/google.golang.org/grpc/vet.sh delete mode 100644 vendor/k8s.io/api/BUILD delete mode 100644 vendor/k8s.io/api/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/api/OWNERS delete mode 100644 vendor/k8s.io/api/README.md delete mode 100644 vendor/k8s.io/api/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/api/apps/OWNERS delete mode 100644 vendor/k8s.io/api/auditregistration/OWNERS delete mode 100644 vendor/k8s.io/api/authentication/OWNERS delete mode 100644 vendor/k8s.io/api/authorization/OWNERS delete mode 100644 vendor/k8s.io/api/autoscaling/OWNERS delete mode 100644 vendor/k8s.io/api/batch/OWNERS delete mode 100644 vendor/k8s.io/api/certificates/OWNERS delete mode 100644 vendor/k8s.io/api/code-of-conduct.md delete mode 100644 vendor/k8s.io/api/events/OWNERS delete mode 100644 vendor/k8s.io/api/extensions/OWNERS delete mode 100644 vendor/k8s.io/api/go.mod delete mode 100644 vendor/k8s.io/api/go.sum delete mode 100644 vendor/k8s.io/api/imagepolicy/OWNERS delete mode 100644 vendor/k8s.io/api/networking/OWNERS delete mode 100644 vendor/k8s.io/api/node/OWNERS delete mode 100644 vendor/k8s.io/api/policy/OWNERS delete mode 100644 vendor/k8s.io/api/rbac/OWNERS delete mode 100644 vendor/k8s.io/api/storage/OWNERS delete mode 100644 vendor/k8s.io/apiextensions-apiserver/BUILD delete mode 100644 vendor/k8s.io/apiextensions-apiserver/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/apiextensions-apiserver/OWNERS delete mode 100644 vendor/k8s.io/apiextensions-apiserver/README.md delete mode 100644 vendor/k8s.io/apiextensions-apiserver/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/apiextensions-apiserver/code-of-conduct.md delete mode 100644 vendor/k8s.io/apiextensions-apiserver/go.mod delete mode 100644 vendor/k8s.io/apiextensions-apiserver/go.sum delete mode 100644 vendor/k8s.io/apiextensions-apiserver/pkg/apis/OWNERS delete mode 100644 vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/BUILD delete mode 100644 vendor/k8s.io/apimachinery/BUILD delete mode 100644 vendor/k8s.io/apimachinery/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/apimachinery/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/README.md delete mode 100644 vendor/k8s.io/apimachinery/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/apimachinery/code-of-conduct.md delete mode 100644 vendor/k8s.io/apimachinery/go.mod delete mode 100644 vendor/k8s.io/apimachinery/go.sum delete mode 100644 vendor/k8s.io/apimachinery/pkg/OWNERS delete mode 100644 vendor/k8s.io/apimachinery/pkg/apis/OWNERS delete mode 100644 vendor/k8s.io/apiserver/.import-restrictions delete mode 100644 vendor/k8s.io/apiserver/BUILD delete mode 100644 vendor/k8s.io/apiserver/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/apiserver/OWNERS delete mode 100644 vendor/k8s.io/apiserver/README.md delete mode 100644 vendor/k8s.io/apiserver/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/apiserver/code-of-conduct.md delete mode 100644 vendor/k8s.io/apiserver/go.mod delete mode 100644 vendor/k8s.io/apiserver/go.sum delete mode 100644 vendor/k8s.io/apiserver/pkg/apis/OWNERS delete mode 100644 vendor/k8s.io/apiserver/pkg/authentication/OWNERS delete mode 100644 vendor/k8s.io/apiserver/pkg/authorization/OWNERS mode change 100755 => 100644 vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/status.go delete mode 100644 vendor/k8s.io/apiserver/pkg/registry/BUILD delete mode 100644 vendor/k8s.io/apiserver/pkg/storage/value/encrypt/OWNERS mode change 100755 => 100644 vendor/k8s.io/apiserver/pkg/util/webhook/gencerts.sh mode change 100755 => 100644 vendor/k8s.io/apiserver/pkg/util/webhook/webhook.go delete mode 100644 vendor/k8s.io/apiserver/plugin/pkg/audit/BUILD delete mode 100644 vendor/k8s.io/apiserver/plugin/pkg/audit/OWNERS delete mode 100644 vendor/k8s.io/apiserver/plugin/pkg/authenticator/BUILD delete mode 100644 vendor/k8s.io/apiserver/plugin/pkg/authenticator/OWNERS delete mode 100644 vendor/k8s.io/apiserver/plugin/pkg/authenticator/password/BUILD delete mode 100644 vendor/k8s.io/apiserver/plugin/pkg/authorizer/OWNERS mode change 100755 => 100644 vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/gencerts.sh delete mode 100644 vendor/k8s.io/cli-runtime/BUILD delete mode 100644 vendor/k8s.io/cli-runtime/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/cli-runtime/OWNERS delete mode 100644 vendor/k8s.io/cli-runtime/README.md delete mode 100644 vendor/k8s.io/cli-runtime/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/cli-runtime/code-of-conduct.md delete mode 100644 vendor/k8s.io/cli-runtime/go.mod delete mode 100644 vendor/k8s.io/cli-runtime/go.sum delete mode 100644 vendor/k8s.io/client-go/BUILD delete mode 100644 vendor/k8s.io/client-go/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/client-go/INSTALL.md delete mode 100644 vendor/k8s.io/client-go/OWNERS delete mode 100644 vendor/k8s.io/client-go/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/client-go/code-of-conduct.md delete mode 100644 vendor/k8s.io/client-go/go.mod delete mode 100644 vendor/k8s.io/client-go/go.sum delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authentication/OWNERS delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/authorization/OWNERS delete mode 100644 vendor/k8s.io/client-go/kubernetes/typed/rbac/OWNERS delete mode 100644 vendor/k8s.io/client-go/listers/rbac/OWNERS delete mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/BUILD delete mode 100644 vendor/k8s.io/client-go/plugin/pkg/client/auth/OWNERS mode change 100755 => 100644 vendor/k8s.io/client-go/tools/cache/store.go delete mode 100644 vendor/k8s.io/cluster-bootstrap/BUILD delete mode 100644 vendor/k8s.io/cluster-bootstrap/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/cluster-bootstrap/OWNERS delete mode 100644 vendor/k8s.io/cluster-bootstrap/README.md delete mode 100644 vendor/k8s.io/cluster-bootstrap/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/cluster-bootstrap/code-of-conduct.md delete mode 100644 vendor/k8s.io/cluster-bootstrap/go.mod delete mode 100644 vendor/k8s.io/cluster-bootstrap/go.sum delete mode 100644 vendor/k8s.io/cluster-bootstrap/token/OWNERS delete mode 100644 vendor/k8s.io/code-generator/BUILD delete mode 100644 vendor/k8s.io/code-generator/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/code-generator/OWNERS delete mode 100644 vendor/k8s.io/code-generator/README.md delete mode 100644 vendor/k8s.io/code-generator/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/code-generator/cmd/client-gen/BUILD delete mode 100644 vendor/k8s.io/code-generator/cmd/client-gen/OWNERS delete mode 100644 vendor/k8s.io/code-generator/cmd/client-gen/README.md delete mode 100644 vendor/k8s.io/code-generator/cmd/deepcopy-gen/BUILD delete mode 100644 vendor/k8s.io/code-generator/cmd/informer-gen/BUILD delete mode 100644 vendor/k8s.io/code-generator/cmd/lister-gen/.import-restrictions delete mode 100644 vendor/k8s.io/code-generator/cmd/lister-gen/BUILD delete mode 100644 vendor/k8s.io/code-generator/code-of-conduct.md delete mode 100755 vendor/k8s.io/code-generator/generate-groups.sh delete mode 100755 vendor/k8s.io/code-generator/generate-internal-groups.sh delete mode 100644 vendor/k8s.io/code-generator/go.mod delete mode 100644 vendor/k8s.io/code-generator/go.sum delete mode 100644 vendor/k8s.io/component-base/BUILD delete mode 100644 vendor/k8s.io/component-base/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/component-base/OWNERS delete mode 100644 vendor/k8s.io/component-base/README.md delete mode 100644 vendor/k8s.io/component-base/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/component-base/code-of-conduct.md delete mode 100644 vendor/k8s.io/component-base/go.mod delete mode 100644 vendor/k8s.io/component-base/go.sum delete mode 100644 vendor/k8s.io/cri-api/BUILD delete mode 100644 vendor/k8s.io/cri-api/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/cri-api/OWNERS delete mode 100644 vendor/k8s.io/cri-api/README.md delete mode 100644 vendor/k8s.io/cri-api/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/cri-api/code-of-conduct.md delete mode 100644 vendor/k8s.io/cri-api/go.mod delete mode 100644 vendor/k8s.io/cri-api/go.sum delete mode 100644 vendor/k8s.io/cri-api/pkg/OWNERS delete mode 100644 vendor/k8s.io/gengo/.import-restrictions delete mode 100644 vendor/k8s.io/gengo/.travis.yml delete mode 100644 vendor/k8s.io/gengo/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/gengo/OWNERS delete mode 100644 vendor/k8s.io/gengo/README.md delete mode 100644 vendor/k8s.io/gengo/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/gengo/code-of-conduct.md delete mode 100644 vendor/k8s.io/gengo/examples/deepcopy-gen/.gitignore delete mode 100644 vendor/k8s.io/gengo/examples/deepcopy-gen/Makefile delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/.gitignore delete mode 100644 vendor/k8s.io/gengo/examples/set-gen/Makefile delete mode 100644 vendor/k8s.io/heapster/.gitignore delete mode 100644 vendor/k8s.io/heapster/.travis.yml delete mode 100644 vendor/k8s.io/heapster/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/heapster/Makefile delete mode 100755 vendor/k8s.io/heapster/README.md delete mode 100644 vendor/k8s.io/heapster/RELEASES.md delete mode 100644 vendor/k8s.io/kube-aggregator/BUILD delete mode 100644 vendor/k8s.io/kube-aggregator/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/kube-aggregator/OWNERS delete mode 100644 vendor/k8s.io/kube-aggregator/README.md delete mode 100644 vendor/k8s.io/kube-aggregator/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kube-aggregator/code-of-conduct.md delete mode 100644 vendor/k8s.io/kube-aggregator/go.mod delete mode 100644 vendor/k8s.io/kube-aggregator/go.sum delete mode 100644 vendor/k8s.io/kube-aggregator/pkg/apis/OWNERS delete mode 100644 vendor/k8s.io/kube-controller-manager/BUILD delete mode 100644 vendor/k8s.io/kube-controller-manager/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/kube-controller-manager/OWNERS delete mode 100644 vendor/k8s.io/kube-controller-manager/README.md delete mode 100644 vendor/k8s.io/kube-controller-manager/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kube-controller-manager/code-of-conduct.md delete mode 100644 vendor/k8s.io/kube-controller-manager/config/OWNERS delete mode 100644 vendor/k8s.io/kube-controller-manager/go.mod delete mode 100644 vendor/k8s.io/kube-controller-manager/go.sum delete mode 100644 vendor/k8s.io/kube-openapi/.gitignore delete mode 100644 vendor/k8s.io/kube-openapi/.travis.yml delete mode 100644 vendor/k8s.io/kube-openapi/CONTRIBUTING.md delete mode 100755 vendor/k8s.io/kube-openapi/OWNERS delete mode 100644 vendor/k8s.io/kube-openapi/README.md delete mode 100644 vendor/k8s.io/kube-openapi/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kube-openapi/code-of-conduct.md delete mode 100644 vendor/k8s.io/kube-proxy/BUILD delete mode 100644 vendor/k8s.io/kube-proxy/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/kube-proxy/OWNERS delete mode 100644 vendor/k8s.io/kube-proxy/README.md delete mode 100644 vendor/k8s.io/kube-proxy/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kube-proxy/code-of-conduct.md delete mode 100644 vendor/k8s.io/kube-proxy/config/OWNERS delete mode 100644 vendor/k8s.io/kube-proxy/go.mod delete mode 100644 vendor/k8s.io/kube-proxy/go.sum delete mode 100644 vendor/k8s.io/kube-scheduler/BUILD delete mode 100644 vendor/k8s.io/kube-scheduler/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/kube-scheduler/OWNERS delete mode 100644 vendor/k8s.io/kube-scheduler/README.md delete mode 100644 vendor/k8s.io/kube-scheduler/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kube-scheduler/code-of-conduct.md delete mode 100644 vendor/k8s.io/kube-scheduler/config/OWNERS delete mode 100644 vendor/k8s.io/kube-scheduler/go.mod delete mode 100644 vendor/k8s.io/kube-scheduler/go.sum delete mode 100644 vendor/k8s.io/kubelet/BUILD delete mode 100644 vendor/k8s.io/kubelet/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/kubelet/OWNERS delete mode 100644 vendor/k8s.io/kubelet/README.md delete mode 100644 vendor/k8s.io/kubelet/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kubelet/code-of-conduct.md delete mode 100644 vendor/k8s.io/kubelet/config/OWNERS delete mode 100644 vendor/k8s.io/kubelet/go.mod delete mode 100644 vendor/k8s.io/kubelet/go.sum delete mode 120000 vendor/k8s.io/kubernetes/.bazelrc delete mode 100644 vendor/k8s.io/kubernetes/.generated_files delete mode 100644 vendor/k8s.io/kubernetes/.gitattributes delete mode 100644 vendor/k8s.io/kubernetes/.gitignore delete mode 120000 vendor/k8s.io/kubernetes/.kazelcfg.json delete mode 120000 vendor/k8s.io/kubernetes/BUILD.bazel delete mode 100644 vendor/k8s.io/kubernetes/CHANGELOG-1.15.md delete mode 100644 vendor/k8s.io/kubernetes/CHANGELOG.md delete mode 100644 vendor/k8s.io/kubernetes/CONTRIBUTING.md delete mode 120000 vendor/k8s.io/kubernetes/Makefile delete mode 120000 vendor/k8s.io/kubernetes/Makefile.generated_files delete mode 100644 vendor/k8s.io/kubernetes/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/OWNERS_ALIASES delete mode 100644 vendor/k8s.io/kubernetes/README.md delete mode 100644 vendor/k8s.io/kubernetes/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/kubernetes/SUPPORT.md delete mode 120000 vendor/k8s.io/kubernetes/WORKSPACE delete mode 100644 vendor/k8s.io/kubernetes/cmd/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/cmd/controller-manager/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-apiserver/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-apiserver/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-controller-manager/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-controller-manager/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-proxy/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-proxy/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-scheduler/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/kube-scheduler/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/cmd/kubelet/BUILD delete mode 100644 vendor/k8s.io/kubernetes/cmd/kubelet/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/code-of-conduct.md delete mode 100644 vendor/k8s.io/kubernetes/go.mod delete mode 100644 vendor/k8s.io/kubernetes/go.sum delete mode 100644 vendor/k8s.io/kubernetes/pkg/.import-restrictions delete mode 100644 vendor/k8s.io/kubernetes/pkg/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/api/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/api/v1/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/apis/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/auth/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/client/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/client/metrics/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/controller/volume/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/generated/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubelet/apis/resourcemetrics/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubelet/apis/stats/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubelet/network/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/kubelet/network/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/quota/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/quota/v1/evaluator/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/apps/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/authentication/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/authorization/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/autoscaling/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/batch/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/certificates/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/core/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/events/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/extensions/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/policy/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/registry/storage/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/pkg/scheduler/framework/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/security/BUILD delete mode 100644 vendor/k8s.io/kubernetes/pkg/util/BUILD delete mode 100755 vendor/k8s.io/kubernetes/pkg/util/verify-util-pkg.sh delete mode 100644 vendor/k8s.io/kubernetes/plugin/BUILD delete mode 100644 vendor/k8s.io/kubernetes/plugin/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/admission/OWNERS mode change 100755 => 100644 vendor/k8s.io/kubernetes/plugin/pkg/admission/imagepolicy/gencerts.sh delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/admission/security/BUILD delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/auth/BUILD delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/auth/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/auth/authenticator/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/auth/authorizer/BUILD delete mode 100644 vendor/k8s.io/kubernetes/plugin/pkg/auth/authorizer/OWNERS delete mode 100755 vendor/k8s.io/kubernetes/tag.sh delete mode 100644 vendor/k8s.io/kubernetes/third_party/BUILD delete mode 100644 vendor/k8s.io/kubernetes/third_party/OWNERS delete mode 100644 vendor/k8s.io/kubernetes/vendor.conf delete mode 100644 vendor/k8s.io/legacy-cloud-providers/BUILD delete mode 100644 vendor/k8s.io/legacy-cloud-providers/OWNERS delete mode 100644 vendor/k8s.io/legacy-cloud-providers/README.md delete mode 100644 vendor/k8s.io/legacy-cloud-providers/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/legacy-cloud-providers/code-of-conduct.md delete mode 100644 vendor/k8s.io/legacy-cloud-providers/go.mod delete mode 100644 vendor/k8s.io/legacy-cloud-providers/go.sum delete mode 100644 vendor/k8s.io/metrics/BUILD delete mode 100644 vendor/k8s.io/metrics/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/metrics/IMPLEMENTATIONS.md delete mode 100644 vendor/k8s.io/metrics/OWNERS delete mode 100644 vendor/k8s.io/metrics/README.md delete mode 100644 vendor/k8s.io/metrics/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/metrics/code-of-conduct.md delete mode 100644 vendor/k8s.io/metrics/go.mod delete mode 100644 vendor/k8s.io/metrics/go.sum delete mode 100644 vendor/k8s.io/metrics/pkg/apis/OWNERS delete mode 100644 vendor/k8s.io/utils/.travis.yml delete mode 100644 vendor/k8s.io/utils/CONTRIBUTING.md delete mode 100644 vendor/k8s.io/utils/HOWTOMOVE.md delete mode 100644 vendor/k8s.io/utils/Makefile delete mode 100644 vendor/k8s.io/utils/OWNERS delete mode 100644 vendor/k8s.io/utils/README.md delete mode 100644 vendor/k8s.io/utils/SECURITY_CONTACTS delete mode 100644 vendor/k8s.io/utils/code-of-conduct.md delete mode 100644 vendor/k8s.io/utils/go.mod delete mode 100644 vendor/k8s.io/utils/go.sum create mode 100644 vendor/modules.txt delete mode 100644 vendor/sigs.k8s.io/kustomize/.gitignore delete mode 100644 vendor/sigs.k8s.io/kustomize/.golangci.yml delete mode 100644 vendor/sigs.k8s.io/kustomize/.travis.yml delete mode 100644 vendor/sigs.k8s.io/kustomize/CONTRIBUTING.md delete mode 100644 vendor/sigs.k8s.io/kustomize/Gopkg.lock delete mode 100644 vendor/sigs.k8s.io/kustomize/Gopkg.toml delete mode 100644 vendor/sigs.k8s.io/kustomize/OWNERS delete mode 100644 vendor/sigs.k8s.io/kustomize/OWNERS_ALIASES delete mode 100644 vendor/sigs.k8s.io/kustomize/README.md delete mode 100644 vendor/sigs.k8s.io/kustomize/SECURITY_CONTACTS delete mode 100644 vendor/sigs.k8s.io/kustomize/code-of-conduct.md delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/CONTRIBUTING.md delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/OWNERS delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/README.md delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/RELEASE.md delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/SECURITY_CONTACTS delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/code-of-conduct.md delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/go.mod delete mode 100644 vendor/sigs.k8s.io/structured-merge-diff/go.sum delete mode 100644 vendor/vbom.ml/util/README.md diff --git a/vendor/cloud.google.com/go/CHANGES.md b/vendor/cloud.google.com/go/CHANGES.md deleted file mode 100644 index bec57e0a75..0000000000 --- a/vendor/cloud.google.com/go/CHANGES.md +++ /dev/null @@ -1,1024 +0,0 @@ -# Changes - -## v0.34.0 - -- functions/metadata: - - Switch to using JSON in context. - - Make Resource a value. -- vision: Fix ProductSearch return type. -- datastore: Add an example for how to handle MultiError. - -## v0.33.1 - -- compute: Removes an erroneously added go.mod. -- logging: Populate source location in fromLogEntry. - -## v0.33.0 - -- bttest: - - Add support for apply_label_transformer. -- expr: - - Add expr library. -- firestore: - - Support retrieval of missing documents. -- kms: - - Add IAM methods. -- pubsub: - - Clarify extension documentation. -- scheduler: - - Add v1beta1 client. -- vision: - - Add product search helper. - - Add new product search client. - -## v0.32.0 - -Note: This release is the last to support Go 1.6 and 1.8. - -- bigquery: - - Add support for removing an expiration. - - Ignore NeverExpire in Table.Create. - - Validate table expiration time. -- cbt: - - Add note about not supporting arbitrary bytes. -- datastore: - - Align key checks. -- firestore: - - Return an error when using Start/End without providing values. -- pubsub: - - Add pstest Close method. - - Clarify MaxExtension documentation. -- securitycenter: - - Add v1beta1 client. -- spanner: - - Allow nil in mutations. - - Improve doc of SessionPoolConfig.MaxOpened. - - Increase session deletion timeout from 5s to 15s. - -## v0.31.0 - -- bigtable: - - Group mutations across multiple requests. -- bigquery: - - Link to bigquery troubleshooting errors page in bigquery.Error comment. -- cbt: - - Fix go generate command. - - Document usage of both maxage + maxversions. -- datastore: - - Passing nil keys results in ErrInvalidKey. -- firestore: - - Clarify what Document.DataTo does with untouched struct fields. -- profile: - - Validate service name in agent. -- pubsub: - - Fix deadlock with pstest and ctx.Cancel. - - Fix a possible deadlock in pstest. -- trace: - - Update doc URL with new fragment. - -Special thanks to @fastest963 for going above and beyond helping us to debug -hard-to-reproduce Pub/Sub issues. - -## v0.30.0 - -- spanner: DML support added. See https://godoc.org/cloud.google.com/go/spanner#hdr-DML_and_Partitioned_DML for more information. -- bigtable: bttest supports row sample filter. -- functions: metadata package added for accessing Cloud Functions resource metadata. - -## v0.29.0 - -- bigtable: - - Add retry to all idempotent RPCs. - - cbt supports complex GC policies. - - Emulator supports arbitrary bytes in regex filters. -- firestore: Add ArrayUnion and ArrayRemove. -- logging: Add the ContextFunc option to supply the context used for - asynchronous RPCs. -- profiler: Ignore NotDefinedError when fetching the instance name -- pubsub: - - BEHAVIOR CHANGE: Receive doesn't retry if an RPC returns codes.Cancelled. - - BEHAVIOR CHANGE: Receive retries on Unavailable intead of returning. - - Fix deadlock. - - Restore Ack/Nack/Modacks metrics. - - Improve context handling in iterator. - - Implement synchronous mode for Receive. - - pstest: add Pull. -- spanner: Add a metric for the number of sessions currently opened. -- storage: - - Canceling the context releases all resources. - - Add additional RetentionPolicy attributes. -- vision/apiv1: Add LocalizeObjects method. - -## v0.28.0 - -- bigtable: - - Emulator returns Unimplemented for snapshot RPCs. -- bigquery: - - Support zero-length repeated, nested fields. -- cloud assets: - - Add v1beta client. -- datastore: - - Don't nil out transaction ID on retry. -- firestore: - - BREAKING CHANGE: When watching a query with Query.Snapshots, QuerySnapshotIterator.Next - returns a QuerySnapshot which contains read time, result size, change list and the DocumentIterator - (previously, QuerySnapshotIterator.Next returned just the DocumentIterator). See: https://godoc.org/cloud.google.com/go/firestore#Query.Snapshots. - - Add array-contains operator. -- IAM: - - Add iam/credentials/apiv1 client. -- pubsub: - - Canceling the context passed to Subscription.Receive causes Receive to return when - processing finishes on all messages currently in progress, even if new messages are arriving. -- redis: - - Add redis/apiv1 client. -- storage: - - Add Reader.Attrs. - - Deprecate several Reader getter methods: please use Reader.Attrs for these instead. - - Add ObjectHandle.Bucket and ObjectHandle.Object methods. - -## v0.27.0 - -- bigquery: - - Allow modification of encryption configuration and partitioning options to a table via the Update call. - - Add a SchemaFromJSON function that converts a JSON table schema. -- bigtable: - - Restore cbt count functionality. -- containeranalysis: - - Add v1beta client. -- spanner: - - Fix a case where an iterator might not be closed correctly. -- storage: - - Add ServiceAccount method https://godoc.org/cloud.google.com/go/storage#Client.ServiceAccount. - - Add a method to Reader that returns the parsed value of the Last-Modified header. - -## v0.26.0 - -- bigquery: - - Support filtering listed jobs by min/max creation time. - - Support data clustering (https://godoc.org/cloud.google.com/go/bigquery#Clustering). - - Include job creator email in Job struct. -- bigtable: - - Add `RowSampleFilter`. - - emulator: BREAKING BEHAVIOR CHANGE: Regexps in row, family, column and value filters - must match the entire target string to succeed. Previously, the emulator was - succeeding on partial matches. - NOTE: As of this release, this change only affects the emulator when run - from this repo (bigtable/cmd/emulator/cbtemulator.go). The version launched - from `gcloud` will be updated in a subsequent `gcloud` release. -- dataproc: Add apiv1beta2 client. -- datastore: Save non-nil pointer fields on omitempty. -- logging: populate Entry.Trace from the HTTP X-Cloud-Trace-Context header. -- logging/logadmin: Support writer_identity and include_children. -- pubsub: - - Support labels on topics and subscriptions. - - Support message storage policy for topics. - - Use the distribution of ack times to determine when to extend ack deadlines. - The only user-visible effect of this change should be that programs that - call only `Subscription.Receive` need no IAM permissions other than `Pub/Sub - Subscriber`. -- storage: - - Support predefined ACLs. - - Support additional ACL fields other than Entity and Role. - - Support bucket websites. - - Support bucket logging. - - -## v0.25.0 - -- Added [Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CODE_OF_CONDUCT.md) -- bigtable: - - cbt: Support a GC policy of "never". -- errorreporting: - - Support User. - - Close now calls Flush. - - Use OnError (previously ignored). - - Pass through the RPC error as-is to OnError. -- httpreplay: A tool for recording and replaying HTTP requests - (for the bigquery and storage clients in this repo). -- kms: v1 client added -- logging: add SourceLocation to Entry. -- storage: improve CRC checking on read. - -## v0.24.0 - -- bigquery: Support for the NUMERIC type. -- bigtable: - - cbt: Optionally specify columns for read/lookup - - Support instance-level administration. -- oslogin: New client for the OS Login API. -- pubsub: - - The package is now stable. There will be no further breaking changes. - - Internal changes to improve Subscription.Receive behavior. -- storage: Support updating bucket lifecycle config. -- spanner: Support struct-typed parameter bindings. -- texttospeech: New client for the Text-to-Speech API. - -## v0.23.0 - -- bigquery: Add DDL stats to query statistics. -- bigtable: - - cbt: Add cells-per-column limit for row lookup. - - cbt: Make it possible to combine read filters. -- dlp: v2beta2 client removed. Use the v2 client instead. -- firestore, spanner: Fix compilation errors due to protobuf changes. - -## v0.22.0 - -- bigtable: - - cbt: Support cells per column limit for row read. - - bttest: Correctly handle empty RowSet. - - Fix ReadModifyWrite operation in emulator. - - Fix API path in GetCluster. - -- bigquery: - - BEHAVIOR CHANGE: Retry on 503 status code. - - Add dataset.DeleteWithContents. - - Add SchemaUpdateOptions for query jobs. - - Add Timeline to QueryStatistics. - - Add more stats to ExplainQueryStage. - - Support Parquet data format. - -- datastore: - - Support omitempty for times. - -- dlp: - - **BREAKING CHANGE:** Remove v1beta1 client. Please migrate to the v2 client, - which is now out of beta. - - Add v2 client. - -- firestore: - - BEHAVIOR CHANGE: Treat set({}, MergeAll) as valid. - -- iam: - - Support JWT signing via SignJwt callopt. - -- profiler: - - BEHAVIOR CHANGE: PollForSerialOutput returns an error when context.Done. - - BEHAVIOR CHANGE: Increase the initial backoff to 1 minute. - - Avoid returning empty serial port output. - -- pubsub: - - BEHAVIOR CHANGE: Don't backoff during next retryable error once stream is healthy. - - BEHAVIOR CHANGE: Don't backoff on EOF. - - pstest: Support Acknowledge and ModifyAckDeadline RPCs. - -- redis: - - Add v1 beta Redis client. - -- spanner: - - Support SessionLabels. - -- speech: - - Add api v1 beta1 client. - -- storage: - - BEHAVIOR CHANGE: Retry reads when retryable error occurs. - - Fix delete of object in requester-pays bucket. - - Support KMS integration. - -## v0.21.0 - -- bigquery: - - Add OpenCensus tracing. - -- firestore: - - **BREAKING CHANGE:** If a document does not exist, return a DocumentSnapshot - whose Exists method returns false. DocumentRef.Get and Transaction.Get - return the non-nil DocumentSnapshot in addition to a NotFound error. - **DocumentRef.GetAll and Transaction.GetAll return a non-nil - DocumentSnapshot instead of nil.** - - Add DocumentIterator.Stop. **Call Stop whenever you are done with a - DocumentIterator.** - - Added Query.Snapshots and DocumentRef.Snapshots, which provide realtime - notification of updates. See https://cloud.google.com/firestore/docs/query-data/listen. - - Canceling an RPC now always returns a grpc.Status with codes.Canceled. - -- spanner: - - Add `CommitTimestamp`, which supports inserting the commit timestamp of a - transaction into a column. - -## v0.20.0 - -- bigquery: Support SchemaUpdateOptions for load jobs. - -- bigtable: - - Add SampleRowKeys. - - cbt: Support union, intersection GCPolicy. - - Retry admin RPCS. - - Add trace spans to retries. - -- datastore: Add OpenCensus tracing. - -- firestore: - - Fix queries involving Null and NaN. - - Allow Timestamp protobuffers for time values. - -- logging: Add a WriteTimeout option. - -- spanner: Support Batch API. - -- storage: Add OpenCensus tracing. - -## v0.19.0 - -- bigquery: - - Support customer-managed encryption keys. - -- bigtable: - - Improved emulator support. - - Support GetCluster. - -- datastore: - - Add general mutations. - - Support pointer struct fields. - - Support transaction options. - -- firestore: - - Add Transaction.GetAll. - - Support document cursors. - -- logging: - - Support concurrent RPCs to the service. - - Support per-entry resources. - -- profiler: - - Add config options to disable heap and thread profiling. - - Read the project ID from $GOOGLE_CLOUD_PROJECT when it's set. - -- pubsub: - - BEHAVIOR CHANGE: Release flow control after ack/nack (instead of after the - callback returns). - - Add SubscriptionInProject. - - Add OpenCensus instrumentation for streaming pull. - -- storage: - - Support CORS. - -## v0.18.0 - -- bigquery: - - Marked stable. - - Schema inference of nullable fields supported. - - Added TimePartitioning to QueryConfig. - -- firestore: Data provided to DocumentRef.Set with a Merge option can contain - Delete sentinels. - -- logging: Clients can accept parent resources other than projects. - -- pubsub: - - pubsub/pstest: A lighweight fake for pubsub. Experimental; feedback welcome. - - Support updating more subscription metadata: AckDeadline, - RetainAckedMessages and RetentionDuration. - -- oslogin/apiv1beta: New client for the Cloud OS Login API. - -- rpcreplay: A package for recording and replaying gRPC traffic. - -- spanner: - - Add a ReadWithOptions that supports a row limit, as well as an index. - - Support query plan and execution statistics. - - Added [OpenCensus](http://opencensus.io) support. - -- storage: Clarify checksum validation for gzipped files (it is not validated - when the file is served uncompressed). - - -## v0.17.0 - -- firestore BREAKING CHANGES: - - Remove UpdateMap and UpdateStruct; rename UpdatePaths to Update. - Change - `docref.UpdateMap(ctx, map[string]interface{}{"a.b", 1})` - to - `docref.Update(ctx, []firestore.Update{{Path: "a.b", Value: 1}})` - - Change - `docref.UpdateStruct(ctx, []string{"Field"}, aStruct)` - to - `docref.Update(ctx, []firestore.Update{{Path: "Field", Value: aStruct.Field}})` - - Rename MergePaths to Merge; require args to be FieldPaths - - A value stored as an integer can be read into a floating-point field, and vice versa. -- bigtable/cmd/cbt: - - Support deleting a column. - - Add regex option for row read. -- spanner: Mark stable. -- storage: - - Add Reader.ContentEncoding method. - - Fix handling of SignedURL headers. -- bigquery: - - If Uploader.Put is called with no rows, it returns nil without making a - call. - - Schema inference supports the "nullable" option in struct tags for - non-required fields. - - TimePartitioning supports "Field". - - -## v0.16.0 - -- Other bigquery changes: - - `JobIterator.Next` returns `*Job`; removed `JobInfo` (BREAKING CHANGE). - - UseStandardSQL is deprecated; set UseLegacySQL to true if you need - Legacy SQL. - - Uploader.Put will generate a random insert ID if you do not provide one. - - Support time partitioning for load jobs. - - Support dry-run queries. - - A `Job` remembers its last retrieved status. - - Support retrieving job configuration. - - Support labels for jobs and tables. - - Support dataset access lists. - - Improve support for external data sources, including data from Bigtable and - Google Sheets, and tables with external data. - - Support updating a table's view configuration. - - Fix uploading civil times with nanoseconds. - -- storage: - - Support PubSub notifications. - - Support Requester Pays buckets. - -- profiler: Support goroutine and mutex profile types. - -## v0.15.0 - -- firestore: beta release. See the - [announcement](https://firebase.googleblog.com/2017/10/introducing-cloud-firestore.html). - -- errorreporting: The existing package has been redesigned. - -- errors: This package has been removed. Use errorreporting. - - -## v0.14.0 - -- bigquery BREAKING CHANGES: - - Standard SQL is the default for queries and views. - - `Table.Create` takes `TableMetadata` as a second argument, instead of - options. - - `Dataset.Create` takes `DatasetMetadata` as a second argument. - - `DatasetMetadata` field `ID` renamed to `FullID` - - `TableMetadata` field `ID` renamed to `FullID` - -- Other bigquery changes: - - The client will append a random suffix to a provided job ID if you set - `AddJobIDSuffix` to true in a job config. - - Listing jobs is supported. - - Better retry logic. - -- vision, language, speech: clients are now stable - -- monitoring: client is now beta - -- profiler: - - Rename InstanceName to Instance, ZoneName to Zone - - Auto-detect service name and version on AppEngine. - -## v0.13.0 - -- bigquery: UseLegacySQL options for CreateTable and QueryConfig. Use these - options to continue using Legacy SQL after the client switches its default - to Standard SQL. - -- bigquery: Support for updating dataset labels. - -- bigquery: Set DatasetIterator.ProjectID to list datasets in a project other - than the client's. DatasetsInProject is no longer needed and is deprecated. - -- bigtable: Fail ListInstances when any zones fail. - -- spanner: support decoding of slices of basic types (e.g. []string, []int64, - etc.) - -- logging/logadmin: UpdateSink no longer creates a sink if it is missing - (actually a change to the underlying service, not the client) - -- profiler: Service and ServiceVersion replace Target in Config. - -## v0.12.0 - -- pubsub: Subscription.Receive now uses streaming pull. - -- pubsub: add Client.TopicInProject to access topics in a different project - than the client. - -- errors: renamed errorreporting. The errors package will be removed shortly. - -- datastore: improved retry behavior. - -- bigquery: support updates to dataset metadata, with etags. - -- bigquery: add etag support to Table.Update (BREAKING: etag argument added). - -- bigquery: generate all job IDs on the client. - -- storage: support bucket lifecycle configurations. - - -## v0.11.0 - -- Clients for spanner, pubsub and video are now in beta. - -- New client for DLP. - -- spanner: performance and testing improvements. - -- storage: requester-pays buckets are supported. - -- storage, profiler, bigtable, bigquery: bug fixes and other minor improvements. - -- pubsub: bug fixes and other minor improvements - -## v0.10.0 - -- pubsub: Subscription.ModifyPushConfig replaced with Subscription.Update. - -- pubsub: Subscription.Receive now runs concurrently for higher throughput. - -- vision: cloud.google.com/go/vision is deprecated. Use -cloud.google.com/go/vision/apiv1 instead. - -- translation: now stable. - -- trace: several changes to the surface. See the link below. - -### Code changes required from v0.9.0 - -- pubsub: Replace - - ``` - sub.ModifyPushConfig(ctx, pubsub.PushConfig{Endpoint: "https://example.com/push"}) - ``` - - with - - ``` - sub.Update(ctx, pubsub.SubscriptionConfigToUpdate{ - PushConfig: &pubsub.PushConfig{Endpoint: "https://example.com/push"}, - }) - ``` - -- trace: traceGRPCServerInterceptor will be provided from *trace.Client. -Given an initialized `*trace.Client` named `tc`, instead of - - ``` - s := grpc.NewServer(grpc.UnaryInterceptor(trace.GRPCServerInterceptor(tc))) - ``` - - write - - ``` - s := grpc.NewServer(grpc.UnaryInterceptor(tc.GRPCServerInterceptor())) - ``` - -- trace trace.GRPCClientInterceptor will also provided from *trace.Client. -Instead of - - ``` - conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(trace.GRPCClientInterceptor())) - ``` - - write - - ``` - conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor())) - ``` - -- trace: We removed the deprecated `trace.EnableGRPCTracing`. Use the gRPC -interceptor as a dial option as shown below when initializing Cloud package -clients: - - ``` - c, err := pubsub.NewClient(ctx, "project-id", option.WithGRPCDialOption(grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor()))) - if err != nil { - ... - } - ``` - - -## v0.9.0 - -- Breaking changes to some autogenerated clients. -- rpcreplay package added. - -## v0.8.0 - -- profiler package added. -- storage: - - Retry Objects.Insert call. - - Add ProgressFunc to WRiter. -- pubsub: breaking changes: - - Publish is now asynchronous ([announcement](https://groups.google.com/d/topic/google-api-go-announce/aaqRDIQ3rvU/discussion)). - - Subscription.Pull replaced by Subscription.Receive, which takes a callback ([announcement](https://groups.google.com/d/topic/google-api-go-announce/8pt6oetAdKc/discussion)). - - Message.Done replaced with Message.Ack and Message.Nack. - -## v0.7.0 - -- Release of a client library for Spanner. See -the -[blog -post](https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html). -Note that although the Spanner service is beta, the Go client library is alpha. - -## v0.6.0 - -- Beta release of BigQuery, DataStore, Logging and Storage. See the -[blog post](https://cloudplatform.googleblog.com/2016/12/announcing-new-google-cloud-client.html). - -- bigquery: - - struct support. Read a row directly into a struct with -`RowIterator.Next`, and upload a row directly from a struct with `Uploader.Put`. -You can also use field tags. See the [package documentation][cloud-bigquery-ref] -for details. - - - The `ValueList` type was removed. It is no longer necessary. Instead of - ```go - var v ValueList - ... it.Next(&v) .. - ``` - use - - ```go - var v []Value - ... it.Next(&v) ... - ``` - - - Previously, repeatedly calling `RowIterator.Next` on the same `[]Value` or - `ValueList` would append to the slice. Now each call resets the size to zero first. - - - Schema inference will infer the SQL type BYTES for a struct field of - type []byte. Previously it inferred STRING. - - - The types `uint`, `uint64` and `uintptr` are no longer supported in schema - inference. BigQuery's integer type is INT64, and those types may hold values - that are not correctly represented in a 64-bit signed integer. - -## v0.5.0 - -- bigquery: - - The SQL types DATE, TIME and DATETIME are now supported. They correspond to - the `Date`, `Time` and `DateTime` types in the new `cloud.google.com/go/civil` - package. - - Support for query parameters. - - Support deleting a dataset. - - Values from INTEGER columns will now be returned as int64, not int. This - will avoid errors arising from large values on 32-bit systems. -- datastore: - - Nested Go structs encoded as Entity values, instead of a -flattened list of the embedded struct's fields. This means that you may now have twice-nested slices, eg. - ```go - type State struct { - Cities []struct{ - Populations []int - } - } - ``` - See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/79jtrdeuJAg) for -more details. - - Contexts no longer hold namespaces; instead you must set a key's namespace - explicitly. Also, key functions have been changed and renamed. - - The WithNamespace function has been removed. To specify a namespace in a Query, use the Query.Namespace method: - ```go - q := datastore.NewQuery("Kind").Namespace("ns") - ``` - - All the fields of Key are exported. That means you can construct any Key with a struct literal: - ```go - k := &Key{Kind: "Kind", ID: 37, Namespace: "ns"} - ``` - - As a result of the above, the Key methods Kind, ID, d.Name, Parent, SetParent and Namespace have been removed. - - `NewIncompleteKey` has been removed, replaced by `IncompleteKey`. Replace - ```go - NewIncompleteKey(ctx, kind, parent) - ``` - with - ```go - IncompleteKey(kind, parent) - ``` - and if you do use namespaces, make sure you set the namespace on the returned key. - - `NewKey` has been removed, replaced by `NameKey` and `IDKey`. Replace - ```go - NewKey(ctx, kind, name, 0, parent) - NewKey(ctx, kind, "", id, parent) - ``` - with - ```go - NameKey(kind, name, parent) - IDKey(kind, id, parent) - ``` - and if you do use namespaces, make sure you set the namespace on the returned key. - - The `Done` variable has been removed. Replace `datastore.Done` with `iterator.Done`, from the package `google.golang.org/api/iterator`. - - The `Client.Close` method will have a return type of error. It will return the result of closing the underlying gRPC connection. - - See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/hqXtM_4Ix-0) for -more details. - -## v0.4.0 - -- bigquery: - -`NewGCSReference` is now a function, not a method on `Client`. - - `Table.LoaderFrom` now accepts a `ReaderSource`, enabling - loading data into a table from a file or any `io.Reader`. - * Client.Table and Client.OpenTable have been removed. - Replace - ```go - client.OpenTable("project", "dataset", "table") - ``` - with - ```go - client.DatasetInProject("project", "dataset").Table("table") - ``` - - * Client.CreateTable has been removed. - Replace - ```go - client.CreateTable(ctx, "project", "dataset", "table") - ``` - with - ```go - client.DatasetInProject("project", "dataset").Table("table").Create(ctx) - ``` - - * Dataset.ListTables have been replaced with Dataset.Tables. - Replace - ```go - tables, err := ds.ListTables(ctx) - ``` - with - ```go - it := ds.Tables(ctx) - for { - table, err := it.Next() - if err == iterator.Done { - break - } - if err != nil { - // TODO: Handle error. - } - // TODO: use table. - } - ``` - - * Client.Read has been replaced with Job.Read, Table.Read and Query.Read. - Replace - ```go - it, err := client.Read(ctx, job) - ``` - with - ```go - it, err := job.Read(ctx) - ``` - and similarly for reading from tables or queries. - - * The iterator returned from the Read methods is now named RowIterator. Its - behavior is closer to the other iterators in these libraries. It no longer - supports the Schema method; see the next item. - Replace - ```go - for it.Next(ctx) { - var vals ValueList - if err := it.Get(&vals); err != nil { - // TODO: Handle error. - } - // TODO: use vals. - } - if err := it.Err(); err != nil { - // TODO: Handle error. - } - ``` - with - ``` - for { - var vals ValueList - err := it.Next(&vals) - if err == iterator.Done { - break - } - if err != nil { - // TODO: Handle error. - } - // TODO: use vals. - } - ``` - Instead of the `RecordsPerRequest(n)` option, write - ```go - it.PageInfo().MaxSize = n - ``` - Instead of the `StartIndex(i)` option, write - ```go - it.StartIndex = i - ``` - - * ValueLoader.Load now takes a Schema in addition to a slice of Values. - Replace - ```go - func (vl *myValueLoader) Load(v []bigquery.Value) - ``` - with - ```go - func (vl *myValueLoader) Load(v []bigquery.Value, s bigquery.Schema) - ``` - - - * Table.Patch is replace by Table.Update. - Replace - ```go - p := table.Patch() - p.Description("new description") - metadata, err := p.Apply(ctx) - ``` - with - ```go - metadata, err := table.Update(ctx, bigquery.TableMetadataToUpdate{ - Description: "new description", - }) - ``` - - * Client.Copy is replaced by separate methods for each of its four functions. - All options have been replaced by struct fields. - - * To load data from Google Cloud Storage into a table, use Table.LoaderFrom. - - Replace - ```go - client.Copy(ctx, table, gcsRef) - ``` - with - ```go - table.LoaderFrom(gcsRef).Run(ctx) - ``` - Instead of passing options to Copy, set fields on the Loader: - ```go - loader := table.LoaderFrom(gcsRef) - loader.WriteDisposition = bigquery.WriteTruncate - ``` - - * To extract data from a table into Google Cloud Storage, use - Table.ExtractorTo. Set fields on the returned Extractor instead of - passing options. - - Replace - ```go - client.Copy(ctx, gcsRef, table) - ``` - with - ```go - table.ExtractorTo(gcsRef).Run(ctx) - ``` - - * To copy data into a table from one or more other tables, use - Table.CopierFrom. Set fields on the returned Copier instead of passing options. - - Replace - ```go - client.Copy(ctx, dstTable, srcTable) - ``` - with - ```go - dst.Table.CopierFrom(srcTable).Run(ctx) - ``` - - * To start a query job, create a Query and call its Run method. Set fields - on the query instead of passing options. - - Replace - ```go - client.Copy(ctx, table, query) - ``` - with - ```go - query.Run(ctx) - ``` - - * Table.NewUploader has been renamed to Table.Uploader. Instead of options, - configure an Uploader by setting its fields. - Replace - ```go - u := table.NewUploader(bigquery.UploadIgnoreUnknownValues()) - ``` - with - ```go - u := table.NewUploader(bigquery.UploadIgnoreUnknownValues()) - u.IgnoreUnknownValues = true - ``` - -- pubsub: remove `pubsub.Done`. Use `iterator.Done` instead, where `iterator` is the package -`google.golang.org/api/iterator`. - -## v0.3.0 - -- storage: - * AdminClient replaced by methods on Client. - Replace - ```go - adminClient.CreateBucket(ctx, bucketName, attrs) - ``` - with - ```go - client.Bucket(bucketName).Create(ctx, projectID, attrs) - ``` - - * BucketHandle.List replaced by BucketHandle.Objects. - Replace - ```go - for query != nil { - objs, err := bucket.List(d.ctx, query) - if err != nil { ... } - query = objs.Next - for _, obj := range objs.Results { - fmt.Println(obj) - } - } - ``` - with - ```go - iter := bucket.Objects(d.ctx, query) - for { - obj, err := iter.Next() - if err == iterator.Done { - break - } - if err != nil { ... } - fmt.Println(obj) - } - ``` - (The `iterator` package is at `google.golang.org/api/iterator`.) - - Replace `Query.Cursor` with `ObjectIterator.PageInfo().Token`. - - Replace `Query.MaxResults` with `ObjectIterator.PageInfo().MaxSize`. - - - * ObjectHandle.CopyTo replaced by ObjectHandle.CopierFrom. - Replace - ```go - attrs, err := src.CopyTo(ctx, dst, nil) - ``` - with - ```go - attrs, err := dst.CopierFrom(src).Run(ctx) - ``` - - Replace - ```go - attrs, err := src.CopyTo(ctx, dst, &storage.ObjectAttrs{ContextType: "text/html"}) - ``` - with - ```go - c := dst.CopierFrom(src) - c.ContextType = "text/html" - attrs, err := c.Run(ctx) - ``` - - * ObjectHandle.ComposeFrom replaced by ObjectHandle.ComposerFrom. - Replace - ```go - attrs, err := dst.ComposeFrom(ctx, []*storage.ObjectHandle{src1, src2}, nil) - ``` - with - ```go - attrs, err := dst.ComposerFrom(src1, src2).Run(ctx) - ``` - - * ObjectHandle.Update's ObjectAttrs argument replaced by ObjectAttrsToUpdate. - Replace - ```go - attrs, err := obj.Update(ctx, &storage.ObjectAttrs{ContextType: "text/html"}) - ``` - with - ```go - attrs, err := obj.Update(ctx, storage.ObjectAttrsToUpdate{ContextType: "text/html"}) - ``` - - * ObjectHandle.WithConditions replaced by ObjectHandle.If. - Replace - ```go - obj.WithConditions(storage.Generation(gen), storage.IfMetaGenerationMatch(mgen)) - ``` - with - ```go - obj.Generation(gen).If(storage.Conditions{MetagenerationMatch: mgen}) - ``` - - Replace - ```go - obj.WithConditions(storage.IfGenerationMatch(0)) - ``` - with - ```go - obj.If(storage.Conditions{DoesNotExist: true}) - ``` - - * `storage.Done` replaced by `iterator.Done` (from package `google.golang.org/api/iterator`). - -- Package preview/logging deleted. Use logging instead. - -## v0.2.0 - -- Logging client replaced with preview version (see below). - -- New clients for some of Google's Machine Learning APIs: Vision, Speech, and -Natural Language. - -- Preview version of a new [Stackdriver Logging][cloud-logging] client in -[`cloud.google.com/go/preview/logging`](https://godoc.org/cloud.google.com/go/preview/logging). -This client uses gRPC as its transport layer, and supports log reading, sinks -and metrics. It will replace the current client at `cloud.google.com/go/logging` shortly. - - diff --git a/vendor/cloud.google.com/go/CODE_OF_CONDUCT.md b/vendor/cloud.google.com/go/CODE_OF_CONDUCT.md deleted file mode 100644 index 8fd1bc9c22..0000000000 --- a/vendor/cloud.google.com/go/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,44 +0,0 @@ -# Contributor Code of Conduct - -As contributors and maintainers of this project, -and in the interest of fostering an open and welcoming community, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. - -We are committed to making participation in this project -a harassment-free experience for everyone, -regardless of level of experience, gender, gender identity and expression, -sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, -such as physical or electronic -addresses, without explicit permission -* Other unethical or unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. -By adopting this Code of Conduct, -project maintainers commit themselves to fairly and consistently -applying these principles to every aspect of managing this project. -Project maintainers who do not follow or enforce the Code of Conduct -may be permanently removed from the project team. - -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by opening an issue -or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, -available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) - diff --git a/vendor/cloud.google.com/go/CONTRIBUTING.md b/vendor/cloud.google.com/go/CONTRIBUTING.md deleted file mode 100644 index eef41ed0fd..0000000000 --- a/vendor/cloud.google.com/go/CONTRIBUTING.md +++ /dev/null @@ -1,234 +0,0 @@ -# Contributing - -1. Sign one of the contributor license agreements below. -1. `go get golang.org/x/review/git-codereview` to install the code reviewing -tool. - 1. You will need to ensure that your `GOBIN` directory (by default - `$GOPATH/bin`) is in your `PATH` so that git can find the command. - 1. If you would like, you may want to set up aliases for git-codereview, - such that `git codereview change` becomes `git change`. See the - [godoc](https://godoc.org/golang.org/x/review/git-codereview) for details. - 1. Should you run into issues with the git-codereview tool, please note - that all error messages will assume that you have set up these aliases. -1. Get the cloud package by running `go get -d cloud.google.com/go`. - 1. If you have already checked out the source, make sure that the remote - git origin is https://code.googlesource.com/gocloud: - - ``` - git remote set-url origin https://code.googlesource.com/gocloud - ``` - -1. Make sure your auth is configured correctly by visiting -https://code.googlesource.com, clicking "Generate Password", and following the -directions. -1. Make changes and create a change by running `git codereview change `, -provide a commit message, and use `git codereview mail` to create a Gerrit CL. -1. Keep amending to the change with `git codereview change` and mail as your -receive feedback. Each new mailed amendment will create a new patch set for -your change in Gerrit. - -## Integration Tests - -In addition to the unit tests, you may run the integration test suite. These -directions describe setting up your environment to run integration tests for -_all_ packages: note that many of these instructions may be redundant if you -intend only to run integration tests on a single package. - -#### GCP Setup - -To run the integrations tests, creation and configuration of two projects in -the Google Developers Console is required: one specifically for Firestore -integration tests, and another for all other integration tests. We'll refer to -these projects as "general project" and "Firestore project". - -After creating each project, you must [create a service account](https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount) -for each project. Ensure the project-level **Owner** -[IAM role](console.cloud.google.com/iam-admin/iam/project) role is added to -each service account. During the creation of the service account, you should -download the JSON credential file for use later. - -Next, ensure the following APIs are enabled in the general project: - -- BigQuery API -- BigQuery Data Transfer API -- Cloud Dataproc API -- Cloud Dataproc Control API Private -- Cloud Datastore API -- Cloud Firestore API -- Cloud Key Management Service (KMS) API -- Cloud Natural Language API -- Cloud OS Login API -- Cloud Pub/Sub API -- Cloud Resource Manager API -- Cloud Spanner API -- Cloud Speech API -- Cloud Translation API -- Cloud Video Intelligence API -- Cloud Vision API -- Compute Engine API -- Compute Engine Instance Group Manager API -- Container Registry API -- Firebase Rules API -- Google Cloud APIs -- Google Cloud Deployment Manager V2 API -- Google Cloud SQL -- Google Cloud Storage -- Google Cloud Storage JSON API -- Google Compute Engine Instance Group Updater API -- Google Compute Engine Instance Groups API -- Kubernetes Engine API -- Stackdriver Error Reporting API - -Next, create a Datastore database in the general project, and a Firestore -database in the Firestore project. - -Finally, in the general project, create an API key for the translate API: - -- Go to GCP Developer Console. -- Navigate to APIs & Services > Credentials. -- Click Create Credentials > API Key. -- Save this key for use in `GCLOUD_TESTS_API_KEY` as described below. - -#### Local Setup - -Once the two projects are created and configured, set the following environment -variables: - -- `GCLOUD_TESTS_GOLANG_PROJECT_ID`: Developers Console project's ID (e.g. -bamboo-shift-455) for the general project. -- `GCLOUD_TESTS_GOLANG_KEY`: The path to the JSON key file of the general -project's service account. -- `GCLOUD_TESTS_GOLANG_FIRESTORE_PROJECT_ID`: Developers Console project's ID -(e.g. doorway-cliff-677) for the Firestore project. -- `GCLOUD_TESTS_GOLANG_FIRESTORE_KEY`: The path to the JSON key file of the -Firestore project's service account. -- `GCLOUD_TESTS_GOLANG_KEYRING`: The full name of the keyring for the tests, -in the form -"projects/P/locations/L/keyRings/R". The creation of this is described below. -- `GCLOUD_TESTS_API_KEY`: API key for using the Translate API. -- `GCLOUD_TESTS_GOLANG_ZONE`: Compute Engine zone. - -Install the [gcloud command-line tool][gcloudcli] to your machine and use it to -create some resources used in integration tests. - -From the project's root directory: - -``` sh -# Sets the default project in your env. -$ gcloud config set project $GCLOUD_TESTS_GOLANG_PROJECT_ID - -# Authenticates the gcloud tool with your account. -$ gcloud auth login - -# Create the indexes used in the datastore integration tests. -$ gcloud datastore create-indexes datastore/testdata/index.yaml - -# Creates a Google Cloud storage bucket with the same name as your test project, -# and with the Stackdriver Logging service account as owner, for the sink -# integration tests in logging. -$ gsutil mb gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID -$ gsutil acl ch -g cloud-logs@google.com:O gs://$GCLOUD_TESTS_GOLANG_PROJECT_ID - -# Creates a PubSub topic for integration tests of storage notifications. -$ gcloud beta pubsub topics create go-storage-notification-test -# Next, go to the Pub/Sub dashboard in GCP console. Authorize the user -# "service-@gs-project-accounts.iam.gserviceaccount.com" -# as a publisher to that topic. - -# Creates a Spanner instance for the spanner integration tests. -$ gcloud beta spanner instances create go-integration-test --config regional-us-central1 --nodes 10 --description 'Instance for go client test' -# NOTE: Spanner instances are priced by the node-hour, so you may want to -# delete the instance after testing with 'gcloud beta spanner instances delete'. - -$ export MY_KEYRING=some-keyring-name -$ export MY_LOCATION=global -# Creates a KMS keyring, in the same location as the default location for your -# project's buckets. -$ gcloud kms keyrings create $MY_KEYRING --location $MY_LOCATION -# Creates two keys in the keyring, named key1 and key2. -$ gcloud kms keys create key1 --keyring $MY_KEYRING --location $MY_LOCATION --purpose encryption -$ gcloud kms keys create key2 --keyring $MY_KEYRING --location $MY_LOCATION --purpose encryption -# Sets the GCLOUD_TESTS_GOLANG_KEYRING environment variable. -$ export GCLOUD_TESTS_GOLANG_KEYRING=projects/$GCLOUD_TESTS_GOLANG_PROJECT_ID/locations/$MY_LOCATION/keyRings/$MY_KEYRING -# Authorizes Google Cloud Storage to encrypt and decrypt using key1. -gsutil kms authorize -p $GCLOUD_TESTS_GOLANG_PROJECT_ID -k $GCLOUD_TESTS_GOLANG_KEYRING/cryptoKeys/key1 -``` - -#### Running - -Once you've done the necessary setup, you can run the integration tests by -running: - -``` sh -$ go test -v cloud.google.com/go/... -``` - -#### Replay - -Some packages can record the RPCs during integration tests to a file for -subsequent replay. To record, pass the `-record` flag to `go test`. The -recording will be saved to the _package_`.replay` file. To replay integration -tests from a saved recording, the replay file must be present, the `-short` -flag must be passed to `go test`, and the `GCLOUD_TESTS_GOLANG_ENABLE_REPLAY` -environment variable must have a non-empty value. - -## Contributor License Agreements - -Before we can accept your pull requests you'll need to sign a Contributor -License Agreement (CLA): - -- **If you are an individual writing original source code** and **you own the -intellectual property**, then you'll need to sign an [individual CLA][indvcla]. -- **If you work for a company that wants to allow you to contribute your -work**, then you'll need to sign a [corporate CLA][corpcla]. - -You can sign these electronically (just scroll to the bottom). After that, -we'll be able to accept your pull requests. - -## Contributor Code of Conduct - -As contributors and maintainers of this project, -and in the interest of fostering an open and welcoming community, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, updating documentation, -submitting pull requests or patches, and other activities. - -We are committed to making participation in this project -a harassment-free experience for everyone, -regardless of level of experience, gender, gender identity and expression, -sexual orientation, disability, personal appearance, -body size, race, ethnicity, age, religion, or nationality. - -Examples of unacceptable behavior by participants include: - -* The use of sexualized language or imagery -* Personal attacks -* Trolling or insulting/derogatory comments -* Public or private harassment -* Publishing other's private information, -such as physical or electronic -addresses, without explicit permission -* Other unethical or unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct. -By adopting this Code of Conduct, -project maintainers commit themselves to fairly and consistently -applying these principles to every aspect of managing this project. -Project maintainers who do not follow or enforce the Code of Conduct -may be permanently removed from the project team. - -This code of conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by opening an issue -or contacting one or more of the project maintainers. - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0, -available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/) - -[gcloudcli]: https://developers.google.com/cloud/sdk/gcloud/ -[indvcla]: https://developers.google.com/open-source/cla/individual -[corpcla]: https://developers.google.com/open-source/cla/corporate diff --git a/vendor/cloud.google.com/go/README.md b/vendor/cloud.google.com/go/README.md deleted file mode 100644 index 1c8c16046a..0000000000 --- a/vendor/cloud.google.com/go/README.md +++ /dev/null @@ -1,505 +0,0 @@ -# Google Cloud Client Libraries for Go - -[![GoDoc](https://godoc.org/cloud.google.com/go?status.svg)](https://godoc.org/cloud.google.com/go) - -Go packages for [Google Cloud Platform](https://cloud.google.com) services. - -``` go -import "cloud.google.com/go" -``` - -To install the packages on your system, *do not clone the repo*. Instead use - -``` -$ go get -u cloud.google.com/go/... -``` - -**NOTE:** Some of these packages are under development, and may occasionally -make backwards-incompatible changes. - -**NOTE:** Github repo is a mirror of [https://code.googlesource.com/gocloud](https://code.googlesource.com/gocloud). - - * [News](#news) - * [Supported APIs](#supported-apis) - * [Go Versions Supported](#go-versions-supported) - * [Authorization](#authorization) - * [Cloud Datastore](#cloud-datastore-) - * [Cloud Storage](#cloud-storage-) - * [Cloud Pub/Sub](#cloud-pub-sub-) - * [BigQuery](#cloud-bigquery-) - * [Stackdriver Logging](#stackdriver-logging-) - * [Cloud Spanner](#cloud-spanner-) - - -## News - -_7 August 2018_ - -As of November 1, the code in the repo will no longer support Go versions 1.8 -and earlier. No one other than AppEngine users should be on those old versions, -and AppEngine -[Standard](https://groups.google.com/forum/#!topic/google-appengine-go/e7oPNomd7ak) -and -[Flex](https://groups.google.com/forum/#!topic/google-appengine-go/wHsYtxvEbXI) -will stop supporting new deployments with those versions on that date. - - -Changes have been moved to [CHANGES](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CHANGES.md). - - -## Supported APIs - -Google API | Status | Package ----------------------------------------------|--------------|----------------------------------------------------------- -[Asset][cloud-asset] | alpha | [`godoc.org/cloud.google.com/go/asset/v1beta`][cloud-asset-ref] -[BigQuery][cloud-bigquery] | stable | [`godoc.org/cloud.google.com/go/bigquery`][cloud-bigquery-ref] -[Bigtable][cloud-bigtable] | stable | [`godoc.org/cloud.google.com/go/bigtable`][cloud-bigtable-ref] -[Cloudtasks][cloud-tasks] | beta | [`godoc.org/cloud.google.com/go/cloudtasks/apiv2beta3`][cloud-tasks-ref] -[Container][cloud-container] | stable | [`godoc.org/cloud.google.com/go/container/apiv1`][cloud-container-ref] -[ContainerAnalysis][cloud-containeranalysis] | beta | [`godoc.org/cloud.google.com/go/containeranalysis/apiv1beta1`][cloud-containeranalysis-ref] -[Dataproc][cloud-dataproc] | stable | [`godoc.org/cloud.google.com/go/dataproc/apiv1`][cloud-dataproc-ref] -[Datastore][cloud-datastore] | stable | [`godoc.org/cloud.google.com/go/datastore`][cloud-datastore-ref] -[Debugger][cloud-debugger] | alpha | [`godoc.org/cloud.google.com/go/debugger/apiv2`][cloud-debugger-ref] -[Dialogflow][cloud-dialogflow] | alpha | [`godoc.org/cloud.google.com/go/dialogflow/apiv2`][cloud-dialogflow-ref] -[Data Loss Prevention][cloud-dlp] | alpha | [`godoc.org/cloud.google.com/go/dlp/apiv2`][cloud-dlp-ref] -[ErrorReporting][cloud-errors] | alpha | [`godoc.org/cloud.google.com/go/errorreporting`][cloud-errors-ref] -[Firestore][cloud-firestore] | beta | [`godoc.org/cloud.google.com/go/firestore`][cloud-firestore-ref] -[IAM][cloud-iam] | stable | [`godoc.org/cloud.google.com/go/iam`][cloud-iam-ref] -[KMS][cloud-kms] | stable | [`godoc.org/cloud.google.com/go/kms`][cloud-kms-ref] -[Natural Language][cloud-natural-language] | stable | [`godoc.org/cloud.google.com/go/language/apiv1`][cloud-natural-language-ref] -[Logging][cloud-logging] | stable | [`godoc.org/cloud.google.com/go/logging`][cloud-logging-ref] -[Monitoring][cloud-monitoring] | alpha | [`godoc.org/cloud.google.com/go/monitoring/apiv3`][cloud-monitoring-ref] -[OS Login][cloud-oslogin] | alpha | [`cloud.google.com/compute/docs/oslogin/rest`][cloud-oslogin-ref] -[Pub/Sub][cloud-pubsub] | stable | [`godoc.org/cloud.google.com/go/pubsub`][cloud-pubsub-ref] -[Memorystore][cloud-memorystore] | stable | [`godoc.org/cloud.google.com/go/redis/apiv1beta1`][cloud-memorystore-ref] -[Spanner][cloud-spanner] | stable | [`godoc.org/cloud.google.com/go/spanner`][cloud-spanner-ref] -[Speech][cloud-speech] | stable | [`godoc.org/cloud.google.com/go/speech/apiv1`][cloud-speech-ref] -[Storage][cloud-storage] | stable | [`godoc.org/cloud.google.com/go/storage`][cloud-storage-ref] -[Text To Speech][cloud-texttospeech] | alpha | [`godoc.org/cloud.google.com/go/texttospeech/apiv1`][cloud-storage-ref] -[Trace][cloud-trace] | alpha | [`godoc.org/cloud.google.com/go/trace/apiv2`][cloud-translation-ref] -[Translation][cloud-translation] | stable | [`godoc.org/cloud.google.com/go/translate`][cloud-translation-ref] -[Video Intelligence][cloud-video] | alpha | [`godoc.org/cloud.google.com/go/videointelligence/apiv1beta1`][cloud-video-ref] -[Vision][cloud-vision] | stable | [`godoc.org/cloud.google.com/go/vision/apiv1`][cloud-vision-ref] - -> **Alpha status**: the API is still being actively developed. As a -> result, it might change in backward-incompatible ways and is not recommended -> for production use. -> -> **Beta status**: the API is largely complete, but still has outstanding -> features and bugs to be addressed. There may be minor backwards-incompatible -> changes where necessary. -> -> **Stable status**: the API is mature and ready for production use. We will -> continue addressing bugs and feature requests. - -Documentation and examples are available at -https://godoc.org/cloud.google.com/go - -Visit or join the -[google-api-go-announce group](https://groups.google.com/forum/#!forum/google-api-go-announce) -for updates on these packages. - -## Go Versions Supported - -We support the two most recent major versions of Go. If Google App Engine uses -an older version, we support that as well. - -## Authorization - -By default, each API will use [Google Application Default Credentials][default-creds] -for authorization credentials used in calling the API endpoints. This will allow your -application to run in many environments without requiring explicit configuration. - -[snip]:# (auth) -```go -client, err := storage.NewClient(ctx) -``` - -To authorize using a -[JSON key file](https://cloud.google.com/iam/docs/managing-service-account-keys), -pass -[`option.WithCredentialsFile`](https://godoc.org/google.golang.org/api/option#WithCredentialsFile) -to the `NewClient` function of the desired package. For example: - -[snip]:# (auth-JSON) -```go -client, err := storage.NewClient(ctx, option.WithCredentialsFile("path/to/keyfile.json")) -``` - -You can exert more control over authorization by using the -[`golang.org/x/oauth2`](https://godoc.org/golang.org/x/oauth2) package to -create an `oauth2.TokenSource`. Then pass -[`option.WithTokenSource`](https://godoc.org/google.golang.org/api/option#WithTokenSource) -to the `NewClient` function: -[snip]:# (auth-ts) -```go -tokenSource := ... -client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource)) -``` - -## Cloud Datastore [![GoDoc](https://godoc.org/cloud.google.com/go/datastore?status.svg)](https://godoc.org/cloud.google.com/go/datastore) - -- [About Cloud Datastore][cloud-datastore] -- [Activating the API for your project][cloud-datastore-activation] -- [API documentation][cloud-datastore-docs] -- [Go client documentation](https://godoc.org/cloud.google.com/go/datastore) -- [Complete sample program](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/datastore/tasks) - -### Example Usage - -First create a `datastore.Client` to use throughout your application: - -[snip]:# (datastore-1) -```go -client, err := datastore.NewClient(ctx, "my-project-id") -if err != nil { - log.Fatal(err) -} -``` - -Then use that client to interact with the API: - -[snip]:# (datastore-2) -```go -type Post struct { - Title string - Body string `datastore:",noindex"` - PublishedAt time.Time -} -keys := []*datastore.Key{ - datastore.NameKey("Post", "post1", nil), - datastore.NameKey("Post", "post2", nil), -} -posts := []*Post{ - {Title: "Post 1", Body: "...", PublishedAt: time.Now()}, - {Title: "Post 2", Body: "...", PublishedAt: time.Now()}, -} -if _, err := client.PutMulti(ctx, keys, posts); err != nil { - log.Fatal(err) -} -``` - -## Cloud Storage [![GoDoc](https://godoc.org/cloud.google.com/go/storage?status.svg)](https://godoc.org/cloud.google.com/go/storage) - -- [About Cloud Storage][cloud-storage] -- [API documentation][cloud-storage-docs] -- [Go client documentation](https://godoc.org/cloud.google.com/go/storage) -- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/storage) - -### Example Usage - -First create a `storage.Client` to use throughout your application: - -[snip]:# (storage-1) -```go -client, err := storage.NewClient(ctx) -if err != nil { - log.Fatal(err) -} -``` - -[snip]:# (storage-2) -```go -// Read the object1 from bucket. -rc, err := client.Bucket("bucket").Object("object1").NewReader(ctx) -if err != nil { - log.Fatal(err) -} -defer rc.Close() -body, err := ioutil.ReadAll(rc) -if err != nil { - log.Fatal(err) -} -``` - -## Cloud Pub/Sub [![GoDoc](https://godoc.org/cloud.google.com/go/pubsub?status.svg)](https://godoc.org/cloud.google.com/go/pubsub) - -- [About Cloud Pubsub][cloud-pubsub] -- [API documentation][cloud-pubsub-docs] -- [Go client documentation](https://godoc.org/cloud.google.com/go/pubsub) -- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/pubsub) - -### Example Usage - -First create a `pubsub.Client` to use throughout your application: - -[snip]:# (pubsub-1) -```go -client, err := pubsub.NewClient(ctx, "project-id") -if err != nil { - log.Fatal(err) -} -``` - -Then use the client to publish and subscribe: - -[snip]:# (pubsub-2) -```go -// Publish "hello world" on topic1. -topic := client.Topic("topic1") -res := topic.Publish(ctx, &pubsub.Message{ - Data: []byte("hello world"), -}) -// The publish happens asynchronously. -// Later, you can get the result from res: -... -msgID, err := res.Get(ctx) -if err != nil { - log.Fatal(err) -} - -// Use a callback to receive messages via subscription1. -sub := client.Subscription("subscription1") -err = sub.Receive(ctx, func(ctx context.Context, m *pubsub.Message) { - fmt.Println(m.Data) - m.Ack() // Acknowledge that we've consumed the message. -}) -if err != nil { - log.Println(err) -} -``` - -## BigQuery [![GoDoc](https://godoc.org/cloud.google.com/go/bigquery?status.svg)](https://godoc.org/cloud.google.com/go/bigquery) - -- [About BigQuery][cloud-bigquery] -- [API documentation][cloud-bigquery-docs] -- [Go client documentation][cloud-bigquery-ref] -- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/bigquery) - -### Example Usage - -First create a `bigquery.Client` to use throughout your application: -[snip]:# (bq-1) -```go -c, err := bigquery.NewClient(ctx, "my-project-ID") -if err != nil { - // TODO: Handle error. -} -``` - -Then use that client to interact with the API: -[snip]:# (bq-2) -```go -// Construct a query. -q := c.Query(` - SELECT year, SUM(number) - FROM [bigquery-public-data:usa_names.usa_1910_2013] - WHERE name = "William" - GROUP BY year - ORDER BY year -`) -// Execute the query. -it, err := q.Read(ctx) -if err != nil { - // TODO: Handle error. -} -// Iterate through the results. -for { - var values []bigquery.Value - err := it.Next(&values) - if err == iterator.Done { - break - } - if err != nil { - // TODO: Handle error. - } - fmt.Println(values) -} -``` - - -## Stackdriver Logging [![GoDoc](https://godoc.org/cloud.google.com/go/logging?status.svg)](https://godoc.org/cloud.google.com/go/logging) - -- [About Stackdriver Logging][cloud-logging] -- [API documentation][cloud-logging-docs] -- [Go client documentation][cloud-logging-ref] -- [Complete sample programs](https://github.com/GoogleCloudPlatform/golang-samples/tree/master/logging) - -### Example Usage - -First create a `logging.Client` to use throughout your application: -[snip]:# (logging-1) -```go -ctx := context.Background() -client, err := logging.NewClient(ctx, "my-project") -if err != nil { - // TODO: Handle error. -} -``` - -Usually, you'll want to add log entries to a buffer to be periodically flushed -(automatically and asynchronously) to the Stackdriver Logging service. -[snip]:# (logging-2) -```go -logger := client.Logger("my-log") -logger.Log(logging.Entry{Payload: "something happened!"}) -``` - -Close your client before your program exits, to flush any buffered log entries. -[snip]:# (logging-3) -```go -err = client.Close() -if err != nil { - // TODO: Handle error. -} -``` - -## Cloud Spanner [![GoDoc](https://godoc.org/cloud.google.com/go/spanner?status.svg)](https://godoc.org/cloud.google.com/go/spanner) - -- [About Cloud Spanner][cloud-spanner] -- [API documentation][cloud-spanner-docs] -- [Go client documentation](https://godoc.org/cloud.google.com/go/spanner) - -### Example Usage - -First create a `spanner.Client` to use throughout your application: - -[snip]:# (spanner-1) -```go -client, err := spanner.NewClient(ctx, "projects/P/instances/I/databases/D") -if err != nil { - log.Fatal(err) -} -``` - -[snip]:# (spanner-2) -```go -// Simple Reads And Writes -_, err = client.Apply(ctx, []*spanner.Mutation{ - spanner.Insert("Users", - []string{"name", "email"}, - []interface{}{"alice", "a@example.com"})}) -if err != nil { - log.Fatal(err) -} -row, err := client.Single().ReadRow(ctx, "Users", - spanner.Key{"alice"}, []string{"email"}) -if err != nil { - log.Fatal(err) -} -``` - - -## Contributing - -Contributions are welcome. Please, see the -[CONTRIBUTING](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md) -document for details. We're using Gerrit for our code reviews. Please don't open pull -requests against this repo, new pull requests will be automatically closed. - -Please note that this project is released with a Contributor Code of Conduct. -By participating in this project you agree to abide by its terms. -See [Contributor Code of Conduct](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/CONTRIBUTING.md#contributor-code-of-conduct) -for more information. - -[cloud-datastore]: https://cloud.google.com/datastore/ -[cloud-datastore-ref]: https://godoc.org/cloud.google.com/go/datastore -[cloud-datastore-docs]: https://cloud.google.com/datastore/docs -[cloud-datastore-activation]: https://cloud.google.com/datastore/docs/activate - -[cloud-firestore]: https://cloud.google.com/firestore/ -[cloud-firestore-ref]: https://godoc.org/cloud.google.com/go/firestore -[cloud-firestore-docs]: https://cloud.google.com/firestore/docs -[cloud-firestore-activation]: https://cloud.google.com/firestore/docs/activate - -[cloud-pubsub]: https://cloud.google.com/pubsub/ -[cloud-pubsub-ref]: https://godoc.org/cloud.google.com/go/pubsub -[cloud-pubsub-docs]: https://cloud.google.com/pubsub/docs - -[cloud-storage]: https://cloud.google.com/storage/ -[cloud-storage-ref]: https://godoc.org/cloud.google.com/go/storage -[cloud-storage-docs]: https://cloud.google.com/storage/docs -[cloud-storage-create-bucket]: https://cloud.google.com/storage/docs/cloud-console#_creatingbuckets - -[cloud-bigtable]: https://cloud.google.com/bigtable/ -[cloud-bigtable-ref]: https://godoc.org/cloud.google.com/go/bigtable - -[cloud-bigquery]: https://cloud.google.com/bigquery/ -[cloud-bigquery-docs]: https://cloud.google.com/bigquery/docs -[cloud-bigquery-ref]: https://godoc.org/cloud.google.com/go/bigquery - -[cloud-logging]: https://cloud.google.com/logging/ -[cloud-logging-docs]: https://cloud.google.com/logging/docs -[cloud-logging-ref]: https://godoc.org/cloud.google.com/go/logging - -[cloud-monitoring]: https://cloud.google.com/monitoring/ -[cloud-monitoring-ref]: https://godoc.org/cloud.google.com/go/monitoring/apiv3 - -[cloud-vision]: https://cloud.google.com/vision -[cloud-vision-ref]: https://godoc.org/cloud.google.com/go/vision/apiv1 - -[cloud-language]: https://cloud.google.com/natural-language -[cloud-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1 - -[cloud-oslogin]: https://cloud.google.com/compute/docs/oslogin/rest -[cloud-oslogin-ref]: https://cloud.google.com/compute/docs/oslogin/rest - -[cloud-speech]: https://cloud.google.com/speech -[cloud-speech-ref]: https://godoc.org/cloud.google.com/go/speech/apiv1 - -[cloud-spanner]: https://cloud.google.com/spanner/ -[cloud-spanner-ref]: https://godoc.org/cloud.google.com/go/spanner -[cloud-spanner-docs]: https://cloud.google.com/spanner/docs - -[cloud-translation]: https://cloud.google.com/translation -[cloud-translation-ref]: https://godoc.org/cloud.google.com/go/translation - -[cloud-video]: https://cloud.google.com/video-intelligence/ -[cloud-video-ref]: https://godoc.org/cloud.google.com/go/videointelligence/apiv1beta1 - -[cloud-errors]: https://cloud.google.com/error-reporting/ -[cloud-errors-ref]: https://godoc.org/cloud.google.com/go/errorreporting - -[cloud-container]: https://cloud.google.com/containers/ -[cloud-container-ref]: https://godoc.org/cloud.google.com/go/container/apiv1 - -[cloud-debugger]: https://cloud.google.com/debugger/ -[cloud-debugger-ref]: https://godoc.org/cloud.google.com/go/debugger/apiv2 - -[cloud-dlp]: https://cloud.google.com/dlp/ -[cloud-dlp-ref]: https://godoc.org/cloud.google.com/go/dlp/apiv2beta1 - -[default-creds]: https://developers.google.com/identity/protocols/application-default-credentials - -[cloud-dataproc]: https://cloud.google.com/dataproc/ -[cloud-dataproc-docs]: https://cloud.google.com/dataproc/docs -[cloud-dataproc-ref]: https://godoc.org/cloud.google.com/go/dataproc/apiv1 - -[cloud-iam]: https://cloud.google.com/iam/ -[cloud-iam-docs]: https://cloud.google.com/iam/docs -[cloud-iam-ref]: https://godoc.org/cloud.google.com/go/iam - -[cloud-kms]: https://cloud.google.com/kms/ -[cloud-kms-docs]: https://cloud.google.com/kms/docs -[cloud-kms-ref]: https://godoc.org/cloud.google.com/go/kms/apiv1 - -[cloud-natural-language]: https://cloud.google.com/natural-language/ -[cloud-natural-language-docs]: https://cloud.google.com/natural-language/docs -[cloud-natural-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1 - -[cloud-memorystore]: https://cloud.google.com/memorystore/ -[cloud-memorystore-docs]: https://cloud.google.com/memorystore/docs -[cloud-memorystore-ref]: https://godoc.org/cloud.google.com/go/redis/apiv1beta1 - -[cloud-texttospeech]: https://cloud.google.com/texttospeech/ -[cloud-texttospeech-docs]: https://cloud.google.com/texttospeech/docs -[cloud-texttospeech-ref]: https://godoc.org/cloud.google.com/go/texttospeech/apiv1 - -[cloud-trace]: https://cloud.google.com/trace/ -[cloud-trace-docs]: https://cloud.google.com/trace/docs -[cloud-trace-ref]: https://godoc.org/cloud.google.com/go/trace/apiv1 - -[cloud-dialogflow]: https://cloud.google.com/dialogflow-enterprise/ -[cloud-dialogflow-docs]: https://cloud.google.com/dialogflow-enterprise/docs/ -[cloud-dialogflow-ref]: https://godoc.org/cloud.google.com/go/dialogflow/apiv2 - -[cloud-containeranalysis]: https://cloud.google.com/container-registry/docs/container-analysis -[cloud-containeranalysis-docs]: https://cloud.google.com/container-analysis/api/reference/rest/ -[cloud-containeranalysis-ref]: https://godoc.org/cloud.google.com/go/devtools/containeranalysis/apiv1beta1 - -[cloud-asset]: https://cloud.google.com/security-command-center/docs/how-to-asset-inventory -[cloud-asset-docs]: https://cloud.google.com/security-command-center/docs/how-to-asset-inventory -[cloud-asset-ref]: https://godoc.org/cloud.google.com/go/asset/apiv1 - -[cloud-tasks]: https://cloud.google.com/tasks/ -[cloud-tasks-ref]: https://godoc.org/cloud.google.com/go/cloudtasks/apiv2beta3 diff --git a/vendor/cloud.google.com/go/RELEASING.md b/vendor/cloud.google.com/go/RELEASING.md deleted file mode 100644 index 1028a261a1..0000000000 --- a/vendor/cloud.google.com/go/RELEASING.md +++ /dev/null @@ -1,47 +0,0 @@ -# How to Create a New Release - -## Prerequisites - -Install [releasetool](https://github.com/googleapis/releasetool). - -## Create a release - -1. `cd` into the root directory, e.g., `~/go/src/cloud.google.com/go` -1. Checkout the master branch and ensure a clean and up-to-date state. - ``` - git checkout master - git pull --tags origin master - ``` -1. Run releasetool to generate a changelog from the last version. Note, - releasetool will prompt if the new version is a major, minor, or patch - version. - ``` - releasetool start --language go - ``` -1. Format the output to match CHANGES.md. -1. Submit a CL with the changes in CHANGES.md. The commit message should look - like this (where `v0.31.0` is instead the correct version number): - ``` - all: Release v0.31.0 - ``` -1. Wait for approval from all reviewers and then submit the CL. -1. Return to the master branch and pull the release commit. - ``` - git checkout master - git pull origin master - ``` -1. Tag the current commit with the new version (e.g., `v0.31.0`) - ``` - releasetool tag --language go - ``` -1. Publish the tag to GoogleSource (i.e., origin): - ``` - git push origin $NEW_VERSION - ``` -1. Visit the [releases page][releases] on GitHub and click the "Draft a new - release" button. For tag version, enter the tag published in the previous - step. For the release title, use the version (e.g., `v0.31.0`). For the - description, copy the changes added to CHANGES.md. - - -[releases]: https://github.com/GoogleCloudPlatform/google-cloud-go/releases diff --git a/vendor/cloud.google.com/go/issue_template.md b/vendor/cloud.google.com/go/issue_template.md deleted file mode 100644 index e2ccef3e78..0000000000 --- a/vendor/cloud.google.com/go/issue_template.md +++ /dev/null @@ -1,17 +0,0 @@ -(delete this for feature requests) - -## Client - -e.g. PubSub - -## Describe Your Environment - -e.g. Alpine Docker on GKE - -## Expected Behavior - -e.g. Messages arrive really fast. - -## Actual Behavior - -e.g. Messages arrive really slowly. \ No newline at end of file diff --git a/vendor/cloud.google.com/go/keys.tar.enc b/vendor/cloud.google.com/go/keys.tar.enc deleted file mode 100644 index c54408c93a2b7d36467ceced9e697a7e6be66db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10256 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 diff --git a/vendor/cloud.google.com/go/old-news.md b/vendor/cloud.google.com/go/old-news.md deleted file mode 100644 index 6a8b84d7fb..0000000000 --- a/vendor/cloud.google.com/go/old-news.md +++ /dev/null @@ -1,698 +0,0 @@ -_February 26, 2018_ - -*v0.19.0* - -- bigquery: - - Support customer-managed encryption keys. - -- bigtable: - - Improved emulator support. - - Support GetCluster. - -- datastore: - - Add general mutations. - - Support pointer struct fields. - - Support transaction options. - -- firestore: - - Add Transaction.GetAll. - - Support document cursors. - -- logging: - - Support concurrent RPCs to the service. - - Support per-entry resources. - -- profiler: - - Add config options to disable heap and thread profiling. - - Read the project ID from $GOOGLE_CLOUD_PROJECT when it's set. - -- pubsub: - - BEHAVIOR CHANGE: Release flow control after ack/nack (instead of after the - callback returns). - - Add SubscriptionInProject. - - Add OpenCensus instrumentation for streaming pull. - -- storage: - - Support CORS. - - -_January 18, 2018_ - -*v0.18.0* - -- bigquery: - - Marked stable. - - Schema inference of nullable fields supported. - - Added TimePartitioning to QueryConfig. - -- firestore: Data provided to DocumentRef.Set with a Merge option can contain - Delete sentinels. - -- logging: Clients can accept parent resources other than projects. - -- pubsub: - - pubsub/pstest: A lighweight fake for pubsub. Experimental; feedback welcome. - - Support updating more subscription metadata: AckDeadline, - RetainAckedMessages and RetentionDuration. - -- oslogin/apiv1beta: New client for the Cloud OS Login API. - -- rpcreplay: A package for recording and replaying gRPC traffic. - -- spanner: - - Add a ReadWithOptions that supports a row limit, as well as an index. - - Support query plan and execution statistics. - - Added [OpenCensus](http://opencensus.io) support. - -- storage: Clarify checksum validation for gzipped files (it is not validated - when the file is served uncompressed). - - -_December 11, 2017_ - -*v0.17.0* - -- firestore BREAKING CHANGES: - - Remove UpdateMap and UpdateStruct; rename UpdatePaths to Update. - Change - `docref.UpdateMap(ctx, map[string]interface{}{"a.b", 1})` - to - `docref.Update(ctx, []firestore.Update{{Path: "a.b", Value: 1}})` - - Change - `docref.UpdateStruct(ctx, []string{"Field"}, aStruct)` - to - `docref.Update(ctx, []firestore.Update{{Path: "Field", Value: aStruct.Field}})` - - Rename MergePaths to Merge; require args to be FieldPaths - - A value stored as an integer can be read into a floating-point field, and vice versa. -- bigtable/cmd/cbt: - - Support deleting a column. - - Add regex option for row read. -- spanner: Mark stable. -- storage: - - Add Reader.ContentEncoding method. - - Fix handling of SignedURL headers. -- bigquery: - - If Uploader.Put is called with no rows, it returns nil without making a - call. - - Schema inference supports the "nullable" option in struct tags for - non-required fields. - - TimePartitioning supports "Field". - - -_October 30, 2017_ - -*v0.16.0* - -- Other bigquery changes: - - `JobIterator.Next` returns `*Job`; removed `JobInfo` (BREAKING CHANGE). - - UseStandardSQL is deprecated; set UseLegacySQL to true if you need - Legacy SQL. - - Uploader.Put will generate a random insert ID if you do not provide one. - - Support time partitioning for load jobs. - - Support dry-run queries. - - A `Job` remembers its last retrieved status. - - Support retrieving job configuration. - - Support labels for jobs and tables. - - Support dataset access lists. - - Improve support for external data sources, including data from Bigtable and - Google Sheets, and tables with external data. - - Support updating a table's view configuration. - - Fix uploading civil times with nanoseconds. - -- storage: - - Support PubSub notifications. - - Support Requester Pays buckets. - -- profiler: Support goroutine and mutex profile types. - - -_October 3, 2017_ - -*v0.15.0* - -- firestore: beta release. See the - [announcement](https://firebase.googleblog.com/2017/10/introducing-cloud-firestore.html). - -- errorreporting: The existing package has been redesigned. - -- errors: This package has been removed. Use errorreporting. - - -_September 28, 2017_ - -*v0.14.0* - -- bigquery BREAKING CHANGES: - - Standard SQL is the default for queries and views. - - `Table.Create` takes `TableMetadata` as a second argument, instead of - options. - - `Dataset.Create` takes `DatasetMetadata` as a second argument. - - `DatasetMetadata` field `ID` renamed to `FullID` - - `TableMetadata` field `ID` renamed to `FullID` - -- Other bigquery changes: - - The client will append a random suffix to a provided job ID if you set - `AddJobIDSuffix` to true in a job config. - - Listing jobs is supported. - - Better retry logic. - -- vision, language, speech: clients are now stable - -- monitoring: client is now beta - -- profiler: - - Rename InstanceName to Instance, ZoneName to Zone - - Auto-detect service name and version on AppEngine. - -_September 8, 2017_ - -*v0.13.0* - -- bigquery: UseLegacySQL options for CreateTable and QueryConfig. Use these - options to continue using Legacy SQL after the client switches its default - to Standard SQL. - -- bigquery: Support for updating dataset labels. - -- bigquery: Set DatasetIterator.ProjectID to list datasets in a project other - than the client's. DatasetsInProject is no longer needed and is deprecated. - -- bigtable: Fail ListInstances when any zones fail. - -- spanner: support decoding of slices of basic types (e.g. []string, []int64, - etc.) - -- logging/logadmin: UpdateSink no longer creates a sink if it is missing - (actually a change to the underlying service, not the client) - -- profiler: Service and ServiceVersion replace Target in Config. - -_August 22, 2017_ - -*v0.12.0* - -- pubsub: Subscription.Receive now uses streaming pull. - -- pubsub: add Client.TopicInProject to access topics in a different project - than the client. - -- errors: renamed errorreporting. The errors package will be removed shortly. - -- datastore: improved retry behavior. - -- bigquery: support updates to dataset metadata, with etags. - -- bigquery: add etag support to Table.Update (BREAKING: etag argument added). - -- bigquery: generate all job IDs on the client. - -- storage: support bucket lifecycle configurations. - - -_July 31, 2017_ - -*v0.11.0* - -- Clients for spanner, pubsub and video are now in beta. - -- New client for DLP. - -- spanner: performance and testing improvements. - -- storage: requester-pays buckets are supported. - -- storage, profiler, bigtable, bigquery: bug fixes and other minor improvements. - -- pubsub: bug fixes and other minor improvements - -_June 17, 2017_ - - -*v0.10.0* - -- pubsub: Subscription.ModifyPushConfig replaced with Subscription.Update. - -- pubsub: Subscription.Receive now runs concurrently for higher throughput. - -- vision: cloud.google.com/go/vision is deprecated. Use -cloud.google.com/go/vision/apiv1 instead. - -- translation: now stable. - -- trace: several changes to the surface. See the link below. - -[Code changes required from v0.9.0.](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/MIGRATION.md) - - -_March 17, 2017_ - -Breaking Pubsub changes. -* Publish is now asynchronous -([announcement](https://groups.google.com/d/topic/google-api-go-announce/aaqRDIQ3rvU/discussion)). -* Subscription.Pull replaced by Subscription.Receive, which takes a callback ([announcement](https://groups.google.com/d/topic/google-api-go-announce/8pt6oetAdKc/discussion)). -* Message.Done replaced with Message.Ack and Message.Nack. - -_February 14, 2017_ - -Release of a client library for Spanner. See -the -[blog post](https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html). - -Note that although the Spanner service is beta, the Go client library is alpha. - -_December 12, 2016_ - -Beta release of BigQuery, DataStore, Logging and Storage. See the -[blog post](https://cloudplatform.googleblog.com/2016/12/announcing-new-google-cloud-client.html). - -Also, BigQuery now supports structs. Read a row directly into a struct with -`RowIterator.Next`, and upload a row directly from a struct with `Uploader.Put`. -You can also use field tags. See the [package documentation][cloud-bigquery-ref] -for details. - -_December 5, 2016_ - -More changes to BigQuery: - -* The `ValueList` type was removed. It is no longer necessary. Instead of - ```go - var v ValueList - ... it.Next(&v) .. - ``` - use - - ```go - var v []Value - ... it.Next(&v) ... - ``` - -* Previously, repeatedly calling `RowIterator.Next` on the same `[]Value` or - `ValueList` would append to the slice. Now each call resets the size to zero first. - -* Schema inference will infer the SQL type BYTES for a struct field of - type []byte. Previously it inferred STRING. - -* The types `uint`, `uint64` and `uintptr` are no longer supported in schema - inference. BigQuery's integer type is INT64, and those types may hold values - that are not correctly represented in a 64-bit signed integer. - -* The SQL types DATE, TIME and DATETIME are now supported. They correspond to - the `Date`, `Time` and `DateTime` types in the new `cloud.google.com/go/civil` - package. - -_November 17, 2016_ - -Change to BigQuery: values from INTEGER columns will now be returned as int64, -not int. This will avoid errors arising from large values on 32-bit systems. - -_November 8, 2016_ - -New datastore feature: datastore now encodes your nested Go structs as Entity values, -instead of a flattened list of the embedded struct's fields. -This means that you may now have twice-nested slices, eg. -```go -type State struct { - Cities []struct{ - Populations []int - } -} -``` - -See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/79jtrdeuJAg) for -more details. - -_November 8, 2016_ - -Breaking changes to datastore: contexts no longer hold namespaces; instead you -must set a key's namespace explicitly. Also, key functions have been changed -and renamed. - -* The WithNamespace function has been removed. To specify a namespace in a Query, use the Query.Namespace method: - ```go - q := datastore.NewQuery("Kind").Namespace("ns") - ``` - -* All the fields of Key are exported. That means you can construct any Key with a struct literal: - ```go - k := &Key{Kind: "Kind", ID: 37, Namespace: "ns"} - ``` - -* As a result of the above, the Key methods Kind, ID, d.Name, Parent, SetParent and Namespace have been removed. - -* `NewIncompleteKey` has been removed, replaced by `IncompleteKey`. Replace - ```go - NewIncompleteKey(ctx, kind, parent) - ``` - with - ```go - IncompleteKey(kind, parent) - ``` - and if you do use namespaces, make sure you set the namespace on the returned key. - -* `NewKey` has been removed, replaced by `NameKey` and `IDKey`. Replace - ```go - NewKey(ctx, kind, name, 0, parent) - NewKey(ctx, kind, "", id, parent) - ``` - with - ```go - NameKey(kind, name, parent) - IDKey(kind, id, parent) - ``` - and if you do use namespaces, make sure you set the namespace on the returned key. - -* The `Done` variable has been removed. Replace `datastore.Done` with `iterator.Done`, from the package `google.golang.org/api/iterator`. - -* The `Client.Close` method will have a return type of error. It will return the result of closing the underlying gRPC connection. - -See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/hqXtM_4Ix-0) for -more details. - -_October 27, 2016_ - -Breaking change to bigquery: `NewGCSReference` is now a function, -not a method on `Client`. - -New bigquery feature: `Table.LoaderFrom` now accepts a `ReaderSource`, enabling -loading data into a table from a file or any `io.Reader`. - -_October 21, 2016_ - -Breaking change to pubsub: removed `pubsub.Done`. - -Use `iterator.Done` instead, where `iterator` is the package -`google.golang.org/api/iterator`. - -_October 19, 2016_ - -Breaking changes to cloud.google.com/go/bigquery: - -* Client.Table and Client.OpenTable have been removed. - Replace - ```go - client.OpenTable("project", "dataset", "table") - ``` - with - ```go - client.DatasetInProject("project", "dataset").Table("table") - ``` - -* Client.CreateTable has been removed. - Replace - ```go - client.CreateTable(ctx, "project", "dataset", "table") - ``` - with - ```go - client.DatasetInProject("project", "dataset").Table("table").Create(ctx) - ``` - -* Dataset.ListTables have been replaced with Dataset.Tables. - Replace - ```go - tables, err := ds.ListTables(ctx) - ``` - with - ```go - it := ds.Tables(ctx) - for { - table, err := it.Next() - if err == iterator.Done { - break - } - if err != nil { - // TODO: Handle error. - } - // TODO: use table. - } - ``` - -* Client.Read has been replaced with Job.Read, Table.Read and Query.Read. - Replace - ```go - it, err := client.Read(ctx, job) - ``` - with - ```go - it, err := job.Read(ctx) - ``` - and similarly for reading from tables or queries. - -* The iterator returned from the Read methods is now named RowIterator. Its - behavior is closer to the other iterators in these libraries. It no longer - supports the Schema method; see the next item. - Replace - ```go - for it.Next(ctx) { - var vals ValueList - if err := it.Get(&vals); err != nil { - // TODO: Handle error. - } - // TODO: use vals. - } - if err := it.Err(); err != nil { - // TODO: Handle error. - } - ``` - with - ``` - for { - var vals ValueList - err := it.Next(&vals) - if err == iterator.Done { - break - } - if err != nil { - // TODO: Handle error. - } - // TODO: use vals. - } - ``` - Instead of the `RecordsPerRequest(n)` option, write - ```go - it.PageInfo().MaxSize = n - ``` - Instead of the `StartIndex(i)` option, write - ```go - it.StartIndex = i - ``` - -* ValueLoader.Load now takes a Schema in addition to a slice of Values. - Replace - ```go - func (vl *myValueLoader) Load(v []bigquery.Value) - ``` - with - ```go - func (vl *myValueLoader) Load(v []bigquery.Value, s bigquery.Schema) - ``` - - -* Table.Patch is replace by Table.Update. - Replace - ```go - p := table.Patch() - p.Description("new description") - metadata, err := p.Apply(ctx) - ``` - with - ```go - metadata, err := table.Update(ctx, bigquery.TableMetadataToUpdate{ - Description: "new description", - }) - ``` - -* Client.Copy is replaced by separate methods for each of its four functions. - All options have been replaced by struct fields. - - * To load data from Google Cloud Storage into a table, use Table.LoaderFrom. - - Replace - ```go - client.Copy(ctx, table, gcsRef) - ``` - with - ```go - table.LoaderFrom(gcsRef).Run(ctx) - ``` - Instead of passing options to Copy, set fields on the Loader: - ```go - loader := table.LoaderFrom(gcsRef) - loader.WriteDisposition = bigquery.WriteTruncate - ``` - - * To extract data from a table into Google Cloud Storage, use - Table.ExtractorTo. Set fields on the returned Extractor instead of - passing options. - - Replace - ```go - client.Copy(ctx, gcsRef, table) - ``` - with - ```go - table.ExtractorTo(gcsRef).Run(ctx) - ``` - - * To copy data into a table from one or more other tables, use - Table.CopierFrom. Set fields on the returned Copier instead of passing options. - - Replace - ```go - client.Copy(ctx, dstTable, srcTable) - ``` - with - ```go - dst.Table.CopierFrom(srcTable).Run(ctx) - ``` - - * To start a query job, create a Query and call its Run method. Set fields - on the query instead of passing options. - - Replace - ```go - client.Copy(ctx, table, query) - ``` - with - ```go - query.Run(ctx) - ``` - -* Table.NewUploader has been renamed to Table.Uploader. Instead of options, - configure an Uploader by setting its fields. - Replace - ```go - u := table.NewUploader(bigquery.UploadIgnoreUnknownValues()) - ``` - with - ```go - u := table.NewUploader(bigquery.UploadIgnoreUnknownValues()) - u.IgnoreUnknownValues = true - ``` - -_October 10, 2016_ - -Breaking changes to cloud.google.com/go/storage: - -* AdminClient replaced by methods on Client. - Replace - ```go - adminClient.CreateBucket(ctx, bucketName, attrs) - ``` - with - ```go - client.Bucket(bucketName).Create(ctx, projectID, attrs) - ``` - -* BucketHandle.List replaced by BucketHandle.Objects. - Replace - ```go - for query != nil { - objs, err := bucket.List(d.ctx, query) - if err != nil { ... } - query = objs.Next - for _, obj := range objs.Results { - fmt.Println(obj) - } - } - ``` - with - ```go - iter := bucket.Objects(d.ctx, query) - for { - obj, err := iter.Next() - if err == iterator.Done { - break - } - if err != nil { ... } - fmt.Println(obj) - } - ``` - (The `iterator` package is at `google.golang.org/api/iterator`.) - - Replace `Query.Cursor` with `ObjectIterator.PageInfo().Token`. - - Replace `Query.MaxResults` with `ObjectIterator.PageInfo().MaxSize`. - - -* ObjectHandle.CopyTo replaced by ObjectHandle.CopierFrom. - Replace - ```go - attrs, err := src.CopyTo(ctx, dst, nil) - ``` - with - ```go - attrs, err := dst.CopierFrom(src).Run(ctx) - ``` - - Replace - ```go - attrs, err := src.CopyTo(ctx, dst, &storage.ObjectAttrs{ContextType: "text/html"}) - ``` - with - ```go - c := dst.CopierFrom(src) - c.ContextType = "text/html" - attrs, err := c.Run(ctx) - ``` - -* ObjectHandle.ComposeFrom replaced by ObjectHandle.ComposerFrom. - Replace - ```go - attrs, err := dst.ComposeFrom(ctx, []*storage.ObjectHandle{src1, src2}, nil) - ``` - with - ```go - attrs, err := dst.ComposerFrom(src1, src2).Run(ctx) - ``` - -* ObjectHandle.Update's ObjectAttrs argument replaced by ObjectAttrsToUpdate. - Replace - ```go - attrs, err := obj.Update(ctx, &storage.ObjectAttrs{ContextType: "text/html"}) - ``` - with - ```go - attrs, err := obj.Update(ctx, storage.ObjectAttrsToUpdate{ContextType: "text/html"}) - ``` - -* ObjectHandle.WithConditions replaced by ObjectHandle.If. - Replace - ```go - obj.WithConditions(storage.Generation(gen), storage.IfMetaGenerationMatch(mgen)) - ``` - with - ```go - obj.Generation(gen).If(storage.Conditions{MetagenerationMatch: mgen}) - ``` - - Replace - ```go - obj.WithConditions(storage.IfGenerationMatch(0)) - ``` - with - ```go - obj.If(storage.Conditions{DoesNotExist: true}) - ``` - -* `storage.Done` replaced by `iterator.Done` (from package `google.golang.org/api/iterator`). - -_October 6, 2016_ - -Package preview/logging deleted. Use logging instead. - -_September 27, 2016_ - -Logging client replaced with preview version (see below). - -_September 8, 2016_ - -* New clients for some of Google's Machine Learning APIs: Vision, Speech, and -Natural Language. - -* Preview version of a new [Stackdriver Logging][cloud-logging] client in -[`cloud.google.com/go/preview/logging`](https://godoc.org/cloud.google.com/go/preview/logging). -This client uses gRPC as its transport layer, and supports log reading, sinks -and metrics. It will replace the current client at `cloud.google.com/go/logging` shortly. - diff --git a/vendor/cloud.google.com/go/regen-gapic.sh b/vendor/cloud.google.com/go/regen-gapic.sh deleted file mode 100755 index 252c9be0d9..0000000000 --- a/vendor/cloud.google.com/go/regen-gapic.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash - -# This script generates all GAPIC clients in this repo. -# One-time setup: -# cd path/to/googleapis # https://github.com/googleapis/googleapis -# virtualenv env -# . env/bin/activate -# pip install googleapis-artman -# deactivate -# -# Regenerate: -# cd path/to/googleapis -# . env/bin/activate -# $GOPATH/src/cloud.google.com/go/regen-gapic.sh -# deactivate -# -# Being in googleapis directory is important; -# that's where we find YAML files and where artman puts the "artman-genfiles" directory. -# -# NOTE: This script does not generate the "raw" gRPC client found in google.golang.org/genproto. -# To do that, use the regen.sh script in the genproto repo instead. - -set -ex - -APIS=( -google/api/expr/artman_cel.yaml -google/iam/artman_iam_admin.yaml -google/cloud/asset/artman_cloudasset_v1beta1.yaml -google/iam/credentials/artman_iamcredentials_v1.yaml -google/cloud/bigquery/datatransfer/artman_bigquerydatatransfer.yaml -google/cloud/dataproc/artman_dataproc_v1.yaml -google/cloud/dataproc/artman_dataproc_v1beta2.yaml -google/cloud/dialogflow/artman_dialogflow_v2.yaml -google/cloud/kms/artman_cloudkms.yaml -google/cloud/language/artman_language_v1.yaml -google/cloud/language/artman_language_v1beta2.yaml -google/cloud/oslogin/artman_oslogin_v1.yaml -google/cloud/oslogin/artman_oslogin_v1beta.yaml -google/cloud/redis/artman_redis_v1beta1.yaml -google/cloud/redis/artman_redis_v1.yaml -google/cloud/scheduler/artman_cloudscheduler_v1beta1.yaml -google/cloud/securitycenter/artman_securitycenter_v1beta1.yaml -google/cloud/speech/artman_speech_v1.yaml -google/cloud/speech/artman_speech_v1p1beta1.yaml -google/cloud/tasks/artman_cloudtasks_v2beta2.yaml -google/cloud/tasks/artman_cloudtasks_v2beta3.yaml -google/cloud/texttospeech/artman_texttospeech_v1.yaml -google/cloud/videointelligence/artman_videointelligence_v1.yaml -google/cloud/videointelligence/artman_videointelligence_v1beta1.yaml -google/cloud/videointelligence/artman_videointelligence_v1beta2.yaml -google/cloud/vision/artman_vision_v1.yaml -google/cloud/vision/artman_vision_v1p1beta1.yaml -google/devtools/artman_clouddebugger.yaml -google/devtools/clouderrorreporting/artman_errorreporting.yaml -google/devtools/cloudtrace/artman_cloudtrace_v1.yaml -google/devtools/cloudtrace/artman_cloudtrace_v2.yaml -google/devtools/containeranalysis/artman_containeranalysis_v1beta1.yaml -google/firestore/artman_firestore.yaml -google/logging/artman_logging.yaml -google/longrunning/artman_longrunning.yaml -google/monitoring/artman_monitoring.yaml -google/privacy/dlp/artman_dlp_v2.yaml -google/pubsub/artman_pubsub.yaml -google/spanner/admin/database/artman_spanner_admin_database.yaml -google/spanner/admin/instance/artman_spanner_admin_instance.yaml -google/spanner/artman_spanner.yaml -) - -for api in "${APIS[@]}"; do - rm -rf artman-genfiles/* - artman --config "$api" generate go_gapic - cp -r artman-genfiles/gapi-*/cloud.google.com/go/* $GOPATH/src/cloud.google.com/go/ -done - -# NOTE(pongad): `sed -i` doesn't work on Macs, because -i option needs an argument. -# `-i ''` doesn't work on GNU, since the empty string is treated as a file name. -# So we just create the backup and delete it after. -ver=$(date +%Y%m%d) -find $GOPATH/src/cloud.google.com/go/ -name '*.go' -exec sed -i.backup -e "s/^const versionClient.*/const versionClient = \"$ver\"/" '{}' + -find $GOPATH/src/cloud.google.com/go/ -name '*.backup' -delete - -#go list cloud.google.com/go/... | grep apiv | xargs go test - -#go test -short cloud.google.com/go/... - -#echo "googleapis version: $(git rev-parse HEAD)" diff --git a/vendor/cloud.google.com/go/run-tests.sh b/vendor/cloud.google.com/go/run-tests.sh deleted file mode 100755 index a643e61c47..0000000000 --- a/vendor/cloud.google.com/go/run-tests.sh +++ /dev/null @@ -1,88 +0,0 @@ -#!/bin/bash - -# Selectively run tests for this repo, based on what has changed -# in a commit. Runs short tests for the whole repo, and full tests -# for changed directories. - -set -e - -prefix=cloud.google.com/go - -dryrun=false -if [[ $1 == "-n" ]]; then - dryrun=true - shift -fi - -if [[ $1 == "" ]]; then - echo >&2 "usage: $0 [-n] COMMIT" - exit 1 -fi - -# Files or directories that cause all tests to run if modified. -declare -A run_all -run_all=([.travis.yml]=1 [run-tests.sh]=1) - -function run { - if $dryrun; then - echo $* - else - (set -x; $*) - fi -} - - -# Find all the packages that have changed in this commit. -declare -A changed_packages - -for f in $(git diff-tree --no-commit-id --name-only -r $1); do - if [[ ${run_all[$f]} == 1 ]]; then - # This change requires a full test. Do it and exit. - run go test -race -v $prefix/... - exit - fi - # Map, e.g., "spanner/client.go" to "$prefix/spanner". - d=$(dirname $f) - if [[ $d == "." ]]; then - pkg=$prefix - else - pkg=$prefix/$d - fi - changed_packages[$pkg]=1 -done - -echo "changed packages: ${!changed_packages[*]}" - - -# Reports whether its argument, a package name, depends (recursively) -# on a changed package. -function depends_on_changed_package { - # According to go list, a package does not depend on itself, so - # we test that separately. - if [[ ${changed_packages[$1]} == 1 ]]; then - return 0 - fi - for dep in $(go list -f '{{range .Deps}}{{.}} {{end}}' $1); do - if [[ ${changed_packages[$dep]} == 1 ]]; then - return 0 - fi - done - return 1 -} - -# Collect the packages into two separate lists. (It is faster to call "go test" on a -# list of packages than to individually "go test" each one.) - -shorts= -fulls= -for pkg in $(go list $prefix/...); do # for each package in the repo - if depends_on_changed_package $pkg; then # if it depends on a changed package - fulls="$fulls $pkg" # run the full test - else # otherwise - shorts="$shorts $pkg" # run the short test - fi -done -run go test -race -v -short $shorts -if [[ $fulls != "" ]]; then - run go test -race -v $fulls -fi diff --git a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/.gitignore b/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/.gitignore deleted file mode 100644 index dd01583f2c..0000000000 --- a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -*~ -*.swp -*.swo - -bin/ diff --git a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/CONTRIBUTING.md b/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/CONTRIBUTING.md deleted file mode 100644 index 939e5341e7..0000000000 --- a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/CONTRIBUTING.md +++ /dev/null @@ -1,28 +0,0 @@ -# How to Contribute - -We'd love to accept your patches and contributions to this project. There are -just a few small guidelines you need to follow. - -## Contributor License Agreement - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution; -this simply gives us permission to use and redistribute your contributions as -part of the project. Head over to to see -your current agreements on file or to sign a new one. - -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. - -## Code reviews - -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. Consult -[GitHub Help](https://help.github.com/articles/about-pull-requests/) for more -information on using pull requests. - -## Community Guidelines - -This project follows [Google's Open Source Community -Guidelines](https://opensource.google.com/conduct/). diff --git a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.lock b/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.lock deleted file mode 100644 index 6edb29785f..0000000000 --- a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.lock +++ /dev/null @@ -1,38 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - branch = "master" - digest = "1:d3f4da757a2589770c6962aa3dc8edc8285889cdd12402dde001eafe9bb03c64" - name = "google.golang.org/api" - packages = [ - "compute/v0.alpha", - "compute/v0.beta", - "compute/v1", - "gensupport", - "googleapi", - "googleapi/internal/uritemplates", - ] - pruneopts = "UT" - revision = "583d854617af4d2080b5d2a24d72f7fc5a128ab2" - -[[projects]] - digest = "1:e2999bf1bb6eddc2a6aa03fe5e6629120a53088926520ca3b4765f77d7ff7eab" - name = "k8s.io/klog" - packages = ["."] - pruneopts = "UT" - revision = "a5bc97fbc634d635061f3146511332c7e313a55a" - version = "v0.1.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "google.golang.org/api/compute/v0.alpha", - "google.golang.org/api/compute/v0.beta", - "google.golang.org/api/compute/v1", - "google.golang.org/api/googleapi", - "k8s.io/klog", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.toml b/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.toml deleted file mode 100644 index 4ecfa19792..0000000000 --- a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Gopkg.toml +++ /dev/null @@ -1,33 +0,0 @@ -# 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]] - branch = "master" - name = "google.golang.org/api" - -[prune] - go-tests = true - unused-packages = true diff --git a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Makefile b/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Makefile deleted file mode 100644 index 4265e31489..0000000000 --- a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright 2018 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -all: gen build test - -.PHONY: gen -gen: - go run pkg/cloud/gen/main.go > pkg/cloud/gen.go - go run pkg/cloud/gen/main.go -mode test > pkg/cloud/gen_test.go - -.PHONY: build -build: gen - go build ./... - mkdir -p bin - -.PHONY: test -test: - go test ./... - # We cannot use golint currently due to errors in the GCP API naming. - # golint ./... - go vet ./... - -.PHONY: clean -clean: - rm -rf ./bin diff --git a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/README.md b/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/README.md deleted file mode 100644 index a836c8aff0..0000000000 --- a/vendor/github.com/GoogleCloudPlatform/k8s-cloud-provider/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# k8s-cloud-provider - -This repository contains support files for implementing the Kubernetes cloud -provider for the Google Cloud Platform. The code in this repository are the -Google Cloud specific portions of the cloud provider logic. - -## Building - -Run `make`. diff --git a/vendor/github.com/armon/circbuf/.gitignore b/vendor/github.com/armon/circbuf/.gitignore old mode 100755 new mode 100644 diff --git a/vendor/github.com/armon/circbuf/LICENSE b/vendor/github.com/armon/circbuf/LICENSE old mode 100755 new mode 100644 diff --git a/vendor/github.com/beorn7/perks/.gitignore b/vendor/github.com/beorn7/perks/.gitignore deleted file mode 100644 index 1bd9209aa1..0000000000 --- a/vendor/github.com/beorn7/perks/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*.test -*.prof diff --git a/vendor/github.com/beorn7/perks/README.md b/vendor/github.com/beorn7/perks/README.md deleted file mode 100644 index fc05777701..0000000000 --- a/vendor/github.com/beorn7/perks/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Perks for Go (golang.org) - -Perks contains the Go package quantile that computes approximate quantiles over -an unbounded data stream within low memory and CPU bounds. - -For more information and examples, see: -http://godoc.org/github.com/bmizerany/perks - -A very special thank you and shout out to Graham Cormode (Rutgers University), -Flip Korn (AT&T Labs–Research), S. Muthukrishnan (Rutgers University), and -Divesh Srivastava (AT&T Labs–Research) for their research and publication of -[Effective Computation of Biased Quantiles over Data Streams](http://www.cs.rutgers.edu/~muthu/bquant.pdf) - -Thank you, also: -* Armon Dadgar (@armon) -* Andrew Gerrand (@nf) -* Brad Fitzpatrick (@bradfitz) -* Keith Rarick (@kr) - -FAQ: - -Q: Why not move the quantile package into the project root? -A: I want to add more packages to perks later. - -Copyright (C) 2013 Blake Mizerany - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/github.com/beorn7/perks/quantile/stream.go b/vendor/github.com/beorn7/perks/quantile/stream.go index f4cabd6695..d7d14f8eb6 100644 --- a/vendor/github.com/beorn7/perks/quantile/stream.go +++ b/vendor/github.com/beorn7/perks/quantile/stream.go @@ -77,15 +77,20 @@ func NewHighBiased(epsilon float64) *Stream { // is guaranteed to be within (Quantile±Epsilon). // // See http://www.cs.rutgers.edu/~muthu/bquant.pdf for time, space, and error properties. -func NewTargeted(targets map[float64]float64) *Stream { +func NewTargeted(targetMap map[float64]float64) *Stream { + // Convert map to slice to avoid slow iterations on a map. + // ƒ is called on the hot path, so converting the map to a slice + // beforehand results in significant CPU savings. + targets := targetMapToSlice(targetMap) + ƒ := func(s *stream, r float64) float64 { var m = math.MaxFloat64 var f float64 - for quantile, epsilon := range targets { - if quantile*s.n <= r { - f = (2 * epsilon * r) / quantile + for _, t := range targets { + if t.quantile*s.n <= r { + f = (2 * t.epsilon * r) / t.quantile } else { - f = (2 * epsilon * (s.n - r)) / (1 - quantile) + f = (2 * t.epsilon * (s.n - r)) / (1 - t.quantile) } if f < m { m = f @@ -96,6 +101,25 @@ func NewTargeted(targets map[float64]float64) *Stream { return newStream(ƒ) } +type target struct { + quantile float64 + epsilon float64 +} + +func targetMapToSlice(targetMap map[float64]float64) []target { + targets := make([]target, 0, len(targetMap)) + + for quantile, epsilon := range targetMap { + t := target{ + quantile: quantile, + epsilon: epsilon, + } + targets = append(targets, t) + } + + return targets +} + // Stream computes quantiles for a stream of float64s. It is not thread-safe by // design. Take care when using across multiple goroutines. type Stream struct { diff --git a/vendor/github.com/bhendo/go-powershell/LICENSE b/vendor/github.com/bhendo/go-powershell/LICENSE new file mode 100644 index 0000000000..0e06ff19df --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/LICENSE @@ -0,0 +1,21 @@ +Copyright (c) 2017, Gorillalabs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +http://www.opensource.org/licenses/MIT diff --git a/vendor/github.com/bhendo/go-powershell/README.md b/vendor/github.com/bhendo/go-powershell/README.md new file mode 100644 index 0000000000..10c3723fbc --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/README.md @@ -0,0 +1,110 @@ +# go-powershell + +This package is inspired by [jPowerShell](https://github.com/profesorfalken/jPowerShell) +and allows one to run and remote-control a PowerShell session. Use this if you +don't have a static script that you want to execute, bur rather run dynamic +commands. + +## Installation + + go get github.com/bhendo/go-powershell + +## Usage + +To start a PowerShell shell, you need a backend. Backends take care of starting +and controlling the actual powershell.exe process. In most cases, you will want +to use the Local backend, which just uses ``os/exec`` to start the process. + +```go +package main + +import ( + "fmt" + + ps "github.com/bhendo/go-powershell" + "github.com/bhendo/go-powershell/backend" +) + +func main() { + // choose a backend + back := &backend.Local{} + + // start a local powershell process + shell, err := ps.New(back) + if err != nil { + panic(err) + } + defer shell.Exit() + + // ... and interact with it + stdout, stderr, err := shell.Execute("Get-WmiObject -Class Win32_Processor") + if err != nil { + panic(err) + } + + fmt.Println(stdout) +} +``` + +## Remote Sessions + +You can use an existing PS shell to use PSSession cmdlets to connect to remote +computers. Instead of manually handling that, you can use the Session middleware, +which takes care of authentication. Note that you can still use the "raw" shell +to execute commands on the computer where the powershell host process is running. + +```go +package main + +import ( + "fmt" + + ps "github.com/bhendo/go-powershell" + "github.com/bhendo/go-powershell/backend" + "github.com/bhendo/go-powershell/middleware" +) + +func main() { + // choose a backend + back := &backend.Local{} + + // start a local powershell process + shell, err := ps.New(back) + if err != nil { + panic(err) + } + + // prepare remote session configuration + config := middleware.NewSessionConfig() + config.ComputerName = "remote-pc-1" + + // create a new shell by wrapping the existing one in the session middleware + session, err := middleware.NewSession(shell, config) + if err != nil { + panic(err) + } + defer session.Exit() // will also close the underlying ps shell! + + // everything run via the session is run on the remote machine + stdout, stderr, err = session.Execute("Get-WmiObject -Class Win32_Processor") + if err != nil { + panic(err) + } + + fmt.Println(stdout) +} +``` + +Note that a single shell instance is not safe for concurrent use, as are remote +sessions. You can have as many remote sessions using the same shell as you like, +but you must execute commands serially. If you need concurrency, you can just +spawn multiple PowerShell processes (i.e. call ``.New()`` multiple times). + +Also, note that all commands that you execute are wrapped in special echo +statements to delimit the stdout/stderr streams. After ``.Execute()``ing a command, +you can therefore not access ``$LastExitCode`` anymore and expect meaningful +results. + +## License + +MIT, see LICENSE file. diff --git a/vendor/github.com/bhendo/go-powershell/backend/local.go b/vendor/github.com/bhendo/go-powershell/backend/local.go new file mode 100644 index 0000000000..429b1fe245 --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/backend/local.go @@ -0,0 +1,38 @@ +// Copyright (c) 2017 Gorillalabs. All rights reserved. + +package backend + +import ( + "io" + "os/exec" + + "github.com/juju/errors" +) + +type Local struct{} + +func (b *Local) StartProcess(cmd string, args ...string) (Waiter, io.Writer, io.Reader, io.Reader, error) { + command := exec.Command(cmd, args...) + + stdin, err := command.StdinPipe() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the PowerShell's stdin stream") + } + + stdout, err := command.StdoutPipe() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the PowerShell's stdout stream") + } + + stderr, err := command.StderrPipe() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the PowerShell's stderr stream") + } + + err = command.Start() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not spawn PowerShell process") + } + + return command, stdin, stdout, stderr, nil +} diff --git a/vendor/github.com/bhendo/go-powershell/backend/ssh.go b/vendor/github.com/bhendo/go-powershell/backend/ssh.go new file mode 100644 index 0000000000..68c918280d --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/backend/ssh.go @@ -0,0 +1,69 @@ +// Copyright (c) 2017 Gorillalabs. All rights reserved. + +package backend + +import ( + "fmt" + "io" + "regexp" + "strings" + + "github.com/juju/errors" +) + +// sshSession exists so we don't create a hard dependency on crypto/ssh. +type sshSession interface { + Waiter + + StdinPipe() (io.WriteCloser, error) + StdoutPipe() (io.Reader, error) + StderrPipe() (io.Reader, error) + Start(string) error +} + +type SSH struct { + Session sshSession +} + +func (b *SSH) StartProcess(cmd string, args ...string) (Waiter, io.Writer, io.Reader, io.Reader, error) { + stdin, err := b.Session.StdinPipe() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the SSH session's stdin stream") + } + + stdout, err := b.Session.StdoutPipe() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the SSH session's stdout stream") + } + + stderr, err := b.Session.StderrPipe() + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not get hold of the SSH session's stderr stream") + } + + err = b.Session.Start(b.createCmd(cmd, args)) + if err != nil { + return nil, nil, nil, nil, errors.Annotate(err, "Could not spawn process via SSH") + } + + return b.Session, stdin, stdout, stderr, nil +} + +func (b *SSH) createCmd(cmd string, args []string) string { + parts := []string{cmd} + simple := regexp.MustCompile(`^[a-z0-9_/.~+-]+$`) + + for _, arg := range args { + if !simple.MatchString(arg) { + arg = b.quote(arg) + } + + parts = append(parts, arg) + } + + return strings.Join(parts, " ") +} + +func (b *SSH) quote(s string) string { + return fmt.Sprintf(`"%s"`, s) +} diff --git a/vendor/github.com/bhendo/go-powershell/backend/types.go b/vendor/github.com/bhendo/go-powershell/backend/types.go new file mode 100644 index 0000000000..505471c128 --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/backend/types.go @@ -0,0 +1,13 @@ +// Copyright (c) 2017 Gorillalabs. All rights reserved. + +package backend + +import "io" + +type Waiter interface { + Wait() error +} + +type Starter interface { + StartProcess(cmd string, args ...string) (Waiter, io.Writer, io.Reader, io.Reader, error) +} diff --git a/vendor/github.com/bhendo/go-powershell/shell.go b/vendor/github.com/bhendo/go-powershell/shell.go new file mode 100644 index 0000000000..aca8f7a3df --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/shell.go @@ -0,0 +1,120 @@ +// Copyright (c) 2017 Gorillalabs. All rights reserved. + +package powershell + +import ( + "fmt" + "io" + "strings" + "sync" + + "github.com/bhendo/go-powershell/backend" + "github.com/bhendo/go-powershell/utils" + "github.com/juju/errors" +) + +const newline = "\r\n" + +type Shell interface { + Execute(cmd string) (string, string, error) + Exit() +} + +type shell struct { + handle backend.Waiter + stdin io.Writer + stdout io.Reader + stderr io.Reader +} + +func New(backend backend.Starter) (Shell, error) { + handle, stdin, stdout, stderr, err := backend.StartProcess("powershell.exe", "-NoExit", "-Command", "-") + if err != nil { + return nil, err + } + + return &shell{handle, stdin, stdout, stderr}, nil +} + +func (s *shell) Execute(cmd string) (string, string, error) { + if s.handle == nil { + return "", "", errors.Annotate(errors.New(cmd), "Cannot execute commands on closed shells.") + } + + outBoundary := createBoundary() + errBoundary := createBoundary() + + // wrap the command in special markers so we know when to stop reading from the pipes + full := fmt.Sprintf("%s; echo '%s'; [Console]::Error.WriteLine('%s')%s", cmd, outBoundary, errBoundary, newline) + + _, err := s.stdin.Write([]byte(full)) + if err != nil { + return "", "", errors.Annotate(errors.Annotate(err, cmd), "Could not send PowerShell command") + } + + // read stdout and stderr + sout := "" + serr := "" + + waiter := &sync.WaitGroup{} + waiter.Add(2) + + go streamReader(s.stdout, outBoundary, &sout, waiter) + go streamReader(s.stderr, errBoundary, &serr, waiter) + + waiter.Wait() + + if len(serr) > 0 { + return sout, serr, errors.Annotate(errors.New(cmd), serr) + } + + return sout, serr, nil +} + +func (s *shell) Exit() { + s.stdin.Write([]byte("exit" + newline)) + + // if it's possible to close stdin, do so (some backends, like the local one, + // do support it) + closer, ok := s.stdin.(io.Closer) + if ok { + closer.Close() + } + + s.handle.Wait() + + s.handle = nil + s.stdin = nil + s.stdout = nil + s.stderr = nil +} + +func streamReader(stream io.Reader, boundary string, buffer *string, signal *sync.WaitGroup) error { + // read all output until we have found our boundary token + output := "" + bufsize := 64 + marker := boundary + newline + + for { + buf := make([]byte, bufsize) + read, err := stream.Read(buf) + if err != nil { + return err + } + + output = output + string(buf[:read]) + + if strings.HasSuffix(output, marker) { + break + } + } + + *buffer = strings.TrimSuffix(output, marker) + signal.Done() + + return nil +} + +func createBoundary() string { + return "$gorilla" + utils.CreateRandomString(12) + "$" +} diff --git a/vendor/github.com/bhendo/go-powershell/utils/quote.go b/vendor/github.com/bhendo/go-powershell/utils/quote.go new file mode 100644 index 0000000000..84dd1d38c1 --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/utils/quote.go @@ -0,0 +1,9 @@ +// Copyright (c) 2017 Gorillalabs. All rights reserved. + +package utils + +import "strings" + +func QuoteArg(s string) string { + return "'" + strings.Replace(s, "'", "\"", -1) + "'" +} diff --git a/vendor/github.com/bhendo/go-powershell/utils/rand.go b/vendor/github.com/bhendo/go-powershell/utils/rand.go new file mode 100644 index 0000000000..245243e5a3 --- /dev/null +++ b/vendor/github.com/bhendo/go-powershell/utils/rand.go @@ -0,0 +1,20 @@ +// Copyright (c) 2017 Gorillalabs. All rights reserved. + +package utils + +import ( + "crypto/rand" + "encoding/hex" +) + +func CreateRandomString(bytes int) string { + c := bytes + b := make([]byte, c) + + _, err := rand.Read(b) + if err != nil { + panic(err) + } + + return hex.EncodeToString(b) +} diff --git a/vendor/github.com/blang/semver/package.json b/vendor/github.com/blang/semver/package.json new file mode 100644 index 0000000000..568be8d943 --- /dev/null +++ b/vendor/github.com/blang/semver/package.json @@ -0,0 +1,17 @@ +{ + "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/blang/semver/range.go b/vendor/github.com/blang/semver/range.go index 0a8eaa1c9b..fca406d479 100644 --- a/vendor/github.com/blang/semver/range.go +++ b/vendor/github.com/blang/semver/range.go @@ -2,10 +2,33 @@ package semver import ( "fmt" + "strconv" "strings" "unicode" ) +type wildcardType int + +const ( + noneWildcard wildcardType = iota + majorWildcard wildcardType = 1 + minorWildcard wildcardType = 2 + patchWildcard wildcardType = 3 +) + +func wildcardTypefromInt(i int) wildcardType { + switch i { + case 1: + return majorWildcard + case 2: + return minorWildcard + case 3: + return patchWildcard + default: + return noneWildcard + } +} + type comparator func(Version, Version) bool var ( @@ -92,8 +115,12 @@ func ParseRange(s string) (Range, error) { if err != nil { return nil, err } + expandedParts, err := expandWildcardVersion(orParts) + if err != nil { + return nil, err + } var orFn Range - for _, p := range orParts { + for _, p := range expandedParts { var andFn Range for _, ap := range p { opStr, vStr, err := splitComparatorVersion(ap) @@ -164,20 +191,39 @@ func buildVersionRange(opStr, vStr string) (*versionRange, error) { } -// splitAndTrim splits a range string by spaces and cleans leading and trailing spaces +// inArray checks if a byte is contained in an array of bytes +func inArray(s byte, list []byte) bool { + for _, el := range list { + if el == s { + return true + } + } + return false +} + +// splitAndTrim splits a range string by spaces and cleans whitespaces func splitAndTrim(s string) (result []string) { last := 0 + var lastChar byte + excludeFromSplit := []byte{'>', '<', '='} for i := 0; i < len(s); i++ { - if s[i] == ' ' { + if s[i] == ' ' && !inArray(lastChar, excludeFromSplit) { if last < i-1 { result = append(result, s[last:i]) } last = i + 1 + } else if s[i] != ' ' { + lastChar = s[i] } } if last < len(s)-1 { result = append(result, s[last:]) } + + for i, v := range result { + result[i] = strings.Replace(v, " ", "", -1) + } + // parts := strings.Split(s, " ") // for _, x := range parts { // if s := strings.TrimSpace(x); len(s) != 0 { @@ -188,7 +234,6 @@ func splitAndTrim(s string) (result []string) { } // splitComparatorVersion splits the comparator from the version. -// Spaces between the comparator and the version are not allowed. // Input must be free of leading or trailing spaces. func splitComparatorVersion(s string) (string, string, error) { i := strings.IndexFunc(s, unicode.IsDigit) @@ -198,6 +243,144 @@ func splitComparatorVersion(s string) (string, string, error) { return strings.TrimSpace(s[0:i]), s[i:], nil } +// getWildcardType will return the type of wildcard that the +// passed version contains +func getWildcardType(vStr string) wildcardType { + parts := strings.Split(vStr, ".") + nparts := len(parts) + wildcard := parts[nparts-1] + + possibleWildcardType := wildcardTypefromInt(nparts) + if wildcard == "x" { + return possibleWildcardType + } + + return noneWildcard +} + +// createVersionFromWildcard will convert a wildcard version +// into a regular version, replacing 'x's with '0's, handling +// special cases like '1.x.x' and '1.x' +func createVersionFromWildcard(vStr string) string { + // handle 1.x.x + vStr2 := strings.Replace(vStr, ".x.x", ".x", 1) + vStr2 = strings.Replace(vStr2, ".x", ".0", 1) + parts := strings.Split(vStr2, ".") + + // handle 1.x + if len(parts) == 2 { + return vStr2 + ".0" + } + + return vStr2 +} + +// incrementMajorVersion will increment the major version +// of the passed version +func incrementMajorVersion(vStr string) (string, error) { + parts := strings.Split(vStr, ".") + i, err := strconv.Atoi(parts[0]) + if err != nil { + return "", err + } + parts[0] = strconv.Itoa(i + 1) + + return strings.Join(parts, "."), nil +} + +// incrementMajorVersion will increment the minor version +// of the passed version +func incrementMinorVersion(vStr string) (string, error) { + parts := strings.Split(vStr, ".") + i, err := strconv.Atoi(parts[1]) + if err != nil { + return "", err + } + parts[1] = strconv.Itoa(i + 1) + + return strings.Join(parts, "."), nil +} + +// expandWildcardVersion will expand wildcards inside versions +// following these rules: +// +// * when dealing with patch wildcards: +// >= 1.2.x will become >= 1.2.0 +// <= 1.2.x will become < 1.3.0 +// > 1.2.x will become >= 1.3.0 +// < 1.2.x will become < 1.2.0 +// != 1.2.x will become < 1.2.0 >= 1.3.0 +// +// * when dealing with minor wildcards: +// >= 1.x will become >= 1.0.0 +// <= 1.x will become < 2.0.0 +// > 1.x will become >= 2.0.0 +// < 1.0 will become < 1.0.0 +// != 1.x will become < 1.0.0 >= 2.0.0 +// +// * when dealing with wildcards without +// version operator: +// 1.2.x will become >= 1.2.0 < 1.3.0 +// 1.x will become >= 1.0.0 < 2.0.0 +func expandWildcardVersion(parts [][]string) ([][]string, error) { + var expandedParts [][]string + for _, p := range parts { + var newParts []string + for _, ap := range p { + if strings.Index(ap, "x") != -1 { + opStr, vStr, err := splitComparatorVersion(ap) + if err != nil { + return nil, err + } + + versionWildcardType := getWildcardType(vStr) + flatVersion := createVersionFromWildcard(vStr) + + var resultOperator string + var shouldIncrementVersion bool + switch opStr { + case ">": + resultOperator = ">=" + shouldIncrementVersion = true + case ">=": + resultOperator = ">=" + case "<": + resultOperator = "<" + case "<=": + resultOperator = "<" + shouldIncrementVersion = true + case "", "=", "==": + newParts = append(newParts, ">="+flatVersion) + resultOperator = "<" + shouldIncrementVersion = true + case "!=", "!": + newParts = append(newParts, "<"+flatVersion) + resultOperator = ">=" + shouldIncrementVersion = true + } + + var resultVersion string + if shouldIncrementVersion { + switch versionWildcardType { + case patchWildcard: + resultVersion, _ = incrementMinorVersion(flatVersion) + case minorWildcard: + resultVersion, _ = incrementMajorVersion(flatVersion) + } + } else { + resultVersion = flatVersion + } + + ap = resultOperator + resultVersion + } + newParts = append(newParts, ap) + } + expandedParts = append(expandedParts, newParts) + } + + return expandedParts, nil +} + func parseComparator(s string) comparator { switch s { case "==": @@ -222,3 +405,12 @@ func parseComparator(s string) comparator { return nil } + +// MustParseRange is like ParseRange but panics if the range cannot be parsed. +func MustParseRange(s string) Range { + r, err := ParseRange(s) + if err != nil { + panic(`semver: ParseRange(` + s + `): ` + err.Error()) + } + return r +} diff --git a/vendor/github.com/blang/semver/semver.go b/vendor/github.com/blang/semver/semver.go index bbf85ce972..8ee0842e6a 100644 --- a/vendor/github.com/blang/semver/semver.go +++ b/vendor/github.com/blang/semver/semver.go @@ -200,6 +200,29 @@ func Make(s string) (Version, error) { return Parse(s) } +// ParseTolerant allows for certain version specifications that do not strictly adhere to semver +// specs to be parsed by this library. It does so by normalizing versions before passing them to +// Parse(). It currently trims spaces, removes a "v" prefix, and adds a 0 patch number to versions +// with only major and minor components specified +func ParseTolerant(s string) (Version, error) { + s = strings.TrimSpace(s) + s = strings.TrimPrefix(s, "v") + + // Split into major.minor.(patch+pr+meta) + parts := strings.SplitN(s, ".", 3) + if len(parts) < 3 { + if strings.ContainsAny(parts[len(parts)-1], "+-") { + return Version{}, errors.New("Short version cannot contain PreRelease/Build meta data") + } + for len(parts) < 3 { + parts = append(parts, "0") + } + s = strings.Join(parts, ".") + } + + return Parse(s) +} + // Parse parses version string and returns a validated Version or error func Parse(s string) (Version, error) { if len(s) == 0 { diff --git a/vendor/github.com/buger/jsonparser/.gitignore b/vendor/github.com/buger/jsonparser/.gitignore new file mode 100644 index 0000000000..9de1b0fa60 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/.gitignore @@ -0,0 +1,10 @@ + +*.test + +*.out + +*.mprof + +vendor/github.com/buger/goterm/ +prof.cpu +prof.mem diff --git a/vendor/github.com/buger/jsonparser/.travis.yml b/vendor/github.com/buger/jsonparser/.travis.yml new file mode 100644 index 0000000000..8e29f1312a --- /dev/null +++ b/vendor/github.com/buger/jsonparser/.travis.yml @@ -0,0 +1,8 @@ +language: go +go: + - 1.7.x + - 1.8.x + - 1.9.x + - 1.10.x + - 1.11.x +script: go test -v ./. diff --git a/vendor/github.com/buger/jsonparser/Dockerfile b/vendor/github.com/buger/jsonparser/Dockerfile new file mode 100644 index 0000000000..37fc9fd0b4 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/Dockerfile @@ -0,0 +1,12 @@ +FROM golang:1.6 + +RUN go get github.com/Jeffail/gabs +RUN go get github.com/bitly/go-simplejson +RUN go get github.com/pquerna/ffjson +RUN go get github.com/antonholmquist/jason +RUN go get github.com/mreiferson/go-ujson +RUN go get -tags=unsafe -u github.com/ugorji/go/codec +RUN go get github.com/mailru/easyjson + +WORKDIR /go/src/github.com/buger/jsonparser +ADD . /go/src/github.com/buger/jsonparser \ No newline at end of file diff --git a/vendor/github.com/buger/jsonparser/LICENSE b/vendor/github.com/buger/jsonparser/LICENSE new file mode 100644 index 0000000000..ac25aeb7da --- /dev/null +++ b/vendor/github.com/buger/jsonparser/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2016 Leonid Bugaev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vendor/github.com/buger/jsonparser/Makefile b/vendor/github.com/buger/jsonparser/Makefile new file mode 100644 index 0000000000..e843368cf1 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/Makefile @@ -0,0 +1,36 @@ +SOURCE = parser.go +CONTAINER = jsonparser +SOURCE_PATH = /go/src/github.com/buger/jsonparser +BENCHMARK = JsonParser +BENCHTIME = 5s +TEST = . +DRUN = docker run -v `pwd`:$(SOURCE_PATH) -i -t $(CONTAINER) + +build: + docker build -t $(CONTAINER) . + +race: + $(DRUN) --env GORACE="halt_on_error=1" go test ./. $(ARGS) -v -race -timeout 15s + +bench: + $(DRUN) go test $(LDFLAGS) -test.benchmem -bench $(BENCHMARK) ./benchmark/ $(ARGS) -benchtime $(BENCHTIME) -v + +bench_local: + $(DRUN) go test $(LDFLAGS) -test.benchmem -bench . $(ARGS) -benchtime $(BENCHTIME) -v + +profile: + $(DRUN) go test $(LDFLAGS) -test.benchmem -bench $(BENCHMARK) ./benchmark/ $(ARGS) -memprofile mem.mprof -v + $(DRUN) go test $(LDFLAGS) -test.benchmem -bench $(BENCHMARK) ./benchmark/ $(ARGS) -cpuprofile cpu.out -v + $(DRUN) go test $(LDFLAGS) -test.benchmem -bench $(BENCHMARK) ./benchmark/ $(ARGS) -c + +test: + $(DRUN) go test $(LDFLAGS) ./ -run $(TEST) -timeout 10s $(ARGS) -v + +fmt: + $(DRUN) go fmt ./... + +vet: + $(DRUN) go vet ./. + +bash: + $(DRUN) /bin/bash \ No newline at end of file diff --git a/vendor/github.com/buger/jsonparser/README.md b/vendor/github.com/buger/jsonparser/README.md new file mode 100644 index 0000000000..a9ee6022dc --- /dev/null +++ b/vendor/github.com/buger/jsonparser/README.md @@ -0,0 +1,365 @@ +[![Go Report Card](https://goreportcard.com/badge/github.com/buger/jsonparser)](https://goreportcard.com/report/github.com/buger/jsonparser) ![License](https://img.shields.io/dub/l/vibe-d.svg) +# Alternative JSON parser for Go (so far fastest) + +It does not require you to know the structure of the payload (eg. create structs), and allows accessing fields by providing the path to them. It is up to **10 times faster** than standard `encoding/json` package (depending on payload size and usage), **allocates no memory**. See benchmarks below. + +## Rationale +Originally I made this for a project that relies on a lot of 3rd party APIs that can be unpredictable and complex. +I love simplicity and prefer to avoid external dependecies. `encoding/json` requires you to know exactly your data structures, or if you prefer to use `map[string]interface{}` instead, it will be very slow and hard to manage. +I investigated what's on the market and found that most libraries are just wrappers around `encoding/json`, there is few options with own parsers (`ffjson`, `easyjson`), but they still requires you to create data structures. + + +Goal of this project is to push JSON parser to the performance limits and not sacrifice with compliance and developer user experience. + +## Example +For the given JSON our goal is to extract the user's full name, number of github followers and avatar. + +```go +import "github.com/buger/jsonparser" + +... + +data := []byte(`{ + "person": { + "name": { + "first": "Leonid", + "last": "Bugaev", + "fullName": "Leonid Bugaev" + }, + "github": { + "handle": "buger", + "followers": 109 + }, + "avatars": [ + { "url": "https://avatars1.githubusercontent.com/u/14009?v=3&s=460", "type": "thumbnail" } + ] + }, + "company": { + "name": "Acme" + } +}`) + +// You can specify key path by providing arguments to Get function +jsonparser.Get(data, "person", "name", "fullName") + +// There is `GetInt` and `GetBoolean` helpers if you exactly know key data type +jsonparser.GetInt(data, "person", "github", "followers") + +// When you try to get object, it will return you []byte slice pointer to data containing it +// In `company` it will be `{"name": "Acme"}` +jsonparser.Get(data, "company") + +// If the key doesn't exist it will throw an error +var size int64 +if value, err := jsonparser.GetInt(data, "company", "size"); err == nil { + size = value +} + +// You can use `ArrayEach` helper to iterate items [item1, item2 .... itemN] +jsonparser.ArrayEach(data, func(value []byte, dataType jsonparser.ValueType, offset int, err error) { + fmt.Println(jsonparser.Get(value, "url")) +}, "person", "avatars") + +// Or use can access fields by index! +jsonparser.GetInt("person", "avatars", "[0]", "url") + +// You can use `ObjectEach` helper to iterate objects { "key1":object1, "key2":object2, .... "keyN":objectN } +jsonparser.ObjectEach(data, func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error { + fmt.Printf("Key: '%s'\n Value: '%s'\n Type: %s\n", string(key), string(value), dataType) + return nil +}, "person", "name") + +// The most efficient way to extract multiple keys is `EachKey` + +paths := [][]string{ + []string{"person", "name", "fullName"}, + []string{"person", "avatars", "[0]", "url"}, + []string{"company", "url"}, +} +jsonparser.EachKey(data, func(idx int, value []byte, vt jsonparser.ValueType, err error){ + switch idx { + case 0: // []string{"person", "name", "fullName"} + ... + case 1: // []string{"person", "avatars", "[0]", "url"} + ... + case 2: // []string{"company", "url"}, + ... + } +}, paths...) + +// For more information see docs below +``` + +## Need to speedup your app? + +I'm available for consulting and can help you push your app performance to the limits. Ping me at: leonsbox@gmail.com. + +## Reference + +Library API is really simple. You just need the `Get` method to perform any operation. The rest is just helpers around it. + +You also can view API at [godoc.org](https://godoc.org/github.com/buger/jsonparser) + + +### **`Get`** +```go +func Get(data []byte, keys ...string) (value []byte, dataType jsonparser.ValueType, offset int, err error) +``` +Receives data structure, and key path to extract value from. + +Returns: +* `value` - Pointer to original data structure containing key value, or just empty slice if nothing found or error +* `dataType` - Can be: `NotExist`, `String`, `Number`, `Object`, `Array`, `Boolean` or `Null` +* `offset` - Offset from provided data structure where key value ends. Used mostly internally, for example for `ArrayEach` helper. +* `err` - If the key is not found or any other parsing issue, it should return error. If key not found it also sets `dataType` to `NotExist` + +Accepts multiple keys to specify path to JSON value (in case of quering nested structures). +If no keys are provided it will try to extract the closest JSON value (simple ones or object/array), useful for reading streams or arrays, see `ArrayEach` implementation. + +Note that keys can be an array indexes: `jsonparser.GetInt("person", "avatars", "[0]", "url")`, pretty cool, yeah? + +### **`GetString`** +```go +func GetString(data []byte, keys ...string) (val string, err error) +``` +Returns strings properly handing escaped and unicode characters. Note that this will cause additional memory allocations. + +### **`GetUnsafeString`** +If you need string in your app, and ready to sacrifice with support of escaped symbols in favor of speed. It returns string mapped to existing byte slice memory, without any allocations: +```go +s, _, := jsonparser.GetUnsafeString(data, "person", "name", "title") +switch s { + case 'CEO': + ... + case 'Engineer' + ... + ... +} +``` +Note that `unsafe` here means that your string will exist until GC will free underlying byte slice, for most of cases it means that you can use this string only in current context, and should not pass it anywhere externally: through channels or any other way. + + +### **`GetBoolean`**, **`GetInt`** and **`GetFloat`** +```go +func GetBoolean(data []byte, keys ...string) (val bool, err error) + +func GetFloat(data []byte, keys ...string) (val float64, err error) + +func GetInt(data []byte, keys ...string) (val int64, err error) +``` +If you know the key type, you can use the helpers above. +If key data type do not match, it will return error. + +### **`ArrayEach`** +```go +func ArrayEach(data []byte, cb func(value []byte, dataType jsonparser.ValueType, offset int, err error), keys ...string) +``` +Needed for iterating arrays, accepts a callback function with the same return arguments as `Get`. + +### **`ObjectEach`** +```go +func ObjectEach(data []byte, callback func(key []byte, value []byte, dataType ValueType, offset int) error, keys ...string) (err error) +``` +Needed for iterating object, accepts a callback function. Example: +```go +var handler func([]byte, []byte, jsonparser.ValueType, int) error +handler = func(key []byte, value []byte, dataType jsonparser.ValueType, offset int) error { + //do stuff here +} +jsonparser.ObjectEach(myJson, handler) +``` + + +### **`EachKey`** +```go +func EachKey(data []byte, cb func(idx int, value []byte, dataType jsonparser.ValueType, err error), paths ...[]string) +``` +When you need to read multiple keys, and you do not afraid of low-level API `EachKey` is your friend. It read payload only single time, and calls callback function once path is found. For example when you call multiple times `Get`, it has to process payload multiple times, each time you call it. Depending on payload `EachKey` can be multiple times faster than `Get`. Path can use nested keys as well! + +```go +paths := [][]string{ + []string{"uuid"}, + []string{"tz"}, + []string{"ua"}, + []string{"st"}, +} +var data SmallPayload + +jsonparser.EachKey(smallFixture, func(idx int, value []byte, vt jsonparser.ValueType, err error){ + switch idx { + case 0: + data.Uuid, _ = value + case 1: + v, _ := jsonparser.ParseInt(value) + data.Tz = int(v) + case 2: + data.Ua, _ = value + case 3: + v, _ := jsonparser.ParseInt(value) + data.St = int(v) + } +}, paths...) +``` + +### **`Set`** +```go +func Set(data []byte, setValue []byte, keys ...string) (value []byte, err error) +``` +Receives existing data structure, key path to set, and value to set at that key. *This functionality is experimental.* + +Returns: +* `value` - Pointer to original data structure with updated or added key value. +* `err` - If any parsing issue, it should return error. + +Accepts multiple keys to specify path to JSON value (in case of updating or creating nested structures). + +Note that keys can be an array indexes: `jsonparser.Set(data, []byte("http://github.com"), "person", "avatars", "[0]", "url")` + +### **`Delete`** +```go +func Delete(data []byte, keys ...string) value []byte +``` +Receives existing data structure, and key path to delete. *This functionality is experimental.* + +Returns: +* `value` - Pointer to original data structure with key path deleted if it can be found. If there is no key path, then the whole data structure is deleted. + +Accepts multiple keys to specify path to JSON value (in case of updating or creating nested structures). + +Note that keys can be an array indexes: `jsonparser.Delete(data, "person", "avatars", "[0]", "url")` + + +## What makes it so fast? +* It does not rely on `encoding/json`, `reflection` or `interface{}`, the only real package dependency is `bytes`. +* Operates with JSON payload on byte level, providing you pointers to the original data structure: no memory allocation. +* No automatic type conversions, by default everything is a []byte, but it provides you value type, so you can convert by yourself (there is few helpers included). +* Does not parse full record, only keys you specified + + +## Benchmarks + +There are 3 benchmark types, trying to simulate real-life usage for small, medium and large JSON payloads. +For each metric, the lower value is better. Time/op is in nanoseconds. Values better than standard encoding/json marked as bold text. +Benchmarks run on standard Linode 1024 box. + +Compared libraries: +* https://golang.org/pkg/encoding/json +* https://github.com/Jeffail/gabs +* https://github.com/a8m/djson +* https://github.com/bitly/go-simplejson +* https://github.com/antonholmquist/jason +* https://github.com/mreiferson/go-ujson +* https://github.com/ugorji/go/codec +* https://github.com/pquerna/ffjson +* https://github.com/mailru/easyjson +* https://github.com/buger/jsonparser + +#### TLDR +If you want to skip next sections we have 2 winner: `jsonparser` and `easyjson`. +`jsonparser` is up to 10 times faster than standard `encoding/json` package (depending on payload size and usage), and almost infinitely (literally) better in memory consumption because it operates with data on byte level, and provide direct slice pointers. +`easyjson` wins in CPU in medium tests and frankly i'm impressed with this package: it is remarkable results considering that it is almost drop-in replacement for `encoding/json` (require some code generation). + +It's hard to fully compare `jsonparser` and `easyjson` (or `ffson`), they a true parsers and fully process record, unlike `jsonparser` which parse only keys you specified. + +If you searching for replacement of `encoding/json` while keeping structs, `easyjson` is an amazing choice. If you want to process dynamic JSON, have memory constrains, or more control over your data you should try `jsonparser`. + +`jsonparser` performance heavily depends on usage, and it works best when you do not need to process full record, only some keys. The more calls you need to make, the slower it will be, in contrast `easyjson` (or `ffjson`, `encoding/json`) parser record only 1 time, and then you can make as many calls as you want. + +With great power comes great responsibility! :) + + +#### Small payload + +Each test processes 190 bytes of http log as a JSON record. +It should read multiple fields. +https://github.com/buger/jsonparser/blob/master/benchmark/benchmark_small_payload_test.go + +Library | time/op | bytes/op | allocs/op + ------ | ------- | -------- | ------- +encoding/json struct | 7879 | 880 | 18 +encoding/json interface{} | 8946 | 1521 | 38 +Jeffail/gabs | 10053 | 1649 | 46 +bitly/go-simplejson | 10128 | 2241 | 36 +antonholmquist/jason | 27152 | 7237 | 101 +github.com/ugorji/go/codec | 8806 | 2176 | 31 +mreiferson/go-ujson | **7008** | **1409** | 37 +a8m/djson | 3862 | 1249 | 30 +pquerna/ffjson | **3769** | **624** | **15** +mailru/easyjson | **2002** | **192** | **9** +buger/jsonparser | **1367** | **0** | **0** +buger/jsonparser (EachKey API) | **809** | **0** | **0** + +Winners are ffjson, easyjson and jsonparser, where jsonparser is up to 9.8x faster than encoding/json and 4.6x faster than ffjson, and slightly faster than easyjson. +If you look at memory allocation, jsonparser has no rivals, as it makes no data copy and operates with raw []byte structures and pointers to it. + +#### Medium payload + +Each test processes a 2.4kb JSON record (based on Clearbit API). +It should read multiple nested fields and 1 array. + +https://github.com/buger/jsonparser/blob/master/benchmark/benchmark_medium_payload_test.go + +| Library | time/op | bytes/op | allocs/op | +| ------- | ------- | -------- | --------- | +| encoding/json struct | 57749 | 1336 | 29 | +| encoding/json interface{} | 79297 | 10627 | 215 | +| Jeffail/gabs | 83807 | 11202 | 235 | +| bitly/go-simplejson | 88187 | 17187 | 220 | +| antonholmquist/jason | 94099 | 19013 | 247 | +| github.com/ugorji/go/codec | 114719 | 6712 | 152 | +| mreiferson/go-ujson | **56972** | 11547 | 270 | +| a8m/djson | 28525 | 10196 | 198 | +| pquerna/ffjson | **20298** | **856** | **20** | +| mailru/easyjson | **10512** | **336** | **12** | +| buger/jsonparser | **15955** | **0** | **0** | +| buger/jsonparser (EachKey API) | **8916** | **0** | **0** | + +The difference between ffjson and jsonparser in CPU usage is smaller, while the memory consumption difference is growing. On the other hand `easyjson` shows remarkable performance for medium payload. + +`gabs`, `go-simplejson` and `jason` are based on encoding/json and map[string]interface{} and actually only helpers for unstructured JSON, their performance correlate with `encoding/json interface{}`, and they will skip next round. +`go-ujson` while have its own parser, shows same performance as `encoding/json`, also skips next round. Same situation with `ugorji/go/codec`, but it showed unexpectedly bad performance for complex payloads. + + +#### Large payload + +Each test processes a 24kb JSON record (based on Discourse API) +It should read 2 arrays, and for each item in array get a few fields. +Basically it means processing a full JSON file. + +https://github.com/buger/jsonparser/blob/master/benchmark/benchmark_large_payload_test.go + +| Library | time/op | bytes/op | allocs/op | +| --- | --- | --- | --- | +| encoding/json struct | 748336 | 8272 | 307 | +| encoding/json interface{} | 1224271 | 215425 | 3395 | +| a8m/djson | 510082 | 213682 | 2845 | +| pquerna/ffjson | **312271** | **7792** | **298** | +| mailru/easyjson | **154186** | **6992** | **288** | +| buger/jsonparser | **85308** | **0** | **0** | + +`jsonparser` now is a winner, but do not forget that it is way more lightweight parser than `ffson` or `easyjson`, and they have to parser all the data, while `jsonparser` parse only what you need. All `ffjson`, `easysjon` and `jsonparser` have their own parsing code, and does not depend on `encoding/json` or `interface{}`, thats one of the reasons why they are so fast. `easyjson` also use a bit of `unsafe` package to reduce memory consuption (in theory it can lead to some unexpected GC issue, but i did not tested enough) + +Also last benchmark did not included `EachKey` test, because in this particular case we need to read lot of Array values, and using `ArrayEach` is more efficient. + +## Questions and support + +All bug-reports and suggestions should go though Github Issues. + +## Contributing + +1. Fork it +2. Create your feature branch (git checkout -b my-new-feature) +3. Commit your changes (git commit -am 'Added some feature') +4. Push to the branch (git push origin my-new-feature) +5. Create new Pull Request + +## Development + +All my development happens using Docker, and repo include some Make tasks to simplify development. + +* `make build` - builds docker image, usually can be called only once +* `make test` - run tests +* `make fmt` - run go fmt +* `make bench` - run benchmarks (if you need to run only single benchmark modify `BENCHMARK` variable in make file) +* `make profile` - runs benchmark and generate 3 files- `cpu.out`, `mem.mprof` and `benchmark.test` binary, which can be used for `go tool pprof` +* `make bash` - enter container (i use it for running `go tool pprof` above) diff --git a/vendor/github.com/buger/jsonparser/bytes.go b/vendor/github.com/buger/jsonparser/bytes.go new file mode 100644 index 0000000000..0bb0ff3956 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/bytes.go @@ -0,0 +1,47 @@ +package jsonparser + +import ( + bio "bytes" +) + +// minInt64 '-9223372036854775808' is the smallest representable number in int64 +const minInt64 = `9223372036854775808` + +// About 2x faster then strconv.ParseInt because it only supports base 10, which is enough for JSON +func parseInt(bytes []byte) (v int64, ok bool, overflow bool) { + if len(bytes) == 0 { + return 0, false, false + } + + var neg bool = false + if bytes[0] == '-' { + neg = true + bytes = bytes[1:] + } + + var b int64 = 0 + for _, c := range bytes { + if c >= '0' && c <= '9' { + b = (10 * v) + int64(c-'0') + } else { + return 0, false, false + } + if overflow = (b < v); overflow { + break + } + v = b + } + + if overflow { + if neg && bio.Equal(bytes, []byte(minInt64)) { + return b, true, false + } + return 0, false, true + } + + if neg { + return -v, true, false + } else { + return v, true, false + } +} diff --git a/vendor/github.com/buger/jsonparser/bytes_safe.go b/vendor/github.com/buger/jsonparser/bytes_safe.go new file mode 100644 index 0000000000..ff16a4a195 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/bytes_safe.go @@ -0,0 +1,25 @@ +// +build appengine appenginevm + +package jsonparser + +import ( + "strconv" +) + +// See fastbytes_unsafe.go for explanation on why *[]byte is used (signatures must be consistent with those in that file) + +func equalStr(b *[]byte, s string) bool { + return string(*b) == s +} + +func parseFloat(b *[]byte) (float64, error) { + return strconv.ParseFloat(string(*b), 64) +} + +func bytesToString(b *[]byte) string { + return string(*b) +} + +func StringToBytes(s string) []byte { + return []byte(s) +} diff --git a/vendor/github.com/buger/jsonparser/bytes_unsafe.go b/vendor/github.com/buger/jsonparser/bytes_unsafe.go new file mode 100644 index 0000000000..d3f523ddeb --- /dev/null +++ b/vendor/github.com/buger/jsonparser/bytes_unsafe.go @@ -0,0 +1,42 @@ +// +build !appengine,!appenginevm + +package jsonparser + +import ( + "reflect" + "strconv" + "unsafe" +) + +// +// The reason for using *[]byte rather than []byte in parameters is an optimization. As of Go 1.6, +// the compiler cannot perfectly inline the function when using a non-pointer slice. That is, +// the non-pointer []byte parameter version is slower than if its function body is manually +// inlined, whereas the pointer []byte version is equally fast to the manually inlined +// version. Instruction count in assembly taken from "go tool compile" confirms this difference. +// +// TODO: Remove hack after Go 1.7 release +// +func equalStr(b *[]byte, s string) bool { + return *(*string)(unsafe.Pointer(b)) == s +} + +func parseFloat(b *[]byte) (float64, error) { + return strconv.ParseFloat(*(*string)(unsafe.Pointer(b)), 64) +} + +// A hack until issue golang/go#2632 is fixed. +// See: https://github.com/golang/go/issues/2632 +func bytesToString(b *[]byte) string { + return *(*string)(unsafe.Pointer(b)) +} + +func StringToBytes(s string) []byte { + sh := (*reflect.StringHeader)(unsafe.Pointer(&s)) + bh := reflect.SliceHeader{ + Data: sh.Data, + Len: sh.Len, + Cap: sh.Len, + } + return *(*[]byte)(unsafe.Pointer(&bh)) +} diff --git a/vendor/github.com/buger/jsonparser/escape.go b/vendor/github.com/buger/jsonparser/escape.go new file mode 100644 index 0000000000..49669b9420 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/escape.go @@ -0,0 +1,173 @@ +package jsonparser + +import ( + "bytes" + "unicode/utf8" +) + +// JSON Unicode stuff: see https://tools.ietf.org/html/rfc7159#section-7 + +const supplementalPlanesOffset = 0x10000 +const highSurrogateOffset = 0xD800 +const lowSurrogateOffset = 0xDC00 + +const basicMultilingualPlaneReservedOffset = 0xDFFF +const basicMultilingualPlaneOffset = 0xFFFF + +func combineUTF16Surrogates(high, low rune) rune { + return supplementalPlanesOffset + (high-highSurrogateOffset)<<10 + (low - lowSurrogateOffset) +} + +const badHex = -1 + +func h2I(c byte) int { + switch { + case c >= '0' && c <= '9': + return int(c - '0') + case c >= 'A' && c <= 'F': + return int(c - 'A' + 10) + case c >= 'a' && c <= 'f': + return int(c - 'a' + 10) + } + return badHex +} + +// decodeSingleUnicodeEscape decodes a single \uXXXX escape sequence. The prefix \u is assumed to be present and +// is not checked. +// In JSON, these escapes can either come alone or as part of "UTF16 surrogate pairs" that must be handled together. +// This function only handles one; decodeUnicodeEscape handles this more complex case. +func decodeSingleUnicodeEscape(in []byte) (rune, bool) { + // We need at least 6 characters total + if len(in) < 6 { + return utf8.RuneError, false + } + + // Convert hex to decimal + h1, h2, h3, h4 := h2I(in[2]), h2I(in[3]), h2I(in[4]), h2I(in[5]) + if h1 == badHex || h2 == badHex || h3 == badHex || h4 == badHex { + return utf8.RuneError, false + } + + // Compose the hex digits + return rune(h1<<12 + h2<<8 + h3<<4 + h4), true +} + +// isUTF16EncodedRune checks if a rune is in the range for non-BMP characters, +// which is used to describe UTF16 chars. +// Source: https://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane +func isUTF16EncodedRune(r rune) bool { + return highSurrogateOffset <= r && r <= basicMultilingualPlaneReservedOffset +} + +func decodeUnicodeEscape(in []byte) (rune, int) { + if r, ok := decodeSingleUnicodeEscape(in); !ok { + // Invalid Unicode escape + return utf8.RuneError, -1 + } else if r <= basicMultilingualPlaneOffset && !isUTF16EncodedRune(r) { + // Valid Unicode escape in Basic Multilingual Plane + return r, 6 + } else if r2, ok := decodeSingleUnicodeEscape(in[6:]); !ok { // Note: previous decodeSingleUnicodeEscape success guarantees at least 6 bytes remain + // UTF16 "high surrogate" without manditory valid following Unicode escape for the "low surrogate" + return utf8.RuneError, -1 + } else if r2 < lowSurrogateOffset { + // Invalid UTF16 "low surrogate" + return utf8.RuneError, -1 + } else { + // Valid UTF16 surrogate pair + return combineUTF16Surrogates(r, r2), 12 + } +} + +// backslashCharEscapeTable: when '\X' is found for some byte X, it is to be replaced with backslashCharEscapeTable[X] +var backslashCharEscapeTable = [...]byte{ + '"': '"', + '\\': '\\', + '/': '/', + 'b': '\b', + 'f': '\f', + 'n': '\n', + 'r': '\r', + 't': '\t', +} + +// unescapeToUTF8 unescapes the single escape sequence starting at 'in' into 'out' and returns +// how many characters were consumed from 'in' and emitted into 'out'. +// If a valid escape sequence does not appear as a prefix of 'in', (-1, -1) to signal the error. +func unescapeToUTF8(in, out []byte) (inLen int, outLen int) { + if len(in) < 2 || in[0] != '\\' { + // Invalid escape due to insufficient characters for any escape or no initial backslash + return -1, -1 + } + + // https://tools.ietf.org/html/rfc7159#section-7 + switch e := in[1]; e { + case '"', '\\', '/', 'b', 'f', 'n', 'r', 't': + // Valid basic 2-character escapes (use lookup table) + out[0] = backslashCharEscapeTable[e] + return 2, 1 + case 'u': + // Unicode escape + if r, inLen := decodeUnicodeEscape(in); inLen == -1 { + // Invalid Unicode escape + return -1, -1 + } else { + // Valid Unicode escape; re-encode as UTF8 + outLen := utf8.EncodeRune(out, r) + return inLen, outLen + } + } + + return -1, -1 +} + +// unescape unescapes the string contained in 'in' and returns it as a slice. +// If 'in' contains no escaped characters: +// Returns 'in'. +// Else, if 'out' is of sufficient capacity (guaranteed if cap(out) >= len(in)): +// 'out' is used to build the unescaped string and is returned with no extra allocation +// Else: +// A new slice is allocated and returned. +func Unescape(in, out []byte) ([]byte, error) { + firstBackslash := bytes.IndexByte(in, '\\') + if firstBackslash == -1 { + return in, nil + } + + // Get a buffer of sufficient size (allocate if needed) + if cap(out) < len(in) { + out = make([]byte, len(in)) + } else { + out = out[0:len(in)] + } + + // Copy the first sequence of unescaped bytes to the output and obtain a buffer pointer (subslice) + copy(out, in[:firstBackslash]) + in = in[firstBackslash:] + buf := out[firstBackslash:] + + for len(in) > 0 { + // Unescape the next escaped character + inLen, bufLen := unescapeToUTF8(in, buf) + if inLen == -1 { + return nil, MalformedStringEscapeError + } + + in = in[inLen:] + buf = buf[bufLen:] + + // Copy everything up until the next backslash + nextBackslash := bytes.IndexByte(in, '\\') + if nextBackslash == -1 { + copy(buf, in) + buf = buf[len(in):] + break + } else { + copy(buf, in[:nextBackslash]) + buf = buf[nextBackslash:] + in = in[nextBackslash:] + } + } + + // Trim the out buffer to the amount that was actually emitted + return out[:len(out)-len(buf)], nil +} diff --git a/vendor/github.com/buger/jsonparser/parser.go b/vendor/github.com/buger/jsonparser/parser.go new file mode 100644 index 0000000000..5c25200906 --- /dev/null +++ b/vendor/github.com/buger/jsonparser/parser.go @@ -0,0 +1,1211 @@ +package jsonparser + +import ( + "bytes" + "errors" + "fmt" + "math" + "strconv" +) + +// Errors +var ( + KeyPathNotFoundError = errors.New("Key path not found") + UnknownValueTypeError = errors.New("Unknown value type") + MalformedJsonError = errors.New("Malformed JSON error") + MalformedStringError = errors.New("Value is string, but can't find closing '\"' symbol") + MalformedArrayError = errors.New("Value is array, but can't find closing ']' symbol") + MalformedObjectError = errors.New("Value looks like object, but can't find closing '}' symbol") + MalformedValueError = errors.New("Value looks like Number/Boolean/None, but can't find its end: ',' or '}' symbol") + OverflowIntegerError = errors.New("Value is number, but overflowed while parsing") + MalformedStringEscapeError = errors.New("Encountered an invalid escape sequence in a string") +) + +// How much stack space to allocate for unescaping JSON strings; if a string longer +// than this needs to be escaped, it will result in a heap allocation +const unescapeStackBufSize = 64 + +func tokenEnd(data []byte) int { + for i, c := range data { + switch c { + case ' ', '\n', '\r', '\t', ',', '}', ']': + return i + } + } + + return len(data) +} + +func findTokenStart(data []byte, token byte) int { + for i := len(data) - 1; i >= 0; i-- { + switch data[i] { + case token: + return i + case '[', '{': + return 0 + } + } + + return 0 +} + +func findKeyStart(data []byte, key string) (int, error) { + i := 0 + ln := len(data) + if ln > 0 && (data[0] == '{' || data[0] == '[') { + i = 1 + } + var stackbuf [unescapeStackBufSize]byte // stack-allocated array for allocation-free unescaping of small strings + + if ku, err := Unescape(StringToBytes(key), stackbuf[:]); err == nil { + key = bytesToString(&ku) + } + + for i < ln { + switch data[i] { + case '"': + i++ + keyBegin := i + + strEnd, keyEscaped := stringEnd(data[i:]) + if strEnd == -1 { + break + } + i += strEnd + keyEnd := i - 1 + + valueOffset := nextToken(data[i:]) + if valueOffset == -1 { + break + } + + i += valueOffset + + // if string is a key, and key level match + k := data[keyBegin:keyEnd] + // for unescape: if there are no escape sequences, this is cheap; if there are, it is a + // bit more expensive, but causes no allocations unless len(key) > unescapeStackBufSize + if keyEscaped { + if ku, err := Unescape(k, stackbuf[:]); err != nil { + break + } else { + k = ku + } + } + + if data[i] == ':' && len(key) == len(k) && bytesToString(&k) == key { + return keyBegin - 1, nil + } + + case '[': + i = blockEnd(data[i:], data[i], ']') + i + case '{': + i = blockEnd(data[i:], data[i], '}') + i + } + i++ + } + + return -1, KeyPathNotFoundError +} + +func tokenStart(data []byte) int { + for i := len(data) - 1; i >= 0; i-- { + switch data[i] { + case '\n', '\r', '\t', ',', '{', '[': + return i + } + } + + return 0 +} + +// Find position of next character which is not whitespace +func nextToken(data []byte) int { + for i, c := range data { + switch c { + case ' ', '\n', '\r', '\t': + continue + default: + return i + } + } + + return -1 +} + +// Find position of last character which is not whitespace +func lastToken(data []byte) int { + for i := len(data) - 1; i >= 0; i-- { + switch data[i] { + case ' ', '\n', '\r', '\t': + continue + default: + return i + } + } + + return -1 +} + +// Tries to find the end of string +// Support if string contains escaped quote symbols. +func stringEnd(data []byte) (int, bool) { + escaped := false + for i, c := range data { + if c == '"' { + if !escaped { + return i + 1, false + } else { + j := i - 1 + for { + if j < 0 || data[j] != '\\' { + return i + 1, true // even number of backslashes + } + j-- + if j < 0 || data[j] != '\\' { + break // odd number of backslashes + } + j-- + + } + } + } else if c == '\\' { + escaped = true + } + } + + return -1, escaped +} + +// Find end of the data structure, array or object. +// For array openSym and closeSym will be '[' and ']', for object '{' and '}' +func blockEnd(data []byte, openSym byte, closeSym byte) int { + level := 0 + i := 0 + ln := len(data) + + for i < ln { + switch data[i] { + case '"': // If inside string, skip it + se, _ := stringEnd(data[i+1:]) + if se == -1 { + return -1 + } + i += se + case openSym: // If open symbol, increase level + level++ + case closeSym: // If close symbol, increase level + level-- + + // If we have returned to the original level, we're done + if level == 0 { + return i + 1 + } + } + i++ + } + + return -1 +} + +func searchKeys(data []byte, keys ...string) int { + keyLevel := 0 + level := 0 + i := 0 + ln := len(data) + lk := len(keys) + lastMatched := true + + if lk == 0 { + return 0 + } + + var stackbuf [unescapeStackBufSize]byte // stack-allocated array for allocation-free unescaping of small strings + + for i < ln { + switch data[i] { + case '"': + i++ + keyBegin := i + + strEnd, keyEscaped := stringEnd(data[i:]) + if strEnd == -1 { + return -1 + } + i += strEnd + keyEnd := i - 1 + + valueOffset := nextToken(data[i:]) + if valueOffset == -1 { + return -1 + } + + i += valueOffset + + // if string is a key + if data[i] == ':' { + if level < 1 { + return -1 + } + + key := data[keyBegin:keyEnd] + + // for unescape: if there are no escape sequences, this is cheap; if there are, it is a + // bit more expensive, but causes no allocations unless len(key) > unescapeStackBufSize + var keyUnesc []byte + if !keyEscaped { + keyUnesc = key + } else if ku, err := Unescape(key, stackbuf[:]); err != nil { + return -1 + } else { + keyUnesc = ku + } + + if equalStr(&keyUnesc, keys[level-1]) { + lastMatched = true + + // if key level match + if keyLevel == level-1 { + keyLevel++ + // If we found all keys in path + if keyLevel == lk { + return i + 1 + } + } + } else { + lastMatched = false + } + } else { + i-- + } + case '{': + + // in case parent key is matched then only we will increase the level otherwise can directly + // can move to the end of this block + if !lastMatched { + end := blockEnd(data[i:], '{', '}') + i += end - 1 + } else{ + level++ + } + case '}': + level-- + if level == keyLevel { + keyLevel-- + } + case '[': + // If we want to get array element by index + if keyLevel == level && keys[level][0] == '[' { + aIdx, err := strconv.Atoi(keys[level][1 : len(keys[level])-1]) + if err != nil { + return -1 + } + var curIdx int + var valueFound []byte + var valueOffset int + var curI = i + ArrayEach(data[i:], func(value []byte, dataType ValueType, offset int, err error) { + if curIdx == aIdx { + valueFound = value + valueOffset = offset + if dataType == String { + valueOffset = valueOffset - 2 + valueFound = data[curI+valueOffset : curI+valueOffset+len(value)+2] + } + } + curIdx += 1 + }) + + if valueFound == nil { + return -1 + } else { + subIndex := searchKeys(valueFound, keys[level+1:]...) + if subIndex < 0 { + return -1 + } + return i + valueOffset + subIndex + } + } else { + // Do not search for keys inside arrays + if arraySkip := blockEnd(data[i:], '[', ']'); arraySkip == -1 { + return -1 + } else { + i += arraySkip - 1 + } + } + } + + i++ + } + + return -1 +} + +var bitwiseFlags []int64 + +func init() { + for i := 0; i < 63; i++ { + bitwiseFlags = append(bitwiseFlags, int64(math.Pow(2, float64(i)))) + } +} + +func sameTree(p1, p2 []string) bool { + minLen := len(p1) + if len(p2) < minLen { + minLen = len(p2) + } + + for pi_1, p_1 := range p1[:minLen] { + if p2[pi_1] != p_1 { + return false + } + } + + return true +} + +func EachKey(data []byte, cb func(int, []byte, ValueType, error), paths ...[]string) int { + var pathFlags int64 + var level, pathsMatched, i int + ln := len(data) + + var maxPath int + for _, p := range paths { + if len(p) > maxPath { + maxPath = len(p) + } + } + + var stackbuf [unescapeStackBufSize]byte // stack-allocated array for allocation-free unescaping of small strings + pathsBuf := make([]string, maxPath) + + for i < ln { + switch data[i] { + case '"': + i++ + keyBegin := i + + strEnd, keyEscaped := stringEnd(data[i:]) + if strEnd == -1 { + return -1 + } + i += strEnd + + keyEnd := i - 1 + + valueOffset := nextToken(data[i:]) + if valueOffset == -1 { + return -1 + } + + i += valueOffset + + // if string is a key, and key level match + if data[i] == ':' { + match := -1 + key := data[keyBegin:keyEnd] + + // for unescape: if there are no escape sequences, this is cheap; if there are, it is a + // bit more expensive, but causes no allocations unless len(key) > unescapeStackBufSize + var keyUnesc []byte + if !keyEscaped { + keyUnesc = key + } else if ku, err := Unescape(key, stackbuf[:]); err != nil { + return -1 + } else { + keyUnesc = ku + } + + if maxPath >= level { + if level < 1 { + cb(-1, nil, Unknown, MalformedJsonError) + return -1 + } + + pathsBuf[level-1] = bytesToString(&keyUnesc) + for pi, p := range paths { + if len(p) != level || pathFlags&bitwiseFlags[pi+1] != 0 || !equalStr(&keyUnesc, p[level-1]) || !sameTree(p, pathsBuf[:level]) { + continue + } + + match = pi + + i++ + pathsMatched++ + pathFlags |= bitwiseFlags[pi+1] + + v, dt, of, e := Get(data[i:]) + cb(pi, v, dt, e) + + if of != -1 { + i += of + } + + if pathsMatched == len(paths) { + break + } + } + if pathsMatched == len(paths) { + return i + } + } + + if match == -1 { + tokenOffset := nextToken(data[i+1:]) + i += tokenOffset + + if data[i] == '{' { + blockSkip := blockEnd(data[i:], '{', '}') + i += blockSkip + 1 + } + } + + if i < ln { + switch data[i] { + case '{', '}', '[', '"': + i-- + } + } + } else { + i-- + } + case '{': + level++ + case '}': + level-- + case '[': + var arrIdxFlags int64 + var pIdxFlags int64 + + if level < 0 { + cb(-1, nil, Unknown, MalformedJsonError) + return -1 + } + + for pi, p := range paths { + if len(p) < level+1 || pathFlags&bitwiseFlags[pi+1] != 0 || p[level][0] != '[' || !sameTree(p, pathsBuf[:level]) { + continue + } + + aIdx, _ := strconv.Atoi(p[level][1 : len(p[level])-1]) + arrIdxFlags |= bitwiseFlags[aIdx+1] + pIdxFlags |= bitwiseFlags[pi+1] + } + + if arrIdxFlags > 0 { + level++ + + var curIdx int + arrOff, _ := ArrayEach(data[i:], func(value []byte, dataType ValueType, offset int, err error) { + if arrIdxFlags&bitwiseFlags[curIdx+1] != 0 { + for pi, p := range paths { + if pIdxFlags&bitwiseFlags[pi+1] != 0 { + aIdx, _ := strconv.Atoi(p[level-1][1 : len(p[level-1])-1]) + + if curIdx == aIdx { + of := searchKeys(value, p[level:]...) + + pathsMatched++ + pathFlags |= bitwiseFlags[pi+1] + + if of != -1 { + v, dt, _, e := Get(value[of:]) + cb(pi, v, dt, e) + } + } + } + } + } + + curIdx += 1 + }) + + if pathsMatched == len(paths) { + return i + } + + i += arrOff - 1 + } else { + // Do not search for keys inside arrays + if arraySkip := blockEnd(data[i:], '[', ']'); arraySkip == -1 { + return -1 + } else { + i += arraySkip - 1 + } + } + case ']': + level-- + } + + i++ + } + + return -1 +} + +// Data types available in valid JSON data. +type ValueType int + +const ( + NotExist = ValueType(iota) + String + Number + Object + Array + Boolean + Null + Unknown +) + +func (vt ValueType) String() string { + switch vt { + case NotExist: + return "non-existent" + case String: + return "string" + case Number: + return "number" + case Object: + return "object" + case Array: + return "array" + case Boolean: + return "boolean" + case Null: + return "null" + default: + return "unknown" + } +} + +var ( + trueLiteral = []byte("true") + falseLiteral = []byte("false") + nullLiteral = []byte("null") +) + +func createInsertComponent(keys []string, setValue []byte, comma, object bool) []byte { + var buffer bytes.Buffer + isIndex := string(keys[0][0]) == "[" + if comma { + buffer.WriteString(",") + } + if isIndex { + buffer.WriteString("[") + } else { + if object { + buffer.WriteString("{") + } + buffer.WriteString("\"") + buffer.WriteString(keys[0]) + buffer.WriteString("\":") + } + + for i := 1; i < len(keys); i++ { + if string(keys[i][0]) == "[" { + buffer.WriteString("[") + } else { + buffer.WriteString("{\"") + buffer.WriteString(keys[i]) + buffer.WriteString("\":") + } + } + buffer.Write(setValue) + for i := len(keys) - 1; i > 0; i-- { + if string(keys[i][0]) == "[" { + buffer.WriteString("]") + } else { + buffer.WriteString("}") + } + } + if isIndex { + buffer.WriteString("]") + } + if object && !isIndex { + buffer.WriteString("}") + } + return buffer.Bytes() +} + +/* + +Del - Receives existing data structure, path to delete. + +Returns: +`data` - return modified data + +*/ +func Delete(data []byte, keys ...string) []byte { + lk := len(keys) + if lk == 0 { + return data[:0] + } + + array := false + if len(keys[lk-1]) > 0 && string(keys[lk-1][0]) == "[" { + array = true + } + + var startOffset, keyOffset int + endOffset := len(data) + var err error + if !array { + if len(keys) > 1 { + _, _, startOffset, endOffset, err = internalGet(data, keys[:lk-1]...) + if err == KeyPathNotFoundError { + // problem parsing the data + return data + } + } + + keyOffset, err = findKeyStart(data[startOffset:endOffset], keys[lk-1]) + if err == KeyPathNotFoundError { + // problem parsing the data + return data + } + keyOffset += startOffset + _, _, _, subEndOffset, _ := internalGet(data[startOffset:endOffset], keys[lk-1]) + endOffset = startOffset + subEndOffset + tokEnd := tokenEnd(data[endOffset:]) + tokStart := findTokenStart(data[:keyOffset], ","[0]) + + if data[endOffset+tokEnd] == ","[0] { + endOffset += tokEnd + 1 + } else if data[endOffset+tokEnd] == " "[0] && len(data) > endOffset+tokEnd+1 && data[endOffset+tokEnd+1] == ","[0] { + endOffset += tokEnd + 2 + } else if data[endOffset+tokEnd] == "}"[0] && data[tokStart] == ","[0] { + keyOffset = tokStart + } + } else { + _, _, keyOffset, endOffset, err = internalGet(data, keys...) + if err == KeyPathNotFoundError { + // problem parsing the data + return data + } + + tokEnd := tokenEnd(data[endOffset:]) + tokStart := findTokenStart(data[:keyOffset], ","[0]) + + if data[endOffset+tokEnd] == ","[0] { + endOffset += tokEnd + 1 + } else if data[endOffset+tokEnd] == "]"[0] && data[tokStart] == ","[0] { + keyOffset = tokStart + } + } + + // We need to remove remaining trailing comma if we delete las element in the object + prevTok := lastToken(data[:keyOffset]) + remainedValue := data[endOffset:] + + var newOffset int + if nextToken(remainedValue) > -1 && remainedValue[nextToken(remainedValue)] == '}' && data[prevTok] == ',' { + newOffset = prevTok + } else { + newOffset = prevTok + 1 + } + + data = append(data[:newOffset], data[endOffset:]...) + return data +} + +/* + +Set - Receives existing data structure, path to set, and data to set at that key. + +Returns: +`value` - modified byte array +`err` - On any parsing error + +*/ +func Set(data []byte, setValue []byte, keys ...string) (value []byte, err error) { + // ensure keys are set + if len(keys) == 0 { + return nil, KeyPathNotFoundError + } + + _, _, startOffset, endOffset, err := internalGet(data, keys...) + if err != nil { + if err != KeyPathNotFoundError { + // problem parsing the data + return nil, err + } + // full path doesnt exist + // does any subpath exist? + var depth int + for i := range keys { + _, _, start, end, sErr := internalGet(data, keys[:i+1]...) + if sErr != nil { + break + } else { + endOffset = end + startOffset = start + depth++ + } + } + comma := true + object := false + if endOffset == -1 { + firstToken := nextToken(data) + // We can't set a top-level key if data isn't an object + if len(data) == 0 || data[firstToken] != '{' { + return nil, KeyPathNotFoundError + } + // Don't need a comma if the input is an empty object + secondToken := firstToken + 1 + nextToken(data[firstToken+1:]) + if data[secondToken] == '}' { + comma = false + } + // Set the top level key at the end (accounting for any trailing whitespace) + // This assumes last token is valid like '}', could check and return error + endOffset = lastToken(data) + } + depthOffset := endOffset + if depth != 0 { + // if subpath is a non-empty object, add to it + if data[startOffset] == '{' && data[startOffset+1+nextToken(data[startOffset+1:])] != '}' { + depthOffset-- + startOffset = depthOffset + // otherwise, over-write it with a new object + } else { + comma = false + object = true + } + } else { + startOffset = depthOffset + } + value = append(data[:startOffset], append(createInsertComponent(keys[depth:], setValue, comma, object), data[depthOffset:]...)...) + } else { + // path currently exists + startComponent := data[:startOffset] + endComponent := data[endOffset:] + + value = make([]byte, len(startComponent)+len(endComponent)+len(setValue)) + newEndOffset := startOffset + len(setValue) + copy(value[0:startOffset], startComponent) + copy(value[startOffset:newEndOffset], setValue) + copy(value[newEndOffset:], endComponent) + } + return value, nil +} + +func getType(data []byte, offset int) ([]byte, ValueType, int, error) { + var dataType ValueType + endOffset := offset + + // if string value + if data[offset] == '"' { + dataType = String + if idx, _ := stringEnd(data[offset+1:]); idx != -1 { + endOffset += idx + 1 + } else { + return nil, dataType, offset, MalformedStringError + } + } else if data[offset] == '[' { // if array value + dataType = Array + // break label, for stopping nested loops + endOffset = blockEnd(data[offset:], '[', ']') + + if endOffset == -1 { + return nil, dataType, offset, MalformedArrayError + } + + endOffset += offset + } else if data[offset] == '{' { // if object value + dataType = Object + // break label, for stopping nested loops + endOffset = blockEnd(data[offset:], '{', '}') + + if endOffset == -1 { + return nil, dataType, offset, MalformedObjectError + } + + endOffset += offset + } else { + // Number, Boolean or None + end := tokenEnd(data[endOffset:]) + + if end == -1 { + return nil, dataType, offset, MalformedValueError + } + + value := data[offset : endOffset+end] + + switch data[offset] { + case 't', 'f': // true or false + if bytes.Equal(value, trueLiteral) || bytes.Equal(value, falseLiteral) { + dataType = Boolean + } else { + return nil, Unknown, offset, UnknownValueTypeError + } + case 'u', 'n': // undefined or null + if bytes.Equal(value, nullLiteral) { + dataType = Null + } else { + return nil, Unknown, offset, UnknownValueTypeError + } + case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-': + dataType = Number + default: + return nil, Unknown, offset, UnknownValueTypeError + } + + endOffset += end + } + return data[offset:endOffset], dataType, endOffset, nil +} + +/* +Get - Receives data structure, and key path to extract value from. + +Returns: +`value` - Pointer to original data structure containing key value, or just empty slice if nothing found or error +`dataType` - Can be: `NotExist`, `String`, `Number`, `Object`, `Array`, `Boolean` or `Null` +`offset` - Offset from provided data structure where key value ends. Used mostly internally, for example for `ArrayEach` helper. +`err` - If key not found or any other parsing issue it should return error. If key not found it also sets `dataType` to `NotExist` + +Accept multiple keys to specify path to JSON value (in case of quering nested structures). +If no keys provided it will try to extract closest JSON value (simple ones or object/array), useful for reading streams or arrays, see `ArrayEach` implementation. +*/ +func Get(data []byte, keys ...string) (value []byte, dataType ValueType, offset int, err error) { + a, b, _, d, e := internalGet(data, keys...) + return a, b, d, e +} + +func internalGet(data []byte, keys ...string) (value []byte, dataType ValueType, offset, endOffset int, err error) { + if len(keys) > 0 { + if offset = searchKeys(data, keys...); offset == -1 { + return nil, NotExist, -1, -1, KeyPathNotFoundError + } + } + + // Go to closest value + nO := nextToken(data[offset:]) + if nO == -1 { + return nil, NotExist, offset, -1, MalformedJsonError + } + + offset += nO + value, dataType, endOffset, err = getType(data, offset) + if err != nil { + return value, dataType, offset, endOffset, err + } + + // Strip quotes from string values + if dataType == String { + value = value[1 : len(value)-1] + } + + return value, dataType, offset, endOffset, nil +} + +// ArrayEach is used when iterating arrays, accepts a callback function with the same return arguments as `Get`. +func ArrayEach(data []byte, cb func(value []byte, dataType ValueType, offset int, err error), keys ...string) (offset int, err error) { + if len(data) == 0 { + return -1, MalformedObjectError + } + + offset = 1 + + if len(keys) > 0 { + if offset = searchKeys(data, keys...); offset == -1 { + return offset, KeyPathNotFoundError + } + + // Go to closest value + nO := nextToken(data[offset:]) + if nO == -1 { + return offset, MalformedJsonError + } + + offset += nO + + if data[offset] != '[' { + return offset, MalformedArrayError + } + + offset++ + } + + nO := nextToken(data[offset:]) + if nO == -1 { + return offset, MalformedJsonError + } + + offset += nO + + if data[offset] == ']' { + return offset, nil + } + + for true { + v, t, o, e := Get(data[offset:]) + + if e != nil { + return offset, e + } + + if o == 0 { + break + } + + if t != NotExist { + cb(v, t, offset+o-len(v), e) + } + + if e != nil { + break + } + + offset += o + + skipToToken := nextToken(data[offset:]) + if skipToToken == -1 { + return offset, MalformedArrayError + } + offset += skipToToken + + if data[offset] == ']' { + break + } + + if data[offset] != ',' { + return offset, MalformedArrayError + } + + offset++ + } + + return offset, nil +} + +// ObjectEach iterates over the key-value pairs of a JSON object, invoking a given callback for each such entry +func ObjectEach(data []byte, callback func(key []byte, value []byte, dataType ValueType, offset int) error, keys ...string) (err error) { + var stackbuf [unescapeStackBufSize]byte // stack-allocated array for allocation-free unescaping of small strings + offset := 0 + + // Descend to the desired key, if requested + if len(keys) > 0 { + if off := searchKeys(data, keys...); off == -1 { + return KeyPathNotFoundError + } else { + offset = off + } + } + + // Validate and skip past opening brace + if off := nextToken(data[offset:]); off == -1 { + return MalformedObjectError + } else if offset += off; data[offset] != '{' { + return MalformedObjectError + } else { + offset++ + } + + // Skip to the first token inside the object, or stop if we find the ending brace + if off := nextToken(data[offset:]); off == -1 { + return MalformedJsonError + } else if offset += off; data[offset] == '}' { + return nil + } + + // Loop pre-condition: data[offset] points to what should be either the next entry's key, or the closing brace (if it's anything else, the JSON is malformed) + for offset < len(data) { + // Step 1: find the next key + var key []byte + + // Check what the the next token is: start of string, end of object, or something else (error) + switch data[offset] { + case '"': + offset++ // accept as string and skip opening quote + case '}': + return nil // we found the end of the object; stop and return success + default: + return MalformedObjectError + } + + // Find the end of the key string + var keyEscaped bool + if off, esc := stringEnd(data[offset:]); off == -1 { + return MalformedJsonError + } else { + key, keyEscaped = data[offset:offset+off-1], esc + offset += off + } + + // Unescape the string if needed + if keyEscaped { + if keyUnescaped, err := Unescape(key, stackbuf[:]); err != nil { + return MalformedStringEscapeError + } else { + key = keyUnescaped + } + } + + // Step 2: skip the colon + if off := nextToken(data[offset:]); off == -1 { + return MalformedJsonError + } else if offset += off; data[offset] != ':' { + return MalformedJsonError + } else { + offset++ + } + + // Step 3: find the associated value, then invoke the callback + if value, valueType, off, err := Get(data[offset:]); err != nil { + return err + } else if err := callback(key, value, valueType, offset+off); err != nil { // Invoke the callback here! + return err + } else { + offset += off + } + + // Step 4: skip over the next comma to the following token, or stop if we hit the ending brace + if off := nextToken(data[offset:]); off == -1 { + return MalformedArrayError + } else { + offset += off + switch data[offset] { + case '}': + return nil // Stop if we hit the close brace + case ',': + offset++ // Ignore the comma + default: + return MalformedObjectError + } + } + + // Skip to the next token after the comma + if off := nextToken(data[offset:]); off == -1 { + return MalformedArrayError + } else { + offset += off + } + } + + return MalformedObjectError // we shouldn't get here; it's expected that we will return via finding the ending brace +} + +// GetUnsafeString returns the value retrieved by `Get`, use creates string without memory allocation by mapping string to slice memory. It does not handle escape symbols. +func GetUnsafeString(data []byte, keys ...string) (val string, err error) { + v, _, _, e := Get(data, keys...) + + if e != nil { + return "", e + } + + return bytesToString(&v), nil +} + +// GetString returns the value retrieved by `Get`, cast to a string if possible, trying to properly handle escape and utf8 symbols +// If key data type do not match, it will return an error. +func GetString(data []byte, keys ...string) (val string, err error) { + v, t, _, e := Get(data, keys...) + + if e != nil { + return "", e + } + + if t != String { + return "", fmt.Errorf("Value is not a string: %s", string(v)) + } + + // If no escapes return raw conten + if bytes.IndexByte(v, '\\') == -1 { + return string(v), nil + } + + return ParseString(v) +} + +// GetFloat returns the value retrieved by `Get`, cast to a float64 if possible. +// The offset is the same as in `Get`. +// If key data type do not match, it will return an error. +func GetFloat(data []byte, keys ...string) (val float64, err error) { + v, t, _, e := Get(data, keys...) + + if e != nil { + return 0, e + } + + if t != Number { + return 0, fmt.Errorf("Value is not a number: %s", string(v)) + } + + return ParseFloat(v) +} + +// GetInt returns the value retrieved by `Get`, cast to a int64 if possible. +// If key data type do not match, it will return an error. +func GetInt(data []byte, keys ...string) (val int64, err error) { + v, t, _, e := Get(data, keys...) + + if e != nil { + return 0, e + } + + if t != Number { + return 0, fmt.Errorf("Value is not a number: %s", string(v)) + } + + return ParseInt(v) +} + +// GetBoolean returns the value retrieved by `Get`, cast to a bool if possible. +// The offset is the same as in `Get`. +// If key data type do not match, it will return error. +func GetBoolean(data []byte, keys ...string) (val bool, err error) { + v, t, _, e := Get(data, keys...) + + if e != nil { + return false, e + } + + if t != Boolean { + return false, fmt.Errorf("Value is not a boolean: %s", string(v)) + } + + return ParseBoolean(v) +} + +// ParseBoolean parses a Boolean ValueType into a Go bool (not particularly useful, but here for completeness) +func ParseBoolean(b []byte) (bool, error) { + switch { + case bytes.Equal(b, trueLiteral): + return true, nil + case bytes.Equal(b, falseLiteral): + return false, nil + default: + return false, MalformedValueError + } +} + +// ParseString parses a String ValueType into a Go string (the main parsing work is unescaping the JSON string) +func ParseString(b []byte) (string, error) { + var stackbuf [unescapeStackBufSize]byte // stack-allocated array for allocation-free unescaping of small strings + if bU, err := Unescape(b, stackbuf[:]); err != nil { + return "", MalformedValueError + } else { + return string(bU), nil + } +} + +// ParseNumber parses a Number ValueType into a Go float64 +func ParseFloat(b []byte) (float64, error) { + if v, err := parseFloat(&b); err != nil { + return 0, MalformedValueError + } else { + return v, nil + } +} + +// ParseInt parses a Number ValueType into a Go int64 +func ParseInt(b []byte) (int64, error) { + if v, ok, overflow := parseInt(b); !ok { + if overflow { + return 0, OverflowIntegerError + } + return 0, MalformedValueError + } else { + return v, nil + } +} diff --git a/vendor/github.com/chai2010/gettext-go/.travis.yml b/vendor/github.com/chai2010/gettext-go/.travis.yml deleted file mode 100644 index fb74de6b87..0000000000 --- a/vendor/github.com/chai2010/gettext-go/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: go - -go: - - 1.3 - - 1.4 - - 1.5 - - tip diff --git a/vendor/github.com/chai2010/gettext-go/README.md b/vendor/github.com/chai2010/gettext-go/README.md deleted file mode 100644 index 75a5a16f46..0000000000 --- a/vendor/github.com/chai2010/gettext-go/README.md +++ /dev/null @@ -1,58 +0,0 @@ -gettext-go -========== - -PkgDoc: [http://godoc.org/github.com/chai2010/gettext-go/gettext](http://godoc.org/github.com/chai2010/gettext-go/gettext) - -Install -======== - -1. `go get github.com/chai2010/gettext-go/gettext` -2. `go run hello.go` - -The godoc.org or gowalker.org has more information. - -Example -======= - -```Go -package main - -import ( - "fmt" - - "github.com/chai2010/gettext-go/gettext" -) - -func main() { - gettext.SetLocale("zh_CN") - gettext.Textdomain("hello") - - gettext.BindTextdomain("hello", "local", nil) - - // gettext.BindTextdomain("hello", "local", nil) // from local dir - // gettext.BindTextdomain("hello", "local.zip", nil) // from local zip file - // gettext.BindTextdomain("hello", "local.zip", zipData) // from embedded zip data - - // translate source text - fmt.Println(gettext.Gettext("Hello, world!")) - // Output: 你好, 世界! - - // if no msgctxt in PO file (only msgid and msgstr), - // specify context as "" by - fmt.Println(gettext.PGettext("", "Hello, world!")) - // Output: 你好, 世界! - - // translate resource - fmt.Println(string(gettext.Getdata("poems.txt")))) - // Output: ... -} -``` - -Go file: [hello.go](https://github.com/chai2010/gettext-go/blob/master/examples/hello.go); PO file: [hello.po](https://github.com/chai2010/gettext-go/blob/master/examples/local/default/LC_MESSAGES/hello.po); - -BUGS -==== - -Please report bugs to . - -Thanks! diff --git a/vendor/github.com/cloudflare/cfssl/.dockerignore b/vendor/github.com/cloudflare/cfssl/.dockerignore deleted file mode 100644 index 3f63ce68d5..0000000000 --- a/vendor/github.com/cloudflare/cfssl/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -cfssl_* -*-amd64 -*-386 -dist/* diff --git a/vendor/github.com/cloudflare/cfssl/.gitignore b/vendor/github.com/cloudflare/cfssl/.gitignore deleted file mode 100644 index 4cd8c32264..0000000000 --- a/vendor/github.com/cloudflare/cfssl/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -dist/* -cli/serve/static.rice-box.go -.coverprofile -coverprofile.txt -gopath diff --git a/vendor/github.com/cloudflare/cfssl/.travis.yml b/vendor/github.com/cloudflare/cfssl/.travis.yml deleted file mode 100644 index 9f4102d6dc..0000000000 --- a/vendor/github.com/cloudflare/cfssl/.travis.yml +++ /dev/null @@ -1,74 +0,0 @@ -sudo: false -language: go -go: - - 1.8.x - - 1.9.x - - 1.10.x - - master -# Install g++-4.8 to support std=c++11 for github.com/google/certificate-transparency/go/merkletree -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 -install: - - if [ "$CXX" = "g++" ]; then export CXX="g++-4.8"; fi - -# Used by the certdb tests -services: - - mysql - - postgresql -before_install: - # CFSSL consists of multiple Go packages, which refer to each other by - # their absolute GitHub path, e.g. github.com/cloudflare/crypto/pkcs7. - # That means, by default, if someone forks the repo and makes changes across - # multiple packages within CFSSL, Travis won't pass for the branch on their - # own repo. To fix that, we move the directory - - mkdir -p $TRAVIS_BUILD_DIR $GOPATH/src/github.com/cloudflare - - test ! -d $GOPATH/src/github.com/cloudflare/cfssl && mv $TRAVIS_BUILD_DIR $GOPATH/src/github.com/cloudflare/cfssl || true - -# Only build pull requests, pushes to the master branch, and branches -# starting with `test-`. This is a convenient way to push branches to -# your own fork of the repostiory to ensure Travis passes before submitting -# a PR. For instance, you might run: -# git push myremote branchname:test-branchname -branches: - only: - - master - - /^test-.*$/ - -before_script: - - go get -u github.com/golang/lint/golint - - go get -v github.com/GeertJohan/fgt - # Setup DBs + run migrations - - go get bitbucket.org/liamstask/goose/cmd/goose - - if [[ $(uname -s) == 'Linux' ]]; then - psql -c 'create database certdb_development;' -U postgres; - goose -path $GOPATH/src/github.com/cloudflare/cfssl/certdb/pg up; - mysql -e 'create database certdb_development;' -u root; - goose -path $GOPATH/src/github.com/cloudflare/cfssl/certdb/mysql up; - fi -script: - - ./test.sh -notifications: - email: - recipients: - - cbroglie@cloudflare.com - - kyle@cloudflare.com - - nick@cloudflare.com - on_success: never - on_failure: change -env: - global: - - secure: "OmaaZ3jhU9VQ/0SYpenUJEfnmKy/MwExkefFRpDbkRSu/hTQpxxALAZV5WEHo7gxLRMRI0pytLo7w+lAd2FlX1CNcyY62MUicta/8P2twsxp+lR3v1bJ7dwk6qsDbO7Nvv3BKPCDQCHUkggbAEJaHEQGdLk4ursNEB1aGimuCEc=" - - GO15VENDOREXPERIMENT=1 - matrix: - - BUILD_TAGS="postgresql mysql" -matrix: - include: - - os: osx - go: 1.8.1 - env: BUILD_TAGS= -after_success: - - bash <(curl -s https://codecov.io/bash) -f coverprofile.txt diff --git a/vendor/github.com/cloudflare/cfssl/BUILDING.md b/vendor/github.com/cloudflare/cfssl/BUILDING.md deleted file mode 100644 index 8b545d88bc..0000000000 --- a/vendor/github.com/cloudflare/cfssl/BUILDING.md +++ /dev/null @@ -1,38 +0,0 @@ -# How to Build CFSSL - -## Docker - -The requirements to build `CFSSL` are: - -1. A running instance of Docker -2. The `bash` shell - -To build, run: - - $ script/build-docker - -This is will build by default all the cfssl command line utilities -for darwin (OSX), linux, and windows for i386 and amd64 and output the -binaries in the current path. - -To build a specific platform and OS, run: - - $ script/build-docker -os="darwin" -arch="amd64" - -Note: for cross-compilation compatibility, the Docker build process will -build programs without PKCS #11. - -## Without Docker - -The requirements to build without Docker are: - -1. Go version 1.5 is the minimum required version of Go. However, only Go 1.6+ - is supported due to the test system not supporting Go 1.5. -2. A properly configured go environment -3. A properly configured GOPATH -4. With Go 1.5, you are required to set the environment variable - `GO15VENDOREXPERIMENT=1`. - -Run: - - $ go install github.com/cloudflare/cfssl/cmd/... diff --git a/vendor/github.com/cloudflare/cfssl/CHANGELOG b/vendor/github.com/cloudflare/cfssl/CHANGELOG deleted file mode 100644 index fdba571180..0000000000 --- a/vendor/github.com/cloudflare/cfssl/CHANGELOG +++ /dev/null @@ -1,72 +0,0 @@ -1.1.0 - 2015-08-04 - -ADDED: - - Revocation now checks OCSP status. - - Authenticated endpoints are now supported using HMAC tags. - - Bundle can verify certificates against a domain or IP. - - OCSP subcommand has been added. - - PKCS #11 keys are now supported; this support is now the default. - - OCSP serving is now implemented. - - The multirootca tool is now available for multiple signing - keys via an authenticated API. - - A scan utility for checking the quality of a server's TLS - configuration. - - The certificate bundler now supports PKCS #7 and PKCS #12. - - An info endpoint has been added to retrieve the signers' - certificates. - - Signers can now use a serial sequence number for certificate - serial numbers; the default remains randomised serial numbers. - - CSR whitelisting allows the signer to explicitly distrust - certain fields in a CSR. - - Signing profiles can include certificate policies and their - qualifiers. - - The multirootca can use Red October-secured private keys. - - The multirootca can whitelist CSRs per-signer based on an - IP network whitelist. - - The signer can whitelist SANs and common names via a regular- - expression whitelist. - - Multiple fallback remote signers are now supported in the - cfssl server. - - A Docker build script has been provided to facilitate building - CFSSL for all supported platforms. - - The log package includes a new logging level, fatal, that - immediately exits with error after printing the log message. - -CHANGED: - - CLI tool can read from standard input. - - The -f flag has been renamed to -config. - - Signers have been refactored into local and remote signers - under a single universal signer abstraction. - - The CLI subcommands have been refactored into separate - packages. - - Signing can now extract subject information from a CSR. - - Various improvements to the certificate ubiquity scoring, - such as accounting for SHA1 deprecation. - - The bundle CLI tool can set the intermediates directory that - newly found intermediates can be stored in. - - The CLI tools return exit code 1 on failure. - -CONTRIBUTORS: - Alice Xia - Dan Rohr - Didier Smith - Dominic Luechinger - Erik Kristensen - Fabian Ruff - George Tankersley - Harald Wagener - Harry Harpham - Jacob H. Haven - Jacob Hoffman-Andrews - Joshua Kroll - Kyle Isom - Nick Sullivan - Peter Eckersley - Richard Barnes - Sophie Huang - Steve Rude - Tara Vancil - Terin Stock - Thomaz Leite - Travis Truman - Zi Lin diff --git a/vendor/github.com/cloudflare/cfssl/Dockerfile b/vendor/github.com/cloudflare/cfssl/Dockerfile deleted file mode 100644 index 728c74efa5..0000000000 --- a/vendor/github.com/cloudflare/cfssl/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM golang:1.9.2 - -ENV USER root - -WORKDIR /go/src/github.com/cloudflare/cfssl -COPY . . - -# restore all deps and build -RUN go get github.com/cloudflare/cfssl_trust/... && \ - go get github.com/GeertJohan/go.rice/rice && \ - rice embed-go -i=./cli/serve && \ - cp -R /go/src/github.com/cloudflare/cfssl_trust /etc/cfssl && \ - go install ./cmd/... - -EXPOSE 8888 - -ENTRYPOINT ["cfssl"] -CMD ["--help"] diff --git a/vendor/github.com/cloudflare/cfssl/Dockerfile.build b/vendor/github.com/cloudflare/cfssl/Dockerfile.build deleted file mode 100644 index fd7f1a8ee8..0000000000 --- a/vendor/github.com/cloudflare/cfssl/Dockerfile.build +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:1.9.2 - -ENV USER root - -WORKDIR /go/src/github.com/cloudflare/cfssl -COPY . . - -# restore all deps and build -RUN go get github.com/mitchellh/gox - -ENTRYPOINT ["gox"] diff --git a/vendor/github.com/cloudflare/cfssl/Dockerfile.minimal b/vendor/github.com/cloudflare/cfssl/Dockerfile.minimal deleted file mode 100644 index 3c80825e18..0000000000 --- a/vendor/github.com/cloudflare/cfssl/Dockerfile.minimal +++ /dev/null @@ -1,30 +0,0 @@ -FROM golang:1.9.2-alpine3.6 - -ENV GOPATH /go -ENV USER root - -COPY . /go/src/github.com/cloudflare/cfssl - -RUN set -x && \ - apk --no-cache add git gcc libc-dev && \ - go get github.com/cloudflare/cfssl_trust/... && \ - go get github.com/GeertJohan/go.rice/rice && \ - cd /go/src/github.com/cloudflare/cfssl && rice embed-go -i=./cli/serve && \ - mkdir bin && cd bin && \ - go build ../cmd/cfssl && \ - go build ../cmd/cfssljson && \ - go build ../cmd/mkbundle && \ - go build ../cmd/multirootca && \ - echo "Build complete." - -FROM alpine:3.6 -COPY --from=0 /go/src/github.com/cloudflare/cfssl_trust /etc/cfssl -COPY --from=0 /go/src/github.com/cloudflare/cfssl/bin/ /usr/bin - -VOLUME [ "/etc/cfssl" ] -WORKDIR /etc/cfssl - -EXPOSE 8888 - -ENTRYPOINT ["cfssl"] -CMD ["--help"] diff --git a/vendor/github.com/cloudflare/cfssl/Gopkg.lock b/vendor/github.com/cloudflare/cfssl/Gopkg.lock deleted file mode 100644 index be0d3ade69..0000000000 --- a/vendor/github.com/cloudflare/cfssl/Gopkg.lock +++ /dev/null @@ -1,186 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - branch = "master" - name = "github.com/GeertJohan/go.rice" - packages = [ - ".", - "embedded" - ] - revision = "c02ca9a983da5807ddf7d796784928f5be4afd09" - -[[projects]] - name = "github.com/certifi/gocertifi" - packages = ["."] - revision = "deb3ae2ef2610fde3330947281941c562861188b" - version = "2018.01.18" - -[[projects]] - branch = "master" - name = "github.com/cloudflare/backoff" - packages = ["."] - revision = "647f3cdfc87a18586e279c97afd6526d01b0d063" - -[[projects]] - branch = "master" - name = "github.com/cloudflare/go-metrics" - packages = ["."] - revision = "6a9aea36fb410b71add0d0e58438e0cfc44d3076" - -[[projects]] - branch = "master" - name = "github.com/cloudflare/redoctober" - packages = [ - "client", - "config", - "core", - "cryptor", - "ecdh", - "hipchat", - "keycache", - "msp", - "order", - "padding", - "passvault", - "persist", - "report", - "symcrypt" - ] - revision = "746a508df14c565d2074e2919d27c2efd1a7fe89" - -[[projects]] - branch = "master" - name = "github.com/daaku/go.zipexe" - packages = ["."] - revision = "a5fe2436ffcb3236e175e5149162b41cd28bd27d" - -[[projects]] - branch = "master" - name = "github.com/getsentry/raven-go" - packages = ["."] - revision = "563b81fc02b75d664e54da31f787c2cc2186780b" - -[[projects]] - name = "github.com/go-sql-driver/mysql" - packages = ["."] - revision = "a0583e0143b1624142adab07e0e97fe106d99561" - version = "v1.3" - -[[projects]] - name = "github.com/gogo/protobuf" - packages = ["proto"] - revision = "1adfc126b41513cc696b209667c8656ea7aac67c" - version = "v1.0.0" - -[[projects]] - name = "github.com/golang/protobuf" - packages = [ - "proto", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/timestamp" - ] - revision = "925541529c1fa6821df4e44ce2723319eb2be768" - version = "v1.0.0" - -[[projects]] - name = "github.com/google/certificate-transparency-go" - packages = [ - ".", - "asn1", - "client", - "client/configpb", - "jsonclient", - "tls", - "x509", - "x509/pkix" - ] - revision = "5ab67e519c93568ac3ee50fd6772a5bcf8aa460d" - -[[projects]] - name = "github.com/jmhodges/clock" - packages = ["."] - revision = "880ee4c335489bc78d01e4d0a254ae880734bc15" - version = "v1.1" - -[[projects]] - branch = "master" - name = "github.com/jmoiron/sqlx" - packages = [ - ".", - "reflectx" - ] - revision = "05cef0741ade10ca668982355b3f3f0bcf0ff0a8" - -[[projects]] - branch = "master" - name = "github.com/kardianos/osext" - packages = ["."] - revision = "ae77be60afb1dcacde03767a8c37337fad28ac14" - -[[projects]] - branch = "master" - name = "github.com/kisielk/sqlstruct" - packages = ["."] - revision = "648daed35d49dac24a4bff253b190a80da3ab6a5" - -[[projects]] - name = "github.com/kisom/goutils" - packages = ["assert"] - revision = "d6c5360a068641fc799295411f429be80115bcfc" - version = "v1.1.0" - -[[projects]] - branch = "master" - name = "github.com/lib/pq" - packages = [ - ".", - "oid" - ] - revision = "88edab0803230a3898347e77b474f8c1820a1f20" - -[[projects]] - name = "github.com/mattn/go-sqlite3" - packages = ["."] - revision = "6c771bb9887719704b210e87e934f08be014bdb1" - version = "v1.6.0" - -[[projects]] - name = "github.com/pkg/errors" - packages = ["."] - revision = "645ef00459ed84a119197bfb8d8205042c6df63d" - version = "v0.8.0" - -[[projects]] - branch = "master" - name = "golang.org/x/crypto" - packages = [ - "cryptobyte", - "cryptobyte/asn1", - "ed25519", - "ed25519/internal/edwards25519", - "ocsp", - "pbkdf2", - "pkcs12", - "pkcs12/internal/rc2", - "scrypt" - ] - revision = "c126467f60eb25f8f27e5a981f32a87e3965053f" - -[[projects]] - branch = "master" - name = "golang.org/x/net" - packages = [ - "context", - "context/ctxhttp" - ] - revision = "f5dfe339be1d06f81b22525fe34671ee7d2c8904" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - inputs-digest = "eb3713a13a2a3e0a35c010aed983787299798de5f20ba838399802f9ae67107c" - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/vendor/github.com/cloudflare/cfssl/Gopkg.toml b/vendor/github.com/cloudflare/cfssl/Gopkg.toml deleted file mode 100644 index ce25e37c5f..0000000000 --- a/vendor/github.com/cloudflare/cfssl/Gopkg.toml +++ /dev/null @@ -1,86 +0,0 @@ -# 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]] - branch = "master" - name = "github.com/GeertJohan/go.rice" - -[[constraint]] - branch = "master" - name = "github.com/cloudflare/backoff" - -[[constraint]] - branch = "master" - name = "github.com/cloudflare/go-metrics" - -[[constraint]] - branch = "master" - name = "github.com/cloudflare/redoctober" - -[[constraint]] - name = "github.com/go-sql-driver/mysql" - version = "1.3.0" - -[[constraint]] - name = "github.com/google/certificate-transparency-go" - revision = "5ab67e519c93568ac3ee50fd6772a5bcf8aa460d" - -[[constraint]] - name = "github.com/jmhodges/clock" - version = "1.1.0" - -[[constraint]] - branch = "master" - name = "github.com/jmoiron/sqlx" - -[[constraint]] - branch = "master" - name = "github.com/kisielk/sqlstruct" - -[[constraint]] - name = "github.com/kisom/goutils" - version = "1.1.0" - -[[constraint]] - branch = "master" - name = "github.com/lib/pq" - -[[constraint]] - name = "github.com/mattn/go-sqlite3" - version = "1.6.0" - -[[constraint]] - branch = "master" - name = "golang.org/x/crypto" - -[[constraint]] - branch = "master" - name = "golang.org/x/net" - -[prune] - go-tests = true - unused-packages = true diff --git a/vendor/github.com/cloudflare/cfssl/README.md b/vendor/github.com/cloudflare/cfssl/README.md deleted file mode 100644 index 8fc4013a08..0000000000 --- a/vendor/github.com/cloudflare/cfssl/README.md +++ /dev/null @@ -1,390 +0,0 @@ -# CFSSL - -[![Build Status](https://travis-ci.org/cloudflare/cfssl.svg?branch=master)](https://travis-ci.org/cloudflare/cfssl) -[![Coverage Status](http://codecov.io/github/cloudflare/cfssl/coverage.svg?branch=master)](http://codecov.io/github/cloudflare/cfssl?branch=master) -[![GoDoc](https://godoc.org/github.com/cloudflare/cfssl?status.svg)](https://godoc.org/github.com/cloudflare/cfssl) - -## CloudFlare's PKI/TLS toolkit - -CFSSL is CloudFlare's PKI/TLS swiss army knife. It is both a command line -tool and an HTTP API server for signing, verifying, and bundling TLS -certificates. It requires Go 1.8+ to build. - -Note that certain linux distributions have certain algorithms removed -(RHEL-based distributions in particular), so the golang from the -official repositories will not work. Users of these distributions should -[install go manually](//golang.org/dl) to install CFSSL. - -CFSSL consists of: - -* a set of packages useful for building custom TLS PKI tools -* the `cfssl` program, which is the canonical command line utility - using the CFSSL packages. -* the `multirootca` program, which is a certificate authority server - that can use multiple signing keys. -* the `mkbundle` program is used to build certificate pool bundles. -* the `cfssljson` program, which takes the JSON output from the - `cfssl` and `multirootca` programs and writes certificates, keys, - CSRs, and bundles to disk. - -### Building - -See [BUILDING](BUILDING.md) - -### Installation - -Installation requires a -[working Go 1.8+ installation](http://golang.org/doc/install) and a -properly set `GOPATH`. - -``` -$ go get -u github.com/cloudflare/cfssl/cmd/cfssl -``` - -will download and build the CFSSL tool, installing it in -`$GOPATH/bin/cfssl`. - -To install any of the other utility programs that are -in this repo (for instance `cfssljson` in this case): - -``` -$ go get -u github.com/cloudflare/cfssl/cmd/cfssljson -``` - -This will download and build the CFSSLJSON tool, installing it in -`$GOPATH/bin/`. - -And to simply install __all__ of the programs in this repo: - -``` -$ go get -u github.com/cloudflare/cfssl/cmd/... -``` - -This will download, build, and install all of the utility programs -(including `cfssl`, `cfssljson`, and `mkbundle` among others) into the -`$GOPATH/bin/` directory. - -### Using the Command Line Tool - -The `cfssl` command line tool takes a command to specify what -operation it should carry out: - - sign signs a certificate - bundle build a certificate bundle - genkey generate a private key and a certificate request - gencert generate a private key and a certificate - serve start the API server - version prints out the current version - selfsign generates a self-signed certificate - print-defaults print default configurations - -Use `cfssl [command] -help` to find out more about a command. -The `version` command takes no arguments. - -#### Signing - -``` -cfssl sign [-ca cert] [-ca-key key] [-hostname comma,separated,hostnames] csr [subject] -``` - -The `csr` is the client's certificate request. The `-ca` and `-ca-key` -flags are the CA's certificate and private key, respectively. By -default, they are `ca.pem` and `ca_key.pem`. The `-hostname` is -a comma separated hostname list that overrides the DNS names and -IP address in the certificate SAN extension. -For example, assuming the CA's private key is in -`/etc/ssl/private/cfssl_key.pem` and the CA's certificate is in -`/etc/ssl/certs/cfssl.pem`, to sign the `cloudflare.pem` certificate -for cloudflare.com: - -``` -cfssl sign -ca /etc/ssl/certs/cfssl.pem \ - -ca-key /etc/ssl/private/cfssl_key.pem \ - -hostname cloudflare.com \ - ./cloudflare.pem -``` - -It is also possible to specify CSR with the `-csr` flag. By doing so, -flag values take precedence and will overwrite the argument. - -The subject is an optional file that contains subject information that -should be used in place of the information from the CSR. It should be -a JSON file as follows: - -```json -{ - "CN": "example.com", - "names": [ - { - "C": "US", - "L": "San Francisco", - "O": "Internet Widgets, Inc.", - "OU": "WWW", - "ST": "California" - } - ] -} -``` - -**N.B.** As of Go 1.7, self-signed certificates will not include -[the AKI](https://go.googlesource.com/go/+/b623b71509b2d24df915d5bc68602e1c6edf38ca). - -#### Bundling - -``` -cfssl bundle [-ca-bundle bundle] [-int-bundle bundle] \ - [-metadata metadata_file] [-flavor bundle_flavor] \ - -cert certificate_file [-key key_file] -``` - -The bundles are used for the root and intermediate certificate -pools. In addition, platform metadata is specified through `-metadata`. -The bundle files, metadata file (and auxiliary files) can be -found at: - - https://github.com/cloudflare/cfssl_trust - -Specify PEM-encoded client certificate and key through `-cert` and -`-key` respectively. If key is specified, the bundle will be built -and verified with the key. Otherwise the bundle will be built -without a private key. Instead of file path, use `-` for reading -certificate PEM from stdin. It is also acceptable that the certificate -file should contain a (partial) certificate bundle. - -Specify bundling flavor through `-flavor`. There are three flavors: -`optimal` to generate a bundle of shortest chain and most advanced -cryptographic algorithms, `ubiquitous` to generate a bundle of most -widely acceptance across different browsers and OS platforms, and -`force` to find an acceptable bundle which is identical to the -content of the input certificate file. - -Alternatively, the client certificate can be pulled directly from -a domain. It is also possible to connect to the remote address -through `-ip`. - -``` -cfssl bundle [-ca-bundle bundle] [-int-bundle bundle] \ - [-metadata metadata_file] [-flavor bundle_flavor] \ - -domain domain_name [-ip ip_address] -``` - -The bundle output form should follow the example: - -```json -{ - "bundle": "CERT_BUNDLE_IN_PEM", - "crt": "LEAF_CERT_IN_PEM", - "crl_support": true, - "expires": "2015-12-31T23:59:59Z", - "hostnames": ["example.com"], - "issuer": "ISSUER CERT SUBJECT", - "key": "KEY_IN_PEM", - "key_size": 2048, - "key_type": "2048-bit RSA", - "ocsp": ["http://ocsp.example-ca.com"], - "ocsp_support": true, - "root": "ROOT_CA_CERT_IN_PEM", - "signature": "SHA1WithRSA", - "subject": "LEAF CERT SUBJECT", - "status": { - "rebundled": false, - "expiring_SKIs": [], - "untrusted_root_stores": [], - "messages": [], - "code": 0 - } -} -``` - - -#### Generating certificate signing request and private key - -``` -cfssl genkey csr.json -``` - -To generate a private key and corresponding certificate request, specify -the key request as a JSON file. This file should follow the form: - -```json -{ - "hosts": [ - "example.com", - "www.example.com" - ], - "key": { - "algo": "rsa", - "size": 2048 - }, - "names": [ - { - "C": "US", - "L": "San Francisco", - "O": "Internet Widgets, Inc.", - "OU": "WWW", - "ST": "California" - } - ] -} -``` - -#### Generating self-signed root CA certificate and private key - -``` -cfssl genkey -initca csr.json | cfssljson -bare ca -``` - -To generate a self-signed root CA certificate, specify the key request as -a JSON file in the same format as in 'genkey'. Three PEM-encoded entities -will appear in the output: the private key, the csr, and the self-signed -certificate. - -#### Generating a remote-issued certificate and private key. - -``` -cfssl gencert -remote=remote_server [-hostname=comma,separated,hostnames] csr.json -``` - -This calls `genkey` but has a remote CFSSL server sign and issue -the certificate. You may use `-hostname` to override certificate SANs. - -#### Generating a local-issued certificate and private key. - -``` -cfssl gencert -ca cert -ca-key key [-hostname=comma,separated,hostnames] csr.json -``` - -This generates and issues a certificate and private key from a local CA -via a JSON request. You may use `-hostname` to override certificate SANs. - - -#### Updating an OCSP responses file with a newly issued certificate - -``` -cfssl ocspsign -ca cert -responder key -responder-key key -cert cert \ - | cfssljson -bare -stdout >> responses -``` - -This will generate an OCSP response for the `cert` and add it to the -`responses` file. You can then pass `responses` to `ocspserve` to start an -OCSP server. - -### Starting the API Server - -CFSSL comes with an HTTP-based API server; the endpoints are -documented in `doc/api/intro.txt`. The server is started with the `serve` -command: - -``` -cfssl serve [-address address] [-ca cert] [-ca-bundle bundle] \ - [-ca-key key] [-int-bundle bundle] [-int-dir dir] [-port port] \ - [-metadata file] [-remote remote_host] [-config config] \ - [-responder cert] [-responder-key key] [-db-config db-config] -``` - -Address and port default to "127.0.0.1:8888". The `-ca` and `-ca-key` -arguments should be the PEM-encoded certificate and private key to use -for signing; by default, they are `ca.pem` and `ca_key.pem`. The -`-ca-bundle` and `-int-bundle` should be the certificate bundles used -for the root and intermediate certificate pools, respectively. These -default to `ca-bundle.crt` and `int-bundle.crt` respectively. If the -`-remote` option is specified, all signature operations will be forwarded -to the remote CFSSL. - -`-int-dir` specifies an intermediates directory. `-metadata` is a file for -root certificate presence. The content of the file is a json dictionary -(k,v) such that each key k is an SHA-1 digest of a root certificate while value v -is a list of key store filenames. `-config` specifies a path to a configuration -file. `-responder` and `-responder-key` are the certificate and the -private key for the OCSP responder, respectively. - -The amount of logging can be controlled with the `-loglevel` option. This -comes *after* the serve command: - -``` -cfssl serve -loglevel 2 -``` - -The levels are: - -* 0 - DEBUG -* 1 - INFO (this is the default level) -* 2 - WARNING -* 3 - ERROR -* 4 - CRITICAL - -### The multirootca - -The `cfssl` program can act as an online certificate authority, but it -only uses a single key. If multiple signing keys are needed, the -`multirootca` program can be used. It only provides the `sign`, -`authsign` and `info` endpoints. The documentation contains instructions -for configuring and running the CA. - -### The mkbundle Utility - -`mkbundle` is used to build the root and intermediate bundles used in -verifying certificates. It can be installed with - -``` -go get -u github.com/cloudflare/cfssl/cmd/mkbundle -``` - -It takes a collection of certificates, checks for CRL revocation (OCSP -support is planned for the next release) and expired certificates, and -bundles them into one file. It takes directories of certificates and -certificate files (which may contain multiple certificates). For example, -if the directory `intermediates` contains a number of intermediate -certificates: - -``` -mkbundle -f int-bundle.crt intermediates -``` - -will check those certificates and combine valid certificates into a single -`int-bundle.crt` file. - -The `-f` flag specifies an output name; `-loglevel` specifies the verbosity -of the logging (using the same loglevels as above), and `-nw` controls the -number of revocation-checking workers. - -### The cfssljson Utility - -Most of the output from `cfssl` is in JSON. The `cfssljson` utility can take -this output and split it out into separate `key`, `certificate`, `CSR`, and -`bundle` files as appropriate. The tool takes a single flag, `-f`, that -specifies the input file, and an argument that specifies the base name for -the files produced. If the input filename is `-` (which is the default), -cfssljson reads from standard input. It maps keys in the JSON file to -filenames in the following way: - -* if __cert__ or __certificate__ is specified, __basename.pem__ will be produced. -* if __key__ or __private_key__ is specified, __basename-key.pem__ will be produced. -* if __csr__ or __certificate_request__ is specified, __basename.csr__ will be produced. -* if __bundle__ is specified, __basename-bundle.pem__ will be produced. -* if __ocspResponse__ is specified, __basename-response.der__ will be produced. - -Instead of saving to a file, you can pass `-stdout` to output the encoded -contents to standard output. - -### Static Builds - -By default, the web assets are accessed from disk, based on their -relative locations. If you wish to distribute a single, -statically-linked, `cfssl` binary, you’ll want to embed these resources -before building. This can by done with the -[go.rice](https://github.com/GeertJohan/go.rice) tool. - -``` -pushd cli/serve && rice embed-go && popd -``` - -Then building with `go build` will use the embedded resources. - -### Additional Documentation - -Additional documentation can be found in the "doc" directory: - -* `api/intro.txt`: documents the API endpoints -* `bootstrap.txt`: a walkthrough from building the package to getting - up and running diff --git a/vendor/github.com/cloudflare/cfssl/test.sh b/vendor/github.com/cloudflare/cfssl/test.sh deleted file mode 100755 index 7c944e4391..0000000000 --- a/vendor/github.com/cloudflare/cfssl/test.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/bin/bash -set -o errexit - -CDIR=$(cd `dirname "$0"` && pwd) -cd "$CDIR" - -ORG_PATH="github.com/cloudflare" -REPO_PATH="${ORG_PATH}/cfssl" -ARCH="$(uname -m)" - -export GOPATH="${CDIR}/gopath" - -export PATH="${PATH}:${GOPATH}/bin" - -eval $(go env) - -if [ ! -h gopath/src/${REPO_PATH} ]; then - mkdir -p gopath/src/${ORG_PATH} - ln -s ../../../.. gopath/src/${REPO_PATH} || exit 255 -fi - -ls "${GOPATH}/src/${REPO_PATH}" - -PACKAGES="" -if [ "$#" != 0 ]; then - for pkg in "$@"; do - PACKAGES="$PACKAGES $REPO_PATH/$pkg" - done -else - PACKAGES=$(go list ./... | grep -v /vendor/ | grep ^_) - # Escape current cirectory - CDIR_ESC=$(printf "%q" "$CDIR/") - # Remove current directory from the package path - PACKAGES=${PACKAGES//$CDIR_ESC/} - # Remove underscores - PACKAGES=${PACKAGES//_/} - # split PACKAGES into an array and prepend REPO_PATH to each local package - split=(${PACKAGES// / }) - PACKAGES=${split[@]/#/${REPO_PATH}/} -fi - -# Build and install cfssl executable in PATH -go install -tags "$BUILD_TAGS" ${REPO_PATH}/cmd/cfssl - -COVPROFILES="" -for package in $(go list -f '{{if len .TestGoFiles}}{{.ImportPath}}{{end}}' $PACKAGES) -do - profile="$GOPATH/src/$package/.coverprofile" - if [ $ARCH = 'x86_64' ]; then - go test -race -tags "$BUILD_TAGS" --coverprofile=$profile $package - else - go test -tags "$BUILD_TAGS" --coverprofile=$profile $package - fi - [ -s $profile ] && COVPROFILES="$COVPROFILES $profile" -done -cat $COVPROFILES > coverprofile.txt - -if ! command -v fgt > /dev/null ; then - go get github.com/GeertJohan/fgt -fi - -if ! command -v golint > /dev/null ; then - go get github.com/golang/lint/golint -fi - -for package in $PACKAGES -do - echo "fgt golint ${package}" - fgt golint "${package}" -done diff --git a/vendor/github.com/container-storage-interface/spec/.gitignore b/vendor/github.com/container-storage-interface/spec/.gitignore deleted file mode 100644 index 443a2c83dc..0000000000 --- a/vendor/github.com/container-storage-interface/spec/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -*.tmp -.DS_Store -.build -*.swp diff --git a/vendor/github.com/container-storage-interface/spec/.travis.yml b/vendor/github.com/container-storage-interface/spec/.travis.yml deleted file mode 100644 index 65d1a6ab0a..0000000000 --- a/vendor/github.com/container-storage-interface/spec/.travis.yml +++ /dev/null @@ -1,38 +0,0 @@ -# Setting "sudo" to false forces Travis-CI to use its -# container-based build infrastructure, which has shorter -# queue times. -sudo: false - -# Use the newer Travis-CI build templates based on the -# Debian Linux distribution "Trusty" release. -dist: trusty - -# Selecting C as the language keeps the container to a -# minimum footprint. -language: c - -jobs: - include: - - # The test stage validates that the protobuf file was updated - # correctly prior to being committed. - - stage: test - script: make - - # The lang stages validate the specification using - # language-specific bindings. - - # Lang stage: Cxx - - stage: lang - script: make -C lib/cxx - - # Lang stage: Go - - stage: lang - language: go - go: 1.10.4 - go_import_path: github.com/container-storage-interface/spec - install: - - make -C lib/go protoc - - make -C lib/go protoc-gen-go - script: - - make -C lib/go diff --git a/vendor/github.com/container-storage-interface/spec/CCLA.pdf b/vendor/github.com/container-storage-interface/spec/CCLA.pdf deleted file mode 100644 index 08a9f2a50d5e812a6c8355960fdf5a77912761b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67545 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 F{{ta8d+z`M diff --git a/vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md b/vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md deleted file mode 100644 index fd1ac842e3..0000000000 --- a/vendor/github.com/container-storage-interface/spec/CONTRIBUTING.md +++ /dev/null @@ -1,59 +0,0 @@ -# How to Contribute - -This document outlines some of the requirements and conventions for contributing to the Container Storage Interface, including development workflow, commit message formatting, contact points, and other resources to make it easier to get your contribution accepted. - -## Licence and CLA - -CSI is under [Apache 2.0](LICENSE) and accepts contributions via GitHub pull requests. - -Before contributing to the Container Storage Interface, contributors MUST sign the CLA available [here](https://github.com/container-storage-interface/spec/blob/master/CCLA.pdf). -The CLA MAY be signed on behalf of a company, possibly covering multiple contributors, or as an individual (put "Individual" for "Corporation name"). -The completed CLA MUST be mailed to the CSI Approvers [mailing list](container-storage-interface-approvers@googlegroups.com). - -## Markdown style - -To keep consistency throughout the Markdown files in the CSI spec, all files should be formatted one sentence per line. -This fixes two things: it makes diffing easier with git and it resolves fights about line wrapping length. -For example, this paragraph will span three lines in the Markdown source. - -## Code style - -This also applies to the code snippets in the markdown files. - -* Please wrap the code at 72 characters. - -## Comments - -This also applies to the code snippets in the markdown files. - -* End each sentence within a comment with a punctuation mark (please note that we generally prefer periods); this applies to incomplete sentences as well. -* For trailing comments, leave one space between the end of the code and the beginning of the comment. - -## Git commit - -The "system of record" for the specification is the `spec.md` file and all hand-edits of the specification should happen there. -**DO NOT** manually edit the generated protobufs or generated language bindings. -Once changes to `spec.md` are complete, please run `make` to update generated files. - -**IMPORTANT:** Prior to committing code please run `make` to ensure that your specification changes have landed in all generated files. - -### Commit Style - -Each commit should represent a single logical (atomic) change: this makes your changes easier to review. - -* Try to avoid unrelated cleanups (e.g., typo fixes or style nits) in the same commit that makes functional changes. - While typo fixes are great, including them in the same commit as functional changes makes the commit history harder to read. -* Developers often make incremental commits to save their progress when working on a change, and then “rewrite history” (e.g., using `git rebase -i`) to create a clean set of commits once the change is ready to be reviewed. - -Simple house-keeping for clean git history. -Read more on [How to Write a Git Commit Message](http://chris.beams.io/posts/git-commit/) or the Discussion section of [`git-commit(1)`](http://git-scm.com/docs/git-commit). - -* Separate the subject from body with a blank line. -* Limit the subject line to 50 characters. -* Capitalize the subject line. -* Do not end the subject line with a period. -* Use the imperative mood in the subject line. -* Wrap the body at 72 characters. -* Use the body to explain what and why vs. how. - * If there was important/useful/essential conversation or information, copy or include a reference. -* When possible, one keyword to scope the change in the subject (i.e. "README: ...", "tool: ..."). diff --git a/vendor/github.com/container-storage-interface/spec/Makefile b/vendor/github.com/container-storage-interface/spec/Makefile deleted file mode 100644 index 0e04e322b8..0000000000 --- a/vendor/github.com/container-storage-interface/spec/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -all: build - -CSI_SPEC := spec.md -CSI_PROTO := csi.proto - -# This is the target for building the temporary CSI protobuf file. -# -# The temporary file is not versioned, and thus will always be -# built on Travis-CI. -$(CSI_PROTO).tmp: $(CSI_SPEC) Makefile - echo "// Code generated by make; DO NOT EDIT." > "$@" - cat $< | sed -n -e '/```protobuf$$/,/^```$$/ p' | sed '/^```/d' >> "$@" - -# This is the target for building the CSI protobuf file. -# -# This target depends on its temp file, which is not versioned. -# Therefore when built on Travis-CI the temp file will always -# be built and trigger this target. On Travis-CI the temp file -# is compared with the real file, and if they differ the build -# will fail. -# -# Locally the temp file is simply copied over the real file. -$(CSI_PROTO): $(CSI_PROTO).tmp -ifeq (true,$(TRAVIS)) - diff "$@" "$?" -else - diff "$@" "$?" > /dev/null 2>&1 || cp -f "$?" "$@" -endif - -build: check - -# If this is not running on Travis-CI then for sake of convenience -# go ahead and update the language bindings as well. -ifneq (true,$(TRAVIS)) -build: - $(MAKE) -C lib/go - $(MAKE) -C lib/cxx -endif - -clean: - $(MAKE) -C lib/go $@ - -clobber: clean - $(MAKE) -C lib/go $@ - rm -f $(CSI_PROTO) $(CSI_PROTO).tmp - -# check generated files for violation of standards -check: $(CSI_PROTO) - awk '{ if (length > 72) print NR, $$0 }' $? | diff - /dev/null - -.PHONY: clean clobber check diff --git a/vendor/github.com/container-storage-interface/spec/OWNERS b/vendor/github.com/container-storage-interface/spec/OWNERS deleted file mode 100644 index 7225bd014c..0000000000 --- a/vendor/github.com/container-storage-interface/spec/OWNERS +++ /dev/null @@ -1,10 +0,0 @@ -approvers: - - saad-ali # Representing Kubernetes - - thockin # Representing Kubernetes - - jieyu # Representing Mesos - - jdef # Representing Mesos - - anusha-ragunathan # Representing Docker - - ddebroy # Representing Docker - - julian-hj # Representing Cloud Foundry - - paulcwarren # Representing Cloud Foundry -reviewers: diff --git a/vendor/github.com/container-storage-interface/spec/README.md b/vendor/github.com/container-storage-interface/spec/README.md deleted file mode 100644 index c686e423f7..0000000000 --- a/vendor/github.com/container-storage-interface/spec/README.md +++ /dev/null @@ -1,13 +0,0 @@ -# Container Storage Interface (CSI) Specification [![build status](https://travis-ci.org/container-storage-interface/spec.svg?branch=master)](https://travis-ci.org/container-storage-interface/spec) - -![CSI Logo](logo.png) - -This project contains the CSI [specification](spec.md) and [protobuf](csi.proto) files. - -## CSI Adoption - -### Container Orchestrators (CO) - -* [Cloud Foundry](https://github.com/cloudfoundry/csi-plugins-release/blob/master/CSI_SUPPORT.md) -* [Kubernetes](https://kubernetes-csi.github.io/docs/) -* [Mesos](http://mesos.apache.org/documentation/latest/csi/) diff --git a/vendor/github.com/container-storage-interface/spec/VERSION b/vendor/github.com/container-storage-interface/spec/VERSION deleted file mode 100644 index 9084fa2f71..0000000000 --- a/vendor/github.com/container-storage-interface/spec/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.1.0 diff --git a/vendor/github.com/container-storage-interface/spec/csi.proto b/vendor/github.com/container-storage-interface/spec/csi.proto deleted file mode 100644 index 4c4d225bf5..0000000000 --- a/vendor/github.com/container-storage-interface/spec/csi.proto +++ /dev/null @@ -1,1306 +0,0 @@ -// Code generated by make; DO NOT EDIT. -syntax = "proto3"; -package csi.v1; - -import "google/protobuf/descriptor.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option go_package = "csi"; - -extend google.protobuf.FieldOptions { - // Indicates that a field MAY contain information that is sensitive - // and MUST be treated as such (e.g. not logged). - bool csi_secret = 1059; -} -service Identity { - rpc GetPluginInfo(GetPluginInfoRequest) - returns (GetPluginInfoResponse) {} - - rpc GetPluginCapabilities(GetPluginCapabilitiesRequest) - returns (GetPluginCapabilitiesResponse) {} - - rpc Probe (ProbeRequest) - returns (ProbeResponse) {} -} - -service Controller { - rpc CreateVolume (CreateVolumeRequest) - returns (CreateVolumeResponse) {} - - rpc DeleteVolume (DeleteVolumeRequest) - returns (DeleteVolumeResponse) {} - - rpc ControllerPublishVolume (ControllerPublishVolumeRequest) - returns (ControllerPublishVolumeResponse) {} - - rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest) - returns (ControllerUnpublishVolumeResponse) {} - - rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest) - returns (ValidateVolumeCapabilitiesResponse) {} - - rpc ListVolumes (ListVolumesRequest) - returns (ListVolumesResponse) {} - - rpc GetCapacity (GetCapacityRequest) - returns (GetCapacityResponse) {} - - rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest) - returns (ControllerGetCapabilitiesResponse) {} - - rpc CreateSnapshot (CreateSnapshotRequest) - returns (CreateSnapshotResponse) {} - - rpc DeleteSnapshot (DeleteSnapshotRequest) - returns (DeleteSnapshotResponse) {} - - rpc ListSnapshots (ListSnapshotsRequest) - returns (ListSnapshotsResponse) {} - - rpc ControllerExpandVolume (ControllerExpandVolumeRequest) - returns (ControllerExpandVolumeResponse) {} -} - -service Node { - rpc NodeStageVolume (NodeStageVolumeRequest) - returns (NodeStageVolumeResponse) {} - - rpc NodeUnstageVolume (NodeUnstageVolumeRequest) - returns (NodeUnstageVolumeResponse) {} - - rpc NodePublishVolume (NodePublishVolumeRequest) - returns (NodePublishVolumeResponse) {} - - rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest) - returns (NodeUnpublishVolumeResponse) {} - - rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest) - returns (NodeGetVolumeStatsResponse) {} - - - rpc NodeExpandVolume(NodeExpandVolumeRequest) - returns (NodeExpandVolumeResponse) {} - - - rpc NodeGetCapabilities (NodeGetCapabilitiesRequest) - returns (NodeGetCapabilitiesResponse) {} - - rpc NodeGetInfo (NodeGetInfoRequest) - returns (NodeGetInfoResponse) {} -} -message GetPluginInfoRequest { - // Intentionally empty. -} - -message GetPluginInfoResponse { - // The name MUST follow domain name notation format - // (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD - // include the plugin's host company name and the plugin name, - // to minimize the possibility of collisions. It MUST be 63 - // characters or less, beginning and ending with an alphanumeric - // character ([a-z0-9A-Z]) with dashes (-), dots (.), and - // alphanumerics between. This field is REQUIRED. - string name = 1; - - // This field is REQUIRED. Value of this field is opaque to the CO. - string vendor_version = 2; - - // This field is OPTIONAL. Values are opaque to the CO. - map manifest = 3; -} -message GetPluginCapabilitiesRequest { - // Intentionally empty. -} - -message GetPluginCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated PluginCapability capabilities = 1; -} - -// Specifies a capability of the plugin. -message PluginCapability { - message Service { - enum Type { - UNKNOWN = 0; - // CONTROLLER_SERVICE indicates that the Plugin provides RPCs for - // the ControllerService. Plugins SHOULD provide this capability. - // In rare cases certain plugins MAY wish to omit the - // ControllerService entirely from their implementation, but such - // SHOULD NOT be the common case. - // The presence of this capability determines whether the CO will - // attempt to invoke the REQUIRED ControllerService RPCs, as well - // as specific RPCs as indicated by ControllerGetCapabilities. - CONTROLLER_SERVICE = 1; - - // VOLUME_ACCESSIBILITY_CONSTRAINTS indicates that the volumes for - // this plugin MAY NOT be equally accessible by all nodes in the - // cluster. The CO MUST use the topology information returned by - // CreateVolumeRequest along with the topology information - // returned by NodeGetInfo to ensure that a given volume is - // accessible from a given node when scheduling workloads. - VOLUME_ACCESSIBILITY_CONSTRAINTS = 2; - } - Type type = 1; - } - - message VolumeExpansion { - enum Type { - UNKNOWN = 0; - - // ONLINE indicates that volumes may be expanded when published to - // a node. When a Plugin implements this capability it MUST - // implement either the EXPAND_VOLUME controller capability or the - // EXPAND_VOLUME node capability or both. When a plugin supports - // ONLINE volume expansion and also has the EXPAND_VOLUME - // controller capability then the plugin MUST support expansion of - // volumes currently published and available on a node. When a - // plugin supports ONLINE volume expansion and also has the - // EXPAND_VOLUME node capability then the plugin MAY support - // expansion of node-published volume via NodeExpandVolume. - // - // Example 1: Given a shared filesystem volume (e.g. GlusterFs), - // the Plugin may set the ONLINE volume expansion capability and - // implement ControllerExpandVolume but not NodeExpandVolume. - // - // Example 2: Given a block storage volume type (e.g. EBS), the - // Plugin may set the ONLINE volume expansion capability and - // implement both ControllerExpandVolume and NodeExpandVolume. - // - // Example 3: Given a Plugin that supports volume expansion only - // upon a node, the Plugin may set the ONLINE volume - // expansion capability and implement NodeExpandVolume but not - // ControllerExpandVolume. - ONLINE = 1; - - // OFFLINE indicates that volumes currently published and - // available on a node SHALL NOT be expanded via - // ControllerExpandVolume. When a plugin supports OFFLINE volume - // expansion it MUST implement either the EXPAND_VOLUME controller - // capability or both the EXPAND_VOLUME controller capability and - // the EXPAND_VOLUME node capability. - // - // Example 1: Given a block storage volume type (e.g. Azure Disk) - // that does not support expansion of "node-attached" (i.e. - // controller-published) volumes, the Plugin may indicate - // OFFLINE volume expansion support and implement both - // ControllerExpandVolume and NodeExpandVolume. - OFFLINE = 2; - } - Type type = 1; - } - - oneof type { - // Service that the plugin supports. - Service service = 1; - VolumeExpansion volume_expansion = 2; - } -} -message ProbeRequest { - // Intentionally empty. -} - -message ProbeResponse { - // Readiness allows a plugin to report its initialization status back - // to the CO. Initialization for some plugins MAY be time consuming - // and it is important for a CO to distinguish between the following - // cases: - // - // 1) The plugin is in an unhealthy state and MAY need restarting. In - // this case a gRPC error code SHALL be returned. - // 2) The plugin is still initializing, but is otherwise perfectly - // healthy. In this case a successful response SHALL be returned - // with a readiness value of `false`. Calls to the plugin's - // Controller and/or Node services MAY fail due to an incomplete - // initialization state. - // 3) The plugin has finished initializing and is ready to service - // calls to its Controller and/or Node services. A successful - // response is returned with a readiness value of `true`. - // - // This field is OPTIONAL. If not present, the caller SHALL assume - // that the plugin is in a ready state and is accepting calls to its - // Controller and/or Node services (according to the plugin's reported - // capabilities). - .google.protobuf.BoolValue ready = 1; -} -message CreateVolumeRequest { - // The suggested name for the storage space. This field is REQUIRED. - // It serves two purposes: - // 1) Idempotency - This name is generated by the CO to achieve - // idempotency. The Plugin SHOULD ensure that multiple - // `CreateVolume` calls for the same name do not result in more - // than one piece of storage provisioned corresponding to that - // name. If a Plugin is unable to enforce idempotency, the CO's - // error recovery logic could result in multiple (unused) volumes - // being provisioned. - // In the case of error, the CO MUST handle the gRPC error codes - // per the recovery behavior defined in the "CreateVolume Errors" - // section below. - // The CO is responsible for cleaning up volumes it provisioned - // that it no longer needs. If the CO is uncertain whether a volume - // was provisioned or not when a `CreateVolume` call fails, the CO - // MAY call `CreateVolume` again, with the same name, to ensure the - // volume exists and to retrieve the volume's `volume_id` (unless - // otherwise prohibited by "CreateVolume Errors"). - // 2) Suggested name - Some storage systems allow callers to specify - // an identifier by which to refer to the newly provisioned - // storage. If a storage system supports this, it can optionally - // use this name as the identifier for the new volume. - // Any Unicode string that conforms to the length limit is allowed - // except those containing the following banned characters: - // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. - // (These are control characters other than commonly used whitespace.) - string name = 1; - - // This field is OPTIONAL. This allows the CO to specify the capacity - // requirement of the volume to be provisioned. If not specified, the - // Plugin MAY choose an implementation-defined capacity range. If - // specified it MUST always be honored, even when creating volumes - // from a source; which MAY force some backends to internally extend - // the volume after creating it. - CapacityRange capacity_range = 2; - - // The capabilities that the provisioned volume MUST have. SP MUST - // provision a volume that will satisfy ALL of the capabilities - // specified in this list. Otherwise SP MUST return the appropriate - // gRPC error code. - // The Plugin MUST assume that the CO MAY use the provisioned volume - // with ANY of the capabilities specified in this list. - // For example, a CO MAY specify two volume capabilities: one with - // access mode SINGLE_NODE_WRITER and another with access mode - // MULTI_NODE_READER_ONLY. In this case, the SP MUST verify that the - // provisioned volume can be used in either mode. - // This also enables the CO to do early validation: If ANY of the - // specified volume capabilities are not supported by the SP, the call - // MUST return the appropriate gRPC error code. - // This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 3; - - // Plugin specific parameters passed in as opaque key-value pairs. - // This field is OPTIONAL. The Plugin is responsible for parsing and - // validating these parameters. COs will treat these as opaque. - map parameters = 4; - - // Secrets required by plugin to complete volume creation request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 5 [(csi_secret) = true]; - - // If specified, the new volume will be pre-populated with data from - // this source. This field is OPTIONAL. - VolumeContentSource volume_content_source = 6; - - // Specifies where (regions, zones, racks, etc.) the provisioned - // volume MUST be accessible from. - // An SP SHALL advertise the requirements for topological - // accessibility information in documentation. COs SHALL only specify - // topological accessibility information supported by the SP. - // This field is OPTIONAL. - // This field SHALL NOT be specified unless the SP has the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. - // If this field is not specified and the SP has the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability, the SP MAY - // choose where the provisioned volume is accessible from. - TopologyRequirement accessibility_requirements = 7; -} - -// Specifies what source the volume will be created from. One of the -// type fields MUST be specified. -message VolumeContentSource { - message SnapshotSource { - // Contains identity information for the existing source snapshot. - // This field is REQUIRED. Plugin is REQUIRED to support creating - // volume from snapshot if it supports the capability - // CREATE_DELETE_SNAPSHOT. - string snapshot_id = 1; - } - - message VolumeSource { - // Contains identity information for the existing source volume. - // This field is REQUIRED. Plugins reporting CLONE_VOLUME - // capability MUST support creating a volume from another volume. - string volume_id = 1; - } - - oneof type { - SnapshotSource snapshot = 1; - VolumeSource volume = 2; - } -} - -message CreateVolumeResponse { - // Contains all attributes of the newly created volume that are - // relevant to the CO along with information required by the Plugin - // to uniquely identify the volume. This field is REQUIRED. - Volume volume = 1; -} - -// Specify a capability of a volume. -message VolumeCapability { - // Indicate that the volume will be accessed via the block device API. - message BlockVolume { - // Intentionally empty, for now. - } - - // Indicate that the volume will be accessed via the filesystem API. - message MountVolume { - // The filesystem type. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string fs_type = 1; - - // The mount options that can be used for the volume. This field is - // OPTIONAL. `mount_flags` MAY contain sensitive information. - // Therefore, the CO and the Plugin MUST NOT leak this information - // to untrusted entities. The total size of this repeated field - // SHALL NOT exceed 4 KiB. - repeated string mount_flags = 2; - } - - // Specify how a volume can be accessed. - message AccessMode { - enum Mode { - UNKNOWN = 0; - - // Can only be published once as read/write on a single node, at - // any given time. - SINGLE_NODE_WRITER = 1; - - // Can only be published once as readonly on a single node, at - // any given time. - SINGLE_NODE_READER_ONLY = 2; - - // Can be published as readonly at multiple nodes simultaneously. - MULTI_NODE_READER_ONLY = 3; - - // Can be published at multiple nodes simultaneously. Only one of - // the node can be used as read/write. The rest will be readonly. - MULTI_NODE_SINGLE_WRITER = 4; - - // Can be published as read/write at multiple nodes - // simultaneously. - MULTI_NODE_MULTI_WRITER = 5; - } - - // This field is REQUIRED. - Mode mode = 1; - } - - // Specifies what API the volume will be accessed using. One of the - // following fields MUST be specified. - oneof access_type { - BlockVolume block = 1; - MountVolume mount = 2; - } - - // This is a REQUIRED field. - AccessMode access_mode = 3; -} - -// The capacity of the storage space in bytes. To specify an exact size, -// `required_bytes` and `limit_bytes` SHALL be set to the same value. At -// least one of the these fields MUST be specified. -message CapacityRange { - // Volume MUST be at least this big. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 required_bytes = 1; - - // Volume MUST not be bigger than this. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 limit_bytes = 2; -} - -// Information about a specific volume. -message Volume { - // The capacity of the volume in bytes. This field is OPTIONAL. If not - // set (value of 0), it indicates that the capacity of the volume is - // unknown (e.g., NFS share). - // The value of this field MUST NOT be negative. - int64 capacity_bytes = 1; - - // The identifier for this volume, generated by the plugin. - // This field is REQUIRED. - // This field MUST contain enough information to uniquely identify - // this specific volume vs all other volumes supported by this plugin. - // This field SHALL be used by the CO in subsequent calls to refer to - // this volume. - // The SP is NOT responsible for global uniqueness of volume_id across - // multiple SPs. - string volume_id = 2; - - // Opaque static properties of the volume. SP MAY use this field to - // ensure subsequent volume validation and publishing calls have - // contextual information. - // The contents of this field SHALL be opaque to a CO. - // The contents of this field SHALL NOT be mutable. - // The contents of this field SHALL be safe for the CO to cache. - // The contents of this field SHOULD NOT contain sensitive - // information. - // The contents of this field SHOULD NOT be used for uniquely - // identifying a volume. The `volume_id` alone SHOULD be sufficient to - // identify the volume. - // A volume uniquely identified by `volume_id` SHALL always report the - // same volume_context. - // This field is OPTIONAL and when present MUST be passed to volume - // validation and publishing calls. - map volume_context = 3; - - // If specified, indicates that the volume is not empty and is - // pre-populated with data from the specified source. - // This field is OPTIONAL. - VolumeContentSource content_source = 4; - - // Specifies where (regions, zones, racks, etc.) the provisioned - // volume is accessible from. - // A plugin that returns this field MUST also set the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. - // An SP MAY specify multiple topologies to indicate the volume is - // accessible from multiple locations. - // COs MAY use this information along with the topology information - // returned by NodeGetInfo to ensure that a given volume is accessible - // from a given node when scheduling workloads. - // This field is OPTIONAL. If it is not specified, the CO MAY assume - // the volume is equally accessible from all nodes in the cluster and - // MAY schedule workloads referencing the volume on any available - // node. - // - // Example 1: - // accessible_topology = {"region": "R1", "zone": "Z2"} - // Indicates a volume accessible only from the "region" "R1" and the - // "zone" "Z2". - // - // Example 2: - // accessible_topology = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"} - // Indicates a volume accessible from both "zone" "Z2" and "zone" "Z3" - // in the "region" "R1". - repeated Topology accessible_topology = 5; -} - -message TopologyRequirement { - // Specifies the list of topologies the provisioned volume MUST be - // accessible from. - // This field is OPTIONAL. If TopologyRequirement is specified either - // requisite or preferred or both MUST be specified. - // - // If requisite is specified, the provisioned volume MUST be - // accessible from at least one of the requisite topologies. - // - // Given - // x = number of topologies provisioned volume is accessible from - // n = number of requisite topologies - // The CO MUST ensure n >= 1. The SP MUST ensure x >= 1 - // If x==n, then the SP MUST make the provisioned volume available to - // all topologies from the list of requisite topologies. If it is - // unable to do so, the SP MUST fail the CreateVolume call. - // For example, if a volume should be accessible from a single zone, - // and requisite = - // {"region": "R1", "zone": "Z2"} - // then the provisioned volume MUST be accessible from the "region" - // "R1" and the "zone" "Z2". - // Similarly, if a volume should be accessible from two zones, and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"} - // then the provisioned volume MUST be accessible from the "region" - // "R1" and both "zone" "Z2" and "zone" "Z3". - // - // If xn, then the SP MUST make the provisioned volume available from - // all topologies from the list of requisite topologies and MAY choose - // the remaining x-n unique topologies from the list of all possible - // topologies. If it is unable to do so, the SP MUST fail the - // CreateVolume call. - // For example, if a volume should be accessible from two zones, and - // requisite = - // {"region": "R1", "zone": "Z2"} - // then the provisioned volume MUST be accessible from the "region" - // "R1" and the "zone" "Z2" and the SP may select the second zone - // independently, e.g. "R1/Z4". - repeated Topology requisite = 1; - - // Specifies the list of topologies the CO would prefer the volume to - // be provisioned in. - // - // This field is OPTIONAL. If TopologyRequirement is specified either - // requisite or preferred or both MUST be specified. - // - // An SP MUST attempt to make the provisioned volume available using - // the preferred topologies in order from first to last. - // - // If requisite is specified, all topologies in preferred list MUST - // also be present in the list of requisite topologies. - // - // If the SP is unable to to make the provisioned volume available - // from any of the preferred topologies, the SP MAY choose a topology - // from the list of requisite topologies. - // If the list of requisite topologies is not specified, then the SP - // MAY choose from the list of all possible topologies. - // If the list of requisite topologies is specified and the SP is - // unable to to make the provisioned volume available from any of the - // requisite topologies it MUST fail the CreateVolume call. - // - // Example 1: - // Given a volume should be accessible from a single zone, and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"} - // preferred = - // {"region": "R1", "zone": "Z3"} - // then the the SP SHOULD first attempt to make the provisioned volume - // available from "zone" "Z3" in the "region" "R1" and fall back to - // "zone" "Z2" in the "region" "R1" if that is not possible. - // - // Example 2: - // Given a volume should be accessible from a single zone, and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"}, - // {"region": "R1", "zone": "Z4"}, - // {"region": "R1", "zone": "Z5"} - // preferred = - // {"region": "R1", "zone": "Z4"}, - // {"region": "R1", "zone": "Z2"} - // then the the SP SHOULD first attempt to make the provisioned volume - // accessible from "zone" "Z4" in the "region" "R1" and fall back to - // "zone" "Z2" in the "region" "R1" if that is not possible. If that - // is not possible, the SP may choose between either the "zone" - // "Z3" or "Z5" in the "region" "R1". - // - // Example 3: - // Given a volume should be accessible from TWO zones (because an - // opaque parameter in CreateVolumeRequest, for example, specifies - // the volume is accessible from two zones, aka synchronously - // replicated), and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"}, - // {"region": "R1", "zone": "Z4"}, - // {"region": "R1", "zone": "Z5"} - // preferred = - // {"region": "R1", "zone": "Z5"}, - // {"region": "R1", "zone": "Z3"} - // then the the SP SHOULD first attempt to make the provisioned volume - // accessible from the combination of the two "zones" "Z5" and "Z3" in - // the "region" "R1". If that's not possible, it should fall back to - // a combination of "Z5" and other possibilities from the list of - // requisite. If that's not possible, it should fall back to a - // combination of "Z3" and other possibilities from the list of - // requisite. If that's not possible, it should fall back to a - // combination of other possibilities from the list of requisite. - repeated Topology preferred = 2; -} - -// Topology is a map of topological domains to topological segments. -// A topological domain is a sub-division of a cluster, like "region", -// "zone", "rack", etc. -// A topological segment is a specific instance of a topological domain, -// like "zone3", "rack3", etc. -// For example {"com.company/zone": "Z1", "com.company/rack": "R3"} -// Valid keys have two segments: an OPTIONAL prefix and name, separated -// by a slash (/), for example: "com.company.example/zone". -// The key name segment is REQUIRED. The prefix is OPTIONAL. -// The key name MUST be 63 characters or less, begin and end with an -// alphanumeric character ([a-z0-9A-Z]), and contain only dashes (-), -// underscores (_), dots (.), or alphanumerics in between, for example -// "zone". -// The key prefix MUST be 63 characters or less, begin and end with a -// lower-case alphanumeric character ([a-z0-9]), contain only -// dashes (-), dots (.), or lower-case alphanumerics in between, and -// follow domain name notation format -// (https://tools.ietf.org/html/rfc1035#section-2.3.1). -// The key prefix SHOULD include the plugin's host company name and/or -// the plugin name, to minimize the possibility of collisions with keys -// from other plugins. -// If a key prefix is specified, it MUST be identical across all -// topology keys returned by the SP (across all RPCs). -// Keys MUST be case-insensitive. Meaning the keys "Zone" and "zone" -// MUST not both exist. -// Each value (topological segment) MUST contain 1 or more strings. -// Each string MUST be 63 characters or less and begin and end with an -// alphanumeric character with '-', '_', '.', or alphanumerics in -// between. -message Topology { - map segments = 1; -} -message DeleteVolumeRequest { - // The ID of the volume to be deprovisioned. - // This field is REQUIRED. - string volume_id = 1; - - // Secrets required by plugin to complete volume deletion request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 2 [(csi_secret) = true]; -} - -message DeleteVolumeResponse { - // Intentionally empty. -} -message ControllerPublishVolumeRequest { - // The ID of the volume to be used on a node. - // This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is REQUIRED. The CO SHALL set this - // field to match the node ID returned by `NodeGetInfo`. - string node_id = 2; - - // Volume capability describing how the CO intends to use this volume. - // SP MUST ensure the CO can use the published volume as described. - // Otherwise SP MUST return the appropriate gRPC error code. - // This is a REQUIRED field. - VolumeCapability volume_capability = 3; - - // Indicates SP MUST publish the volume in readonly mode. - // CO MUST set this field to false if SP does not have the - // PUBLISH_READONLY controller capability. - // This is a REQUIRED field. - bool readonly = 4; - - // Secrets required by plugin to complete controller publish volume - // request. This field is OPTIONAL. Refer to the - // `Secrets Requirements` section on how to use this field. - map secrets = 5 [(csi_secret) = true]; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 6; -} - -message ControllerPublishVolumeResponse { - // Opaque static publish properties of the volume. SP MAY use this - // field to ensure subsequent `NodeStageVolume` or `NodePublishVolume` - // calls calls have contextual information. - // The contents of this field SHALL be opaque to a CO. - // The contents of this field SHALL NOT be mutable. - // The contents of this field SHALL be safe for the CO to cache. - // The contents of this field SHOULD NOT contain sensitive - // information. - // The contents of this field SHOULD NOT be used for uniquely - // identifying a volume. The `volume_id` alone SHOULD be sufficient to - // identify the volume. - // This field is OPTIONAL and when present MUST be passed to - // subsequent `NodeStageVolume` or `NodePublishVolume` calls - map publish_context = 1; -} -message ControllerUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is OPTIONAL. The CO SHOULD set this - // field to match the node ID returned by `NodeGetInfo` or leave it - // unset. If the value is set, the SP MUST unpublish the volume from - // the specified node. If the value is unset, the SP MUST unpublish - // the volume from all nodes it is published to. - string node_id = 2; - - // Secrets required by plugin to complete controller unpublish volume - // request. This SHOULD be the same secrets passed to the - // ControllerPublishVolume call for the specified volume. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 3 [(csi_secret) = true]; -} - -message ControllerUnpublishVolumeResponse { - // Intentionally empty. -} -message ValidateVolumeCapabilitiesRequest { - // The ID of the volume to check. This field is REQUIRED. - string volume_id = 1; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 2; - - // The capabilities that the CO wants to check for the volume. This - // call SHALL return "confirmed" only if all the volume capabilities - // specified below are supported. This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 3; - - // See CreateVolumeRequest.parameters. - // This field is OPTIONAL. - map parameters = 4; - - // Secrets required by plugin to complete volume validation request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 5 [(csi_secret) = true]; -} - -message ValidateVolumeCapabilitiesResponse { - message Confirmed { - // Volume context validated by the plugin. - // This field is OPTIONAL. - map volume_context = 1; - - // Volume capabilities supported by the plugin. - // This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 2; - - // The volume creation parameters validated by the plugin. - // This field is OPTIONAL. - map parameters = 3; - } - - // Confirmed indicates to the CO the set of capabilities that the - // plugin has validated. This field SHALL only be set to a non-empty - // value for successful validation responses. - // For successful validation responses, the CO SHALL compare the - // fields of this message to the originally requested capabilities in - // order to guard against an older plugin reporting "valid" for newer - // capability fields that it does not yet understand. - // This field is OPTIONAL. - Confirmed confirmed = 1; - - // Message to the CO if `confirmed` above is empty. This field is - // OPTIONAL. - // An empty string is equal to an unspecified field value. - string message = 2; -} -message ListVolumesRequest { - // If specified (non-zero value), the Plugin MUST NOT return more - // entries than this number in the response. If the actual number of - // entries is more than this number, the Plugin MUST set `next_token` - // in the response which can be used to get the next page of entries - // in the subsequent `ListVolumes` call. This field is OPTIONAL. If - // not specified (zero value), it means there is no restriction on the - // number of entries that can be returned. - // The value of this field MUST NOT be negative. - int32 max_entries = 1; - - // A token to specify where to start paginating. Set this field to - // `next_token` returned by a previous `ListVolumes` call to get the - // next page of entries. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string starting_token = 2; -} - -message ListVolumesResponse { - message Entry { - Volume volume = 1; - } - - repeated Entry entries = 1; - - // This token allows you to get the next page of entries for - // `ListVolumes` request. If the number of entries is larger than - // `max_entries`, use the `next_token` as a value for the - // `starting_token` field in the next `ListVolumes` request. This - // field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string next_token = 2; -} -message GetCapacityRequest { - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that satisfy ALL of the - // specified `volume_capabilities`. These are the same - // `volume_capabilities` the CO will use in `CreateVolumeRequest`. - // This field is OPTIONAL. - repeated VolumeCapability volume_capabilities = 1; - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes with the given Plugin - // specific `parameters`. These are the same `parameters` the CO will - // use in `CreateVolumeRequest`. This field is OPTIONAL. - map parameters = 2; - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that in the specified - // `accessible_topology`. This is the same as the - // `accessible_topology` the CO returns in a `CreateVolumeResponse`. - // This field is OPTIONAL. This field SHALL NOT be set unless the - // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. - Topology accessible_topology = 3; -} - -message GetCapacityResponse { - // The available capacity, in bytes, of the storage that can be used - // to provision volumes. If `volume_capabilities` or `parameters` is - // specified in the request, the Plugin SHALL take those into - // consideration when calculating the available capacity of the - // storage. This field is REQUIRED. - // The value of this field MUST NOT be negative. - int64 available_capacity = 1; -} -message ControllerGetCapabilitiesRequest { - // Intentionally empty. -} - -message ControllerGetCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated ControllerServiceCapability capabilities = 1; -} - -// Specifies a capability of the controller service. -message ControllerServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - CREATE_DELETE_VOLUME = 1; - PUBLISH_UNPUBLISH_VOLUME = 2; - LIST_VOLUMES = 3; - GET_CAPACITY = 4; - // Currently the only way to consume a snapshot is to create - // a volume from it. Therefore plugins supporting - // CREATE_DELETE_SNAPSHOT MUST support creating volume from - // snapshot. - CREATE_DELETE_SNAPSHOT = 5; - LIST_SNAPSHOTS = 6; - - // Plugins supporting volume cloning at the storage level MAY - // report this capability. The source volume MUST be managed by - // the same plugin. Not all volume sources and parameters - // combinations MAY work. - CLONE_VOLUME = 7; - - // Indicates the SP supports ControllerPublishVolume.readonly - // field. - PUBLISH_READONLY = 8; - - // See VolumeExpansion for details. - EXPAND_VOLUME = 9; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -message CreateSnapshotRequest { - // The ID of the source volume to be snapshotted. - // This field is REQUIRED. - string source_volume_id = 1; - - // The suggested name for the snapshot. This field is REQUIRED for - // idempotency. - // Any Unicode string that conforms to the length limit is allowed - // except those containing the following banned characters: - // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. - // (These are control characters other than commonly used whitespace.) - string name = 2; - - // Secrets required by plugin to complete snapshot creation request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 3 [(csi_secret) = true]; - - // Plugin specific parameters passed in as opaque key-value pairs. - // This field is OPTIONAL. The Plugin is responsible for parsing and - // validating these parameters. COs will treat these as opaque. - // Use cases for opaque parameters: - // - Specify a policy to automatically clean up the snapshot. - // - Specify an expiration date for the snapshot. - // - Specify whether the snapshot is readonly or read/write. - // - Specify if the snapshot should be replicated to some place. - // - Specify primary or secondary for replication systems that - // support snapshotting only on primary. - map parameters = 4; -} - -message CreateSnapshotResponse { - // Contains all attributes of the newly created snapshot that are - // relevant to the CO along with information required by the Plugin - // to uniquely identify the snapshot. This field is REQUIRED. - Snapshot snapshot = 1; -} - -// Information about a specific snapshot. -message Snapshot { - // This is the complete size of the snapshot in bytes. The purpose of - // this field is to give CO guidance on how much space is needed to - // create a volume from this snapshot. The size of the volume MUST NOT - // be less than the size of the source snapshot. This field is - // OPTIONAL. If this field is not set, it indicates that this size is - // unknown. The value of this field MUST NOT be negative and a size of - // zero means it is unspecified. - int64 size_bytes = 1; - - // The identifier for this snapshot, generated by the plugin. - // This field is REQUIRED. - // This field MUST contain enough information to uniquely identify - // this specific snapshot vs all other snapshots supported by this - // plugin. - // This field SHALL be used by the CO in subsequent calls to refer to - // this snapshot. - // The SP is NOT responsible for global uniqueness of snapshot_id - // across multiple SPs. - string snapshot_id = 2; - - // Identity information for the source volume. Note that creating a - // snapshot from a snapshot is not supported here so the source has to - // be a volume. This field is REQUIRED. - string source_volume_id = 3; - - // Timestamp when the point-in-time snapshot is taken on the storage - // system. This field is REQUIRED. - .google.protobuf.Timestamp creation_time = 4; - - // Indicates if a snapshot is ready to use as a - // `volume_content_source` in a `CreateVolumeRequest`. The default - // value is false. This field is REQUIRED. - bool ready_to_use = 5; -} -message DeleteSnapshotRequest { - // The ID of the snapshot to be deleted. - // This field is REQUIRED. - string snapshot_id = 1; - - // Secrets required by plugin to complete snapshot deletion request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 2 [(csi_secret) = true]; -} - -message DeleteSnapshotResponse {} -// List all snapshots on the storage system regardless of how they were -// created. -message ListSnapshotsRequest { - // If specified (non-zero value), the Plugin MUST NOT return more - // entries than this number in the response. If the actual number of - // entries is more than this number, the Plugin MUST set `next_token` - // in the response which can be used to get the next page of entries - // in the subsequent `ListSnapshots` call. This field is OPTIONAL. If - // not specified (zero value), it means there is no restriction on the - // number of entries that can be returned. - // The value of this field MUST NOT be negative. - int32 max_entries = 1; - - // A token to specify where to start paginating. Set this field to - // `next_token` returned by a previous `ListSnapshots` call to get the - // next page of entries. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string starting_token = 2; - - // Identity information for the source volume. This field is OPTIONAL. - // It can be used to list snapshots by volume. - string source_volume_id = 3; - - // Identity information for a specific snapshot. This field is - // OPTIONAL. It can be used to list only a specific snapshot. - // ListSnapshots will return with current snapshot information - // and will not block if the snapshot is being processed after - // it is cut. - string snapshot_id = 4; -} - -message ListSnapshotsResponse { - message Entry { - Snapshot snapshot = 1; - } - - repeated Entry entries = 1; - - // This token allows you to get the next page of entries for - // `ListSnapshots` request. If the number of entries is larger than - // `max_entries`, use the `next_token` as a value for the - // `starting_token` field in the next `ListSnapshots` request. This - // field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string next_token = 2; -} -message ControllerExpandVolumeRequest { - // The ID of the volume to expand. This field is REQUIRED. - string volume_id = 1; - - // This allows CO to specify the capacity requirements of the volume - // after expansion. This field is REQUIRED. - CapacityRange capacity_range = 2; - - // Secrets required by the plugin for expanding the volume. - // This field is OPTIONAL. - map secrets = 3 [(csi_secret) = true]; -} - -message ControllerExpandVolumeResponse { - // Capacity of volume after expansion. This field is REQUIRED. - int64 capacity_bytes = 1; - - // Whether node expansion is required for the volume. When true - // the CO MUST make NodeExpandVolume RPC call on the node. This field - // is REQUIRED. - bool node_expansion_required = 2; -} -message NodeStageVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_context = 2; - - // The path to which the volume MAY be staged. It MUST be an - // absolute path in the root filesystem of the process serving this - // request, and MUST be a directory. The CO SHALL ensure that there - // is only one `staging_target_path` per volume. The CO SHALL ensure - // that the path is directory and that the process serving the - // request has `read` and `write` permission to that directory. The - // CO SHALL be responsible for creating the directory if it does not - // exist. - // This is a REQUIRED field. - string staging_target_path = 3; - - // Volume capability describing how the CO intends to use this volume. - // SP MUST ensure the CO can use the staged volume as described. - // Otherwise SP MUST return the appropriate gRPC error code. - // This is a REQUIRED field. - VolumeCapability volume_capability = 4; - - // Secrets required by plugin to complete node stage volume request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 5 [(csi_secret) = true]; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 6; -} - -message NodeStageVolumeResponse { - // Intentionally empty. -} -message NodeUnstageVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was staged. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // This is a REQUIRED field. - string staging_target_path = 2; -} - -message NodeUnstageVolumeResponse { - // Intentionally empty. -} -message NodePublishVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_context = 2; - - // The path to which the volume was staged by `NodeStageVolume`. - // It MUST be an absolute path in the root filesystem of the process - // serving this request. - // It MUST be set if the Node Plugin implements the - // `STAGE_UNSTAGE_VOLUME` node capability. - // This is an OPTIONAL field. - string staging_target_path = 3; - - // The path to which the volume will be published. It MUST be an - // absolute path in the root filesystem of the process serving this - // request. The CO SHALL ensure uniqueness of target_path per volume. - // The CO SHALL ensure that the parent directory of this path exists - // and that the process serving the request has `read` and `write` - // permissions to that parent directory. - // For volumes with an access type of block, the SP SHALL place the - // block device at target_path. - // For volumes with an access type of mount, the SP SHALL place the - // mounted directory at target_path. - // Creation of target_path is the responsibility of the SP. - // This is a REQUIRED field. - string target_path = 4; - - // Volume capability describing how the CO intends to use this volume. - // SP MUST ensure the CO can use the published volume as described. - // Otherwise SP MUST return the appropriate gRPC error code. - // This is a REQUIRED field. - VolumeCapability volume_capability = 5; - - // Indicates SP MUST publish the volume in readonly mode. - // This field is REQUIRED. - bool readonly = 6; - - // Secrets required by plugin to complete node publish volume request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 7 [(csi_secret) = true]; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 8; -} - -message NodePublishVolumeResponse { - // Intentionally empty. -} -message NodeUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was published. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // The SP MUST delete the file or directory it created at this path. - // This is a REQUIRED field. - string target_path = 2; -} - -message NodeUnpublishVolumeResponse { - // Intentionally empty. -} -message NodeGetVolumeStatsRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // It can be any valid path where volume was previously - // staged or published. - // It MUST be an absolute path in the root filesystem of - // the process serving this request. - // This is a REQUIRED field. - string volume_path = 2; -} - -message NodeGetVolumeStatsResponse { - // This field is OPTIONAL. - repeated VolumeUsage usage = 1; -} - -message VolumeUsage { - enum Unit { - UNKNOWN = 0; - BYTES = 1; - INODES = 2; - } - // The available capacity in specified Unit. This field is OPTIONAL. - // The value of this field MUST NOT be negative. - int64 available = 1; - - // The total capacity in specified Unit. This field is REQUIRED. - // The value of this field MUST NOT be negative. - int64 total = 2; - - // The used capacity in specified Unit. This field is OPTIONAL. - // The value of this field MUST NOT be negative. - int64 used = 3; - - // Units by which values are measured. This field is REQUIRED. - Unit unit = 4; -} -message NodeGetCapabilitiesRequest { - // Intentionally empty. -} - -message NodeGetCapabilitiesResponse { - // All the capabilities that the node service supports. This field - // is OPTIONAL. - repeated NodeServiceCapability capabilities = 1; -} - -// Specifies a capability of the node service. -message NodeServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - STAGE_UNSTAGE_VOLUME = 1; - // If Plugin implements GET_VOLUME_STATS capability - // then it MUST implement NodeGetVolumeStats RPC - // call for fetching volume statistics. - GET_VOLUME_STATS = 2; - // See VolumeExpansion for details. - EXPAND_VOLUME = 3; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -message NodeGetInfoRequest { -} - -message NodeGetInfoResponse { - // The identifier of the node as understood by the SP. - // This field is REQUIRED. - // This field MUST contain enough information to uniquely identify - // this specific node vs all other nodes supported by this plugin. - // This field SHALL be used by the CO in subsequent calls, including - // `ControllerPublishVolume`, to refer to this node. - // The SP is NOT responsible for global uniqueness of node_id across - // multiple SPs. - string node_id = 1; - - // Maximum number of volumes that controller can publish to the node. - // If value is not set or zero CO SHALL decide how many volumes of - // this type can be published by the controller to the node. The - // plugin MUST NOT set negative values here. - // This field is OPTIONAL. - int64 max_volumes_per_node = 2; - - // Specifies where (regions, zones, racks, etc.) the node is - // accessible from. - // A plugin that returns this field MUST also set the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. - // COs MAY use this information along with the topology information - // returned in CreateVolumeResponse to ensure that a given volume is - // accessible from a given node when scheduling workloads. - // This field is OPTIONAL. If it is not specified, the CO MAY assume - // the node is not subject to any topological constraint, and MAY - // schedule workloads that reference any volume V, such that there are - // no topological constraints declared for V. - // - // Example 1: - // accessible_topology = - // {"region": "R1", "zone": "Z2"} - // Indicates the node exists within the "region" "R1" and the "zone" - // "Z2". - Topology accessible_topology = 3; -} -message NodeExpandVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path on which volume is available. This field is REQUIRED. - string volume_path = 2; - - // This allows CO to specify the capacity requirements of the volume - // after expansion. If capacity_range is omitted then a plugin MAY - // inspect the file system of the volume to determine the maximum - // capacity to which the volume can be expanded. In such cases a - // plugin MAY expand the volume to its maximum capacity. - // This field is OPTIONAL. - CapacityRange capacity_range = 3; -} - -message NodeExpandVolumeResponse { - // The capacity of the volume in bytes. This field is OPTIONAL. - int64 capacity_bytes = 1; -} diff --git a/vendor/github.com/container-storage-interface/spec/lib/README.md b/vendor/github.com/container-storage-interface/spec/lib/README.md deleted file mode 100644 index 1cc2aade44..0000000000 --- a/vendor/github.com/container-storage-interface/spec/lib/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# CSI Validation Libraries -This directory contains language bindings generated from the CSI [protobuf file](../csi.proto) used to validate the model and workflows of the CSI specification. diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/.gitignore b/vendor/github.com/container-storage-interface/spec/lib/go/.gitignore deleted file mode 100644 index 44dae3ea83..0000000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -/protoc -/protoc-gen-go -/csi.a -/.protoc diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/Makefile b/vendor/github.com/container-storage-interface/spec/lib/go/Makefile deleted file mode 100644 index 3b1c5eabac..0000000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/Makefile +++ /dev/null @@ -1,136 +0,0 @@ -all: build - -######################################################################## -## GOLANG ## -######################################################################## - -# If GOPATH isn't defined then set its default location. -ifeq (,$(strip $(GOPATH))) -GOPATH := $(HOME)/go -else -# If GOPATH is already set then update GOPATH to be its own -# first element. -GOPATH := $(word 1,$(subst :, ,$(GOPATH))) -endif -export GOPATH - - -######################################################################## -## PROTOC ## -######################################################################## - -# Only set PROTOC_VER if it has an empty value. -ifeq (,$(strip $(PROTOC_VER))) -PROTOC_VER := 3.5.1 -endif - -PROTOC_OS := $(shell uname -s) -ifeq (Darwin,$(PROTOC_OS)) -PROTOC_OS := osx -endif - -PROTOC_ARCH := $(shell uname -m) -ifeq (i386,$(PROTOC_ARCH)) -PROTOC_ARCH := x86_32 -endif - -PROTOC := ./protoc -PROTOC_ZIP := protoc-$(PROTOC_VER)-$(PROTOC_OS)-$(PROTOC_ARCH).zip -PROTOC_URL := https://github.com/google/protobuf/releases/download/v$(PROTOC_VER)/$(PROTOC_ZIP) -PROTOC_TMP_DIR := .protoc -PROTOC_TMP_BIN := $(PROTOC_TMP_DIR)/bin/protoc - -$(PROTOC): - -mkdir -p "$(PROTOC_TMP_DIR)" && \ - curl -L $(PROTOC_URL) -o "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" && \ - unzip "$(PROTOC_TMP_DIR)/$(PROTOC_ZIP)" -d "$(PROTOC_TMP_DIR)" && \ - chmod 0755 "$(PROTOC_TMP_BIN)" && \ - cp -f "$(PROTOC_TMP_BIN)" "$@" - stat "$@" > /dev/null 2>&1 - - -######################################################################## -## PROTOC-GEN-GO ## -######################################################################## - -# This is the recipe for getting and installing the go plug-in -# for protoc -PROTOC_GEN_GO_PKG := github.com/golang/protobuf/protoc-gen-go -PROTOC_GEN_GO := protoc-gen-go -$(PROTOC_GEN_GO): PROTOBUF_PKG := $(dir $(PROTOC_GEN_GO_PKG)) -$(PROTOC_GEN_GO): PROTOBUF_VERSION := v1.2.0 -$(PROTOC_GEN_GO): - mkdir -p $(dir $(GOPATH)/src/$(PROTOBUF_PKG)) - test -d $(GOPATH)/src/$(PROTOBUF_PKG)/.git || git clone https://$(PROTOBUF_PKG) $(GOPATH)/src/$(PROTOBUF_PKG) - (cd $(GOPATH)/src/$(PROTOBUF_PKG) && \ - (test "$$(git describe --tags | head -1)" = "$(PROTOBUF_VERSION)" || \ - (git fetch && git checkout tags/$(PROTOBUF_VERSION)))) - (cd $(GOPATH)/src/$(PROTOBUF_PKG) && go get -v -d $$(go list -f '{{ .ImportPath }}' ./...)) && \ - go build -o "$@" $(PROTOC_GEN_GO_PKG) - - -######################################################################## -## PATH ## -######################################################################## - -# Update PATH with the current directory. This enables the protoc -# binary to discover the protoc-gen-go binary, built inside this -# directory. -export PATH := $(shell pwd):$(PATH) - - -######################################################################## -## BUILD ## -######################################################################## -CSI_PROTO := ../../csi.proto -CSI_PKG_ROOT := github.com/container-storage-interface/spec -CSI_PKG_SUB := $(shell cat $(CSI_PROTO) | sed -n -e 's/^package.\([^;]*\).v[0-9]\+;$$/\1/p'|tr '.' '/') -CSI_BUILD := $(CSI_PKG_SUB)/.build -CSI_GO := $(CSI_PKG_SUB)/csi.pb.go -CSI_A := csi.a -CSI_GO_TMP := $(CSI_BUILD)/$(CSI_PKG_ROOT)/csi.pb.go - -# This recipe generates the go language bindings to a temp area. -$(CSI_GO_TMP): HERE := $(shell pwd) -$(CSI_GO_TMP): PTYPES_PKG := github.com/golang/protobuf/ptypes -$(CSI_GO_TMP): GO_OUT := plugins=grpc -$(CSI_GO_TMP): GO_OUT := $(GO_OUT),Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor -$(CSI_GO_TMP): GO_OUT := $(GO_OUT),Mgoogle/protobuf/wrappers.proto=$(PTYPES_PKG)/wrappers -$(CSI_GO_TMP): GO_OUT := $(GO_OUT):"$(HERE)/$(CSI_BUILD)" -$(CSI_GO_TMP): INCLUDE := -I$(GOPATH)/src -I$(HERE)/$(PROTOC_TMP_DIR)/include -$(CSI_GO_TMP): $(CSI_PROTO) | $(PROTOC) $(PROTOC_GEN_GO) - @mkdir -p "$(@D)" - (cd "$(GOPATH)/src" && \ - $(HERE)/$(PROTOC) $(INCLUDE) --go_out=$(GO_OUT) "$(CSI_PKG_ROOT)/$( /dev/null 2>&1 || cp -f "$?" "$@" -endif - -# This recipe builds the Go archive from the sources in three steps: -# -# 1. Go get any missing dependencies. -# 2. Cache the packages. -# 3. Build the archive file. -$(CSI_A): $(CSI_GO) - go get -v -d ./... - go install ./$(CSI_PKG_SUB) - go build -o "$@" ./$(CSI_PKG_SUB) - -build: $(CSI_A) - -clean: - go clean -i ./... - rm -rf "$(CSI_A)" "$(CSI_GO)" "$(CSI_BUILD)" - -clobber: clean - rm -fr "$(PROTOC)" "$(PROTOC_GEN_GO)" "$(CSI_PKG_SUB)" - -.PHONY: clean clobber diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/README.md b/vendor/github.com/container-storage-interface/spec/lib/go/README.md deleted file mode 100644 index 79c48ade52..0000000000 --- a/vendor/github.com/container-storage-interface/spec/lib/go/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# CSI Go Validation - -This package is used to validate the CSI specification with Go language bindings. - -## Build Reference - -To validate the Go language bindings against the current specification use the following command: - -```bash -$ make -``` - -The above command will download the `protoc` and `protoc-gen-go` binaries if they are not present and then proceed to build the CSI Go language bindings. - -### Environment Variables - -The following table lists the environment variables that can be used to influence the behavior of the Makefile: - -| Name | Default Value | Description | -|------|---------------|-------------| -| `PROTOC_VER` | `3.3.0` | The version of the protoc binary. | diff --git a/vendor/github.com/container-storage-interface/spec/logo.png b/vendor/github.com/container-storage-interface/spec/logo.png deleted file mode 100755 index a4256afab8f895e6b1a9fa6e1b9ae5aa4e9c90d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21136 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 (@jieyu) -* Saad Ali <> (@saad-ali) -* James DeFelice <> (@jdef) -* - -## Notational Conventions - -The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as described in [RFC 2119](http://tools.ietf.org/html/rfc2119) (Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997). - -The key words "unspecified", "undefined", and "implementation-defined" are to be interpreted as described in the [rationale for the C99 standard](http://www.open-std.org/jtc1/sc22/wg14/www/C99RationaleV5.10.pdf#page=18). - -An implementation is not compliant if it fails to satisfy one or more of the MUST, REQUIRED, or SHALL requirements for the protocols it implements. -An implementation is compliant if it satisfies all the MUST, REQUIRED, and SHALL requirements for the protocols it implements. - -## Terminology - -| Term | Definition | -|-------------------|--------------------------------------------------| -| Volume | A unit of storage that will be made available inside of a CO-managed container, via the CSI. | -| Block Volume | A volume that will appear as a block device inside the container. | -| Mounted Volume | A volume that will be mounted using the specified file system and appear as a directory inside the container. | -| CO | Container Orchestration system, communicates with Plugins using CSI service RPCs. | -| SP | Storage Provider, the vendor of a CSI plugin implementation. | -| RPC | [Remote Procedure Call](https://en.wikipedia.org/wiki/Remote_procedure_call). | -| Node | A host where the user workload will be running, uniquely identifiable from the perspective of a Plugin by a node ID. | -| Plugin | Aka “plugin implementation”, a gRPC endpoint that implements the CSI Services. | -| Plugin Supervisor | Process that governs the lifecycle of a Plugin, MAY be the CO. | -| Workload | The atomic unit of "work" scheduled by a CO. This MAY be a container or a collection of containers. | - -## Objective - -To define an industry standard “Container Storage Interface” (CSI) that will enable storage vendors (SP) to develop a plugin once and have it work across a number of container orchestration (CO) systems. - -### Goals in MVP - -The Container Storage Interface (CSI) will - -* Enable SP authors to write one CSI compliant Plugin that “just works” across all COs that implement CSI. -* Define API (RPCs) that enable: - * Dynamic provisioning and deprovisioning of a volume. - * Attaching or detaching a volume from a node. - * Mounting/unmounting a volume from a node. - * Consumption of both block and mountable volumes. - * Local storage providers (e.g., device mapper, lvm). - * Creating and deleting a snapshot (source of the snapshot is a volume). - * Provisioning a new volume from a snapshot (reverting snapshot, where data in the original volume is erased and replaced with data in the snapshot, is out of scope). -* Define plugin protocol RECOMMENDATIONS. - * Describe a process by which a Supervisor configures a Plugin. - * Container deployment considerations (`CAP_SYS_ADMIN`, mount namespace, etc.). - -### Non-Goals in MVP - -The Container Storage Interface (CSI) explicitly will not define, provide, or dictate: - -* Specific mechanisms by which a Plugin Supervisor manages the lifecycle of a Plugin, including: - * How to maintain state (e.g. what is attached, mounted, etc.). - * How to deploy, install, upgrade, uninstall, monitor, or respawn (in case of unexpected termination) Plugins. -* A first class message structure/field to represent "grades of storage" (aka "storage class"). -* Protocol-level authentication and authorization. -* Packaging of a Plugin. -* POSIX compliance: CSI provides no guarantee that volumes provided are POSIX compliant filesystems. - Compliance is determined by the Plugin implementation (and any backend storage system(s) upon which it depends). - CSI SHALL NOT obstruct a Plugin Supervisor or CO from interacting with Plugin-managed volumes in a POSIX-compliant manner. - -## Solution Overview - -This specification defines an interface along with the minimum operational and packaging recommendations for a storage provider (SP) to implement a CSI compatible plugin. -The interface declares the RPCs that a plugin MUST expose: this is the **primary focus** of the CSI specification. -Any operational and packaging recommendations offer additional guidance to promote cross-CO compatibility. - -### Architecture - -The primary focus of this specification is on the **protocol** between a CO and a Plugin. -It SHOULD be possible to ship cross-CO compatible Plugins for a variety of deployment architectures. -A CO SHOULD be equipped to handle both centralized and headless plugins, as well as split-component and unified plugins. -Several of these possibilities are illustrated in the following figures. - -``` - CO "Master" Host -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Controller | | -| | +-----------> Plugin | | -| +------------+ +------------+ | -| | -+-------------------------------------------+ - - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Node | | -| | +-----------> Plugin | | -| +------------+ +------------+ | -| | -+-------------------------------------------+ - -Figure 1: The Plugin runs on all nodes in the cluster: a centralized -Controller Plugin is available on the CO master host and the Node -Plugin is available on all of the CO Nodes. -``` - -``` - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Controller | | -| | +--+--------> Plugin | | -| +------------+ | +------------+ | -| | | -| | | -| | +------------+ | -| | | Node | | -| +--------> Plugin | | -| +------------+ | -| | -+-------------------------------------------+ - -Figure 2: Headless Plugin deployment, only the CO Node hosts run -Plugins. Separate, split-component Plugins supply the Controller -Service and the Node Service respectively. -``` - -``` - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Controller | | -| | +-----------> Node | | -| +------------+ | Plugin | | -| +------------+ | -| | -+-------------------------------------------+ - -Figure 3: Headless Plugin deployment, only the CO Node hosts run -Plugins. A unified Plugin component supplies both the Controller -Service and Node Service. -``` - -``` - CO "Node" Host(s) -+-------------------------------------------+ -| | -| +------------+ +------------+ | -| | CO | gRPC | Node | | -| | +-----------> Plugin | | -| +------------+ +------------+ | -| | -+-------------------------------------------+ - -Figure 4: Headless Plugin deployment, only the CO Node hosts run -Plugins. A Node-only Plugin component supplies only the Node Service. -Its GetPluginCapabilities RPC does not report the CONTROLLER_SERVICE -capability. -``` - -### Volume Lifecycle - -``` - CreateVolume +------------+ DeleteVolume - +------------->| CREATED +--------------+ - | +---+----+---+ | - | Controller | | Controller v -+++ Publish | | Unpublish +++ -|X| Volume | | Volume | | -+-+ +---v----+---+ +-+ - | NODE_READY | - +---+----^---+ - Node | | Node - Publish | | Unpublish - Volume | | Volume - +---v----+---+ - | PUBLISHED | - +------------+ - -Figure 5: The lifecycle of a dynamically provisioned volume, from -creation to destruction. -``` - -``` - CreateVolume +------------+ DeleteVolume - +------------->| CREATED +--------------+ - | +---+----+---+ | - | Controller | | Controller v -+++ Publish | | Unpublish +++ -|X| Volume | | Volume | | -+-+ +---v----+---+ +-+ - | NODE_READY | - +---+----^---+ - Node | | Node - Stage | | Unstage - Volume | | Volume - +---v----+---+ - | VOL_READY | - +------------+ - Node | | Node - Publish | | Unpublish - Volume | | Volume - +---v----+---+ - | PUBLISHED | - +------------+ - -Figure 6: The lifecycle of a dynamically provisioned volume, from -creation to destruction, when the Node Plugin advertises the -STAGE_UNSTAGE_VOLUME capability. -``` - -``` - Controller Controller - Publish Unpublish - Volume +------------+ Volume - +------------->+ NODE_READY +--------------+ - | +---+----^---+ | - | Node | | Node v -+++ Publish | | Unpublish +++ -|X| <-+ Volume | | Volume | | -+++ | +---v----+---+ +-+ - | | | PUBLISHED | - | | +------------+ - +----+ - Validate - Volume - Capabilities - -Figure 7: The lifecycle of a pre-provisioned volume that requires -controller to publish to a node (`ControllerPublishVolume`) prior to -publishing on the node (`NodePublishVolume`). -``` - -``` - +-+ +-+ - |X| | | - +++ +^+ - | | - Node | | Node -Publish | | Unpublish - Volume | | Volume - +---v----+---+ - | PUBLISHED | - +------------+ - -Figure 8: Plugins MAY forego other lifecycle steps by contraindicating -them via the capabilities API. Interactions with the volumes of such -plugins is reduced to `NodePublishVolume` and `NodeUnpublishVolume` -calls. -``` - -The above diagrams illustrate a general expectation with respect to how a CO MAY manage the lifecycle of a volume via the API presented in this specification. -Plugins SHOULD expose all RPCs for an interface: Controller plugins SHOULD implement all RPCs for the `Controller` service. -Unsupported RPCs SHOULD return an appropriate error code that indicates such (e.g. `CALL_NOT_IMPLEMENTED`). -The full list of plugin capabilities is documented in the `ControllerGetCapabilities` and `NodeGetCapabilities` RPCs. - -## Container Storage Interface - -This section describes the interface between COs and Plugins. - -### RPC Interface - -A CO interacts with an Plugin through RPCs. -Each SP MUST provide: - -* **Node Plugin**: A gRPC endpoint serving CSI RPCs that MUST be run on the Node whereupon an SP-provisioned volume will be published. -* **Controller Plugin**: A gRPC endpoint serving CSI RPCs that MAY be run anywhere. -* In some circumstances a single gRPC endpoint MAY serve all CSI RPCs (see Figure 3 in [Architecture](#architecture)). - -```protobuf -syntax = "proto3"; -package csi.v1; - -import "google/protobuf/descriptor.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/wrappers.proto"; - -option go_package = "csi"; - -extend google.protobuf.FieldOptions { - // Indicates that a field MAY contain information that is sensitive - // and MUST be treated as such (e.g. not logged). - bool csi_secret = 1059; -} -``` - -There are three sets of RPCs: - -* **Identity Service**: Both the Node Plugin and the Controller Plugin MUST implement this sets of RPCs. -* **Controller Service**: The Controller Plugin MUST implement this sets of RPCs. -* **Node Service**: The Node Plugin MUST implement this sets of RPCs. - -```protobuf -service Identity { - rpc GetPluginInfo(GetPluginInfoRequest) - returns (GetPluginInfoResponse) {} - - rpc GetPluginCapabilities(GetPluginCapabilitiesRequest) - returns (GetPluginCapabilitiesResponse) {} - - rpc Probe (ProbeRequest) - returns (ProbeResponse) {} -} - -service Controller { - rpc CreateVolume (CreateVolumeRequest) - returns (CreateVolumeResponse) {} - - rpc DeleteVolume (DeleteVolumeRequest) - returns (DeleteVolumeResponse) {} - - rpc ControllerPublishVolume (ControllerPublishVolumeRequest) - returns (ControllerPublishVolumeResponse) {} - - rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest) - returns (ControllerUnpublishVolumeResponse) {} - - rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest) - returns (ValidateVolumeCapabilitiesResponse) {} - - rpc ListVolumes (ListVolumesRequest) - returns (ListVolumesResponse) {} - - rpc GetCapacity (GetCapacityRequest) - returns (GetCapacityResponse) {} - - rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest) - returns (ControllerGetCapabilitiesResponse) {} - - rpc CreateSnapshot (CreateSnapshotRequest) - returns (CreateSnapshotResponse) {} - - rpc DeleteSnapshot (DeleteSnapshotRequest) - returns (DeleteSnapshotResponse) {} - - rpc ListSnapshots (ListSnapshotsRequest) - returns (ListSnapshotsResponse) {} - - rpc ControllerExpandVolume (ControllerExpandVolumeRequest) - returns (ControllerExpandVolumeResponse) {} -} - -service Node { - rpc NodeStageVolume (NodeStageVolumeRequest) - returns (NodeStageVolumeResponse) {} - - rpc NodeUnstageVolume (NodeUnstageVolumeRequest) - returns (NodeUnstageVolumeResponse) {} - - rpc NodePublishVolume (NodePublishVolumeRequest) - returns (NodePublishVolumeResponse) {} - - rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest) - returns (NodeUnpublishVolumeResponse) {} - - rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest) - returns (NodeGetVolumeStatsResponse) {} - - - rpc NodeExpandVolume(NodeExpandVolumeRequest) - returns (NodeExpandVolumeResponse) {} - - - rpc NodeGetCapabilities (NodeGetCapabilitiesRequest) - returns (NodeGetCapabilitiesResponse) {} - - rpc NodeGetInfo (NodeGetInfoRequest) - returns (NodeGetInfoResponse) {} -} -``` - -#### Concurrency - -In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call “in-flight” per volume at a given time. -However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. -The plugin SHOULD handle this as gracefully as possible. -The error code `ABORTED` MAY be returned by the plugin in this case (see the [Error Scheme](#error-scheme) section for details). - -#### Field Requirements - -The requirements documented herein apply equally and without exception, unless otherwise noted, for the fields of all protobuf message types defined by this specification. -Violation of these requirements MAY result in RPC message data that is not compatible with all CO, Plugin, and/or CSI middleware implementations. - -##### Size Limits - -CSI defines general size limits for fields of various types (see table below). -The general size limit for a particular field MAY be overridden by specifying a different size limit in said field's description. -Unless otherwise specified, fields SHALL NOT exceed the limits documented here. -These limits apply for messages generated by both COs and plugins. - -| Size | Field Type | -|------------|---------------------| -| 128 bytes | string | -| 4 KiB | map | - -##### `REQUIRED` vs. `OPTIONAL` - -* A field noted as `REQUIRED` MUST be specified, subject to any per-RPC caveats; caveats SHOULD be rare. -* A `repeated` or `map` field listed as `REQUIRED` MUST contain at least 1 element. -* A field noted as `OPTIONAL` MAY be specified and the specification SHALL clearly define expected behavior for the default, zero-value of such fields. - -Scalar fields, even REQUIRED ones, will be defaulted if not specified and any field set to the default value will not be serialized over the wire as per [proto3](https://developers.google.com/protocol-buffers/docs/proto3#default). - -#### Timeouts - -Any of the RPCs defined in this spec MAY timeout and MAY be retried. -The CO MAY choose the maximum time it is willing to wait for a call, how long it waits between retries, and how many time it retries (these values are not negotiated between plugin and CO). - -Idempotency requirements ensure that a retried call with the same fields continues where it left off when retried. -The only way to cancel a call is to issue a "negation" call if one exists. -For example, issue a `ControllerUnpublishVolume` call to cancel a pending `ControllerPublishVolume` operation, etc. -In some cases, a CO MAY NOT be able to cancel a pending operation because it depends on the result of the pending operation in order to execute the "negation" call. -For example, if a `CreateVolume` call never completes then a CO MAY NOT have the `volume_id` to call `DeleteVolume` with. - -### Error Scheme - -All CSI API calls defined in this spec MUST return a [standard gRPC status](https://github.com/grpc/grpc/blob/master/src/proto/grpc/status/status.proto). -Most gRPC libraries provide helper methods to set and read the status fields. - -The status `code` MUST contain a [canonical error code](https://github.com/grpc/grpc-go/blob/master/codes/codes.go). COs MUST handle all valid error codes. Each RPC defines a set of gRPC error codes that MUST be returned by the plugin when specified conditions are encountered. In addition to those, if the conditions defined below are encountered, the plugin MUST return the associated gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Missing required field | 3 INVALID_ARGUMENT | Indicates that a required field is missing from the request. More human-readable information MAY be provided in the `status.message` field. | Caller MUST fix the request by adding the missing required field before retrying. | -| Invalid or unsupported field in the request | 3 INVALID_ARGUMENT | Indicates that the one or more fields in this field is either not allowed by the Plugin or has an invalid value. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST fix the field before retrying. | -| Permission denied | 7 PERMISSION_DENIED | The Plugin is able to derive or otherwise infer an identity from the secrets present within an RPC, but that identity does not have permission to invoke the RPC. | System administrator SHOULD ensure that requisite permissions are granted, after which point the caller MAY retry the attempted RPC. | -| Operation pending for volume | 10 ABORTED | Indicates that there is already an operation pending for the specified volume. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per volume at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same volume. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified volume, and then retry with exponential back off. | -| Call not implemented | 12 UNIMPLEMENTED | The invoked RPC is not implemented by the Plugin or disabled in the Plugin's current mode of operation. | Caller MUST NOT retry. Caller MAY call `GetPluginCapabilities`, `ControllerGetCapabilities`, or `NodeGetCapabilities` to discover Plugin capabilities. | -| Not authenticated | 16 UNAUTHENTICATED | The invoked RPC does not carry secrets that are valid for authentication. | Caller SHALL either fix the secrets provided in the RPC, or otherwise regalvanize said secrets such that they will pass authentication by the Plugin for the attempted RPC, after which point the caller MAY retry the attempted RPC. | - -The status `message` MUST contain a human readable description of error, if the status `code` is not `OK`. -This string MAY be surfaced by CO to end users. - -The status `details` MUST be empty. In the future, this spec MAY require `details` to return a machine-parsable protobuf message if the status `code` is not `OK` to enable CO's to implement smarter error handling and fault resolution. - -### Secrets Requirements - -Secrets MAY be required by plugin to complete a RPC request. -A secret is a string to string map where the key identifies the name of the secret (e.g. "username" or "password"), and the value contains the secret data (e.g. "bob" or "abc123"). -Each key MUST consist of alphanumeric characters, '-', '_' or '.'. -Each value MUST contain a valid string. -An SP MAY choose to accept binary (non-string) data by using a binary-to-text encoding scheme, like base64. -An SP SHALL advertise the requirements for required secret keys and values in documentation. -CO SHALL permit passing through the required secrets. -A CO MAY pass the same secrets to all RPCs, therefore the keys for all unique secrets that an SP expects MUST be unique across all CSI operations. -This information is sensitive and MUST be treated as such (not logged, etc.) by the CO. - -### Identity Service RPC - -Identity service RPCs allow a CO to query a plugin for capabilities, health, and other metadata. -The general flow of the success case MAY be as follows (protos illustrated in YAML for brevity): - -1. CO queries metadata via Identity RPC. - -``` - # CO --(GetPluginInfo)--> Plugin - request: - response: - name: org.foo.whizbang.super-plugin - vendor_version: blue-green - manifest: - baz: qaz -``` - -2. CO queries available capabilities of the plugin. - -``` - # CO --(GetPluginCapabilities)--> Plugin - request: - response: - capabilities: - - service: - type: CONTROLLER_SERVICE -``` - -3. CO queries the readiness of the plugin. - -``` - # CO --(Probe)--> Plugin - request: - response: {} -``` - -#### `GetPluginInfo` - -```protobuf -message GetPluginInfoRequest { - // Intentionally empty. -} - -message GetPluginInfoResponse { - // The name MUST follow domain name notation format - // (https://tools.ietf.org/html/rfc1035#section-2.3.1). It SHOULD - // include the plugin's host company name and the plugin name, - // to minimize the possibility of collisions. It MUST be 63 - // characters or less, beginning and ending with an alphanumeric - // character ([a-z0-9A-Z]) with dashes (-), dots (.), and - // alphanumerics between. This field is REQUIRED. - string name = 1; - - // This field is REQUIRED. Value of this field is opaque to the CO. - string vendor_version = 2; - - // This field is OPTIONAL. Values are opaque to the CO. - map manifest = 3; -} -``` - -##### GetPluginInfo Errors - -If the plugin is unable to complete the GetPluginInfo call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `GetPluginCapabilities` - -This REQUIRED RPC allows the CO to query the supported capabilities of the Plugin "as a whole": it is the grand sum of all capabilities of all instances of the Plugin software, as it is intended to be deployed. -All instances of the same version (see `vendor_version` of `GetPluginInfoResponse`) of the Plugin SHALL return the same set of capabilities, regardless of both: (a) where instances are deployed on the cluster as well as; (b) which RPCs an instance is serving. - -```protobuf -message GetPluginCapabilitiesRequest { - // Intentionally empty. -} - -message GetPluginCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated PluginCapability capabilities = 1; -} - -// Specifies a capability of the plugin. -message PluginCapability { - message Service { - enum Type { - UNKNOWN = 0; - // CONTROLLER_SERVICE indicates that the Plugin provides RPCs for - // the ControllerService. Plugins SHOULD provide this capability. - // In rare cases certain plugins MAY wish to omit the - // ControllerService entirely from their implementation, but such - // SHOULD NOT be the common case. - // The presence of this capability determines whether the CO will - // attempt to invoke the REQUIRED ControllerService RPCs, as well - // as specific RPCs as indicated by ControllerGetCapabilities. - CONTROLLER_SERVICE = 1; - - // VOLUME_ACCESSIBILITY_CONSTRAINTS indicates that the volumes for - // this plugin MAY NOT be equally accessible by all nodes in the - // cluster. The CO MUST use the topology information returned by - // CreateVolumeRequest along with the topology information - // returned by NodeGetInfo to ensure that a given volume is - // accessible from a given node when scheduling workloads. - VOLUME_ACCESSIBILITY_CONSTRAINTS = 2; - } - Type type = 1; - } - - message VolumeExpansion { - enum Type { - UNKNOWN = 0; - - // ONLINE indicates that volumes may be expanded when published to - // a node. When a Plugin implements this capability it MUST - // implement either the EXPAND_VOLUME controller capability or the - // EXPAND_VOLUME node capability or both. When a plugin supports - // ONLINE volume expansion and also has the EXPAND_VOLUME - // controller capability then the plugin MUST support expansion of - // volumes currently published and available on a node. When a - // plugin supports ONLINE volume expansion and also has the - // EXPAND_VOLUME node capability then the plugin MAY support - // expansion of node-published volume via NodeExpandVolume. - // - // Example 1: Given a shared filesystem volume (e.g. GlusterFs), - // the Plugin may set the ONLINE volume expansion capability and - // implement ControllerExpandVolume but not NodeExpandVolume. - // - // Example 2: Given a block storage volume type (e.g. EBS), the - // Plugin may set the ONLINE volume expansion capability and - // implement both ControllerExpandVolume and NodeExpandVolume. - // - // Example 3: Given a Plugin that supports volume expansion only - // upon a node, the Plugin may set the ONLINE volume - // expansion capability and implement NodeExpandVolume but not - // ControllerExpandVolume. - ONLINE = 1; - - // OFFLINE indicates that volumes currently published and - // available on a node SHALL NOT be expanded via - // ControllerExpandVolume. When a plugin supports OFFLINE volume - // expansion it MUST implement either the EXPAND_VOLUME controller - // capability or both the EXPAND_VOLUME controller capability and - // the EXPAND_VOLUME node capability. - // - // Example 1: Given a block storage volume type (e.g. Azure Disk) - // that does not support expansion of "node-attached" (i.e. - // controller-published) volumes, the Plugin may indicate - // OFFLINE volume expansion support and implement both - // ControllerExpandVolume and NodeExpandVolume. - OFFLINE = 2; - } - Type type = 1; - } - - oneof type { - // Service that the plugin supports. - Service service = 1; - VolumeExpansion volume_expansion = 2; - } -} -``` - -##### GetPluginCapabilities Errors - -If the plugin is unable to complete the GetPluginCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `Probe` - -A Plugin MUST implement this RPC call. -The primary utility of the Probe RPC is to verify that the plugin is in a healthy and ready state. -If an unhealthy state is reported, via a non-success response, a CO MAY take action with the intent to bring the plugin to a healthy state. -Such actions MAY include, but SHALL NOT be limited to, the following: - -* Restarting the plugin container, or -* Notifying the plugin supervisor. - -The Plugin MAY verify that it has the right configurations, devices, dependencies and drivers in order to run and return a success if the validation succeeds. -The CO MAY invoke this RPC at any time. -A CO MAY invoke this call multiple times with the understanding that a plugin's implementation MAY NOT be trivial and there MAY be overhead incurred by such repeated calls. -The SP SHALL document guidance and known limitations regarding a particular Plugin's implementation of this RPC. -For example, the SP MAY document the maximum frequency at which its Probe implementation SHOULD be called. - -```protobuf -message ProbeRequest { - // Intentionally empty. -} - -message ProbeResponse { - // Readiness allows a plugin to report its initialization status back - // to the CO. Initialization for some plugins MAY be time consuming - // and it is important for a CO to distinguish between the following - // cases: - // - // 1) The plugin is in an unhealthy state and MAY need restarting. In - // this case a gRPC error code SHALL be returned. - // 2) The plugin is still initializing, but is otherwise perfectly - // healthy. In this case a successful response SHALL be returned - // with a readiness value of `false`. Calls to the plugin's - // Controller and/or Node services MAY fail due to an incomplete - // initialization state. - // 3) The plugin has finished initializing and is ready to service - // calls to its Controller and/or Node services. A successful - // response is returned with a readiness value of `true`. - // - // This field is OPTIONAL. If not present, the caller SHALL assume - // that the plugin is in a ready state and is accepting calls to its - // Controller and/or Node services (according to the plugin's reported - // capabilities). - .google.protobuf.BoolValue ready = 1; -} -``` - -##### Probe Errors - -If the plugin is unable to complete the Probe call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Plugin not healthy | 9 FAILED_PRECONDITION | Indicates that the plugin is not in a healthy/ready state. | Caller SHOULD assume the plugin is not healthy and that future RPCs MAY fail because of this condition. | -| Missing required dependency | 9 FAILED_PRECONDITION | Indicates that the plugin is missing one or more required dependency. | Caller MUST assume the plugin is not healthy. | - - -### Controller Service RPC - -#### `CreateVolume` - -A Controller Plugin MUST implement this RPC call if it has `CREATE_DELETE_VOLUME` controller capability. -This RPC will be called by the CO to provision a new volume on behalf of a user (to be consumed as either a block device or a mounted filesystem). - -This operation MUST be idempotent. -If a volume corresponding to the specified volume `name` already exists, is accessible from `accessibility_requirements`, and is compatible with the specified `capacity_range`, `volume_capabilities` and `parameters` in the `CreateVolumeRequest`, the Plugin MUST reply `0 OK` with the corresponding `CreateVolumeResponse`. - -Plugins MAY create 3 types of volumes: - -- Empty volumes. When plugin supports `CREATE_DELETE_VOLUME` OPTIONAL capability. -- From an existing snapshot. When plugin supports `CREATE_DELETE_VOLUME` and `CREATE_DELETE_SNAPSHOT` OPTIONAL capabilities. -- From an existing volume. When plugin supports cloning, and reports the OPTIONAL capabilities `CREATE_DELETE_VOLUME` and `CLONE_VOLUME`. - -```protobuf -message CreateVolumeRequest { - // The suggested name for the storage space. This field is REQUIRED. - // It serves two purposes: - // 1) Idempotency - This name is generated by the CO to achieve - // idempotency. The Plugin SHOULD ensure that multiple - // `CreateVolume` calls for the same name do not result in more - // than one piece of storage provisioned corresponding to that - // name. If a Plugin is unable to enforce idempotency, the CO's - // error recovery logic could result in multiple (unused) volumes - // being provisioned. - // In the case of error, the CO MUST handle the gRPC error codes - // per the recovery behavior defined in the "CreateVolume Errors" - // section below. - // The CO is responsible for cleaning up volumes it provisioned - // that it no longer needs. If the CO is uncertain whether a volume - // was provisioned or not when a `CreateVolume` call fails, the CO - // MAY call `CreateVolume` again, with the same name, to ensure the - // volume exists and to retrieve the volume's `volume_id` (unless - // otherwise prohibited by "CreateVolume Errors"). - // 2) Suggested name - Some storage systems allow callers to specify - // an identifier by which to refer to the newly provisioned - // storage. If a storage system supports this, it can optionally - // use this name as the identifier for the new volume. - // Any Unicode string that conforms to the length limit is allowed - // except those containing the following banned characters: - // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. - // (These are control characters other than commonly used whitespace.) - string name = 1; - - // This field is OPTIONAL. This allows the CO to specify the capacity - // requirement of the volume to be provisioned. If not specified, the - // Plugin MAY choose an implementation-defined capacity range. If - // specified it MUST always be honored, even when creating volumes - // from a source; which MAY force some backends to internally extend - // the volume after creating it. - CapacityRange capacity_range = 2; - - // The capabilities that the provisioned volume MUST have. SP MUST - // provision a volume that will satisfy ALL of the capabilities - // specified in this list. Otherwise SP MUST return the appropriate - // gRPC error code. - // The Plugin MUST assume that the CO MAY use the provisioned volume - // with ANY of the capabilities specified in this list. - // For example, a CO MAY specify two volume capabilities: one with - // access mode SINGLE_NODE_WRITER and another with access mode - // MULTI_NODE_READER_ONLY. In this case, the SP MUST verify that the - // provisioned volume can be used in either mode. - // This also enables the CO to do early validation: If ANY of the - // specified volume capabilities are not supported by the SP, the call - // MUST return the appropriate gRPC error code. - // This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 3; - - // Plugin specific parameters passed in as opaque key-value pairs. - // This field is OPTIONAL. The Plugin is responsible for parsing and - // validating these parameters. COs will treat these as opaque. - map parameters = 4; - - // Secrets required by plugin to complete volume creation request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 5 [(csi_secret) = true]; - - // If specified, the new volume will be pre-populated with data from - // this source. This field is OPTIONAL. - VolumeContentSource volume_content_source = 6; - - // Specifies where (regions, zones, racks, etc.) the provisioned - // volume MUST be accessible from. - // An SP SHALL advertise the requirements for topological - // accessibility information in documentation. COs SHALL only specify - // topological accessibility information supported by the SP. - // This field is OPTIONAL. - // This field SHALL NOT be specified unless the SP has the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. - // If this field is not specified and the SP has the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability, the SP MAY - // choose where the provisioned volume is accessible from. - TopologyRequirement accessibility_requirements = 7; -} - -// Specifies what source the volume will be created from. One of the -// type fields MUST be specified. -message VolumeContentSource { - message SnapshotSource { - // Contains identity information for the existing source snapshot. - // This field is REQUIRED. Plugin is REQUIRED to support creating - // volume from snapshot if it supports the capability - // CREATE_DELETE_SNAPSHOT. - string snapshot_id = 1; - } - - message VolumeSource { - // Contains identity information for the existing source volume. - // This field is REQUIRED. Plugins reporting CLONE_VOLUME - // capability MUST support creating a volume from another volume. - string volume_id = 1; - } - - oneof type { - SnapshotSource snapshot = 1; - VolumeSource volume = 2; - } -} - -message CreateVolumeResponse { - // Contains all attributes of the newly created volume that are - // relevant to the CO along with information required by the Plugin - // to uniquely identify the volume. This field is REQUIRED. - Volume volume = 1; -} - -// Specify a capability of a volume. -message VolumeCapability { - // Indicate that the volume will be accessed via the block device API. - message BlockVolume { - // Intentionally empty, for now. - } - - // Indicate that the volume will be accessed via the filesystem API. - message MountVolume { - // The filesystem type. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string fs_type = 1; - - // The mount options that can be used for the volume. This field is - // OPTIONAL. `mount_flags` MAY contain sensitive information. - // Therefore, the CO and the Plugin MUST NOT leak this information - // to untrusted entities. The total size of this repeated field - // SHALL NOT exceed 4 KiB. - repeated string mount_flags = 2; - } - - // Specify how a volume can be accessed. - message AccessMode { - enum Mode { - UNKNOWN = 0; - - // Can only be published once as read/write on a single node, at - // any given time. - SINGLE_NODE_WRITER = 1; - - // Can only be published once as readonly on a single node, at - // any given time. - SINGLE_NODE_READER_ONLY = 2; - - // Can be published as readonly at multiple nodes simultaneously. - MULTI_NODE_READER_ONLY = 3; - - // Can be published at multiple nodes simultaneously. Only one of - // the node can be used as read/write. The rest will be readonly. - MULTI_NODE_SINGLE_WRITER = 4; - - // Can be published as read/write at multiple nodes - // simultaneously. - MULTI_NODE_MULTI_WRITER = 5; - } - - // This field is REQUIRED. - Mode mode = 1; - } - - // Specifies what API the volume will be accessed using. One of the - // following fields MUST be specified. - oneof access_type { - BlockVolume block = 1; - MountVolume mount = 2; - } - - // This is a REQUIRED field. - AccessMode access_mode = 3; -} - -// The capacity of the storage space in bytes. To specify an exact size, -// `required_bytes` and `limit_bytes` SHALL be set to the same value. At -// least one of the these fields MUST be specified. -message CapacityRange { - // Volume MUST be at least this big. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 required_bytes = 1; - - // Volume MUST not be bigger than this. This field is OPTIONAL. - // A value of 0 is equal to an unspecified field value. - // The value of this field MUST NOT be negative. - int64 limit_bytes = 2; -} - -// Information about a specific volume. -message Volume { - // The capacity of the volume in bytes. This field is OPTIONAL. If not - // set (value of 0), it indicates that the capacity of the volume is - // unknown (e.g., NFS share). - // The value of this field MUST NOT be negative. - int64 capacity_bytes = 1; - - // The identifier for this volume, generated by the plugin. - // This field is REQUIRED. - // This field MUST contain enough information to uniquely identify - // this specific volume vs all other volumes supported by this plugin. - // This field SHALL be used by the CO in subsequent calls to refer to - // this volume. - // The SP is NOT responsible for global uniqueness of volume_id across - // multiple SPs. - string volume_id = 2; - - // Opaque static properties of the volume. SP MAY use this field to - // ensure subsequent volume validation and publishing calls have - // contextual information. - // The contents of this field SHALL be opaque to a CO. - // The contents of this field SHALL NOT be mutable. - // The contents of this field SHALL be safe for the CO to cache. - // The contents of this field SHOULD NOT contain sensitive - // information. - // The contents of this field SHOULD NOT be used for uniquely - // identifying a volume. The `volume_id` alone SHOULD be sufficient to - // identify the volume. - // A volume uniquely identified by `volume_id` SHALL always report the - // same volume_context. - // This field is OPTIONAL and when present MUST be passed to volume - // validation and publishing calls. - map volume_context = 3; - - // If specified, indicates that the volume is not empty and is - // pre-populated with data from the specified source. - // This field is OPTIONAL. - VolumeContentSource content_source = 4; - - // Specifies where (regions, zones, racks, etc.) the provisioned - // volume is accessible from. - // A plugin that returns this field MUST also set the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. - // An SP MAY specify multiple topologies to indicate the volume is - // accessible from multiple locations. - // COs MAY use this information along with the topology information - // returned by NodeGetInfo to ensure that a given volume is accessible - // from a given node when scheduling workloads. - // This field is OPTIONAL. If it is not specified, the CO MAY assume - // the volume is equally accessible from all nodes in the cluster and - // MAY schedule workloads referencing the volume on any available - // node. - // - // Example 1: - // accessible_topology = {"region": "R1", "zone": "Z2"} - // Indicates a volume accessible only from the "region" "R1" and the - // "zone" "Z2". - // - // Example 2: - // accessible_topology = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"} - // Indicates a volume accessible from both "zone" "Z2" and "zone" "Z3" - // in the "region" "R1". - repeated Topology accessible_topology = 5; -} - -message TopologyRequirement { - // Specifies the list of topologies the provisioned volume MUST be - // accessible from. - // This field is OPTIONAL. If TopologyRequirement is specified either - // requisite or preferred or both MUST be specified. - // - // If requisite is specified, the provisioned volume MUST be - // accessible from at least one of the requisite topologies. - // - // Given - // x = number of topologies provisioned volume is accessible from - // n = number of requisite topologies - // The CO MUST ensure n >= 1. The SP MUST ensure x >= 1 - // If x==n, then the SP MUST make the provisioned volume available to - // all topologies from the list of requisite topologies. If it is - // unable to do so, the SP MUST fail the CreateVolume call. - // For example, if a volume should be accessible from a single zone, - // and requisite = - // {"region": "R1", "zone": "Z2"} - // then the provisioned volume MUST be accessible from the "region" - // "R1" and the "zone" "Z2". - // Similarly, if a volume should be accessible from two zones, and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"} - // then the provisioned volume MUST be accessible from the "region" - // "R1" and both "zone" "Z2" and "zone" "Z3". - // - // If xn, then the SP MUST make the provisioned volume available from - // all topologies from the list of requisite topologies and MAY choose - // the remaining x-n unique topologies from the list of all possible - // topologies. If it is unable to do so, the SP MUST fail the - // CreateVolume call. - // For example, if a volume should be accessible from two zones, and - // requisite = - // {"region": "R1", "zone": "Z2"} - // then the provisioned volume MUST be accessible from the "region" - // "R1" and the "zone" "Z2" and the SP may select the second zone - // independently, e.g. "R1/Z4". - repeated Topology requisite = 1; - - // Specifies the list of topologies the CO would prefer the volume to - // be provisioned in. - // - // This field is OPTIONAL. If TopologyRequirement is specified either - // requisite or preferred or both MUST be specified. - // - // An SP MUST attempt to make the provisioned volume available using - // the preferred topologies in order from first to last. - // - // If requisite is specified, all topologies in preferred list MUST - // also be present in the list of requisite topologies. - // - // If the SP is unable to to make the provisioned volume available - // from any of the preferred topologies, the SP MAY choose a topology - // from the list of requisite topologies. - // If the list of requisite topologies is not specified, then the SP - // MAY choose from the list of all possible topologies. - // If the list of requisite topologies is specified and the SP is - // unable to to make the provisioned volume available from any of the - // requisite topologies it MUST fail the CreateVolume call. - // - // Example 1: - // Given a volume should be accessible from a single zone, and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"} - // preferred = - // {"region": "R1", "zone": "Z3"} - // then the the SP SHOULD first attempt to make the provisioned volume - // available from "zone" "Z3" in the "region" "R1" and fall back to - // "zone" "Z2" in the "region" "R1" if that is not possible. - // - // Example 2: - // Given a volume should be accessible from a single zone, and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"}, - // {"region": "R1", "zone": "Z4"}, - // {"region": "R1", "zone": "Z5"} - // preferred = - // {"region": "R1", "zone": "Z4"}, - // {"region": "R1", "zone": "Z2"} - // then the the SP SHOULD first attempt to make the provisioned volume - // accessible from "zone" "Z4" in the "region" "R1" and fall back to - // "zone" "Z2" in the "region" "R1" if that is not possible. If that - // is not possible, the SP may choose between either the "zone" - // "Z3" or "Z5" in the "region" "R1". - // - // Example 3: - // Given a volume should be accessible from TWO zones (because an - // opaque parameter in CreateVolumeRequest, for example, specifies - // the volume is accessible from two zones, aka synchronously - // replicated), and - // requisite = - // {"region": "R1", "zone": "Z2"}, - // {"region": "R1", "zone": "Z3"}, - // {"region": "R1", "zone": "Z4"}, - // {"region": "R1", "zone": "Z5"} - // preferred = - // {"region": "R1", "zone": "Z5"}, - // {"region": "R1", "zone": "Z3"} - // then the the SP SHOULD first attempt to make the provisioned volume - // accessible from the combination of the two "zones" "Z5" and "Z3" in - // the "region" "R1". If that's not possible, it should fall back to - // a combination of "Z5" and other possibilities from the list of - // requisite. If that's not possible, it should fall back to a - // combination of "Z3" and other possibilities from the list of - // requisite. If that's not possible, it should fall back to a - // combination of other possibilities from the list of requisite. - repeated Topology preferred = 2; -} - -// Topology is a map of topological domains to topological segments. -// A topological domain is a sub-division of a cluster, like "region", -// "zone", "rack", etc. -// A topological segment is a specific instance of a topological domain, -// like "zone3", "rack3", etc. -// For example {"com.company/zone": "Z1", "com.company/rack": "R3"} -// Valid keys have two segments: an OPTIONAL prefix and name, separated -// by a slash (/), for example: "com.company.example/zone". -// The key name segment is REQUIRED. The prefix is OPTIONAL. -// The key name MUST be 63 characters or less, begin and end with an -// alphanumeric character ([a-z0-9A-Z]), and contain only dashes (-), -// underscores (_), dots (.), or alphanumerics in between, for example -// "zone". -// The key prefix MUST be 63 characters or less, begin and end with a -// lower-case alphanumeric character ([a-z0-9]), contain only -// dashes (-), dots (.), or lower-case alphanumerics in between, and -// follow domain name notation format -// (https://tools.ietf.org/html/rfc1035#section-2.3.1). -// The key prefix SHOULD include the plugin's host company name and/or -// the plugin name, to minimize the possibility of collisions with keys -// from other plugins. -// If a key prefix is specified, it MUST be identical across all -// topology keys returned by the SP (across all RPCs). -// Keys MUST be case-insensitive. Meaning the keys "Zone" and "zone" -// MUST not both exist. -// Each value (topological segment) MUST contain 1 or more strings. -// Each string MUST be 63 characters or less and begin and end with an -// alphanumeric character with '-', '_', '.', or alphanumerics in -// between. -message Topology { - map segments = 1; -} -``` - -##### CreateVolume Errors - -If the plugin is unable to complete the CreateVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Source incompatible or not supported | 3 INVALID_ARGUMENT | Besides the general cases, this code MUST also be used to indicate when plugin supporting CREATE_DELETE_VOLUME cannot create a volume from the requested source (`SnapshotSource` or `VolumeSource`). Failure MAY be caused by not supporting the source (CO SHOULD NOT have provided that source) or incompatibility between `parameters` from the source and the ones requested for the new volume. More human-readable information SHOULD be provided in the gRPC `status.message` field if the problem is the source. | On source related issues, caller MUST use different parameters, a different source, or no source at all. | -| Source does not exist | 5 NOT_FOUND | Indicates that the specified source does not exist. | Caller MUST verify that the `volume_content_source` is correct, the source is accessible, and has not been deleted before retrying with exponential back off. | -| Volume already exists but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified volume `name` already exists but is incompatible with the specified `capacity_range`, `volume_capabilities` or `parameters`. | Caller MUST fix the arguments or use a different `name` before retrying. | -| Unable to provision in `accessible_topology` | 8 RESOURCE_EXHAUSTED | Indicates that although the `accessible_topology` field is valid, a new volume can not be provisioned with the specified topology constraints. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST ensure that whatever is preventing volumes from being provisioned in the specified location (e.g. quota issues) is addressed before retrying with exponential backoff. | -| Unsupported `capacity_range` | 11 OUT_OF_RANGE | Indicates that the capacity range is not allowed by the Plugin, for example when trying to create a volume smaller than the source snapshot. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST fix the capacity range before retrying. | - - -#### `DeleteVolume` - -A Controller Plugin MUST implement this RPC call if it has `CREATE_DELETE_VOLUME` capability. -This RPC will be called by the CO to deprovision a volume. - -This operation MUST be idempotent. -If a volume corresponding to the specified `volume_id` does not exist or the artifacts associated with the volume do not exist anymore, the Plugin MUST reply `0 OK`. - -```protobuf -message DeleteVolumeRequest { - // The ID of the volume to be deprovisioned. - // This field is REQUIRED. - string volume_id = 1; - - // Secrets required by plugin to complete volume deletion request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 2 [(csi_secret) = true]; -} - -message DeleteVolumeResponse { - // Intentionally empty. -} -``` - -##### DeleteVolume Errors - -If the plugin is unable to complete the DeleteVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume in use | 9 FAILED_PRECONDITION | Indicates that the volume corresponding to the specified `volume_id` could not be deleted because it is in use by another resource. | Caller SHOULD ensure that there are no other resources using the volume, and then retry with exponential back off. | - - -#### `ControllerPublishVolume` - -A Controller Plugin MUST implement this RPC call if it has `PUBLISH_UNPUBLISH_VOLUME` controller capability. -This RPC will be called by the CO when it wants to place a workload that uses the volume onto a node. -The Plugin SHOULD perform the work that is necessary for making the volume available on the given node. -The Plugin MUST NOT assume that this RPC will be executed on the node where the volume will be used. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` has already been published at the node corresponding to the `node_id`, and is compatible with the specified `volume_capability` and `readonly` flag, the Plugin MUST reply `0 OK`. - -If the operation failed or the CO does not know if the operation has failed or not, it MAY choose to call `ControllerPublishVolume` again or choose to call `ControllerUnpublishVolume`. - -The CO MAY call this RPC for publishing a volume to multiple nodes if the volume has `MULTI_NODE` capability (i.e., `MULTI_NODE_READER_ONLY`, `MULTI_NODE_SINGLE_WRITER` or `MULTI_NODE_MULTI_WRITER`). - -```protobuf -message ControllerPublishVolumeRequest { - // The ID of the volume to be used on a node. - // This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is REQUIRED. The CO SHALL set this - // field to match the node ID returned by `NodeGetInfo`. - string node_id = 2; - - // Volume capability describing how the CO intends to use this volume. - // SP MUST ensure the CO can use the published volume as described. - // Otherwise SP MUST return the appropriate gRPC error code. - // This is a REQUIRED field. - VolumeCapability volume_capability = 3; - - // Indicates SP MUST publish the volume in readonly mode. - // CO MUST set this field to false if SP does not have the - // PUBLISH_READONLY controller capability. - // This is a REQUIRED field. - bool readonly = 4; - - // Secrets required by plugin to complete controller publish volume - // request. This field is OPTIONAL. Refer to the - // `Secrets Requirements` section on how to use this field. - map secrets = 5 [(csi_secret) = true]; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 6; -} - -message ControllerPublishVolumeResponse { - // Opaque static publish properties of the volume. SP MAY use this - // field to ensure subsequent `NodeStageVolume` or `NodePublishVolume` - // calls calls have contextual information. - // The contents of this field SHALL be opaque to a CO. - // The contents of this field SHALL NOT be mutable. - // The contents of this field SHALL be safe for the CO to cache. - // The contents of this field SHOULD NOT contain sensitive - // information. - // The contents of this field SHOULD NOT be used for uniquely - // identifying a volume. The `volume_id` alone SHOULD be sufficient to - // identify the volume. - // This field is OPTIONAL and when present MUST be passed to - // subsequent `NodeStageVolume` or `NodePublishVolume` calls - map publish_context = 1; -} -``` - -##### ControllerPublishVolume Errors - -If the plugin is unable to complete the ControllerPublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Node does not exist | 5 NOT_FOUND | Indicates that a node corresponding to the specified `node_id` does not exist. | Caller MUST verify that the `node_id` is correct and that the node is available and has not been terminated or deleted before retrying with exponential backoff. | -| Volume published but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified `volume_id` has already been published at the node corresponding to the specified `node_id` but is incompatible with the specified `volume_capability` or `readonly` flag . | Caller MUST fix the arguments before retrying. | -| Volume published to another node | 9 FAILED_PRECONDITION | Indicates that a volume corresponding to the specified `volume_id` has already been published at another node and does not have MULTI_NODE volume capability. If this error code is returned, the Plugin SHOULD specify the `node_id` of the node at which the volume is published as part of the gRPC `status.message`. | Caller SHOULD ensure the specified volume is not published at any other node before retrying with exponential back off. | -| Max volumes attached | 8 RESOURCE_EXHAUSTED | Indicates that the maximum supported number of volumes that can be attached to the specified node are already attached. Therefore, this operation will fail until at least one of the existing attached volumes is detached from the node. | Caller MUST ensure that the number of volumes already attached to the node is less then the maximum supported number of volumes before retrying with exponential backoff. | - -#### `ControllerUnpublishVolume` - -Controller Plugin MUST implement this RPC call if it has `PUBLISH_UNPUBLISH_VOLUME` controller capability. -This RPC is a reverse operation of `ControllerPublishVolume`. -It MUST be called after all `NodeUnstageVolume` and `NodeUnpublishVolume` on the volume are called and succeed. -The Plugin SHOULD perform the work that is necessary for making the volume ready to be consumed by a different node. -The Plugin MUST NOT assume that this RPC will be executed on the node where the volume was previously used. - -This RPC is typically called by the CO when the workload using the volume is being moved to a different node, or all the workload using the volume on a node has finished. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` is not attached to the node corresponding to the `node_id`, the Plugin MUST reply `0 OK`. -If this operation failed, or the CO does not know if the operation failed or not, it can choose to call `ControllerUnpublishVolume` again. - -```protobuf -message ControllerUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The ID of the node. This field is OPTIONAL. The CO SHOULD set this - // field to match the node ID returned by `NodeGetInfo` or leave it - // unset. If the value is set, the SP MUST unpublish the volume from - // the specified node. If the value is unset, the SP MUST unpublish - // the volume from all nodes it is published to. - string node_id = 2; - - // Secrets required by plugin to complete controller unpublish volume - // request. This SHOULD be the same secrets passed to the - // ControllerPublishVolume call for the specified volume. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 3 [(csi_secret) = true]; -} - -message ControllerUnpublishVolumeResponse { - // Intentionally empty. -} -``` - -##### ControllerUnpublishVolume Errors - -If the plugin is unable to complete the ControllerUnpublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Node does not exist | 5 NOT_FOUND | Indicates that a node corresponding to the specified `node_id` does not exist. | Caller MUST verify that the `node_id` is correct and that the node is available and has not been terminated or deleted before retrying with exponential backoff. | - - -#### `ValidateVolumeCapabilities` - -A Controller Plugin MUST implement this RPC call. -This RPC will be called by the CO to check if a pre-provisioned volume has all the capabilities that the CO wants. -This RPC call SHALL return `confirmed` only if all the volume capabilities specified in the request are supported (see caveat below). -This operation MUST be idempotent. - -NOTE: Older plugins will parse but likely not "process" newer fields that MAY be present in capability-validation messages (and sub-messages) sent by a CO that is communicating using a newer, backwards-compatible version of the CSI protobufs. -Therefore, the CO SHALL reconcile successful capability-validation responses by comparing the validated capabilities with those that it had originally requested. - -```protobuf -message ValidateVolumeCapabilitiesRequest { - // The ID of the volume to check. This field is REQUIRED. - string volume_id = 1; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 2; - - // The capabilities that the CO wants to check for the volume. This - // call SHALL return "confirmed" only if all the volume capabilities - // specified below are supported. This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 3; - - // See CreateVolumeRequest.parameters. - // This field is OPTIONAL. - map parameters = 4; - - // Secrets required by plugin to complete volume validation request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 5 [(csi_secret) = true]; -} - -message ValidateVolumeCapabilitiesResponse { - message Confirmed { - // Volume context validated by the plugin. - // This field is OPTIONAL. - map volume_context = 1; - - // Volume capabilities supported by the plugin. - // This field is REQUIRED. - repeated VolumeCapability volume_capabilities = 2; - - // The volume creation parameters validated by the plugin. - // This field is OPTIONAL. - map parameters = 3; - } - - // Confirmed indicates to the CO the set of capabilities that the - // plugin has validated. This field SHALL only be set to a non-empty - // value for successful validation responses. - // For successful validation responses, the CO SHALL compare the - // fields of this message to the originally requested capabilities in - // order to guard against an older plugin reporting "valid" for newer - // capability fields that it does not yet understand. - // This field is OPTIONAL. - Confirmed confirmed = 1; - - // Message to the CO if `confirmed` above is empty. This field is - // OPTIONAL. - // An empty string is equal to an unspecified field value. - string message = 2; -} -``` - -##### ValidateVolumeCapabilities Errors - -If the plugin is unable to complete the ValidateVolumeCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | - - -#### `ListVolumes` - -A Controller Plugin MUST implement this RPC call if it has `LIST_VOLUMES` capability. -The Plugin SHALL return the information about all the volumes that it knows about. -If volumes are created and/or deleted while the CO is concurrently paging through `ListVolumes` results then it is possible that the CO MAY either witness duplicate volumes in the list, not witness existing volumes, or both. -The CO SHALL NOT expect a consistent "view" of all volumes when paging through the volume list via multiple calls to `ListVolumes`. - -```protobuf -message ListVolumesRequest { - // If specified (non-zero value), the Plugin MUST NOT return more - // entries than this number in the response. If the actual number of - // entries is more than this number, the Plugin MUST set `next_token` - // in the response which can be used to get the next page of entries - // in the subsequent `ListVolumes` call. This field is OPTIONAL. If - // not specified (zero value), it means there is no restriction on the - // number of entries that can be returned. - // The value of this field MUST NOT be negative. - int32 max_entries = 1; - - // A token to specify where to start paginating. Set this field to - // `next_token` returned by a previous `ListVolumes` call to get the - // next page of entries. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string starting_token = 2; -} - -message ListVolumesResponse { - message Entry { - Volume volume = 1; - } - - repeated Entry entries = 1; - - // This token allows you to get the next page of entries for - // `ListVolumes` request. If the number of entries is larger than - // `max_entries`, use the `next_token` as a value for the - // `starting_token` field in the next `ListVolumes` request. This - // field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string next_token = 2; -} -``` - -##### ListVolumes Errors - -If the plugin is unable to complete the ListVolumes call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Invalid `starting_token` | 10 ABORTED | Indicates that `starting_token` is not valid. | Caller SHOULD start the `ListVolumes` operation again with an empty `starting_token`. | - - -#### `GetCapacity` - -A Controller Plugin MUST implement this RPC call if it has `GET_CAPACITY` controller capability. -The RPC allows the CO to query the capacity of the storage pool from which the controller provisions volumes. - -```protobuf -message GetCapacityRequest { - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that satisfy ALL of the - // specified `volume_capabilities`. These are the same - // `volume_capabilities` the CO will use in `CreateVolumeRequest`. - // This field is OPTIONAL. - repeated VolumeCapability volume_capabilities = 1; - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes with the given Plugin - // specific `parameters`. These are the same `parameters` the CO will - // use in `CreateVolumeRequest`. This field is OPTIONAL. - map parameters = 2; - - // If specified, the Plugin SHALL report the capacity of the storage - // that can be used to provision volumes that in the specified - // `accessible_topology`. This is the same as the - // `accessible_topology` the CO returns in a `CreateVolumeResponse`. - // This field is OPTIONAL. This field SHALL NOT be set unless the - // plugin advertises the VOLUME_ACCESSIBILITY_CONSTRAINTS capability. - Topology accessible_topology = 3; -} - -message GetCapacityResponse { - // The available capacity, in bytes, of the storage that can be used - // to provision volumes. If `volume_capabilities` or `parameters` is - // specified in the request, the Plugin SHALL take those into - // consideration when calculating the available capacity of the - // storage. This field is REQUIRED. - // The value of this field MUST NOT be negative. - int64 available_capacity = 1; -} -``` - -##### GetCapacity Errors - -If the plugin is unable to complete the GetCapacity call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `ControllerGetCapabilities` - -A Controller Plugin MUST implement this RPC call. This RPC allows the CO to check the supported capabilities of controller service provided by the Plugin. - -```protobuf -message ControllerGetCapabilitiesRequest { - // Intentionally empty. -} - -message ControllerGetCapabilitiesResponse { - // All the capabilities that the controller service supports. This - // field is OPTIONAL. - repeated ControllerServiceCapability capabilities = 1; -} - -// Specifies a capability of the controller service. -message ControllerServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - CREATE_DELETE_VOLUME = 1; - PUBLISH_UNPUBLISH_VOLUME = 2; - LIST_VOLUMES = 3; - GET_CAPACITY = 4; - // Currently the only way to consume a snapshot is to create - // a volume from it. Therefore plugins supporting - // CREATE_DELETE_SNAPSHOT MUST support creating volume from - // snapshot. - CREATE_DELETE_SNAPSHOT = 5; - LIST_SNAPSHOTS = 6; - - // Plugins supporting volume cloning at the storage level MAY - // report this capability. The source volume MUST be managed by - // the same plugin. Not all volume sources and parameters - // combinations MAY work. - CLONE_VOLUME = 7; - - // Indicates the SP supports ControllerPublishVolume.readonly - // field. - PUBLISH_READONLY = 8; - - // See VolumeExpansion for details. - EXPAND_VOLUME = 9; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -``` - -##### ControllerGetCapabilities Errors - -If the plugin is unable to complete the ControllerGetCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `CreateSnapshot` - -A Controller Plugin MUST implement this RPC call if it has `CREATE_DELETE_SNAPSHOT` controller capability. -This RPC will be called by the CO to create a new snapshot from a source volume on behalf of a user. - -This operation MUST be idempotent. -If a snapshot corresponding to the specified snapshot `name` is successfully cut and ready to use (meaning it MAY be specified as a `volume_content_source` in a `CreateVolumeRequest`), the Plugin MUST reply `0 OK` with the corresponding `CreateSnapshotResponse`. - -If an error occurs before a snapshot is cut, `CreateSnapshot` SHOULD return a corresponding gRPC error code that reflects the error condition. - -For plugins that supports snapshot post processing such as uploading, `CreateSnapshot` SHOULD return `0 OK` and `ready_to_use` SHOULD be set to `false` after the snapshot is cut but still being processed. -CO SHOULD then reissue the same `CreateSnapshotRequest` periodically until boolean `ready_to_use` flips to `true` indicating the snapshot has been "processed" and is ready to use to create new volumes. -If an error occurs during the process, `CreateSnapshot` SHOULD return a corresponding gRPC error code that reflects the error condition. - -A snapshot MAY be used as the source to provision a new volume. -A CreateVolumeRequest message MAY specify an OPTIONAL source snapshot parameter. -Reverting a snapshot, where data in the original volume is erased and replaced with data in the snapshot, is an advanced functionality not every storage system can support and therefore is currently out of scope. - -##### The ready_to_use Parameter - -Some SPs MAY "process" the snapshot after the snapshot is cut, for example, maybe uploading the snapshot somewhere after the snapshot is cut. -The post-cut process MAY be a long process that could take hours. -The CO MAY freeze the application using the source volume before taking the snapshot. -The purpose of `freeze` is to ensure the application data is in consistent state. -When `freeze` is performed, the container is paused and the application is also paused. -When `thaw` is performed, the container and the application start running again. -During the snapshot processing phase, since the snapshot is already cut, a `thaw` operation can be performed so application can start running without waiting for the process to complete. -The `ready_to_use` parameter of the snapshot will become `true` after the process is complete. - -For SPs that do not do additional processing after cut, the `ready_to_use` parameter SHOULD be `true` after the snapshot is cut. -`thaw` can be done when the `ready_to_use` parameter is `true` in this case. - -The `ready_to_use` parameter provides guidance to the CO on when it can "thaw" the application in the process of snapshotting. -If the cloud provider or storage system needs to process the snapshot after the snapshot is cut, the `ready_to_use` parameter returned by CreateSnapshot SHALL be `false`. -CO MAY continue to call CreateSnapshot while waiting for the process to complete until `ready_to_use` becomes `true`. -Note that CreateSnapshot no longer blocks after the snapshot is cut. - -A gRPC error code SHALL be returned if an error occurs during any stage of the snapshotting process. -A CO SHOULD explicitly delete snapshots when an error occurs. - -Based on this information, CO can issue repeated (idemponent) calls to CreateSnapshot, monitor the response, and make decisions. -Note that CreateSnapshot is a synchronous call and it MUST block until the snapshot is cut. - -```protobuf -message CreateSnapshotRequest { - // The ID of the source volume to be snapshotted. - // This field is REQUIRED. - string source_volume_id = 1; - - // The suggested name for the snapshot. This field is REQUIRED for - // idempotency. - // Any Unicode string that conforms to the length limit is allowed - // except those containing the following banned characters: - // U+0000-U+0008, U+000B, U+000C, U+000E-U+001F, U+007F-U+009F. - // (These are control characters other than commonly used whitespace.) - string name = 2; - - // Secrets required by plugin to complete snapshot creation request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 3 [(csi_secret) = true]; - - // Plugin specific parameters passed in as opaque key-value pairs. - // This field is OPTIONAL. The Plugin is responsible for parsing and - // validating these parameters. COs will treat these as opaque. - // Use cases for opaque parameters: - // - Specify a policy to automatically clean up the snapshot. - // - Specify an expiration date for the snapshot. - // - Specify whether the snapshot is readonly or read/write. - // - Specify if the snapshot should be replicated to some place. - // - Specify primary or secondary for replication systems that - // support snapshotting only on primary. - map parameters = 4; -} - -message CreateSnapshotResponse { - // Contains all attributes of the newly created snapshot that are - // relevant to the CO along with information required by the Plugin - // to uniquely identify the snapshot. This field is REQUIRED. - Snapshot snapshot = 1; -} - -// Information about a specific snapshot. -message Snapshot { - // This is the complete size of the snapshot in bytes. The purpose of - // this field is to give CO guidance on how much space is needed to - // create a volume from this snapshot. The size of the volume MUST NOT - // be less than the size of the source snapshot. This field is - // OPTIONAL. If this field is not set, it indicates that this size is - // unknown. The value of this field MUST NOT be negative and a size of - // zero means it is unspecified. - int64 size_bytes = 1; - - // The identifier for this snapshot, generated by the plugin. - // This field is REQUIRED. - // This field MUST contain enough information to uniquely identify - // this specific snapshot vs all other snapshots supported by this - // plugin. - // This field SHALL be used by the CO in subsequent calls to refer to - // this snapshot. - // The SP is NOT responsible for global uniqueness of snapshot_id - // across multiple SPs. - string snapshot_id = 2; - - // Identity information for the source volume. Note that creating a - // snapshot from a snapshot is not supported here so the source has to - // be a volume. This field is REQUIRED. - string source_volume_id = 3; - - // Timestamp when the point-in-time snapshot is taken on the storage - // system. This field is REQUIRED. - .google.protobuf.Timestamp creation_time = 4; - - // Indicates if a snapshot is ready to use as a - // `volume_content_source` in a `CreateVolumeRequest`. The default - // value is false. This field is REQUIRED. - bool ready_to_use = 5; -} -``` - -##### CreateSnapshot Errors - -If the plugin is unable to complete the CreateSnapshot call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Snapshot already exists but is incompatible | 6 ALREADY_EXISTS | Indicates that a snapshot corresponding to the specified snapshot `name` already exists but is incompatible with the specified `volume_id`. | Caller MUST fix the arguments or use a different `name` before retrying. | -| Operation pending for snapshot | 10 ABORTED | Indicates that there is already an operation pending for the specified snapshot. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per snapshot at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same snapshot. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified snapshot, and then retry with exponential back off. | -| Not enough space to create snapshot | 13 RESOURCE_EXHAUSTED | There is not enough space on the storage system to handle the create snapshot request. | Caller SHOULD fail this request. Future calls to CreateSnapshot MAY succeed if space is freed up. | - - -#### `DeleteSnapshot` - -A Controller Plugin MUST implement this RPC call if it has `CREATE_DELETE_SNAPSHOT` capability. -This RPC will be called by the CO to delete a snapshot. - -This operation MUST be idempotent. -If a snapshot corresponding to the specified `snapshot_id` does not exist or the artifacts associated with the snapshot do not exist anymore, the Plugin MUST reply `0 OK`. - -```protobuf -message DeleteSnapshotRequest { - // The ID of the snapshot to be deleted. - // This field is REQUIRED. - string snapshot_id = 1; - - // Secrets required by plugin to complete snapshot deletion request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 2 [(csi_secret) = true]; -} - -message DeleteSnapshotResponse {} -``` - -##### DeleteSnapshot Errors - -If the plugin is unable to complete the DeleteSnapshot call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Snapshot in use | 9 FAILED_PRECONDITION | Indicates that the snapshot corresponding to the specified `snapshot_id` could not be deleted because it is in use by another resource. | Caller SHOULD ensure that there are no other resources using the snapshot, and then retry with exponential back off. | -| Operation pending for snapshot | 10 ABORTED | Indicates that there is already an operation pending for the specified snapshot. In general the Cluster Orchestrator (CO) is responsible for ensuring that there is no more than one call "in-flight" per snapshot at a given time. However, in some circumstances, the CO MAY lose state (for example when the CO crashes and restarts), and MAY issue multiple calls simultaneously for the same snapshot. The Plugin, SHOULD handle this as gracefully as possible, and MAY return this error code to reject secondary calls. | Caller SHOULD ensure that there are no other calls pending for the specified snapshot, and then retry with exponential back off. | - - -#### `ListSnapshots` - -A Controller Plugin MUST implement this RPC call if it has `LIST_SNAPSHOTS` capability. -The Plugin SHALL return the information about all snapshots on the storage system within the given parameters regardless of how they were created. -`ListSnapshots` SHALL NOT list a snapshot that is being created but has not been cut successfully yet. -If snapshots are created and/or deleted while the CO is concurrently paging through `ListSnapshots` results then it is possible that the CO MAY either witness duplicate snapshots in the list, not witness existing snapshots, or both. -The CO SHALL NOT expect a consistent "view" of all snapshots when paging through the snapshot list via multiple calls to `ListSnapshots`. - -```protobuf -// List all snapshots on the storage system regardless of how they were -// created. -message ListSnapshotsRequest { - // If specified (non-zero value), the Plugin MUST NOT return more - // entries than this number in the response. If the actual number of - // entries is more than this number, the Plugin MUST set `next_token` - // in the response which can be used to get the next page of entries - // in the subsequent `ListSnapshots` call. This field is OPTIONAL. If - // not specified (zero value), it means there is no restriction on the - // number of entries that can be returned. - // The value of this field MUST NOT be negative. - int32 max_entries = 1; - - // A token to specify where to start paginating. Set this field to - // `next_token` returned by a previous `ListSnapshots` call to get the - // next page of entries. This field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string starting_token = 2; - - // Identity information for the source volume. This field is OPTIONAL. - // It can be used to list snapshots by volume. - string source_volume_id = 3; - - // Identity information for a specific snapshot. This field is - // OPTIONAL. It can be used to list only a specific snapshot. - // ListSnapshots will return with current snapshot information - // and will not block if the snapshot is being processed after - // it is cut. - string snapshot_id = 4; -} - -message ListSnapshotsResponse { - message Entry { - Snapshot snapshot = 1; - } - - repeated Entry entries = 1; - - // This token allows you to get the next page of entries for - // `ListSnapshots` request. If the number of entries is larger than - // `max_entries`, use the `next_token` as a value for the - // `starting_token` field in the next `ListSnapshots` request. This - // field is OPTIONAL. - // An empty string is equal to an unspecified field value. - string next_token = 2; -} -``` - -##### ListSnapshots Errors - -If the plugin is unable to complete the ListSnapshots call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Invalid `starting_token` | 10 ABORTED | Indicates that `starting_token` is not valid. | Caller SHOULD start the `ListSnapshots` operation again with an empty `starting_token`. | - - -#### `ControllerExpandVolume` - -A Controller plugin MUST implement this RPC call if plugin has `EXPAND_VOLUME` controller capability. -This RPC allows the CO to expand the size of a volume. - -This call MAY be made by the CO during any time in the lifecycle of the volume after creation if plugin has `VolumeExpansion.ONLINE` capability. -If plugin has `EXPAND_VOLUME` node capability, then `NodeExpandVolume` MUST be called after successful `ControllerExpandVolume` and `node_expansion_required` in `ControllerExpandVolumeResponse` is `true`. - -If the plugin has only `VolumeExpansion.OFFLINE` expansion capability and volume is currently published or available on a node then `ControllerExpandVolume` MUST be called ONLY after either: -- The plugin has controller `PUBLISH_UNPUBLISH_VOLUME` capability and `ControllerUnpublishVolume` has been invoked successfully. - -OR ELSE - -- The plugin does NOT have controller `PUBLISH_UNPUBLISH_VOLUME` capability, the plugin has node `STAGE_UNSTAGE_VOLUME` capability, and `NodeUnstageVolume` has been completed successfully. - -OR ELSE - -- The plugin does NOT have controller `PUBLISH_UNPUBLISH_VOLUME` capability, nor node `STAGE_UNSTAGE_VOLUME` capability, and `NodeUnpublishVolume` has completed successfully. - -Examples: -* Offline Volume Expansion: - Given an ElasticSearch process that runs on Azure Disk and needs more space. - - The administrator takes the Elasticsearch server offline by stopping the workload and CO calls `ControllerUnpublishVolume`. - - The administrator requests more space for the volume from CO. - - The CO in turn first makes `ControllerExpandVolume` RPC call which results in requesting more space from Azure cloud provider for volume ID that was being used by ElasticSearch. - - Once `ControllerExpandVolume` is completed and successful, the CO will inform administrator about it and administrator will resume the ElasticSearch workload. - - On the node where the ElasticSearch workload is scheduled, the CO calls `NodeExpandVolume` after calling `NodeStageVolume`. - - Calling `NodeExpandVolume` on volume results in expanding the underlying file system and added space becomes available to workload when it starts up. -* Online Volume Expansion: - Given a Mysql server running on Openstack Cinder and needs more space. - - The administrator requests more space for volume from the CO. - - The CO in turn first makes `ControllerExpandVolume` RPC call which results in requesting more space from Openstack Cinder for given volume. - - On the node where the mysql workload is running, the CO calls `NodeExpandVolume` while volume is in-use using the path where the volume is staged. - - Calling `NodeExpandVolume` on volume results in expanding the underlying file system and added space automatically becomes available to mysql workload without any downtime. - - -```protobuf -message ControllerExpandVolumeRequest { - // The ID of the volume to expand. This field is REQUIRED. - string volume_id = 1; - - // This allows CO to specify the capacity requirements of the volume - // after expansion. This field is REQUIRED. - CapacityRange capacity_range = 2; - - // Secrets required by the plugin for expanding the volume. - // This field is OPTIONAL. - map secrets = 3 [(csi_secret) = true]; -} - -message ControllerExpandVolumeResponse { - // Capacity of volume after expansion. This field is REQUIRED. - int64 capacity_bytes = 1; - - // Whether node expansion is required for the volume. When true - // the CO MUST make NodeExpandVolume RPC call on the node. This field - // is REQUIRED. - bool node_expansion_required = 2; -} -``` - -##### ControllerExpandVolume Errors - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT FOUND | Indicates that a volume corresponding to the specified volume_id does not exist. | Caller MUST verify that the volume_id is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Volume in use | 9 FAILED_PRECONDITION | Indicates that the volume corresponding to the specified `volume_id` could not be expanded because it is currently published on a node but the plugin does not have ONLINE expansion capability. | Caller SHOULD ensure that volume is not published and retry with exponential back off. | -| Unsupported `capacity_range` | 11 OUT_OF_RANGE | Indicates that the capacity range is not allowed by the Plugin. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST fix the capacity range before retrying. | - -#### RPC Interactions - -##### `CreateVolume`, `DeleteVolume`, `ListVolumes` - -It is worth noting that the plugin-generated `volume_id` is a REQUIRED field for the `DeleteVolume` RPC, as opposed to the CO-generated volume `name` that is REQUIRED for the `CreateVolume` RPC: these fields MAY NOT contain the same value. -If a `CreateVolume` operation times out, leaving the CO without an ID with which to reference a volume, and the CO *also* decides that it no longer needs/wants the volume in question then the CO MAY choose one of the following paths: - -1. Replay the `CreateVolume` RPC that timed out; upon success execute `DeleteVolume` using the known volume ID (from the response to `CreateVolume`). -2. Execute the `ListVolumes` RPC to possibly obtain a volume ID that may be used to execute a `DeleteVolume` RPC; upon success execute `DeleteVolume`. -3. The CO takes no further action regarding the timed out RPC, a volume is possibly leaked and the operator/user is expected to clean up. - -It is NOT REQUIRED for a controller plugin to implement the `LIST_VOLUMES` capability if it supports the `CREATE_DELETE_VOLUME` capability: the onus is upon the CO to take into consideration the full range of plugin capabilities before deciding how to proceed in the above scenario. - -##### `CreateSnapshot`, `DeleteSnapshot`, `ListSnapshots` - -The plugin-generated `snapshot_id` is a REQUIRED field for the `DeleteSnapshot` RPC, as opposed to the CO-generated snapshot `name` that is REQUIRED for the `CreateSnapshot` RPC. -A `CreateSnapshot` operation SHOULD return with a `snapshot_id` when the snapshot is cut successfully. -If a `CreateSnapshot` operation times out before the snapshot is cut, leaving the CO without an ID with which to reference a snapshot, and the CO also decides that it no longer needs/wants the snapshot in question then the CO MAY choose one of the following paths: - -1. Execute the `ListSnapshots` RPC to possibly obtain a snapshot ID that may be used to execute a `DeleteSnapshot` RPC; upon success execute `DeleteSnapshot`. -2. The CO takes no further action regarding the timed out RPC, a snapshot is possibly leaked and the operator/user is expected to clean up. - -It is NOT REQUIRED for a controller plugin to implement the `LIST_SNAPSHOTS` capability if it supports the `CREATE_DELETE_SNAPSHOT` capability: the onus is upon the CO to take into consideration the full range of plugin capabilities before deciding how to proceed in the above scenario. - -ListSnapshots SHALL return with current information regarding the snapshots on the storage system. -When processing is complete, the `ready_to_use` parameter of the snapshot from ListSnapshots SHALL become `true`. -The downside of calling ListSnapshots is that ListSnapshots will not return a gRPC error code if an error occurs during the processing. So calling CreateSnapshot repeatedly is the preferred way to check if the processing is complete. - -### Node Service RPC - -#### `NodeStageVolume` - -A Node Plugin MUST implement this RPC call if it has `STAGE_UNSTAGE_VOLUME` node capability. - -This RPC is called by the CO prior to the volume being consumed by any workloads on the node by `NodePublishVolume`. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. -This RPC SHOULD be called by the CO when a workload that wants to use the specified volume is placed (scheduled) on the specified node for the first time or for the first time since a `NodeUnstageVolume` call for the specified volume was called and returned success on that node. - -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability and the Node Plugin has `STAGE_UNSTAGE_VOLUME` capability, then the CO MUST guarantee that this RPC is called after `ControllerPublishVolume` is called for the given volume on the given node and returns a success. -The CO MUST guarantee that this RPC is called and returns a success before any `NodePublishVolume` is called for the given volume on the given node. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` is already staged to the `staging_target_path`, and is identical to the specified `volume_capability` the Plugin MUST reply `0 OK`. - -If this RPC failed, or the CO does not know if it failed or not, it MAY choose to call `NodeStageVolume` again, or choose to call `NodeUnstageVolume`. - -```protobuf -message NodeStageVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_context = 2; - - // The path to which the volume MAY be staged. It MUST be an - // absolute path in the root filesystem of the process serving this - // request, and MUST be a directory. The CO SHALL ensure that there - // is only one `staging_target_path` per volume. The CO SHALL ensure - // that the path is directory and that the process serving the - // request has `read` and `write` permission to that directory. The - // CO SHALL be responsible for creating the directory if it does not - // exist. - // This is a REQUIRED field. - string staging_target_path = 3; - - // Volume capability describing how the CO intends to use this volume. - // SP MUST ensure the CO can use the staged volume as described. - // Otherwise SP MUST return the appropriate gRPC error code. - // This is a REQUIRED field. - VolumeCapability volume_capability = 4; - - // Secrets required by plugin to complete node stage volume request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 5 [(csi_secret) = true]; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 6; -} - -message NodeStageVolumeResponse { - // Intentionally empty. -} -``` - -#### NodeStageVolume Errors - -If the plugin is unable to complete the NodeStageVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Volume published but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified `volume_id` has already been published at the specified `staging_target_path` but is incompatible with the specified `volume_capability` flag. | Caller MUST fix the arguments before retrying. | -| Exceeds capabilities | 9 FAILED_PRECONDITION | Indicates that the CO has exceeded the volume's capabilities because the volume does not have MULTI_NODE capability. | Caller MAY choose to call `ValidateVolumeCapabilities` to validate the volume capabilities, or wait for the volume to be unpublished on the node. | - -#### `NodeUnstageVolume` - -A Node Plugin MUST implement this RPC call if it has `STAGE_UNSTAGE_VOLUME` node capability. - -This RPC is a reverse operation of `NodeStageVolume`. -This RPC MUST undo the work by the corresponding `NodeStageVolume`. -This RPC SHALL be called by the CO once for each `staging_target_path` that was successfully setup via `NodeStageVolume`. - -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability and the Node Plugin has `STAGE_UNSTAGE_VOLUME` capability, the CO MUST guarantee that this RPC is called and returns success before calling `ControllerUnpublishVolume` for the given node and the given volume. -The CO MUST guarantee that this RPC is called after all `NodeUnpublishVolume` have been called and returned success for the given volume on the given node. - -The Plugin SHALL assume that this RPC will be executed on the node where the volume is being used. - -This RPC MAY be called by the CO when the workload using the volume is being moved to a different node, or all the workloads using the volume on a node have finished. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` is not staged to the `staging_target_path`, the Plugin MUST reply `0 OK`. - -If this RPC failed, or the CO does not know if it failed or not, it MAY choose to call `NodeUnstageVolume` again. - -```protobuf -message NodeUnstageVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was staged. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // This is a REQUIRED field. - string staging_target_path = 2; -} - -message NodeUnstageVolumeResponse { - // Intentionally empty. -} -``` - -#### NodeUnstageVolume Errors - -If the plugin is unable to complete the NodeUnstageVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | - -#### RPC Interactions and Reference Counting -`NodeStageVolume`, `NodeUnstageVolume`, `NodePublishVolume`, `NodeUnpublishVolume` - -The following interaction semantics ARE REQUIRED if the plugin advertises the `STAGE_UNSTAGE_VOLUME` capability. -`NodeStageVolume` MUST be called and return success once per volume per node before any `NodePublishVolume` MAY be called for the volume. -All `NodeUnpublishVolume` MUST be called and return success for a volume before `NodeUnstageVolume` MAY be called for the volume. - -Note that this requires that all COs MUST support reference counting of volumes so that if `STAGE_UNSTAGE_VOLUME` is advertised by the SP, the CO MUST fulfill the above interaction semantics. - -#### `NodePublishVolume` - -This RPC is called by the CO when a workload that wants to use the specified volume is placed (scheduled) on a node. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. - -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability, the CO MUST guarantee that this RPC is called after `ControllerPublishVolume` is called for the given volume on the given node and returns a success. - -This operation MUST be idempotent. -If the volume corresponding to the `volume_id` has already been published at the specified `target_path`, and is compatible with the specified `volume_capability` and `readonly` flag, the Plugin MUST reply `0 OK`. - -If this RPC failed, or the CO does not know if it failed or not, it MAY choose to call `NodePublishVolume` again, or choose to call `NodeUnpublishVolume`. - -This RPC MAY be called by the CO multiple times on the same node for the same volume with possibly different `target_path` and/or other arguments if the volume has MULTI_NODE capability (i.e., `access_mode` is either `MULTI_NODE_READER_ONLY`, `MULTI_NODE_SINGLE_WRITER` or `MULTI_NODE_MULTI_WRITER`). -The following table shows what the Plugin SHOULD return when receiving a second `NodePublishVolume` on the same volume on the same node: - -| | T1=T2, P1=P2 | T1=T2, P1!=P2 | T1!=T2, P1=P2 | T1!=T2, P1!=P2 | -|----------------|-----------------|----------------|---------------------|--------------------| -| MULTI_NODE | OK (idempotent) | ALREADY_EXISTS | OK | OK | -| Non MULTI_NODE | OK (idempotent) | ALREADY_EXISTS | FAILED_PRECONDITION | FAILED_PRECONDITION| - -(`Tn`: target path of the n-th `NodePublishVolume`, `Pn`: other arguments of the n-th `NodePublishVolume` except `secrets`) - -```protobuf -message NodePublishVolumeRequest { - // The ID of the volume to publish. This field is REQUIRED. - string volume_id = 1; - - // The CO SHALL set this field to the value returned by - // `ControllerPublishVolume` if the corresponding Controller Plugin - // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be - // left unset if the corresponding Controller Plugin does not have - // this capability. This is an OPTIONAL field. - map publish_context = 2; - - // The path to which the volume was staged by `NodeStageVolume`. - // It MUST be an absolute path in the root filesystem of the process - // serving this request. - // It MUST be set if the Node Plugin implements the - // `STAGE_UNSTAGE_VOLUME` node capability. - // This is an OPTIONAL field. - string staging_target_path = 3; - - // The path to which the volume will be published. It MUST be an - // absolute path in the root filesystem of the process serving this - // request. The CO SHALL ensure uniqueness of target_path per volume. - // The CO SHALL ensure that the parent directory of this path exists - // and that the process serving the request has `read` and `write` - // permissions to that parent directory. - // For volumes with an access type of block, the SP SHALL place the - // block device at target_path. - // For volumes with an access type of mount, the SP SHALL place the - // mounted directory at target_path. - // Creation of target_path is the responsibility of the SP. - // This is a REQUIRED field. - string target_path = 4; - - // Volume capability describing how the CO intends to use this volume. - // SP MUST ensure the CO can use the published volume as described. - // Otherwise SP MUST return the appropriate gRPC error code. - // This is a REQUIRED field. - VolumeCapability volume_capability = 5; - - // Indicates SP MUST publish the volume in readonly mode. - // This field is REQUIRED. - bool readonly = 6; - - // Secrets required by plugin to complete node publish volume request. - // This field is OPTIONAL. Refer to the `Secrets Requirements` - // section on how to use this field. - map secrets = 7 [(csi_secret) = true]; - - // Volume context as returned by CO in CreateVolumeRequest. This field - // is OPTIONAL and MUST match the volume_context of the volume - // identified by `volume_id`. - map volume_context = 8; -} - -message NodePublishVolumeResponse { - // Intentionally empty. -} -``` - -##### NodePublishVolume Errors - -If the plugin is unable to complete the NodePublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Volume published but is incompatible | 6 ALREADY_EXISTS | Indicates that a volume corresponding to the specified `volume_id` has already been published at the specified `target_path` but is incompatible with the specified `volume_capability` or `readonly` flag. | Caller MUST fix the arguments before retrying. | -| Exceeds capabilities | 9 FAILED_PRECONDITION | Indicates that the CO has exceeded the volume's capabilities because the volume does not have MULTI_NODE capability. | Caller MAY choose to call `ValidateVolumeCapabilities` to validate the volume capabilities, or wait for the volume to be unpublished on the node. | -| Staging target path not set | 9 FAILED_PRECONDITION | Indicates that `STAGE_UNSTAGE_VOLUME` capability is set but no `staging_target_path` was set. | Caller MUST make sure call to `NodeStageVolume` is made and returns success before retrying with valid `staging_target_path`. | - - -#### `NodeUnpublishVolume` - -A Node Plugin MUST implement this RPC call. -This RPC is a reverse operation of `NodePublishVolume`. -This RPC MUST undo the work by the corresponding `NodePublishVolume`. -This RPC SHALL be called by the CO at least once for each `target_path` that was successfully setup via `NodePublishVolume`. -If the corresponding Controller Plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability, the CO SHOULD issue all `NodeUnpublishVolume` (as specified above) before calling `ControllerUnpublishVolume` for the given node and the given volume. -The Plugin SHALL assume that this RPC will be executed on the node where the volume is being used. - -This RPC is typically called by the CO when the workload using the volume is being moved to a different node, or all the workload using the volume on a node has finished. - -This operation MUST be idempotent. -If this RPC failed, or the CO does not know if it failed or not, it can choose to call `NodeUnpublishVolume` again. - -```protobuf -message NodeUnpublishVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path at which the volume was published. It MUST be an absolute - // path in the root filesystem of the process serving this request. - // The SP MUST delete the file or directory it created at this path. - // This is a REQUIRED field. - string target_path = 2; -} - -message NodeUnpublishVolumeResponse { - // Intentionally empty. -} -``` - -##### NodeUnpublishVolume Errors - -If the plugin is unable to complete the NodeUnpublishVolume call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | - - -#### `NodeGetVolumeStats` - -A Node plugin MUST implement this RPC call if it has GET_VOLUME_STATS node capability. -`NodeGetVolumeStats` RPC call returns the volume capacity statistics available for the volume. - -If the volume is being used in `BlockVolume` mode then `used` and `available` MAY be omitted from `usage` field of `NodeGetVolumeStatsResponse`. -Similarly, inode information MAY be omitted from `NodeGetVolumeStatsResponse` when unavailable. - - -```protobuf -message NodeGetVolumeStatsRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // It can be any valid path where volume was previously - // staged or published. - // It MUST be an absolute path in the root filesystem of - // the process serving this request. - // This is a REQUIRED field. - string volume_path = 2; -} - -message NodeGetVolumeStatsResponse { - // This field is OPTIONAL. - repeated VolumeUsage usage = 1; -} - -message VolumeUsage { - enum Unit { - UNKNOWN = 0; - BYTES = 1; - INODES = 2; - } - // The available capacity in specified Unit. This field is OPTIONAL. - // The value of this field MUST NOT be negative. - int64 available = 1; - - // The total capacity in specified Unit. This field is REQUIRED. - // The value of this field MUST NOT be negative. - int64 total = 2; - - // The used capacity in specified Unit. This field is OPTIONAL. - // The value of this field MUST NOT be negative. - int64 used = 3; - - // Units by which values are measured. This field is REQUIRED. - Unit unit = 4; -} -``` - -##### NodeGetVolumeStats Errors - -If the plugin is unable to complete the `NodeGetVolumeStats` call successfully, it MUST return a non-ok gRPC code in the gRPC status. -If the conditions defined below are encountered, the plugin MUST return the specified gRPC error code. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - - -| Condition | gRPC Code | Description | Recovery Behavior | -|-----------|-----------|-------------|-------------------| -| Volume does not exist | 5 NOT_FOUND | Indicates that a volume corresponding to the specified `volume_id` does not exist on specified `volume_path`. | Caller MUST verify that the `volume_id` is correct and that the volume is accessible on specified `volume_path` and has not been deleted before retrying with exponential back off. | - -#### `NodeGetCapabilities` - -A Node Plugin MUST implement this RPC call. -This RPC allows the CO to check the supported capabilities of node service provided by the Plugin. - -```protobuf -message NodeGetCapabilitiesRequest { - // Intentionally empty. -} - -message NodeGetCapabilitiesResponse { - // All the capabilities that the node service supports. This field - // is OPTIONAL. - repeated NodeServiceCapability capabilities = 1; -} - -// Specifies a capability of the node service. -message NodeServiceCapability { - message RPC { - enum Type { - UNKNOWN = 0; - STAGE_UNSTAGE_VOLUME = 1; - // If Plugin implements GET_VOLUME_STATS capability - // then it MUST implement NodeGetVolumeStats RPC - // call for fetching volume statistics. - GET_VOLUME_STATS = 2; - // See VolumeExpansion for details. - EXPAND_VOLUME = 3; - } - - Type type = 1; - } - - oneof type { - // RPC that the controller supports. - RPC rpc = 1; - } -} -``` - -##### NodeGetCapabilities Errors - -If the plugin is unable to complete the NodeGetCapabilities call successfully, it MUST return a non-ok gRPC code in the gRPC status. - -#### `NodeGetInfo` - -A Node Plugin MUST implement this RPC call if the plugin has `PUBLISH_UNPUBLISH_VOLUME` controller capability. -The Plugin SHALL assume that this RPC will be executed on the node where the volume will be used. -The CO SHOULD call this RPC for the node at which it wants to place the workload. -The CO MAY call this RPC more than once for a given node. -The SP SHALL NOT expect the CO to call this RPC more than once. -The result of this call will be used by CO in `ControllerPublishVolume`. - -```protobuf -message NodeGetInfoRequest { -} - -message NodeGetInfoResponse { - // The identifier of the node as understood by the SP. - // This field is REQUIRED. - // This field MUST contain enough information to uniquely identify - // this specific node vs all other nodes supported by this plugin. - // This field SHALL be used by the CO in subsequent calls, including - // `ControllerPublishVolume`, to refer to this node. - // The SP is NOT responsible for global uniqueness of node_id across - // multiple SPs. - string node_id = 1; - - // Maximum number of volumes that controller can publish to the node. - // If value is not set or zero CO SHALL decide how many volumes of - // this type can be published by the controller to the node. The - // plugin MUST NOT set negative values here. - // This field is OPTIONAL. - int64 max_volumes_per_node = 2; - - // Specifies where (regions, zones, racks, etc.) the node is - // accessible from. - // A plugin that returns this field MUST also set the - // VOLUME_ACCESSIBILITY_CONSTRAINTS plugin capability. - // COs MAY use this information along with the topology information - // returned in CreateVolumeResponse to ensure that a given volume is - // accessible from a given node when scheduling workloads. - // This field is OPTIONAL. If it is not specified, the CO MAY assume - // the node is not subject to any topological constraint, and MAY - // schedule workloads that reference any volume V, such that there are - // no topological constraints declared for V. - // - // Example 1: - // accessible_topology = - // {"region": "R1", "zone": "Z2"} - // Indicates the node exists within the "region" "R1" and the "zone" - // "Z2". - Topology accessible_topology = 3; -} -``` - -##### NodeGetInfo Errors - -If the plugin is unable to complete the NodeGetInfo call successfully, it MUST return a non-ok gRPC code in the gRPC status. -The CO MUST implement the specified error recovery behavior when it encounters the gRPC error code. - -#### `NodeExpandVolume` - -A Node Plugin MUST implement this RPC call if it has `EXPAND_VOLUME` node capability. -This RPC call allows CO to expand volume on a node. - -`NodeExpandVolume` ONLY supports expansion of already node-published or node-staged volumes on the given `volume_path`. - -If plugin has `STAGE_UNSTAGE_VOLUME` node capability then: -* `NodeExpandVolume` MUST be called after successful `NodeStageVolume`. -* `NodeExpandVolume` MAY be called before or after `NodePublishVolume`. - -Otherwise `NodeExpandVolume` MUST be called after successful `NodePublishVolume`. - -If a plugin only supports expansion via the `VolumeExpansion.OFFLINE` capability, then the volume MUST first be taken offline and expanded via `ControllerExpandVolume` (see `ControllerExpandVolume` for more details), and then node-staged or node-published before it can be expanded on the node via `NodeExpandVolume`. - -```protobuf -message NodeExpandVolumeRequest { - // The ID of the volume. This field is REQUIRED. - string volume_id = 1; - - // The path on which volume is available. This field is REQUIRED. - string volume_path = 2; - - // This allows CO to specify the capacity requirements of the volume - // after expansion. If capacity_range is omitted then a plugin MAY - // inspect the file system of the volume to determine the maximum - // capacity to which the volume can be expanded. In such cases a - // plugin MAY expand the volume to its maximum capacity. - // This field is OPTIONAL. - CapacityRange capacity_range = 3; -} - -message NodeExpandVolumeResponse { - // The capacity of the volume in bytes. This field is OPTIONAL. - int64 capacity_bytes = 1; -} -``` - -##### NodeExpandVolume Errors - -| Condition | gRPC code | Description | Recovery Behavior | -|-----------------------|-----------|-----------------------|-----------------------------------| -| Volume does not exist | 5 NOT FOUND | Indicates that a volume corresponding to the specified volume_id does not exist. | Caller MUST verify that the volume_id is correct and that the volume is accessible and has not been deleted before retrying with exponential back off. | -| Volume in use | 9 FAILED_PRECONDITION | Indicates that the volume corresponding to the specified `volume_id` could not be expanded because it is node-published or node-staged and the underlying filesystem does not support expansion of published or staged volumes. | Caller MUST NOT retry. | -| Unsupported capacity_range | 11 OUT_OF_RANGE | Indicates that the capacity range is not allowed by the Plugin. More human-readable information MAY be provided in the gRPC `status.message` field. | Caller MUST fix the capacity range before retrying. | - -## Protocol - -### Connectivity - -* A CO SHALL communicate with a Plugin using gRPC to access the `Identity`, and (optionally) the `Controller` and `Node` services. - * proto3 SHOULD be used with gRPC, as per the [official recommendations](http://www.grpc.io/docs/guides/#protocol-buffer-versions). - * All Plugins SHALL implement the REQUIRED Identity service RPCs. - Support for OPTIONAL RPCs is reported by the `ControllerGetCapabilities` and `NodeGetCapabilities` RPC calls. -* The CO SHALL provide the listen-address for the Plugin by way of the `CSI_ENDPOINT` environment variable. - Plugin components SHALL create, bind, and listen for RPCs on the specified listen address. - * Only UNIX Domain Sockets MAY be used as endpoints. - This will likely change in a future version of this specification to support non-UNIX platforms. -* All supported RPC services MUST be available at the listen address of the Plugin. - -### Security - -* The CO operator and Plugin Supervisor SHOULD take steps to ensure that any and all communication between the CO and Plugin Service are secured according to best practices. -* Communication between a CO and a Plugin SHALL be transported over UNIX Domain Sockets. - * gRPC is compatible with UNIX Domain Sockets; it is the responsibility of the CO operator and Plugin Supervisor to properly secure access to the Domain Socket using OS filesystem ACLs and/or other OS-specific security context tooling. - * SP’s supplying stand-alone Plugin controller appliances, or other remote components that are incompatible with UNIX Domain Sockets MUST provide a software component that proxies communication between a UNIX Domain Socket and the remote component(s). - Proxy components transporting communication over IP networks SHALL be responsible for securing communications over such networks. -* Both the CO and Plugin SHOULD avoid accidental leakage of sensitive information (such as redacting such information from log files). - -### Debugging - -* Debugging and tracing are supported by external, CSI-independent additions and extensions to gRPC APIs, such as [OpenTracing](https://github.com/grpc-ecosystem/grpc-opentracing). - -## Configuration and Operation - -### General Configuration - -* The `CSI_ENDPOINT` environment variable SHALL be supplied to the Plugin by the Plugin Supervisor. -* An operator SHALL configure the CO to connect to the Plugin via the listen address identified by `CSI_ENDPOINT` variable. -* With exception to sensitive data, Plugin configuration SHOULD be specified by environment variables, whenever possible, instead of by command line flags or bind-mounted/injected files. - - -#### Plugin Bootstrap Example - -* Supervisor -> Plugin: `CSI_ENDPOINT=unix:///path/to/unix/domain/socket.sock`. -* Operator -> CO: use plugin at endpoint `unix:///path/to/unix/domain/socket.sock`. -* CO: monitor `/path/to/unix/domain/socket.sock`. -* Plugin: read `CSI_ENDPOINT`, create UNIX socket at specified path, bind and listen. -* CO: observe that socket now exists, establish connection. -* CO: invoke `GetPluginCapabilities`. - -#### Filesystem - -* Plugins SHALL NOT specify requirements that include or otherwise reference directories and/or files on the root filesystem of the CO. -* Plugins SHALL NOT create additional files or directories adjacent to the UNIX socket specified by `CSI_ENDPOINT`; violations of this requirement constitute "abuse". - * The Plugin Supervisor is the ultimate authority of the directory in which the UNIX socket endpoint is created and MAY enforce policies to prevent and/or mitigate abuse of the directory by Plugins. - -### Supervised Lifecycle Management - -* For Plugins packaged in software form: - * Plugin Packages SHOULD use a well-documented container image format (e.g., Docker, OCI). - * The chosen package image format MAY expose configurable Plugin properties as environment variables, unless otherwise indicated in the section below. - Variables so exposed SHOULD be assigned default values in the image manifest. - * A Plugin Supervisor MAY programmatically evaluate or otherwise scan a Plugin Package’s image manifest in order to discover configurable environment variables. - * A Plugin SHALL NOT assume that an operator or Plugin Supervisor will scan an image manifest for environment variables. - -#### Environment Variables - -* Variables defined by this specification SHALL be identifiable by their `CSI_` name prefix. -* Configuration properties not defined by the CSI specification SHALL NOT use the same `CSI_` name prefix; this prefix is reserved for common configuration properties defined by the CSI specification. -* The Plugin Supervisor SHOULD supply all RECOMMENDED CSI environment variables to a Plugin. -* The Plugin Supervisor SHALL supply all REQUIRED CSI environment variables to a Plugin. - -##### `CSI_ENDPOINT` - -Network endpoint at which a Plugin SHALL host CSI RPC services. The general format is: - - {scheme}://{authority}{endpoint} - -The following address types SHALL be supported by Plugins: - - unix:///path/to/unix/socket.sock - -Note: All UNIX endpoints SHALL end with `.sock`. See [gRPC Name Resolution](https://github.com/grpc/grpc/blob/master/doc/naming.md). - -This variable is REQUIRED. - -#### Operational Recommendations - -The Plugin Supervisor expects that a Plugin SHALL act as a long-running service vs. an on-demand, CLI-driven process. - -Supervised plugins MAY be isolated and/or resource-bounded. - -##### Logging - -* Plugins SHOULD generate log messages to ONLY standard output and/or standard error. - * In this case the Plugin Supervisor SHALL assume responsibility for all log lifecycle management. -* Plugin implementations that deviate from the above recommendation SHALL clearly and unambiguously document the following: - * Logging configuration flags and/or variables, including working sample configurations. - * Default log destination(s) (where do the logs go if no configuration is specified?) - * Log lifecycle management ownership and related guidance (size limits, rate limits, rolling, archiving, expunging, etc.) applicable to the logging mechanism embedded within the Plugin. -* Plugins SHOULD NOT write potentially sensitive data to logs (e.g. secrets). - -##### Available Services - -* Plugin Packages MAY support all or a subset of CSI services; service combinations MAY be configurable at runtime by the Plugin Supervisor. - * A plugin MUST know the "mode" in which it is operating (e.g. node, controller, or both). - * This specification does not dictate the mechanism by which mode of operation MUST be discovered, and instead places that burden upon the SP. -* Misconfigured plugin software SHOULD fail-fast with an OS-appropriate error code. - -##### Linux Capabilities - -* Plugin Supervisor SHALL guarantee that plugins will have `CAP_SYS_ADMIN` capability on Linux when running on Nodes. -* Plugins SHOULD clearly document any additionally required capabilities and/or security context. - -##### Namespaces - -* A Plugin SHOULD NOT assume that it is in the same [Linux namespaces](https://en.wikipedia.org/wiki/Linux_namespaces) as the Plugin Supervisor. - The CO MUST clearly document the [mount propagation](https://www.kernel.org/doc/Documentation/filesystems/sharedsubtree.txt) requirements for Node Plugins and the Plugin Supervisor SHALL satisfy the CO’s requirements. - -##### Cgroup Isolation - -* A Plugin MAY be constrained by cgroups. -* An operator or Plugin Supervisor MAY configure the devices cgroup subsystem to ensure that a Plugin MAY access requisite devices. -* A Plugin Supervisor MAY define resource limits for a Plugin. - -##### Resource Requirements - -* SPs SHOULD unambiguously document all of a Plugin’s resource requirements. diff --git a/vendor/github.com/containerd/cgroups/metrics.pb.txt b/vendor/github.com/containerd/cgroups/metrics.pb.txt old mode 100755 new mode 100644 diff --git a/vendor/github.com/containerd/containerd/api/1.0.pb.txt b/vendor/github.com/containerd/containerd/api/1.0.pb.txt deleted file mode 100755 index a27162c151..0000000000 --- a/vendor/github.com/containerd/containerd/api/1.0.pb.txt +++ /dev/null @@ -1,4181 +0,0 @@ -file { - name: "google/protobuf/any.proto" - package: "google.protobuf" - message_type { - name: "Any" - field { - name: "type_url" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "typeUrl" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "value" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "AnyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/any" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - package: "containerd.plugin" - dependency: "google/protobuf/descriptor.proto" - extension { - name: "fieldpath_all" - extendee: ".google.protobuf.FileOptions" - number: 63300 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpathAll" - } - extension { - name: "fieldpath" - extendee: ".google.protobuf.MessageOptions" - number: 64400 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpath" - } -} -file { - name: "github.com/containerd/containerd/api/events/container.proto" - package: "containerd.events" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContainerCreate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerCreate.Runtime" - json_name: "runtime" - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - } - message_type { - name: "ContainerUpdate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerUpdate.LabelsEntry" - json_name: "labels" - } - field { - name: "snapshot_key" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ContainerDelete" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 1 - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/content.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContentDelete" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/image.proto" - package: "containerd.services.images.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ImageCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/namespace.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "NamespaceCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/snapshot.proto" - package: "containerd.events" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "SnapshotPrepare" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - } - message_type { - name: "SnapshotCommit" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "SnapshotRemove" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/protobuf/timestamp.proto" - package: "google.protobuf" - message_type { - name: "Timestamp" - field { - name: "seconds" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "seconds" - } - field { - name: "nanos" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "nanos" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "TimestampProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/timestamp" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/mount.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Mount" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "source" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "source" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "target" - } - field { - name: "options" - number: 4 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "options" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/task.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "TaskCreate" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "bundle" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "bundle" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "io" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.TaskIO" - options { - 65004: "IO" - } - json_name: "io" - } - field { - name: "checkpoint" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - field { - name: "pid" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskStart" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskDelete" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskIO" - field { - name: "stdin" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - } - message_type { - name: "TaskExit" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskOOM" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskExecAdded" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "TaskExecStarted" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskPaused" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskResumed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskCheckpointed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 3 - syntax: "proto3" -} -file { - name: "google/protobuf/empty.proto" - package: "google.protobuf" - message_type { - name: "Empty" - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "EmptyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/empty" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "google/protobuf/field_mask.proto" - package: "google.protobuf" - message_type { - name: "FieldMask" - field { - name: "paths" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "paths" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "FieldMaskProto" - java_multiple_files: true - go_package: "google.golang.org/genproto/protobuf/field_mask;field_mask" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/containers/v1/containers.proto" - package: "containerd.services.containers.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Container" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.LabelsEntry" - json_name: "labels" - } - field { - name: "image" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.Runtime" - json_name: "runtime" - } - field { - name: "spec" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "snapshotter" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "snapshot_key" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - field { - name: "created_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "extensions" - number: 10 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.ExtensionsEntry" - options { - 65001: 0 - } - json_name: "extensions" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - nested_type { - name: "ExtensionsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "GetContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "ListContainersRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContainersResponse" - field { - name: "containers" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "containers" - } - } - message_type { - name: "CreateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "CreateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "UpdateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "DeleteContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - service { - name: "Containers" - method { - name: "Get" - input_type: ".containerd.services.containers.v1.GetContainerRequest" - output_type: ".containerd.services.containers.v1.GetContainerResponse" - } - method { - name: "List" - input_type: ".containerd.services.containers.v1.ListContainersRequest" - output_type: ".containerd.services.containers.v1.ListContainersResponse" - } - method { - name: "Create" - input_type: ".containerd.services.containers.v1.CreateContainerRequest" - output_type: ".containerd.services.containers.v1.CreateContainerResponse" - } - method { - name: "Update" - input_type: ".containerd.services.containers.v1.UpdateContainerRequest" - output_type: ".containerd.services.containers.v1.UpdateContainerResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.containers.v1.DeleteContainerRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/containers/v1;containers" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/content/v1/content.proto" - package: "containerd.services.content.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/empty.proto" - message_type { - name: "Info" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - field { - name: "size" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "created_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "InfoRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - message_type { - name: "InfoResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateRequest" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListContentRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContentResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "DeleteContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - message_type { - name: "ReadContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - field { - name: "offset" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - message_type { - name: "ReadContentResponse" - field { - name: "offset" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - } - message_type { - name: "Status" - field { - name: "started_at" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "ref" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "expected" - } - } - message_type { - name: "StatusRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - message_type { - name: "StatusResponse" - field { - name: "status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - json_name: "status" - } - } - message_type { - name: "ListStatusesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListStatusesResponse" - field { - name: "statuses" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - options { - 65001: 0 - } - json_name: "statuses" - } - } - message_type { - name: "WriteContentRequest" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "ref" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "total" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "expected" - } - field { - name: "offset" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - field { - name: "labels" - number: 7 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.WriteContentRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "WriteContentResponse" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "started_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "digest" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - message_type { - name: "AbortRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - enum_type { - name: "WriteAction" - value { - name: "STAT" - number: 0 - options { - 66001: "WriteActionStat" - } - } - value { - name: "WRITE" - number: 1 - options { - 66001: "WriteActionWrite" - } - } - value { - name: "COMMIT" - number: 2 - options { - 66001: "WriteActionCommit" - } - } - options { - 62001: 0 - 62023: "WriteAction" - } - } - service { - name: "Content" - method { - name: "Info" - input_type: ".containerd.services.content.v1.InfoRequest" - output_type: ".containerd.services.content.v1.InfoResponse" - } - method { - name: "Update" - input_type: ".containerd.services.content.v1.UpdateRequest" - output_type: ".containerd.services.content.v1.UpdateResponse" - } - method { - name: "List" - input_type: ".containerd.services.content.v1.ListContentRequest" - output_type: ".containerd.services.content.v1.ListContentResponse" - server_streaming: true - } - method { - name: "Delete" - input_type: ".containerd.services.content.v1.DeleteContentRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Read" - input_type: ".containerd.services.content.v1.ReadContentRequest" - output_type: ".containerd.services.content.v1.ReadContentResponse" - server_streaming: true - } - method { - name: "Status" - input_type: ".containerd.services.content.v1.StatusRequest" - output_type: ".containerd.services.content.v1.StatusResponse" - } - method { - name: "ListStatuses" - input_type: ".containerd.services.content.v1.ListStatusesRequest" - output_type: ".containerd.services.content.v1.ListStatusesResponse" - } - method { - name: "Write" - input_type: ".containerd.services.content.v1.WriteContentRequest" - output_type: ".containerd.services.content.v1.WriteContentResponse" - client_streaming: true - server_streaming: true - } - method { - name: "Abort" - input_type: ".containerd.services.content.v1.AbortRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/content/v1;content" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/descriptor.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Descriptor" - field { - name: "media_type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "digest" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/diff/v1/diff.proto" - package: "containerd.services.diff.v1" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "ApplyRequest" - field { - name: "diff" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - field { - name: "mounts" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ApplyResponse" - field { - name: "applied" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "applied" - } - } - message_type { - name: "DiffRequest" - field { - name: "left" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "left" - } - field { - name: "right" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "right" - } - field { - name: "media_type" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "ref" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.diff.v1.DiffRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "DiffResponse" - field { - name: "diff" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - } - service { - name: "Diff" - method { - name: "Apply" - input_type: ".containerd.services.diff.v1.ApplyRequest" - output_type: ".containerd.services.diff.v1.ApplyResponse" - } - method { - name: "Diff" - input_type: ".containerd.services.diff.v1.DiffRequest" - output_type: ".containerd.services.diff.v1.DiffResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/diff/v1;diff" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/events/v1/events.proto" - package: "containerd.services.events.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "PublishRequest" - field { - name: "topic" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - } - message_type { - name: "ForwardRequest" - field { - name: "envelope" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.events.v1.Envelope" - json_name: "envelope" - } - } - message_type { - name: "SubscribeRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "Envelope" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "timestamp" - } - field { - name: "namespace" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "namespace" - } - field { - name: "topic" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - options { - 64400: 1 - } - } - service { - name: "Events" - method { - name: "Publish" - input_type: ".containerd.services.events.v1.PublishRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Forward" - input_type: ".containerd.services.events.v1.ForwardRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Subscribe" - input_type: ".containerd.services.events.v1.SubscribeRequest" - output_type: ".containerd.services.events.v1.Envelope" - server_streaming: true - } - } - options { - go_package: "github.com/containerd/containerd/api/services/events/v1;events" - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/images/v1/images.proto" - package: "containerd.services.images.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "Image" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image.LabelsEntry" - json_name: "labels" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - options { - 65001: 0 - } - json_name: "target" - } - field { - name: "created_at" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - json_name: "image" - } - } - message_type { - name: "CreateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "CreateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "UpdateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "ListImagesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListImagesResponse" - field { - name: "images" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "images" - } - } - message_type { - name: "DeleteImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "sync" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "sync" - } - } - service { - name: "Images" - method { - name: "Get" - input_type: ".containerd.services.images.v1.GetImageRequest" - output_type: ".containerd.services.images.v1.GetImageResponse" - } - method { - name: "List" - input_type: ".containerd.services.images.v1.ListImagesRequest" - output_type: ".containerd.services.images.v1.ListImagesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.images.v1.CreateImageRequest" - output_type: ".containerd.services.images.v1.CreateImageResponse" - } - method { - name: "Update" - input_type: ".containerd.services.images.v1.UpdateImageRequest" - output_type: ".containerd.services.images.v1.UpdateImageResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.images.v1.DeleteImageRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/images/v1;images" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/platform.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Platform" - field { - name: "os" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65004: "OS" - } - json_name: "os" - } - field { - name: "architecture" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "architecture" - } - field { - name: "variant" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "variant" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/rpc/status.proto" - package: "google.rpc" - dependency: "google/protobuf/any.proto" - message_type { - name: "Status" - field { - name: "code" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "code" - } - field { - name: "message" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "message" - } - field { - name: "details" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "details" - } - } - options { - java_package: "com.google.rpc" - java_outer_classname: "StatusProto" - java_multiple_files: true - go_package: "github.com/containerd/containerd/protobuf/google/rpc;rpc" - objc_class_prefix: "RPC" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/introspection/v1/introspection.proto" - package: "containerd.services.introspection.v1" - dependency: "github.com/containerd/containerd/api/types/platform.proto" - dependency: "google/rpc/status.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Plugin" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "requires" - number: 3 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "requires" - } - field { - name: "platforms" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Platform" - options { - 65001: 0 - } - json_name: "platforms" - } - field { - name: "exports" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin.ExportsEntry" - json_name: "exports" - } - field { - name: "capabilities" - number: 6 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "capabilities" - } - field { - name: "init_err" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.rpc.Status" - json_name: "initErr" - } - nested_type { - name: "ExportsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PluginsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "PluginsResponse" - field { - name: "plugins" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin" - options { - 65001: 0 - } - json_name: "plugins" - } - } - service { - name: "Introspection" - method { - name: "Plugins" - input_type: ".containerd.services.introspection.v1.PluginsRequest" - output_type: ".containerd.services.introspection.v1.PluginsResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/introspection/v1;introspection" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/leases/v1/leases.proto" - package: "containerd.services.leases.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Lease" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "created_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.CreateRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateResponse" - field { - name: "lease" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "lease" - } - } - message_type { - name: "DeleteRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "ListRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListResponse" - field { - name: "leases" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "leases" - } - } - service { - name: "Leases" - method { - name: "Create" - input_type: ".containerd.services.leases.v1.CreateRequest" - output_type: ".containerd.services.leases.v1.CreateResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.leases.v1.DeleteRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "List" - input_type: ".containerd.services.leases.v1.ListRequest" - output_type: ".containerd.services.leases.v1.ListResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/leases/v1;leases" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/namespaces/v1/namespace.proto" - package: "containerd.services.namespaces.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - message_type { - name: "Namespace" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "ListNamespacesRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListNamespacesResponse" - field { - name: "namespaces" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespaces" - } - } - message_type { - name: "CreateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "CreateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "UpdateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "DeleteNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - service { - name: "Namespaces" - method { - name: "Get" - input_type: ".containerd.services.namespaces.v1.GetNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.GetNamespaceResponse" - } - method { - name: "List" - input_type: ".containerd.services.namespaces.v1.ListNamespacesRequest" - output_type: ".containerd.services.namespaces.v1.ListNamespacesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.namespaces.v1.CreateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.CreateNamespaceResponse" - } - method { - name: "Update" - input_type: ".containerd.services.namespaces.v1.UpdateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.UpdateNamespaceResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.namespaces.v1.DeleteNamespaceRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/namespaces/v1;namespaces" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/snapshots/v1/snapshots.proto" - package: "containerd.services.snapshots.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - message_type { - name: "PrepareSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.PrepareSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PrepareSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ViewSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.ViewSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ViewSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "MountsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "MountsResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "RemoveSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "CommitSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "key" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.CommitSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "Info" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "kind" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.snapshots.v1.Kind" - json_name: "kind" - } - field { - name: "created_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 6 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListSnapshotsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - } - message_type { - name: "ListSnapshotsResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UsageRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "UsageResponse" - field { - name: "size" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "inodes" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "inodes" - } - } - enum_type { - name: "Kind" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "KindUnknown" - } - } - value { - name: "VIEW" - number: 1 - options { - 66001: "KindView" - } - } - value { - name: "ACTIVE" - number: 2 - options { - 66001: "KindActive" - } - } - value { - name: "COMMITTED" - number: 3 - options { - 66001: "KindCommitted" - } - } - options { - 62001: 0 - 62023: "Kind" - } - } - service { - name: "Snapshots" - method { - name: "Prepare" - input_type: ".containerd.services.snapshots.v1.PrepareSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.PrepareSnapshotResponse" - } - method { - name: "View" - input_type: ".containerd.services.snapshots.v1.ViewSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.ViewSnapshotResponse" - } - method { - name: "Mounts" - input_type: ".containerd.services.snapshots.v1.MountsRequest" - output_type: ".containerd.services.snapshots.v1.MountsResponse" - } - method { - name: "Commit" - input_type: ".containerd.services.snapshots.v1.CommitSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Remove" - input_type: ".containerd.services.snapshots.v1.RemoveSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Stat" - input_type: ".containerd.services.snapshots.v1.StatSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.StatSnapshotResponse" - } - method { - name: "Update" - input_type: ".containerd.services.snapshots.v1.UpdateSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.UpdateSnapshotResponse" - } - method { - name: "List" - input_type: ".containerd.services.snapshots.v1.ListSnapshotsRequest" - output_type: ".containerd.services.snapshots.v1.ListSnapshotsResponse" - server_streaming: true - } - method { - name: "Usage" - input_type: ".containerd.services.snapshots.v1.UsageRequest" - output_type: ".containerd.services.snapshots.v1.UsageResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/snapshots/v1;snapshots" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/metrics.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Metric" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "timestamp" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "data" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "data" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/task/task.proto" - package: "containerd.v1.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/any.proto" - message_type { - name: "Process" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.v1.types.Status" - json_name: "status" - } - field { - name: "stdin" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "exit_status" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 10 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "ProcessInfo" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "info" - } - } - enum_type { - name: "Status" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "StatusUnknown" - } - } - value { - name: "CREATED" - number: 1 - options { - 66001: "StatusCreated" - } - } - value { - name: "RUNNING" - number: 2 - options { - 66001: "StatusRunning" - } - } - value { - name: "STOPPED" - number: 3 - options { - 66001: "StatusStopped" - } - } - value { - name: "PAUSED" - number: 4 - options { - 66001: "StatusPaused" - } - } - value { - name: "PAUSING" - number: 5 - options { - 66001: "StatusPausing" - } - } - options { - 62001: 0 - 62023: "Status" - } - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/tasks/v1/tasks.proto" - package: "containerd.services.tasks.v1" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/metrics.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - dependency: "github.com/containerd/containerd/api/types/task/task.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "CreateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "stdin" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "checkpoint" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "checkpoint" - } - field { - name: "options" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CreateTaskResponse" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "StartRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "StartResponse" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "DeleteTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "DeleteResponse" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "DeleteProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetResponse" - field { - name: "process" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "process" - } - } - message_type { - name: "ListTasksRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListTasksResponse" - field { - name: "tasks" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "tasks" - } - } - message_type { - name: "KillRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "signal" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "signal" - } - field { - name: "all" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "all" - } - } - message_type { - name: "ExecProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "stdin" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "spec" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "exec_id" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "ExecProcessResponse" - } - message_type { - name: "ResizePtyRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "width" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "width" - } - field { - name: "height" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "height" - } - } - message_type { - name: "CloseIORequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "stdin" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "stdin" - } - } - message_type { - name: "PauseTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ResumeTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsResponse" - field { - name: "processes" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.ProcessInfo" - json_name: "processes" - } - } - message_type { - name: "CheckpointTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "parent_checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "parentCheckpoint" - } - field { - name: "options" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CheckpointTaskResponse" - field { - name: "descriptors" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "descriptors" - } - } - message_type { - name: "UpdateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "resources" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "resources" - } - } - message_type { - name: "MetricsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "MetricsResponse" - field { - name: "metrics" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Metric" - json_name: "metrics" - } - } - message_type { - name: "WaitRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "WaitResponse" - field { - name: "exit_status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - service { - name: "Tasks" - method { - name: "Create" - input_type: ".containerd.services.tasks.v1.CreateTaskRequest" - output_type: ".containerd.services.tasks.v1.CreateTaskResponse" - } - method { - name: "Start" - input_type: ".containerd.services.tasks.v1.StartRequest" - output_type: ".containerd.services.tasks.v1.StartResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.tasks.v1.DeleteTaskRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "DeleteProcess" - input_type: ".containerd.services.tasks.v1.DeleteProcessRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "Get" - input_type: ".containerd.services.tasks.v1.GetRequest" - output_type: ".containerd.services.tasks.v1.GetResponse" - } - method { - name: "List" - input_type: ".containerd.services.tasks.v1.ListTasksRequest" - output_type: ".containerd.services.tasks.v1.ListTasksResponse" - } - method { - name: "Kill" - input_type: ".containerd.services.tasks.v1.KillRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Exec" - input_type: ".containerd.services.tasks.v1.ExecProcessRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ResizePty" - input_type: ".containerd.services.tasks.v1.ResizePtyRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "CloseIO" - input_type: ".containerd.services.tasks.v1.CloseIORequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Pause" - input_type: ".containerd.services.tasks.v1.PauseTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Resume" - input_type: ".containerd.services.tasks.v1.ResumeTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ListPids" - input_type: ".containerd.services.tasks.v1.ListPidsRequest" - output_type: ".containerd.services.tasks.v1.ListPidsResponse" - } - method { - name: "Checkpoint" - input_type: ".containerd.services.tasks.v1.CheckpointTaskRequest" - output_type: ".containerd.services.tasks.v1.CheckpointTaskResponse" - } - method { - name: "Update" - input_type: ".containerd.services.tasks.v1.UpdateTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Metrics" - input_type: ".containerd.services.tasks.v1.MetricsRequest" - output_type: ".containerd.services.tasks.v1.MetricsResponse" - } - method { - name: "Wait" - input_type: ".containerd.services.tasks.v1.WaitRequest" - output_type: ".containerd.services.tasks.v1.WaitResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/tasks/v1;tasks" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/version/v1/version.proto" - package: "containerd.services.version.v1" - dependency: "google/protobuf/empty.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "VersionResponse" - field { - name: "version" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "version" - } - field { - name: "revision" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "revision" - } - } - service { - name: "Version" - method { - name: "Version" - input_type: ".google.protobuf.Empty" - output_type: ".containerd.services.version.v1.VersionResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/version/v1;version" - } - weak_dependency: 1 - syntax: "proto3" -} diff --git a/vendor/github.com/containerd/containerd/api/1.1.pb.txt b/vendor/github.com/containerd/containerd/api/1.1.pb.txt deleted file mode 100755 index b4003eed18..0000000000 --- a/vendor/github.com/containerd/containerd/api/1.1.pb.txt +++ /dev/null @@ -1,4181 +0,0 @@ -file { - name: "google/protobuf/any.proto" - package: "google.protobuf" - message_type { - name: "Any" - field { - name: "type_url" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "typeUrl" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "value" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "AnyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/any" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - package: "containerd.plugin" - dependency: "google/protobuf/descriptor.proto" - extension { - name: "fieldpath_all" - extendee: ".google.protobuf.FileOptions" - number: 63300 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpathAll" - } - extension { - name: "fieldpath" - extendee: ".google.protobuf.MessageOptions" - number: 64400 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpath" - } -} -file { - name: "github.com/containerd/containerd/api/events/container.proto" - package: "containerd.events" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContainerCreate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerCreate.Runtime" - json_name: "runtime" - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - } - message_type { - name: "ContainerUpdate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerUpdate.LabelsEntry" - json_name: "labels" - } - field { - name: "snapshot_key" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ContainerDelete" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 1 - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/content.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContentDelete" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/image.proto" - package: "containerd.services.images.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ImageCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/namespace.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "NamespaceCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/snapshot.proto" - package: "containerd.events" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "SnapshotPrepare" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - } - message_type { - name: "SnapshotCommit" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "SnapshotRemove" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/protobuf/timestamp.proto" - package: "google.protobuf" - message_type { - name: "Timestamp" - field { - name: "seconds" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "seconds" - } - field { - name: "nanos" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "nanos" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "TimestampProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/timestamp" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/mount.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Mount" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "source" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "source" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "target" - } - field { - name: "options" - number: 4 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "options" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/task.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "TaskCreate" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "bundle" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "bundle" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "io" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.TaskIO" - options { - 65004: "IO" - } - json_name: "io" - } - field { - name: "checkpoint" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - field { - name: "pid" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskStart" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskDelete" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskIO" - field { - name: "stdin" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - } - message_type { - name: "TaskExit" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskOOM" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskExecAdded" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "TaskExecStarted" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskPaused" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskResumed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskCheckpointed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 3 - syntax: "proto3" -} -file { - name: "google/protobuf/empty.proto" - package: "google.protobuf" - message_type { - name: "Empty" - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "EmptyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/empty" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "google/protobuf/field_mask.proto" - package: "google.protobuf" - message_type { - name: "FieldMask" - field { - name: "paths" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "paths" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "FieldMaskProto" - java_multiple_files: true - go_package: "google.golang.org/genproto/protobuf/field_mask;field_mask" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/containers/v1/containers.proto" - package: "containerd.services.containers.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Container" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.LabelsEntry" - json_name: "labels" - } - field { - name: "image" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.Runtime" - json_name: "runtime" - } - field { - name: "spec" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "snapshotter" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "snapshot_key" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - field { - name: "created_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "extensions" - number: 10 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.ExtensionsEntry" - options { - 65001: 0 - } - json_name: "extensions" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - nested_type { - name: "ExtensionsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "GetContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "ListContainersRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContainersResponse" - field { - name: "containers" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "containers" - } - } - message_type { - name: "CreateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "CreateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "UpdateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "DeleteContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - service { - name: "Containers" - method { - name: "Get" - input_type: ".containerd.services.containers.v1.GetContainerRequest" - output_type: ".containerd.services.containers.v1.GetContainerResponse" - } - method { - name: "List" - input_type: ".containerd.services.containers.v1.ListContainersRequest" - output_type: ".containerd.services.containers.v1.ListContainersResponse" - } - method { - name: "Create" - input_type: ".containerd.services.containers.v1.CreateContainerRequest" - output_type: ".containerd.services.containers.v1.CreateContainerResponse" - } - method { - name: "Update" - input_type: ".containerd.services.containers.v1.UpdateContainerRequest" - output_type: ".containerd.services.containers.v1.UpdateContainerResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.containers.v1.DeleteContainerRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/containers/v1;containers" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/content/v1/content.proto" - package: "containerd.services.content.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/empty.proto" - message_type { - name: "Info" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - field { - name: "size" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "created_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "InfoRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - message_type { - name: "InfoResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateRequest" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListContentRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContentResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "DeleteContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - message_type { - name: "ReadContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - field { - name: "offset" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - message_type { - name: "ReadContentResponse" - field { - name: "offset" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - } - message_type { - name: "Status" - field { - name: "started_at" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "ref" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "expected" - } - } - message_type { - name: "StatusRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - message_type { - name: "StatusResponse" - field { - name: "status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - json_name: "status" - } - } - message_type { - name: "ListStatusesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListStatusesResponse" - field { - name: "statuses" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - options { - 65001: 0 - } - json_name: "statuses" - } - } - message_type { - name: "WriteContentRequest" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "ref" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "total" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "expected" - } - field { - name: "offset" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - field { - name: "labels" - number: 7 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.WriteContentRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "WriteContentResponse" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "started_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "digest" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - } - message_type { - name: "AbortRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - enum_type { - name: "WriteAction" - value { - name: "STAT" - number: 0 - options { - 66001: "WriteActionStat" - } - } - value { - name: "WRITE" - number: 1 - options { - 66001: "WriteActionWrite" - } - } - value { - name: "COMMIT" - number: 2 - options { - 66001: "WriteActionCommit" - } - } - options { - 62001: 0 - 62023: "WriteAction" - } - } - service { - name: "Content" - method { - name: "Info" - input_type: ".containerd.services.content.v1.InfoRequest" - output_type: ".containerd.services.content.v1.InfoResponse" - } - method { - name: "Update" - input_type: ".containerd.services.content.v1.UpdateRequest" - output_type: ".containerd.services.content.v1.UpdateResponse" - } - method { - name: "List" - input_type: ".containerd.services.content.v1.ListContentRequest" - output_type: ".containerd.services.content.v1.ListContentResponse" - server_streaming: true - } - method { - name: "Delete" - input_type: ".containerd.services.content.v1.DeleteContentRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Read" - input_type: ".containerd.services.content.v1.ReadContentRequest" - output_type: ".containerd.services.content.v1.ReadContentResponse" - server_streaming: true - } - method { - name: "Status" - input_type: ".containerd.services.content.v1.StatusRequest" - output_type: ".containerd.services.content.v1.StatusResponse" - } - method { - name: "ListStatuses" - input_type: ".containerd.services.content.v1.ListStatusesRequest" - output_type: ".containerd.services.content.v1.ListStatusesResponse" - } - method { - name: "Write" - input_type: ".containerd.services.content.v1.WriteContentRequest" - output_type: ".containerd.services.content.v1.WriteContentResponse" - client_streaming: true - server_streaming: true - } - method { - name: "Abort" - input_type: ".containerd.services.content.v1.AbortRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/content/v1;content" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/descriptor.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Descriptor" - field { - name: "media_type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "digest" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "digest" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/diff/v1/diff.proto" - package: "containerd.services.diff.v1" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "ApplyRequest" - field { - name: "diff" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - field { - name: "mounts" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ApplyResponse" - field { - name: "applied" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "applied" - } - } - message_type { - name: "DiffRequest" - field { - name: "left" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "left" - } - field { - name: "right" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "right" - } - field { - name: "media_type" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "ref" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.diff.v1.DiffRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "DiffResponse" - field { - name: "diff" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - } - service { - name: "Diff" - method { - name: "Apply" - input_type: ".containerd.services.diff.v1.ApplyRequest" - output_type: ".containerd.services.diff.v1.ApplyResponse" - } - method { - name: "Diff" - input_type: ".containerd.services.diff.v1.DiffRequest" - output_type: ".containerd.services.diff.v1.DiffResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/diff/v1;diff" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/events/v1/events.proto" - package: "containerd.services.events.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "PublishRequest" - field { - name: "topic" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - } - message_type { - name: "ForwardRequest" - field { - name: "envelope" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.events.v1.Envelope" - json_name: "envelope" - } - } - message_type { - name: "SubscribeRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "Envelope" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "timestamp" - } - field { - name: "namespace" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "namespace" - } - field { - name: "topic" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - options { - 64400: 1 - } - } - service { - name: "Events" - method { - name: "Publish" - input_type: ".containerd.services.events.v1.PublishRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Forward" - input_type: ".containerd.services.events.v1.ForwardRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Subscribe" - input_type: ".containerd.services.events.v1.SubscribeRequest" - output_type: ".containerd.services.events.v1.Envelope" - server_streaming: true - } - } - options { - go_package: "github.com/containerd/containerd/api/services/events/v1;events" - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/images/v1/images.proto" - package: "containerd.services.images.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "Image" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image.LabelsEntry" - json_name: "labels" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - options { - 65001: 0 - } - json_name: "target" - } - field { - name: "created_at" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - json_name: "image" - } - } - message_type { - name: "CreateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "CreateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "UpdateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "ListImagesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListImagesResponse" - field { - name: "images" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "images" - } - } - message_type { - name: "DeleteImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "sync" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "sync" - } - } - service { - name: "Images" - method { - name: "Get" - input_type: ".containerd.services.images.v1.GetImageRequest" - output_type: ".containerd.services.images.v1.GetImageResponse" - } - method { - name: "List" - input_type: ".containerd.services.images.v1.ListImagesRequest" - output_type: ".containerd.services.images.v1.ListImagesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.images.v1.CreateImageRequest" - output_type: ".containerd.services.images.v1.CreateImageResponse" - } - method { - name: "Update" - input_type: ".containerd.services.images.v1.UpdateImageRequest" - output_type: ".containerd.services.images.v1.UpdateImageResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.images.v1.DeleteImageRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/images/v1;images" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/platform.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Platform" - field { - name: "os" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65004: "OS" - } - json_name: "os" - } - field { - name: "architecture" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "architecture" - } - field { - name: "variant" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "variant" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/rpc/status.proto" - package: "google.rpc" - dependency: "google/protobuf/any.proto" - message_type { - name: "Status" - field { - name: "code" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "code" - } - field { - name: "message" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "message" - } - field { - name: "details" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "details" - } - } - options { - java_package: "com.google.rpc" - java_outer_classname: "StatusProto" - java_multiple_files: true - go_package: "rpc" - objc_class_prefix: "RPC" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/introspection/v1/introspection.proto" - package: "containerd.services.introspection.v1" - dependency: "github.com/containerd/containerd/api/types/platform.proto" - dependency: "google/rpc/status.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Plugin" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "requires" - number: 3 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "requires" - } - field { - name: "platforms" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Platform" - options { - 65001: 0 - } - json_name: "platforms" - } - field { - name: "exports" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin.ExportsEntry" - json_name: "exports" - } - field { - name: "capabilities" - number: 6 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "capabilities" - } - field { - name: "init_err" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.rpc.Status" - json_name: "initErr" - } - nested_type { - name: "ExportsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PluginsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "PluginsResponse" - field { - name: "plugins" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin" - options { - 65001: 0 - } - json_name: "plugins" - } - } - service { - name: "Introspection" - method { - name: "Plugins" - input_type: ".containerd.services.introspection.v1.PluginsRequest" - output_type: ".containerd.services.introspection.v1.PluginsResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/introspection/v1;introspection" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/leases/v1/leases.proto" - package: "containerd.services.leases.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Lease" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "created_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.CreateRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateResponse" - field { - name: "lease" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "lease" - } - } - message_type { - name: "DeleteRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "ListRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListResponse" - field { - name: "leases" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "leases" - } - } - service { - name: "Leases" - method { - name: "Create" - input_type: ".containerd.services.leases.v1.CreateRequest" - output_type: ".containerd.services.leases.v1.CreateResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.leases.v1.DeleteRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "List" - input_type: ".containerd.services.leases.v1.ListRequest" - output_type: ".containerd.services.leases.v1.ListResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/leases/v1;leases" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/namespaces/v1/namespace.proto" - package: "containerd.services.namespaces.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - message_type { - name: "Namespace" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "ListNamespacesRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListNamespacesResponse" - field { - name: "namespaces" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespaces" - } - } - message_type { - name: "CreateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "CreateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "UpdateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "DeleteNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - service { - name: "Namespaces" - method { - name: "Get" - input_type: ".containerd.services.namespaces.v1.GetNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.GetNamespaceResponse" - } - method { - name: "List" - input_type: ".containerd.services.namespaces.v1.ListNamespacesRequest" - output_type: ".containerd.services.namespaces.v1.ListNamespacesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.namespaces.v1.CreateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.CreateNamespaceResponse" - } - method { - name: "Update" - input_type: ".containerd.services.namespaces.v1.UpdateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.UpdateNamespaceResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.namespaces.v1.DeleteNamespaceRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/namespaces/v1;namespaces" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/snapshots/v1/snapshots.proto" - package: "containerd.services.snapshots.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - message_type { - name: "PrepareSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.PrepareSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PrepareSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ViewSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.ViewSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ViewSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "MountsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "MountsResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "RemoveSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "CommitSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "key" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.CommitSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "Info" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "kind" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.snapshots.v1.Kind" - json_name: "kind" - } - field { - name: "created_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 6 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListSnapshotsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - } - message_type { - name: "ListSnapshotsResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UsageRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "UsageResponse" - field { - name: "size" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "inodes" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "inodes" - } - } - enum_type { - name: "Kind" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "KindUnknown" - } - } - value { - name: "VIEW" - number: 1 - options { - 66001: "KindView" - } - } - value { - name: "ACTIVE" - number: 2 - options { - 66001: "KindActive" - } - } - value { - name: "COMMITTED" - number: 3 - options { - 66001: "KindCommitted" - } - } - options { - 62001: 0 - 62023: "Kind" - } - } - service { - name: "Snapshots" - method { - name: "Prepare" - input_type: ".containerd.services.snapshots.v1.PrepareSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.PrepareSnapshotResponse" - } - method { - name: "View" - input_type: ".containerd.services.snapshots.v1.ViewSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.ViewSnapshotResponse" - } - method { - name: "Mounts" - input_type: ".containerd.services.snapshots.v1.MountsRequest" - output_type: ".containerd.services.snapshots.v1.MountsResponse" - } - method { - name: "Commit" - input_type: ".containerd.services.snapshots.v1.CommitSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Remove" - input_type: ".containerd.services.snapshots.v1.RemoveSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Stat" - input_type: ".containerd.services.snapshots.v1.StatSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.StatSnapshotResponse" - } - method { - name: "Update" - input_type: ".containerd.services.snapshots.v1.UpdateSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.UpdateSnapshotResponse" - } - method { - name: "List" - input_type: ".containerd.services.snapshots.v1.ListSnapshotsRequest" - output_type: ".containerd.services.snapshots.v1.ListSnapshotsResponse" - server_streaming: true - } - method { - name: "Usage" - input_type: ".containerd.services.snapshots.v1.UsageRequest" - output_type: ".containerd.services.snapshots.v1.UsageResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/snapshots/v1;snapshots" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/metrics.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Metric" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "timestamp" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "data" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "data" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/task/task.proto" - package: "containerd.v1.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/any.proto" - message_type { - name: "Process" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.v1.types.Status" - json_name: "status" - } - field { - name: "stdin" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "exit_status" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 10 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "ProcessInfo" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "info" - } - } - enum_type { - name: "Status" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "StatusUnknown" - } - } - value { - name: "CREATED" - number: 1 - options { - 66001: "StatusCreated" - } - } - value { - name: "RUNNING" - number: 2 - options { - 66001: "StatusRunning" - } - } - value { - name: "STOPPED" - number: 3 - options { - 66001: "StatusStopped" - } - } - value { - name: "PAUSED" - number: 4 - options { - 66001: "StatusPaused" - } - } - value { - name: "PAUSING" - number: 5 - options { - 66001: "StatusPausing" - } - } - options { - 62001: 0 - 62023: "Status" - } - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/tasks/v1/tasks.proto" - package: "containerd.services.tasks.v1" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/metrics.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - dependency: "github.com/containerd/containerd/api/types/task/task.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "CreateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "stdin" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "checkpoint" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "checkpoint" - } - field { - name: "options" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CreateTaskResponse" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "StartRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "StartResponse" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "DeleteTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "DeleteResponse" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - message_type { - name: "DeleteProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetResponse" - field { - name: "process" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "process" - } - } - message_type { - name: "ListTasksRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListTasksResponse" - field { - name: "tasks" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "tasks" - } - } - message_type { - name: "KillRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "signal" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "signal" - } - field { - name: "all" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "all" - } - } - message_type { - name: "ExecProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "stdin" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "spec" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "exec_id" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "ExecProcessResponse" - } - message_type { - name: "ResizePtyRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "width" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "width" - } - field { - name: "height" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "height" - } - } - message_type { - name: "CloseIORequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "stdin" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "stdin" - } - } - message_type { - name: "PauseTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ResumeTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsResponse" - field { - name: "processes" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.ProcessInfo" - json_name: "processes" - } - } - message_type { - name: "CheckpointTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "parent_checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65003: "github.com/opencontainers/go-digest.Digest" - 65001: 0 - } - json_name: "parentCheckpoint" - } - field { - name: "options" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CheckpointTaskResponse" - field { - name: "descriptors" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "descriptors" - } - } - message_type { - name: "UpdateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "resources" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "resources" - } - } - message_type { - name: "MetricsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "MetricsResponse" - field { - name: "metrics" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Metric" - json_name: "metrics" - } - } - message_type { - name: "WaitRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "WaitResponse" - field { - name: "exit_status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65010: 1 - 65001: 0 - } - json_name: "exitedAt" - } - } - service { - name: "Tasks" - method { - name: "Create" - input_type: ".containerd.services.tasks.v1.CreateTaskRequest" - output_type: ".containerd.services.tasks.v1.CreateTaskResponse" - } - method { - name: "Start" - input_type: ".containerd.services.tasks.v1.StartRequest" - output_type: ".containerd.services.tasks.v1.StartResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.tasks.v1.DeleteTaskRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "DeleteProcess" - input_type: ".containerd.services.tasks.v1.DeleteProcessRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "Get" - input_type: ".containerd.services.tasks.v1.GetRequest" - output_type: ".containerd.services.tasks.v1.GetResponse" - } - method { - name: "List" - input_type: ".containerd.services.tasks.v1.ListTasksRequest" - output_type: ".containerd.services.tasks.v1.ListTasksResponse" - } - method { - name: "Kill" - input_type: ".containerd.services.tasks.v1.KillRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Exec" - input_type: ".containerd.services.tasks.v1.ExecProcessRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ResizePty" - input_type: ".containerd.services.tasks.v1.ResizePtyRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "CloseIO" - input_type: ".containerd.services.tasks.v1.CloseIORequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Pause" - input_type: ".containerd.services.tasks.v1.PauseTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Resume" - input_type: ".containerd.services.tasks.v1.ResumeTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ListPids" - input_type: ".containerd.services.tasks.v1.ListPidsRequest" - output_type: ".containerd.services.tasks.v1.ListPidsResponse" - } - method { - name: "Checkpoint" - input_type: ".containerd.services.tasks.v1.CheckpointTaskRequest" - output_type: ".containerd.services.tasks.v1.CheckpointTaskResponse" - } - method { - name: "Update" - input_type: ".containerd.services.tasks.v1.UpdateTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Metrics" - input_type: ".containerd.services.tasks.v1.MetricsRequest" - output_type: ".containerd.services.tasks.v1.MetricsResponse" - } - method { - name: "Wait" - input_type: ".containerd.services.tasks.v1.WaitRequest" - output_type: ".containerd.services.tasks.v1.WaitResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/tasks/v1;tasks" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/version/v1/version.proto" - package: "containerd.services.version.v1" - dependency: "google/protobuf/empty.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "VersionResponse" - field { - name: "version" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "version" - } - field { - name: "revision" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "revision" - } - } - service { - name: "Version" - method { - name: "Version" - input_type: ".google.protobuf.Empty" - output_type: ".containerd.services.version.v1.VersionResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/version/v1;version" - } - weak_dependency: 1 - syntax: "proto3" -} diff --git a/vendor/github.com/containerd/containerd/api/1.2.pb.txt b/vendor/github.com/containerd/containerd/api/1.2.pb.txt deleted file mode 100755 index 288556afaf..0000000000 --- a/vendor/github.com/containerd/containerd/api/1.2.pb.txt +++ /dev/null @@ -1,4205 +0,0 @@ -file { - name: "google/protobuf/any.proto" - package: "google.protobuf" - message_type { - name: "Any" - field { - name: "type_url" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "typeUrl" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "value" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "AnyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/any" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - package: "containerd.plugin" - dependency: "google/protobuf/descriptor.proto" - extension { - name: "fieldpath_all" - extendee: ".google.protobuf.FileOptions" - number: 63300 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpathAll" - } - extension { - name: "fieldpath" - extendee: ".google.protobuf.MessageOptions" - number: 64400 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpath" - } -} -file { - name: "github.com/containerd/containerd/api/events/container.proto" - package: "containerd.events" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContainerCreate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerCreate.Runtime" - json_name: "runtime" - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - } - message_type { - name: "ContainerUpdate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerUpdate.LabelsEntry" - json_name: "labels" - } - field { - name: "snapshot_key" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ContainerDelete" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 1 - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/content.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContentDelete" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/image.proto" - package: "containerd.services.images.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ImageCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/namespace.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "NamespaceCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/snapshot.proto" - package: "containerd.events" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "SnapshotPrepare" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - } - message_type { - name: "SnapshotCommit" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "SnapshotRemove" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/protobuf/timestamp.proto" - package: "google.protobuf" - message_type { - name: "Timestamp" - field { - name: "seconds" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "seconds" - } - field { - name: "nanos" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "nanos" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "TimestampProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/timestamp" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/mount.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Mount" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "source" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "source" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "target" - } - field { - name: "options" - number: 4 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "options" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/task.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "TaskCreate" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "bundle" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "bundle" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "io" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.TaskIO" - options { - 65004: "IO" - } - json_name: "io" - } - field { - name: "checkpoint" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - field { - name: "pid" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskStart" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskDelete" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskIO" - field { - name: "stdin" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - } - message_type { - name: "TaskExit" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskOOM" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskExecAdded" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "TaskExecStarted" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskPaused" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskResumed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskCheckpointed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 3 - syntax: "proto3" -} -file { - name: "google/protobuf/empty.proto" - package: "google.protobuf" - message_type { - name: "Empty" - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "EmptyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/empty" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "google/protobuf/field_mask.proto" - package: "google.protobuf" - message_type { - name: "FieldMask" - field { - name: "paths" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "paths" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "FieldMaskProto" - java_multiple_files: true - go_package: "google.golang.org/genproto/protobuf/field_mask;field_mask" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/containers/v1/containers.proto" - package: "containerd.services.containers.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Container" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.LabelsEntry" - json_name: "labels" - } - field { - name: "image" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.Runtime" - json_name: "runtime" - } - field { - name: "spec" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "snapshotter" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "snapshot_key" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - field { - name: "created_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "extensions" - number: 10 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.ExtensionsEntry" - options { - 65001: 0 - } - json_name: "extensions" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - nested_type { - name: "ExtensionsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "GetContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "ListContainersRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContainersResponse" - field { - name: "containers" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "containers" - } - } - message_type { - name: "CreateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "CreateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "UpdateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "DeleteContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "ListContainerMessage" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - json_name: "container" - } - } - service { - name: "Containers" - method { - name: "Get" - input_type: ".containerd.services.containers.v1.GetContainerRequest" - output_type: ".containerd.services.containers.v1.GetContainerResponse" - } - method { - name: "List" - input_type: ".containerd.services.containers.v1.ListContainersRequest" - output_type: ".containerd.services.containers.v1.ListContainersResponse" - } - method { - name: "ListStream" - input_type: ".containerd.services.containers.v1.ListContainersRequest" - output_type: ".containerd.services.containers.v1.ListContainerMessage" - server_streaming: true - } - method { - name: "Create" - input_type: ".containerd.services.containers.v1.CreateContainerRequest" - output_type: ".containerd.services.containers.v1.CreateContainerResponse" - } - method { - name: "Update" - input_type: ".containerd.services.containers.v1.UpdateContainerRequest" - output_type: ".containerd.services.containers.v1.UpdateContainerResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.containers.v1.DeleteContainerRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/containers/v1;containers" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/content/v1/content.proto" - package: "containerd.services.content.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/empty.proto" - message_type { - name: "Info" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - field { - name: "size" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "created_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "InfoRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - message_type { - name: "InfoResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateRequest" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListContentRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContentResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "DeleteContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - message_type { - name: "ReadContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - field { - name: "offset" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - message_type { - name: "ReadContentResponse" - field { - name: "offset" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - } - message_type { - name: "Status" - field { - name: "started_at" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "ref" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "expected" - } - } - message_type { - name: "StatusRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - message_type { - name: "StatusResponse" - field { - name: "status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - json_name: "status" - } - } - message_type { - name: "ListStatusesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListStatusesResponse" - field { - name: "statuses" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - options { - 65001: 0 - } - json_name: "statuses" - } - } - message_type { - name: "WriteContentRequest" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "ref" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "total" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "expected" - } - field { - name: "offset" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - field { - name: "labels" - number: 7 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.WriteContentRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "WriteContentResponse" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "started_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "digest" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - message_type { - name: "AbortRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - enum_type { - name: "WriteAction" - value { - name: "STAT" - number: 0 - options { - 66001: "WriteActionStat" - } - } - value { - name: "WRITE" - number: 1 - options { - 66001: "WriteActionWrite" - } - } - value { - name: "COMMIT" - number: 2 - options { - 66001: "WriteActionCommit" - } - } - options { - 62001: 0 - 62023: "WriteAction" - } - } - service { - name: "Content" - method { - name: "Info" - input_type: ".containerd.services.content.v1.InfoRequest" - output_type: ".containerd.services.content.v1.InfoResponse" - } - method { - name: "Update" - input_type: ".containerd.services.content.v1.UpdateRequest" - output_type: ".containerd.services.content.v1.UpdateResponse" - } - method { - name: "List" - input_type: ".containerd.services.content.v1.ListContentRequest" - output_type: ".containerd.services.content.v1.ListContentResponse" - server_streaming: true - } - method { - name: "Delete" - input_type: ".containerd.services.content.v1.DeleteContentRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Read" - input_type: ".containerd.services.content.v1.ReadContentRequest" - output_type: ".containerd.services.content.v1.ReadContentResponse" - server_streaming: true - } - method { - name: "Status" - input_type: ".containerd.services.content.v1.StatusRequest" - output_type: ".containerd.services.content.v1.StatusResponse" - } - method { - name: "ListStatuses" - input_type: ".containerd.services.content.v1.ListStatusesRequest" - output_type: ".containerd.services.content.v1.ListStatusesResponse" - } - method { - name: "Write" - input_type: ".containerd.services.content.v1.WriteContentRequest" - output_type: ".containerd.services.content.v1.WriteContentResponse" - client_streaming: true - server_streaming: true - } - method { - name: "Abort" - input_type: ".containerd.services.content.v1.AbortRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/content/v1;content" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/descriptor.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Descriptor" - field { - name: "media_type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "digest" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/diff/v1/diff.proto" - package: "containerd.services.diff.v1" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "ApplyRequest" - field { - name: "diff" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - field { - name: "mounts" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ApplyResponse" - field { - name: "applied" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "applied" - } - } - message_type { - name: "DiffRequest" - field { - name: "left" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "left" - } - field { - name: "right" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "right" - } - field { - name: "media_type" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "ref" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.diff.v1.DiffRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "DiffResponse" - field { - name: "diff" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - } - service { - name: "Diff" - method { - name: "Apply" - input_type: ".containerd.services.diff.v1.ApplyRequest" - output_type: ".containerd.services.diff.v1.ApplyResponse" - } - method { - name: "Diff" - input_type: ".containerd.services.diff.v1.DiffRequest" - output_type: ".containerd.services.diff.v1.DiffResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/diff/v1;diff" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/events/v1/events.proto" - package: "containerd.services.events.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "PublishRequest" - field { - name: "topic" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - } - message_type { - name: "ForwardRequest" - field { - name: "envelope" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.events.v1.Envelope" - json_name: "envelope" - } - } - message_type { - name: "SubscribeRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "Envelope" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "timestamp" - } - field { - name: "namespace" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "namespace" - } - field { - name: "topic" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - options { - 64400: 1 - } - } - service { - name: "Events" - method { - name: "Publish" - input_type: ".containerd.services.events.v1.PublishRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Forward" - input_type: ".containerd.services.events.v1.ForwardRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Subscribe" - input_type: ".containerd.services.events.v1.SubscribeRequest" - output_type: ".containerd.services.events.v1.Envelope" - server_streaming: true - } - } - options { - go_package: "github.com/containerd/containerd/api/services/events/v1;events" - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/images/v1/images.proto" - package: "containerd.services.images.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "Image" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image.LabelsEntry" - json_name: "labels" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - options { - 65001: 0 - } - json_name: "target" - } - field { - name: "created_at" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - json_name: "image" - } - } - message_type { - name: "CreateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "CreateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "UpdateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "ListImagesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListImagesResponse" - field { - name: "images" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "images" - } - } - message_type { - name: "DeleteImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "sync" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "sync" - } - } - service { - name: "Images" - method { - name: "Get" - input_type: ".containerd.services.images.v1.GetImageRequest" - output_type: ".containerd.services.images.v1.GetImageResponse" - } - method { - name: "List" - input_type: ".containerd.services.images.v1.ListImagesRequest" - output_type: ".containerd.services.images.v1.ListImagesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.images.v1.CreateImageRequest" - output_type: ".containerd.services.images.v1.CreateImageResponse" - } - method { - name: "Update" - input_type: ".containerd.services.images.v1.UpdateImageRequest" - output_type: ".containerd.services.images.v1.UpdateImageResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.images.v1.DeleteImageRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/images/v1;images" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/platform.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Platform" - field { - name: "os" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65004: "OS" - } - json_name: "os" - } - field { - name: "architecture" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "architecture" - } - field { - name: "variant" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "variant" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/rpc/status.proto" - package: "google.rpc" - dependency: "google/protobuf/any.proto" - message_type { - name: "Status" - field { - name: "code" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "code" - } - field { - name: "message" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "message" - } - field { - name: "details" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "details" - } - } - options { - java_package: "com.google.rpc" - java_outer_classname: "StatusProto" - java_multiple_files: true - go_package: "rpc" - objc_class_prefix: "RPC" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/introspection/v1/introspection.proto" - package: "containerd.services.introspection.v1" - dependency: "github.com/containerd/containerd/api/types/platform.proto" - dependency: "google/rpc/status.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Plugin" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "requires" - number: 3 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "requires" - } - field { - name: "platforms" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Platform" - options { - 65001: 0 - } - json_name: "platforms" - } - field { - name: "exports" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin.ExportsEntry" - json_name: "exports" - } - field { - name: "capabilities" - number: 6 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "capabilities" - } - field { - name: "init_err" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.rpc.Status" - json_name: "initErr" - } - nested_type { - name: "ExportsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PluginsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "PluginsResponse" - field { - name: "plugins" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin" - options { - 65001: 0 - } - json_name: "plugins" - } - } - service { - name: "Introspection" - method { - name: "Plugins" - input_type: ".containerd.services.introspection.v1.PluginsRequest" - output_type: ".containerd.services.introspection.v1.PluginsResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/introspection/v1;introspection" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/leases/v1/leases.proto" - package: "containerd.services.leases.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Lease" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "created_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.CreateRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateResponse" - field { - name: "lease" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "lease" - } - } - message_type { - name: "DeleteRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "sync" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "sync" - } - } - message_type { - name: "ListRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListResponse" - field { - name: "leases" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "leases" - } - } - service { - name: "Leases" - method { - name: "Create" - input_type: ".containerd.services.leases.v1.CreateRequest" - output_type: ".containerd.services.leases.v1.CreateResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.leases.v1.DeleteRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "List" - input_type: ".containerd.services.leases.v1.ListRequest" - output_type: ".containerd.services.leases.v1.ListResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/leases/v1;leases" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/namespaces/v1/namespace.proto" - package: "containerd.services.namespaces.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - message_type { - name: "Namespace" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "ListNamespacesRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListNamespacesResponse" - field { - name: "namespaces" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespaces" - } - } - message_type { - name: "CreateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "CreateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "UpdateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "DeleteNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - service { - name: "Namespaces" - method { - name: "Get" - input_type: ".containerd.services.namespaces.v1.GetNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.GetNamespaceResponse" - } - method { - name: "List" - input_type: ".containerd.services.namespaces.v1.ListNamespacesRequest" - output_type: ".containerd.services.namespaces.v1.ListNamespacesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.namespaces.v1.CreateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.CreateNamespaceResponse" - } - method { - name: "Update" - input_type: ".containerd.services.namespaces.v1.UpdateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.UpdateNamespaceResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.namespaces.v1.DeleteNamespaceRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/namespaces/v1;namespaces" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/snapshots/v1/snapshots.proto" - package: "containerd.services.snapshots.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - message_type { - name: "PrepareSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.PrepareSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PrepareSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ViewSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.ViewSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ViewSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "MountsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "MountsResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "RemoveSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "CommitSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "key" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.CommitSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "Info" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "kind" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.snapshots.v1.Kind" - json_name: "kind" - } - field { - name: "created_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 6 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListSnapshotsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - } - message_type { - name: "ListSnapshotsResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UsageRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "UsageResponse" - field { - name: "size" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "inodes" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "inodes" - } - } - enum_type { - name: "Kind" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "KindUnknown" - } - } - value { - name: "VIEW" - number: 1 - options { - 66001: "KindView" - } - } - value { - name: "ACTIVE" - number: 2 - options { - 66001: "KindActive" - } - } - value { - name: "COMMITTED" - number: 3 - options { - 66001: "KindCommitted" - } - } - options { - 62001: 0 - 62023: "Kind" - } - } - service { - name: "Snapshots" - method { - name: "Prepare" - input_type: ".containerd.services.snapshots.v1.PrepareSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.PrepareSnapshotResponse" - } - method { - name: "View" - input_type: ".containerd.services.snapshots.v1.ViewSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.ViewSnapshotResponse" - } - method { - name: "Mounts" - input_type: ".containerd.services.snapshots.v1.MountsRequest" - output_type: ".containerd.services.snapshots.v1.MountsResponse" - } - method { - name: "Commit" - input_type: ".containerd.services.snapshots.v1.CommitSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Remove" - input_type: ".containerd.services.snapshots.v1.RemoveSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Stat" - input_type: ".containerd.services.snapshots.v1.StatSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.StatSnapshotResponse" - } - method { - name: "Update" - input_type: ".containerd.services.snapshots.v1.UpdateSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.UpdateSnapshotResponse" - } - method { - name: "List" - input_type: ".containerd.services.snapshots.v1.ListSnapshotsRequest" - output_type: ".containerd.services.snapshots.v1.ListSnapshotsResponse" - server_streaming: true - } - method { - name: "Usage" - input_type: ".containerd.services.snapshots.v1.UsageRequest" - output_type: ".containerd.services.snapshots.v1.UsageResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/snapshots/v1;snapshots" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/metrics.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Metric" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "timestamp" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "data" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "data" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/task/task.proto" - package: "containerd.v1.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/any.proto" - message_type { - name: "Process" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.v1.types.Status" - json_name: "status" - } - field { - name: "stdin" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "exit_status" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 10 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "ProcessInfo" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "info" - } - } - enum_type { - name: "Status" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "StatusUnknown" - } - } - value { - name: "CREATED" - number: 1 - options { - 66001: "StatusCreated" - } - } - value { - name: "RUNNING" - number: 2 - options { - 66001: "StatusRunning" - } - } - value { - name: "STOPPED" - number: 3 - options { - 66001: "StatusStopped" - } - } - value { - name: "PAUSED" - number: 4 - options { - 66001: "StatusPaused" - } - } - value { - name: "PAUSING" - number: 5 - options { - 66001: "StatusPausing" - } - } - options { - 62001: 0 - 62023: "Status" - } - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/tasks/v1/tasks.proto" - package: "containerd.services.tasks.v1" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/metrics.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - dependency: "github.com/containerd/containerd/api/types/task/task.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "CreateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "stdin" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "checkpoint" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "checkpoint" - } - field { - name: "options" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CreateTaskResponse" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "StartRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "StartResponse" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "DeleteTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "DeleteResponse" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "DeleteProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetResponse" - field { - name: "process" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "process" - } - } - message_type { - name: "ListTasksRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListTasksResponse" - field { - name: "tasks" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "tasks" - } - } - message_type { - name: "KillRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "signal" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "signal" - } - field { - name: "all" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "all" - } - } - message_type { - name: "ExecProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "stdin" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "spec" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "exec_id" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "ExecProcessResponse" - } - message_type { - name: "ResizePtyRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "width" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "width" - } - field { - name: "height" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "height" - } - } - message_type { - name: "CloseIORequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "stdin" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "stdin" - } - } - message_type { - name: "PauseTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ResumeTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsResponse" - field { - name: "processes" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.ProcessInfo" - json_name: "processes" - } - } - message_type { - name: "CheckpointTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "parent_checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "parentCheckpoint" - } - field { - name: "options" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CheckpointTaskResponse" - field { - name: "descriptors" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "descriptors" - } - } - message_type { - name: "UpdateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "resources" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "resources" - } - } - message_type { - name: "MetricsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "MetricsResponse" - field { - name: "metrics" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Metric" - json_name: "metrics" - } - } - message_type { - name: "WaitRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "WaitResponse" - field { - name: "exit_status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - service { - name: "Tasks" - method { - name: "Create" - input_type: ".containerd.services.tasks.v1.CreateTaskRequest" - output_type: ".containerd.services.tasks.v1.CreateTaskResponse" - } - method { - name: "Start" - input_type: ".containerd.services.tasks.v1.StartRequest" - output_type: ".containerd.services.tasks.v1.StartResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.tasks.v1.DeleteTaskRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "DeleteProcess" - input_type: ".containerd.services.tasks.v1.DeleteProcessRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "Get" - input_type: ".containerd.services.tasks.v1.GetRequest" - output_type: ".containerd.services.tasks.v1.GetResponse" - } - method { - name: "List" - input_type: ".containerd.services.tasks.v1.ListTasksRequest" - output_type: ".containerd.services.tasks.v1.ListTasksResponse" - } - method { - name: "Kill" - input_type: ".containerd.services.tasks.v1.KillRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Exec" - input_type: ".containerd.services.tasks.v1.ExecProcessRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ResizePty" - input_type: ".containerd.services.tasks.v1.ResizePtyRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "CloseIO" - input_type: ".containerd.services.tasks.v1.CloseIORequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Pause" - input_type: ".containerd.services.tasks.v1.PauseTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Resume" - input_type: ".containerd.services.tasks.v1.ResumeTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ListPids" - input_type: ".containerd.services.tasks.v1.ListPidsRequest" - output_type: ".containerd.services.tasks.v1.ListPidsResponse" - } - method { - name: "Checkpoint" - input_type: ".containerd.services.tasks.v1.CheckpointTaskRequest" - output_type: ".containerd.services.tasks.v1.CheckpointTaskResponse" - } - method { - name: "Update" - input_type: ".containerd.services.tasks.v1.UpdateTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Metrics" - input_type: ".containerd.services.tasks.v1.MetricsRequest" - output_type: ".containerd.services.tasks.v1.MetricsResponse" - } - method { - name: "Wait" - input_type: ".containerd.services.tasks.v1.WaitRequest" - output_type: ".containerd.services.tasks.v1.WaitResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/tasks/v1;tasks" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/version/v1/version.proto" - package: "containerd.services.version.v1" - dependency: "google/protobuf/empty.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "VersionResponse" - field { - name: "version" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "version" - } - field { - name: "revision" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "revision" - } - } - service { - name: "Version" - method { - name: "Version" - input_type: ".google.protobuf.Empty" - output_type: ".containerd.services.version.v1.VersionResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/version/v1;version" - } - weak_dependency: 1 - syntax: "proto3" -} diff --git a/vendor/github.com/containerd/containerd/api/README.md b/vendor/github.com/containerd/containerd/api/README.md deleted file mode 100644 index f6eb28c6a5..0000000000 --- a/vendor/github.com/containerd/containerd/api/README.md +++ /dev/null @@ -1,18 +0,0 @@ -This directory contains the GRPC API definitions for containerd. - -All defined services and messages have been aggregated into `*.pb.txt` -descriptors files in this directory. Definitions present here are considered -frozen after the release. - -At release time, the current `next.pb.txt` file will be moved into place to -freeze the API changes for the minor version. For example, when 1.0.0 is -released, `next.pb.txt` should be moved to `1.0.txt`. Notice that we leave off -the patch number, since the API will be completely locked down for a given -patch series. - -We may find that by default, protobuf descriptors are too noisy to lock down -API changes. In that case, we may filter out certain fields in the descriptors, -possibly regenerating for old versions. - -This process is similar to the [process used to ensure backwards compatibility -in Go](https://github.com/golang/go/tree/master/api). diff --git a/vendor/github.com/containerd/containerd/api/next.pb.txt b/vendor/github.com/containerd/containerd/api/next.pb.txt deleted file mode 100755 index b5eed3949b..0000000000 --- a/vendor/github.com/containerd/containerd/api/next.pb.txt +++ /dev/null @@ -1,4233 +0,0 @@ -file { - name: "google/protobuf/any.proto" - package: "google.protobuf" - message_type { - name: "Any" - field { - name: "type_url" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "typeUrl" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "value" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "AnyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/any" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - package: "containerd.plugin" - dependency: "google/protobuf/descriptor.proto" - extension { - name: "fieldpath_all" - extendee: ".google.protobuf.FileOptions" - number: 63300 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpathAll" - } - extension { - name: "fieldpath" - extendee: ".google.protobuf.MessageOptions" - number: 64400 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "fieldpath" - } -} -file { - name: "github.com/containerd/containerd/api/events/container.proto" - package: "containerd.events" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContainerCreate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerCreate.Runtime" - json_name: "runtime" - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - } - message_type { - name: "ContainerUpdate" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "image" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.ContainerUpdate.LabelsEntry" - json_name: "labels" - } - field { - name: "snapshot_key" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ContainerDelete" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 1 - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/content.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ContentDelete" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/image.proto" - package: "containerd.services.images.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "ImageCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.ImageUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ImageDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/namespace.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "NamespaceCreate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceCreate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceUpdate" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.events.NamespaceUpdate.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "NamespaceDelete" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/snapshot.proto" - package: "containerd.events" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "SnapshotPrepare" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - } - message_type { - name: "SnapshotCommit" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "SnapshotRemove" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/protobuf/timestamp.proto" - package: "google.protobuf" - message_type { - name: "Timestamp" - field { - name: "seconds" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "seconds" - } - field { - name: "nanos" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "nanos" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "TimestampProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/timestamp" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/mount.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Mount" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "source" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "source" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "target" - } - field { - name: "options" - number: 4 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "options" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/events/task.proto" - package: "containerd.events" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - message_type { - name: "TaskCreate" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "bundle" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "bundle" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "io" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.events.TaskIO" - options { - 65004: "IO" - } - json_name: "io" - } - field { - name: "checkpoint" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - field { - name: "pid" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskStart" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskDelete" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskIO" - field { - name: "stdin" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - } - message_type { - name: "TaskExit" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "TaskOOM" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskExecAdded" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "TaskExecStarted" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "TaskPaused" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskResumed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "TaskCheckpointed" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "checkpoint" - } - } - options { - go_package: "github.com/containerd/containerd/api/events;events" - 63300: 1 - } - weak_dependency: 0 - weak_dependency: 3 - syntax: "proto3" -} -file { - name: "google/protobuf/empty.proto" - package: "google.protobuf" - message_type { - name: "Empty" - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "EmptyProto" - java_multiple_files: true - go_package: "github.com/golang/protobuf/ptypes/empty" - cc_enable_arenas: true - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "google/protobuf/field_mask.proto" - package: "google.protobuf" - message_type { - name: "FieldMask" - field { - name: "paths" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "paths" - } - } - options { - java_package: "com.google.protobuf" - java_outer_classname: "FieldMaskProto" - java_multiple_files: true - go_package: "google.golang.org/genproto/protobuf/field_mask;field_mask" - objc_class_prefix: "GPB" - csharp_namespace: "Google.Protobuf.WellKnownTypes" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/containers/v1/containers.proto" - package: "containerd.services.containers.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Container" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.LabelsEntry" - json_name: "labels" - } - field { - name: "image" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "image" - } - field { - name: "runtime" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.Runtime" - json_name: "runtime" - } - field { - name: "spec" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "snapshotter" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "snapshot_key" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotKey" - } - field { - name: "created_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "extensions" - number: 10 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container.ExtensionsEntry" - options { - 65001: 0 - } - json_name: "extensions" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - nested_type { - name: "Runtime" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "options" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - nested_type { - name: "ExtensionsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "GetContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "ListContainersRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContainersResponse" - field { - name: "containers" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "containers" - } - } - message_type { - name: "CreateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "CreateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "UpdateContainerRequest" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateContainerResponse" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - options { - 65001: 0 - } - json_name: "container" - } - } - message_type { - name: "DeleteContainerRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - } - message_type { - name: "ListContainerMessage" - field { - name: "container" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.containers.v1.Container" - json_name: "container" - } - } - service { - name: "Containers" - method { - name: "Get" - input_type: ".containerd.services.containers.v1.GetContainerRequest" - output_type: ".containerd.services.containers.v1.GetContainerResponse" - } - method { - name: "List" - input_type: ".containerd.services.containers.v1.ListContainersRequest" - output_type: ".containerd.services.containers.v1.ListContainersResponse" - } - method { - name: "ListStream" - input_type: ".containerd.services.containers.v1.ListContainersRequest" - output_type: ".containerd.services.containers.v1.ListContainerMessage" - server_streaming: true - } - method { - name: "Create" - input_type: ".containerd.services.containers.v1.CreateContainerRequest" - output_type: ".containerd.services.containers.v1.CreateContainerResponse" - } - method { - name: "Update" - input_type: ".containerd.services.containers.v1.UpdateContainerRequest" - output_type: ".containerd.services.containers.v1.UpdateContainerResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.containers.v1.DeleteContainerRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/containers/v1;containers" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/content/v1/content.proto" - package: "containerd.services.content.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/empty.proto" - message_type { - name: "Info" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - field { - name: "size" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "created_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "InfoRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - message_type { - name: "InfoResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateRequest" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListContentRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListContentResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "DeleteContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - message_type { - name: "ReadContentRequest" - field { - name: "digest" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - field { - name: "offset" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - } - message_type { - name: "ReadContentResponse" - field { - name: "offset" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - } - message_type { - name: "Status" - field { - name: "started_at" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "ref" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "expected" - } - } - message_type { - name: "StatusRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - message_type { - name: "StatusResponse" - field { - name: "status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - json_name: "status" - } - } - message_type { - name: "ListStatusesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListStatusesResponse" - field { - name: "statuses" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.Status" - options { - 65001: 0 - } - json_name: "statuses" - } - } - message_type { - name: "WriteContentRequest" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "ref" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "total" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "expected" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "expected" - } - field { - name: "offset" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "data" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_BYTES - json_name: "data" - } - field { - name: "labels" - number: 7 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.content.v1.WriteContentRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "WriteContentResponse" - field { - name: "action" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.content.v1.WriteAction" - json_name: "action" - } - field { - name: "started_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "startedAt" - } - field { - name: "updated_at" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "offset" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "offset" - } - field { - name: "total" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "total" - } - field { - name: "digest" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - } - message_type { - name: "AbortRequest" - field { - name: "ref" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - } - enum_type { - name: "WriteAction" - value { - name: "STAT" - number: 0 - options { - 66001: "WriteActionStat" - } - } - value { - name: "WRITE" - number: 1 - options { - 66001: "WriteActionWrite" - } - } - value { - name: "COMMIT" - number: 2 - options { - 66001: "WriteActionCommit" - } - } - options { - 62001: 0 - 62023: "WriteAction" - } - } - service { - name: "Content" - method { - name: "Info" - input_type: ".containerd.services.content.v1.InfoRequest" - output_type: ".containerd.services.content.v1.InfoResponse" - } - method { - name: "Update" - input_type: ".containerd.services.content.v1.UpdateRequest" - output_type: ".containerd.services.content.v1.UpdateResponse" - } - method { - name: "List" - input_type: ".containerd.services.content.v1.ListContentRequest" - output_type: ".containerd.services.content.v1.ListContentResponse" - server_streaming: true - } - method { - name: "Delete" - input_type: ".containerd.services.content.v1.DeleteContentRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Read" - input_type: ".containerd.services.content.v1.ReadContentRequest" - output_type: ".containerd.services.content.v1.ReadContentResponse" - server_streaming: true - } - method { - name: "Status" - input_type: ".containerd.services.content.v1.StatusRequest" - output_type: ".containerd.services.content.v1.StatusResponse" - } - method { - name: "ListStatuses" - input_type: ".containerd.services.content.v1.ListStatusesRequest" - output_type: ".containerd.services.content.v1.ListStatusesResponse" - } - method { - name: "Write" - input_type: ".containerd.services.content.v1.WriteContentRequest" - output_type: ".containerd.services.content.v1.WriteContentResponse" - client_streaming: true - server_streaming: true - } - method { - name: "Abort" - input_type: ".containerd.services.content.v1.AbortRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/content/v1;content" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/descriptor.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Descriptor" - field { - name: "media_type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "digest" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "digest" - } - field { - name: "size" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "annotations" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor.AnnotationsEntry" - json_name: "annotations" - } - nested_type { - name: "AnnotationsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/diff/v1/diff.proto" - package: "containerd.services.diff.v1" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "ApplyRequest" - field { - name: "diff" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - field { - name: "mounts" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ApplyResponse" - field { - name: "applied" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "applied" - } - } - message_type { - name: "DiffRequest" - field { - name: "left" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "left" - } - field { - name: "right" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "right" - } - field { - name: "media_type" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "mediaType" - } - field { - name: "ref" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "ref" - } - field { - name: "labels" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.diff.v1.DiffRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "DiffResponse" - field { - name: "diff" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "diff" - } - } - service { - name: "Diff" - method { - name: "Apply" - input_type: ".containerd.services.diff.v1.ApplyRequest" - output_type: ".containerd.services.diff.v1.ApplyResponse" - } - method { - name: "Diff" - input_type: ".containerd.services.diff.v1.DiffRequest" - output_type: ".containerd.services.diff.v1.DiffResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/diff/v1;diff" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/events/v1/events.proto" - package: "containerd.services.events.v1" - dependency: "github.com/containerd/containerd/protobuf/plugin/fieldpath.proto" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "PublishRequest" - field { - name: "topic" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - } - message_type { - name: "ForwardRequest" - field { - name: "envelope" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.events.v1.Envelope" - json_name: "envelope" - } - } - message_type { - name: "SubscribeRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "Envelope" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "timestamp" - } - field { - name: "namespace" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "namespace" - } - field { - name: "topic" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "topic" - } - field { - name: "event" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "event" - } - options { - 64400: 1 - } - } - service { - name: "Events" - method { - name: "Publish" - input_type: ".containerd.services.events.v1.PublishRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Forward" - input_type: ".containerd.services.events.v1.ForwardRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Subscribe" - input_type: ".containerd.services.events.v1.SubscribeRequest" - output_type: ".containerd.services.events.v1.Envelope" - server_streaming: true - } - } - options { - go_package: "github.com/containerd/containerd/api/services/events/v1;events" - } - weak_dependency: 0 - weak_dependency: 1 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/images/v1/images.proto" - package: "containerd.services.images.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - message_type { - name: "Image" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image.LabelsEntry" - json_name: "labels" - } - field { - name: "target" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - options { - 65001: 0 - } - json_name: "target" - } - field { - name: "created_at" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - json_name: "image" - } - } - message_type { - name: "CreateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "CreateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "UpdateImageRequest" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateImageResponse" - field { - name: "image" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "image" - } - } - message_type { - name: "ListImagesRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListImagesResponse" - field { - name: "images" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.images.v1.Image" - options { - 65001: 0 - } - json_name: "images" - } - } - message_type { - name: "DeleteImageRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "sync" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "sync" - } - } - service { - name: "Images" - method { - name: "Get" - input_type: ".containerd.services.images.v1.GetImageRequest" - output_type: ".containerd.services.images.v1.GetImageResponse" - } - method { - name: "List" - input_type: ".containerd.services.images.v1.ListImagesRequest" - output_type: ".containerd.services.images.v1.ListImagesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.images.v1.CreateImageRequest" - output_type: ".containerd.services.images.v1.CreateImageResponse" - } - method { - name: "Update" - input_type: ".containerd.services.images.v1.UpdateImageRequest" - output_type: ".containerd.services.images.v1.UpdateImageResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.images.v1.DeleteImageRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/images/v1;images" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/platform.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Platform" - field { - name: "os" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65004: "OS" - } - json_name: "os" - } - field { - name: "architecture" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "architecture" - } - field { - name: "variant" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "variant" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "google/rpc/status.proto" - package: "google.rpc" - dependency: "google/protobuf/any.proto" - message_type { - name: "Status" - field { - name: "code" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT32 - json_name: "code" - } - field { - name: "message" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "message" - } - field { - name: "details" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "details" - } - } - options { - java_package: "com.google.rpc" - java_outer_classname: "StatusProto" - java_multiple_files: true - go_package: "rpc" - objc_class_prefix: "RPC" - } - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/introspection/v1/introspection.proto" - package: "containerd.services.introspection.v1" - dependency: "github.com/containerd/containerd/api/types/platform.proto" - dependency: "google/rpc/status.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "Plugin" - field { - name: "type" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "type" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "requires" - number: 3 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "requires" - } - field { - name: "platforms" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Platform" - options { - 65001: 0 - } - json_name: "platforms" - } - field { - name: "exports" - number: 5 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin.ExportsEntry" - json_name: "exports" - } - field { - name: "capabilities" - number: 6 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "capabilities" - } - field { - name: "init_err" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.rpc.Status" - json_name: "initErr" - } - nested_type { - name: "ExportsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PluginsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "PluginsResponse" - field { - name: "plugins" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.introspection.v1.Plugin" - options { - 65001: 0 - } - json_name: "plugins" - } - } - service { - name: "Introspection" - method { - name: "Plugins" - input_type: ".containerd.services.introspection.v1.PluginsRequest" - output_type: ".containerd.services.introspection.v1.PluginsResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/introspection/v1;introspection" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/leases/v1/leases.proto" - package: "containerd.services.leases.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Lease" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "created_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "labels" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.CreateRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "CreateResponse" - field { - name: "lease" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "lease" - } - } - message_type { - name: "DeleteRequest" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "sync" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "sync" - } - } - message_type { - name: "ListRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "ListResponse" - field { - name: "leases" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.leases.v1.Lease" - json_name: "leases" - } - } - service { - name: "Leases" - method { - name: "Create" - input_type: ".containerd.services.leases.v1.CreateRequest" - output_type: ".containerd.services.leases.v1.CreateResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.leases.v1.DeleteRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "List" - input_type: ".containerd.services.leases.v1.ListRequest" - output_type: ".containerd.services.leases.v1.ListResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/leases/v1;leases" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/namespaces/v1/namespace.proto" - package: "containerd.services.namespaces.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - message_type { - name: "Namespace" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "labels" - number: 2 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "GetNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - message_type { - name: "GetNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "ListNamespacesRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListNamespacesResponse" - field { - name: "namespaces" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespaces" - } - } - message_type { - name: "CreateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "CreateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "UpdateNamespaceRequest" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - field { - name: "update_mask" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateNamespaceResponse" - field { - name: "namespace" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.namespaces.v1.Namespace" - options { - 65001: 0 - } - json_name: "namespace" - } - } - message_type { - name: "DeleteNamespaceRequest" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - } - service { - name: "Namespaces" - method { - name: "Get" - input_type: ".containerd.services.namespaces.v1.GetNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.GetNamespaceResponse" - } - method { - name: "List" - input_type: ".containerd.services.namespaces.v1.ListNamespacesRequest" - output_type: ".containerd.services.namespaces.v1.ListNamespacesResponse" - } - method { - name: "Create" - input_type: ".containerd.services.namespaces.v1.CreateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.CreateNamespaceResponse" - } - method { - name: "Update" - input_type: ".containerd.services.namespaces.v1.UpdateNamespaceRequest" - output_type: ".containerd.services.namespaces.v1.UpdateNamespaceResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.namespaces.v1.DeleteNamespaceRequest" - output_type: ".google.protobuf.Empty" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/namespaces/v1;namespaces" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/snapshots/v1/snapshots.proto" - package: "containerd.services.snapshots.v1" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/field_mask.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - message_type { - name: "PrepareSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.PrepareSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "PrepareSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "ViewSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "parent" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.ViewSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "ViewSnapshotResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "MountsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "MountsResponse" - field { - name: "mounts" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "mounts" - } - } - message_type { - name: "RemoveSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "CommitSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "name" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "key" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "labels" - number: 4 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.CommitSnapshotRequest.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "Info" - field { - name: "name" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "name" - } - field { - name: "parent" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "parent" - } - field { - name: "kind" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.services.snapshots.v1.Kind" - json_name: "kind" - } - field { - name: "created_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "createdAt" - } - field { - name: "updated_at" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "updatedAt" - } - field { - name: "labels" - number: 6 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info.LabelsEntry" - json_name: "labels" - } - nested_type { - name: "LabelsEntry" - field { - name: "key" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - field { - name: "value" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "value" - } - options { - map_entry: true - } - } - } - message_type { - name: "StatSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UpdateSnapshotRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - field { - name: "update_mask" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.FieldMask" - json_name: "updateMask" - } - } - message_type { - name: "UpdateSnapshotResponse" - field { - name: "info" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "ListSnapshotsRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - } - message_type { - name: "ListSnapshotsResponse" - field { - name: "info" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.services.snapshots.v1.Info" - options { - 65001: 0 - } - json_name: "info" - } - } - message_type { - name: "UsageRequest" - field { - name: "snapshotter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "snapshotter" - } - field { - name: "key" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "key" - } - } - message_type { - name: "UsageResponse" - field { - name: "size" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "size" - } - field { - name: "inodes" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_INT64 - json_name: "inodes" - } - } - enum_type { - name: "Kind" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "KindUnknown" - } - } - value { - name: "VIEW" - number: 1 - options { - 66001: "KindView" - } - } - value { - name: "ACTIVE" - number: 2 - options { - 66001: "KindActive" - } - } - value { - name: "COMMITTED" - number: 3 - options { - 66001: "KindCommitted" - } - } - options { - 62001: 0 - 62023: "Kind" - } - } - service { - name: "Snapshots" - method { - name: "Prepare" - input_type: ".containerd.services.snapshots.v1.PrepareSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.PrepareSnapshotResponse" - } - method { - name: "View" - input_type: ".containerd.services.snapshots.v1.ViewSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.ViewSnapshotResponse" - } - method { - name: "Mounts" - input_type: ".containerd.services.snapshots.v1.MountsRequest" - output_type: ".containerd.services.snapshots.v1.MountsResponse" - } - method { - name: "Commit" - input_type: ".containerd.services.snapshots.v1.CommitSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Remove" - input_type: ".containerd.services.snapshots.v1.RemoveSnapshotRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Stat" - input_type: ".containerd.services.snapshots.v1.StatSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.StatSnapshotResponse" - } - method { - name: "Update" - input_type: ".containerd.services.snapshots.v1.UpdateSnapshotRequest" - output_type: ".containerd.services.snapshots.v1.UpdateSnapshotResponse" - } - method { - name: "List" - input_type: ".containerd.services.snapshots.v1.ListSnapshotsRequest" - output_type: ".containerd.services.snapshots.v1.ListSnapshotsResponse" - server_streaming: true - } - method { - name: "Usage" - input_type: ".containerd.services.snapshots.v1.UsageRequest" - output_type: ".containerd.services.snapshots.v1.UsageResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/snapshots/v1;snapshots" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/metrics.proto" - package: "containerd.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/any.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "Metric" - field { - name: "timestamp" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "timestamp" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "data" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "data" - } - } - options { - go_package: "github.com/containerd/containerd/api/types;types" - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/types/task/task.proto" - package: "containerd.v1.types" - dependency: "gogoproto/gogo.proto" - dependency: "google/protobuf/timestamp.proto" - dependency: "google/protobuf/any.proto" - message_type { - name: "Process" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "status" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_ENUM - type_name: ".containerd.v1.types.Status" - json_name: "status" - } - field { - name: "stdin" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "exit_status" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 10 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "ProcessInfo" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "info" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "info" - } - } - enum_type { - name: "Status" - value { - name: "UNKNOWN" - number: 0 - options { - 66001: "StatusUnknown" - } - } - value { - name: "CREATED" - number: 1 - options { - 66001: "StatusCreated" - } - } - value { - name: "RUNNING" - number: 2 - options { - 66001: "StatusRunning" - } - } - value { - name: "STOPPED" - number: 3 - options { - 66001: "StatusStopped" - } - } - value { - name: "PAUSED" - number: 4 - options { - 66001: "StatusPaused" - } - } - value { - name: "PAUSING" - number: 5 - options { - 66001: "StatusPausing" - } - } - options { - 62001: 0 - 62023: "Status" - } - } - weak_dependency: 0 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/tasks/v1/tasks.proto" - package: "containerd.services.tasks.v1" - dependency: "google/protobuf/empty.proto" - dependency: "google/protobuf/any.proto" - dependency: "gogoproto/gogo.proto" - dependency: "github.com/containerd/containerd/api/types/mount.proto" - dependency: "github.com/containerd/containerd/api/types/metrics.proto" - dependency: "github.com/containerd/containerd/api/types/descriptor.proto" - dependency: "github.com/containerd/containerd/api/types/task/task.proto" - dependency: "google/protobuf/timestamp.proto" - message_type { - name: "CreateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "rootfs" - number: 3 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Mount" - json_name: "rootfs" - } - field { - name: "stdin" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "checkpoint" - number: 8 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "checkpoint" - } - field { - name: "options" - number: 9 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CreateTaskResponse" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "StartRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "StartResponse" - field { - name: "pid" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - } - message_type { - name: "DeleteTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "DeleteResponse" - field { - name: "id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "id" - } - field { - name: "pid" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "pid" - } - field { - name: "exit_status" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - message_type { - name: "DeleteProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "GetResponse" - field { - name: "process" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "process" - } - } - message_type { - name: "ListTasksRequest" - field { - name: "filter" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "filter" - } - } - message_type { - name: "ListTasksResponse" - field { - name: "tasks" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.Process" - json_name: "tasks" - } - } - message_type { - name: "KillRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "signal" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "signal" - } - field { - name: "all" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "all" - } - } - message_type { - name: "ExecProcessRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "stdin" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdin" - } - field { - name: "stdout" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stdout" - } - field { - name: "stderr" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "stderr" - } - field { - name: "terminal" - number: 5 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "terminal" - } - field { - name: "spec" - number: 6 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "spec" - } - field { - name: "exec_id" - number: 7 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "ExecProcessResponse" - } - message_type { - name: "ResizePtyRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "width" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "width" - } - field { - name: "height" - number: 4 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "height" - } - } - message_type { - name: "CloseIORequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - field { - name: "stdin" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_BOOL - json_name: "stdin" - } - } - message_type { - name: "PauseTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ResumeTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - } - message_type { - name: "ListPidsResponse" - field { - name: "processes" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.v1.types.ProcessInfo" - json_name: "processes" - } - } - message_type { - name: "CheckpointTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "parent_checkpoint" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - options { - 65001: 0 - 65003: "github.com/opencontainers/go-digest.Digest" - } - json_name: "parentCheckpoint" - } - field { - name: "options" - number: 3 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "options" - } - } - message_type { - name: "CheckpointTaskResponse" - field { - name: "descriptors" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Descriptor" - json_name: "descriptors" - } - } - message_type { - name: "UpdateTaskRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "resources" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Any" - json_name: "resources" - } - } - message_type { - name: "MetricsRequest" - field { - name: "filters" - number: 1 - label: LABEL_REPEATED - type: TYPE_STRING - json_name: "filters" - } - } - message_type { - name: "MetricsResponse" - field { - name: "metrics" - number: 1 - label: LABEL_REPEATED - type: TYPE_MESSAGE - type_name: ".containerd.types.Metric" - json_name: "metrics" - } - } - message_type { - name: "WaitRequest" - field { - name: "container_id" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "containerId" - } - field { - name: "exec_id" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "execId" - } - } - message_type { - name: "WaitResponse" - field { - name: "exit_status" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_UINT32 - json_name: "exitStatus" - } - field { - name: "exited_at" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_MESSAGE - type_name: ".google.protobuf.Timestamp" - options { - 65001: 0 - 65010: 1 - } - json_name: "exitedAt" - } - } - service { - name: "Tasks" - method { - name: "Create" - input_type: ".containerd.services.tasks.v1.CreateTaskRequest" - output_type: ".containerd.services.tasks.v1.CreateTaskResponse" - } - method { - name: "Start" - input_type: ".containerd.services.tasks.v1.StartRequest" - output_type: ".containerd.services.tasks.v1.StartResponse" - } - method { - name: "Delete" - input_type: ".containerd.services.tasks.v1.DeleteTaskRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "DeleteProcess" - input_type: ".containerd.services.tasks.v1.DeleteProcessRequest" - output_type: ".containerd.services.tasks.v1.DeleteResponse" - } - method { - name: "Get" - input_type: ".containerd.services.tasks.v1.GetRequest" - output_type: ".containerd.services.tasks.v1.GetResponse" - } - method { - name: "List" - input_type: ".containerd.services.tasks.v1.ListTasksRequest" - output_type: ".containerd.services.tasks.v1.ListTasksResponse" - } - method { - name: "Kill" - input_type: ".containerd.services.tasks.v1.KillRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Exec" - input_type: ".containerd.services.tasks.v1.ExecProcessRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ResizePty" - input_type: ".containerd.services.tasks.v1.ResizePtyRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "CloseIO" - input_type: ".containerd.services.tasks.v1.CloseIORequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Pause" - input_type: ".containerd.services.tasks.v1.PauseTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Resume" - input_type: ".containerd.services.tasks.v1.ResumeTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "ListPids" - input_type: ".containerd.services.tasks.v1.ListPidsRequest" - output_type: ".containerd.services.tasks.v1.ListPidsResponse" - } - method { - name: "Checkpoint" - input_type: ".containerd.services.tasks.v1.CheckpointTaskRequest" - output_type: ".containerd.services.tasks.v1.CheckpointTaskResponse" - } - method { - name: "Update" - input_type: ".containerd.services.tasks.v1.UpdateTaskRequest" - output_type: ".google.protobuf.Empty" - } - method { - name: "Metrics" - input_type: ".containerd.services.tasks.v1.MetricsRequest" - output_type: ".containerd.services.tasks.v1.MetricsResponse" - } - method { - name: "Wait" - input_type: ".containerd.services.tasks.v1.WaitRequest" - output_type: ".containerd.services.tasks.v1.WaitResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/tasks/v1;tasks" - } - weak_dependency: 2 - syntax: "proto3" -} -file { - name: "github.com/containerd/containerd/api/services/version/v1/version.proto" - package: "containerd.services.version.v1" - dependency: "google/protobuf/empty.proto" - dependency: "gogoproto/gogo.proto" - message_type { - name: "VersionResponse" - field { - name: "version" - number: 1 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "version" - } - field { - name: "revision" - number: 2 - label: LABEL_OPTIONAL - type: TYPE_STRING - json_name: "revision" - } - } - service { - name: "Version" - method { - name: "Version" - input_type: ".google.protobuf.Empty" - output_type: ".containerd.services.version.v1.VersionResponse" - } - } - options { - go_package: "github.com/containerd/containerd/api/services/version/v1;version" - } - weak_dependency: 1 - syntax: "proto3" -} diff --git a/vendor/github.com/containerd/containerd/contrib/Dockerfile.test b/vendor/github.com/containerd/containerd/contrib/Dockerfile.test deleted file mode 100644 index 900fa1babf..0000000000 --- a/vendor/github.com/containerd/containerd/contrib/Dockerfile.test +++ /dev/null @@ -1,53 +0,0 @@ -# This dockerfile is used to test containerd within a container -# -# usage: -# 1.) docker build -t containerd-test -f Dockerfile.test ../ -# 2.) docker run -it --privileged -v /tmp:/tmp --tmpfs /var/lib/containerd-test containerd-test bash -# 3.) $ make binaries install test -# - -ARG GOLANG_VERSION=1.12 - -FROM golang:${GOLANG_VERSION} AS golang-base -RUN mkdir -p /go/src/github.com/containerd/containerd -WORKDIR /go/src/github.com/containerd/containerd - -# Install proto3 -FROM golang-base AS proto3 -RUN apt-get update && apt-get install -y \ - autoconf \ - automake \ - g++ \ - libtool \ - unzip \ - --no-install-recommends - -COPY script/setup/install-protobuf install-protobuf -RUN ./install-protobuf - -# Install runc -FROM golang-base AS runc -RUN apt-get update && apt-get install -y \ - curl \ - libseccomp-dev \ - --no-install-recommends - -COPY vendor.conf vendor.conf -COPY script/setup/install-runc install-runc -RUN ./install-runc - -FROM golang-base AS dev -RUN apt-get update && apt-get install -y \ - btrfs-tools \ - gcc \ - git \ - libseccomp-dev \ - make \ - xfsprogs \ - --no-install-recommends - -COPY --from=proto3 /usr/local/bin/protoc /usr/local/bin/protoc -COPY --from=proto3 /usr/local/include/google /usr/local/include/google -COPY --from=runc /usr/local/sbin/runc /usr/local/go/bin/runc - -COPY . . diff --git a/vendor/github.com/containerd/containerd/contrib/README.md b/vendor/github.com/containerd/containerd/contrib/README.md deleted file mode 100644 index f19f03a609..0000000000 --- a/vendor/github.com/containerd/containerd/contrib/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# contrib - -The `contrib` directory contains packages that do not belong in the core containerd packages but still contribute to overall containerd usability. - -Package such as Apparmor or Selinux are placed in `contrib` because they are platform dependent and often require higher level tools and profiles to work. - -Packaging and other built tools can be added to `contrib` to aid in packaging containerd for various distributions. - -## Testing - -Code in the `contrib` directory may or may not have been tested in the normal test pipeline for core components. diff --git a/vendor/github.com/containerd/containerd/runtime/linux/runctypes/1.0.pb.txt b/vendor/github.com/containerd/containerd/runtime/linux/runctypes/1.0.pb.txt old mode 100755 new mode 100644 diff --git a/vendor/github.com/containerd/containerd/runtime/linux/runctypes/next.pb.txt b/vendor/github.com/containerd/containerd/runtime/linux/runctypes/next.pb.txt old mode 100755 new mode 100644 diff --git a/vendor/github.com/containerd/containerd/runtime/v2/runc/options/next.pb.txt b/vendor/github.com/containerd/containerd/runtime/v2/runc/options/next.pb.txt old mode 100755 new mode 100644 diff --git a/vendor/github.com/containerd/continuity/sysx/generate.sh b/vendor/github.com/containerd/continuity/sysx/generate.sh old mode 100755 new mode 100644 diff --git a/vendor/github.com/containerd/typeurl/.travis.yml b/vendor/github.com/containerd/typeurl/.travis.yml index d7bc38258a..a9791e1d63 100644 --- a/vendor/github.com/containerd/typeurl/.travis.yml +++ b/vendor/github.com/containerd/typeurl/.travis.yml @@ -4,7 +4,17 @@ go: - 1.10.x - tip +install: + - go get -t -v ./... + - go get -u github.com/vbatts/git-validation + - go get -u github.com/kunalkushwaha/ltag + +before_script: + - pushd ..; git clone https://github.com/containerd/project; popd + script: + - DCO_VERBOSITY=-q ../project/script/validate/dco + - ../project/script/validate/fileheader ../project/ - go test -race -coverprofile=coverage.txt -covermode=atomic after_success: diff --git a/vendor/github.com/containerd/typeurl/LICENSE b/vendor/github.com/containerd/typeurl/LICENSE index 261eeb9e9f..584149b6ee 100644 --- a/vendor/github.com/containerd/typeurl/LICENSE +++ b/vendor/github.com/containerd/typeurl/LICENSE @@ -1,6 +1,7 @@ + Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -175,24 +176,13 @@ END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] + Copyright The containerd Authors 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 + https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, diff --git a/vendor/github.com/containerd/typeurl/README.md b/vendor/github.com/containerd/typeurl/README.md index e0787743c5..67f1b8447f 100644 --- a/vendor/github.com/containerd/typeurl/README.md +++ b/vendor/github.com/containerd/typeurl/README.md @@ -7,3 +7,13 @@ A Go package for managing the registration, marshaling, and unmarshaling of encoded types. This package helps when types are sent over a GRPC API and marshaled as a [protobuf.Any](). + +## Project details + +**typeurl** is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE). +As a containerd sub-project, you will find the: + * [Project governance](https://github.com/containerd/project/blob/master/GOVERNANCE.md), + * [Maintainers](https://github.com/containerd/project/blob/master/MAINTAINERS), + * and [Contributing guidelines](https://github.com/containerd/project/blob/master/CONTRIBUTING.md) + +information in our [`containerd/project`](https://github.com/containerd/project) repository. diff --git a/vendor/github.com/containerd/typeurl/doc.go b/vendor/github.com/containerd/typeurl/doc.go new file mode 100644 index 0000000000..c0d0fd2053 --- /dev/null +++ b/vendor/github.com/containerd/typeurl/doc.go @@ -0,0 +1,83 @@ +/* + Copyright The containerd Authors. + + 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 typeurl + +// Package typeurl assists with managing the registration, marshaling, and +// unmarshaling of types encoded as protobuf.Any. +// +// A protobuf.Any is a proto message that can contain any arbitrary data. It +// consists of two components, a TypeUrl and a Value, and its proto definition +// looks like this: +// +// message Any { +// string type_url = 1; +// bytes value = 2; +// } +// +// The TypeUrl is used to distinguish the contents from other proto.Any +// messages. This typeurl library manages these URLs to enable automagic +// marshaling and unmarshaling of the contents. +// +// For example, consider this go struct: +// +// type Foo struct { +// Field1 string +// Field2 string +// } +// +// To use typeurl, types must first be registered. This is typically done in +// the init function +// +// func init() { +// typeurl.Register(&Foo{}, "Foo") +// } +// +// This will register the type Foo with the url path "Foo". The arguments to +// Register are variadic, and are used to construct a url path. Consider this +// example, from the github.com/containerd/containerd/client package: +// +// func init() { +// const prefix = "types.containerd.io" +// // register TypeUrls for commonly marshaled external types +// major := strconv.Itoa(specs.VersionMajor) +// typeurl.Register(&specs.Spec{}, prefix, "opencontainers/runtime-spec", major, "Spec") +// // this function has more Register calls, which are elided. +// } +// +// This registers several types under a more complex url, which ends up mapping +// to `types.containerd.io/opencontainers/runtime-spec/1/Spec` (or some other +// value for major). +// +// Once a type is registered, it can be marshaled to a proto.Any message simply +// by calling `MarshalAny`, like this: +// +// foo := &Foo{Field1: "value1", Field2: "value2"} +// anyFoo, err := typeurl.MarshalAny(foo) +// +// MarshalAny will resolve the correct URL for the type. If the type in +// question implements the proto.Message interface, then it will be marshaled +// as a proto message. Otherwise, it will be marshaled as json. This means that +// typeurl will work on any arbitrary data, whether or not it has a proto +// definition, as long as it can be serialized to json. +// +// To unmarshal, the process is simply inverse: +// +// iface, err := typeurl.UnmarshalAny(anyFoo) +// foo := iface.(*Foo) +// +// The correct type is automatically chosen from the type registry, and the +// returned interface can be cast straight to that type. diff --git a/vendor/github.com/containerd/typeurl/types.go b/vendor/github.com/containerd/typeurl/types.go index 153c488d0a..4f9c069f4d 100644 --- a/vendor/github.com/containerd/typeurl/types.go +++ b/vendor/github.com/containerd/typeurl/types.go @@ -78,7 +78,10 @@ func Is(any *types.Any, v interface{}) bool { return any.TypeUrl == url } -// MarshalAny marshals the value v into an any with the correct TypeUrl +// MarshalAny marshals the value v into an any with the correct TypeUrl. +// If the provided object is already a proto.Any message, then it will be +// returned verbatim. If it is of type proto.Message, it will be marshaled as a +// protocol buffer. Otherwise, the object will be marshaled to json. func MarshalAny(v interface{}) (*types.Any, error) { var marshal func(v interface{}) ([]byte, error) switch t := v.(type) { diff --git a/vendor/github.com/containernetworking/cni/.gitignore b/vendor/github.com/containernetworking/cni/.gitignore deleted file mode 100644 index 0d94fb809e..0000000000 --- a/vendor/github.com/containernetworking/cni/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -bin/ -gopath/ -*.sw[ponm] -.vagrant -release-* diff --git a/vendor/github.com/containernetworking/cni/.travis.yml b/vendor/github.com/containernetworking/cni/.travis.yml deleted file mode 100644 index 234f882684..0000000000 --- a/vendor/github.com/containernetworking/cni/.travis.yml +++ /dev/null @@ -1,41 +0,0 @@ -language: go -sudo: required -dist: trusty - -go: - - 1.7.x - - 1.8.x - -env: - global: - - TOOLS_CMD=golang.org/x/tools/cmd - - PATH=$GOROOT/bin:$PATH - - GO15VENDOREXPERIMENT=1 - matrix: - - TARGET=amd64 - - TARGET=arm - - TARGET=arm64 - - TARGET=ppc64le - - TARGET=s390x - -matrix: - fast_finish: true - -install: - - go get ${TOOLS_CMD}/cover - - go get github.com/modocache/gover - - go get github.com/mattn/goveralls - -script: - - > - if [ "${TARGET}" == "amd64" ]; then - GOARCH="${TARGET}" ./test.sh; - else - GOARCH="${TARGET}" ./build.sh; - fi - -notifications: - email: false - -git: - depth: 9999999 diff --git a/vendor/github.com/containernetworking/cni/CODE-OF-CONDUCT.md b/vendor/github.com/containernetworking/cni/CODE-OF-CONDUCT.md deleted file mode 100644 index b6e32163ab..0000000000 --- a/vendor/github.com/containernetworking/cni/CODE-OF-CONDUCT.md +++ /dev/null @@ -1,4 +0,0 @@ -## Community Code of Conduct - -CNI follows the [CNCF Code of Conduct](https://github.com/cncf/foundation/blob/master/code-of-conduct.md). - diff --git a/vendor/github.com/containernetworking/cni/CONTRIBUTING.md b/vendor/github.com/containernetworking/cni/CONTRIBUTING.md deleted file mode 100644 index 817f072afa..0000000000 --- a/vendor/github.com/containernetworking/cni/CONTRIBUTING.md +++ /dev/null @@ -1,125 +0,0 @@ -# How to Contribute - -CNI is [Apache 2.0 licensed](LICENSE) and accepts contributions via GitHub -pull requests. This document outlines some of the conventions on development -workflow, commit message formatting, contact points and other resources to make -it easier to get your contribution accepted. - -We gratefully welcome improvements to documentation as well as to code. - -# Certificate of Origin - -By contributing to this project you agree to the Developer Certificate of -Origin (DCO). This document was created by the Linux Kernel community and is a -simple statement that you, as a contributor, have the legal right to make the -contribution. See the [DCO](DCO) file for details. - -# Email and Chat - -The project uses the the cni-dev email list and IRC chat: -- Email: [cni-dev](https://groups.google.com/forum/#!forum/cni-dev) -- IRC: #[containernetworking](irc://irc.freenode.org:6667/#containernetworking) channel on freenode.org - -Please avoid emailing maintainers found in the MAINTAINERS file directly. They -are very busy and read the mailing lists. - -## Getting Started - -- Fork the repository on GitHub -- Read the [README](README.md) for build and test instructions -- Play with the project, submit bugs, submit pull requests! - -## Contribution workflow - -This is a rough outline of how to prepare a contribution: - -- Create a topic branch from where you want to base your work (usually branched from master). -- Make commits of logical units. -- Make sure your commit messages are in the proper format (see below). -- Push your changes to a topic branch in your fork of the repository. -- If you changed code: - - add automated tests to cover your changes, using the [Ginkgo](http://onsi.github.io/ginkgo/) & [Gomega](http://onsi.github.io/gomega/) style - - if the package did not previously have any test coverage, add it to the list - of `TESTABLE` packages in the `test.sh` script. - - run the full test script and ensure it passes -- Make sure any new code files have a license header (this is now enforced by automated tests) -- Submit a pull request to the original repository. - -## How to run the test suite -We generally require test coverage of any new features or bug fixes. - -Here's how you can run the test suite on any system (even Mac or Windows) using - [Vagrant](https://www.vagrantup.com/) and a hypervisor of your choice: - -```bash -vagrant up -vagrant ssh -# you're now in a shell in a virtual machine -sudo su -cd /go/src/github.com/containernetworking/cni - -# to run the full test suite -./test.sh - -# to focus on a particular test suite -cd plugins/main/loopback -go test -``` - -# Acceptance policy - -These things will make a PR more likely to be accepted: - - * a well-described requirement - * tests for new code - * tests for old code! - * new code and tests follow the conventions in old code and tests - * a good commit message (see below) - -In general, we will merge a PR once two maintainers have endorsed it. -Trivial changes (e.g., corrections to spelling) may get waved through. -For substantial changes, more people may become involved, and you might get asked to resubmit the PR or divide the changes into more than one PR. - -### Format of the Commit Message - -We follow a rough convention for commit messages that is designed to answer two -questions: what changed and why. The subject line should feature the what and -the body of the commit should describe the why. - -``` -scripts: add the test-cluster command - -this uses tmux to setup a test cluster that you can easily kill and -start for debugging. - -Fixes #38 -``` - -The format can be described more formally as follows: - -``` -: - - - -