diff --git a/builder/Dockerfile b/builder/Dockerfile index 2ac2f4c3c56..6f7bf98a9d9 100644 --- a/builder/Dockerfile +++ b/builder/Dockerfile @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -FROM golang:1.18.1 +FROM golang:1.19 LABEL maintainer="Marcin Wielgus " ENV GOPATH /gopath/ diff --git a/cluster-autoscaler/go.mod b/cluster-autoscaler/go.mod index 74cce24177a..e14e68ec7f2 100644 --- a/cluster-autoscaler/go.mod +++ b/cluster-autoscaler/go.mod @@ -1,6 +1,6 @@ module k8s.io/autoscaler/cluster-autoscaler -go 1.16 +go 1.19 require ( cloud.google.com/go v0.97.0 @@ -27,84 +27,222 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.7.2 golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd - golang.org/x/net v0.0.0-20220225172249-27dd8689420f + golang.org/x/net v0.0.0-20220722155237-a158d28d115b golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 google.golang.org/api v0.60.0 google.golang.org/grpc v1.47.0 - google.golang.org/protobuf v1.27.1 + google.golang.org/protobuf v1.28.0 gopkg.in/gcfg.v1 v1.2.0 gopkg.in/yaml.v2 v2.4.0 - k8s.io/api v0.25.0-alpha.2 - k8s.io/apimachinery v0.25.0-alpha.2 - k8s.io/apiserver v0.25.0-alpha.2 - k8s.io/client-go v0.25.0-alpha.2 - k8s.io/cloud-provider v0.25.0-alpha.2 - k8s.io/component-base v0.25.0-alpha.2 - k8s.io/component-helpers v0.25.0-alpha.2 - k8s.io/klog/v2 v2.70.0 + k8s.io/api v0.25.0 + k8s.io/apimachinery v0.25.0 + k8s.io/apiserver v0.25.0 + k8s.io/client-go v0.25.0 + k8s.io/cloud-provider v0.25.0 + k8s.io/component-base v0.25.0 + k8s.io/component-helpers v0.25.0 + k8s.io/klog/v2 v2.70.1 k8s.io/kubelet v0.24.1 - k8s.io/kubernetes v1.25.0-alpha.2 + k8s.io/kubernetes v1.25.0 k8s.io/legacy-cloud-providers v0.0.0 - k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 + k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed sigs.k8s.io/cloud-provider-azure v1.24.2 ) +require ( + github.com/Azure/go-autorest v14.2.0+incompatible // indirect + github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 // indirect + github.com/Azure/go-autorest/autorest/mocks v0.4.2 // indirect + github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect + github.com/Azure/go-autorest/logger v0.2.1 // indirect + github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b // indirect + github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab // indirect + github.com/Microsoft/go-winio v0.4.17 // indirect + github.com/Microsoft/hcsshim v0.8.22 // indirect + github.com/NYTimes/gziphandler v1.1.1 // indirect + github.com/PuerkitoBio/purell v1.1.1 // indirect + github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect + github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e // indirect + github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/blang/semver/v4 v4.0.0 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/checkpoint-restore/go-criu/v5 v5.3.0 // indirect + github.com/cilium/ebpf v0.7.0 // indirect + github.com/container-storage-interface/spec v1.6.0 // indirect + github.com/containerd/cgroups v1.0.1 // indirect + github.com/containerd/console v1.0.3 // indirect + github.com/containerd/ttrpc v1.0.2 // indirect + github.com/coreos/go-semver v0.3.0 // indirect + github.com/coreos/go-systemd/v22 v22.3.2 // indirect + github.com/cyphar/filepath-securejoin v0.2.3 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/dimchansky/utfbom v1.1.1 // indirect + github.com/docker/distribution v2.8.1+incompatible // indirect + github.com/docker/go-units v0.4.0 // indirect + github.com/emicklei/go-restful/v3 v3.8.0 // indirect + github.com/euank/go-kmsg-parser v2.0.0+incompatible // indirect + github.com/evanphx/json-patch v5.6.0+incompatible // indirect + github.com/felixge/httpsnoop v1.0.1 // indirect + github.com/form3tech-oss/jwt-go v3.2.3+incompatible // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-openapi/jsonpointer v0.19.5 // indirect + github.com/go-openapi/jsonreference v0.19.5 // indirect + github.com/go-openapi/swag v0.19.14 // indirect + github.com/go-ozzo/ozzo-validation v3.5.0+incompatible // indirect + github.com/godbus/dbus/v5 v5.0.6 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang-jwt/jwt/v4 v4.2.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/google/cadvisor v0.45.0 // indirect + github.com/google/gnostic v0.5.7-v3refs // indirect + github.com/google/gofuzz v1.1.0 // indirect + github.com/googleapis/gax-go/v2 v2.1.1 // indirect + github.com/gophercloud/gophercloud v0.1.0 // indirect + github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/heketi/heketi v10.3.0+incompatible // indirect + github.com/imdario/mergo v0.3.6 // indirect + github.com/inconshreveable/mousetrap v1.0.0 // indirect + github.com/josharian/intern v1.0.0 // indirect + github.com/karrick/godirwalk v1.16.1 // indirect + github.com/libopenstorage/openstorage v1.0.0 // indirect + github.com/lithammer/dedent v1.1.0 // indirect + github.com/mailru/easyjson v0.7.6 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect + github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 // indirect + github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.4.1 // indirect + github.com/moby/ipvs v1.0.1 // indirect + github.com/moby/spdystream v0.2.0 // indirect + github.com/moby/sys/mountinfo v0.6.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb // indirect + github.com/mrunalp/fileutils v0.5.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect + github.com/opencontainers/go-digest v1.0.0 // indirect + github.com/opencontainers/runc v1.1.3 // indirect + github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 // indirect + github.com/opencontainers/selinux v1.10.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021 // indirect + github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 // indirect + github.com/sirupsen/logrus v1.8.1 // indirect + github.com/spf13/cobra v1.4.0 // indirect + github.com/stretchr/objx v0.2.0 // indirect + github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect + github.com/vishvananda/netlink v1.1.0 // indirect + github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect + github.com/vmware/govmomi v0.20.3 // indirect + go.etcd.io/etcd/api/v3 v3.5.4 // indirect + go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect + go.etcd.io/etcd/client/v3 v3.5.4 // indirect + go.opencensus.io v0.23.0 // indirect + go.opentelemetry.io/contrib v0.20.0 // indirect + go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.20.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 // indirect + go.opentelemetry.io/otel v0.20.0 // indirect + go.opentelemetry.io/otel/exporters/otlp v0.20.0 // indirect + go.opentelemetry.io/otel/metric v0.20.0 // indirect + go.opentelemetry.io/otel/sdk v0.20.0 // indirect + go.opentelemetry.io/otel/sdk/export/metric v0.20.0 // indirect + go.opentelemetry.io/otel/sdk/metric v0.20.0 // indirect + go.opentelemetry.io/otel/trace v0.20.0 // indirect + go.opentelemetry.io/proto/otlp v0.7.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.19.0 // indirect + golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 // indirect + golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect + golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect + golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect + golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 // indirect + gopkg.in/inf.v0 v0.9.1 // indirect + gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect + gopkg.in/warnings.v0 v0.1.1 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + k8s.io/cri-api v0.0.0 // indirect + k8s.io/csi-translation-lib v0.25.0 // indirect + k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 // indirect + k8s.io/kube-proxy v0.0.0 // indirect + k8s.io/kube-scheduler v0.0.0 // indirect + k8s.io/kubectl v0.0.0 // indirect + k8s.io/mount-utils v0.25.0 // indirect + sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32 // indirect + sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/yaml v1.3.0 // indirect +) + replace github.com/aws/aws-sdk-go/service/eks => github.com/aws/aws-sdk-go/service/eks v1.38.49 replace github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 replace github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 -replace k8s.io/api => k8s.io/api v0.25.0-alpha.2 +replace k8s.io/api => k8s.io/api v0.25.0 -replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.25.0-alpha.2 +replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.25.0 -replace k8s.io/apimachinery => k8s.io/apimachinery v0.25.0-alpha.2 +replace k8s.io/apimachinery => k8s.io/apimachinery v0.26.0-alpha.0 -replace k8s.io/apiserver => k8s.io/apiserver v0.25.0-alpha.2 +replace k8s.io/apiserver => k8s.io/apiserver v0.25.0 -replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.25.0-alpha.2 +replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.25.0 -replace k8s.io/client-go => k8s.io/client-go v0.25.0-alpha.2 +replace k8s.io/client-go => k8s.io/client-go v0.25.0 -replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.25.0-alpha.2 +replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.25.0 -replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.25.0-alpha.2 +replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.25.0 -replace k8s.io/code-generator => k8s.io/code-generator v0.25.0-alpha.2 +replace k8s.io/code-generator => k8s.io/code-generator v0.25.1-rc.0 -replace k8s.io/component-base => k8s.io/component-base v0.25.0-alpha.2 +replace k8s.io/component-base => k8s.io/component-base v0.25.0 -replace k8s.io/component-helpers => k8s.io/component-helpers v0.25.0-alpha.2 +replace k8s.io/component-helpers => k8s.io/component-helpers v0.25.0 -replace k8s.io/controller-manager => k8s.io/controller-manager v0.25.0-alpha.2 +replace k8s.io/controller-manager => k8s.io/controller-manager v0.25.0 -replace k8s.io/cri-api => k8s.io/cri-api v0.25.0-alpha.2 +replace k8s.io/cri-api => k8s.io/cri-api v0.25.1-rc.0 -replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.25.0-alpha.2 +replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.25.0 -replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.25.0-alpha.2 +replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.25.0 -replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.25.0-alpha.2 +replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.25.0 -replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.25.0-alpha.2 +replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.25.0 -replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.25.0-alpha.2 +replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.25.0 -replace k8s.io/kubectl => k8s.io/kubectl v0.25.0-alpha.2 +replace k8s.io/kubectl => k8s.io/kubectl v0.25.0 -replace k8s.io/kubelet => k8s.io/kubelet v0.25.0-alpha.2 +replace k8s.io/kubelet => k8s.io/kubelet v0.25.0 -replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.25.0-alpha.2 +replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.25.0 -replace k8s.io/metrics => k8s.io/metrics v0.25.0-alpha.2 +replace k8s.io/metrics => k8s.io/metrics v0.25.0 -replace k8s.io/mount-utils => k8s.io/mount-utils v0.25.0-alpha.2 +replace k8s.io/mount-utils => k8s.io/mount-utils v0.25.1-rc.0 -replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.25.0-alpha.2 +replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.25.0 -replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.25.0-alpha.2 +replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.25.0 -replace k8s.io/sample-controller => k8s.io/sample-controller v0.25.0-alpha.2 +replace k8s.io/sample-controller => k8s.io/sample-controller v0.25.0 -replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.25.0-alpha.2 +replace k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.25.0 diff --git a/cluster-autoscaler/go.sum b/cluster-autoscaler/go.sum index 99f2304ad65..e73737362c7 100644 --- a/cluster-autoscaler/go.sum +++ b/cluster-autoscaler/go.sum @@ -1,5 +1,4 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bitbucket.org/bertimus9/systemstat v0.5.0/go.mod h1:EkUWPp8lKFPMXP8vnbpT5JDI0W/sTiLZAvN8ONWErHY= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -36,7 +35,6 @@ cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4g cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -47,9 +45,7 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v55.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible h1:HzKLt3kIwMm4KeJYTdx9EbjRYTySD/t8i1Ee/W5EGXw= github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -78,7 +74,6 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9A github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= @@ -96,13 +91,11 @@ github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f1181 github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b/go.mod h1:FNj4KYEAAHfYu68kRYolGoxkaJn+6mdEsaM12VTwuI0= 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 v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE= github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.22 h1:CulZ3GW8sNJExknToo+RWD+U+6ZM5kkNfuxywSDPd08= github.com/Microsoft/hcsshim v0.8.22/go.mod h1:91uVCVzvX2QD16sMCenoxxXo6L1wJnLMX2PSufFMtF0= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -110,25 +103,19 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN github.com/PuerkitoBio/purell v1.1.1/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/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/antlr/antlr4/runtime/Go/antlr v0.0.0-20220209173558-ad29539cd2e9/go.mod h1:F7bn7fEU90QkQ3tnmaTx3LTKLEDqnwWODIYppRQ5hnY= 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/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/auth0/go-jwt-middleware v1.0.1 h1:/fsQ4vRr4zod1wKReUH+0A3ySRjGiT9G34kypO/EKwI= -github.com/auth0/go-jwt-middleware v1.0.1/go.mod h1:YSeUX3z6+TF2H+7padiEqNJ73Zy9vXW72U//IgN0BIM= github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.38.49 h1:E31vxjCe6a5I+mJLmUGaZobiWmg9KdWaud9IfceYeYQ= github.com/aws/aws-sdk-go v1.38.49/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= @@ -139,24 +126,16 @@ github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24 github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4= -github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/checkpoint-restore/go-criu/v5 v5.3.0 h1:wpFFOoomK3389ue2lAb0Boag6XPht5QYpipxmSNL4d8= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -166,20 +145,14 @@ github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJ github.com/cilium/ebpf v0.7.0 h1:1k/q3ATgxSXRdrmPfH8d7YK0GfqVsEKZAX9dQZvs56k= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 h1:eIHD9GNM3Hp7kcRW5mvcz7WTR3ETeoYYKwpgA04kaXE= -github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313/go.mod h1:P1wt9Z3DP8O6W3rvwCt0REIlshg1InHImaLW0t3ObY0= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= -github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/container-storage-interface/spec v1.6.0 h1:vwN9uCciKygX/a0toYryoYD5+qI9ZFeAMuhEEKO+JBA= github.com/container-storage-interface/spec v1.6.0/go.mod h1:8K96oQNkJ7pFcC2R9Z1ynGGBB1I93kcS6PGg3SsOk8s= github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= @@ -189,8 +162,6 @@ github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8a github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.12 h1:V+SHzYmhng/iju6M5nFrpTTusrhidoxKTwdwLw+u4c4= -github.com/containerd/containerd v1.4.12/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= @@ -198,16 +169,11 @@ github.com/containerd/ttrpc v1.0.2 h1:2/O3oTZN36q2xRolk0a2WWGgh7/Vf/liElg5hFYLX9 github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/coredns/caddy v1.1.0/go.mod h1:A6ntJQlAWuQfFlsd9hvigKbo2WS0VUs2l1e2F+BawD4= -github.com/coredns/corefile-migration v1.0.17/go.mod h1:XnhgULOEouimnzgn0t4WPuFDN2/PJQcTxdWKC5eXNGE= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= @@ -223,7 +189,6 @@ github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxG 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 v1.0.0/go.mod h1:zDqEI5NVUop5QPpVJUxE9UO10hRnmkD5G4Pmri9+m4c= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/godo v1.27.0 h1:78iE9oVvTnAEqhMip2UHFvL01b8LJcydbNUpr0cAmN4= @@ -232,12 +197,10 @@ github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQ github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= 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 v2.8.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.12+incompatible h1:CEeNmFM0QZIsJCZKMkZx0ZcahTiewkrgiwfYD+dfl1U= -github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.17+incompatible h1:JYCuMrWaVNophQTOrMMoSwudOVEfcegoZZrleKc1xwE= +github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= @@ -246,11 +209,7 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= -github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful/v3 v3.7.5-0.20220308211933-7c971ca4d0fd/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.5.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -260,37 +219,24 @@ github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5y github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= 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 v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -303,14 +249,11 @@ github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.3/go.mod h1:eIauM6P8qSvTw5o2ez6UEAfGjQKrxQTl5EoK+Qa2oG4= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= @@ -319,13 +262,13 @@ github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/ github.com/go-ozzo/ozzo-validation v3.5.0+incompatible h1:sUy/in/P6askYr16XJgTKq/0SZhiWsdg4WZGaLsGQkM= github.com/go-ozzo/ozzo-validation v3.5.0+incompatible/go.mod h1:gsEKFIVnabGBt6mXmxK0MoFy+cZoTJY6mu5Ll3LVLBU= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6 h1:mkgN1ofwASrYnJ5W6U/BxG15eXXXjirgZc7CLqkcaro= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= @@ -334,9 +277,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -372,17 +313,11 @@ github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= -github.com/golangplus/bytes v1.0.0/go.mod h1:AdRaCFwmc/00ZzELMWb01soso6W1R/++O1XL80yAn+A= -github.com/golangplus/fmt v1.0.0/go.mod h1:zpM0OfbMCjPtd2qkTD/jX2MgiFCqklhSUFyDW44gVQE= -github.com/golangplus/testing v1.0.0/go.mod h1:ZDreixUV3YzhoVraIDyOzHrr76p6NUh6k/pPg/Q3gYA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= -github.com/google/cadvisor v0.44.1 h1:hsAxDZOY+5xSCXH12d/G9cxYTfP+32cMT3J7aatrgDY= -github.com/google/cadvisor v0.44.1/go.mod h1:GQ9KQfz0iNHQk3D6ftzJWK4TXabfIgM10Oy3FkR+Gzg= -github.com/google/cel-go v0.11.2/go.mod h1:drz+knCRsctDZ180KZHwIEEUb9IdK/nxPoyhxi+O1K0= +github.com/google/cadvisor v0.45.0 h1:bXQze1sd8srZiQwiQ19Qaq/AoMIZS8YceBXrIaEvkX0= +github.com/google/cadvisor v0.45.0/go.mod h1:vsMT3Uv2XjQ8M7WUtKARV74mU/HN64C4XtM1bJhUKcU= github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -418,13 +353,10 @@ github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -432,65 +364,37 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1 h1:dp3bWCh+PPO1zjRRiCSczJav13sBvG4UhNyVTa1KqdU= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/gophercloud/gophercloud v0.1.0 h1:P/nh25+rzXouhytV2pUHBb65fnds26Ghl8/391+sT5o= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/heketi/heketi v10.3.0+incompatible h1:X4DBFPzcyWZWhia32d94UhDECQJHH0M5kpRb1gxxUHk= github.com/heketi/heketi v10.3.0+incompatible/go.mod h1:bB9ly3RchcQqsQ9CpyaQwvva7RS5ytVoSoholZQON6o= github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6 h1:oJ/NLadJn5HoxvonA6VxG31lg0d6XOURNA09BTtM4fY= -github.com/heketi/tests v0.0.0-20151005000721-f3775cbcefd6/go.mod h1:xGMAM8JLi7UkZt1i4FQeQy0R2T8GLUwQhOP5M1gBhy4= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28= +github.com/imdario/mergo v0.3.6/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/ishidawataru/sctp v0.0.0-20190723014705-7c296d48a2b5/go.mod h1:DM4VvS+hD/kDi1U1QsX2fnZowwBhqD0Dk3bRPKF/Oc8= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= @@ -501,10 +405,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -514,7 +416,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o 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/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -526,39 +427,23 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/libopenstorage/openstorage v1.0.0 h1:GLPam7/0mpdP8ZZtKjbfcXJBTIA/T1O6CBErVEFEyIM= github.com/libopenstorage/openstorage v1.0.0/go.mod h1:Sp1sIObHjat1BeXhfMqLZ14wnOzEhNx2YQedreMcUyc= -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 h1:ilqjArN1UOENJJdM34I2YHKmF/B0gGq4VLoSGy9iAao= -github.com/lpabon/godbc v0.1.1/go.mod h1:Jo9QV0cf3U6jZABgiJ2skINAXb9j8m51r07g4KI92ZA= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= 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 v2.1.2-0.20190413222219-f784269be439+incompatible h1:aKW/4cBs+yK6gpqU3K/oIwk9Q/XICqd3zOX/UFuvqmk= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -579,44 +464,25 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb h1:e+l77LJOEqXTIQihQJVkA6ZxPOUmfPM5e4H7rcpgtSk= github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= -github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mvdan/xurls v1.1.0/go.mod h1:tQlNn3BED8bE/15hnSL2HLkDeLWpNPAwtw7wkEq44oU= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= 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/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= -github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= -github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= -github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runc v1.1.3 h1:vIXrkId+0/J2Ymu2m7VjGvbSlAId9XNRPhn2p4b+d8w= github.com/opencontainers/runc v1.1.3/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -625,20 +491,13 @@ github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3 github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.10.0 h1:rAiKF8hTcgLI3w0DHm6i0ylVVcOrlgR1kK99DRLDhyU= github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -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/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= 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/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -668,26 +527,17 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/quobyte/api v0.1.8 h1:+sOX1gIlC/OaLipqVZWrHgly9Kh9Qo8OygeS0mWAg30= -github.com/quobyte/api v0.1.8/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= -github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= -github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021 h1:if3/24+h9Sq6eDx8UUz1SO9cT9tizyIsATfB7b4D3tc= github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 h1:RpforrEYXWkmGwJHIGnLZ3tTWStkjVVstwzNGqxX2Ds= github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= 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= @@ -696,36 +546,22 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/assertions v1.1.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= -github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/storageos/go-api v2.2.0+incompatible h1:U0SablXoZIg06gvSlg8BCdzq1C/SkHVygOVX95Z2MU0= -github.com/storageos/go-api v2.2.0+incompatible/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/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= @@ -738,17 +574,14 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= @@ -758,37 +591,24 @@ github.com/vmware/govmomi v0.20.3 h1:gpw/0Ku+6RgF3jsi7fnCLmlcikBHfKBCUcu1qgc16OU github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg= go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v2 v2.305.4 h1:Dcx3/MYyfKcPNLpR4VVQUP5KgYrBeJtktBwEKkw08Ao= -go.etcd.io/etcd/client/v2 v2.305.4/go.mod h1:Ud+VUwIi9/uQHOMA+4ekToJ12lTxlv0zB/+DHwTGEbU= -go.etcd.io/etcd/client/v3 v3.5.1/go.mod h1:OnjH4M8OnAotwaB2l9bVgZzRFKru7/ZMoS46OtKyd3Q= go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4= go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= go.etcd.io/etcd/pkg/v3 v3.5.4 h1:V5Dvl7S39ZDwjkKqJG2BfXgxZ3QREqqKifWQgIw5IM0= -go.etcd.io/etcd/pkg/v3 v3.5.4/go.mod h1:OI+TtO+Aa3nhQSppMbwE4ld3uF1/fqqwbpfndbbrEe0= go.etcd.io/etcd/raft/v3 v3.5.4 h1:YGrnAgRfgXloBNuqa+oBI/aRZMcK/1GS6trJePJ/Gqc= -go.etcd.io/etcd/raft/v3 v3.5.4/go.mod h1:SCuunjYvZFC0fBX0vxMSPjuZmpcSk+XaAcMrD6Do03w= go.etcd.io/etcd/server/v3 v3.5.4 h1:CMAZd0g8Bn5NRhynW6pKhc4FRg41/0QYy3d7aNm9874= -go.etcd.io/etcd/server/v3 v3.5.4/go.mod h1:S5/YTU15KxymM5l3T6b09sNOHPXqGYIZStpuuGbb65c= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -799,10 +619,14 @@ go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= +go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.20.0 h1:8YW+SL62UmcwRQJFZVfnyOlIUUtmlR13NaMKi+Fa6Fo= +go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.20.0/go.mod h1:oQkZOyq61qZBItEFqhfpobK6X/oDPR7/Qr+MXjVSTks= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 h1:Q3C9yzW6I9jqEc8sawxzxZmY48fs9u220KXq6d5s3XU= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= +go.opentelemetry.io/contrib/propagators v0.20.0 h1:IrLQng5Z7AfzkS4sEsYaj2ejkO4FCkgKdAr1aYKOfNc= +go.opentelemetry.io/contrib/propagators v0.20.0/go.mod h1:yLmt93MeSiARUwrK57bOZ4FBruRN4taLiW1lcGfnOes= go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= @@ -821,7 +645,6 @@ go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52l go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.starlark.net v0.0.0-20200306205701-8dd3e2ee1dd5/go.mod h1:nmDLcffg48OtT/PSW0Hg7FvpRQsQh5OSqIylirxKC7o= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -835,12 +658,10 @@ go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/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-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -848,18 +669,11 @@ golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220131195533-30dcbda58838/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -867,8 +681,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20210220032938-85be41e4509f/go.mod h1:I6l2HNBLBZEcrOoCpyKLdY2lHoRZ8lI4x60KMCQDft4= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -886,25 +698,18 @@ golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhp golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20201217150744-e6ae53a27f4f/go.mod h1:skQtrUTUwhdJvXM/2KKJzY8pDgNr9I/FOMqDVRPBUS4= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191209134235-331c550502dd/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.1-0.20200828183125-ce943fd02449/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/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-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/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-20181220203305-927f97764cc3/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-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -929,7 +734,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -937,21 +741,17 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b h1:PxfKdU9lEEDYjdIzOtC4qFWgkU2rGHdKlKowJSMN9h0= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -964,7 +764,6 @@ golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= @@ -982,13 +781,11 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1002,15 +799,10 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191002063906-3421d5a6bb1c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1027,19 +819,16 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200923182605-d9f96fdee20d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1061,14 +850,12 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1085,20 +872,16 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/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-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/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-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= 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-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1110,7 +893,6 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1118,7 +900,6 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117012304-6edc0a871e69/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -1131,7 +912,6 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1143,7 +923,6 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= @@ -1152,19 +931,12 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717 h1:hI3jKY4Hpf63ns040onEbB3dAkR/H/P83hw1TG8dD3Y= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= +golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= -gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1186,7 +958,6 @@ google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34q google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= @@ -1227,7 +998,6 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1265,9 +1035,8 @@ google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEc google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211021150943-2b146023228c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6 h1:FglFEfyj61zP3c6LgjmVHxYxZWXYul9oiS1EZqD5gLc= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 h1:hrbNEivu7Zn1pxvHk6MBrq9iE22woVILTHqexqBxe6I= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1294,7 +1063,7 @@ google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= @@ -1310,8 +1079,9 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1319,19 +1089,13 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -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.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/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.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= @@ -1359,89 +1123,58 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.25.0-alpha.2 h1:azwXduCht76Ecuv80QzZkCDzcFcLotKPXiE9/+jx5Qk= -k8s.io/api v0.25.0-alpha.2/go.mod h1:wOntqHYj8WveLW2sh6q4tkE2vMZTtxe0MrFyVwO8JCM= -k8s.io/apiextensions-apiserver v0.25.0-alpha.2/go.mod h1:Kla8gMDERmdrAQ2AETcuIYNzdH/992088q4LUETzBQs= -k8s.io/apimachinery v0.25.0-alpha.2 h1:y6uTWaiqsPTPRewnXJ15IFyGmBo2qPt6enm4zszG8Z0= -k8s.io/apimachinery v0.25.0-alpha.2/go.mod h1:h34FtK3eCxige6ZIACdBSYExtDaKAUxoc7hVe2LOxzw= -k8s.io/apiserver v0.25.0-alpha.2 h1:pG1Knqb3n4dTe1Z2Eb9CbiBELzdCkar8TFntKqz1Py8= -k8s.io/apiserver v0.25.0-alpha.2/go.mod h1:PUkHMlEX0S5ctsyHJNFEKrgIYPBnON59uJUDygYia+M= -k8s.io/cli-runtime v0.25.0-alpha.2/go.mod h1:iZrrniFcz+PC90O7/wpA7uGRp5xgUxnf9UqHvCHlni4= -k8s.io/client-go v0.25.0-alpha.2 h1:kXlDl2L/CmdubzbRTPOCXj9JDPv9U0MuEjRXSCltQ00= -k8s.io/client-go v0.25.0-alpha.2/go.mod h1:AN5W2BkXTu2lNm2BANn5lC6VnGlv6AM5HNPQLsriBOA= -k8s.io/cloud-provider v0.25.0-alpha.2 h1:9kZXA35iaUeCzSWRjYdNoeMTG0Vtcydgfr+Gm/jINLg= -k8s.io/cloud-provider v0.25.0-alpha.2/go.mod h1:y1Kt2LoMwiXADvgl+uo+s19aSZkzMykTUF1ZxJRwETw= -k8s.io/cluster-bootstrap v0.25.0-alpha.2/go.mod h1:YgPWHJXGl9Ivl0zH7vD1CkaPLvR2nV7IOkdde1lO23Y= -k8s.io/code-generator v0.25.0-alpha.2/go.mod h1:KTlrsAhPK0EJrlbKzPsG+LqzNWufdDZ7qGBwVcT5knE= -k8s.io/component-base v0.25.0-alpha.2 h1:/u3UH2T5e8pac0FiCmsyKNh39rzdT2DxAOXww6e9b7M= -k8s.io/component-base v0.25.0-alpha.2/go.mod h1:6wq0/nWr0pBhuDnWjT2MhpcTRdnLBxucqwTShWfjVKM= -k8s.io/component-helpers v0.25.0-alpha.2 h1:CUyqdwi36jr01YyjFBhQcWxx7JhjQvLgIJDQs27DfGM= -k8s.io/component-helpers v0.25.0-alpha.2/go.mod h1:EI/IhY2quvpAqgFcjAxFHiKLU/sQR5B31oZgc5MJ/8c= -k8s.io/controller-manager v0.25.0-alpha.2/go.mod h1:EBuJwOkixqjNF49n9q1u1+IrZMcx1b7JwQm2RAG5fEc= -k8s.io/cri-api v0.25.0-alpha.2 h1:KSB1Untl+/iXXPuoqWtiW0YZbjqnnYGzhz4BbaLd3pg= -k8s.io/cri-api v0.25.0-alpha.2/go.mod h1:bKbUiy31Ex/ogNMxLEikgk+5kPv1vevtbiLN+xWEXr8= -k8s.io/csi-translation-lib v0.25.0-alpha.2 h1:AxdkS406QrtJlNDLOJUUf5MgMugrFiRyr7JZiqgSmBk= -k8s.io/csi-translation-lib v0.25.0-alpha.2/go.mod h1:9TAQjEHQz9igNYcKdgVBs5jiHMOHISCkXeT6StamhL4= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20211129171323-c02415ce4185/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/api v0.25.0 h1:H+Q4ma2U/ww0iGB78ijZx6DRByPz6/733jIuFpX70e0= +k8s.io/api v0.25.0/go.mod h1:ttceV1GyV1i1rnmvzT3BST08N6nGt+dudGrquzVQWPk= +k8s.io/apimachinery v0.26.0-alpha.0 h1:cnXW2EigxCOrD+s52R9r5AZOcu1Nbv508gOCgSQkbo4= +k8s.io/apimachinery v0.26.0-alpha.0/go.mod h1:qMx9eAk0sZQGsXGu86fab8tZdffHbwUfsvzqKn4mfB0= +k8s.io/apiserver v0.25.0 h1:8kl2ifbNffD440MyvHtPaIz1mw4mGKVgWqM0nL+oyu4= +k8s.io/apiserver v0.25.0/go.mod h1:BKwsE+PTC+aZK+6OJQDPr0v6uS91/HWxX7evElAH6xo= +k8s.io/client-go v0.25.0 h1:CVWIaCETLMBNiTUta3d5nzRbXvY5Hy9Dpl+VvREpu5E= +k8s.io/client-go v0.25.0/go.mod h1:lxykvypVfKilxhTklov0wz1FoaUZ8X4EwbhS6rpRfN8= +k8s.io/cloud-provider v0.25.0 h1:ONX5BON6f1Mxa2GWvPyKn+QsZXaLauPUte7MZxfWUro= +k8s.io/cloud-provider v0.25.0/go.mod h1:afVfVCIYOUER914WmSp0QpAtJn12gv4qu9NMT4XBxZo= +k8s.io/component-base v0.25.0 h1:haVKlLkPCFZhkcqB6WCvpVxftrg6+FK5x1ZuaIDaQ5Y= +k8s.io/component-base v0.25.0/go.mod h1:F2Sumv9CnbBlqrpdf7rKZTmmd2meJq0HizeyY/yAFxk= +k8s.io/component-helpers v0.25.0 h1:vNzYfqnVXj7f+CPksduKVv2Z9kC+IDsOs9yaOyxZrj0= +k8s.io/component-helpers v0.25.0/go.mod h1:auaFj2bvb5Zmy0mLk4WJNmwP0w4e7Zk+/Tu9FFBGA20= +k8s.io/cri-api v0.25.1-rc.0 h1:hYQT+MZsjMrt83d/r3cHxrl5bZbQ9Oe8fHt7UaN0XsU= +k8s.io/cri-api v0.25.1-rc.0/go.mod h1:J1rAyQkSJ2Q6I+aBMOVgg2/cbbebso6FNa0UagiR0kc= +k8s.io/csi-translation-lib v0.25.0 h1:Jh3kn5p3kEGGA/q1fovTNIG9fypzt2c34sm+qij2W/8= +k8s.io/csi-translation-lib v0.25.0/go.mod h1:Wb80CDywP4753F6wWkIyOuJIQtQAbhgw985veSgAn/4= k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.70.0 h1:GMmmjoFOrNepPN0ZeGCzvD2Gh5IKRwdFx8W5PBxVTQU= -k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-aggregator v0.25.0-alpha.2/go.mod h1:kAa4r99UB2/FvBogjvan3xjNoiEb/C6zL+F8b/0eYfg= -k8s.io/kube-controller-manager v0.25.0-alpha.2/go.mod h1:N60FHcc8HgAxZlERhcnZv8p+74c7oDVFlQQmkCscTcU= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk= -k8s.io/kube-openapi v0.0.0-20220603121420-31174f50af60 h1:cE/M8rmDQgibspuSm+X1iW16ByTImtEaapgaHoVSLX4= -k8s.io/kube-openapi v0.0.0-20220603121420-31174f50af60/go.mod h1:ouUzE1U2mEv//HRoBwYLFE5pdqjIebvtX361vtEIlBI= -k8s.io/kube-proxy v0.25.0-alpha.2 h1:7Fm3BLdoS1GylgbU8XRtVCqD5adrI3PQpPSAH+xknWI= -k8s.io/kube-proxy v0.25.0-alpha.2/go.mod h1:AgBB3OIsccYye23xPcryD3a7or0qd2if+ctOGr8CkO0= -k8s.io/kube-scheduler v0.25.0-alpha.2 h1:pxx1kgoiWcLj0sCSUyWQF+fV5n2rgosbuTw2gY6DaXA= -k8s.io/kube-scheduler v0.25.0-alpha.2/go.mod h1:c9WIcxb5Kow0huSuA4HU8d8lC4d3QrXEcX3OAreOt6E= -k8s.io/kubectl v0.25.0-alpha.2 h1:4PNH8YkSRkRq9cmkua0Oi4/6Qvvf6CXflXdLgKDpD8Q= -k8s.io/kubectl v0.25.0-alpha.2/go.mod h1:msp9bRJqCBb1ROLxCH8Zkn3cL0tv4C2KkugRUV82e4M= -k8s.io/kubelet v0.25.0-alpha.2 h1:MzXSjDQEtOph4joEIlWBczQL+O1aNvmIzCPV8ujOJlw= -k8s.io/kubelet v0.25.0-alpha.2/go.mod h1:8U0wfzzbneMrtBQm2TsvOo8EUcIblMY3AUjidFYegto= -k8s.io/kubernetes v1.25.0-alpha.2 h1:Bh4T1htwJH4KnRh037MO/GEn73U985odsdEn8mMJFs0= -k8s.io/kubernetes v1.25.0-alpha.2/go.mod h1:Io5pYGoxO26XrLMUunyCWeUVtKf6L/zdKhDm/MCp180= -k8s.io/legacy-cloud-providers v0.25.0-alpha.2 h1:vxhm0ZoTpsrOCADXEyKb9t+m1MnzBWTCjP0fQhvyRCk= -k8s.io/legacy-cloud-providers v0.25.0-alpha.2/go.mod h1:GyyNT+ahr3M9Pdx5UOKyJ6oN55lg4E9o3go5vQkJFS4= -k8s.io/metrics v0.25.0-alpha.2/go.mod h1:lOCv7pB7Y7lMriUFgv207TWodCr/yw7nLuOuaoEhqZ8= -k8s.io/mount-utils v0.25.0-alpha.2 h1:WNxH4khKztmISOx1vgYw+m8nk+Cg/1CdXoWjKduDQfE= -k8s.io/mount-utils v0.25.0-alpha.2/go.mod h1:TSNhvHrfIqaevAiDM2O9bS0KQAcq7jASNXzt3/NnAhA= -k8s.io/pod-security-admission v0.25.0-alpha.2/go.mod h1:Bs9wP/7rFaG9iIi6+CrYWBqMl/I18BqUMUykx3Jr7O0= -k8s.io/sample-apiserver v0.25.0-alpha.2/go.mod h1:z1hFdC8MGYMdqmaygMVKgnFpYBZ5D3bSc7jPM3ByawA= -k8s.io/system-validators v1.7.0/go.mod h1:gP1Ky+R9wtrSiFbrpEPwWMeYz9yqyy1S/KOh0Vci7WI= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +k8s.io/klog/v2 v2.70.1 h1:7aaoSdahviPmR+XkS7FyxlkkXs6tHISSG03RxleQAVQ= +k8s.io/klog/v2 v2.70.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 h1:MQ8BAZPZlWk3S9K4a9NCkIFQtZShWqoha7snGixVgEA= +k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1/go.mod h1:C/N6wCaBHeBHkHUesQOQy2/MZqGgMAFPqGsGQLdbZBU= +k8s.io/kube-proxy v0.25.0 h1:QuoKEyXV+NNMXEh8oqlthUlHkmWF+WBnYUMHCf817k0= +k8s.io/kube-proxy v0.25.0/go.mod h1:uHv1HwMVDYgl1pU2PTDKLRlxtNOf4z2M5YPYC6NP1CU= +k8s.io/kube-scheduler v0.25.0 h1:Up2rW+1H3JsgcpfdMcj/kVbYtgoxpiwxKLg5L4PaZ98= +k8s.io/kube-scheduler v0.25.0/go.mod h1:cwiyJeImgFbhmbnImzvuhbiJayNngRNEe3FJkZDPw9Y= +k8s.io/kubectl v0.25.0 h1:/Wn1cFqo8ik3iee1EvpxYre3bkWsGLXzLQI6uCCAkQc= +k8s.io/kubectl v0.25.0/go.mod h1:n16ULWsOl2jmQpzt2o7Dud1t4o0+Y186ICb4O+GwKAU= +k8s.io/kubelet v0.25.0 h1:eTS5B1u1o63ndExAHKLJytzz/GBy86ROcxYtu0VK3RA= +k8s.io/kubelet v0.25.0/go.mod h1:J6aQxrZdSsGPrskYrhZdEn6PCnGha+GNvF0g9aWfQnw= +k8s.io/kubernetes v1.25.0 h1:NwTRyLrdXTORd5V7DLlUltxDbl/KZjYDiRgwI+pBYGE= +k8s.io/kubernetes v1.25.0/go.mod h1:UdtILd5Zg1vGZvShiO1EYOqmjzM2kZOG1hzwQnM5JxY= +k8s.io/legacy-cloud-providers v0.25.0 h1:c+boKaCw/2ZzvA8/XgTIeDrGUJJ2Ucy+jLJFf02+huE= +k8s.io/legacy-cloud-providers v0.25.0/go.mod h1:bnmUgHHeBmK3M9JgQzu+ne6UCUVURDzkpF0Y7VeypVE= +k8s.io/mount-utils v0.25.1-rc.0 h1:5dgitAglmH1iS8+ZcjLHqr7i5DK7dX9QGJlXw5MSbNc= +k8s.io/mount-utils v0.25.1-rc.0/go.mod h1:WTYq8Ev/JrnkqK2h1jFUnC8qWGuqzMb9XDC+Lu3WNU0= k8s.io/utils v0.0.0-20211116205334-6203023598ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -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= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed h1:jAne/RjBTyawwAy0utX5eqigAwz/lQhTmy+Hr/Cpue4= +k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.30/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32 h1:2WjukG7txtEsbXsSKWtTibCdsyYAhcu6KFnttyDdZOQ= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw= sigs.k8s.io/cloud-provider-azure v1.24.2 h1:t0c3Q7GAGQ0oqyl/KiHLtkS4obEYJpAMRYUuhEtgs/k= sigs.k8s.io/cloud-provider-azure v1.24.2/go.mod h1:uKqonMQbC2zqwq7NIWOfQLgrsMzD02Wj5UFFl1te1GY= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/kustomize/api v0.11.4/go.mod h1:k+8RsqYbgpkIrJ4p9jcdPqe8DprLxFUUO0yNOq8C+xI= -sigs.k8s.io/kustomize/cmd/config v0.10.6/go.mod h1:/S4A4nUANUa4bZJ/Edt7ZQTyKOY9WCER0uBS1SW2Rco= -sigs.k8s.io/kustomize/kustomize/v4 v4.5.4/go.mod h1:Zo/Xc5FKD6sHl0lilbrieeGeZHVYCA4BzxeAaLI05Bg= -sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 h1:iXTIw73aPyC+oRdyqqvVJuloN1p0AC/kzH07hu3NE+k= +sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/adal/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/adal/go.mod deleted file mode 100644 index 264ef2d6ac1..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/adal/go.mod +++ /dev/null @@ -1,13 +0,0 @@ -module github.com/Azure/go-autorest/autorest/adal - -go 1.15 - -require ( - github.com/Azure/go-autorest v14.2.0+incompatible - github.com/Azure/go-autorest/autorest/date v0.3.0 - github.com/Azure/go-autorest/autorest/mocks v0.4.1 - github.com/Azure/go-autorest/logger v0.2.1 - github.com/Azure/go-autorest/tracing v0.6.0 - github.com/golang-jwt/jwt/v4 v4.0.0 - golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 -) diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/adal/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/adal/go.sum deleted file mode 100644 index 919ea16d607..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/adal/go.sum +++ /dev/null @@ -1,20 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/golang-jwt/jwt/v4 v4.0.0 h1:RAqyYixv1p7uEnocuy8P1nru5wprCh/MH2BIlW5z5/o= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519 h1:7I4JAnoQBe7ZtJcBaYHi5UtiO8tQHbUSXxL+pnGRANg= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.mod deleted file mode 100644 index 7a894fabaa9..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.mod +++ /dev/null @@ -1,13 +0,0 @@ -module github.com/Azure/go-autorest/autorest/azure/auth - -go 1.12 - -require ( - github.com/Azure/go-autorest v14.2.0+incompatible - github.com/Azure/go-autorest/autorest v0.11.17 - github.com/Azure/go-autorest/autorest/adal v0.9.11 - github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 - github.com/Azure/go-autorest/logger v0.2.0 - github.com/dimchansky/utfbom v1.1.1 - golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a // indirect -) diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.sum deleted file mode 100644 index ab109459707..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/auth/go.sum +++ /dev/null @@ -1,37 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.17 h1:2zCdHwNgRH+St1J+ZMf66xI8aLr/5KMy+wWLH97zwYM= -github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.11 h1:L4/pmq7poLdsy41Bj1FayKvBhayuWRYkx9HU5i4Ybl0= -github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 h1:dMOmEJfkLKW/7JsokJqkyoYSgmR08hi9KrhjZb+JALY= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/logger v0.2.0 h1:e4RVHVZKC5p6UANLJHkM4OfR1UKZPj8Wt8Pcx+3oqrE= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a h1:kr2P4QFmQr29mSLA43kwrOcgcReGTfbE9N577tCTuBc= -golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.mod deleted file mode 100644 index 7e06a8bb724..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module github.com/Azure/go-autorest/autorest/azure/cli - -go 1.12 - -require ( - github.com/Azure/go-autorest v14.2.0+incompatible - github.com/Azure/go-autorest/autorest/adal v0.9.5 - github.com/Azure/go-autorest/autorest/date v0.3.0 - github.com/dimchansky/utfbom v1.1.0 - github.com/mitchellh/go-homedir v1.1.0 -) diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.sum deleted file mode 100644 index f2f970684df..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/azure/cli/go.sum +++ /dev/null @@ -1,24 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest/adal v0.9.5 h1:Y3bBUV4rTuxenJJs41HU3qmqsb+auo+a3Lz+PlJPpL0= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0 h1:hb9wdF1z5waM+dSIICn1l0DkLVDT3hqhhQsDNUmHPRE= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/date/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/date/go.mod deleted file mode 100644 index f88ecc4022d..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/date/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/Azure/go-autorest/autorest/date - -go 1.12 - -require github.com/Azure/go-autorest v14.2.0+incompatible diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/date/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/date/go.sum deleted file mode 100644 index 1fc56a962ee..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/date/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/go.mod deleted file mode 100644 index 680b9676fe8..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/go.mod +++ /dev/null @@ -1,13 +0,0 @@ -module github.com/Azure/go-autorest/autorest - -go 1.15 - -require ( - github.com/Azure/go-autorest v14.2.0+incompatible - github.com/Azure/go-autorest/autorest/adal v0.9.18 - github.com/Azure/go-autorest/autorest/mocks v0.4.2 - github.com/Azure/go-autorest/logger v0.2.1 - github.com/Azure/go-autorest/tracing v0.6.0 - github.com/golang-jwt/jwt/v4 v4.2.0 // indirect - golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 -) diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/go.sum deleted file mode 100644 index 4bb88d68ce5..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/go.sum +++ /dev/null @@ -1,28 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= -github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= -github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 h1:0es+/5331RGQPcXlMfP+WrnIIS6dNnNRe0WB02W0F4M= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/mocks/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/mocks/go.mod deleted file mode 100644 index ef79c8dfac2..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/mocks/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/Azure/go-autorest/autorest/mocks - -go 1.15 - -require github.com/Azure/go-autorest v14.2.0+incompatible diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/mocks/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/mocks/go.sum deleted file mode 100644 index 1fc56a962ee..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/mocks/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/to/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/to/go.mod deleted file mode 100644 index 8fd041e2bae..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/to/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/Azure/go-autorest/autorest/to - -go 1.12 - -require github.com/Azure/go-autorest v14.2.0+incompatible diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/to/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/to/go.sum deleted file mode 100644 index 1fc56a962ee..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/to/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/validation/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/validation/go.mod deleted file mode 100644 index a0a69e9aed5..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/validation/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/Azure/go-autorest/autorest/validation - -go 1.12 - -require ( - github.com/Azure/go-autorest v14.2.0+incompatible - github.com/stretchr/testify v1.3.0 -) diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/validation/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/validation/go.sum deleted file mode 100644 index 6c1119aab96..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/autorest/validation/go.sum +++ /dev/null @@ -1,9 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/logger/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/logger/go.mod deleted file mode 100644 index bedeaee039e..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/logger/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/Azure/go-autorest/logger - -go 1.12 - -require github.com/Azure/go-autorest v14.2.0+incompatible diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/logger/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/logger/go.sum deleted file mode 100644 index 1fc56a962ee..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/logger/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/tracing/go.mod b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/tracing/go.mod deleted file mode 100644 index a2cdec78c81..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/tracing/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/Azure/go-autorest/tracing - -go 1.12 - -require github.com/Azure/go-autorest v14.2.0+incompatible diff --git a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/tracing/go.sum b/cluster-autoscaler/vendor/github.com/Azure/go-autorest/tracing/go.sum deleted file mode 100644 index 1fc56a962ee..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/go-autorest/tracing/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= diff --git a/cluster-autoscaler/vendor/github.com/Azure/skewer/go.mod b/cluster-autoscaler/vendor/github.com/Azure/skewer/go.mod deleted file mode 100644 index 580e8949b24..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/skewer/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module github.com/Azure/skewer - -go 1.13 - -require ( - github.com/Azure/azure-sdk-for-go v46.0.0+incompatible - github.com/Azure/go-autorest/autorest v0.11.4 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.2 // indirect - github.com/Azure/go-autorest/autorest/to v0.4.0 - github.com/Azure/go-autorest/autorest/validation v0.3.0 // indirect - github.com/google/go-cmp v0.5.1 - github.com/pkg/errors v0.9.1 - golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a // indirect -) diff --git a/cluster-autoscaler/vendor/github.com/Azure/skewer/go.sum b/cluster-autoscaler/vendor/github.com/Azure/skewer/go.sum deleted file mode 100644 index 1449975e0ba..00000000000 --- a/cluster-autoscaler/vendor/github.com/Azure/skewer/go.sum +++ /dev/null @@ -1,46 +0,0 @@ -github.com/Azure/azure-sdk-for-go v46.0.0+incompatible h1:4qlEOCDcDQZTGczYGzbGYCdJfVpZLIs8AEo5+MoXBPw= -github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.4 h1:iWJqGEvip7mjibEqC/srXNdo+4wLEPiwlP/7dZLtoPc= -github.com/Azure/go-autorest/autorest v0.11.4/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.2 h1:Aze/GQeAN1RRbGmnUJvUj+tFGBzFdIg3293/A9rbxC4= -github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.0 h1:3I9AAI63HfcLtphd9g39ruUwRI+Ca+z/f36KHPFRUss= -github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.2.0 h1:e4RVHVZKC5p6UANLJHkM4OfR1UKZPj8Wt8Pcx+3oqrE= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a h1:vclmkQCjlDX5OydZ9wv8rBCcS0QyQY66Mpf/7BZbInM= -golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/go-winio/go.mod b/cluster-autoscaler/vendor/github.com/Microsoft/go-winio/go.mod deleted file mode 100644 index 98a8dea0e7e..00000000000 --- a/cluster-autoscaler/vendor/github.com/Microsoft/go-winio/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/Microsoft/go-winio - -go 1.12 - -require ( - github.com/pkg/errors v0.9.1 - github.com/sirupsen/logrus v1.7.0 - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c -) diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/go-winio/go.sum b/cluster-autoscaler/vendor/github.com/Microsoft/go-winio/go.sum deleted file mode 100644 index aa6ad3b571a..00000000000 --- a/cluster-autoscaler/vendor/github.com/Microsoft/go-winio/go.sum +++ /dev/null @@ -1,14 +0,0 @@ -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/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/go.mod b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/go.mod deleted file mode 100644 index 8360b0a50d3..00000000000 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/go.mod +++ /dev/null @@ -1,30 +0,0 @@ -module github.com/Microsoft/hcsshim - -go 1.13 - -require ( - github.com/Microsoft/go-winio v0.4.17 - github.com/containerd/cgroups v1.0.1 - github.com/containerd/console v1.0.2 - github.com/containerd/containerd v1.4.9 - github.com/containerd/continuity v0.1.0 // indirect - github.com/containerd/fifo v1.0.0 // indirect - github.com/containerd/go-runc v1.0.0 - github.com/containerd/ttrpc v1.0.2 - github.com/containerd/typeurl v1.0.2 - github.com/gogo/protobuf v1.3.2 - github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d - github.com/pkg/errors v0.9.1 - github.com/sirupsen/logrus v1.7.0 - github.com/urfave/cli v1.22.2 - go.opencensus.io v0.22.3 - golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20210324051608-47abb6519492 - google.golang.org/grpc v1.33.2 - gotest.tools/v3 v3.0.3 // indirect -) - -replace ( - google.golang.org/genproto => google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 - google.golang.org/grpc => google.golang.org/grpc v1.27.1 -) diff --git a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/go.sum b/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/go.sum deleted file mode 100644 index 8ad3a8b8f1a..00000000000 --- a/cluster-autoscaler/vendor/github.com/Microsoft/hcsshim/go.sum +++ /dev/null @@ -1,241 +0,0 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= -github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2 h1:Pi6D+aZXM+oUw1czuKgH5IJ+y0jhYcwBJfx5/Ghn9dE= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/containerd v1.4.9 h1:JIw9mjVw4LsGmnA/Bqg9j9e+XB7soOJufrKUpA6n2Ns= -github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-runc v1.0.0 h1:oU+lLv1ULm5taqgV/CJivypVODI4SUz1znWjv3nNYS0= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/ttrpc v1.0.2 h1:2/O3oTZN36q2xRolk0a2WWGgh7/Vf/liElg5hFYLX9U= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -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/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -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-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -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/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5 h1:F768QJ1E9tib+q5Sc8MkdJi1RxLTbRcTf8LJV56aRls= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -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/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d h1:pNa8metDkwZjb9g4T8s+krQ+HRgZAkqnXml+wNir/+s= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1 h1:Lo6mRUjdS99f3zxYOUalftWHUoOGaDRqFk1+j0Q57/I= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -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.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/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-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/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-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492 h1:Paq34FxTluEPvVyayQqMPgHm+vTOrIifmcYxFBx9TLg= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -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-20181030221726-6c7e314b6563/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-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63 h1:YzfoEYWbODU5Fbt37+h7X16BWQbad7Q4S6gclTKFXM8= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/grpc v1.27.1 h1:zvIju4sqAGvwKspUQOhwnpcqSbzi7/H6QomNNjTL4sk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cluster-autoscaler/vendor/github.com/NYTimes/gziphandler/go.mod b/cluster-autoscaler/vendor/github.com/NYTimes/gziphandler/go.mod deleted file mode 100644 index 80190127424..00000000000 --- a/cluster-autoscaler/vendor/github.com/NYTimes/gziphandler/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/NYTimes/gziphandler - -go 1.11 - -require github.com/stretchr/testify v1.3.0 diff --git a/cluster-autoscaler/vendor/github.com/NYTimes/gziphandler/go.sum b/cluster-autoscaler/vendor/github.com/NYTimes/gziphandler/go.sum deleted file mode 100644 index 4347755afe8..00000000000 --- a/cluster-autoscaler/vendor/github.com/NYTimes/gziphandler/go.sum +++ /dev/null @@ -1,7 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go deleted file mode 100644 index 56cd9ae935f..00000000000 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/api.go +++ /dev/null @@ -1,10716 +0,0 @@ -// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. - -package eks - -import ( - "fmt" - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/awsutil" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/private/protocol" - "github.com/aws/aws-sdk-go/private/protocol/restjson" -) - -const opAssociateEncryptionConfig = "AssociateEncryptionConfig" - -// AssociateEncryptionConfigRequest generates a "aws/request.Request" representing the -// client's request for the AssociateEncryptionConfig operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See AssociateEncryptionConfig for more information on using the AssociateEncryptionConfig -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the AssociateEncryptionConfigRequest method. -// req, resp := client.AssociateEncryptionConfigRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateEncryptionConfig -func (c *EKS) AssociateEncryptionConfigRequest(input *AssociateEncryptionConfigInput) (req *request.Request, output *AssociateEncryptionConfigOutput) { - op := &request.Operation{ - Name: opAssociateEncryptionConfig, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/encryption-config/associate", - } - - if input == nil { - input = &AssociateEncryptionConfigInput{} - } - - output = &AssociateEncryptionConfigOutput{} - req = c.newRequest(op, input, output) - return -} - -// AssociateEncryptionConfig API operation for Amazon Elastic Kubernetes Service. -// -// Associate encryption configuration to an existing cluster. -// -// You can use this API to enable encryption on existing clusters which do not -// have encryption already enabled. This allows you to implement a defense-in-depth -// security strategy without migrating applications to new EKS clusters. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation AssociateEncryptionConfig for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateEncryptionConfig -func (c *EKS) AssociateEncryptionConfig(input *AssociateEncryptionConfigInput) (*AssociateEncryptionConfigOutput, error) { - req, out := c.AssociateEncryptionConfigRequest(input) - return out, req.Send() -} - -// AssociateEncryptionConfigWithContext is the same as AssociateEncryptionConfig with the addition of -// the ability to pass a context and additional request options. -// -// See AssociateEncryptionConfig for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) AssociateEncryptionConfigWithContext(ctx aws.Context, input *AssociateEncryptionConfigInput, opts ...request.Option) (*AssociateEncryptionConfigOutput, error) { - req, out := c.AssociateEncryptionConfigRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opAssociateIdentityProviderConfig = "AssociateIdentityProviderConfig" - -// AssociateIdentityProviderConfigRequest generates a "aws/request.Request" representing the -// client's request for the AssociateIdentityProviderConfig operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See AssociateIdentityProviderConfig for more information on using the AssociateIdentityProviderConfig -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the AssociateIdentityProviderConfigRequest method. -// req, resp := client.AssociateIdentityProviderConfigRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateIdentityProviderConfig -func (c *EKS) AssociateIdentityProviderConfigRequest(input *AssociateIdentityProviderConfigInput) (req *request.Request, output *AssociateIdentityProviderConfigOutput) { - op := &request.Operation{ - Name: opAssociateIdentityProviderConfig, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/identity-provider-configs/associate", - } - - if input == nil { - input = &AssociateIdentityProviderConfigInput{} - } - - output = &AssociateIdentityProviderConfigOutput{} - req = c.newRequest(op, input, output) - return -} - -// AssociateIdentityProviderConfig API operation for Amazon Elastic Kubernetes Service. -// -// Associate an identity provider configuration to a cluster. -// -// If you want to authenticate identities using an identity provider, you can -// create an identity provider configuration and associate it to your cluster. -// After configuring authentication to your cluster you can create Kubernetes -// roles and clusterroles to assign permissions to the roles, and then bind -// the roles to the identities using Kubernetes rolebindings and clusterrolebindings. -// For more information see Using RBAC Authorization (https://kubernetes.io/docs/reference/access-authn-authz/rbac/) -// in the Kubernetes documentation. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation AssociateIdentityProviderConfig for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/AssociateIdentityProviderConfig -func (c *EKS) AssociateIdentityProviderConfig(input *AssociateIdentityProviderConfigInput) (*AssociateIdentityProviderConfigOutput, error) { - req, out := c.AssociateIdentityProviderConfigRequest(input) - return out, req.Send() -} - -// AssociateIdentityProviderConfigWithContext is the same as AssociateIdentityProviderConfig with the addition of -// the ability to pass a context and additional request options. -// -// See AssociateIdentityProviderConfig for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) AssociateIdentityProviderConfigWithContext(ctx aws.Context, input *AssociateIdentityProviderConfigInput, opts ...request.Option) (*AssociateIdentityProviderConfigOutput, error) { - req, out := c.AssociateIdentityProviderConfigRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opCreateAddon = "CreateAddon" - -// CreateAddonRequest generates a "aws/request.Request" representing the -// client's request for the CreateAddon operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See CreateAddon for more information on using the CreateAddon -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the CreateAddonRequest method. -// req, resp := client.CreateAddonRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateAddon -func (c *EKS) CreateAddonRequest(input *CreateAddonInput) (req *request.Request, output *CreateAddonOutput) { - op := &request.Operation{ - Name: opCreateAddon, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/addons", - } - - if input == nil { - input = &CreateAddonInput{} - } - - output = &CreateAddonOutput{} - req = c.newRequest(op, input, output) - return -} - -// CreateAddon API operation for Amazon Elastic Kubernetes Service. -// -// Creates an Amazon EKS add-on. -// -// Amazon EKS add-ons help to automate the provisioning and lifecycle management -// of common operational software for Amazon EKS clusters. Amazon EKS add-ons -// can only be used with Amazon EKS clusters running version 1.18 with platform -// version eks.3 or later because add-ons rely on the Server-side Apply Kubernetes -// feature, which is only available in Kubernetes 1.18 and later. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation CreateAddon for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateAddon -func (c *EKS) CreateAddon(input *CreateAddonInput) (*CreateAddonOutput, error) { - req, out := c.CreateAddonRequest(input) - return out, req.Send() -} - -// CreateAddonWithContext is the same as CreateAddon with the addition of -// the ability to pass a context and additional request options. -// -// See CreateAddon for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) CreateAddonWithContext(ctx aws.Context, input *CreateAddonInput, opts ...request.Option) (*CreateAddonOutput, error) { - req, out := c.CreateAddonRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opCreateCluster = "CreateCluster" - -// CreateClusterRequest generates a "aws/request.Request" representing the -// client's request for the CreateCluster operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See CreateCluster for more information on using the CreateCluster -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the CreateClusterRequest method. -// req, resp := client.CreateClusterRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateCluster -func (c *EKS) CreateClusterRequest(input *CreateClusterInput) (req *request.Request, output *CreateClusterOutput) { - op := &request.Operation{ - Name: opCreateCluster, - HTTPMethod: "POST", - HTTPPath: "/clusters", - } - - if input == nil { - input = &CreateClusterInput{} - } - - output = &CreateClusterOutput{} - req = c.newRequest(op, input, output) - return -} - -// CreateCluster API operation for Amazon Elastic Kubernetes Service. -// -// Creates an Amazon EKS control plane. -// -// The Amazon EKS control plane consists of control plane instances that run -// the Kubernetes software, such as etcd and the API server. The control plane -// runs in an account managed by AWS, and the Kubernetes API is exposed via -// the Amazon EKS API server endpoint. Each Amazon EKS cluster control plane -// is single-tenant and unique and runs on its own set of Amazon EC2 instances. -// -// The cluster control plane is provisioned across multiple Availability Zones -// and fronted by an Elastic Load Balancing Network Load Balancer. Amazon EKS -// also provisions elastic network interfaces in your VPC subnets to provide -// connectivity from the control plane instances to the nodes (for example, -// to support kubectl exec, logs, and proxy data flows). -// -// Amazon EKS nodes run in your AWS account and connect to your cluster's control -// plane via the Kubernetes API server endpoint and a certificate file that -// is created for your cluster. -// -// Cluster creation typically takes several minutes. After you create an Amazon -// EKS cluster, you must configure your Kubernetes tooling to communicate with -// the API server and launch nodes into your cluster. For more information, -// see Managing Cluster Authentication (https://docs.aws.amazon.com/eks/latest/userguide/managing-auth.html) -// and Launching Amazon EKS nodes (https://docs.aws.amazon.com/eks/latest/userguide/launch-workers.html) -// in the Amazon EKS User Guide. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation CreateCluster for usage and error information. -// -// Returned Error Types: -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceLimitExceededException -// You have encountered a service limit on the specified resource. -// -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// * UnsupportedAvailabilityZoneException -// At least one of your specified cluster subnets is in an Availability Zone -// that does not support Amazon EKS. The exception output specifies the supported -// Availability Zones for your account, from which you can choose subnets for -// your cluster. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateCluster -func (c *EKS) CreateCluster(input *CreateClusterInput) (*CreateClusterOutput, error) { - req, out := c.CreateClusterRequest(input) - return out, req.Send() -} - -// CreateClusterWithContext is the same as CreateCluster with the addition of -// the ability to pass a context and additional request options. -// -// See CreateCluster for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) CreateClusterWithContext(ctx aws.Context, input *CreateClusterInput, opts ...request.Option) (*CreateClusterOutput, error) { - req, out := c.CreateClusterRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opCreateFargateProfile = "CreateFargateProfile" - -// CreateFargateProfileRequest generates a "aws/request.Request" representing the -// client's request for the CreateFargateProfile operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See CreateFargateProfile for more information on using the CreateFargateProfile -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the CreateFargateProfileRequest method. -// req, resp := client.CreateFargateProfileRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateFargateProfile -func (c *EKS) CreateFargateProfileRequest(input *CreateFargateProfileInput) (req *request.Request, output *CreateFargateProfileOutput) { - op := &request.Operation{ - Name: opCreateFargateProfile, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/fargate-profiles", - } - - if input == nil { - input = &CreateFargateProfileInput{} - } - - output = &CreateFargateProfileOutput{} - req = c.newRequest(op, input, output) - return -} - -// CreateFargateProfile API operation for Amazon Elastic Kubernetes Service. -// -// Creates an AWS Fargate profile for your Amazon EKS cluster. You must have -// at least one Fargate profile in a cluster to be able to run pods on Fargate. -// -// The Fargate profile allows an administrator to declare which pods run on -// Fargate and specify which pods run on which Fargate profile. This declaration -// is done through the profile’s selectors. Each profile can have up to five -// selectors that contain a namespace and labels. A namespace is required for -// every selector. The label field consists of multiple optional key-value pairs. -// Pods that match the selectors are scheduled on Fargate. If a to-be-scheduled -// pod matches any of the selectors in the Fargate profile, then that pod is -// run on Fargate. -// -// When you create a Fargate profile, you must specify a pod execution role -// to use with the pods that are scheduled with the profile. This role is added -// to the cluster's Kubernetes Role Based Access Control (https://kubernetes.io/docs/admin/authorization/rbac/) -// (RBAC) for authorization so that the kubelet that is running on the Fargate -// infrastructure can register with your Amazon EKS cluster so that it can appear -// in your cluster as a node. The pod execution role also provides IAM permissions -// to the Fargate infrastructure to allow read access to Amazon ECR image repositories. -// For more information, see Pod Execution Role (https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) -// in the Amazon EKS User Guide. -// -// Fargate profiles are immutable. However, you can create a new updated profile -// to replace an existing profile and then delete the original after the updated -// profile has finished creating. -// -// If any Fargate profiles in a cluster are in the DELETING status, you must -// wait for that Fargate profile to finish deleting before you can create any -// other profiles in that cluster. -// -// For more information, see AWS Fargate Profile (https://docs.aws.amazon.com/eks/latest/userguide/fargate-profile.html) -// in the Amazon EKS User Guide. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation CreateFargateProfile for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceLimitExceededException -// You have encountered a service limit on the specified resource. -// -// * UnsupportedAvailabilityZoneException -// At least one of your specified cluster subnets is in an Availability Zone -// that does not support Amazon EKS. The exception output specifies the supported -// Availability Zones for your account, from which you can choose subnets for -// your cluster. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateFargateProfile -func (c *EKS) CreateFargateProfile(input *CreateFargateProfileInput) (*CreateFargateProfileOutput, error) { - req, out := c.CreateFargateProfileRequest(input) - return out, req.Send() -} - -// CreateFargateProfileWithContext is the same as CreateFargateProfile with the addition of -// the ability to pass a context and additional request options. -// -// See CreateFargateProfile for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) CreateFargateProfileWithContext(ctx aws.Context, input *CreateFargateProfileInput, opts ...request.Option) (*CreateFargateProfileOutput, error) { - req, out := c.CreateFargateProfileRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opCreateNodegroup = "CreateNodegroup" - -// CreateNodegroupRequest generates a "aws/request.Request" representing the -// client's request for the CreateNodegroup operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See CreateNodegroup for more information on using the CreateNodegroup -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the CreateNodegroupRequest method. -// req, resp := client.CreateNodegroupRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateNodegroup -func (c *EKS) CreateNodegroupRequest(input *CreateNodegroupInput) (req *request.Request, output *CreateNodegroupOutput) { - op := &request.Operation{ - Name: opCreateNodegroup, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/node-groups", - } - - if input == nil { - input = &CreateNodegroupInput{} - } - - output = &CreateNodegroupOutput{} - req = c.newRequest(op, input, output) - return -} - -// CreateNodegroup API operation for Amazon Elastic Kubernetes Service. -// -// Creates a managed node group for an Amazon EKS cluster. You can only create -// a node group for your cluster that is equal to the current Kubernetes version -// for the cluster. All node groups are created with the latest AMI release -// version for the respective minor Kubernetes version of the cluster, unless -// you deploy a custom AMI using a launch template. For more information about -// using launch templates, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html). -// -// An Amazon EKS managed node group is an Amazon EC2 Auto Scaling group and -// associated Amazon EC2 instances that are managed by AWS for an Amazon EKS -// cluster. Each node group uses a version of the Amazon EKS optimized Amazon -// Linux 2 AMI. For more information, see Managed Node Groups (https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html) -// in the Amazon EKS User Guide. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation CreateNodegroup for usage and error information. -// -// Returned Error Types: -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceLimitExceededException -// You have encountered a service limit on the specified resource. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/CreateNodegroup -func (c *EKS) CreateNodegroup(input *CreateNodegroupInput) (*CreateNodegroupOutput, error) { - req, out := c.CreateNodegroupRequest(input) - return out, req.Send() -} - -// CreateNodegroupWithContext is the same as CreateNodegroup with the addition of -// the ability to pass a context and additional request options. -// -// See CreateNodegroup for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) CreateNodegroupWithContext(ctx aws.Context, input *CreateNodegroupInput, opts ...request.Option) (*CreateNodegroupOutput, error) { - req, out := c.CreateNodegroupRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDeleteAddon = "DeleteAddon" - -// DeleteAddonRequest generates a "aws/request.Request" representing the -// client's request for the DeleteAddon operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DeleteAddon for more information on using the DeleteAddon -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DeleteAddonRequest method. -// req, resp := client.DeleteAddonRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteAddon -func (c *EKS) DeleteAddonRequest(input *DeleteAddonInput) (req *request.Request, output *DeleteAddonOutput) { - op := &request.Operation{ - Name: opDeleteAddon, - HTTPMethod: "DELETE", - HTTPPath: "/clusters/{name}/addons/{addonName}", - } - - if input == nil { - input = &DeleteAddonInput{} - } - - output = &DeleteAddonOutput{} - req = c.newRequest(op, input, output) - return -} - -// DeleteAddon API operation for Amazon Elastic Kubernetes Service. -// -// Delete an Amazon EKS add-on. -// -// When you remove the add-on, it will also be deleted from the cluster. You -// can always manually start an add-on on the cluster using the Kubernetes API. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DeleteAddon for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteAddon -func (c *EKS) DeleteAddon(input *DeleteAddonInput) (*DeleteAddonOutput, error) { - req, out := c.DeleteAddonRequest(input) - return out, req.Send() -} - -// DeleteAddonWithContext is the same as DeleteAddon with the addition of -// the ability to pass a context and additional request options. -// -// See DeleteAddon for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DeleteAddonWithContext(ctx aws.Context, input *DeleteAddonInput, opts ...request.Option) (*DeleteAddonOutput, error) { - req, out := c.DeleteAddonRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDeleteCluster = "DeleteCluster" - -// DeleteClusterRequest generates a "aws/request.Request" representing the -// client's request for the DeleteCluster operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DeleteCluster for more information on using the DeleteCluster -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DeleteClusterRequest method. -// req, resp := client.DeleteClusterRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteCluster -func (c *EKS) DeleteClusterRequest(input *DeleteClusterInput) (req *request.Request, output *DeleteClusterOutput) { - op := &request.Operation{ - Name: opDeleteCluster, - HTTPMethod: "DELETE", - HTTPPath: "/clusters/{name}", - } - - if input == nil { - input = &DeleteClusterInput{} - } - - output = &DeleteClusterOutput{} - req = c.newRequest(op, input, output) - return -} - -// DeleteCluster API operation for Amazon Elastic Kubernetes Service. -// -// Deletes the Amazon EKS cluster control plane. -// -// If you have active services in your cluster that are associated with a load -// balancer, you must delete those services before deleting the cluster so that -// the load balancers are deleted properly. Otherwise, you can have orphaned -// resources in your VPC that prevent you from being able to delete the VPC. -// For more information, see Deleting a Cluster (https://docs.aws.amazon.com/eks/latest/userguide/delete-cluster.html) -// in the Amazon EKS User Guide. -// -// If you have managed node groups or Fargate profiles attached to the cluster, -// you must delete them first. For more information, see DeleteNodegroup and -// DeleteFargateProfile. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DeleteCluster for usage and error information. -// -// Returned Error Types: -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteCluster -func (c *EKS) DeleteCluster(input *DeleteClusterInput) (*DeleteClusterOutput, error) { - req, out := c.DeleteClusterRequest(input) - return out, req.Send() -} - -// DeleteClusterWithContext is the same as DeleteCluster with the addition of -// the ability to pass a context and additional request options. -// -// See DeleteCluster for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DeleteClusterWithContext(ctx aws.Context, input *DeleteClusterInput, opts ...request.Option) (*DeleteClusterOutput, error) { - req, out := c.DeleteClusterRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDeleteFargateProfile = "DeleteFargateProfile" - -// DeleteFargateProfileRequest generates a "aws/request.Request" representing the -// client's request for the DeleteFargateProfile operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DeleteFargateProfile for more information on using the DeleteFargateProfile -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DeleteFargateProfileRequest method. -// req, resp := client.DeleteFargateProfileRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteFargateProfile -func (c *EKS) DeleteFargateProfileRequest(input *DeleteFargateProfileInput) (req *request.Request, output *DeleteFargateProfileOutput) { - op := &request.Operation{ - Name: opDeleteFargateProfile, - HTTPMethod: "DELETE", - HTTPPath: "/clusters/{name}/fargate-profiles/{fargateProfileName}", - } - - if input == nil { - input = &DeleteFargateProfileInput{} - } - - output = &DeleteFargateProfileOutput{} - req = c.newRequest(op, input, output) - return -} - -// DeleteFargateProfile API operation for Amazon Elastic Kubernetes Service. -// -// Deletes an AWS Fargate profile. -// -// When you delete a Fargate profile, any pods running on Fargate that were -// created with the profile are deleted. If those pods match another Fargate -// profile, then they are scheduled on Fargate with that profile. If they no -// longer match any Fargate profiles, then they are not scheduled on Fargate -// and they may remain in a pending state. -// -// Only one Fargate profile in a cluster can be in the DELETING status at a -// time. You must wait for a Fargate profile to finish deleting before you can -// delete any other profiles in that cluster. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DeleteFargateProfile for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteFargateProfile -func (c *EKS) DeleteFargateProfile(input *DeleteFargateProfileInput) (*DeleteFargateProfileOutput, error) { - req, out := c.DeleteFargateProfileRequest(input) - return out, req.Send() -} - -// DeleteFargateProfileWithContext is the same as DeleteFargateProfile with the addition of -// the ability to pass a context and additional request options. -// -// See DeleteFargateProfile for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DeleteFargateProfileWithContext(ctx aws.Context, input *DeleteFargateProfileInput, opts ...request.Option) (*DeleteFargateProfileOutput, error) { - req, out := c.DeleteFargateProfileRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDeleteNodegroup = "DeleteNodegroup" - -// DeleteNodegroupRequest generates a "aws/request.Request" representing the -// client's request for the DeleteNodegroup operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DeleteNodegroup for more information on using the DeleteNodegroup -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DeleteNodegroupRequest method. -// req, resp := client.DeleteNodegroupRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteNodegroup -func (c *EKS) DeleteNodegroupRequest(input *DeleteNodegroupInput) (req *request.Request, output *DeleteNodegroupOutput) { - op := &request.Operation{ - Name: opDeleteNodegroup, - HTTPMethod: "DELETE", - HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}", - } - - if input == nil { - input = &DeleteNodegroupInput{} - } - - output = &DeleteNodegroupOutput{} - req = c.newRequest(op, input, output) - return -} - -// DeleteNodegroup API operation for Amazon Elastic Kubernetes Service. -// -// Deletes an Amazon EKS node group for a cluster. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DeleteNodegroup for usage and error information. -// -// Returned Error Types: -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DeleteNodegroup -func (c *EKS) DeleteNodegroup(input *DeleteNodegroupInput) (*DeleteNodegroupOutput, error) { - req, out := c.DeleteNodegroupRequest(input) - return out, req.Send() -} - -// DeleteNodegroupWithContext is the same as DeleteNodegroup with the addition of -// the ability to pass a context and additional request options. -// -// See DeleteNodegroup for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DeleteNodegroupWithContext(ctx aws.Context, input *DeleteNodegroupInput, opts ...request.Option) (*DeleteNodegroupOutput, error) { - req, out := c.DeleteNodegroupRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDescribeAddon = "DescribeAddon" - -// DescribeAddonRequest generates a "aws/request.Request" representing the -// client's request for the DescribeAddon operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeAddon for more information on using the DescribeAddon -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeAddonRequest method. -// req, resp := client.DescribeAddonRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddon -func (c *EKS) DescribeAddonRequest(input *DescribeAddonInput) (req *request.Request, output *DescribeAddonOutput) { - op := &request.Operation{ - Name: opDescribeAddon, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/addons/{addonName}", - } - - if input == nil { - input = &DescribeAddonInput{} - } - - output = &DescribeAddonOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeAddon API operation for Amazon Elastic Kubernetes Service. -// -// Describes an Amazon EKS add-on. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeAddon for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddon -func (c *EKS) DescribeAddon(input *DescribeAddonInput) (*DescribeAddonOutput, error) { - req, out := c.DescribeAddonRequest(input) - return out, req.Send() -} - -// DescribeAddonWithContext is the same as DescribeAddon with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeAddon for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeAddonWithContext(ctx aws.Context, input *DescribeAddonInput, opts ...request.Option) (*DescribeAddonOutput, error) { - req, out := c.DescribeAddonRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDescribeAddonVersions = "DescribeAddonVersions" - -// DescribeAddonVersionsRequest generates a "aws/request.Request" representing the -// client's request for the DescribeAddonVersions operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeAddonVersions for more information on using the DescribeAddonVersions -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeAddonVersionsRequest method. -// req, resp := client.DescribeAddonVersionsRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddonVersions -func (c *EKS) DescribeAddonVersionsRequest(input *DescribeAddonVersionsInput) (req *request.Request, output *DescribeAddonVersionsOutput) { - op := &request.Operation{ - Name: opDescribeAddonVersions, - HTTPMethod: "GET", - HTTPPath: "/addons/supported-versions", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &DescribeAddonVersionsInput{} - } - - output = &DescribeAddonVersionsOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeAddonVersions API operation for Amazon Elastic Kubernetes Service. -// -// Describes the Kubernetes versions that the add-on can be used with. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeAddonVersions for usage and error information. -// -// Returned Error Types: -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeAddonVersions -func (c *EKS) DescribeAddonVersions(input *DescribeAddonVersionsInput) (*DescribeAddonVersionsOutput, error) { - req, out := c.DescribeAddonVersionsRequest(input) - return out, req.Send() -} - -// DescribeAddonVersionsWithContext is the same as DescribeAddonVersions with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeAddonVersions for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeAddonVersionsWithContext(ctx aws.Context, input *DescribeAddonVersionsInput, opts ...request.Option) (*DescribeAddonVersionsOutput, error) { - req, out := c.DescribeAddonVersionsRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// DescribeAddonVersionsPages iterates over the pages of a DescribeAddonVersions operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See DescribeAddonVersions method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a DescribeAddonVersions operation. -// pageNum := 0 -// err := client.DescribeAddonVersionsPages(params, -// func(page *eks.DescribeAddonVersionsOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) DescribeAddonVersionsPages(input *DescribeAddonVersionsInput, fn func(*DescribeAddonVersionsOutput, bool) bool) error { - return c.DescribeAddonVersionsPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// DescribeAddonVersionsPagesWithContext same as DescribeAddonVersionsPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeAddonVersionsPagesWithContext(ctx aws.Context, input *DescribeAddonVersionsInput, fn func(*DescribeAddonVersionsOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *DescribeAddonVersionsInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeAddonVersionsRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*DescribeAddonVersionsOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opDescribeCluster = "DescribeCluster" - -// DescribeClusterRequest generates a "aws/request.Request" representing the -// client's request for the DescribeCluster operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeCluster for more information on using the DescribeCluster -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeClusterRequest method. -// req, resp := client.DescribeClusterRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeCluster -func (c *EKS) DescribeClusterRequest(input *DescribeClusterInput) (req *request.Request, output *DescribeClusterOutput) { - op := &request.Operation{ - Name: opDescribeCluster, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}", - } - - if input == nil { - input = &DescribeClusterInput{} - } - - output = &DescribeClusterOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeCluster API operation for Amazon Elastic Kubernetes Service. -// -// Returns descriptive information about an Amazon EKS cluster. -// -// The API server endpoint and certificate authority data returned by this operation -// are required for kubelet and kubectl to communicate with your Kubernetes -// API server. For more information, see Create a kubeconfig for Amazon EKS -// (https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html). -// -// The API server endpoint and certificate authority data aren't available until -// the cluster reaches the ACTIVE state. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeCluster for usage and error information. -// -// Returned Error Types: -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeCluster -func (c *EKS) DescribeCluster(input *DescribeClusterInput) (*DescribeClusterOutput, error) { - req, out := c.DescribeClusterRequest(input) - return out, req.Send() -} - -// DescribeClusterWithContext is the same as DescribeCluster with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeCluster for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeClusterWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.Option) (*DescribeClusterOutput, error) { - req, out := c.DescribeClusterRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDescribeFargateProfile = "DescribeFargateProfile" - -// DescribeFargateProfileRequest generates a "aws/request.Request" representing the -// client's request for the DescribeFargateProfile operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeFargateProfile for more information on using the DescribeFargateProfile -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeFargateProfileRequest method. -// req, resp := client.DescribeFargateProfileRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeFargateProfile -func (c *EKS) DescribeFargateProfileRequest(input *DescribeFargateProfileInput) (req *request.Request, output *DescribeFargateProfileOutput) { - op := &request.Operation{ - Name: opDescribeFargateProfile, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/fargate-profiles/{fargateProfileName}", - } - - if input == nil { - input = &DescribeFargateProfileInput{} - } - - output = &DescribeFargateProfileOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeFargateProfile API operation for Amazon Elastic Kubernetes Service. -// -// Returns descriptive information about an AWS Fargate profile. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeFargateProfile for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeFargateProfile -func (c *EKS) DescribeFargateProfile(input *DescribeFargateProfileInput) (*DescribeFargateProfileOutput, error) { - req, out := c.DescribeFargateProfileRequest(input) - return out, req.Send() -} - -// DescribeFargateProfileWithContext is the same as DescribeFargateProfile with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeFargateProfile for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeFargateProfileWithContext(ctx aws.Context, input *DescribeFargateProfileInput, opts ...request.Option) (*DescribeFargateProfileOutput, error) { - req, out := c.DescribeFargateProfileRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDescribeIdentityProviderConfig = "DescribeIdentityProviderConfig" - -// DescribeIdentityProviderConfigRequest generates a "aws/request.Request" representing the -// client's request for the DescribeIdentityProviderConfig operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeIdentityProviderConfig for more information on using the DescribeIdentityProviderConfig -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeIdentityProviderConfigRequest method. -// req, resp := client.DescribeIdentityProviderConfigRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeIdentityProviderConfig -func (c *EKS) DescribeIdentityProviderConfigRequest(input *DescribeIdentityProviderConfigInput) (req *request.Request, output *DescribeIdentityProviderConfigOutput) { - op := &request.Operation{ - Name: opDescribeIdentityProviderConfig, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/identity-provider-configs/describe", - } - - if input == nil { - input = &DescribeIdentityProviderConfigInput{} - } - - output = &DescribeIdentityProviderConfigOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeIdentityProviderConfig API operation for Amazon Elastic Kubernetes Service. -// -// Returns descriptive information about an identity provider configuration. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeIdentityProviderConfig for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeIdentityProviderConfig -func (c *EKS) DescribeIdentityProviderConfig(input *DescribeIdentityProviderConfigInput) (*DescribeIdentityProviderConfigOutput, error) { - req, out := c.DescribeIdentityProviderConfigRequest(input) - return out, req.Send() -} - -// DescribeIdentityProviderConfigWithContext is the same as DescribeIdentityProviderConfig with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeIdentityProviderConfig for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeIdentityProviderConfigWithContext(ctx aws.Context, input *DescribeIdentityProviderConfigInput, opts ...request.Option) (*DescribeIdentityProviderConfigOutput, error) { - req, out := c.DescribeIdentityProviderConfigRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDescribeNodegroup = "DescribeNodegroup" - -// DescribeNodegroupRequest generates a "aws/request.Request" representing the -// client's request for the DescribeNodegroup operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeNodegroup for more information on using the DescribeNodegroup -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeNodegroupRequest method. -// req, resp := client.DescribeNodegroupRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeNodegroup -func (c *EKS) DescribeNodegroupRequest(input *DescribeNodegroupInput) (req *request.Request, output *DescribeNodegroupOutput) { - op := &request.Operation{ - Name: opDescribeNodegroup, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}", - } - - if input == nil { - input = &DescribeNodegroupInput{} - } - - output = &DescribeNodegroupOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeNodegroup API operation for Amazon Elastic Kubernetes Service. -// -// Returns descriptive information about an Amazon EKS node group. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeNodegroup for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeNodegroup -func (c *EKS) DescribeNodegroup(input *DescribeNodegroupInput) (*DescribeNodegroupOutput, error) { - req, out := c.DescribeNodegroupRequest(input) - return out, req.Send() -} - -// DescribeNodegroupWithContext is the same as DescribeNodegroup with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeNodegroup for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeNodegroupWithContext(ctx aws.Context, input *DescribeNodegroupInput, opts ...request.Option) (*DescribeNodegroupOutput, error) { - req, out := c.DescribeNodegroupRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDescribeUpdate = "DescribeUpdate" - -// DescribeUpdateRequest generates a "aws/request.Request" representing the -// client's request for the DescribeUpdate operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DescribeUpdate for more information on using the DescribeUpdate -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DescribeUpdateRequest method. -// req, resp := client.DescribeUpdateRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeUpdate -func (c *EKS) DescribeUpdateRequest(input *DescribeUpdateInput) (req *request.Request, output *DescribeUpdateOutput) { - op := &request.Operation{ - Name: opDescribeUpdate, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/updates/{updateId}", - } - - if input == nil { - input = &DescribeUpdateInput{} - } - - output = &DescribeUpdateOutput{} - req = c.newRequest(op, input, output) - return -} - -// DescribeUpdate API operation for Amazon Elastic Kubernetes Service. -// -// Returns descriptive information about an update against your Amazon EKS cluster -// or associated managed node group. -// -// When the status of the update is Succeeded, the update is complete. If an -// update fails, the status is Failed, and an error detail explains the reason -// for the failure. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DescribeUpdate for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DescribeUpdate -func (c *EKS) DescribeUpdate(input *DescribeUpdateInput) (*DescribeUpdateOutput, error) { - req, out := c.DescribeUpdateRequest(input) - return out, req.Send() -} - -// DescribeUpdateWithContext is the same as DescribeUpdate with the addition of -// the ability to pass a context and additional request options. -// -// See DescribeUpdate for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DescribeUpdateWithContext(ctx aws.Context, input *DescribeUpdateInput, opts ...request.Option) (*DescribeUpdateOutput, error) { - req, out := c.DescribeUpdateRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opDisassociateIdentityProviderConfig = "DisassociateIdentityProviderConfig" - -// DisassociateIdentityProviderConfigRequest generates a "aws/request.Request" representing the -// client's request for the DisassociateIdentityProviderConfig operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See DisassociateIdentityProviderConfig for more information on using the DisassociateIdentityProviderConfig -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the DisassociateIdentityProviderConfigRequest method. -// req, resp := client.DisassociateIdentityProviderConfigRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DisassociateIdentityProviderConfig -func (c *EKS) DisassociateIdentityProviderConfigRequest(input *DisassociateIdentityProviderConfigInput) (req *request.Request, output *DisassociateIdentityProviderConfigOutput) { - op := &request.Operation{ - Name: opDisassociateIdentityProviderConfig, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/identity-provider-configs/disassociate", - } - - if input == nil { - input = &DisassociateIdentityProviderConfigInput{} - } - - output = &DisassociateIdentityProviderConfigOutput{} - req = c.newRequest(op, input, output) - return -} - -// DisassociateIdentityProviderConfig API operation for Amazon Elastic Kubernetes Service. -// -// Disassociates an identity provider configuration from a cluster. If you disassociate -// an identity provider from your cluster, users included in the provider can -// no longer access the cluster. However, you can still access the cluster with -// AWS IAM users. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation DisassociateIdentityProviderConfig for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/DisassociateIdentityProviderConfig -func (c *EKS) DisassociateIdentityProviderConfig(input *DisassociateIdentityProviderConfigInput) (*DisassociateIdentityProviderConfigOutput, error) { - req, out := c.DisassociateIdentityProviderConfigRequest(input) - return out, req.Send() -} - -// DisassociateIdentityProviderConfigWithContext is the same as DisassociateIdentityProviderConfig with the addition of -// the ability to pass a context and additional request options. -// -// See DisassociateIdentityProviderConfig for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) DisassociateIdentityProviderConfigWithContext(ctx aws.Context, input *DisassociateIdentityProviderConfigInput, opts ...request.Option) (*DisassociateIdentityProviderConfigOutput, error) { - req, out := c.DisassociateIdentityProviderConfigRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opListAddons = "ListAddons" - -// ListAddonsRequest generates a "aws/request.Request" representing the -// client's request for the ListAddons operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListAddons for more information on using the ListAddons -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListAddonsRequest method. -// req, resp := client.ListAddonsRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListAddons -func (c *EKS) ListAddonsRequest(input *ListAddonsInput) (req *request.Request, output *ListAddonsOutput) { - op := &request.Operation{ - Name: opListAddons, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/addons", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &ListAddonsInput{} - } - - output = &ListAddonsOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListAddons API operation for Amazon Elastic Kubernetes Service. -// -// Lists the available add-ons. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListAddons for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListAddons -func (c *EKS) ListAddons(input *ListAddonsInput) (*ListAddonsOutput, error) { - req, out := c.ListAddonsRequest(input) - return out, req.Send() -} - -// ListAddonsWithContext is the same as ListAddons with the addition of -// the ability to pass a context and additional request options. -// -// See ListAddons for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListAddonsWithContext(ctx aws.Context, input *ListAddonsInput, opts ...request.Option) (*ListAddonsOutput, error) { - req, out := c.ListAddonsRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// ListAddonsPages iterates over the pages of a ListAddons operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See ListAddons method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a ListAddons operation. -// pageNum := 0 -// err := client.ListAddonsPages(params, -// func(page *eks.ListAddonsOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) ListAddonsPages(input *ListAddonsInput, fn func(*ListAddonsOutput, bool) bool) error { - return c.ListAddonsPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// ListAddonsPagesWithContext same as ListAddonsPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListAddonsPagesWithContext(ctx aws.Context, input *ListAddonsInput, fn func(*ListAddonsOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *ListAddonsInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.ListAddonsRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*ListAddonsOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opListClusters = "ListClusters" - -// ListClustersRequest generates a "aws/request.Request" representing the -// client's request for the ListClusters operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListClusters for more information on using the ListClusters -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListClustersRequest method. -// req, resp := client.ListClustersRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListClusters -func (c *EKS) ListClustersRequest(input *ListClustersInput) (req *request.Request, output *ListClustersOutput) { - op := &request.Operation{ - Name: opListClusters, - HTTPMethod: "GET", - HTTPPath: "/clusters", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &ListClustersInput{} - } - - output = &ListClustersOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListClusters API operation for Amazon Elastic Kubernetes Service. -// -// Lists the Amazon EKS clusters in your AWS account in the specified Region. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListClusters for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListClusters -func (c *EKS) ListClusters(input *ListClustersInput) (*ListClustersOutput, error) { - req, out := c.ListClustersRequest(input) - return out, req.Send() -} - -// ListClustersWithContext is the same as ListClusters with the addition of -// the ability to pass a context and additional request options. -// -// See ListClusters for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListClustersWithContext(ctx aws.Context, input *ListClustersInput, opts ...request.Option) (*ListClustersOutput, error) { - req, out := c.ListClustersRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// ListClustersPages iterates over the pages of a ListClusters operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See ListClusters method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a ListClusters operation. -// pageNum := 0 -// err := client.ListClustersPages(params, -// func(page *eks.ListClustersOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) ListClustersPages(input *ListClustersInput, fn func(*ListClustersOutput, bool) bool) error { - return c.ListClustersPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// ListClustersPagesWithContext same as ListClustersPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListClustersPagesWithContext(ctx aws.Context, input *ListClustersInput, fn func(*ListClustersOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *ListClustersInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.ListClustersRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*ListClustersOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opListFargateProfiles = "ListFargateProfiles" - -// ListFargateProfilesRequest generates a "aws/request.Request" representing the -// client's request for the ListFargateProfiles operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListFargateProfiles for more information on using the ListFargateProfiles -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListFargateProfilesRequest method. -// req, resp := client.ListFargateProfilesRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListFargateProfiles -func (c *EKS) ListFargateProfilesRequest(input *ListFargateProfilesInput) (req *request.Request, output *ListFargateProfilesOutput) { - op := &request.Operation{ - Name: opListFargateProfiles, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/fargate-profiles", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &ListFargateProfilesInput{} - } - - output = &ListFargateProfilesOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListFargateProfiles API operation for Amazon Elastic Kubernetes Service. -// -// Lists the AWS Fargate profiles associated with the specified cluster in your -// AWS account in the specified Region. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListFargateProfiles for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListFargateProfiles -func (c *EKS) ListFargateProfiles(input *ListFargateProfilesInput) (*ListFargateProfilesOutput, error) { - req, out := c.ListFargateProfilesRequest(input) - return out, req.Send() -} - -// ListFargateProfilesWithContext is the same as ListFargateProfiles with the addition of -// the ability to pass a context and additional request options. -// -// See ListFargateProfiles for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListFargateProfilesWithContext(ctx aws.Context, input *ListFargateProfilesInput, opts ...request.Option) (*ListFargateProfilesOutput, error) { - req, out := c.ListFargateProfilesRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// ListFargateProfilesPages iterates over the pages of a ListFargateProfiles operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See ListFargateProfiles method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a ListFargateProfiles operation. -// pageNum := 0 -// err := client.ListFargateProfilesPages(params, -// func(page *eks.ListFargateProfilesOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) ListFargateProfilesPages(input *ListFargateProfilesInput, fn func(*ListFargateProfilesOutput, bool) bool) error { - return c.ListFargateProfilesPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// ListFargateProfilesPagesWithContext same as ListFargateProfilesPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListFargateProfilesPagesWithContext(ctx aws.Context, input *ListFargateProfilesInput, fn func(*ListFargateProfilesOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *ListFargateProfilesInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.ListFargateProfilesRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*ListFargateProfilesOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opListIdentityProviderConfigs = "ListIdentityProviderConfigs" - -// ListIdentityProviderConfigsRequest generates a "aws/request.Request" representing the -// client's request for the ListIdentityProviderConfigs operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListIdentityProviderConfigs for more information on using the ListIdentityProviderConfigs -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListIdentityProviderConfigsRequest method. -// req, resp := client.ListIdentityProviderConfigsRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListIdentityProviderConfigs -func (c *EKS) ListIdentityProviderConfigsRequest(input *ListIdentityProviderConfigsInput) (req *request.Request, output *ListIdentityProviderConfigsOutput) { - op := &request.Operation{ - Name: opListIdentityProviderConfigs, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/identity-provider-configs", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &ListIdentityProviderConfigsInput{} - } - - output = &ListIdentityProviderConfigsOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListIdentityProviderConfigs API operation for Amazon Elastic Kubernetes Service. -// -// A list of identity provider configurations. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListIdentityProviderConfigs for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListIdentityProviderConfigs -func (c *EKS) ListIdentityProviderConfigs(input *ListIdentityProviderConfigsInput) (*ListIdentityProviderConfigsOutput, error) { - req, out := c.ListIdentityProviderConfigsRequest(input) - return out, req.Send() -} - -// ListIdentityProviderConfigsWithContext is the same as ListIdentityProviderConfigs with the addition of -// the ability to pass a context and additional request options. -// -// See ListIdentityProviderConfigs for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListIdentityProviderConfigsWithContext(ctx aws.Context, input *ListIdentityProviderConfigsInput, opts ...request.Option) (*ListIdentityProviderConfigsOutput, error) { - req, out := c.ListIdentityProviderConfigsRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// ListIdentityProviderConfigsPages iterates over the pages of a ListIdentityProviderConfigs operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See ListIdentityProviderConfigs method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a ListIdentityProviderConfigs operation. -// pageNum := 0 -// err := client.ListIdentityProviderConfigsPages(params, -// func(page *eks.ListIdentityProviderConfigsOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) ListIdentityProviderConfigsPages(input *ListIdentityProviderConfigsInput, fn func(*ListIdentityProviderConfigsOutput, bool) bool) error { - return c.ListIdentityProviderConfigsPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// ListIdentityProviderConfigsPagesWithContext same as ListIdentityProviderConfigsPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListIdentityProviderConfigsPagesWithContext(ctx aws.Context, input *ListIdentityProviderConfigsInput, fn func(*ListIdentityProviderConfigsOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *ListIdentityProviderConfigsInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.ListIdentityProviderConfigsRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*ListIdentityProviderConfigsOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opListNodegroups = "ListNodegroups" - -// ListNodegroupsRequest generates a "aws/request.Request" representing the -// client's request for the ListNodegroups operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListNodegroups for more information on using the ListNodegroups -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListNodegroupsRequest method. -// req, resp := client.ListNodegroupsRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListNodegroups -func (c *EKS) ListNodegroupsRequest(input *ListNodegroupsInput) (req *request.Request, output *ListNodegroupsOutput) { - op := &request.Operation{ - Name: opListNodegroups, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/node-groups", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &ListNodegroupsInput{} - } - - output = &ListNodegroupsOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListNodegroups API operation for Amazon Elastic Kubernetes Service. -// -// Lists the Amazon EKS managed node groups associated with the specified cluster -// in your AWS account in the specified Region. Self-managed node groups are -// not listed. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListNodegroups for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ServiceUnavailableException -// The service is unavailable. Back off and retry the operation. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListNodegroups -func (c *EKS) ListNodegroups(input *ListNodegroupsInput) (*ListNodegroupsOutput, error) { - req, out := c.ListNodegroupsRequest(input) - return out, req.Send() -} - -// ListNodegroupsWithContext is the same as ListNodegroups with the addition of -// the ability to pass a context and additional request options. -// -// See ListNodegroups for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListNodegroupsWithContext(ctx aws.Context, input *ListNodegroupsInput, opts ...request.Option) (*ListNodegroupsOutput, error) { - req, out := c.ListNodegroupsRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// ListNodegroupsPages iterates over the pages of a ListNodegroups operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See ListNodegroups method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a ListNodegroups operation. -// pageNum := 0 -// err := client.ListNodegroupsPages(params, -// func(page *eks.ListNodegroupsOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) ListNodegroupsPages(input *ListNodegroupsInput, fn func(*ListNodegroupsOutput, bool) bool) error { - return c.ListNodegroupsPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// ListNodegroupsPagesWithContext same as ListNodegroupsPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListNodegroupsPagesWithContext(ctx aws.Context, input *ListNodegroupsInput, fn func(*ListNodegroupsOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *ListNodegroupsInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.ListNodegroupsRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*ListNodegroupsOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opListTagsForResource = "ListTagsForResource" - -// ListTagsForResourceRequest generates a "aws/request.Request" representing the -// client's request for the ListTagsForResource operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListTagsForResource for more information on using the ListTagsForResource -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListTagsForResourceRequest method. -// req, resp := client.ListTagsForResourceRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListTagsForResource -func (c *EKS) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) { - op := &request.Operation{ - Name: opListTagsForResource, - HTTPMethod: "GET", - HTTPPath: "/tags/{resourceArn}", - } - - if input == nil { - input = &ListTagsForResourceInput{} - } - - output = &ListTagsForResourceOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListTagsForResource API operation for Amazon Elastic Kubernetes Service. -// -// List the tags for an Amazon EKS resource. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListTagsForResource for usage and error information. -// -// Returned Error Types: -// * BadRequestException -// This exception is thrown if the request contains a semantic error. The precise -// meaning will depend on the API, and will be documented in the error message. -// -// * NotFoundException -// A service resource associated with the request could not be found. Clients -// should not retry such requests. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListTagsForResource -func (c *EKS) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) { - req, out := c.ListTagsForResourceRequest(input) - return out, req.Send() -} - -// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of -// the ability to pass a context and additional request options. -// -// See ListTagsForResource for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) { - req, out := c.ListTagsForResourceRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opListUpdates = "ListUpdates" - -// ListUpdatesRequest generates a "aws/request.Request" representing the -// client's request for the ListUpdates operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See ListUpdates for more information on using the ListUpdates -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the ListUpdatesRequest method. -// req, resp := client.ListUpdatesRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListUpdates -func (c *EKS) ListUpdatesRequest(input *ListUpdatesInput) (req *request.Request, output *ListUpdatesOutput) { - op := &request.Operation{ - Name: opListUpdates, - HTTPMethod: "GET", - HTTPPath: "/clusters/{name}/updates", - Paginator: &request.Paginator{ - InputTokens: []string{"nextToken"}, - OutputTokens: []string{"nextToken"}, - LimitToken: "maxResults", - TruncationToken: "", - }, - } - - if input == nil { - input = &ListUpdatesInput{} - } - - output = &ListUpdatesOutput{} - req = c.newRequest(op, input, output) - return -} - -// ListUpdates API operation for Amazon Elastic Kubernetes Service. -// -// Lists the updates associated with an Amazon EKS cluster or managed node group -// in your AWS account, in the specified Region. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation ListUpdates for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/ListUpdates -func (c *EKS) ListUpdates(input *ListUpdatesInput) (*ListUpdatesOutput, error) { - req, out := c.ListUpdatesRequest(input) - return out, req.Send() -} - -// ListUpdatesWithContext is the same as ListUpdates with the addition of -// the ability to pass a context and additional request options. -// -// See ListUpdates for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListUpdatesWithContext(ctx aws.Context, input *ListUpdatesInput, opts ...request.Option) (*ListUpdatesOutput, error) { - req, out := c.ListUpdatesRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// ListUpdatesPages iterates over the pages of a ListUpdates operation, -// calling the "fn" function with the response data for each page. To stop -// iterating, return false from the fn function. -// -// See ListUpdates method for more information on how to use this operation. -// -// Note: This operation can generate multiple requests to a service. -// -// // Example iterating over at most 3 pages of a ListUpdates operation. -// pageNum := 0 -// err := client.ListUpdatesPages(params, -// func(page *eks.ListUpdatesOutput, lastPage bool) bool { -// pageNum++ -// fmt.Println(page) -// return pageNum <= 3 -// }) -// -func (c *EKS) ListUpdatesPages(input *ListUpdatesInput, fn func(*ListUpdatesOutput, bool) bool) error { - return c.ListUpdatesPagesWithContext(aws.BackgroundContext(), input, fn) -} - -// ListUpdatesPagesWithContext same as ListUpdatesPages except -// it takes a Context and allows setting request options on the pages. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) ListUpdatesPagesWithContext(ctx aws.Context, input *ListUpdatesInput, fn func(*ListUpdatesOutput, bool) bool, opts ...request.Option) error { - p := request.Pagination{ - NewRequest: func() (*request.Request, error) { - var inCpy *ListUpdatesInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.ListUpdatesRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - - for p.Next() { - if !fn(p.Page().(*ListUpdatesOutput), !p.HasNextPage()) { - break - } - } - - return p.Err() -} - -const opTagResource = "TagResource" - -// TagResourceRequest generates a "aws/request.Request" representing the -// client's request for the TagResource operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See TagResource for more information on using the TagResource -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the TagResourceRequest method. -// req, resp := client.TagResourceRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/TagResource -func (c *EKS) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) { - op := &request.Operation{ - Name: opTagResource, - HTTPMethod: "POST", - HTTPPath: "/tags/{resourceArn}", - } - - if input == nil { - input = &TagResourceInput{} - } - - output = &TagResourceOutput{} - req = c.newRequest(op, input, output) - req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) - return -} - -// TagResource API operation for Amazon Elastic Kubernetes Service. -// -// Associates the specified tags to a resource with the specified resourceArn. -// If existing tags on a resource are not specified in the request parameters, -// they are not changed. When a resource is deleted, the tags associated with -// that resource are deleted as well. Tags that you create for Amazon EKS resources -// do not propagate to any other resources associated with the cluster. For -// example, if you tag a cluster with this operation, that tag does not automatically -// propagate to the subnets and nodes associated with the cluster. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation TagResource for usage and error information. -// -// Returned Error Types: -// * BadRequestException -// This exception is thrown if the request contains a semantic error. The precise -// meaning will depend on the API, and will be documented in the error message. -// -// * NotFoundException -// A service resource associated with the request could not be found. Clients -// should not retry such requests. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/TagResource -func (c *EKS) TagResource(input *TagResourceInput) (*TagResourceOutput, error) { - req, out := c.TagResourceRequest(input) - return out, req.Send() -} - -// TagResourceWithContext is the same as TagResource with the addition of -// the ability to pass a context and additional request options. -// -// See TagResource for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) { - req, out := c.TagResourceRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opUntagResource = "UntagResource" - -// UntagResourceRequest generates a "aws/request.Request" representing the -// client's request for the UntagResource operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See UntagResource for more information on using the UntagResource -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the UntagResourceRequest method. -// req, resp := client.UntagResourceRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UntagResource -func (c *EKS) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) { - op := &request.Operation{ - Name: opUntagResource, - HTTPMethod: "DELETE", - HTTPPath: "/tags/{resourceArn}", - } - - if input == nil { - input = &UntagResourceInput{} - } - - output = &UntagResourceOutput{} - req = c.newRequest(op, input, output) - req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler) - return -} - -// UntagResource API operation for Amazon Elastic Kubernetes Service. -// -// Deletes specified tags from a resource. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation UntagResource for usage and error information. -// -// Returned Error Types: -// * BadRequestException -// This exception is thrown if the request contains a semantic error. The precise -// meaning will depend on the API, and will be documented in the error message. -// -// * NotFoundException -// A service resource associated with the request could not be found. Clients -// should not retry such requests. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UntagResource -func (c *EKS) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) { - req, out := c.UntagResourceRequest(input) - return out, req.Send() -} - -// UntagResourceWithContext is the same as UntagResource with the addition of -// the ability to pass a context and additional request options. -// -// See UntagResource for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) { - req, out := c.UntagResourceRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opUpdateAddon = "UpdateAddon" - -// UpdateAddonRequest generates a "aws/request.Request" representing the -// client's request for the UpdateAddon operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See UpdateAddon for more information on using the UpdateAddon -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the UpdateAddonRequest method. -// req, resp := client.UpdateAddonRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateAddon -func (c *EKS) UpdateAddonRequest(input *UpdateAddonInput) (req *request.Request, output *UpdateAddonOutput) { - op := &request.Operation{ - Name: opUpdateAddon, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/addons/{addonName}/update", - } - - if input == nil { - input = &UpdateAddonInput{} - } - - output = &UpdateAddonOutput{} - req = c.newRequest(op, input, output) - return -} - -// UpdateAddon API operation for Amazon Elastic Kubernetes Service. -// -// Updates an Amazon EKS add-on. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation UpdateAddon for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateAddon -func (c *EKS) UpdateAddon(input *UpdateAddonInput) (*UpdateAddonOutput, error) { - req, out := c.UpdateAddonRequest(input) - return out, req.Send() -} - -// UpdateAddonWithContext is the same as UpdateAddon with the addition of -// the ability to pass a context and additional request options. -// -// See UpdateAddon for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) UpdateAddonWithContext(ctx aws.Context, input *UpdateAddonInput, opts ...request.Option) (*UpdateAddonOutput, error) { - req, out := c.UpdateAddonRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opUpdateClusterConfig = "UpdateClusterConfig" - -// UpdateClusterConfigRequest generates a "aws/request.Request" representing the -// client's request for the UpdateClusterConfig operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See UpdateClusterConfig for more information on using the UpdateClusterConfig -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the UpdateClusterConfigRequest method. -// req, resp := client.UpdateClusterConfigRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterConfig -func (c *EKS) UpdateClusterConfigRequest(input *UpdateClusterConfigInput) (req *request.Request, output *UpdateClusterConfigOutput) { - op := &request.Operation{ - Name: opUpdateClusterConfig, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/update-config", - } - - if input == nil { - input = &UpdateClusterConfigInput{} - } - - output = &UpdateClusterConfigOutput{} - req = c.newRequest(op, input, output) - return -} - -// UpdateClusterConfig API operation for Amazon Elastic Kubernetes Service. -// -// Updates an Amazon EKS cluster configuration. Your cluster continues to function -// during the update. The response output includes an update ID that you can -// use to track the status of your cluster update with the DescribeUpdate API -// operation. -// -// You can use this API operation to enable or disable exporting the Kubernetes -// control plane logs for your cluster to CloudWatch Logs. By default, cluster -// control plane logs aren't exported to CloudWatch Logs. For more information, -// see Amazon EKS Cluster Control Plane Logs (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) -// in the Amazon EKS User Guide . -// -// CloudWatch Logs ingestion, archive storage, and data scanning rates apply -// to exported control plane logs. For more information, see Amazon CloudWatch -// Pricing (http://aws.amazon.com/cloudwatch/pricing/). -// -// You can also use this API operation to enable or disable public and private -// access to your cluster's Kubernetes API server endpoint. By default, public -// access is enabled, and private access is disabled. For more information, -// see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) -// in the Amazon EKS User Guide . -// -// You can't update the subnets or security group IDs for an existing cluster. -// -// Cluster updates are asynchronous, and they should finish within a few minutes. -// During an update, the cluster status moves to UPDATING (this status transition -// is eventually consistent). When the update is complete (either Failed or -// Successful), the cluster status moves to Active. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation UpdateClusterConfig for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterConfig -func (c *EKS) UpdateClusterConfig(input *UpdateClusterConfigInput) (*UpdateClusterConfigOutput, error) { - req, out := c.UpdateClusterConfigRequest(input) - return out, req.Send() -} - -// UpdateClusterConfigWithContext is the same as UpdateClusterConfig with the addition of -// the ability to pass a context and additional request options. -// -// See UpdateClusterConfig for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) UpdateClusterConfigWithContext(ctx aws.Context, input *UpdateClusterConfigInput, opts ...request.Option) (*UpdateClusterConfigOutput, error) { - req, out := c.UpdateClusterConfigRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opUpdateClusterVersion = "UpdateClusterVersion" - -// UpdateClusterVersionRequest generates a "aws/request.Request" representing the -// client's request for the UpdateClusterVersion operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See UpdateClusterVersion for more information on using the UpdateClusterVersion -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the UpdateClusterVersionRequest method. -// req, resp := client.UpdateClusterVersionRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterVersion -func (c *EKS) UpdateClusterVersionRequest(input *UpdateClusterVersionInput) (req *request.Request, output *UpdateClusterVersionOutput) { - op := &request.Operation{ - Name: opUpdateClusterVersion, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/updates", - } - - if input == nil { - input = &UpdateClusterVersionInput{} - } - - output = &UpdateClusterVersionOutput{} - req = c.newRequest(op, input, output) - return -} - -// UpdateClusterVersion API operation for Amazon Elastic Kubernetes Service. -// -// Updates an Amazon EKS cluster to the specified Kubernetes version. Your cluster -// continues to function during the update. The response output includes an -// update ID that you can use to track the status of your cluster update with -// the DescribeUpdate API operation. -// -// Cluster updates are asynchronous, and they should finish within a few minutes. -// During an update, the cluster status moves to UPDATING (this status transition -// is eventually consistent). When the update is complete (either Failed or -// Successful), the cluster status moves to Active. -// -// If your cluster has managed node groups attached to it, all of your node -// groups’ Kubernetes versions must match the cluster’s Kubernetes version -// in order to update the cluster to a new Kubernetes version. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation UpdateClusterVersion for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateClusterVersion -func (c *EKS) UpdateClusterVersion(input *UpdateClusterVersionInput) (*UpdateClusterVersionOutput, error) { - req, out := c.UpdateClusterVersionRequest(input) - return out, req.Send() -} - -// UpdateClusterVersionWithContext is the same as UpdateClusterVersion with the addition of -// the ability to pass a context and additional request options. -// -// See UpdateClusterVersion for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) UpdateClusterVersionWithContext(ctx aws.Context, input *UpdateClusterVersionInput, opts ...request.Option) (*UpdateClusterVersionOutput, error) { - req, out := c.UpdateClusterVersionRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opUpdateNodegroupConfig = "UpdateNodegroupConfig" - -// UpdateNodegroupConfigRequest generates a "aws/request.Request" representing the -// client's request for the UpdateNodegroupConfig operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See UpdateNodegroupConfig for more information on using the UpdateNodegroupConfig -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the UpdateNodegroupConfigRequest method. -// req, resp := client.UpdateNodegroupConfigRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupConfig -func (c *EKS) UpdateNodegroupConfigRequest(input *UpdateNodegroupConfigInput) (req *request.Request, output *UpdateNodegroupConfigOutput) { - op := &request.Operation{ - Name: opUpdateNodegroupConfig, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}/update-config", - } - - if input == nil { - input = &UpdateNodegroupConfigInput{} - } - - output = &UpdateNodegroupConfigOutput{} - req = c.newRequest(op, input, output) - return -} - -// UpdateNodegroupConfig API operation for Amazon Elastic Kubernetes Service. -// -// Updates an Amazon EKS managed node group configuration. Your node group continues -// to function during the update. The response output includes an update ID -// that you can use to track the status of your node group update with the DescribeUpdate -// API operation. Currently you can update the Kubernetes labels for a node -// group or the scaling configuration. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation UpdateNodegroupConfig for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupConfig -func (c *EKS) UpdateNodegroupConfig(input *UpdateNodegroupConfigInput) (*UpdateNodegroupConfigOutput, error) { - req, out := c.UpdateNodegroupConfigRequest(input) - return out, req.Send() -} - -// UpdateNodegroupConfigWithContext is the same as UpdateNodegroupConfig with the addition of -// the ability to pass a context and additional request options. -// -// See UpdateNodegroupConfig for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) UpdateNodegroupConfigWithContext(ctx aws.Context, input *UpdateNodegroupConfigInput, opts ...request.Option) (*UpdateNodegroupConfigOutput, error) { - req, out := c.UpdateNodegroupConfigRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -const opUpdateNodegroupVersion = "UpdateNodegroupVersion" - -// UpdateNodegroupVersionRequest generates a "aws/request.Request" representing the -// client's request for the UpdateNodegroupVersion operation. The "output" return -// value will be populated with the request's response once the request completes -// successfully. -// -// Use "Send" method on the returned Request to send the API call to the service. -// the "output" return value is not valid until after Send returns without error. -// -// See UpdateNodegroupVersion for more information on using the UpdateNodegroupVersion -// API call, and error handling. -// -// This method is useful when you want to inject custom logic or configuration -// into the SDK's request lifecycle. Such as custom headers, or retry logic. -// -// -// // Example sending a request using the UpdateNodegroupVersionRequest method. -// req, resp := client.UpdateNodegroupVersionRequest(params) -// -// err := req.Send() -// if err == nil { // resp is now filled -// fmt.Println(resp) -// } -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupVersion -func (c *EKS) UpdateNodegroupVersionRequest(input *UpdateNodegroupVersionInput) (req *request.Request, output *UpdateNodegroupVersionOutput) { - op := &request.Operation{ - Name: opUpdateNodegroupVersion, - HTTPMethod: "POST", - HTTPPath: "/clusters/{name}/node-groups/{nodegroupName}/update-version", - } - - if input == nil { - input = &UpdateNodegroupVersionInput{} - } - - output = &UpdateNodegroupVersionOutput{} - req = c.newRequest(op, input, output) - return -} - -// UpdateNodegroupVersion API operation for Amazon Elastic Kubernetes Service. -// -// Updates the Kubernetes version or AMI version of an Amazon EKS managed node -// group. -// -// You can update a node group using a launch template only if the node group -// was originally deployed with a launch template. If you need to update a custom -// AMI in a node group that was deployed with a launch template, then update -// your custom AMI, specify the new ID in a new version of the launch template, -// and then update the node group to the new version of the launch template. -// -// If you update without a launch template, then you can update to the latest -// available AMI version of a node group's current Kubernetes version by not -// specifying a Kubernetes version in the request. You can update to the latest -// AMI version of your cluster's current Kubernetes version by specifying your -// cluster's Kubernetes version in the request. For more information, see Amazon -// EKS optimized Amazon Linux 2 AMI versions (https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) -// in the Amazon EKS User Guide. -// -// You cannot roll back a node group to an earlier Kubernetes version or AMI -// version. -// -// When a node in a managed node group is terminated due to a scaling action -// or update, the pods in that node are drained first. Amazon EKS attempts to -// drain the nodes gracefully and will fail if it is unable to do so. You can -// force the update if Amazon EKS is unable to drain the nodes as a result of -// a pod disruption budget issue. -// -// Returns awserr.Error for service API and SDK errors. Use runtime type assertions -// with awserr.Error's Code and Message methods to get detailed information about -// the error. -// -// See the AWS API reference guide for Amazon Elastic Kubernetes Service's -// API operation UpdateNodegroupVersion for usage and error information. -// -// Returned Error Types: -// * InvalidParameterException -// The specified parameter is invalid. Review the available parameters for the -// API request. -// -// * ClientException -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -// -// * ServerException -// These errors are usually caused by a server-side issue. -// -// * ResourceInUseException -// The specified resource is in use. -// -// * ResourceNotFoundException -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -// -// * InvalidRequestException -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -// -// See also, https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01/UpdateNodegroupVersion -func (c *EKS) UpdateNodegroupVersion(input *UpdateNodegroupVersionInput) (*UpdateNodegroupVersionOutput, error) { - req, out := c.UpdateNodegroupVersionRequest(input) - return out, req.Send() -} - -// UpdateNodegroupVersionWithContext is the same as UpdateNodegroupVersion with the addition of -// the ability to pass a context and additional request options. -// -// See UpdateNodegroupVersion for details on how to use this API operation. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) UpdateNodegroupVersionWithContext(ctx aws.Context, input *UpdateNodegroupVersionInput, opts ...request.Option) (*UpdateNodegroupVersionOutput, error) { - req, out := c.UpdateNodegroupVersionRequest(input) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return out, req.Send() -} - -// An Amazon EKS add-on. -type Addon struct { - _ struct{} `type:"structure"` - - // The Amazon Resource Name (ARN) of the add-on. - AddonArn *string `locationName:"addonArn" type:"string"` - - // The name of the add-on. - AddonName *string `locationName:"addonName" type:"string"` - - // The version of the add-on. - AddonVersion *string `locationName:"addonVersion" type:"string"` - - // The name of the cluster. - ClusterName *string `locationName:"clusterName" min:"1" type:"string"` - - // The date and time that the add-on was created. - CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` - - // An object that represents the health of the add-on. - Health *AddonHealth `locationName:"health" type:"structure"` - - // The date and time that the add-on was last modified. - ModifiedAt *time.Time `locationName:"modifiedAt" type:"timestamp"` - - // The Amazon Resource Name (ARN) of the IAM role that is bound to the Kubernetes - // service account used by the add-on. - ServiceAccountRoleArn *string `locationName:"serviceAccountRoleArn" type:"string"` - - // The status of the add-on. - Status *string `locationName:"status" type:"string" enum:"AddonStatus"` - - // The metadata that you apply to the add-on to assist with categorization and - // organization. Each tag consists of a key and an optional value, both of which - // you define. Add-on tags do not propagate to any other resources associated - // with the cluster. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` -} - -// String returns the string representation -func (s Addon) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Addon) GoString() string { - return s.String() -} - -// SetAddonArn sets the AddonArn field's value. -func (s *Addon) SetAddonArn(v string) *Addon { - s.AddonArn = &v - return s -} - -// SetAddonName sets the AddonName field's value. -func (s *Addon) SetAddonName(v string) *Addon { - s.AddonName = &v - return s -} - -// SetAddonVersion sets the AddonVersion field's value. -func (s *Addon) SetAddonVersion(v string) *Addon { - s.AddonVersion = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *Addon) SetClusterName(v string) *Addon { - s.ClusterName = &v - return s -} - -// SetCreatedAt sets the CreatedAt field's value. -func (s *Addon) SetCreatedAt(v time.Time) *Addon { - s.CreatedAt = &v - return s -} - -// SetHealth sets the Health field's value. -func (s *Addon) SetHealth(v *AddonHealth) *Addon { - s.Health = v - return s -} - -// SetModifiedAt sets the ModifiedAt field's value. -func (s *Addon) SetModifiedAt(v time.Time) *Addon { - s.ModifiedAt = &v - return s -} - -// SetServiceAccountRoleArn sets the ServiceAccountRoleArn field's value. -func (s *Addon) SetServiceAccountRoleArn(v string) *Addon { - s.ServiceAccountRoleArn = &v - return s -} - -// SetStatus sets the Status field's value. -func (s *Addon) SetStatus(v string) *Addon { - s.Status = &v - return s -} - -// SetTags sets the Tags field's value. -func (s *Addon) SetTags(v map[string]*string) *Addon { - s.Tags = v - return s -} - -// The health of the add-on. -type AddonHealth struct { - _ struct{} `type:"structure"` - - // An object that represents the add-on's health issues. - Issues []*AddonIssue `locationName:"issues" type:"list"` -} - -// String returns the string representation -func (s AddonHealth) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AddonHealth) GoString() string { - return s.String() -} - -// SetIssues sets the Issues field's value. -func (s *AddonHealth) SetIssues(v []*AddonIssue) *AddonHealth { - s.Issues = v - return s -} - -// Information about an add-on. -type AddonInfo struct { - _ struct{} `type:"structure"` - - // The name of the add-on. - AddonName *string `locationName:"addonName" type:"string"` - - // An object that represents information about available add-on versions and - // compatible Kubernetes versions. - AddonVersions []*AddonVersionInfo `locationName:"addonVersions" type:"list"` - - // The type of the add-on. - Type *string `locationName:"type" type:"string"` -} - -// String returns the string representation -func (s AddonInfo) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AddonInfo) GoString() string { - return s.String() -} - -// SetAddonName sets the AddonName field's value. -func (s *AddonInfo) SetAddonName(v string) *AddonInfo { - s.AddonName = &v - return s -} - -// SetAddonVersions sets the AddonVersions field's value. -func (s *AddonInfo) SetAddonVersions(v []*AddonVersionInfo) *AddonInfo { - s.AddonVersions = v - return s -} - -// SetType sets the Type field's value. -func (s *AddonInfo) SetType(v string) *AddonInfo { - s.Type = &v - return s -} - -// An issue related to an add-on. -type AddonIssue struct { - _ struct{} `type:"structure"` - - // A code that describes the type of issue. - Code *string `locationName:"code" type:"string" enum:"AddonIssueCode"` - - // A message that provides details about the issue and what might cause it. - Message *string `locationName:"message" type:"string"` - - // The resource IDs of the issue. - ResourceIds []*string `locationName:"resourceIds" type:"list"` -} - -// String returns the string representation -func (s AddonIssue) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AddonIssue) GoString() string { - return s.String() -} - -// SetCode sets the Code field's value. -func (s *AddonIssue) SetCode(v string) *AddonIssue { - s.Code = &v - return s -} - -// SetMessage sets the Message field's value. -func (s *AddonIssue) SetMessage(v string) *AddonIssue { - s.Message = &v - return s -} - -// SetResourceIds sets the ResourceIds field's value. -func (s *AddonIssue) SetResourceIds(v []*string) *AddonIssue { - s.ResourceIds = v - return s -} - -// Information about an add-on version. -type AddonVersionInfo struct { - _ struct{} `type:"structure"` - - // The version of the add-on. - AddonVersion *string `locationName:"addonVersion" type:"string"` - - // The architectures that the version supports. - Architecture []*string `locationName:"architecture" type:"list"` - - // An object that represents the compatibilities of a version. - Compatibilities []*Compatibility `locationName:"compatibilities" type:"list"` -} - -// String returns the string representation -func (s AddonVersionInfo) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AddonVersionInfo) GoString() string { - return s.String() -} - -// SetAddonVersion sets the AddonVersion field's value. -func (s *AddonVersionInfo) SetAddonVersion(v string) *AddonVersionInfo { - s.AddonVersion = &v - return s -} - -// SetArchitecture sets the Architecture field's value. -func (s *AddonVersionInfo) SetArchitecture(v []*string) *AddonVersionInfo { - s.Architecture = v - return s -} - -// SetCompatibilities sets the Compatibilities field's value. -func (s *AddonVersionInfo) SetCompatibilities(v []*Compatibility) *AddonVersionInfo { - s.Compatibilities = v - return s -} - -type AssociateEncryptionConfigInput struct { - _ struct{} `type:"structure"` - - // The client request token you are using with the encryption configuration. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the cluster that you are associating with encryption configuration. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The configuration you are using for encryption. - // - // EncryptionConfig is a required field - EncryptionConfig []*EncryptionConfig `locationName:"encryptionConfig" type:"list" required:"true"` -} - -// String returns the string representation -func (s AssociateEncryptionConfigInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateEncryptionConfigInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *AssociateEncryptionConfigInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "AssociateEncryptionConfigInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.EncryptionConfig == nil { - invalidParams.Add(request.NewErrParamRequired("EncryptionConfig")) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *AssociateEncryptionConfigInput) SetClientRequestToken(v string) *AssociateEncryptionConfigInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *AssociateEncryptionConfigInput) SetClusterName(v string) *AssociateEncryptionConfigInput { - s.ClusterName = &v - return s -} - -// SetEncryptionConfig sets the EncryptionConfig field's value. -func (s *AssociateEncryptionConfigInput) SetEncryptionConfig(v []*EncryptionConfig) *AssociateEncryptionConfigInput { - s.EncryptionConfig = v - return s -} - -type AssociateEncryptionConfigOutput struct { - _ struct{} `type:"structure"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s AssociateEncryptionConfigOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateEncryptionConfigOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *AssociateEncryptionConfigOutput) SetUpdate(v *Update) *AssociateEncryptionConfigOutput { - s.Update = v - return s -} - -type AssociateIdentityProviderConfigInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the cluster to associate the configuration to. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // An object that represents an OpenID Connect (OIDC) identity provider configuration. - // - // Oidc is a required field - Oidc *OidcIdentityProviderConfigRequest `locationName:"oidc" type:"structure" required:"true"` - - // The metadata to apply to the configuration to assist with categorization - // and organization. Each tag consists of a key and an optional value, both - // of which you define. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` -} - -// String returns the string representation -func (s AssociateIdentityProviderConfigInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateIdentityProviderConfigInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *AssociateIdentityProviderConfigInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "AssociateIdentityProviderConfigInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.Oidc == nil { - invalidParams.Add(request.NewErrParamRequired("Oidc")) - } - if s.Tags != nil && len(s.Tags) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) - } - if s.Oidc != nil { - if err := s.Oidc.Validate(); err != nil { - invalidParams.AddNested("Oidc", err.(request.ErrInvalidParams)) - } - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *AssociateIdentityProviderConfigInput) SetClientRequestToken(v string) *AssociateIdentityProviderConfigInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *AssociateIdentityProviderConfigInput) SetClusterName(v string) *AssociateIdentityProviderConfigInput { - s.ClusterName = &v - return s -} - -// SetOidc sets the Oidc field's value. -func (s *AssociateIdentityProviderConfigInput) SetOidc(v *OidcIdentityProviderConfigRequest) *AssociateIdentityProviderConfigInput { - s.Oidc = v - return s -} - -// SetTags sets the Tags field's value. -func (s *AssociateIdentityProviderConfigInput) SetTags(v map[string]*string) *AssociateIdentityProviderConfigInput { - s.Tags = v - return s -} - -type AssociateIdentityProviderConfigOutput struct { - _ struct{} `type:"structure"` - - // The tags for the resource. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s AssociateIdentityProviderConfigOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AssociateIdentityProviderConfigOutput) GoString() string { - return s.String() -} - -// SetTags sets the Tags field's value. -func (s *AssociateIdentityProviderConfigOutput) SetTags(v map[string]*string) *AssociateIdentityProviderConfigOutput { - s.Tags = v - return s -} - -// SetUpdate sets the Update field's value. -func (s *AssociateIdentityProviderConfigOutput) SetUpdate(v *Update) *AssociateIdentityProviderConfigOutput { - s.Update = v - return s -} - -// An Auto Scaling group that is associated with an Amazon EKS managed node -// group. -type AutoScalingGroup struct { - _ struct{} `type:"structure"` - - // The name of the Auto Scaling group associated with an Amazon EKS managed - // node group. - Name *string `locationName:"name" type:"string"` -} - -// String returns the string representation -func (s AutoScalingGroup) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s AutoScalingGroup) GoString() string { - return s.String() -} - -// SetName sets the Name field's value. -func (s *AutoScalingGroup) SetName(v string) *AutoScalingGroup { - s.Name = &v - return s -} - -// This exception is thrown if the request contains a semantic error. The precise -// meaning will depend on the API, and will be documented in the error message. -type BadRequestException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - Message_ *string `locationName:"message" type:"string"` -} - -// String returns the string representation -func (s BadRequestException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s BadRequestException) GoString() string { - return s.String() -} - -func newErrorBadRequestException(v protocol.ResponseMetadata) error { - return &BadRequestException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *BadRequestException) Code() string { - return "BadRequestException" -} - -// Message returns the exception's message. -func (s *BadRequestException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *BadRequestException) OrigErr() error { - return nil -} - -func (s *BadRequestException) Error() string { - return fmt.Sprintf("%s: %s", s.Code(), s.Message()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *BadRequestException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *BadRequestException) RequestID() string { - return s.RespMetadata.RequestID -} - -// An object representing the certificate-authority-data for your cluster. -type Certificate struct { - _ struct{} `type:"structure"` - - // The Base64-encoded certificate data required to communicate with your cluster. - // Add this to the certificate-authority-data section of the kubeconfig file - // for your cluster. - Data *string `locationName:"data" type:"string"` -} - -// String returns the string representation -func (s Certificate) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Certificate) GoString() string { - return s.String() -} - -// SetData sets the Data field's value. -func (s *Certificate) SetData(v string) *Certificate { - s.Data = &v - return s -} - -// These errors are usually caused by a client action. Actions can include using -// an action or resource on behalf of a user that doesn't have permissions to -// use the action or resource or specifying an identifier that is not valid. -type ClientException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - AddonName *string `locationName:"addonName" type:"string"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s ClientException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ClientException) GoString() string { - return s.String() -} - -func newErrorClientException(v protocol.ResponseMetadata) error { - return &ClientException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *ClientException) Code() string { - return "ClientException" -} - -// Message returns the exception's message. -func (s *ClientException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *ClientException) OrigErr() error { - return nil -} - -func (s *ClientException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *ClientException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *ClientException) RequestID() string { - return s.RespMetadata.RequestID -} - -// An object representing an Amazon EKS cluster. -type Cluster struct { - _ struct{} `type:"structure"` - - // The Amazon Resource Name (ARN) of the cluster. - Arn *string `locationName:"arn" type:"string"` - - // The certificate-authority-data for your cluster. - CertificateAuthority *Certificate `locationName:"certificateAuthority" type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string"` - - // The Unix epoch timestamp in seconds for when the cluster was created. - CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` - - // The encryption configuration for the cluster. - EncryptionConfig []*EncryptionConfig `locationName:"encryptionConfig" type:"list"` - - // The endpoint for your Kubernetes API server. - Endpoint *string `locationName:"endpoint" type:"string"` - - // The identity provider information for the cluster. - Identity *Identity `locationName:"identity" type:"structure"` - - // The Kubernetes network configuration for the cluster. - KubernetesNetworkConfig *KubernetesNetworkConfigResponse `locationName:"kubernetesNetworkConfig" type:"structure"` - - // The logging configuration for your cluster. - Logging *Logging `locationName:"logging" type:"structure"` - - // The name of the cluster. - Name *string `locationName:"name" type:"string"` - - // The platform version of your Amazon EKS cluster. For more information, see - // Platform Versions (https://docs.aws.amazon.com/eks/latest/userguide/platform-versions.html) - // in the Amazon EKS User Guide . - PlatformVersion *string `locationName:"platformVersion" type:"string"` - - // The VPC configuration used by the cluster control plane. Amazon EKS VPC resources - // have specific requirements to work properly with Kubernetes. For more information, - // see Cluster VPC Considerations (https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) - // and Cluster Security Group Considerations (https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) - // in the Amazon EKS User Guide. - ResourcesVpcConfig *VpcConfigResponse `locationName:"resourcesVpcConfig" type:"structure"` - - // The Amazon Resource Name (ARN) of the IAM role that provides permissions - // for the Kubernetes control plane to make calls to AWS API operations on your - // behalf. - RoleArn *string `locationName:"roleArn" type:"string"` - - // The current status of the cluster. - Status *string `locationName:"status" type:"string" enum:"ClusterStatus"` - - // The metadata that you apply to the cluster to assist with categorization - // and organization. Each tag consists of a key and an optional value, both - // of which you define. Cluster tags do not propagate to any other resources - // associated with the cluster. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` - - // The Kubernetes server version for the cluster. - Version *string `locationName:"version" type:"string"` -} - -// String returns the string representation -func (s Cluster) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Cluster) GoString() string { - return s.String() -} - -// SetArn sets the Arn field's value. -func (s *Cluster) SetArn(v string) *Cluster { - s.Arn = &v - return s -} - -// SetCertificateAuthority sets the CertificateAuthority field's value. -func (s *Cluster) SetCertificateAuthority(v *Certificate) *Cluster { - s.CertificateAuthority = v - return s -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *Cluster) SetClientRequestToken(v string) *Cluster { - s.ClientRequestToken = &v - return s -} - -// SetCreatedAt sets the CreatedAt field's value. -func (s *Cluster) SetCreatedAt(v time.Time) *Cluster { - s.CreatedAt = &v - return s -} - -// SetEncryptionConfig sets the EncryptionConfig field's value. -func (s *Cluster) SetEncryptionConfig(v []*EncryptionConfig) *Cluster { - s.EncryptionConfig = v - return s -} - -// SetEndpoint sets the Endpoint field's value. -func (s *Cluster) SetEndpoint(v string) *Cluster { - s.Endpoint = &v - return s -} - -// SetIdentity sets the Identity field's value. -func (s *Cluster) SetIdentity(v *Identity) *Cluster { - s.Identity = v - return s -} - -// SetKubernetesNetworkConfig sets the KubernetesNetworkConfig field's value. -func (s *Cluster) SetKubernetesNetworkConfig(v *KubernetesNetworkConfigResponse) *Cluster { - s.KubernetesNetworkConfig = v - return s -} - -// SetLogging sets the Logging field's value. -func (s *Cluster) SetLogging(v *Logging) *Cluster { - s.Logging = v - return s -} - -// SetName sets the Name field's value. -func (s *Cluster) SetName(v string) *Cluster { - s.Name = &v - return s -} - -// SetPlatformVersion sets the PlatformVersion field's value. -func (s *Cluster) SetPlatformVersion(v string) *Cluster { - s.PlatformVersion = &v - return s -} - -// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value. -func (s *Cluster) SetResourcesVpcConfig(v *VpcConfigResponse) *Cluster { - s.ResourcesVpcConfig = v - return s -} - -// SetRoleArn sets the RoleArn field's value. -func (s *Cluster) SetRoleArn(v string) *Cluster { - s.RoleArn = &v - return s -} - -// SetStatus sets the Status field's value. -func (s *Cluster) SetStatus(v string) *Cluster { - s.Status = &v - return s -} - -// SetTags sets the Tags field's value. -func (s *Cluster) SetTags(v map[string]*string) *Cluster { - s.Tags = v - return s -} - -// SetVersion sets the Version field's value. -func (s *Cluster) SetVersion(v string) *Cluster { - s.Version = &v - return s -} - -// Compatibility information. -type Compatibility struct { - _ struct{} `type:"structure"` - - // The supported Kubernetes version of the cluster. - ClusterVersion *string `locationName:"clusterVersion" type:"string"` - - // The supported default version. - DefaultVersion *bool `locationName:"defaultVersion" type:"boolean"` - - // The supported compute platform. - PlatformVersions []*string `locationName:"platformVersions" type:"list"` -} - -// String returns the string representation -func (s Compatibility) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Compatibility) GoString() string { - return s.String() -} - -// SetClusterVersion sets the ClusterVersion field's value. -func (s *Compatibility) SetClusterVersion(v string) *Compatibility { - s.ClusterVersion = &v - return s -} - -// SetDefaultVersion sets the DefaultVersion field's value. -func (s *Compatibility) SetDefaultVersion(v bool) *Compatibility { - s.DefaultVersion = &v - return s -} - -// SetPlatformVersions sets the PlatformVersions field's value. -func (s *Compatibility) SetPlatformVersions(v []*string) *Compatibility { - s.PlatformVersions = v - return s -} - -type CreateAddonInput struct { - _ struct{} `type:"structure"` - - // The name of the add-on. The name must match one of the names returned by - // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). - // - // AddonName is a required field - AddonName *string `locationName:"addonName" type:"string" required:"true"` - - // The version of the add-on. The version must match one of the versions returned - // by DescribeAddonVersions (https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). - AddonVersion *string `locationName:"addonVersion" type:"string"` - - // A unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the cluster to create the add-on for. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` - - // How to resolve parameter value conflicts when migrating an existing add-on - // to an Amazon EKS add-on. - ResolveConflicts *string `locationName:"resolveConflicts" type:"string" enum:"ResolveConflicts"` - - // The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's - // service account. The role must be assigned the IAM permissions required by - // the add-on. If you don't specify an existing IAM role, then the add-on uses - // the permissions assigned to the node IAM role. For more information, see - // Amazon EKS node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) - // in the Amazon EKS User Guide. - // - // To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) - // provider created for your cluster. For more information, see Enabling IAM - // roles for service accounts on your cluster (https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) - // in the Amazon EKS User Guide. - ServiceAccountRoleArn *string `locationName:"serviceAccountRoleArn" min:"1" type:"string"` - - // The metadata to apply to the cluster to assist with categorization and organization. - // Each tag consists of a key and an optional value, both of which you define. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` -} - -// String returns the string representation -func (s CreateAddonInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateAddonInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *CreateAddonInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "CreateAddonInput"} - if s.AddonName == nil { - invalidParams.Add(request.NewErrParamRequired("AddonName")) - } - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.ServiceAccountRoleArn != nil && len(*s.ServiceAccountRoleArn) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ServiceAccountRoleArn", 1)) - } - if s.Tags != nil && len(s.Tags) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *CreateAddonInput) SetAddonName(v string) *CreateAddonInput { - s.AddonName = &v - return s -} - -// SetAddonVersion sets the AddonVersion field's value. -func (s *CreateAddonInput) SetAddonVersion(v string) *CreateAddonInput { - s.AddonVersion = &v - return s -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *CreateAddonInput) SetClientRequestToken(v string) *CreateAddonInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *CreateAddonInput) SetClusterName(v string) *CreateAddonInput { - s.ClusterName = &v - return s -} - -// SetResolveConflicts sets the ResolveConflicts field's value. -func (s *CreateAddonInput) SetResolveConflicts(v string) *CreateAddonInput { - s.ResolveConflicts = &v - return s -} - -// SetServiceAccountRoleArn sets the ServiceAccountRoleArn field's value. -func (s *CreateAddonInput) SetServiceAccountRoleArn(v string) *CreateAddonInput { - s.ServiceAccountRoleArn = &v - return s -} - -// SetTags sets the Tags field's value. -func (s *CreateAddonInput) SetTags(v map[string]*string) *CreateAddonInput { - s.Tags = v - return s -} - -type CreateAddonOutput struct { - _ struct{} `type:"structure"` - - // An Amazon EKS add-on. - Addon *Addon `locationName:"addon" type:"structure"` -} - -// String returns the string representation -func (s CreateAddonOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateAddonOutput) GoString() string { - return s.String() -} - -// SetAddon sets the Addon field's value. -func (s *CreateAddonOutput) SetAddon(v *Addon) *CreateAddonOutput { - s.Addon = v - return s -} - -type CreateClusterInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The encryption configuration for the cluster. - EncryptionConfig []*EncryptionConfig `locationName:"encryptionConfig" type:"list"` - - // The Kubernetes network configuration for the cluster. - KubernetesNetworkConfig *KubernetesNetworkConfigRequest `locationName:"kubernetesNetworkConfig" type:"structure"` - - // Enable or disable exporting the Kubernetes control plane logs for your cluster - // to CloudWatch Logs. By default, cluster control plane logs aren't exported - // to CloudWatch Logs. For more information, see Amazon EKS Cluster Control - // Plane Logs (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) - // in the Amazon EKS User Guide . - // - // CloudWatch Logs ingestion, archive storage, and data scanning rates apply - // to exported control plane logs. For more information, see Amazon CloudWatch - // Pricing (http://aws.amazon.com/cloudwatch/pricing/). - Logging *Logging `locationName:"logging" type:"structure"` - - // The unique name to give to your cluster. - // - // Name is a required field - Name *string `locationName:"name" min:"1" type:"string" required:"true"` - - // The VPC configuration used by the cluster control plane. Amazon EKS VPC resources - // have specific requirements to work properly with Kubernetes. For more information, - // see Cluster VPC Considerations (https://docs.aws.amazon.com/eks/latest/userguide/network_reqs.html) - // and Cluster Security Group Considerations (https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) - // in the Amazon EKS User Guide. You must specify at least two subnets. You - // can specify up to five security groups, but we recommend that you use a dedicated - // security group for your cluster control plane. - // - // ResourcesVpcConfig is a required field - ResourcesVpcConfig *VpcConfigRequest `locationName:"resourcesVpcConfig" type:"structure" required:"true"` - - // The Amazon Resource Name (ARN) of the IAM role that provides permissions - // for the Kubernetes control plane to make calls to AWS API operations on your - // behalf. For more information, see Amazon EKS Service IAM Role (https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) - // in the Amazon EKS User Guide . - // - // RoleArn is a required field - RoleArn *string `locationName:"roleArn" type:"string" required:"true"` - - // The metadata to apply to the cluster to assist with categorization and organization. - // Each tag consists of a key and an optional value, both of which you define. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` - - // The desired Kubernetes version for your cluster. If you don't specify a value - // here, the latest version available in Amazon EKS is used. - Version *string `locationName:"version" type:"string"` -} - -// String returns the string representation -func (s CreateClusterInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateClusterInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *CreateClusterInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "CreateClusterInput"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - if s.ResourcesVpcConfig == nil { - invalidParams.Add(request.NewErrParamRequired("ResourcesVpcConfig")) - } - if s.RoleArn == nil { - invalidParams.Add(request.NewErrParamRequired("RoleArn")) - } - if s.Tags != nil && len(s.Tags) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *CreateClusterInput) SetClientRequestToken(v string) *CreateClusterInput { - s.ClientRequestToken = &v - return s -} - -// SetEncryptionConfig sets the EncryptionConfig field's value. -func (s *CreateClusterInput) SetEncryptionConfig(v []*EncryptionConfig) *CreateClusterInput { - s.EncryptionConfig = v - return s -} - -// SetKubernetesNetworkConfig sets the KubernetesNetworkConfig field's value. -func (s *CreateClusterInput) SetKubernetesNetworkConfig(v *KubernetesNetworkConfigRequest) *CreateClusterInput { - s.KubernetesNetworkConfig = v - return s -} - -// SetLogging sets the Logging field's value. -func (s *CreateClusterInput) SetLogging(v *Logging) *CreateClusterInput { - s.Logging = v - return s -} - -// SetName sets the Name field's value. -func (s *CreateClusterInput) SetName(v string) *CreateClusterInput { - s.Name = &v - return s -} - -// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value. -func (s *CreateClusterInput) SetResourcesVpcConfig(v *VpcConfigRequest) *CreateClusterInput { - s.ResourcesVpcConfig = v - return s -} - -// SetRoleArn sets the RoleArn field's value. -func (s *CreateClusterInput) SetRoleArn(v string) *CreateClusterInput { - s.RoleArn = &v - return s -} - -// SetTags sets the Tags field's value. -func (s *CreateClusterInput) SetTags(v map[string]*string) *CreateClusterInput { - s.Tags = v - return s -} - -// SetVersion sets the Version field's value. -func (s *CreateClusterInput) SetVersion(v string) *CreateClusterInput { - s.Version = &v - return s -} - -type CreateClusterOutput struct { - _ struct{} `type:"structure"` - - // The full description of your new cluster. - Cluster *Cluster `locationName:"cluster" type:"structure"` -} - -// String returns the string representation -func (s CreateClusterOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateClusterOutput) GoString() string { - return s.String() -} - -// SetCluster sets the Cluster field's value. -func (s *CreateClusterOutput) SetCluster(v *Cluster) *CreateClusterOutput { - s.Cluster = v - return s -} - -type CreateFargateProfileInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the Amazon EKS cluster to apply the Fargate profile to. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The name of the Fargate profile. - // - // FargateProfileName is a required field - FargateProfileName *string `locationName:"fargateProfileName" type:"string" required:"true"` - - // The Amazon Resource Name (ARN) of the pod execution role to use for pods - // that match the selectors in the Fargate profile. The pod execution role allows - // Fargate infrastructure to register with your cluster as a node, and it provides - // read access to Amazon ECR image repositories. For more information, see Pod - // Execution Role (https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) - // in the Amazon EKS User Guide. - // - // PodExecutionRoleArn is a required field - PodExecutionRoleArn *string `locationName:"podExecutionRoleArn" type:"string" required:"true"` - - // The selectors to match for pods to use this Fargate profile. Each selector - // must have an associated namespace. Optionally, you can also specify labels - // for a namespace. You may specify up to five selectors in a Fargate profile. - Selectors []*FargateProfileSelector `locationName:"selectors" type:"list"` - - // The IDs of subnets to launch your pods into. At this time, pods running on - // Fargate are not assigned public IP addresses, so only private subnets (with - // no direct route to an Internet Gateway) are accepted for this parameter. - Subnets []*string `locationName:"subnets" type:"list"` - - // The metadata to apply to the Fargate profile to assist with categorization - // and organization. Each tag consists of a key and an optional value, both - // of which you define. Fargate profile tags do not propagate to any other resources - // associated with the Fargate profile, such as the pods that are scheduled - // with it. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` -} - -// String returns the string representation -func (s CreateFargateProfileInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateFargateProfileInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *CreateFargateProfileInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "CreateFargateProfileInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.FargateProfileName == nil { - invalidParams.Add(request.NewErrParamRequired("FargateProfileName")) - } - if s.PodExecutionRoleArn == nil { - invalidParams.Add(request.NewErrParamRequired("PodExecutionRoleArn")) - } - if s.Tags != nil && len(s.Tags) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *CreateFargateProfileInput) SetClientRequestToken(v string) *CreateFargateProfileInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *CreateFargateProfileInput) SetClusterName(v string) *CreateFargateProfileInput { - s.ClusterName = &v - return s -} - -// SetFargateProfileName sets the FargateProfileName field's value. -func (s *CreateFargateProfileInput) SetFargateProfileName(v string) *CreateFargateProfileInput { - s.FargateProfileName = &v - return s -} - -// SetPodExecutionRoleArn sets the PodExecutionRoleArn field's value. -func (s *CreateFargateProfileInput) SetPodExecutionRoleArn(v string) *CreateFargateProfileInput { - s.PodExecutionRoleArn = &v - return s -} - -// SetSelectors sets the Selectors field's value. -func (s *CreateFargateProfileInput) SetSelectors(v []*FargateProfileSelector) *CreateFargateProfileInput { - s.Selectors = v - return s -} - -// SetSubnets sets the Subnets field's value. -func (s *CreateFargateProfileInput) SetSubnets(v []*string) *CreateFargateProfileInput { - s.Subnets = v - return s -} - -// SetTags sets the Tags field's value. -func (s *CreateFargateProfileInput) SetTags(v map[string]*string) *CreateFargateProfileInput { - s.Tags = v - return s -} - -type CreateFargateProfileOutput struct { - _ struct{} `type:"structure"` - - // The full description of your new Fargate profile. - FargateProfile *FargateProfile `locationName:"fargateProfile" type:"structure"` -} - -// String returns the string representation -func (s CreateFargateProfileOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateFargateProfileOutput) GoString() string { - return s.String() -} - -// SetFargateProfile sets the FargateProfile field's value. -func (s *CreateFargateProfileOutput) SetFargateProfile(v *FargateProfile) *CreateFargateProfileOutput { - s.FargateProfile = v - return s -} - -type CreateNodegroupInput struct { - _ struct{} `type:"structure"` - - // The AMI type for your node group. GPU instance types should use the AL2_x86_64_GPU - // AMI type. Non-GPU instances should use the AL2_x86_64 AMI type. Arm instances - // should use the AL2_ARM_64 AMI type. All types use the Amazon EKS optimized - // Amazon Linux 2 AMI. If you specify launchTemplate, and your launch template - // uses a custom AMI, then don't specify amiType, or the node group deployment - // will fail. For more information about using launch templates with Amazon - // EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - AmiType *string `locationName:"amiType" type:"string" enum:"AMITypes"` - - // The capacity type for your node group. - CapacityType *string `locationName:"capacityType" type:"string" enum:"CapacityTypes"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the cluster to create the node group in. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The root device disk size (in GiB) for your node group instances. The default - // disk size is 20 GiB. If you specify launchTemplate, then don't specify diskSize, - // or the node group deployment will fail. For more information about using - // launch templates with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - DiskSize *int64 `locationName:"diskSize" type:"integer"` - - // Specify the instance types for a node group. If you specify a GPU instance - // type, be sure to specify AL2_x86_64_GPU with the amiType parameter. If you - // specify launchTemplate, then you can specify zero or one instance type in - // your launch template or you can specify 0-20 instance types for instanceTypes. - // If however, you specify an instance type in your launch template and specify - // any instanceTypes, the node group deployment will fail. If you don't specify - // an instance type in a launch template or for instanceTypes, then t3.medium - // is used, by default. If you specify Spot for capacityType, then we recommend - // specifying multiple values for instanceTypes. For more information, see Managed - // node group capacity types (https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html#managed-node-group-capacity-types) - // and Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - InstanceTypes []*string `locationName:"instanceTypes" type:"list"` - - // The Kubernetes labels to be applied to the nodes in the node group when they - // are created. - Labels map[string]*string `locationName:"labels" type:"map"` - - // An object representing a node group's launch template specification. If specified, - // then do not specify instanceTypes, diskSize, or remoteAccess and make sure - // that the launch template meets the requirements in launchTemplateSpecification. - LaunchTemplate *LaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"` - - // The Amazon Resource Name (ARN) of the IAM role to associate with your node - // group. The Amazon EKS worker node kubelet daemon makes calls to AWS APIs - // on your behalf. Nodes receive permissions for these API calls through an - // IAM instance profile and associated policies. Before you can launch nodes - // and register them into a cluster, you must create an IAM role for those nodes - // to use when they are launched. For more information, see Amazon EKS node - // IAM role (https://docs.aws.amazon.com/eks/latest/userguide/worker_node_IAM_role.html) - // in the Amazon EKS User Guide . If you specify launchTemplate, then don't - // specify IamInstanceProfile (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html) - // in your launch template, or the node group deployment will fail. For more - // information about using launch templates with Amazon EKS, see Launch template - // support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - // - // NodeRole is a required field - NodeRole *string `locationName:"nodeRole" type:"string" required:"true"` - - // The unique name to give your node group. - // - // NodegroupName is a required field - NodegroupName *string `locationName:"nodegroupName" type:"string" required:"true"` - - // The AMI version of the Amazon EKS optimized AMI to use with your node group. - // By default, the latest available AMI version for the node group's current - // Kubernetes version is used. For more information, see Amazon EKS optimized - // Amazon Linux 2 AMI versions (https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) - // in the Amazon EKS User Guide. If you specify launchTemplate, and your launch - // template uses a custom AMI, then don't specify releaseVersion, or the node - // group deployment will fail. For more information about using launch templates - // with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - ReleaseVersion *string `locationName:"releaseVersion" type:"string"` - - // The remote access (SSH) configuration to use with your node group. If you - // specify launchTemplate, then don't specify remoteAccess, or the node group - // deployment will fail. For more information about using launch templates with - // Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - RemoteAccess *RemoteAccessConfig `locationName:"remoteAccess" type:"structure"` - - // The scaling configuration details for the Auto Scaling group that is created - // for your node group. - ScalingConfig *NodegroupScalingConfig `locationName:"scalingConfig" type:"structure"` - - // The subnets to use for the Auto Scaling group that is created for your node - // group. If you specify launchTemplate, then don't specify SubnetId (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html) - // in your launch template, or the node group deployment will fail. For more - // information about using launch templates with Amazon EKS, see Launch template - // support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - // - // Subnets is a required field - Subnets []*string `locationName:"subnets" type:"list" required:"true"` - - // The metadata to apply to the node group to assist with categorization and - // organization. Each tag consists of a key and an optional value, both of which - // you define. Node group tags do not propagate to any other resources associated - // with the node group, such as the Amazon EC2 instances or subnets. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` - - // The Kubernetes taints to be applied to the nodes in the node group. - Taints []*Taint `locationName:"taints" type:"list"` - - // The Kubernetes version to use for your managed nodes. By default, the Kubernetes - // version of the cluster is used, and this is the only accepted specified value. - // If you specify launchTemplate, and your launch template uses a custom AMI, - // then don't specify version, or the node group deployment will fail. For more - // information about using launch templates with Amazon EKS, see Launch template - // support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - Version *string `locationName:"version" type:"string"` -} - -// String returns the string representation -func (s CreateNodegroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNodegroupInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *CreateNodegroupInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "CreateNodegroupInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.NodeRole == nil { - invalidParams.Add(request.NewErrParamRequired("NodeRole")) - } - if s.NodegroupName == nil { - invalidParams.Add(request.NewErrParamRequired("NodegroupName")) - } - if s.Subnets == nil { - invalidParams.Add(request.NewErrParamRequired("Subnets")) - } - if s.Tags != nil && len(s.Tags) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) - } - if s.ScalingConfig != nil { - if err := s.ScalingConfig.Validate(); err != nil { - invalidParams.AddNested("ScalingConfig", err.(request.ErrInvalidParams)) - } - } - if s.Taints != nil { - for i, v := range s.Taints { - if v == nil { - continue - } - if err := v.Validate(); err != nil { - invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Taints", i), err.(request.ErrInvalidParams)) - } - } - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAmiType sets the AmiType field's value. -func (s *CreateNodegroupInput) SetAmiType(v string) *CreateNodegroupInput { - s.AmiType = &v - return s -} - -// SetCapacityType sets the CapacityType field's value. -func (s *CreateNodegroupInput) SetCapacityType(v string) *CreateNodegroupInput { - s.CapacityType = &v - return s -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *CreateNodegroupInput) SetClientRequestToken(v string) *CreateNodegroupInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *CreateNodegroupInput) SetClusterName(v string) *CreateNodegroupInput { - s.ClusterName = &v - return s -} - -// SetDiskSize sets the DiskSize field's value. -func (s *CreateNodegroupInput) SetDiskSize(v int64) *CreateNodegroupInput { - s.DiskSize = &v - return s -} - -// SetInstanceTypes sets the InstanceTypes field's value. -func (s *CreateNodegroupInput) SetInstanceTypes(v []*string) *CreateNodegroupInput { - s.InstanceTypes = v - return s -} - -// SetLabels sets the Labels field's value. -func (s *CreateNodegroupInput) SetLabels(v map[string]*string) *CreateNodegroupInput { - s.Labels = v - return s -} - -// SetLaunchTemplate sets the LaunchTemplate field's value. -func (s *CreateNodegroupInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *CreateNodegroupInput { - s.LaunchTemplate = v - return s -} - -// SetNodeRole sets the NodeRole field's value. -func (s *CreateNodegroupInput) SetNodeRole(v string) *CreateNodegroupInput { - s.NodeRole = &v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *CreateNodegroupInput) SetNodegroupName(v string) *CreateNodegroupInput { - s.NodegroupName = &v - return s -} - -// SetReleaseVersion sets the ReleaseVersion field's value. -func (s *CreateNodegroupInput) SetReleaseVersion(v string) *CreateNodegroupInput { - s.ReleaseVersion = &v - return s -} - -// SetRemoteAccess sets the RemoteAccess field's value. -func (s *CreateNodegroupInput) SetRemoteAccess(v *RemoteAccessConfig) *CreateNodegroupInput { - s.RemoteAccess = v - return s -} - -// SetScalingConfig sets the ScalingConfig field's value. -func (s *CreateNodegroupInput) SetScalingConfig(v *NodegroupScalingConfig) *CreateNodegroupInput { - s.ScalingConfig = v - return s -} - -// SetSubnets sets the Subnets field's value. -func (s *CreateNodegroupInput) SetSubnets(v []*string) *CreateNodegroupInput { - s.Subnets = v - return s -} - -// SetTags sets the Tags field's value. -func (s *CreateNodegroupInput) SetTags(v map[string]*string) *CreateNodegroupInput { - s.Tags = v - return s -} - -// SetTaints sets the Taints field's value. -func (s *CreateNodegroupInput) SetTaints(v []*Taint) *CreateNodegroupInput { - s.Taints = v - return s -} - -// SetVersion sets the Version field's value. -func (s *CreateNodegroupInput) SetVersion(v string) *CreateNodegroupInput { - s.Version = &v - return s -} - -type CreateNodegroupOutput struct { - _ struct{} `type:"structure"` - - // The full description of your new node group. - Nodegroup *Nodegroup `locationName:"nodegroup" type:"structure"` -} - -// String returns the string representation -func (s CreateNodegroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s CreateNodegroupOutput) GoString() string { - return s.String() -} - -// SetNodegroup sets the Nodegroup field's value. -func (s *CreateNodegroupOutput) SetNodegroup(v *Nodegroup) *CreateNodegroupOutput { - s.Nodegroup = v - return s -} - -type DeleteAddonInput struct { - _ struct{} `type:"structure"` - - // The name of the add-on. The name must match one of the names returned by - // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). - // - // AddonName is a required field - AddonName *string `location:"uri" locationName:"addonName" type:"string" required:"true"` - - // The name of the cluster to delete the add-on from. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` -} - -// String returns the string representation -func (s DeleteAddonInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteAddonInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DeleteAddonInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DeleteAddonInput"} - if s.AddonName == nil { - invalidParams.Add(request.NewErrParamRequired("AddonName")) - } - if s.AddonName != nil && len(*s.AddonName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("AddonName", 1)) - } - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *DeleteAddonInput) SetAddonName(v string) *DeleteAddonInput { - s.AddonName = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *DeleteAddonInput) SetClusterName(v string) *DeleteAddonInput { - s.ClusterName = &v - return s -} - -type DeleteAddonOutput struct { - _ struct{} `type:"structure"` - - // An Amazon EKS add-on. - Addon *Addon `locationName:"addon" type:"structure"` -} - -// String returns the string representation -func (s DeleteAddonOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteAddonOutput) GoString() string { - return s.String() -} - -// SetAddon sets the Addon field's value. -func (s *DeleteAddonOutput) SetAddon(v *Addon) *DeleteAddonOutput { - s.Addon = v - return s -} - -type DeleteClusterInput struct { - _ struct{} `type:"structure"` - - // The name of the cluster to delete. - // - // Name is a required field - Name *string `location:"uri" locationName:"name" type:"string" required:"true"` -} - -// String returns the string representation -func (s DeleteClusterInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteClusterInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DeleteClusterInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DeleteClusterInput"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetName sets the Name field's value. -func (s *DeleteClusterInput) SetName(v string) *DeleteClusterInput { - s.Name = &v - return s -} - -type DeleteClusterOutput struct { - _ struct{} `type:"structure"` - - // The full description of the cluster to delete. - Cluster *Cluster `locationName:"cluster" type:"structure"` -} - -// String returns the string representation -func (s DeleteClusterOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteClusterOutput) GoString() string { - return s.String() -} - -// SetCluster sets the Cluster field's value. -func (s *DeleteClusterOutput) SetCluster(v *Cluster) *DeleteClusterOutput { - s.Cluster = v - return s -} - -type DeleteFargateProfileInput struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster associated with the Fargate profile to - // delete. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The name of the Fargate profile to delete. - // - // FargateProfileName is a required field - FargateProfileName *string `location:"uri" locationName:"fargateProfileName" type:"string" required:"true"` -} - -// String returns the string representation -func (s DeleteFargateProfileInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteFargateProfileInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DeleteFargateProfileInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DeleteFargateProfileInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.FargateProfileName == nil { - invalidParams.Add(request.NewErrParamRequired("FargateProfileName")) - } - if s.FargateProfileName != nil && len(*s.FargateProfileName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("FargateProfileName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *DeleteFargateProfileInput) SetClusterName(v string) *DeleteFargateProfileInput { - s.ClusterName = &v - return s -} - -// SetFargateProfileName sets the FargateProfileName field's value. -func (s *DeleteFargateProfileInput) SetFargateProfileName(v string) *DeleteFargateProfileInput { - s.FargateProfileName = &v - return s -} - -type DeleteFargateProfileOutput struct { - _ struct{} `type:"structure"` - - // The deleted Fargate profile. - FargateProfile *FargateProfile `locationName:"fargateProfile" type:"structure"` -} - -// String returns the string representation -func (s DeleteFargateProfileOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteFargateProfileOutput) GoString() string { - return s.String() -} - -// SetFargateProfile sets the FargateProfile field's value. -func (s *DeleteFargateProfileOutput) SetFargateProfile(v *FargateProfile) *DeleteFargateProfileOutput { - s.FargateProfile = v - return s -} - -type DeleteNodegroupInput struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster that is associated with your node group. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The name of the node group to delete. - // - // NodegroupName is a required field - NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` -} - -// String returns the string representation -func (s DeleteNodegroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNodegroupInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DeleteNodegroupInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DeleteNodegroupInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.NodegroupName == nil { - invalidParams.Add(request.NewErrParamRequired("NodegroupName")) - } - if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *DeleteNodegroupInput) SetClusterName(v string) *DeleteNodegroupInput { - s.ClusterName = &v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *DeleteNodegroupInput) SetNodegroupName(v string) *DeleteNodegroupInput { - s.NodegroupName = &v - return s -} - -type DeleteNodegroupOutput struct { - _ struct{} `type:"structure"` - - // The full description of your deleted node group. - Nodegroup *Nodegroup `locationName:"nodegroup" type:"structure"` -} - -// String returns the string representation -func (s DeleteNodegroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DeleteNodegroupOutput) GoString() string { - return s.String() -} - -// SetNodegroup sets the Nodegroup field's value. -func (s *DeleteNodegroupOutput) SetNodegroup(v *Nodegroup) *DeleteNodegroupOutput { - s.Nodegroup = v - return s -} - -type DescribeAddonInput struct { - _ struct{} `type:"structure"` - - // The name of the add-on. The name must match one of the names returned by - // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). - // - // AddonName is a required field - AddonName *string `location:"uri" locationName:"addonName" type:"string" required:"true"` - - // The name of the cluster. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` -} - -// String returns the string representation -func (s DescribeAddonInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAddonInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeAddonInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeAddonInput"} - if s.AddonName == nil { - invalidParams.Add(request.NewErrParamRequired("AddonName")) - } - if s.AddonName != nil && len(*s.AddonName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("AddonName", 1)) - } - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *DescribeAddonInput) SetAddonName(v string) *DescribeAddonInput { - s.AddonName = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *DescribeAddonInput) SetClusterName(v string) *DescribeAddonInput { - s.ClusterName = &v - return s -} - -type DescribeAddonOutput struct { - _ struct{} `type:"structure"` - - // An Amazon EKS add-on. - Addon *Addon `locationName:"addon" type:"structure"` -} - -// String returns the string representation -func (s DescribeAddonOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAddonOutput) GoString() string { - return s.String() -} - -// SetAddon sets the Addon field's value. -func (s *DescribeAddonOutput) SetAddon(v *Addon) *DescribeAddonOutput { - s.Addon = v - return s -} - -type DescribeAddonVersionsInput struct { - _ struct{} `type:"structure"` - - // The name of the add-on. The name must match one of the names returned by - // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). - AddonName *string `location:"querystring" locationName:"addonName" type:"string"` - - // The Kubernetes versions that the add-on can be used with. - KubernetesVersion *string `location:"querystring" locationName:"kubernetesVersion" type:"string"` - - // The maximum number of results to return. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The nextToken value returned from a previous paginated DescribeAddonVersionsRequest - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - // - // This token should be treated as an opaque identifier that is used only to - // retrieve the next items in a list and not for other programmatic purposes. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s DescribeAddonVersionsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAddonVersionsInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeAddonVersionsInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeAddonVersionsInput"} - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *DescribeAddonVersionsInput) SetAddonName(v string) *DescribeAddonVersionsInput { - s.AddonName = &v - return s -} - -// SetKubernetesVersion sets the KubernetesVersion field's value. -func (s *DescribeAddonVersionsInput) SetKubernetesVersion(v string) *DescribeAddonVersionsInput { - s.KubernetesVersion = &v - return s -} - -// SetMaxResults sets the MaxResults field's value. -func (s *DescribeAddonVersionsInput) SetMaxResults(v int64) *DescribeAddonVersionsInput { - s.MaxResults = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *DescribeAddonVersionsInput) SetNextToken(v string) *DescribeAddonVersionsInput { - s.NextToken = &v - return s -} - -type DescribeAddonVersionsOutput struct { - _ struct{} `type:"structure"` - - // The list of available versions with Kubernetes version compatibility. - Addons []*AddonInfo `locationName:"addons" type:"list"` - - // The nextToken value returned from a previous paginated DescribeAddonVersionsResponse - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - // - // This token should be treated as an opaque identifier that is used only to - // retrieve the next items in a list and not for other programmatic purposes. - NextToken *string `locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s DescribeAddonVersionsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeAddonVersionsOutput) GoString() string { - return s.String() -} - -// SetAddons sets the Addons field's value. -func (s *DescribeAddonVersionsOutput) SetAddons(v []*AddonInfo) *DescribeAddonVersionsOutput { - s.Addons = v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *DescribeAddonVersionsOutput) SetNextToken(v string) *DescribeAddonVersionsOutput { - s.NextToken = &v - return s -} - -type DescribeClusterInput struct { - _ struct{} `type:"structure"` - - // The name of the cluster to describe. - // - // Name is a required field - Name *string `location:"uri" locationName:"name" type:"string" required:"true"` -} - -// String returns the string representation -func (s DescribeClusterInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeClusterInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeClusterInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeClusterInput"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetName sets the Name field's value. -func (s *DescribeClusterInput) SetName(v string) *DescribeClusterInput { - s.Name = &v - return s -} - -type DescribeClusterOutput struct { - _ struct{} `type:"structure"` - - // The full description of your specified cluster. - Cluster *Cluster `locationName:"cluster" type:"structure"` -} - -// String returns the string representation -func (s DescribeClusterOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeClusterOutput) GoString() string { - return s.String() -} - -// SetCluster sets the Cluster field's value. -func (s *DescribeClusterOutput) SetCluster(v *Cluster) *DescribeClusterOutput { - s.Cluster = v - return s -} - -type DescribeFargateProfileInput struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster associated with the Fargate profile. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The name of the Fargate profile to describe. - // - // FargateProfileName is a required field - FargateProfileName *string `location:"uri" locationName:"fargateProfileName" type:"string" required:"true"` -} - -// String returns the string representation -func (s DescribeFargateProfileInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeFargateProfileInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeFargateProfileInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeFargateProfileInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.FargateProfileName == nil { - invalidParams.Add(request.NewErrParamRequired("FargateProfileName")) - } - if s.FargateProfileName != nil && len(*s.FargateProfileName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("FargateProfileName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *DescribeFargateProfileInput) SetClusterName(v string) *DescribeFargateProfileInput { - s.ClusterName = &v - return s -} - -// SetFargateProfileName sets the FargateProfileName field's value. -func (s *DescribeFargateProfileInput) SetFargateProfileName(v string) *DescribeFargateProfileInput { - s.FargateProfileName = &v - return s -} - -type DescribeFargateProfileOutput struct { - _ struct{} `type:"structure"` - - // The full description of your Fargate profile. - FargateProfile *FargateProfile `locationName:"fargateProfile" type:"structure"` -} - -// String returns the string representation -func (s DescribeFargateProfileOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeFargateProfileOutput) GoString() string { - return s.String() -} - -// SetFargateProfile sets the FargateProfile field's value. -func (s *DescribeFargateProfileOutput) SetFargateProfile(v *FargateProfile) *DescribeFargateProfileOutput { - s.FargateProfile = v - return s -} - -type DescribeIdentityProviderConfigInput struct { - _ struct{} `type:"structure"` - - // The cluster name that the identity provider configuration is associated to. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // An object that represents an identity provider configuration. - // - // IdentityProviderConfig is a required field - IdentityProviderConfig *IdentityProviderConfig `locationName:"identityProviderConfig" type:"structure" required:"true"` -} - -// String returns the string representation -func (s DescribeIdentityProviderConfigInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeIdentityProviderConfigInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeIdentityProviderConfigInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeIdentityProviderConfigInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.IdentityProviderConfig == nil { - invalidParams.Add(request.NewErrParamRequired("IdentityProviderConfig")) - } - if s.IdentityProviderConfig != nil { - if err := s.IdentityProviderConfig.Validate(); err != nil { - invalidParams.AddNested("IdentityProviderConfig", err.(request.ErrInvalidParams)) - } - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *DescribeIdentityProviderConfigInput) SetClusterName(v string) *DescribeIdentityProviderConfigInput { - s.ClusterName = &v - return s -} - -// SetIdentityProviderConfig sets the IdentityProviderConfig field's value. -func (s *DescribeIdentityProviderConfigInput) SetIdentityProviderConfig(v *IdentityProviderConfig) *DescribeIdentityProviderConfigInput { - s.IdentityProviderConfig = v - return s -} - -type DescribeIdentityProviderConfigOutput struct { - _ struct{} `type:"structure"` - - // The object that represents an OpenID Connect (OIDC) identity provider configuration. - IdentityProviderConfig *IdentityProviderConfigResponse `locationName:"identityProviderConfig" type:"structure"` -} - -// String returns the string representation -func (s DescribeIdentityProviderConfigOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeIdentityProviderConfigOutput) GoString() string { - return s.String() -} - -// SetIdentityProviderConfig sets the IdentityProviderConfig field's value. -func (s *DescribeIdentityProviderConfigOutput) SetIdentityProviderConfig(v *IdentityProviderConfigResponse) *DescribeIdentityProviderConfigOutput { - s.IdentityProviderConfig = v - return s -} - -type DescribeNodegroupInput struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster associated with the node group. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The name of the node group to describe. - // - // NodegroupName is a required field - NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` -} - -// String returns the string representation -func (s DescribeNodegroupInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNodegroupInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeNodegroupInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeNodegroupInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.NodegroupName == nil { - invalidParams.Add(request.NewErrParamRequired("NodegroupName")) - } - if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *DescribeNodegroupInput) SetClusterName(v string) *DescribeNodegroupInput { - s.ClusterName = &v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *DescribeNodegroupInput) SetNodegroupName(v string) *DescribeNodegroupInput { - s.NodegroupName = &v - return s -} - -type DescribeNodegroupOutput struct { - _ struct{} `type:"structure"` - - // The full description of your node group. - Nodegroup *Nodegroup `locationName:"nodegroup" type:"structure"` -} - -// String returns the string representation -func (s DescribeNodegroupOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeNodegroupOutput) GoString() string { - return s.String() -} - -// SetNodegroup sets the Nodegroup field's value. -func (s *DescribeNodegroupOutput) SetNodegroup(v *Nodegroup) *DescribeNodegroupOutput { - s.Nodegroup = v - return s -} - -type DescribeUpdateInput struct { - _ struct{} `type:"structure"` - - // The name of the add-on. The name must match one of the names returned by - // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). - AddonName *string `location:"querystring" locationName:"addonName" type:"string"` - - // The name of the Amazon EKS cluster associated with the update. - // - // Name is a required field - Name *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The name of the Amazon EKS node group associated with the update. - NodegroupName *string `location:"querystring" locationName:"nodegroupName" type:"string"` - - // The ID of the update to describe. - // - // UpdateId is a required field - UpdateId *string `location:"uri" locationName:"updateId" type:"string" required:"true"` -} - -// String returns the string representation -func (s DescribeUpdateInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeUpdateInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DescribeUpdateInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DescribeUpdateInput"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - if s.UpdateId == nil { - invalidParams.Add(request.NewErrParamRequired("UpdateId")) - } - if s.UpdateId != nil && len(*s.UpdateId) < 1 { - invalidParams.Add(request.NewErrParamMinLen("UpdateId", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *DescribeUpdateInput) SetAddonName(v string) *DescribeUpdateInput { - s.AddonName = &v - return s -} - -// SetName sets the Name field's value. -func (s *DescribeUpdateInput) SetName(v string) *DescribeUpdateInput { - s.Name = &v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *DescribeUpdateInput) SetNodegroupName(v string) *DescribeUpdateInput { - s.NodegroupName = &v - return s -} - -// SetUpdateId sets the UpdateId field's value. -func (s *DescribeUpdateInput) SetUpdateId(v string) *DescribeUpdateInput { - s.UpdateId = &v - return s -} - -type DescribeUpdateOutput struct { - _ struct{} `type:"structure"` - - // The full description of the specified update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s DescribeUpdateOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DescribeUpdateOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *DescribeUpdateOutput) SetUpdate(v *Update) *DescribeUpdateOutput { - s.Update = v - return s -} - -type DisassociateIdentityProviderConfigInput struct { - _ struct{} `type:"structure"` - - // A unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the cluster to disassociate an identity provider from. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // An object that represents an identity provider configuration. - // - // IdentityProviderConfig is a required field - IdentityProviderConfig *IdentityProviderConfig `locationName:"identityProviderConfig" type:"structure" required:"true"` -} - -// String returns the string representation -func (s DisassociateIdentityProviderConfigInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisassociateIdentityProviderConfigInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *DisassociateIdentityProviderConfigInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "DisassociateIdentityProviderConfigInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.IdentityProviderConfig == nil { - invalidParams.Add(request.NewErrParamRequired("IdentityProviderConfig")) - } - if s.IdentityProviderConfig != nil { - if err := s.IdentityProviderConfig.Validate(); err != nil { - invalidParams.AddNested("IdentityProviderConfig", err.(request.ErrInvalidParams)) - } - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *DisassociateIdentityProviderConfigInput) SetClientRequestToken(v string) *DisassociateIdentityProviderConfigInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *DisassociateIdentityProviderConfigInput) SetClusterName(v string) *DisassociateIdentityProviderConfigInput { - s.ClusterName = &v - return s -} - -// SetIdentityProviderConfig sets the IdentityProviderConfig field's value. -func (s *DisassociateIdentityProviderConfigInput) SetIdentityProviderConfig(v *IdentityProviderConfig) *DisassociateIdentityProviderConfigInput { - s.IdentityProviderConfig = v - return s -} - -type DisassociateIdentityProviderConfigOutput struct { - _ struct{} `type:"structure"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s DisassociateIdentityProviderConfigOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s DisassociateIdentityProviderConfigOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *DisassociateIdentityProviderConfigOutput) SetUpdate(v *Update) *DisassociateIdentityProviderConfigOutput { - s.Update = v - return s -} - -// The encryption configuration for the cluster. -type EncryptionConfig struct { - _ struct{} `type:"structure"` - - // AWS Key Management Service (AWS KMS) key. Either the ARN or the alias can - // be used. - Provider *Provider `locationName:"provider" type:"structure"` - - // Specifies the resources to be encrypted. The only supported value is "secrets". - Resources []*string `locationName:"resources" type:"list"` -} - -// String returns the string representation -func (s EncryptionConfig) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s EncryptionConfig) GoString() string { - return s.String() -} - -// SetProvider sets the Provider field's value. -func (s *EncryptionConfig) SetProvider(v *Provider) *EncryptionConfig { - s.Provider = v - return s -} - -// SetResources sets the Resources field's value. -func (s *EncryptionConfig) SetResources(v []*string) *EncryptionConfig { - s.Resources = v - return s -} - -// An object representing an error when an asynchronous operation fails. -type ErrorDetail struct { - _ struct{} `type:"structure"` - - // A brief description of the error. - // - // * SubnetNotFound: We couldn't find one of the subnets associated with - // the cluster. - // - // * SecurityGroupNotFound: We couldn't find one of the security groups associated - // with the cluster. - // - // * EniLimitReached: You have reached the elastic network interface limit - // for your account. - // - // * IpNotAvailable: A subnet associated with the cluster doesn't have any - // free IP addresses. - // - // * AccessDenied: You don't have permissions to perform the specified operation. - // - // * OperationNotPermitted: The service role associated with the cluster - // doesn't have the required access permissions for Amazon EKS. - // - // * VpcIdNotFound: We couldn't find the VPC associated with the cluster. - ErrorCode *string `locationName:"errorCode" type:"string" enum:"ErrorCode"` - - // A more complete description of the error. - ErrorMessage *string `locationName:"errorMessage" type:"string"` - - // An optional field that contains the resource IDs associated with the error. - ResourceIds []*string `locationName:"resourceIds" type:"list"` -} - -// String returns the string representation -func (s ErrorDetail) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ErrorDetail) GoString() string { - return s.String() -} - -// SetErrorCode sets the ErrorCode field's value. -func (s *ErrorDetail) SetErrorCode(v string) *ErrorDetail { - s.ErrorCode = &v - return s -} - -// SetErrorMessage sets the ErrorMessage field's value. -func (s *ErrorDetail) SetErrorMessage(v string) *ErrorDetail { - s.ErrorMessage = &v - return s -} - -// SetResourceIds sets the ResourceIds field's value. -func (s *ErrorDetail) SetResourceIds(v []*string) *ErrorDetail { - s.ResourceIds = v - return s -} - -// An object representing an AWS Fargate profile. -type FargateProfile struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster that the Fargate profile belongs to. - ClusterName *string `locationName:"clusterName" type:"string"` - - // The Unix epoch timestamp in seconds for when the Fargate profile was created. - CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` - - // The full Amazon Resource Name (ARN) of the Fargate profile. - FargateProfileArn *string `locationName:"fargateProfileArn" type:"string"` - - // The name of the Fargate profile. - FargateProfileName *string `locationName:"fargateProfileName" type:"string"` - - // The Amazon Resource Name (ARN) of the pod execution role to use for pods - // that match the selectors in the Fargate profile. For more information, see - // Pod Execution Role (https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) - // in the Amazon EKS User Guide. - PodExecutionRoleArn *string `locationName:"podExecutionRoleArn" type:"string"` - - // The selectors to match for pods to use this Fargate profile. - Selectors []*FargateProfileSelector `locationName:"selectors" type:"list"` - - // The current status of the Fargate profile. - Status *string `locationName:"status" type:"string" enum:"FargateProfileStatus"` - - // The IDs of subnets to launch pods into. - Subnets []*string `locationName:"subnets" type:"list"` - - // The metadata applied to the Fargate profile to assist with categorization - // and organization. Each tag consists of a key and an optional value, both - // of which you define. Fargate profile tags do not propagate to any other resources - // associated with the Fargate profile, such as the pods that are scheduled - // with it. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` -} - -// String returns the string representation -func (s FargateProfile) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s FargateProfile) GoString() string { - return s.String() -} - -// SetClusterName sets the ClusterName field's value. -func (s *FargateProfile) SetClusterName(v string) *FargateProfile { - s.ClusterName = &v - return s -} - -// SetCreatedAt sets the CreatedAt field's value. -func (s *FargateProfile) SetCreatedAt(v time.Time) *FargateProfile { - s.CreatedAt = &v - return s -} - -// SetFargateProfileArn sets the FargateProfileArn field's value. -func (s *FargateProfile) SetFargateProfileArn(v string) *FargateProfile { - s.FargateProfileArn = &v - return s -} - -// SetFargateProfileName sets the FargateProfileName field's value. -func (s *FargateProfile) SetFargateProfileName(v string) *FargateProfile { - s.FargateProfileName = &v - return s -} - -// SetPodExecutionRoleArn sets the PodExecutionRoleArn field's value. -func (s *FargateProfile) SetPodExecutionRoleArn(v string) *FargateProfile { - s.PodExecutionRoleArn = &v - return s -} - -// SetSelectors sets the Selectors field's value. -func (s *FargateProfile) SetSelectors(v []*FargateProfileSelector) *FargateProfile { - s.Selectors = v - return s -} - -// SetStatus sets the Status field's value. -func (s *FargateProfile) SetStatus(v string) *FargateProfile { - s.Status = &v - return s -} - -// SetSubnets sets the Subnets field's value. -func (s *FargateProfile) SetSubnets(v []*string) *FargateProfile { - s.Subnets = v - return s -} - -// SetTags sets the Tags field's value. -func (s *FargateProfile) SetTags(v map[string]*string) *FargateProfile { - s.Tags = v - return s -} - -// An object representing an AWS Fargate profile selector. -type FargateProfileSelector struct { - _ struct{} `type:"structure"` - - // The Kubernetes labels that the selector should match. A pod must contain - // all of the labels that are specified in the selector for it to be considered - // a match. - Labels map[string]*string `locationName:"labels" type:"map"` - - // The Kubernetes namespace that the selector should match. - Namespace *string `locationName:"namespace" type:"string"` -} - -// String returns the string representation -func (s FargateProfileSelector) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s FargateProfileSelector) GoString() string { - return s.String() -} - -// SetLabels sets the Labels field's value. -func (s *FargateProfileSelector) SetLabels(v map[string]*string) *FargateProfileSelector { - s.Labels = v - return s -} - -// SetNamespace sets the Namespace field's value. -func (s *FargateProfileSelector) SetNamespace(v string) *FargateProfileSelector { - s.Namespace = &v - return s -} - -// An object representing an identity provider. -type Identity struct { - _ struct{} `type:"structure"` - - // An object representing the OpenID Connect (https://openid.net/connect/) identity - // provider information. - Oidc *OIDC `locationName:"oidc" type:"structure"` -} - -// String returns the string representation -func (s Identity) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Identity) GoString() string { - return s.String() -} - -// SetOidc sets the Oidc field's value. -func (s *Identity) SetOidc(v *OIDC) *Identity { - s.Oidc = v - return s -} - -// An object representing an identity provider configuration. -type IdentityProviderConfig struct { - _ struct{} `type:"structure"` - - // The name of the identity provider configuration. - // - // Name is a required field - Name *string `locationName:"name" type:"string" required:"true"` - - // The type of the identity provider configuration. - // - // Type is a required field - Type *string `locationName:"type" type:"string" required:"true"` -} - -// String returns the string representation -func (s IdentityProviderConfig) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IdentityProviderConfig) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *IdentityProviderConfig) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "IdentityProviderConfig"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Type == nil { - invalidParams.Add(request.NewErrParamRequired("Type")) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetName sets the Name field's value. -func (s *IdentityProviderConfig) SetName(v string) *IdentityProviderConfig { - s.Name = &v - return s -} - -// SetType sets the Type field's value. -func (s *IdentityProviderConfig) SetType(v string) *IdentityProviderConfig { - s.Type = &v - return s -} - -// An object that represents an identity configuration. -type IdentityProviderConfigResponse struct { - _ struct{} `type:"structure"` - - // An object that represents an OpenID Connect (OIDC) identity provider configuration. - Oidc *OidcIdentityProviderConfig `locationName:"oidc" type:"structure"` -} - -// String returns the string representation -func (s IdentityProviderConfigResponse) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s IdentityProviderConfigResponse) GoString() string { - return s.String() -} - -// SetOidc sets the Oidc field's value. -func (s *IdentityProviderConfigResponse) SetOidc(v *OidcIdentityProviderConfig) *IdentityProviderConfigResponse { - s.Oidc = v - return s -} - -// The specified parameter is invalid. Review the available parameters for the -// API request. -type InvalidParameterException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - AddonName *string `locationName:"addonName" type:"string"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - // The Fargate profile associated with the exception. - FargateProfileName *string `locationName:"fargateProfileName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s InvalidParameterException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InvalidParameterException) GoString() string { - return s.String() -} - -func newErrorInvalidParameterException(v protocol.ResponseMetadata) error { - return &InvalidParameterException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *InvalidParameterException) Code() string { - return "InvalidParameterException" -} - -// Message returns the exception's message. -func (s *InvalidParameterException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *InvalidParameterException) OrigErr() error { - return nil -} - -func (s *InvalidParameterException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *InvalidParameterException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *InvalidParameterException) RequestID() string { - return s.RespMetadata.RequestID -} - -// The request is invalid given the state of the cluster. Check the state of -// the cluster and the associated operations. -type InvalidRequestException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - AddonName *string `locationName:"addonName" type:"string"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s InvalidRequestException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s InvalidRequestException) GoString() string { - return s.String() -} - -func newErrorInvalidRequestException(v protocol.ResponseMetadata) error { - return &InvalidRequestException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *InvalidRequestException) Code() string { - return "InvalidRequestException" -} - -// Message returns the exception's message. -func (s *InvalidRequestException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *InvalidRequestException) OrigErr() error { - return nil -} - -func (s *InvalidRequestException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *InvalidRequestException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *InvalidRequestException) RequestID() string { - return s.RespMetadata.RequestID -} - -// An object representing an issue with an Amazon EKS resource. -type Issue struct { - _ struct{} `type:"structure"` - - // A brief description of the error. - // - // * AccessDenied: Amazon EKS or one or more of your managed nodes is failing - // to authenticate or authorize with your Kubernetes cluster API server. - // - // * AsgInstanceLaunchFailures: Your Auto Scaling group is experiencing failures - // while attempting to launch instances. - // - // * AutoScalingGroupNotFound: We couldn't find the Auto Scaling group associated - // with the managed node group. You may be able to recreate an Auto Scaling - // group with the same settings to recover. - // - // * ClusterUnreachable: Amazon EKS or one or more of your managed nodes - // is unable to to communicate with your Kubernetes cluster API server. This - // can happen if there are network disruptions or if API servers are timing - // out processing requests. - // - // * Ec2LaunchTemplateNotFound: We couldn't find the Amazon EC2 launch template - // for your managed node group. You may be able to recreate a launch template - // with the same settings to recover. - // - // * Ec2LaunchTemplateVersionMismatch: The Amazon EC2 launch template version - // for your managed node group does not match the version that Amazon EKS - // created. You may be able to revert to the version that Amazon EKS created - // to recover. - // - // * Ec2SecurityGroupDeletionFailure: We could not delete the remote access - // security group for your managed node group. Remove any dependencies from - // the security group. - // - // * Ec2SecurityGroupNotFound: We couldn't find the cluster security group - // for the cluster. You must recreate your cluster. - // - // * Ec2SubnetInvalidConfiguration: One or more Amazon EC2 subnets specified - // for a node group do not automatically assign public IP addresses to instances - // launched into it. If you want your instances to be assigned a public IP - // address, then you need to enable the auto-assign public IP address setting - // for the subnet. See Modifying the public IPv4 addressing attribute for - // your subnet (https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip) - // in the Amazon VPC User Guide. - // - // * IamInstanceProfileNotFound: We couldn't find the IAM instance profile - // for your managed node group. You may be able to recreate an instance profile - // with the same settings to recover. - // - // * IamNodeRoleNotFound: We couldn't find the IAM role for your managed - // node group. You may be able to recreate an IAM role with the same settings - // to recover. - // - // * InstanceLimitExceeded: Your AWS account is unable to launch any more - // instances of the specified instance type. You may be able to request an - // Amazon EC2 instance limit increase to recover. - // - // * InsufficientFreeAddresses: One or more of the subnets associated with - // your managed node group does not have enough available IP addresses for - // new nodes. - // - // * InternalFailure: These errors are usually caused by an Amazon EKS server-side - // issue. - // - // * NodeCreationFailure: Your launched instances are unable to register - // with your Amazon EKS cluster. Common causes of this failure are insufficient - // node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/worker_node_IAM_role.html) - // permissions or lack of outbound internet access for the nodes. - Code *string `locationName:"code" type:"string" enum:"NodegroupIssueCode"` - - // The error message associated with the issue. - Message *string `locationName:"message" type:"string"` - - // The AWS resources that are afflicted by this issue. - ResourceIds []*string `locationName:"resourceIds" type:"list"` -} - -// String returns the string representation -func (s Issue) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Issue) GoString() string { - return s.String() -} - -// SetCode sets the Code field's value. -func (s *Issue) SetCode(v string) *Issue { - s.Code = &v - return s -} - -// SetMessage sets the Message field's value. -func (s *Issue) SetMessage(v string) *Issue { - s.Message = &v - return s -} - -// SetResourceIds sets the ResourceIds field's value. -func (s *Issue) SetResourceIds(v []*string) *Issue { - s.ResourceIds = v - return s -} - -// The Kubernetes network configuration for the cluster. -type KubernetesNetworkConfigRequest struct { - _ struct{} `type:"structure"` - - // The CIDR block to assign Kubernetes service IP addresses from. If you don't - // specify a block, Kubernetes assigns addresses from either the 10.100.0.0/16 - // or 172.20.0.0/16 CIDR blocks. We recommend that you specify a block that - // does not overlap with resources in other networks that are peered or connected - // to your VPC. The block must meet the following requirements: - // - // * Within one of the following private IP address blocks: 10.0.0.0/8, 172.16.0.0.0/12, - // or 192.168.0.0/16. - // - // * Doesn't overlap with any CIDR block assigned to the VPC that you selected - // for VPC. - // - // * Between /24 and /12. - // - // You can only specify a custom CIDR block when you create a cluster and can't - // change this value once the cluster is created. - ServiceIpv4Cidr *string `locationName:"serviceIpv4Cidr" type:"string"` -} - -// String returns the string representation -func (s KubernetesNetworkConfigRequest) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s KubernetesNetworkConfigRequest) GoString() string { - return s.String() -} - -// SetServiceIpv4Cidr sets the ServiceIpv4Cidr field's value. -func (s *KubernetesNetworkConfigRequest) SetServiceIpv4Cidr(v string) *KubernetesNetworkConfigRequest { - s.ServiceIpv4Cidr = &v - return s -} - -// The Kubernetes network configuration for the cluster. -type KubernetesNetworkConfigResponse struct { - _ struct{} `type:"structure"` - - // The CIDR block that Kubernetes service IP addresses are assigned from. If - // you didn't specify a CIDR block when you created the cluster, then Kubernetes - // assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. - // If this was specified, then it was specified when the cluster was created - // and it cannot be changed. - ServiceIpv4Cidr *string `locationName:"serviceIpv4Cidr" type:"string"` -} - -// String returns the string representation -func (s KubernetesNetworkConfigResponse) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s KubernetesNetworkConfigResponse) GoString() string { - return s.String() -} - -// SetServiceIpv4Cidr sets the ServiceIpv4Cidr field's value. -func (s *KubernetesNetworkConfigResponse) SetServiceIpv4Cidr(v string) *KubernetesNetworkConfigResponse { - s.ServiceIpv4Cidr = &v - return s -} - -// An object representing a node group launch template specification. The launch -// template cannot include SubnetId (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html), -// IamInstanceProfile (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html), -// RequestSpotInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html), -// HibernationOptions (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html), -// or TerminateInstances (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html), -// or the node group deployment or update will fail. For more information about -// launch templates, see CreateLaunchTemplate (https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html) -// in the Amazon EC2 API Reference. For more information about using launch -// templates with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) -// in the Amazon EKS User Guide. -// -// Specify either name or id, but not both. -type LaunchTemplateSpecification struct { - _ struct{} `type:"structure"` - - // The ID of the launch template. - Id *string `locationName:"id" type:"string"` - - // The name of the launch template. - Name *string `locationName:"name" type:"string"` - - // The version of the launch template to use. If no version is specified, then - // the template's default version is used. - Version *string `locationName:"version" type:"string"` -} - -// String returns the string representation -func (s LaunchTemplateSpecification) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s LaunchTemplateSpecification) GoString() string { - return s.String() -} - -// SetId sets the Id field's value. -func (s *LaunchTemplateSpecification) SetId(v string) *LaunchTemplateSpecification { - s.Id = &v - return s -} - -// SetName sets the Name field's value. -func (s *LaunchTemplateSpecification) SetName(v string) *LaunchTemplateSpecification { - s.Name = &v - return s -} - -// SetVersion sets the Version field's value. -func (s *LaunchTemplateSpecification) SetVersion(v string) *LaunchTemplateSpecification { - s.Version = &v - return s -} - -type ListAddonsInput struct { - _ struct{} `type:"structure"` - - // The name of the cluster. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` - - // The maximum number of add-on results returned by ListAddonsRequest in paginated - // output. When you use this parameter, ListAddonsRequest returns only maxResults - // results in a single page along with a nextToken response element. You can - // see the remaining results of the initial request by sending another ListAddonsRequest - // request with the returned nextToken value. This value can be between 1 and - // 100. If you don't use this parameter, ListAddonsRequest returns up to 100 - // results and a nextToken value, if applicable. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The nextToken value returned from a previous paginated ListAddonsRequest - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - // - // This token should be treated as an opaque identifier that is used only to - // retrieve the next items in a list and not for other programmatic purposes. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListAddonsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListAddonsInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListAddonsInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListAddonsInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *ListAddonsInput) SetClusterName(v string) *ListAddonsInput { - s.ClusterName = &v - return s -} - -// SetMaxResults sets the MaxResults field's value. -func (s *ListAddonsInput) SetMaxResults(v int64) *ListAddonsInput { - s.MaxResults = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListAddonsInput) SetNextToken(v string) *ListAddonsInput { - s.NextToken = &v - return s -} - -type ListAddonsOutput struct { - _ struct{} `type:"structure"` - - // A list of available add-ons. - Addons []*string `locationName:"addons" type:"list"` - - // The nextToken value returned from a previous paginated ListAddonsResponse - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - // - // This token should be treated as an opaque identifier that is used only to - // retrieve the next items in a list and not for other programmatic purposes. - NextToken *string `locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListAddonsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListAddonsOutput) GoString() string { - return s.String() -} - -// SetAddons sets the Addons field's value. -func (s *ListAddonsOutput) SetAddons(v []*string) *ListAddonsOutput { - s.Addons = v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListAddonsOutput) SetNextToken(v string) *ListAddonsOutput { - s.NextToken = &v - return s -} - -type ListClustersInput struct { - _ struct{} `type:"structure"` - - // The maximum number of cluster results returned by ListClusters in paginated - // output. When you use this parameter, ListClusters returns only maxResults - // results in a single page along with a nextToken response element. You can - // see the remaining results of the initial request by sending another ListClusters - // request with the returned nextToken value. This value can be between 1 and - // 100. If you don't use this parameter, ListClusters returns up to 100 results - // and a nextToken value if applicable. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The nextToken value returned from a previous paginated ListClusters request - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - // - // This token should be treated as an opaque identifier that is used only to - // retrieve the next items in a list and not for other programmatic purposes. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListClustersInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListClustersInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListClustersInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListClustersInput"} - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetMaxResults sets the MaxResults field's value. -func (s *ListClustersInput) SetMaxResults(v int64) *ListClustersInput { - s.MaxResults = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListClustersInput) SetNextToken(v string) *ListClustersInput { - s.NextToken = &v - return s -} - -type ListClustersOutput struct { - _ struct{} `type:"structure"` - - // A list of all of the clusters for your account in the specified Region. - Clusters []*string `locationName:"clusters" type:"list"` - - // The nextToken value to include in a future ListClusters request. When the - // results of a ListClusters request exceed maxResults, you can use this value - // to retrieve the next page of results. This value is null when there are no - // more results to return. - NextToken *string `locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListClustersOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListClustersOutput) GoString() string { - return s.String() -} - -// SetClusters sets the Clusters field's value. -func (s *ListClustersOutput) SetClusters(v []*string) *ListClustersOutput { - s.Clusters = v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListClustersOutput) SetNextToken(v string) *ListClustersOutput { - s.NextToken = &v - return s -} - -type ListFargateProfilesInput struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster that you would like to listFargate profiles - // in. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The maximum number of Fargate profile results returned by ListFargateProfiles - // in paginated output. When you use this parameter, ListFargateProfiles returns - // only maxResults results in a single page along with a nextToken response - // element. You can see the remaining results of the initial request by sending - // another ListFargateProfiles request with the returned nextToken value. This - // value can be between 1 and 100. If you don't use this parameter, ListFargateProfiles - // returns up to 100 results and a nextToken value if applicable. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The nextToken value returned from a previous paginated ListFargateProfiles - // request where maxResults was used and the results exceeded the value of that - // parameter. Pagination continues from the end of the previous results that - // returned the nextToken value. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListFargateProfilesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListFargateProfilesInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListFargateProfilesInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListFargateProfilesInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *ListFargateProfilesInput) SetClusterName(v string) *ListFargateProfilesInput { - s.ClusterName = &v - return s -} - -// SetMaxResults sets the MaxResults field's value. -func (s *ListFargateProfilesInput) SetMaxResults(v int64) *ListFargateProfilesInput { - s.MaxResults = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListFargateProfilesInput) SetNextToken(v string) *ListFargateProfilesInput { - s.NextToken = &v - return s -} - -type ListFargateProfilesOutput struct { - _ struct{} `type:"structure"` - - // A list of all of the Fargate profiles associated with the specified cluster. - FargateProfileNames []*string `locationName:"fargateProfileNames" type:"list"` - - // The nextToken value to include in a future ListFargateProfiles request. When - // the results of a ListFargateProfiles request exceed maxResults, you can use - // this value to retrieve the next page of results. This value is null when - // there are no more results to return. - NextToken *string `locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListFargateProfilesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListFargateProfilesOutput) GoString() string { - return s.String() -} - -// SetFargateProfileNames sets the FargateProfileNames field's value. -func (s *ListFargateProfilesOutput) SetFargateProfileNames(v []*string) *ListFargateProfilesOutput { - s.FargateProfileNames = v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListFargateProfilesOutput) SetNextToken(v string) *ListFargateProfilesOutput { - s.NextToken = &v - return s -} - -type ListIdentityProviderConfigsInput struct { - _ struct{} `type:"structure"` - - // The cluster name that you want to list identity provider configurations for. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The maximum number of identity provider configurations returned by ListIdentityProviderConfigs - // in paginated output. When you use this parameter, ListIdentityProviderConfigs - // returns only maxResults results in a single page along with a nextToken response - // element. You can see the remaining results of the initial request by sending - // another ListIdentityProviderConfigs request with the returned nextToken value. - // This value can be between 1 and 100. If you don't use this parameter, ListIdentityProviderConfigs - // returns up to 100 results and a nextToken value, if applicable. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The nextToken value returned from a previous paginated IdentityProviderConfigsRequest - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListIdentityProviderConfigsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListIdentityProviderConfigsInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListIdentityProviderConfigsInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListIdentityProviderConfigsInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *ListIdentityProviderConfigsInput) SetClusterName(v string) *ListIdentityProviderConfigsInput { - s.ClusterName = &v - return s -} - -// SetMaxResults sets the MaxResults field's value. -func (s *ListIdentityProviderConfigsInput) SetMaxResults(v int64) *ListIdentityProviderConfigsInput { - s.MaxResults = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListIdentityProviderConfigsInput) SetNextToken(v string) *ListIdentityProviderConfigsInput { - s.NextToken = &v - return s -} - -type ListIdentityProviderConfigsOutput struct { - _ struct{} `type:"structure"` - - // The identity provider configurations for the cluster. - IdentityProviderConfigs []*IdentityProviderConfig `locationName:"identityProviderConfigs" type:"list"` - - // The nextToken value returned from a previous paginated ListIdentityProviderConfigsResponse - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - NextToken *string `locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListIdentityProviderConfigsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListIdentityProviderConfigsOutput) GoString() string { - return s.String() -} - -// SetIdentityProviderConfigs sets the IdentityProviderConfigs field's value. -func (s *ListIdentityProviderConfigsOutput) SetIdentityProviderConfigs(v []*IdentityProviderConfig) *ListIdentityProviderConfigsOutput { - s.IdentityProviderConfigs = v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListIdentityProviderConfigsOutput) SetNextToken(v string) *ListIdentityProviderConfigsOutput { - s.NextToken = &v - return s -} - -type ListNodegroupsInput struct { - _ struct{} `type:"structure"` - - // The name of the Amazon EKS cluster that you would like to list node groups - // in. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The maximum number of node group results returned by ListNodegroups in paginated - // output. When you use this parameter, ListNodegroups returns only maxResults - // results in a single page along with a nextToken response element. You can - // see the remaining results of the initial request by sending another ListNodegroups - // request with the returned nextToken value. This value can be between 1 and - // 100. If you don't use this parameter, ListNodegroups returns up to 100 results - // and a nextToken value if applicable. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The nextToken value returned from a previous paginated ListNodegroups request - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` -} - -// String returns the string representation -func (s ListNodegroupsInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListNodegroupsInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListNodegroupsInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListNodegroupsInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClusterName sets the ClusterName field's value. -func (s *ListNodegroupsInput) SetClusterName(v string) *ListNodegroupsInput { - s.ClusterName = &v - return s -} - -// SetMaxResults sets the MaxResults field's value. -func (s *ListNodegroupsInput) SetMaxResults(v int64) *ListNodegroupsInput { - s.MaxResults = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListNodegroupsInput) SetNextToken(v string) *ListNodegroupsInput { - s.NextToken = &v - return s -} - -type ListNodegroupsOutput struct { - _ struct{} `type:"structure"` - - // The nextToken value to include in a future ListNodegroups request. When the - // results of a ListNodegroups request exceed maxResults, you can use this value - // to retrieve the next page of results. This value is null when there are no - // more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // A list of all of the node groups associated with the specified cluster. - Nodegroups []*string `locationName:"nodegroups" type:"list"` -} - -// String returns the string representation -func (s ListNodegroupsOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListNodegroupsOutput) GoString() string { - return s.String() -} - -// SetNextToken sets the NextToken field's value. -func (s *ListNodegroupsOutput) SetNextToken(v string) *ListNodegroupsOutput { - s.NextToken = &v - return s -} - -// SetNodegroups sets the Nodegroups field's value. -func (s *ListNodegroupsOutput) SetNodegroups(v []*string) *ListNodegroupsOutput { - s.Nodegroups = v - return s -} - -type ListTagsForResourceInput struct { - _ struct{} `type:"structure"` - - // The Amazon Resource Name (ARN) that identifies the resource for which to - // list the tags. Currently, the supported resources are Amazon EKS clusters - // and managed node groups. - // - // ResourceArn is a required field - ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` -} - -// String returns the string representation -func (s ListTagsForResourceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListTagsForResourceInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListTagsForResourceInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"} - if s.ResourceArn == nil { - invalidParams.Add(request.NewErrParamRequired("ResourceArn")) - } - if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetResourceArn sets the ResourceArn field's value. -func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput { - s.ResourceArn = &v - return s -} - -type ListTagsForResourceOutput struct { - _ struct{} `type:"structure"` - - // The tags for the resource. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` -} - -// String returns the string representation -func (s ListTagsForResourceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListTagsForResourceOutput) GoString() string { - return s.String() -} - -// SetTags sets the Tags field's value. -func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput { - s.Tags = v - return s -} - -type ListUpdatesInput struct { - _ struct{} `type:"structure"` - - // The names of the installed add-ons that have available updates. - AddonName *string `location:"querystring" locationName:"addonName" type:"string"` - - // The maximum number of update results returned by ListUpdates in paginated - // output. When you use this parameter, ListUpdates returns only maxResults - // results in a single page along with a nextToken response element. You can - // see the remaining results of the initial request by sending another ListUpdates - // request with the returned nextToken value. This value can be between 1 and - // 100. If you don't use this parameter, ListUpdates returns up to 100 results - // and a nextToken value if applicable. - MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"` - - // The name of the Amazon EKS cluster to list updates for. - // - // Name is a required field - Name *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The nextToken value returned from a previous paginated ListUpdates request - // where maxResults was used and the results exceeded the value of that parameter. - // Pagination continues from the end of the previous results that returned the - // nextToken value. - NextToken *string `location:"querystring" locationName:"nextToken" type:"string"` - - // The name of the Amazon EKS managed node group to list updates for. - NodegroupName *string `location:"querystring" locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s ListUpdatesInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListUpdatesInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *ListUpdatesInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "ListUpdatesInput"} - if s.MaxResults != nil && *s.MaxResults < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1)) - } - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *ListUpdatesInput) SetAddonName(v string) *ListUpdatesInput { - s.AddonName = &v - return s -} - -// SetMaxResults sets the MaxResults field's value. -func (s *ListUpdatesInput) SetMaxResults(v int64) *ListUpdatesInput { - s.MaxResults = &v - return s -} - -// SetName sets the Name field's value. -func (s *ListUpdatesInput) SetName(v string) *ListUpdatesInput { - s.Name = &v - return s -} - -// SetNextToken sets the NextToken field's value. -func (s *ListUpdatesInput) SetNextToken(v string) *ListUpdatesInput { - s.NextToken = &v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *ListUpdatesInput) SetNodegroupName(v string) *ListUpdatesInput { - s.NodegroupName = &v - return s -} - -type ListUpdatesOutput struct { - _ struct{} `type:"structure"` - - // The nextToken value to include in a future ListUpdates request. When the - // results of a ListUpdates request exceed maxResults, you can use this value - // to retrieve the next page of results. This value is null when there are no - // more results to return. - NextToken *string `locationName:"nextToken" type:"string"` - - // A list of all the updates for the specified cluster and Region. - UpdateIds []*string `locationName:"updateIds" type:"list"` -} - -// String returns the string representation -func (s ListUpdatesOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ListUpdatesOutput) GoString() string { - return s.String() -} - -// SetNextToken sets the NextToken field's value. -func (s *ListUpdatesOutput) SetNextToken(v string) *ListUpdatesOutput { - s.NextToken = &v - return s -} - -// SetUpdateIds sets the UpdateIds field's value. -func (s *ListUpdatesOutput) SetUpdateIds(v []*string) *ListUpdatesOutput { - s.UpdateIds = v - return s -} - -// An object representing the enabled or disabled Kubernetes control plane logs -// for your cluster. -type LogSetup struct { - _ struct{} `type:"structure"` - - // If a log type is enabled, that log type exports its control plane logs to - // CloudWatch Logs. If a log type isn't enabled, that log type doesn't export - // its control plane logs. Each individual log type can be enabled or disabled - // independently. - Enabled *bool `locationName:"enabled" type:"boolean"` - - // The available cluster control plane log types. - Types []*string `locationName:"types" type:"list"` -} - -// String returns the string representation -func (s LogSetup) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s LogSetup) GoString() string { - return s.String() -} - -// SetEnabled sets the Enabled field's value. -func (s *LogSetup) SetEnabled(v bool) *LogSetup { - s.Enabled = &v - return s -} - -// SetTypes sets the Types field's value. -func (s *LogSetup) SetTypes(v []*string) *LogSetup { - s.Types = v - return s -} - -// An object representing the logging configuration for resources in your cluster. -type Logging struct { - _ struct{} `type:"structure"` - - // The cluster control plane logging configuration for your cluster. - ClusterLogging []*LogSetup `locationName:"clusterLogging" type:"list"` -} - -// String returns the string representation -func (s Logging) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Logging) GoString() string { - return s.String() -} - -// SetClusterLogging sets the ClusterLogging field's value. -func (s *Logging) SetClusterLogging(v []*LogSetup) *Logging { - s.ClusterLogging = v - return s -} - -// An object representing an Amazon EKS managed node group. -type Nodegroup struct { - _ struct{} `type:"structure"` - - // If the node group was deployed using a launch template with a custom AMI, - // then this is CUSTOM. For node groups that weren't deployed using a launch - // template, this is the AMI type that was specified in the node group configuration. - AmiType *string `locationName:"amiType" type:"string" enum:"AMITypes"` - - // The capacity type of your managed node group. - CapacityType *string `locationName:"capacityType" type:"string" enum:"CapacityTypes"` - - // The name of the cluster that the managed node group resides in. - ClusterName *string `locationName:"clusterName" type:"string"` - - // The Unix epoch timestamp in seconds for when the managed node group was created. - CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` - - // If the node group wasn't deployed with a launch template, then this is the - // disk size in the node group configuration. If the node group was deployed - // with a launch template, then this is null. - DiskSize *int64 `locationName:"diskSize" type:"integer"` - - // The health status of the node group. If there are issues with your node group's - // health, they are listed here. - Health *NodegroupHealth `locationName:"health" type:"structure"` - - // If the node group wasn't deployed with a launch template, then this is the - // instance type that is associated with the node group. If the node group was - // deployed with a launch template, then this is null. - InstanceTypes []*string `locationName:"instanceTypes" type:"list"` - - // The Kubernetes labels applied to the nodes in the node group. - // - // Only labels that are applied with the Amazon EKS API are shown here. There - // may be other Kubernetes labels applied to the nodes in this group. - Labels map[string]*string `locationName:"labels" type:"map"` - - // If a launch template was used to create the node group, then this is the - // launch template that was used. - LaunchTemplate *LaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"` - - // The Unix epoch timestamp in seconds for when the managed node group was last - // modified. - ModifiedAt *time.Time `locationName:"modifiedAt" type:"timestamp"` - - // The IAM role associated with your node group. The Amazon EKS node kubelet - // daemon makes calls to AWS APIs on your behalf. Nodes receive permissions - // for these API calls through an IAM instance profile and associated policies. - NodeRole *string `locationName:"nodeRole" type:"string"` - - // The Amazon Resource Name (ARN) associated with the managed node group. - NodegroupArn *string `locationName:"nodegroupArn" type:"string"` - - // The name associated with an Amazon EKS managed node group. - NodegroupName *string `locationName:"nodegroupName" type:"string"` - - // If the node group was deployed using a launch template with a custom AMI, - // then this is the AMI ID that was specified in the launch template. For node - // groups that weren't deployed using a launch template, this is the version - // of the Amazon EKS optimized AMI that the node group was deployed with. - ReleaseVersion *string `locationName:"releaseVersion" type:"string"` - - // If the node group wasn't deployed with a launch template, then this is the - // remote access configuration that is associated with the node group. If the - // node group was deployed with a launch template, then this is null. - RemoteAccess *RemoteAccessConfig `locationName:"remoteAccess" type:"structure"` - - // The resources associated with the node group, such as Auto Scaling groups - // and security groups for remote access. - Resources *NodegroupResources `locationName:"resources" type:"structure"` - - // The scaling configuration details for the Auto Scaling group that is associated - // with your node group. - ScalingConfig *NodegroupScalingConfig `locationName:"scalingConfig" type:"structure"` - - // The current status of the managed node group. - Status *string `locationName:"status" type:"string" enum:"NodegroupStatus"` - - // The subnets that were specified for the Auto Scaling group that is associated - // with your node group. - Subnets []*string `locationName:"subnets" type:"list"` - - // The metadata applied to the node group to assist with categorization and - // organization. Each tag consists of a key and an optional value, both of which - // you define. Node group tags do not propagate to any other resources associated - // with the node group, such as the Amazon EC2 instances or subnets. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` - - // The Kubernetes taints to be applied to the nodes in the node group when they - // are created. Effect is one of NoSchedule, PreferNoSchedule, or NoExecute. - // Kubernetes taints can be used together with tolerations to control how workloads - // are scheduled to your nodes. - Taints []*Taint `locationName:"taints" type:"list"` - - // The Kubernetes version of the managed node group. - Version *string `locationName:"version" type:"string"` -} - -// String returns the string representation -func (s Nodegroup) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Nodegroup) GoString() string { - return s.String() -} - -// SetAmiType sets the AmiType field's value. -func (s *Nodegroup) SetAmiType(v string) *Nodegroup { - s.AmiType = &v - return s -} - -// SetCapacityType sets the CapacityType field's value. -func (s *Nodegroup) SetCapacityType(v string) *Nodegroup { - s.CapacityType = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *Nodegroup) SetClusterName(v string) *Nodegroup { - s.ClusterName = &v - return s -} - -// SetCreatedAt sets the CreatedAt field's value. -func (s *Nodegroup) SetCreatedAt(v time.Time) *Nodegroup { - s.CreatedAt = &v - return s -} - -// SetDiskSize sets the DiskSize field's value. -func (s *Nodegroup) SetDiskSize(v int64) *Nodegroup { - s.DiskSize = &v - return s -} - -// SetHealth sets the Health field's value. -func (s *Nodegroup) SetHealth(v *NodegroupHealth) *Nodegroup { - s.Health = v - return s -} - -// SetInstanceTypes sets the InstanceTypes field's value. -func (s *Nodegroup) SetInstanceTypes(v []*string) *Nodegroup { - s.InstanceTypes = v - return s -} - -// SetLabels sets the Labels field's value. -func (s *Nodegroup) SetLabels(v map[string]*string) *Nodegroup { - s.Labels = v - return s -} - -// SetLaunchTemplate sets the LaunchTemplate field's value. -func (s *Nodegroup) SetLaunchTemplate(v *LaunchTemplateSpecification) *Nodegroup { - s.LaunchTemplate = v - return s -} - -// SetModifiedAt sets the ModifiedAt field's value. -func (s *Nodegroup) SetModifiedAt(v time.Time) *Nodegroup { - s.ModifiedAt = &v - return s -} - -// SetNodeRole sets the NodeRole field's value. -func (s *Nodegroup) SetNodeRole(v string) *Nodegroup { - s.NodeRole = &v - return s -} - -// SetNodegroupArn sets the NodegroupArn field's value. -func (s *Nodegroup) SetNodegroupArn(v string) *Nodegroup { - s.NodegroupArn = &v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *Nodegroup) SetNodegroupName(v string) *Nodegroup { - s.NodegroupName = &v - return s -} - -// SetReleaseVersion sets the ReleaseVersion field's value. -func (s *Nodegroup) SetReleaseVersion(v string) *Nodegroup { - s.ReleaseVersion = &v - return s -} - -// SetRemoteAccess sets the RemoteAccess field's value. -func (s *Nodegroup) SetRemoteAccess(v *RemoteAccessConfig) *Nodegroup { - s.RemoteAccess = v - return s -} - -// SetResources sets the Resources field's value. -func (s *Nodegroup) SetResources(v *NodegroupResources) *Nodegroup { - s.Resources = v - return s -} - -// SetScalingConfig sets the ScalingConfig field's value. -func (s *Nodegroup) SetScalingConfig(v *NodegroupScalingConfig) *Nodegroup { - s.ScalingConfig = v - return s -} - -// SetStatus sets the Status field's value. -func (s *Nodegroup) SetStatus(v string) *Nodegroup { - s.Status = &v - return s -} - -// SetSubnets sets the Subnets field's value. -func (s *Nodegroup) SetSubnets(v []*string) *Nodegroup { - s.Subnets = v - return s -} - -// SetTags sets the Tags field's value. -func (s *Nodegroup) SetTags(v map[string]*string) *Nodegroup { - s.Tags = v - return s -} - -// SetTaints sets the Taints field's value. -func (s *Nodegroup) SetTaints(v []*Taint) *Nodegroup { - s.Taints = v - return s -} - -// SetVersion sets the Version field's value. -func (s *Nodegroup) SetVersion(v string) *Nodegroup { - s.Version = &v - return s -} - -// An object representing the health status of the node group. -type NodegroupHealth struct { - _ struct{} `type:"structure"` - - // Any issues that are associated with the node group. - Issues []*Issue `locationName:"issues" type:"list"` -} - -// String returns the string representation -func (s NodegroupHealth) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NodegroupHealth) GoString() string { - return s.String() -} - -// SetIssues sets the Issues field's value. -func (s *NodegroupHealth) SetIssues(v []*Issue) *NodegroupHealth { - s.Issues = v - return s -} - -// An object representing the resources associated with the node group, such -// as Auto Scaling groups and security groups for remote access. -type NodegroupResources struct { - _ struct{} `type:"structure"` - - // The Auto Scaling groups associated with the node group. - AutoScalingGroups []*AutoScalingGroup `locationName:"autoScalingGroups" type:"list"` - - // The remote access security group associated with the node group. This security - // group controls SSH access to the nodes. - RemoteAccessSecurityGroup *string `locationName:"remoteAccessSecurityGroup" type:"string"` -} - -// String returns the string representation -func (s NodegroupResources) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NodegroupResources) GoString() string { - return s.String() -} - -// SetAutoScalingGroups sets the AutoScalingGroups field's value. -func (s *NodegroupResources) SetAutoScalingGroups(v []*AutoScalingGroup) *NodegroupResources { - s.AutoScalingGroups = v - return s -} - -// SetRemoteAccessSecurityGroup sets the RemoteAccessSecurityGroup field's value. -func (s *NodegroupResources) SetRemoteAccessSecurityGroup(v string) *NodegroupResources { - s.RemoteAccessSecurityGroup = &v - return s -} - -// An object representing the scaling configuration details for the Auto Scaling -// group that is associated with your node group. When creating a node group, -// you must specify all or none of the properties. When updating a node group, -// you can specify any or none of the properties. -type NodegroupScalingConfig struct { - _ struct{} `type:"structure"` - - // The current number of nodes that the managed node group should maintain. - DesiredSize *int64 `locationName:"desiredSize" type:"integer"` - - // The maximum number of nodes that the managed node group can scale out to. - // For information about the maximum number that you can specify, see Amazon - // EKS service quotas (https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html) - // in the Amazon EKS User Guide. - MaxSize *int64 `locationName:"maxSize" min:"1" type:"integer"` - - // The minimum number of nodes that the managed node group can scale in to. - // This number must be greater than zero. - MinSize *int64 `locationName:"minSize" type:"integer"` -} - -// String returns the string representation -func (s NodegroupScalingConfig) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NodegroupScalingConfig) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *NodegroupScalingConfig) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "NodegroupScalingConfig"} - if s.MaxSize != nil && *s.MaxSize < 1 { - invalidParams.Add(request.NewErrParamMinValue("MaxSize", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetDesiredSize sets the DesiredSize field's value. -func (s *NodegroupScalingConfig) SetDesiredSize(v int64) *NodegroupScalingConfig { - s.DesiredSize = &v - return s -} - -// SetMaxSize sets the MaxSize field's value. -func (s *NodegroupScalingConfig) SetMaxSize(v int64) *NodegroupScalingConfig { - s.MaxSize = &v - return s -} - -// SetMinSize sets the MinSize field's value. -func (s *NodegroupScalingConfig) SetMinSize(v int64) *NodegroupScalingConfig { - s.MinSize = &v - return s -} - -// A service resource associated with the request could not be found. Clients -// should not retry such requests. -type NotFoundException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - Message_ *string `locationName:"message" type:"string"` -} - -// String returns the string representation -func (s NotFoundException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s NotFoundException) GoString() string { - return s.String() -} - -func newErrorNotFoundException(v protocol.ResponseMetadata) error { - return &NotFoundException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *NotFoundException) Code() string { - return "NotFoundException" -} - -// Message returns the exception's message. -func (s *NotFoundException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *NotFoundException) OrigErr() error { - return nil -} - -func (s *NotFoundException) Error() string { - return fmt.Sprintf("%s: %s", s.Code(), s.Message()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *NotFoundException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *NotFoundException) RequestID() string { - return s.RespMetadata.RequestID -} - -// An object representing the OpenID Connect (https://openid.net/connect/) (OIDC) -// identity provider information for the cluster. -type OIDC struct { - _ struct{} `type:"structure"` - - // The issuer URL for the OIDC identity provider. - Issuer *string `locationName:"issuer" type:"string"` -} - -// String returns the string representation -func (s OIDC) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s OIDC) GoString() string { - return s.String() -} - -// SetIssuer sets the Issuer field's value. -func (s *OIDC) SetIssuer(v string) *OIDC { - s.Issuer = &v - return s -} - -// An object that represents the configuration for an OpenID Connect (OIDC) -// identity provider. -type OidcIdentityProviderConfig struct { - _ struct{} `type:"structure"` - - // This is also known as audience. The ID of the client application that makes - // authentication requests to the OIDC identity provider. - ClientId *string `locationName:"clientId" type:"string"` - - // The cluster that the configuration is associated to. - ClusterName *string `locationName:"clusterName" type:"string"` - - // The JSON web token (JWT) claim that the provider uses to return your groups. - GroupsClaim *string `locationName:"groupsClaim" type:"string"` - - // The prefix that is prepended to group claims to prevent clashes with existing - // names (such as system: groups). For example, the valueoidc: creates group - // names like oidc:engineering and oidc:infra. The prefix can't contain system: - GroupsPrefix *string `locationName:"groupsPrefix" type:"string"` - - // The ARN of the configuration. - IdentityProviderConfigArn *string `locationName:"identityProviderConfigArn" type:"string"` - - // The name of the configuration. - IdentityProviderConfigName *string `locationName:"identityProviderConfigName" type:"string"` - - // The URL of the OIDC identity provider that allows the API server to discover - // public signing keys for verifying tokens. - IssuerUrl *string `locationName:"issuerUrl" type:"string"` - - // The key-value pairs that describe required claims in the identity token. - // If set, each claim is verified to be present in the token with a matching - // value. - RequiredClaims map[string]*string `locationName:"requiredClaims" type:"map"` - - // The status of the OIDC identity provider. - Status *string `locationName:"status" type:"string" enum:"ConfigStatus"` - - // The metadata to apply to the provider configuration to assist with categorization - // and organization. Each tag consists of a key and an optional value, both - // of which you defined. - Tags map[string]*string `locationName:"tags" min:"1" type:"map"` - - // The JSON Web token (JWT) claim that is used as the username. - UsernameClaim *string `locationName:"usernameClaim" type:"string"` - - // The prefix that is prepended to username claims to prevent clashes with existing - // names. The prefix can't contain system: - UsernamePrefix *string `locationName:"usernamePrefix" type:"string"` -} - -// String returns the string representation -func (s OidcIdentityProviderConfig) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s OidcIdentityProviderConfig) GoString() string { - return s.String() -} - -// SetClientId sets the ClientId field's value. -func (s *OidcIdentityProviderConfig) SetClientId(v string) *OidcIdentityProviderConfig { - s.ClientId = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *OidcIdentityProviderConfig) SetClusterName(v string) *OidcIdentityProviderConfig { - s.ClusterName = &v - return s -} - -// SetGroupsClaim sets the GroupsClaim field's value. -func (s *OidcIdentityProviderConfig) SetGroupsClaim(v string) *OidcIdentityProviderConfig { - s.GroupsClaim = &v - return s -} - -// SetGroupsPrefix sets the GroupsPrefix field's value. -func (s *OidcIdentityProviderConfig) SetGroupsPrefix(v string) *OidcIdentityProviderConfig { - s.GroupsPrefix = &v - return s -} - -// SetIdentityProviderConfigArn sets the IdentityProviderConfigArn field's value. -func (s *OidcIdentityProviderConfig) SetIdentityProviderConfigArn(v string) *OidcIdentityProviderConfig { - s.IdentityProviderConfigArn = &v - return s -} - -// SetIdentityProviderConfigName sets the IdentityProviderConfigName field's value. -func (s *OidcIdentityProviderConfig) SetIdentityProviderConfigName(v string) *OidcIdentityProviderConfig { - s.IdentityProviderConfigName = &v - return s -} - -// SetIssuerUrl sets the IssuerUrl field's value. -func (s *OidcIdentityProviderConfig) SetIssuerUrl(v string) *OidcIdentityProviderConfig { - s.IssuerUrl = &v - return s -} - -// SetRequiredClaims sets the RequiredClaims field's value. -func (s *OidcIdentityProviderConfig) SetRequiredClaims(v map[string]*string) *OidcIdentityProviderConfig { - s.RequiredClaims = v - return s -} - -// SetStatus sets the Status field's value. -func (s *OidcIdentityProviderConfig) SetStatus(v string) *OidcIdentityProviderConfig { - s.Status = &v - return s -} - -// SetTags sets the Tags field's value. -func (s *OidcIdentityProviderConfig) SetTags(v map[string]*string) *OidcIdentityProviderConfig { - s.Tags = v - return s -} - -// SetUsernameClaim sets the UsernameClaim field's value. -func (s *OidcIdentityProviderConfig) SetUsernameClaim(v string) *OidcIdentityProviderConfig { - s.UsernameClaim = &v - return s -} - -// SetUsernamePrefix sets the UsernamePrefix field's value. -func (s *OidcIdentityProviderConfig) SetUsernamePrefix(v string) *OidcIdentityProviderConfig { - s.UsernamePrefix = &v - return s -} - -// An object representing an OpenID Connect (OIDC) configuration. Before associating -// an OIDC identity provider to your cluster, review the considerations in Authenticating -// users for your cluster from an OpenID Connect identity provider (https://docs.aws.amazon.com/eks/latest/userguide/authenticate-oidc-identity-provider.html) -// in the Amazon EKS User Guide. -type OidcIdentityProviderConfigRequest struct { - _ struct{} `type:"structure"` - - // This is also known as audience. The ID for the client application that makes - // authentication requests to the OpenID identity provider. - // - // ClientId is a required field - ClientId *string `locationName:"clientId" type:"string" required:"true"` - - // The JWT claim that the provider uses to return your groups. - GroupsClaim *string `locationName:"groupsClaim" type:"string"` - - // The prefix that is prepended to group claims to prevent clashes with existing - // names (such as system: groups). For example, the valueoidc: will create group - // names like oidc:engineering and oidc:infra. - GroupsPrefix *string `locationName:"groupsPrefix" type:"string"` - - // The name of the OIDC provider configuration. - // - // IdentityProviderConfigName is a required field - IdentityProviderConfigName *string `locationName:"identityProviderConfigName" type:"string" required:"true"` - - // The URL of the OpenID identity provider that allows the API server to discover - // public signing keys for verifying tokens. The URL must begin with https:// - // and should correspond to the iss claim in the provider's OIDC ID tokens. - // Per the OIDC standard, path components are allowed but query parameters are - // not. Typically the URL consists of only a hostname, like https://server.example.org - // or https://example.com. This URL should point to the level below .well-known/openid-configuration - // and must be publicly accessible over the internet. - // - // IssuerUrl is a required field - IssuerUrl *string `locationName:"issuerUrl" type:"string" required:"true"` - - // The key value pairs that describe required claims in the identity token. - // If set, each claim is verified to be present in the token with a matching - // value. For the maximum number of claims that you can require, see Amazon - // EKS service quotas (https://docs.aws.amazon.com/eks/latest/userguide/service-quotas.html) - // in the Amazon EKS User Guide. - RequiredClaims map[string]*string `locationName:"requiredClaims" type:"map"` - - // The JSON Web Token (JWT) claim to use as the username. The default is sub, - // which is expected to be a unique identifier of the end user. You can choose - // other claims, such as email or name, depending on the OpenID identity provider. - // Claims other than email are prefixed with the issuer URL to prevent naming - // clashes with other plug-ins. - UsernameClaim *string `locationName:"usernameClaim" type:"string"` - - // The prefix that is prepended to username claims to prevent clashes with existing - // names. If you do not provide this field, and username is a value other than - // email, the prefix defaults to issuerurl#. You can use the value - to disable - // all prefixing. - UsernamePrefix *string `locationName:"usernamePrefix" type:"string"` -} - -// String returns the string representation -func (s OidcIdentityProviderConfigRequest) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s OidcIdentityProviderConfigRequest) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *OidcIdentityProviderConfigRequest) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "OidcIdentityProviderConfigRequest"} - if s.ClientId == nil { - invalidParams.Add(request.NewErrParamRequired("ClientId")) - } - if s.IdentityProviderConfigName == nil { - invalidParams.Add(request.NewErrParamRequired("IdentityProviderConfigName")) - } - if s.IssuerUrl == nil { - invalidParams.Add(request.NewErrParamRequired("IssuerUrl")) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientId sets the ClientId field's value. -func (s *OidcIdentityProviderConfigRequest) SetClientId(v string) *OidcIdentityProviderConfigRequest { - s.ClientId = &v - return s -} - -// SetGroupsClaim sets the GroupsClaim field's value. -func (s *OidcIdentityProviderConfigRequest) SetGroupsClaim(v string) *OidcIdentityProviderConfigRequest { - s.GroupsClaim = &v - return s -} - -// SetGroupsPrefix sets the GroupsPrefix field's value. -func (s *OidcIdentityProviderConfigRequest) SetGroupsPrefix(v string) *OidcIdentityProviderConfigRequest { - s.GroupsPrefix = &v - return s -} - -// SetIdentityProviderConfigName sets the IdentityProviderConfigName field's value. -func (s *OidcIdentityProviderConfigRequest) SetIdentityProviderConfigName(v string) *OidcIdentityProviderConfigRequest { - s.IdentityProviderConfigName = &v - return s -} - -// SetIssuerUrl sets the IssuerUrl field's value. -func (s *OidcIdentityProviderConfigRequest) SetIssuerUrl(v string) *OidcIdentityProviderConfigRequest { - s.IssuerUrl = &v - return s -} - -// SetRequiredClaims sets the RequiredClaims field's value. -func (s *OidcIdentityProviderConfigRequest) SetRequiredClaims(v map[string]*string) *OidcIdentityProviderConfigRequest { - s.RequiredClaims = v - return s -} - -// SetUsernameClaim sets the UsernameClaim field's value. -func (s *OidcIdentityProviderConfigRequest) SetUsernameClaim(v string) *OidcIdentityProviderConfigRequest { - s.UsernameClaim = &v - return s -} - -// SetUsernamePrefix sets the UsernamePrefix field's value. -func (s *OidcIdentityProviderConfigRequest) SetUsernamePrefix(v string) *OidcIdentityProviderConfigRequest { - s.UsernamePrefix = &v - return s -} - -// Identifies the AWS Key Management Service (AWS KMS) key used to encrypt the -// secrets. -type Provider struct { - _ struct{} `type:"structure"` - - // Amazon Resource Name (ARN) or alias of the KMS key. The KMS key must be symmetric, - // created in the same region as the cluster, and if the KMS key was created - // in a different account, the user must have access to the KMS key. For more - // information, see Allowing Users in Other Accounts to Use a KMS key (https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html) - // in the AWS Key Management Service Developer Guide. - KeyArn *string `locationName:"keyArn" type:"string"` -} - -// String returns the string representation -func (s Provider) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Provider) GoString() string { - return s.String() -} - -// SetKeyArn sets the KeyArn field's value. -func (s *Provider) SetKeyArn(v string) *Provider { - s.KeyArn = &v - return s -} - -// An object representing the remote access configuration for the managed node -// group. -type RemoteAccessConfig struct { - _ struct{} `type:"structure"` - - // The Amazon EC2 SSH key that provides access for SSH communication with the - // nodes in the managed node group. For more information, see Amazon EC2 Key - // Pairs (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) - // in the Amazon Elastic Compute Cloud User Guide for Linux Instances. - Ec2SshKey *string `locationName:"ec2SshKey" type:"string"` - - // The security groups that are allowed SSH access (port 22) to the nodes. If - // you specify an Amazon EC2 SSH key but do not specify a source security group - // when you create a managed node group, then port 22 on the nodes is opened - // to the internet (0.0.0.0/0). For more information, see Security Groups for - // Your VPC (https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) - // in the Amazon Virtual Private Cloud User Guide. - SourceSecurityGroups []*string `locationName:"sourceSecurityGroups" type:"list"` -} - -// String returns the string representation -func (s RemoteAccessConfig) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s RemoteAccessConfig) GoString() string { - return s.String() -} - -// SetEc2SshKey sets the Ec2SshKey field's value. -func (s *RemoteAccessConfig) SetEc2SshKey(v string) *RemoteAccessConfig { - s.Ec2SshKey = &v - return s -} - -// SetSourceSecurityGroups sets the SourceSecurityGroups field's value. -func (s *RemoteAccessConfig) SetSourceSecurityGroups(v []*string) *RemoteAccessConfig { - s.SourceSecurityGroups = v - return s -} - -// The specified resource is in use. -type ResourceInUseException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - AddonName *string `locationName:"addonName" type:"string"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s ResourceInUseException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResourceInUseException) GoString() string { - return s.String() -} - -func newErrorResourceInUseException(v protocol.ResponseMetadata) error { - return &ResourceInUseException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *ResourceInUseException) Code() string { - return "ResourceInUseException" -} - -// Message returns the exception's message. -func (s *ResourceInUseException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *ResourceInUseException) OrigErr() error { - return nil -} - -func (s *ResourceInUseException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *ResourceInUseException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *ResourceInUseException) RequestID() string { - return s.RespMetadata.RequestID -} - -// You have encountered a service limit on the specified resource. -type ResourceLimitExceededException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s ResourceLimitExceededException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResourceLimitExceededException) GoString() string { - return s.String() -} - -func newErrorResourceLimitExceededException(v protocol.ResponseMetadata) error { - return &ResourceLimitExceededException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *ResourceLimitExceededException) Code() string { - return "ResourceLimitExceededException" -} - -// Message returns the exception's message. -func (s *ResourceLimitExceededException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *ResourceLimitExceededException) OrigErr() error { - return nil -} - -func (s *ResourceLimitExceededException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *ResourceLimitExceededException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *ResourceLimitExceededException) RequestID() string { - return s.RespMetadata.RequestID -} - -// The specified resource could not be found. You can view your available clusters -// with ListClusters. You can view your available managed node groups with ListNodegroups. -// Amazon EKS clusters and node groups are Region-specific. -type ResourceNotFoundException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - AddonName *string `locationName:"addonName" type:"string"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - // The Fargate profile associated with the exception. - FargateProfileName *string `locationName:"fargateProfileName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s ResourceNotFoundException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ResourceNotFoundException) GoString() string { - return s.String() -} - -func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error { - return &ResourceNotFoundException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *ResourceNotFoundException) Code() string { - return "ResourceNotFoundException" -} - -// Message returns the exception's message. -func (s *ResourceNotFoundException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *ResourceNotFoundException) OrigErr() error { - return nil -} - -func (s *ResourceNotFoundException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *ResourceNotFoundException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *ResourceNotFoundException) RequestID() string { - return s.RespMetadata.RequestID -} - -// These errors are usually caused by a server-side issue. -type ServerException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - AddonName *string `locationName:"addonName" type:"string"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` -} - -// String returns the string representation -func (s ServerException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ServerException) GoString() string { - return s.String() -} - -func newErrorServerException(v protocol.ResponseMetadata) error { - return &ServerException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *ServerException) Code() string { - return "ServerException" -} - -// Message returns the exception's message. -func (s *ServerException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *ServerException) OrigErr() error { - return nil -} - -func (s *ServerException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *ServerException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *ServerException) RequestID() string { - return s.RespMetadata.RequestID -} - -// The service is unavailable. Back off and retry the operation. -type ServiceUnavailableException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - Message_ *string `locationName:"message" type:"string"` -} - -// String returns the string representation -func (s ServiceUnavailableException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s ServiceUnavailableException) GoString() string { - return s.String() -} - -func newErrorServiceUnavailableException(v protocol.ResponseMetadata) error { - return &ServiceUnavailableException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *ServiceUnavailableException) Code() string { - return "ServiceUnavailableException" -} - -// Message returns the exception's message. -func (s *ServiceUnavailableException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *ServiceUnavailableException) OrigErr() error { - return nil -} - -func (s *ServiceUnavailableException) Error() string { - return fmt.Sprintf("%s: %s", s.Code(), s.Message()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *ServiceUnavailableException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *ServiceUnavailableException) RequestID() string { - return s.RespMetadata.RequestID -} - -type TagResourceInput struct { - _ struct{} `type:"structure"` - - // The Amazon Resource Name (ARN) of the resource to which to add tags. Currently, - // the supported resources are Amazon EKS clusters and managed node groups. - // - // ResourceArn is a required field - ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` - - // The tags to add to the resource. A tag is an array of key-value pairs. - // - // Tags is a required field - Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"` -} - -// String returns the string representation -func (s TagResourceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s TagResourceInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *TagResourceInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"} - if s.ResourceArn == nil { - invalidParams.Add(request.NewErrParamRequired("ResourceArn")) - } - if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) - } - if s.Tags == nil { - invalidParams.Add(request.NewErrParamRequired("Tags")) - } - if s.Tags != nil && len(s.Tags) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Tags", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetResourceArn sets the ResourceArn field's value. -func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput { - s.ResourceArn = &v - return s -} - -// SetTags sets the Tags field's value. -func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput { - s.Tags = v - return s -} - -type TagResourceOutput struct { - _ struct{} `type:"structure"` -} - -// String returns the string representation -func (s TagResourceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s TagResourceOutput) GoString() string { - return s.String() -} - -// A property that allows a node to repel a set of pods. -type Taint struct { - _ struct{} `type:"structure"` - - // The effect of the taint. - Effect *string `locationName:"effect" type:"string" enum:"TaintEffect"` - - // The key of the taint. - Key *string `locationName:"key" min:"1" type:"string"` - - // The value of the taint. - Value *string `locationName:"value" type:"string"` -} - -// String returns the string representation -func (s Taint) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Taint) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *Taint) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "Taint"} - if s.Key != nil && len(*s.Key) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Key", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetEffect sets the Effect field's value. -func (s *Taint) SetEffect(v string) *Taint { - s.Effect = &v - return s -} - -// SetKey sets the Key field's value. -func (s *Taint) SetKey(v string) *Taint { - s.Key = &v - return s -} - -// SetValue sets the Value field's value. -func (s *Taint) SetValue(v string) *Taint { - s.Value = &v - return s -} - -// At least one of your specified cluster subnets is in an Availability Zone -// that does not support Amazon EKS. The exception output specifies the supported -// Availability Zones for your account, from which you can choose subnets for -// your cluster. -type UnsupportedAvailabilityZoneException struct { - _ struct{} `type:"structure"` - RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"` - - // The Amazon EKS cluster associated with the exception. - ClusterName *string `locationName:"clusterName" type:"string"` - - Message_ *string `locationName:"message" type:"string"` - - // The Amazon EKS managed node group associated with the exception. - NodegroupName *string `locationName:"nodegroupName" type:"string"` - - // The supported Availability Zones for your account. Choose subnets in these - // Availability Zones for your cluster. - ValidZones []*string `locationName:"validZones" type:"list"` -} - -// String returns the string representation -func (s UnsupportedAvailabilityZoneException) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UnsupportedAvailabilityZoneException) GoString() string { - return s.String() -} - -func newErrorUnsupportedAvailabilityZoneException(v protocol.ResponseMetadata) error { - return &UnsupportedAvailabilityZoneException{ - RespMetadata: v, - } -} - -// Code returns the exception type name. -func (s *UnsupportedAvailabilityZoneException) Code() string { - return "UnsupportedAvailabilityZoneException" -} - -// Message returns the exception's message. -func (s *UnsupportedAvailabilityZoneException) Message() string { - if s.Message_ != nil { - return *s.Message_ - } - return "" -} - -// OrigErr always returns nil, satisfies awserr.Error interface. -func (s *UnsupportedAvailabilityZoneException) OrigErr() error { - return nil -} - -func (s *UnsupportedAvailabilityZoneException) Error() string { - return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String()) -} - -// Status code returns the HTTP status code for the request's response error. -func (s *UnsupportedAvailabilityZoneException) StatusCode() int { - return s.RespMetadata.StatusCode -} - -// RequestID returns the service's response RequestID for request. -func (s *UnsupportedAvailabilityZoneException) RequestID() string { - return s.RespMetadata.RequestID -} - -type UntagResourceInput struct { - _ struct{} `type:"structure"` - - // The Amazon Resource Name (ARN) of the resource from which to delete tags. - // Currently, the supported resources are Amazon EKS clusters and managed node - // groups. - // - // ResourceArn is a required field - ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"` - - // The keys of the tags to be removed. - // - // TagKeys is a required field - TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"` -} - -// String returns the string representation -func (s UntagResourceInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UntagResourceInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UntagResourceInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"} - if s.ResourceArn == nil { - invalidParams.Add(request.NewErrParamRequired("ResourceArn")) - } - if s.ResourceArn != nil && len(*s.ResourceArn) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1)) - } - if s.TagKeys == nil { - invalidParams.Add(request.NewErrParamRequired("TagKeys")) - } - if s.TagKeys != nil && len(s.TagKeys) < 1 { - invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetResourceArn sets the ResourceArn field's value. -func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput { - s.ResourceArn = &v - return s -} - -// SetTagKeys sets the TagKeys field's value. -func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput { - s.TagKeys = v - return s -} - -type UntagResourceOutput struct { - _ struct{} `type:"structure"` -} - -// String returns the string representation -func (s UntagResourceOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UntagResourceOutput) GoString() string { - return s.String() -} - -// An object representing an asynchronous update. -type Update struct { - _ struct{} `type:"structure"` - - // The Unix epoch timestamp in seconds for when the update was created. - CreatedAt *time.Time `locationName:"createdAt" type:"timestamp"` - - // Any errors associated with a Failed update. - Errors []*ErrorDetail `locationName:"errors" type:"list"` - - // A UUID that is used to track the update. - Id *string `locationName:"id" type:"string"` - - // A key-value map that contains the parameters associated with the update. - Params []*UpdateParam `locationName:"params" type:"list"` - - // The current status of the update. - Status *string `locationName:"status" type:"string" enum:"UpdateStatus"` - - // The type of the update. - Type *string `locationName:"type" type:"string" enum:"UpdateType"` -} - -// String returns the string representation -func (s Update) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s Update) GoString() string { - return s.String() -} - -// SetCreatedAt sets the CreatedAt field's value. -func (s *Update) SetCreatedAt(v time.Time) *Update { - s.CreatedAt = &v - return s -} - -// SetErrors sets the Errors field's value. -func (s *Update) SetErrors(v []*ErrorDetail) *Update { - s.Errors = v - return s -} - -// SetId sets the Id field's value. -func (s *Update) SetId(v string) *Update { - s.Id = &v - return s -} - -// SetParams sets the Params field's value. -func (s *Update) SetParams(v []*UpdateParam) *Update { - s.Params = v - return s -} - -// SetStatus sets the Status field's value. -func (s *Update) SetStatus(v string) *Update { - s.Status = &v - return s -} - -// SetType sets the Type field's value. -func (s *Update) SetType(v string) *Update { - s.Type = &v - return s -} - -type UpdateAddonInput struct { - _ struct{} `type:"structure"` - - // The name of the add-on. The name must match one of the names returned by - // ListAddons (https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html). - // - // AddonName is a required field - AddonName *string `location:"uri" locationName:"addonName" type:"string" required:"true"` - - // The version of the add-on. The version must match one of the versions returned - // by DescribeAddonVersions (https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeAddonVersions.html). - AddonVersion *string `locationName:"addonVersion" type:"string"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the cluster. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" min:"1" type:"string" required:"true"` - - // How to resolve parameter value conflicts when applying the new version of - // the add-on to the cluster. - ResolveConflicts *string `locationName:"resolveConflicts" type:"string" enum:"ResolveConflicts"` - - // The Amazon Resource Name (ARN) of an existing IAM role to bind to the add-on's - // service account. The role must be assigned the IAM permissions required by - // the add-on. If you don't specify an existing IAM role, then the add-on uses - // the permissions assigned to the node IAM role. For more information, see - // Amazon EKS node IAM role (https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) - // in the Amazon EKS User Guide. - // - // To specify an existing IAM role, you must have an IAM OpenID Connect (OIDC) - // provider created for your cluster. For more information, see Enabling IAM - // roles for service accounts on your cluster (https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html) - // in the Amazon EKS User Guide. - ServiceAccountRoleArn *string `locationName:"serviceAccountRoleArn" min:"1" type:"string"` -} - -// String returns the string representation -func (s UpdateAddonInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateAddonInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UpdateAddonInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UpdateAddonInput"} - if s.AddonName == nil { - invalidParams.Add(request.NewErrParamRequired("AddonName")) - } - if s.AddonName != nil && len(*s.AddonName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("AddonName", 1)) - } - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.ServiceAccountRoleArn != nil && len(*s.ServiceAccountRoleArn) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ServiceAccountRoleArn", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddonName sets the AddonName field's value. -func (s *UpdateAddonInput) SetAddonName(v string) *UpdateAddonInput { - s.AddonName = &v - return s -} - -// SetAddonVersion sets the AddonVersion field's value. -func (s *UpdateAddonInput) SetAddonVersion(v string) *UpdateAddonInput { - s.AddonVersion = &v - return s -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *UpdateAddonInput) SetClientRequestToken(v string) *UpdateAddonInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *UpdateAddonInput) SetClusterName(v string) *UpdateAddonInput { - s.ClusterName = &v - return s -} - -// SetResolveConflicts sets the ResolveConflicts field's value. -func (s *UpdateAddonInput) SetResolveConflicts(v string) *UpdateAddonInput { - s.ResolveConflicts = &v - return s -} - -// SetServiceAccountRoleArn sets the ServiceAccountRoleArn field's value. -func (s *UpdateAddonInput) SetServiceAccountRoleArn(v string) *UpdateAddonInput { - s.ServiceAccountRoleArn = &v - return s -} - -type UpdateAddonOutput struct { - _ struct{} `type:"structure"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s UpdateAddonOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateAddonOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *UpdateAddonOutput) SetUpdate(v *Update) *UpdateAddonOutput { - s.Update = v - return s -} - -type UpdateClusterConfigInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // Enable or disable exporting the Kubernetes control plane logs for your cluster - // to CloudWatch Logs. By default, cluster control plane logs aren't exported - // to CloudWatch Logs. For more information, see Amazon EKS Cluster Control - // Plane Logs (https://docs.aws.amazon.com/eks/latest/userguide/control-plane-logs.html) - // in the Amazon EKS User Guide . - // - // CloudWatch Logs ingestion, archive storage, and data scanning rates apply - // to exported control plane logs. For more information, see Amazon CloudWatch - // Pricing (http://aws.amazon.com/cloudwatch/pricing/). - Logging *Logging `locationName:"logging" type:"structure"` - - // The name of the Amazon EKS cluster to update. - // - // Name is a required field - Name *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // An object representing the VPC configuration to use for an Amazon EKS cluster. - ResourcesVpcConfig *VpcConfigRequest `locationName:"resourcesVpcConfig" type:"structure"` -} - -// String returns the string representation -func (s UpdateClusterConfigInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateClusterConfigInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UpdateClusterConfigInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UpdateClusterConfigInput"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *UpdateClusterConfigInput) SetClientRequestToken(v string) *UpdateClusterConfigInput { - s.ClientRequestToken = &v - return s -} - -// SetLogging sets the Logging field's value. -func (s *UpdateClusterConfigInput) SetLogging(v *Logging) *UpdateClusterConfigInput { - s.Logging = v - return s -} - -// SetName sets the Name field's value. -func (s *UpdateClusterConfigInput) SetName(v string) *UpdateClusterConfigInput { - s.Name = &v - return s -} - -// SetResourcesVpcConfig sets the ResourcesVpcConfig field's value. -func (s *UpdateClusterConfigInput) SetResourcesVpcConfig(v *VpcConfigRequest) *UpdateClusterConfigInput { - s.ResourcesVpcConfig = v - return s -} - -type UpdateClusterConfigOutput struct { - _ struct{} `type:"structure"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s UpdateClusterConfigOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateClusterConfigOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *UpdateClusterConfigOutput) SetUpdate(v *Update) *UpdateClusterConfigOutput { - s.Update = v - return s -} - -type UpdateClusterVersionInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the Amazon EKS cluster to update. - // - // Name is a required field - Name *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The desired Kubernetes version following a successful update. - // - // Version is a required field - Version *string `locationName:"version" type:"string" required:"true"` -} - -// String returns the string representation -func (s UpdateClusterVersionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateClusterVersionInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UpdateClusterVersionInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UpdateClusterVersionInput"} - if s.Name == nil { - invalidParams.Add(request.NewErrParamRequired("Name")) - } - if s.Name != nil && len(*s.Name) < 1 { - invalidParams.Add(request.NewErrParamMinLen("Name", 1)) - } - if s.Version == nil { - invalidParams.Add(request.NewErrParamRequired("Version")) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *UpdateClusterVersionInput) SetClientRequestToken(v string) *UpdateClusterVersionInput { - s.ClientRequestToken = &v - return s -} - -// SetName sets the Name field's value. -func (s *UpdateClusterVersionInput) SetName(v string) *UpdateClusterVersionInput { - s.Name = &v - return s -} - -// SetVersion sets the Version field's value. -func (s *UpdateClusterVersionInput) SetVersion(v string) *UpdateClusterVersionInput { - s.Version = &v - return s -} - -type UpdateClusterVersionOutput struct { - _ struct{} `type:"structure"` - - // The full description of the specified update - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s UpdateClusterVersionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateClusterVersionOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *UpdateClusterVersionOutput) SetUpdate(v *Update) *UpdateClusterVersionOutput { - s.Update = v - return s -} - -// An object representing a Kubernetes label change for a managed node group. -type UpdateLabelsPayload struct { - _ struct{} `type:"structure"` - - // Kubernetes labels to be added or updated. - AddOrUpdateLabels map[string]*string `locationName:"addOrUpdateLabels" type:"map"` - - // Kubernetes labels to be removed. - RemoveLabels []*string `locationName:"removeLabels" type:"list"` -} - -// String returns the string representation -func (s UpdateLabelsPayload) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateLabelsPayload) GoString() string { - return s.String() -} - -// SetAddOrUpdateLabels sets the AddOrUpdateLabels field's value. -func (s *UpdateLabelsPayload) SetAddOrUpdateLabels(v map[string]*string) *UpdateLabelsPayload { - s.AddOrUpdateLabels = v - return s -} - -// SetRemoveLabels sets the RemoveLabels field's value. -func (s *UpdateLabelsPayload) SetRemoveLabels(v []*string) *UpdateLabelsPayload { - s.RemoveLabels = v - return s -} - -type UpdateNodegroupConfigInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the Amazon EKS cluster that the managed node group resides in. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // The Kubernetes labels to be applied to the nodes in the node group after - // the update. - Labels *UpdateLabelsPayload `locationName:"labels" type:"structure"` - - // The name of the managed node group to update. - // - // NodegroupName is a required field - NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` - - // The scaling configuration details for the Auto Scaling group after the update. - ScalingConfig *NodegroupScalingConfig `locationName:"scalingConfig" type:"structure"` - - // The Kubernetes taints to be applied to the nodes in the node group after - // the update. - Taints *UpdateTaintsPayload `locationName:"taints" type:"structure"` -} - -// String returns the string representation -func (s UpdateNodegroupConfigInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateNodegroupConfigInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UpdateNodegroupConfigInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UpdateNodegroupConfigInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.NodegroupName == nil { - invalidParams.Add(request.NewErrParamRequired("NodegroupName")) - } - if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) - } - if s.ScalingConfig != nil { - if err := s.ScalingConfig.Validate(); err != nil { - invalidParams.AddNested("ScalingConfig", err.(request.ErrInvalidParams)) - } - } - if s.Taints != nil { - if err := s.Taints.Validate(); err != nil { - invalidParams.AddNested("Taints", err.(request.ErrInvalidParams)) - } - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *UpdateNodegroupConfigInput) SetClientRequestToken(v string) *UpdateNodegroupConfigInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *UpdateNodegroupConfigInput) SetClusterName(v string) *UpdateNodegroupConfigInput { - s.ClusterName = &v - return s -} - -// SetLabels sets the Labels field's value. -func (s *UpdateNodegroupConfigInput) SetLabels(v *UpdateLabelsPayload) *UpdateNodegroupConfigInput { - s.Labels = v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *UpdateNodegroupConfigInput) SetNodegroupName(v string) *UpdateNodegroupConfigInput { - s.NodegroupName = &v - return s -} - -// SetScalingConfig sets the ScalingConfig field's value. -func (s *UpdateNodegroupConfigInput) SetScalingConfig(v *NodegroupScalingConfig) *UpdateNodegroupConfigInput { - s.ScalingConfig = v - return s -} - -// SetTaints sets the Taints field's value. -func (s *UpdateNodegroupConfigInput) SetTaints(v *UpdateTaintsPayload) *UpdateNodegroupConfigInput { - s.Taints = v - return s -} - -type UpdateNodegroupConfigOutput struct { - _ struct{} `type:"structure"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s UpdateNodegroupConfigOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateNodegroupConfigOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *UpdateNodegroupConfigOutput) SetUpdate(v *Update) *UpdateNodegroupConfigOutput { - s.Update = v - return s -} - -type UpdateNodegroupVersionInput struct { - _ struct{} `type:"structure"` - - // Unique, case-sensitive identifier that you provide to ensure the idempotency - // of the request. - ClientRequestToken *string `locationName:"clientRequestToken" type:"string" idempotencyToken:"true"` - - // The name of the Amazon EKS cluster that is associated with the managed node - // group to update. - // - // ClusterName is a required field - ClusterName *string `location:"uri" locationName:"name" type:"string" required:"true"` - - // Force the update if the existing node group's pods are unable to be drained - // due to a pod disruption budget issue. If an update fails because pods could - // not be drained, you can force the update after it fails to terminate the - // old node whether or not any pods are running on the node. - Force *bool `locationName:"force" type:"boolean"` - - // An object representing a node group's launch template specification. You - // can only update a node group using a launch template if the node group was - // originally deployed with a launch template. - LaunchTemplate *LaunchTemplateSpecification `locationName:"launchTemplate" type:"structure"` - - // The name of the managed node group to update. - // - // NodegroupName is a required field - NodegroupName *string `location:"uri" locationName:"nodegroupName" type:"string" required:"true"` - - // The AMI version of the Amazon EKS optimized AMI to use for the update. By - // default, the latest available AMI version for the node group's Kubernetes - // version is used. For more information, see Amazon EKS optimized Amazon Linux - // 2 AMI versions (https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html) - // in the Amazon EKS User Guide. If you specify launchTemplate, and your launch - // template uses a custom AMI, then don't specify releaseVersion, or the node - // group update will fail. For more information about using launch templates - // with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - ReleaseVersion *string `locationName:"releaseVersion" type:"string"` - - // The Kubernetes version to update to. If no version is specified, then the - // Kubernetes version of the node group does not change. You can specify the - // Kubernetes version of the cluster to update the node group to the latest - // AMI version of the cluster's Kubernetes version. If you specify launchTemplate, - // and your launch template uses a custom AMI, then don't specify version, or - // the node group update will fail. For more information about using launch - // templates with Amazon EKS, see Launch template support (https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html) - // in the Amazon EKS User Guide. - Version *string `locationName:"version" type:"string"` -} - -// String returns the string representation -func (s UpdateNodegroupVersionInput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateNodegroupVersionInput) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UpdateNodegroupVersionInput) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UpdateNodegroupVersionInput"} - if s.ClusterName == nil { - invalidParams.Add(request.NewErrParamRequired("ClusterName")) - } - if s.ClusterName != nil && len(*s.ClusterName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("ClusterName", 1)) - } - if s.NodegroupName == nil { - invalidParams.Add(request.NewErrParamRequired("NodegroupName")) - } - if s.NodegroupName != nil && len(*s.NodegroupName) < 1 { - invalidParams.Add(request.NewErrParamMinLen("NodegroupName", 1)) - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetClientRequestToken sets the ClientRequestToken field's value. -func (s *UpdateNodegroupVersionInput) SetClientRequestToken(v string) *UpdateNodegroupVersionInput { - s.ClientRequestToken = &v - return s -} - -// SetClusterName sets the ClusterName field's value. -func (s *UpdateNodegroupVersionInput) SetClusterName(v string) *UpdateNodegroupVersionInput { - s.ClusterName = &v - return s -} - -// SetForce sets the Force field's value. -func (s *UpdateNodegroupVersionInput) SetForce(v bool) *UpdateNodegroupVersionInput { - s.Force = &v - return s -} - -// SetLaunchTemplate sets the LaunchTemplate field's value. -func (s *UpdateNodegroupVersionInput) SetLaunchTemplate(v *LaunchTemplateSpecification) *UpdateNodegroupVersionInput { - s.LaunchTemplate = v - return s -} - -// SetNodegroupName sets the NodegroupName field's value. -func (s *UpdateNodegroupVersionInput) SetNodegroupName(v string) *UpdateNodegroupVersionInput { - s.NodegroupName = &v - return s -} - -// SetReleaseVersion sets the ReleaseVersion field's value. -func (s *UpdateNodegroupVersionInput) SetReleaseVersion(v string) *UpdateNodegroupVersionInput { - s.ReleaseVersion = &v - return s -} - -// SetVersion sets the Version field's value. -func (s *UpdateNodegroupVersionInput) SetVersion(v string) *UpdateNodegroupVersionInput { - s.Version = &v - return s -} - -type UpdateNodegroupVersionOutput struct { - _ struct{} `type:"structure"` - - // An object representing an asynchronous update. - Update *Update `locationName:"update" type:"structure"` -} - -// String returns the string representation -func (s UpdateNodegroupVersionOutput) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateNodegroupVersionOutput) GoString() string { - return s.String() -} - -// SetUpdate sets the Update field's value. -func (s *UpdateNodegroupVersionOutput) SetUpdate(v *Update) *UpdateNodegroupVersionOutput { - s.Update = v - return s -} - -// An object representing the details of an update request. -type UpdateParam struct { - _ struct{} `type:"structure"` - - // The keys associated with an update request. - Type *string `locationName:"type" type:"string" enum:"UpdateParamType"` - - // The value of the keys submitted as part of an update request. - Value *string `locationName:"value" type:"string"` -} - -// String returns the string representation -func (s UpdateParam) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateParam) GoString() string { - return s.String() -} - -// SetType sets the Type field's value. -func (s *UpdateParam) SetType(v string) *UpdateParam { - s.Type = &v - return s -} - -// SetValue sets the Value field's value. -func (s *UpdateParam) SetValue(v string) *UpdateParam { - s.Value = &v - return s -} - -// An object representing the details of an update to a taints payload. -type UpdateTaintsPayload struct { - _ struct{} `type:"structure"` - - // Kubernetes taints to be added or updated. - AddOrUpdateTaints []*Taint `locationName:"addOrUpdateTaints" type:"list"` - - // Kubernetes taints to be removed. - RemoveTaints []*Taint `locationName:"removeTaints" type:"list"` -} - -// String returns the string representation -func (s UpdateTaintsPayload) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s UpdateTaintsPayload) GoString() string { - return s.String() -} - -// Validate inspects the fields of the type to determine if they are valid. -func (s *UpdateTaintsPayload) Validate() error { - invalidParams := request.ErrInvalidParams{Context: "UpdateTaintsPayload"} - if s.AddOrUpdateTaints != nil { - for i, v := range s.AddOrUpdateTaints { - if v == nil { - continue - } - if err := v.Validate(); err != nil { - invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AddOrUpdateTaints", i), err.(request.ErrInvalidParams)) - } - } - } - if s.RemoveTaints != nil { - for i, v := range s.RemoveTaints { - if v == nil { - continue - } - if err := v.Validate(); err != nil { - invalidParams.AddNested(fmt.Sprintf("%s[%v]", "RemoveTaints", i), err.(request.ErrInvalidParams)) - } - } - } - - if invalidParams.Len() > 0 { - return invalidParams - } - return nil -} - -// SetAddOrUpdateTaints sets the AddOrUpdateTaints field's value. -func (s *UpdateTaintsPayload) SetAddOrUpdateTaints(v []*Taint) *UpdateTaintsPayload { - s.AddOrUpdateTaints = v - return s -} - -// SetRemoveTaints sets the RemoveTaints field's value. -func (s *UpdateTaintsPayload) SetRemoveTaints(v []*Taint) *UpdateTaintsPayload { - s.RemoveTaints = v - return s -} - -// An object representing the VPC configuration to use for an Amazon EKS cluster. -type VpcConfigRequest struct { - _ struct{} `type:"structure"` - - // Set this value to true to enable private access for your cluster's Kubernetes - // API server endpoint. If you enable private access, Kubernetes API requests - // from within your cluster's VPC use the private VPC endpoint. The default - // value for this parameter is false, which disables private access for your - // Kubernetes API server. If you disable private access and you have nodes or - // AWS Fargate pods in the cluster, then ensure that publicAccessCidrs includes - // the necessary CIDR blocks for communication with the nodes or Fargate pods. - // For more information, see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) - // in the Amazon EKS User Guide . - EndpointPrivateAccess *bool `locationName:"endpointPrivateAccess" type:"boolean"` - - // Set this value to false to disable public access to your cluster's Kubernetes - // API server endpoint. If you disable public access, your cluster's Kubernetes - // API server can only receive requests from within the cluster VPC. The default - // value for this parameter is true, which enables public access for your Kubernetes - // API server. For more information, see Amazon EKS Cluster Endpoint Access - // Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) - // in the Amazon EKS User Guide . - EndpointPublicAccess *bool `locationName:"endpointPublicAccess" type:"boolean"` - - // The CIDR blocks that are allowed access to your cluster's public Kubernetes - // API server endpoint. Communication to the endpoint from addresses outside - // of the CIDR blocks that you specify is denied. The default value is 0.0.0.0/0. - // If you've disabled private endpoint access and you have nodes or AWS Fargate - // pods in the cluster, then ensure that you specify the necessary CIDR blocks. - // For more information, see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) - // in the Amazon EKS User Guide . - PublicAccessCidrs []*string `locationName:"publicAccessCidrs" type:"list"` - - // Specify one or more security groups for the cross-account elastic network - // interfaces that Amazon EKS creates to use to allow communication between - // your nodes and the Kubernetes control plane. If you don't specify any security - // groups, then familiarize yourself with the difference between Amazon EKS - // defaults for clusters deployed with Kubernetes: - // - // * 1.14 Amazon EKS platform version eks.2 and earlier - // - // * 1.14 Amazon EKS platform version eks.3 and later - // - // For more information, see Amazon EKS security group considerations (https://docs.aws.amazon.com/eks/latest/userguide/sec-group-reqs.html) - // in the Amazon EKS User Guide . - SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"` - - // Specify subnets for your Amazon EKS nodes. Amazon EKS creates cross-account - // elastic network interfaces in these subnets to allow communication between - // your nodes and the Kubernetes control plane. - SubnetIds []*string `locationName:"subnetIds" type:"list"` -} - -// String returns the string representation -func (s VpcConfigRequest) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcConfigRequest) GoString() string { - return s.String() -} - -// SetEndpointPrivateAccess sets the EndpointPrivateAccess field's value. -func (s *VpcConfigRequest) SetEndpointPrivateAccess(v bool) *VpcConfigRequest { - s.EndpointPrivateAccess = &v - return s -} - -// SetEndpointPublicAccess sets the EndpointPublicAccess field's value. -func (s *VpcConfigRequest) SetEndpointPublicAccess(v bool) *VpcConfigRequest { - s.EndpointPublicAccess = &v - return s -} - -// SetPublicAccessCidrs sets the PublicAccessCidrs field's value. -func (s *VpcConfigRequest) SetPublicAccessCidrs(v []*string) *VpcConfigRequest { - s.PublicAccessCidrs = v - return s -} - -// SetSecurityGroupIds sets the SecurityGroupIds field's value. -func (s *VpcConfigRequest) SetSecurityGroupIds(v []*string) *VpcConfigRequest { - s.SecurityGroupIds = v - return s -} - -// SetSubnetIds sets the SubnetIds field's value. -func (s *VpcConfigRequest) SetSubnetIds(v []*string) *VpcConfigRequest { - s.SubnetIds = v - return s -} - -// An object representing an Amazon EKS cluster VPC configuration response. -type VpcConfigResponse struct { - _ struct{} `type:"structure"` - - // The cluster security group that was created by Amazon EKS for the cluster. - // Managed node groups use this security group for control-plane-to-data-plane - // communication. - ClusterSecurityGroupId *string `locationName:"clusterSecurityGroupId" type:"string"` - - // This parameter indicates whether the Amazon EKS private API server endpoint - // is enabled. If the Amazon EKS private API server endpoint is enabled, Kubernetes - // API requests that originate from within your cluster's VPC use the private - // VPC endpoint instead of traversing the internet. If this value is disabled - // and you have nodes or AWS Fargate pods in the cluster, then ensure that publicAccessCidrs - // includes the necessary CIDR blocks for communication with the nodes or Fargate - // pods. For more information, see Amazon EKS Cluster Endpoint Access Control - // (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) - // in the Amazon EKS User Guide . - EndpointPrivateAccess *bool `locationName:"endpointPrivateAccess" type:"boolean"` - - // This parameter indicates whether the Amazon EKS public API server endpoint - // is enabled. If the Amazon EKS public API server endpoint is disabled, your - // cluster's Kubernetes API server can only receive requests that originate - // from within the cluster VPC. - EndpointPublicAccess *bool `locationName:"endpointPublicAccess" type:"boolean"` - - // The CIDR blocks that are allowed access to your cluster's public Kubernetes - // API server endpoint. Communication to the endpoint from addresses outside - // of the listed CIDR blocks is denied. The default value is 0.0.0.0/0. If you've - // disabled private endpoint access and you have nodes or AWS Fargate pods in - // the cluster, then ensure that the necessary CIDR blocks are listed. For more - // information, see Amazon EKS Cluster Endpoint Access Control (https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) - // in the Amazon EKS User Guide . - PublicAccessCidrs []*string `locationName:"publicAccessCidrs" type:"list"` - - // The security groups associated with the cross-account elastic network interfaces - // that are used to allow communication between your nodes and the Kubernetes - // control plane. - SecurityGroupIds []*string `locationName:"securityGroupIds" type:"list"` - - // The subnets associated with your cluster. - SubnetIds []*string `locationName:"subnetIds" type:"list"` - - // The VPC associated with your cluster. - VpcId *string `locationName:"vpcId" type:"string"` -} - -// String returns the string representation -func (s VpcConfigResponse) String() string { - return awsutil.Prettify(s) -} - -// GoString returns the string representation -func (s VpcConfigResponse) GoString() string { - return s.String() -} - -// SetClusterSecurityGroupId sets the ClusterSecurityGroupId field's value. -func (s *VpcConfigResponse) SetClusterSecurityGroupId(v string) *VpcConfigResponse { - s.ClusterSecurityGroupId = &v - return s -} - -// SetEndpointPrivateAccess sets the EndpointPrivateAccess field's value. -func (s *VpcConfigResponse) SetEndpointPrivateAccess(v bool) *VpcConfigResponse { - s.EndpointPrivateAccess = &v - return s -} - -// SetEndpointPublicAccess sets the EndpointPublicAccess field's value. -func (s *VpcConfigResponse) SetEndpointPublicAccess(v bool) *VpcConfigResponse { - s.EndpointPublicAccess = &v - return s -} - -// SetPublicAccessCidrs sets the PublicAccessCidrs field's value. -func (s *VpcConfigResponse) SetPublicAccessCidrs(v []*string) *VpcConfigResponse { - s.PublicAccessCidrs = v - return s -} - -// SetSecurityGroupIds sets the SecurityGroupIds field's value. -func (s *VpcConfigResponse) SetSecurityGroupIds(v []*string) *VpcConfigResponse { - s.SecurityGroupIds = v - return s -} - -// SetSubnetIds sets the SubnetIds field's value. -func (s *VpcConfigResponse) SetSubnetIds(v []*string) *VpcConfigResponse { - s.SubnetIds = v - return s -} - -// SetVpcId sets the VpcId field's value. -func (s *VpcConfigResponse) SetVpcId(v string) *VpcConfigResponse { - s.VpcId = &v - return s -} - -const ( - // AMITypesAl2X8664 is a AMITypes enum value - AMITypesAl2X8664 = "AL2_x86_64" - - // AMITypesAl2X8664Gpu is a AMITypes enum value - AMITypesAl2X8664Gpu = "AL2_x86_64_GPU" - - // AMITypesAl2Arm64 is a AMITypes enum value - AMITypesAl2Arm64 = "AL2_ARM_64" - - // AMITypesCustom is a AMITypes enum value - AMITypesCustom = "CUSTOM" -) - -// AMITypes_Values returns all elements of the AMITypes enum -func AMITypes_Values() []string { - return []string{ - AMITypesAl2X8664, - AMITypesAl2X8664Gpu, - AMITypesAl2Arm64, - AMITypesCustom, - } -} - -const ( - // AddonIssueCodeAccessDenied is a AddonIssueCode enum value - AddonIssueCodeAccessDenied = "AccessDenied" - - // AddonIssueCodeInternalFailure is a AddonIssueCode enum value - AddonIssueCodeInternalFailure = "InternalFailure" - - // AddonIssueCodeClusterUnreachable is a AddonIssueCode enum value - AddonIssueCodeClusterUnreachable = "ClusterUnreachable" - - // AddonIssueCodeInsufficientNumberOfReplicas is a AddonIssueCode enum value - AddonIssueCodeInsufficientNumberOfReplicas = "InsufficientNumberOfReplicas" - - // AddonIssueCodeConfigurationConflict is a AddonIssueCode enum value - AddonIssueCodeConfigurationConflict = "ConfigurationConflict" - - // AddonIssueCodeAdmissionRequestDenied is a AddonIssueCode enum value - AddonIssueCodeAdmissionRequestDenied = "AdmissionRequestDenied" -) - -// AddonIssueCode_Values returns all elements of the AddonIssueCode enum -func AddonIssueCode_Values() []string { - return []string{ - AddonIssueCodeAccessDenied, - AddonIssueCodeInternalFailure, - AddonIssueCodeClusterUnreachable, - AddonIssueCodeInsufficientNumberOfReplicas, - AddonIssueCodeConfigurationConflict, - AddonIssueCodeAdmissionRequestDenied, - } -} - -const ( - // AddonStatusCreating is a AddonStatus enum value - AddonStatusCreating = "CREATING" - - // AddonStatusActive is a AddonStatus enum value - AddonStatusActive = "ACTIVE" - - // AddonStatusCreateFailed is a AddonStatus enum value - AddonStatusCreateFailed = "CREATE_FAILED" - - // AddonStatusUpdating is a AddonStatus enum value - AddonStatusUpdating = "UPDATING" - - // AddonStatusDeleting is a AddonStatus enum value - AddonStatusDeleting = "DELETING" - - // AddonStatusDeleteFailed is a AddonStatus enum value - AddonStatusDeleteFailed = "DELETE_FAILED" - - // AddonStatusDegraded is a AddonStatus enum value - AddonStatusDegraded = "DEGRADED" -) - -// AddonStatus_Values returns all elements of the AddonStatus enum -func AddonStatus_Values() []string { - return []string{ - AddonStatusCreating, - AddonStatusActive, - AddonStatusCreateFailed, - AddonStatusUpdating, - AddonStatusDeleting, - AddonStatusDeleteFailed, - AddonStatusDegraded, - } -} - -const ( - // CapacityTypesOnDemand is a CapacityTypes enum value - CapacityTypesOnDemand = "ON_DEMAND" - - // CapacityTypesSpot is a CapacityTypes enum value - CapacityTypesSpot = "SPOT" -) - -// CapacityTypes_Values returns all elements of the CapacityTypes enum -func CapacityTypes_Values() []string { - return []string{ - CapacityTypesOnDemand, - CapacityTypesSpot, - } -} - -const ( - // ClusterStatusCreating is a ClusterStatus enum value - ClusterStatusCreating = "CREATING" - - // ClusterStatusActive is a ClusterStatus enum value - ClusterStatusActive = "ACTIVE" - - // ClusterStatusDeleting is a ClusterStatus enum value - ClusterStatusDeleting = "DELETING" - - // ClusterStatusFailed is a ClusterStatus enum value - ClusterStatusFailed = "FAILED" - - // ClusterStatusUpdating is a ClusterStatus enum value - ClusterStatusUpdating = "UPDATING" -) - -// ClusterStatus_Values returns all elements of the ClusterStatus enum -func ClusterStatus_Values() []string { - return []string{ - ClusterStatusCreating, - ClusterStatusActive, - ClusterStatusDeleting, - ClusterStatusFailed, - ClusterStatusUpdating, - } -} - -const ( - // ConfigStatusCreating is a ConfigStatus enum value - ConfigStatusCreating = "CREATING" - - // ConfigStatusDeleting is a ConfigStatus enum value - ConfigStatusDeleting = "DELETING" - - // ConfigStatusActive is a ConfigStatus enum value - ConfigStatusActive = "ACTIVE" -) - -// ConfigStatus_Values returns all elements of the ConfigStatus enum -func ConfigStatus_Values() []string { - return []string{ - ConfigStatusCreating, - ConfigStatusDeleting, - ConfigStatusActive, - } -} - -const ( - // ErrorCodeSubnetNotFound is a ErrorCode enum value - ErrorCodeSubnetNotFound = "SubnetNotFound" - - // ErrorCodeSecurityGroupNotFound is a ErrorCode enum value - ErrorCodeSecurityGroupNotFound = "SecurityGroupNotFound" - - // ErrorCodeEniLimitReached is a ErrorCode enum value - ErrorCodeEniLimitReached = "EniLimitReached" - - // ErrorCodeIpNotAvailable is a ErrorCode enum value - ErrorCodeIpNotAvailable = "IpNotAvailable" - - // ErrorCodeAccessDenied is a ErrorCode enum value - ErrorCodeAccessDenied = "AccessDenied" - - // ErrorCodeOperationNotPermitted is a ErrorCode enum value - ErrorCodeOperationNotPermitted = "OperationNotPermitted" - - // ErrorCodeVpcIdNotFound is a ErrorCode enum value - ErrorCodeVpcIdNotFound = "VpcIdNotFound" - - // ErrorCodeUnknown is a ErrorCode enum value - ErrorCodeUnknown = "Unknown" - - // ErrorCodeNodeCreationFailure is a ErrorCode enum value - ErrorCodeNodeCreationFailure = "NodeCreationFailure" - - // ErrorCodePodEvictionFailure is a ErrorCode enum value - ErrorCodePodEvictionFailure = "PodEvictionFailure" - - // ErrorCodeInsufficientFreeAddresses is a ErrorCode enum value - ErrorCodeInsufficientFreeAddresses = "InsufficientFreeAddresses" - - // ErrorCodeClusterUnreachable is a ErrorCode enum value - ErrorCodeClusterUnreachable = "ClusterUnreachable" - - // ErrorCodeInsufficientNumberOfReplicas is a ErrorCode enum value - ErrorCodeInsufficientNumberOfReplicas = "InsufficientNumberOfReplicas" - - // ErrorCodeConfigurationConflict is a ErrorCode enum value - ErrorCodeConfigurationConflict = "ConfigurationConflict" - - // ErrorCodeAdmissionRequestDenied is a ErrorCode enum value - ErrorCodeAdmissionRequestDenied = "AdmissionRequestDenied" -) - -// ErrorCode_Values returns all elements of the ErrorCode enum -func ErrorCode_Values() []string { - return []string{ - ErrorCodeSubnetNotFound, - ErrorCodeSecurityGroupNotFound, - ErrorCodeEniLimitReached, - ErrorCodeIpNotAvailable, - ErrorCodeAccessDenied, - ErrorCodeOperationNotPermitted, - ErrorCodeVpcIdNotFound, - ErrorCodeUnknown, - ErrorCodeNodeCreationFailure, - ErrorCodePodEvictionFailure, - ErrorCodeInsufficientFreeAddresses, - ErrorCodeClusterUnreachable, - ErrorCodeInsufficientNumberOfReplicas, - ErrorCodeConfigurationConflict, - ErrorCodeAdmissionRequestDenied, - } -} - -const ( - // FargateProfileStatusCreating is a FargateProfileStatus enum value - FargateProfileStatusCreating = "CREATING" - - // FargateProfileStatusActive is a FargateProfileStatus enum value - FargateProfileStatusActive = "ACTIVE" - - // FargateProfileStatusDeleting is a FargateProfileStatus enum value - FargateProfileStatusDeleting = "DELETING" - - // FargateProfileStatusCreateFailed is a FargateProfileStatus enum value - FargateProfileStatusCreateFailed = "CREATE_FAILED" - - // FargateProfileStatusDeleteFailed is a FargateProfileStatus enum value - FargateProfileStatusDeleteFailed = "DELETE_FAILED" -) - -// FargateProfileStatus_Values returns all elements of the FargateProfileStatus enum -func FargateProfileStatus_Values() []string { - return []string{ - FargateProfileStatusCreating, - FargateProfileStatusActive, - FargateProfileStatusDeleting, - FargateProfileStatusCreateFailed, - FargateProfileStatusDeleteFailed, - } -} - -const ( - // LogTypeApi is a LogType enum value - LogTypeApi = "api" - - // LogTypeAudit is a LogType enum value - LogTypeAudit = "audit" - - // LogTypeAuthenticator is a LogType enum value - LogTypeAuthenticator = "authenticator" - - // LogTypeControllerManager is a LogType enum value - LogTypeControllerManager = "controllerManager" - - // LogTypeScheduler is a LogType enum value - LogTypeScheduler = "scheduler" -) - -// LogType_Values returns all elements of the LogType enum -func LogType_Values() []string { - return []string{ - LogTypeApi, - LogTypeAudit, - LogTypeAuthenticator, - LogTypeControllerManager, - LogTypeScheduler, - } -} - -const ( - // NodegroupIssueCodeAutoScalingGroupNotFound is a NodegroupIssueCode enum value - NodegroupIssueCodeAutoScalingGroupNotFound = "AutoScalingGroupNotFound" - - // NodegroupIssueCodeAutoScalingGroupInvalidConfiguration is a NodegroupIssueCode enum value - NodegroupIssueCodeAutoScalingGroupInvalidConfiguration = "AutoScalingGroupInvalidConfiguration" - - // NodegroupIssueCodeEc2securityGroupNotFound is a NodegroupIssueCode enum value - NodegroupIssueCodeEc2securityGroupNotFound = "Ec2SecurityGroupNotFound" - - // NodegroupIssueCodeEc2securityGroupDeletionFailure is a NodegroupIssueCode enum value - NodegroupIssueCodeEc2securityGroupDeletionFailure = "Ec2SecurityGroupDeletionFailure" - - // NodegroupIssueCodeEc2launchTemplateNotFound is a NodegroupIssueCode enum value - NodegroupIssueCodeEc2launchTemplateNotFound = "Ec2LaunchTemplateNotFound" - - // NodegroupIssueCodeEc2launchTemplateVersionMismatch is a NodegroupIssueCode enum value - NodegroupIssueCodeEc2launchTemplateVersionMismatch = "Ec2LaunchTemplateVersionMismatch" - - // NodegroupIssueCodeEc2subnetNotFound is a NodegroupIssueCode enum value - NodegroupIssueCodeEc2subnetNotFound = "Ec2SubnetNotFound" - - // NodegroupIssueCodeEc2subnetInvalidConfiguration is a NodegroupIssueCode enum value - NodegroupIssueCodeEc2subnetInvalidConfiguration = "Ec2SubnetInvalidConfiguration" - - // NodegroupIssueCodeIamInstanceProfileNotFound is a NodegroupIssueCode enum value - NodegroupIssueCodeIamInstanceProfileNotFound = "IamInstanceProfileNotFound" - - // NodegroupIssueCodeIamLimitExceeded is a NodegroupIssueCode enum value - NodegroupIssueCodeIamLimitExceeded = "IamLimitExceeded" - - // NodegroupIssueCodeIamNodeRoleNotFound is a NodegroupIssueCode enum value - NodegroupIssueCodeIamNodeRoleNotFound = "IamNodeRoleNotFound" - - // NodegroupIssueCodeNodeCreationFailure is a NodegroupIssueCode enum value - NodegroupIssueCodeNodeCreationFailure = "NodeCreationFailure" - - // NodegroupIssueCodeAsgInstanceLaunchFailures is a NodegroupIssueCode enum value - NodegroupIssueCodeAsgInstanceLaunchFailures = "AsgInstanceLaunchFailures" - - // NodegroupIssueCodeInstanceLimitExceeded is a NodegroupIssueCode enum value - NodegroupIssueCodeInstanceLimitExceeded = "InstanceLimitExceeded" - - // NodegroupIssueCodeInsufficientFreeAddresses is a NodegroupIssueCode enum value - NodegroupIssueCodeInsufficientFreeAddresses = "InsufficientFreeAddresses" - - // NodegroupIssueCodeAccessDenied is a NodegroupIssueCode enum value - NodegroupIssueCodeAccessDenied = "AccessDenied" - - // NodegroupIssueCodeInternalFailure is a NodegroupIssueCode enum value - NodegroupIssueCodeInternalFailure = "InternalFailure" - - // NodegroupIssueCodeClusterUnreachable is a NodegroupIssueCode enum value - NodegroupIssueCodeClusterUnreachable = "ClusterUnreachable" -) - -// NodegroupIssueCode_Values returns all elements of the NodegroupIssueCode enum -func NodegroupIssueCode_Values() []string { - return []string{ - NodegroupIssueCodeAutoScalingGroupNotFound, - NodegroupIssueCodeAutoScalingGroupInvalidConfiguration, - NodegroupIssueCodeEc2securityGroupNotFound, - NodegroupIssueCodeEc2securityGroupDeletionFailure, - NodegroupIssueCodeEc2launchTemplateNotFound, - NodegroupIssueCodeEc2launchTemplateVersionMismatch, - NodegroupIssueCodeEc2subnetNotFound, - NodegroupIssueCodeEc2subnetInvalidConfiguration, - NodegroupIssueCodeIamInstanceProfileNotFound, - NodegroupIssueCodeIamLimitExceeded, - NodegroupIssueCodeIamNodeRoleNotFound, - NodegroupIssueCodeNodeCreationFailure, - NodegroupIssueCodeAsgInstanceLaunchFailures, - NodegroupIssueCodeInstanceLimitExceeded, - NodegroupIssueCodeInsufficientFreeAddresses, - NodegroupIssueCodeAccessDenied, - NodegroupIssueCodeInternalFailure, - NodegroupIssueCodeClusterUnreachable, - } -} - -const ( - // NodegroupStatusCreating is a NodegroupStatus enum value - NodegroupStatusCreating = "CREATING" - - // NodegroupStatusActive is a NodegroupStatus enum value - NodegroupStatusActive = "ACTIVE" - - // NodegroupStatusUpdating is a NodegroupStatus enum value - NodegroupStatusUpdating = "UPDATING" - - // NodegroupStatusDeleting is a NodegroupStatus enum value - NodegroupStatusDeleting = "DELETING" - - // NodegroupStatusCreateFailed is a NodegroupStatus enum value - NodegroupStatusCreateFailed = "CREATE_FAILED" - - // NodegroupStatusDeleteFailed is a NodegroupStatus enum value - NodegroupStatusDeleteFailed = "DELETE_FAILED" - - // NodegroupStatusDegraded is a NodegroupStatus enum value - NodegroupStatusDegraded = "DEGRADED" -) - -// NodegroupStatus_Values returns all elements of the NodegroupStatus enum -func NodegroupStatus_Values() []string { - return []string{ - NodegroupStatusCreating, - NodegroupStatusActive, - NodegroupStatusUpdating, - NodegroupStatusDeleting, - NodegroupStatusCreateFailed, - NodegroupStatusDeleteFailed, - NodegroupStatusDegraded, - } -} - -const ( - // ResolveConflictsOverwrite is a ResolveConflicts enum value - ResolveConflictsOverwrite = "OVERWRITE" - - // ResolveConflictsNone is a ResolveConflicts enum value - ResolveConflictsNone = "NONE" -) - -// ResolveConflicts_Values returns all elements of the ResolveConflicts enum -func ResolveConflicts_Values() []string { - return []string{ - ResolveConflictsOverwrite, - ResolveConflictsNone, - } -} - -const ( - // TaintEffectNoSchedule is a TaintEffect enum value - TaintEffectNoSchedule = "NO_SCHEDULE" - - // TaintEffectNoExecute is a TaintEffect enum value - TaintEffectNoExecute = "NO_EXECUTE" - - // TaintEffectPreferNoSchedule is a TaintEffect enum value - TaintEffectPreferNoSchedule = "PREFER_NO_SCHEDULE" -) - -// TaintEffect_Values returns all elements of the TaintEffect enum -func TaintEffect_Values() []string { - return []string{ - TaintEffectNoSchedule, - TaintEffectNoExecute, - TaintEffectPreferNoSchedule, - } -} - -const ( - // UpdateParamTypeVersion is a UpdateParamType enum value - UpdateParamTypeVersion = "Version" - - // UpdateParamTypePlatformVersion is a UpdateParamType enum value - UpdateParamTypePlatformVersion = "PlatformVersion" - - // UpdateParamTypeEndpointPrivateAccess is a UpdateParamType enum value - UpdateParamTypeEndpointPrivateAccess = "EndpointPrivateAccess" - - // UpdateParamTypeEndpointPublicAccess is a UpdateParamType enum value - UpdateParamTypeEndpointPublicAccess = "EndpointPublicAccess" - - // UpdateParamTypeClusterLogging is a UpdateParamType enum value - UpdateParamTypeClusterLogging = "ClusterLogging" - - // UpdateParamTypeDesiredSize is a UpdateParamType enum value - UpdateParamTypeDesiredSize = "DesiredSize" - - // UpdateParamTypeLabelsToAdd is a UpdateParamType enum value - UpdateParamTypeLabelsToAdd = "LabelsToAdd" - - // UpdateParamTypeLabelsToRemove is a UpdateParamType enum value - UpdateParamTypeLabelsToRemove = "LabelsToRemove" - - // UpdateParamTypeTaintsToAdd is a UpdateParamType enum value - UpdateParamTypeTaintsToAdd = "TaintsToAdd" - - // UpdateParamTypeTaintsToRemove is a UpdateParamType enum value - UpdateParamTypeTaintsToRemove = "TaintsToRemove" - - // UpdateParamTypeMaxSize is a UpdateParamType enum value - UpdateParamTypeMaxSize = "MaxSize" - - // UpdateParamTypeMinSize is a UpdateParamType enum value - UpdateParamTypeMinSize = "MinSize" - - // UpdateParamTypeReleaseVersion is a UpdateParamType enum value - UpdateParamTypeReleaseVersion = "ReleaseVersion" - - // UpdateParamTypePublicAccessCidrs is a UpdateParamType enum value - UpdateParamTypePublicAccessCidrs = "PublicAccessCidrs" - - // UpdateParamTypeLaunchTemplateName is a UpdateParamType enum value - UpdateParamTypeLaunchTemplateName = "LaunchTemplateName" - - // UpdateParamTypeLaunchTemplateVersion is a UpdateParamType enum value - UpdateParamTypeLaunchTemplateVersion = "LaunchTemplateVersion" - - // UpdateParamTypeIdentityProviderConfig is a UpdateParamType enum value - UpdateParamTypeIdentityProviderConfig = "IdentityProviderConfig" - - // UpdateParamTypeEncryptionConfig is a UpdateParamType enum value - UpdateParamTypeEncryptionConfig = "EncryptionConfig" - - // UpdateParamTypeAddonVersion is a UpdateParamType enum value - UpdateParamTypeAddonVersion = "AddonVersion" - - // UpdateParamTypeServiceAccountRoleArn is a UpdateParamType enum value - UpdateParamTypeServiceAccountRoleArn = "ServiceAccountRoleArn" - - // UpdateParamTypeResolveConflicts is a UpdateParamType enum value - UpdateParamTypeResolveConflicts = "ResolveConflicts" -) - -// UpdateParamType_Values returns all elements of the UpdateParamType enum -func UpdateParamType_Values() []string { - return []string{ - UpdateParamTypeVersion, - UpdateParamTypePlatformVersion, - UpdateParamTypeEndpointPrivateAccess, - UpdateParamTypeEndpointPublicAccess, - UpdateParamTypeClusterLogging, - UpdateParamTypeDesiredSize, - UpdateParamTypeLabelsToAdd, - UpdateParamTypeLabelsToRemove, - UpdateParamTypeTaintsToAdd, - UpdateParamTypeTaintsToRemove, - UpdateParamTypeMaxSize, - UpdateParamTypeMinSize, - UpdateParamTypeReleaseVersion, - UpdateParamTypePublicAccessCidrs, - UpdateParamTypeLaunchTemplateName, - UpdateParamTypeLaunchTemplateVersion, - UpdateParamTypeIdentityProviderConfig, - UpdateParamTypeEncryptionConfig, - UpdateParamTypeAddonVersion, - UpdateParamTypeServiceAccountRoleArn, - UpdateParamTypeResolveConflicts, - } -} - -const ( - // UpdateStatusInProgress is a UpdateStatus enum value - UpdateStatusInProgress = "InProgress" - - // UpdateStatusFailed is a UpdateStatus enum value - UpdateStatusFailed = "Failed" - - // UpdateStatusCancelled is a UpdateStatus enum value - UpdateStatusCancelled = "Cancelled" - - // UpdateStatusSuccessful is a UpdateStatus enum value - UpdateStatusSuccessful = "Successful" -) - -// UpdateStatus_Values returns all elements of the UpdateStatus enum -func UpdateStatus_Values() []string { - return []string{ - UpdateStatusInProgress, - UpdateStatusFailed, - UpdateStatusCancelled, - UpdateStatusSuccessful, - } -} - -const ( - // UpdateTypeVersionUpdate is a UpdateType enum value - UpdateTypeVersionUpdate = "VersionUpdate" - - // UpdateTypeEndpointAccessUpdate is a UpdateType enum value - UpdateTypeEndpointAccessUpdate = "EndpointAccessUpdate" - - // UpdateTypeLoggingUpdate is a UpdateType enum value - UpdateTypeLoggingUpdate = "LoggingUpdate" - - // UpdateTypeConfigUpdate is a UpdateType enum value - UpdateTypeConfigUpdate = "ConfigUpdate" - - // UpdateTypeAssociateIdentityProviderConfig is a UpdateType enum value - UpdateTypeAssociateIdentityProviderConfig = "AssociateIdentityProviderConfig" - - // UpdateTypeDisassociateIdentityProviderConfig is a UpdateType enum value - UpdateTypeDisassociateIdentityProviderConfig = "DisassociateIdentityProviderConfig" - - // UpdateTypeAssociateEncryptionConfig is a UpdateType enum value - UpdateTypeAssociateEncryptionConfig = "AssociateEncryptionConfig" - - // UpdateTypeAddonUpdate is a UpdateType enum value - UpdateTypeAddonUpdate = "AddonUpdate" -) - -// UpdateType_Values returns all elements of the UpdateType enum -func UpdateType_Values() []string { - return []string{ - UpdateTypeVersionUpdate, - UpdateTypeEndpointAccessUpdate, - UpdateTypeLoggingUpdate, - UpdateTypeConfigUpdate, - UpdateTypeAssociateIdentityProviderConfig, - UpdateTypeDisassociateIdentityProviderConfig, - UpdateTypeAssociateEncryptionConfig, - UpdateTypeAddonUpdate, - } -} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go deleted file mode 100644 index d30d7ad088a..00000000000 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/doc.go +++ /dev/null @@ -1,40 +0,0 @@ -// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. - -// Package eks provides the client and types for making API -// requests to Amazon Elastic Kubernetes Service. -// -// Amazon Elastic Kubernetes Service (Amazon EKS) is a managed service that -// makes it easy for you to run Kubernetes on AWS without needing to stand up -// or maintain your own Kubernetes control plane. Kubernetes is an open-source -// system for automating the deployment, scaling, and management of containerized -// applications. -// -// Amazon EKS runs up-to-date versions of the open-source Kubernetes software, -// so you can use all the existing plugins and tooling from the Kubernetes community. -// Applications running on Amazon EKS are fully compatible with applications -// running on any standard Kubernetes environment, whether running in on-premises -// data centers or public clouds. This means that you can easily migrate any -// standard Kubernetes application to Amazon EKS without any code modification -// required. -// -// See https://docs.aws.amazon.com/goto/WebAPI/eks-2017-11-01 for more information on this service. -// -// See eks package documentation for more information. -// https://docs.aws.amazon.com/sdk-for-go/api/service/eks/ -// -// Using the Client -// -// To contact Amazon Elastic Kubernetes Service with the SDK use the New function to create -// a new service client. With that client you can make API requests to the service. -// These clients are safe to use concurrently. -// -// See the SDK's documentation for more information on how to use the SDK. -// https://docs.aws.amazon.com/sdk-for-go/api/ -// -// See aws.Config documentation for more information on configuring SDK clients. -// https://docs.aws.amazon.com/sdk-for-go/api/aws/#Config -// -// See the Amazon Elastic Kubernetes Service client EKS for more -// information on creating client for this service. -// https://docs.aws.amazon.com/sdk-for-go/api/service/eks/#New -package eks diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go deleted file mode 100644 index 7c908d3008e..00000000000 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/errors.go +++ /dev/null @@ -1,101 +0,0 @@ -// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. - -package eks - -import ( - "github.com/aws/aws-sdk-go/private/protocol" -) - -const ( - - // ErrCodeBadRequestException for service response error code - // "BadRequestException". - // - // This exception is thrown if the request contains a semantic error. The precise - // meaning will depend on the API, and will be documented in the error message. - ErrCodeBadRequestException = "BadRequestException" - - // ErrCodeClientException for service response error code - // "ClientException". - // - // These errors are usually caused by a client action. Actions can include using - // an action or resource on behalf of a user that doesn't have permissions to - // use the action or resource or specifying an identifier that is not valid. - ErrCodeClientException = "ClientException" - - // ErrCodeInvalidParameterException for service response error code - // "InvalidParameterException". - // - // The specified parameter is invalid. Review the available parameters for the - // API request. - ErrCodeInvalidParameterException = "InvalidParameterException" - - // ErrCodeInvalidRequestException for service response error code - // "InvalidRequestException". - // - // The request is invalid given the state of the cluster. Check the state of - // the cluster and the associated operations. - ErrCodeInvalidRequestException = "InvalidRequestException" - - // ErrCodeNotFoundException for service response error code - // "NotFoundException". - // - // A service resource associated with the request could not be found. Clients - // should not retry such requests. - ErrCodeNotFoundException = "NotFoundException" - - // ErrCodeResourceInUseException for service response error code - // "ResourceInUseException". - // - // The specified resource is in use. - ErrCodeResourceInUseException = "ResourceInUseException" - - // ErrCodeResourceLimitExceededException for service response error code - // "ResourceLimitExceededException". - // - // You have encountered a service limit on the specified resource. - ErrCodeResourceLimitExceededException = "ResourceLimitExceededException" - - // ErrCodeResourceNotFoundException for service response error code - // "ResourceNotFoundException". - // - // The specified resource could not be found. You can view your available clusters - // with ListClusters. You can view your available managed node groups with ListNodegroups. - // Amazon EKS clusters and node groups are Region-specific. - ErrCodeResourceNotFoundException = "ResourceNotFoundException" - - // ErrCodeServerException for service response error code - // "ServerException". - // - // These errors are usually caused by a server-side issue. - ErrCodeServerException = "ServerException" - - // ErrCodeServiceUnavailableException for service response error code - // "ServiceUnavailableException". - // - // The service is unavailable. Back off and retry the operation. - ErrCodeServiceUnavailableException = "ServiceUnavailableException" - - // ErrCodeUnsupportedAvailabilityZoneException for service response error code - // "UnsupportedAvailabilityZoneException". - // - // At least one of your specified cluster subnets is in an Availability Zone - // that does not support Amazon EKS. The exception output specifies the supported - // Availability Zones for your account, from which you can choose subnets for - // your cluster. - ErrCodeUnsupportedAvailabilityZoneException = "UnsupportedAvailabilityZoneException" -) - -var exceptionFromCode = map[string]func(protocol.ResponseMetadata) error{ - "BadRequestException": newErrorBadRequestException, - "ClientException": newErrorClientException, - "InvalidParameterException": newErrorInvalidParameterException, - "InvalidRequestException": newErrorInvalidRequestException, - "NotFoundException": newErrorNotFoundException, - "ResourceInUseException": newErrorResourceInUseException, - "ResourceLimitExceededException": newErrorResourceLimitExceededException, - "ResourceNotFoundException": newErrorResourceNotFoundException, - "ServerException": newErrorServerException, - "ServiceUnavailableException": newErrorServiceUnavailableException, - "UnsupportedAvailabilityZoneException": newErrorUnsupportedAvailabilityZoneException, -} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go deleted file mode 100644 index 3fc2175454e..00000000000 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/service.go +++ /dev/null @@ -1,104 +0,0 @@ -// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. - -package eks - -import ( - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/client" - "github.com/aws/aws-sdk-go/aws/client/metadata" - "github.com/aws/aws-sdk-go/aws/request" - "github.com/aws/aws-sdk-go/aws/signer/v4" - "github.com/aws/aws-sdk-go/private/protocol" - "github.com/aws/aws-sdk-go/private/protocol/restjson" -) - -// EKS provides the API operation methods for making requests to -// Amazon Elastic Kubernetes Service. See this package's package overview docs -// for details on the service. -// -// EKS methods are safe to use concurrently. It is not safe to -// modify mutate any of the struct's properties though. -type EKS struct { - *client.Client -} - -// Used for custom client initialization logic -var initClient func(*client.Client) - -// Used for custom request initialization logic -var initRequest func(*request.Request) - -// Service information constants -const ( - ServiceName = "eks" // Name of service. - EndpointsID = ServiceName // ID to lookup a service endpoint with. - ServiceID = "EKS" // ServiceID is a unique identifier of a specific service. -) - -// New creates a new instance of the EKS client with a session. -// If additional configuration is needed for the client instance use the optional -// aws.Config parameter to add your extra config. -// -// Example: -// mySession := session.Must(session.NewSession()) -// -// // Create a EKS client from just a session. -// svc := eks.New(mySession) -// -// // Create a EKS client with additional configuration -// svc := eks.New(mySession, aws.NewConfig().WithRegion("us-west-2")) -func New(p client.ConfigProvider, cfgs ...*aws.Config) *EKS { - c := p.ClientConfig(EndpointsID, cfgs...) - if c.SigningNameDerived || len(c.SigningName) == 0 { - c.SigningName = "eks" - } - return newClient(*c.Config, c.Handlers, c.PartitionID, c.Endpoint, c.SigningRegion, c.SigningName) -} - -// newClient creates, initializes and returns a new service client instance. -func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint, signingRegion, signingName string) *EKS { - svc := &EKS{ - Client: client.New( - cfg, - metadata.ClientInfo{ - ServiceName: ServiceName, - ServiceID: ServiceID, - SigningName: signingName, - SigningRegion: signingRegion, - PartitionID: partitionID, - Endpoint: endpoint, - APIVersion: "2017-11-01", - }, - handlers, - ), - } - - // Handlers - svc.Handlers.Sign.PushBackNamed(v4.SignRequestHandler) - svc.Handlers.Build.PushBackNamed(restjson.BuildHandler) - svc.Handlers.Unmarshal.PushBackNamed(restjson.UnmarshalHandler) - svc.Handlers.UnmarshalMeta.PushBackNamed(restjson.UnmarshalMetaHandler) - svc.Handlers.UnmarshalError.PushBackNamed( - protocol.NewUnmarshalErrorHandler(restjson.NewUnmarshalTypedError(exceptionFromCode)).NamedHandler(), - ) - - // Run custom client initialization if present - if initClient != nil { - initClient(svc.Client) - } - - return svc -} - -// newRequest creates a new request for a EKS operation and runs any -// custom request initialization. -func (c *EKS) newRequest(op *request.Operation, params, data interface{}) *request.Request { - req := c.NewRequest(op, params, data) - - // Run custom request initialization if present - if initRequest != nil { - initRequest(req) - } - - return req -} diff --git a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go b/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go deleted file mode 100644 index 9c9def22a1b..00000000000 --- a/cluster-autoscaler/vendor/github.com/aws/aws-sdk-go/service/eks/waiters.go +++ /dev/null @@ -1,331 +0,0 @@ -// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. - -package eks - -import ( - "time" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/aws/request" -) - -// WaitUntilAddonActive uses the Amazon EKS API operation -// DescribeAddon to wait for a condition to be met before returning. -// If the condition is not met within the max attempt window, an error will -// be returned. -func (c *EKS) WaitUntilAddonActive(input *DescribeAddonInput) error { - return c.WaitUntilAddonActiveWithContext(aws.BackgroundContext(), input) -} - -// WaitUntilAddonActiveWithContext is an extended version of WaitUntilAddonActive. -// With the support for passing in a context and options to configure the -// Waiter and the underlying request options. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) WaitUntilAddonActiveWithContext(ctx aws.Context, input *DescribeAddonInput, opts ...request.WaiterOption) error { - w := request.Waiter{ - Name: "WaitUntilAddonActive", - MaxAttempts: 60, - Delay: request.ConstantWaiterDelay(10 * time.Second), - Acceptors: []request.WaiterAcceptor{ - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "addon.status", - Expected: "CREATE_FAILED", - }, - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "addon.status", - Expected: "DEGRADED", - }, - { - State: request.SuccessWaiterState, - Matcher: request.PathWaiterMatch, Argument: "addon.status", - Expected: "ACTIVE", - }, - }, - Logger: c.Config.Logger, - NewRequest: func(opts []request.Option) (*request.Request, error) { - var inCpy *DescribeAddonInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeAddonRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - w.ApplyOptions(opts...) - - return w.WaitWithContext(ctx) -} - -// WaitUntilAddonDeleted uses the Amazon EKS API operation -// DescribeAddon to wait for a condition to be met before returning. -// If the condition is not met within the max attempt window, an error will -// be returned. -func (c *EKS) WaitUntilAddonDeleted(input *DescribeAddonInput) error { - return c.WaitUntilAddonDeletedWithContext(aws.BackgroundContext(), input) -} - -// WaitUntilAddonDeletedWithContext is an extended version of WaitUntilAddonDeleted. -// With the support for passing in a context and options to configure the -// Waiter and the underlying request options. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) WaitUntilAddonDeletedWithContext(ctx aws.Context, input *DescribeAddonInput, opts ...request.WaiterOption) error { - w := request.Waiter{ - Name: "WaitUntilAddonDeleted", - MaxAttempts: 60, - Delay: request.ConstantWaiterDelay(10 * time.Second), - Acceptors: []request.WaiterAcceptor{ - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "addon.status", - Expected: "DELETE_FAILED", - }, - { - State: request.SuccessWaiterState, - Matcher: request.ErrorWaiterMatch, - Expected: "ResourceNotFoundException", - }, - }, - Logger: c.Config.Logger, - NewRequest: func(opts []request.Option) (*request.Request, error) { - var inCpy *DescribeAddonInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeAddonRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - w.ApplyOptions(opts...) - - return w.WaitWithContext(ctx) -} - -// WaitUntilClusterActive uses the Amazon EKS API operation -// DescribeCluster to wait for a condition to be met before returning. -// If the condition is not met within the max attempt window, an error will -// be returned. -func (c *EKS) WaitUntilClusterActive(input *DescribeClusterInput) error { - return c.WaitUntilClusterActiveWithContext(aws.BackgroundContext(), input) -} - -// WaitUntilClusterActiveWithContext is an extended version of WaitUntilClusterActive. -// With the support for passing in a context and options to configure the -// Waiter and the underlying request options. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) WaitUntilClusterActiveWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.WaiterOption) error { - w := request.Waiter{ - Name: "WaitUntilClusterActive", - MaxAttempts: 40, - Delay: request.ConstantWaiterDelay(30 * time.Second), - Acceptors: []request.WaiterAcceptor{ - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "cluster.status", - Expected: "DELETING", - }, - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "cluster.status", - Expected: "FAILED", - }, - { - State: request.SuccessWaiterState, - Matcher: request.PathWaiterMatch, Argument: "cluster.status", - Expected: "ACTIVE", - }, - }, - Logger: c.Config.Logger, - NewRequest: func(opts []request.Option) (*request.Request, error) { - var inCpy *DescribeClusterInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeClusterRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - w.ApplyOptions(opts...) - - return w.WaitWithContext(ctx) -} - -// WaitUntilClusterDeleted uses the Amazon EKS API operation -// DescribeCluster to wait for a condition to be met before returning. -// If the condition is not met within the max attempt window, an error will -// be returned. -func (c *EKS) WaitUntilClusterDeleted(input *DescribeClusterInput) error { - return c.WaitUntilClusterDeletedWithContext(aws.BackgroundContext(), input) -} - -// WaitUntilClusterDeletedWithContext is an extended version of WaitUntilClusterDeleted. -// With the support for passing in a context and options to configure the -// Waiter and the underlying request options. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) WaitUntilClusterDeletedWithContext(ctx aws.Context, input *DescribeClusterInput, opts ...request.WaiterOption) error { - w := request.Waiter{ - Name: "WaitUntilClusterDeleted", - MaxAttempts: 40, - Delay: request.ConstantWaiterDelay(30 * time.Second), - Acceptors: []request.WaiterAcceptor{ - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "cluster.status", - Expected: "ACTIVE", - }, - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "cluster.status", - Expected: "CREATING", - }, - { - State: request.SuccessWaiterState, - Matcher: request.ErrorWaiterMatch, - Expected: "ResourceNotFoundException", - }, - }, - Logger: c.Config.Logger, - NewRequest: func(opts []request.Option) (*request.Request, error) { - var inCpy *DescribeClusterInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeClusterRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - w.ApplyOptions(opts...) - - return w.WaitWithContext(ctx) -} - -// WaitUntilNodegroupActive uses the Amazon EKS API operation -// DescribeNodegroup to wait for a condition to be met before returning. -// If the condition is not met within the max attempt window, an error will -// be returned. -func (c *EKS) WaitUntilNodegroupActive(input *DescribeNodegroupInput) error { - return c.WaitUntilNodegroupActiveWithContext(aws.BackgroundContext(), input) -} - -// WaitUntilNodegroupActiveWithContext is an extended version of WaitUntilNodegroupActive. -// With the support for passing in a context and options to configure the -// Waiter and the underlying request options. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) WaitUntilNodegroupActiveWithContext(ctx aws.Context, input *DescribeNodegroupInput, opts ...request.WaiterOption) error { - w := request.Waiter{ - Name: "WaitUntilNodegroupActive", - MaxAttempts: 80, - Delay: request.ConstantWaiterDelay(30 * time.Second), - Acceptors: []request.WaiterAcceptor{ - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "nodegroup.status", - Expected: "CREATE_FAILED", - }, - { - State: request.SuccessWaiterState, - Matcher: request.PathWaiterMatch, Argument: "nodegroup.status", - Expected: "ACTIVE", - }, - }, - Logger: c.Config.Logger, - NewRequest: func(opts []request.Option) (*request.Request, error) { - var inCpy *DescribeNodegroupInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeNodegroupRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - w.ApplyOptions(opts...) - - return w.WaitWithContext(ctx) -} - -// WaitUntilNodegroupDeleted uses the Amazon EKS API operation -// DescribeNodegroup to wait for a condition to be met before returning. -// If the condition is not met within the max attempt window, an error will -// be returned. -func (c *EKS) WaitUntilNodegroupDeleted(input *DescribeNodegroupInput) error { - return c.WaitUntilNodegroupDeletedWithContext(aws.BackgroundContext(), input) -} - -// WaitUntilNodegroupDeletedWithContext is an extended version of WaitUntilNodegroupDeleted. -// With the support for passing in a context and options to configure the -// Waiter and the underlying request options. -// -// The context must be non-nil and will be used for request cancellation. If -// the context is nil a panic will occur. In the future the SDK may create -// sub-contexts for http.Requests. See https://golang.org/pkg/context/ -// for more information on using Contexts. -func (c *EKS) WaitUntilNodegroupDeletedWithContext(ctx aws.Context, input *DescribeNodegroupInput, opts ...request.WaiterOption) error { - w := request.Waiter{ - Name: "WaitUntilNodegroupDeleted", - MaxAttempts: 40, - Delay: request.ConstantWaiterDelay(30 * time.Second), - Acceptors: []request.WaiterAcceptor{ - { - State: request.FailureWaiterState, - Matcher: request.PathWaiterMatch, Argument: "nodegroup.status", - Expected: "DELETE_FAILED", - }, - { - State: request.SuccessWaiterState, - Matcher: request.ErrorWaiterMatch, - Expected: "ResourceNotFoundException", - }, - }, - Logger: c.Config.Logger, - NewRequest: func(opts []request.Option) (*request.Request, error) { - var inCpy *DescribeNodegroupInput - if input != nil { - tmp := *input - inCpy = &tmp - } - req, _ := c.DescribeNodegroupRequest(inCpy) - req.SetContext(ctx) - req.ApplyOptions(opts...) - return req, nil - }, - } - w.ApplyOptions(opts...) - - return w.WaitWithContext(ctx) -} diff --git a/cluster-autoscaler/vendor/github.com/blang/semver/v4/go.mod b/cluster-autoscaler/vendor/github.com/blang/semver/v4/go.mod deleted file mode 100644 index 06d26221870..00000000000 --- a/cluster-autoscaler/vendor/github.com/blang/semver/v4/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/blang/semver/v4 - -go 1.14 diff --git a/cluster-autoscaler/vendor/github.com/cespare/xxhash/v2/go.mod b/cluster-autoscaler/vendor/github.com/cespare/xxhash/v2/go.mod deleted file mode 100644 index 49f67608bf6..00000000000 --- a/cluster-autoscaler/vendor/github.com/cespare/xxhash/v2/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/cespare/xxhash/v2 - -go 1.11 diff --git a/cluster-autoscaler/vendor/github.com/cespare/xxhash/v2/go.sum b/cluster-autoscaler/vendor/github.com/cespare/xxhash/v2/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/checkpoint-restore/go-criu/v5/go.mod b/cluster-autoscaler/vendor/github.com/checkpoint-restore/go-criu/v5/go.mod deleted file mode 100644 index cf4fea9f05e..00000000000 --- a/cluster-autoscaler/vendor/github.com/checkpoint-restore/go-criu/v5/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/checkpoint-restore/go-criu/v5 - -go 1.13 - -require ( - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c - google.golang.org/protobuf v1.27.1 -) diff --git a/cluster-autoscaler/vendor/github.com/checkpoint-restore/go-criu/v5/go.sum b/cluster-autoscaler/vendor/github.com/checkpoint-restore/go-criu/v5/go.sum deleted file mode 100644 index 789fdcb11aa..00000000000 --- a/cluster-autoscaler/vendor/github.com/checkpoint-restore/go-criu/v5/go.sum +++ /dev/null @@ -1,10 +0,0 @@ -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= diff --git a/cluster-autoscaler/vendor/github.com/cilium/ebpf/go.mod b/cluster-autoscaler/vendor/github.com/cilium/ebpf/go.mod deleted file mode 100644 index f5edf690ab0..00000000000 --- a/cluster-autoscaler/vendor/github.com/cilium/ebpf/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/cilium/ebpf - -go 1.16 - -require ( - github.com/frankban/quicktest v1.11.3 - github.com/google/go-cmp v0.5.4 - golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34 -) diff --git a/cluster-autoscaler/vendor/github.com/cilium/ebpf/go.sum b/cluster-autoscaler/vendor/github.com/cilium/ebpf/go.sum deleted file mode 100644 index 1ef5a4767e8..00000000000 --- a/cluster-autoscaler/vendor/github.com/cilium/ebpf/go.sum +++ /dev/null @@ -1,13 +0,0 @@ -github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34 h1:GkvMjFtXUmahfDtashnc1mnrCtuBVcwse5QV2lUk/tI= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/README.md b/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/README.md deleted file mode 100644 index 7c57e11295e..00000000000 --- a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/README.md +++ /dev/null @@ -1,18 +0,0 @@ -flocker-go -========== - -[![circleci](https://circleci.com/gh/ClusterHQ/flocker-go.svg)](https://circleci.com/gh/ClusterHQ/flocker-go) - -flocker-go implements the package `flocker` that will let you easily interact -with a Flocker Control Service. - -What can it do? ---------------- - -You can check the package documentation here: https://godoc.org/github.com/ClusterHQ/flocker-go - -TODO ----- - -- Define a proper interface `flockerClientable` with all the needed methods for - wrapping the Flocker API. diff --git a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/circle.yml b/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/circle.yml deleted file mode 100644 index 81b56c8f27f..00000000000 --- a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/circle.yml +++ /dev/null @@ -1,16 +0,0 @@ -machine: - timezone: - America/Los_Angeles - -# Output the test output to circle. -test: - pre: - - go get -u github.com/jstemmer/go-junit-report - override: - - go test -coverprofile=coverage.out -v -race ./... > test.out - - cat test.out | go-junit-report > report.xml - - go tool cover -func=coverage.out - post: - - mv test.out $CIRCLE_ARTIFACTS/ - - mv report.xml $CIRCLE_TEST_REPORTS/ - diff --git a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/client.go b/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/client.go deleted file mode 100644 index 7cdd71054cb..00000000000 --- a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/client.go +++ /dev/null @@ -1,376 +0,0 @@ -package flocker - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "net/http" - "time" -) - -// From https://github.com/ClusterHQ/flocker-docker-plugin/blob/master/flockerdockerplugin/adapter.py#L18 -const defaultVolumeSize = json.Number("107374182400") - -var ( - // A volume can take a long time to be available, if we don't want - // Kubernetes to wait forever we need to stop trying after some time, that - // time is defined here - timeoutWaitingForVolume = 2 * time.Minute - tickerWaitingForVolume = 5 * time.Second - - errStateNotFound = errors.New("State not found by Dataset ID") - errConfigurationNotFound = errors.New("Configuration not found by Name") - - errFlockerControlServiceHost = errors.New("The volume config must have a key CONTROL_SERVICE_HOST defined in the OtherAttributes field") - errFlockerControlServicePort = errors.New("The volume config must have a key CONTROL_SERVICE_PORT defined in the OtherAttributes field") - - errVolumeAlreadyExists = errors.New("The volume already exists") - errVolumeDoesNotExist = errors.New("The volume does not exist") - - errUpdatingDataset = errors.New("It was impossible to update the dataset") -) - -// Clientable exposes the needed methods to implement your own Flocker Client. -type Clientable interface { - CreateDataset(options *CreateDatasetOptions) (*DatasetState, error) - DeleteDataset(datasetID string) error - - GetDatasetState(datasetID string) (*DatasetState, error) - GetDatasetID(metaName string) (datasetID string, err error) - GetPrimaryUUID() (primaryUUID string, err error) - - ListNodes() (nodes []NodeState, err error) - - UpdatePrimaryForDataset(primaryUUID, datasetID string) (*DatasetState, error) -} - -// Client is a default Flocker Client. -type Client struct { - *http.Client - - schema string - host string - port int - version string - - clientIP string - - maximumSize json.Number -} - -var _ Clientable = &Client{} - -// NewClient creates a wrapper over http.Client to communicate with the flocker control service. -func NewClient(host string, port int, clientIP string, caCertPath, keyPath, certPath string) (*Client, error) { - client, err := newTLSClient(caCertPath, keyPath, certPath) - if err != nil { - return nil, err - } - - return &Client{ - Client: client, - schema: "https", - host: host, - port: port, - version: "v1", - maximumSize: defaultVolumeSize, - clientIP: clientIP, - }, nil -} - -/* -request do a request using the http.Client embedded to the control service -and returns the response or an error in case it happens. - -Note: you will need to deal with the response body call to Close if you -don't want to deal with problems later. -*/ -func (c Client) request(method, url string, payload interface{}) (*http.Response, error) { - var ( - b []byte - err error - ) - - if method == "POST" { // Just allow payload on POST - b, err = json.Marshal(payload) - if err != nil { - return nil, err - } - } - - req, err := http.NewRequest(method, url, bytes.NewBuffer(b)) - if err != nil { - return nil, err - } - req.Header.Set("Content-Type", "application/json") - - // REMEMBER TO CLOSE THE BODY IN THE OUTSIDE FUNCTION - return c.Do(req) -} - -// post performs a post request with the indicated payload -func (c Client) post(url string, payload interface{}) (*http.Response, error) { - return c.request("POST", url, payload) -} - -// delete performs a delete request with the indicated payload -func (c Client) delete(url string, payload interface{}) (*http.Response, error) { - return c.request("DELETE", url, payload) -} - -// get performs a get request -func (c Client) get(url string) (*http.Response, error) { - return c.request("GET", url, nil) -} - -// getURL returns a full URI to the control service -func (c Client) getURL(path string) string { - return fmt.Sprintf("%s://%s:%d/%s/%s", c.schema, c.host, c.port, c.version, path) -} - -type configurationPayload struct { - Deleted bool `json:"deleted"` - Primary string `json:"primary"` - DatasetID string `json:"dataset_id,omitempty"` - MaximumSize json.Number `json:"maximum_size,omitempty"` - Metadata metadataPayload `json:"metadata,omitempty"` -} - -type CreateDatasetOptions struct { - Primary string `json:"primary"` - DatasetID string `json:"dataset_id,omitempty"` - MaximumSize int64 `json:"maximum_size,omitempty"` - Metadata map[string]string `json:"metadata,omitempty"` -} - -type metadataPayload struct { - Name string `json:"name,omitempty"` -} - -type DatasetState struct { - Path string `json:"path"` - DatasetID string `json:"dataset_id"` - Primary string `json:"primary,omitempty"` - MaximumSize json.Number `json:"maximum_size,omitempty"` -} - -type datasetStatePayload struct { - *DatasetState -} - -type NodeState struct { - UUID string `json:"uuid"` - Host string `json:"host"` -} - -// findIDInConfigurationsPayload returns the datasetID if it was found in the -// configurations payload, otherwise it will return an error. -func (c Client) findIDInConfigurationsPayload(body io.ReadCloser, name string) (datasetID string, err error) { - var configurations []configurationPayload - if err = json.NewDecoder(body).Decode(&configurations); err == nil { - for _, r := range configurations { - if r.Metadata.Name == name { - return r.DatasetID, nil - } - } - return "", errConfigurationNotFound - } - return "", err -} - -// ListNodes returns a list of dataset agent nodes from Flocker Control Service -func (c *Client) ListNodes() (nodes []NodeState, err error) { - resp, err := c.get(c.getURL("state/nodes")) - if err != nil { - return []NodeState{}, err - } - defer resp.Body.Close() - if resp.StatusCode >= 300 { - return []NodeState{}, fmt.Errorf("Expected: {1,2}xx listing nodes, got: %d", resp.StatusCode) - } - - err = json.NewDecoder(resp.Body).Decode(&nodes) - if err != nil { - return []NodeState{}, err - } - return nodes, err -} - -// GetPrimaryUUID returns the UUID of the primary Flocker Control Service for -// the given host. -func (c Client) GetPrimaryUUID() (uuid string, err error) { - states, err := c.ListNodes() - if err != nil { - return "", err - } - - for _, s := range states { - if s.Host == c.clientIP { - return s.UUID, nil - } - } - return "", fmt.Errorf("No node found with IP '%s', available nodes %+v", c.clientIP, states) -} - -// DeleteDataset performs a delete request to the given datasetID -func (c *Client) DeleteDataset(datasetID string) error { - url := c.getURL(fmt.Sprintf("configuration/datasets/%s", datasetID)) - resp, err := c.delete(url, nil) - if err != nil { - return err - } - defer resp.Body.Close() - - if resp.StatusCode >= 300 { - return fmt.Errorf("Expected: {1,2}xx deleting the dataset %s, got: %d", datasetID, resp.StatusCode) - } - - return nil -} - -// GetDatasetState performs a get request to get the state of the given datasetID, if -// something goes wrong or the datasetID was not found it returns an error. -func (c Client) GetDatasetState(datasetID string) (*DatasetState, error) { - resp, err := c.get(c.getURL("state/datasets")) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - var states []datasetStatePayload - if err = json.NewDecoder(resp.Body).Decode(&states); err == nil { - for _, s := range states { - if s.DatasetID == datasetID { - return s.DatasetState, nil - } - } - return nil, errStateNotFound - } - - return nil, err -} - -/* -CreateDataset creates a volume in Flocker, waits for it to be ready and -returns the dataset id. - -This process is a little bit complex but follows this flow: - -1. Find the Flocker Control Service UUID -2. If it already exists an error is returned -3. If it didn't previously exist, wait for it to be ready -*/ -func (c *Client) CreateDataset(options *CreateDatasetOptions) (datasetState *DatasetState, err error) { - // 1) Find the primary Flocker UUID - // Note: it could be cached, but doing this query we health check it - if options.Primary == "" { - options.Primary, err = c.GetPrimaryUUID() - if err != nil { - return nil, err - } - } - - if options.MaximumSize == 0 { - options.MaximumSize, _ = c.maximumSize.Int64() - } - - resp, err := c.post(c.getURL("configuration/datasets"), options) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - // 2) Return if the dataset was previously created - if resp.StatusCode == http.StatusConflict { - return nil, errVolumeAlreadyExists - } - - if resp.StatusCode >= 300 { - return nil, fmt.Errorf("Expected: {1,2}xx creating the volume, got: %d", resp.StatusCode) - } - - var p configurationPayload - if err := json.NewDecoder(resp.Body).Decode(&p); err != nil { - return nil, err - } - - // 3) Wait until the dataset is ready for usage. In case it never gets - // ready there is a timeoutChan that will return an error - timeoutChan := time.NewTimer(timeoutWaitingForVolume).C - tickChan := time.NewTicker(tickerWaitingForVolume).C - - for { - var strErrDel string - s, err := c.GetDatasetState(p.DatasetID) - if err == nil { - return s, nil - } else if err != errStateNotFound { - errDel := c.DeleteDataset(p.DatasetID) - if errDel != nil { - strErrDel = fmt.Sprintf(", deletion of dataset failed with %s", errDel) - } - return nil, fmt.Errorf("Flocker API error during dataset creation (datasetID %s): %s%s", p.DatasetID, err, strErrDel) - } - - select { - case <-timeoutChan: - errDel := c.DeleteDataset(p.DatasetID) - if errDel != nil { - strErrDel = fmt.Sprintf(", deletion of dataset failed with %s", errDel) - } - return nil, fmt.Errorf("Flocker API timeout during dataset creation (datasetID %s): %s%s", p.DatasetID, err, strErrDel) - case <-tickChan: - break - } - } -} - -// UpdatePrimaryForDataset will update the Primary for the given dataset -// returning the current DatasetState. -func (c Client) UpdatePrimaryForDataset(newPrimaryUUID, datasetID string) (*DatasetState, error) { - payload := struct { - Primary string `json:"primary"` - }{ - Primary: newPrimaryUUID, - } - - url := c.getURL(fmt.Sprintf("configuration/datasets/%s", datasetID)) - resp, err := c.post(url, payload) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if resp.StatusCode >= 300 { - return nil, errUpdatingDataset - } - - var s DatasetState - if err := json.NewDecoder(resp.Body).Decode(&s); err != nil { - return nil, err - } - - return &s, nil -} - -// GetDatasetID will return the DatasetID found for the given metadata name. -func (c Client) GetDatasetID(metaName string) (datasetID string, err error) { - resp, err := c.get(c.getURL("configuration/datasets")) - if err != nil { - return "", err - } - defer resp.Body.Close() - - var configurations []configurationPayload - if err = json.NewDecoder(resp.Body).Decode(&configurations); err == nil { - for _, c := range configurations { - if c.Metadata.Name == metaName && c.Deleted == false { - return c.DatasetID, nil - } - } - return "", errConfigurationNotFound - } - return "", err -} diff --git a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/doc.go b/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/doc.go deleted file mode 100644 index f3cd05b0196..00000000000 --- a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/doc.go +++ /dev/null @@ -1,2 +0,0 @@ -// flocker package allows you to easily interact with a Flocker Control Service. -package flocker diff --git a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/util.go b/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/util.go deleted file mode 100644 index 8322ea8cd78..00000000000 --- a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/util.go +++ /dev/null @@ -1,34 +0,0 @@ -package flocker - -import ( - "crypto/tls" - "crypto/x509" - "io/ioutil" - "net/http" -) - -// newTLSClient returns a new TLS http client -func newTLSClient(caCertPath, keyPath, certPath string) (*http.Client, error) { - // Client certificate - cert, err := tls.LoadX509KeyPair(certPath, keyPath) - if err != nil { - return nil, err - } - - // CA certificate - caCert, err := ioutil.ReadFile(caCertPath) - if err != nil { - return nil, err - } - caCertPool := x509.NewCertPool() - caCertPool.AppendCertsFromPEM(caCert) - - tlsConfig := &tls.Config{ - Certificates: []tls.Certificate{cert}, - RootCAs: caCertPool, - } - tlsConfig.BuildNameToCertificate() - transport := &http.Transport{TLSClientConfig: tlsConfig} - - return &http.Client{Transport: transport}, nil -} diff --git a/cluster-autoscaler/vendor/github.com/containerd/console/go.mod b/cluster-autoscaler/vendor/github.com/containerd/console/go.mod deleted file mode 100644 index 1fe5b7fecb4..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/console/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/containerd/console - -go 1.13 - -require golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c diff --git a/cluster-autoscaler/vendor/github.com/containerd/console/go.sum b/cluster-autoscaler/vendor/github.com/containerd/console/go.sum deleted file mode 100644 index 1225630b7b6..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/console/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/version/v1/version.proto b/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/version/v1/version.proto deleted file mode 100644 index 0e4c3d1e081..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/version/v1/version.proto +++ /dev/null @@ -1,18 +0,0 @@ -syntax = "proto3"; - -package containerd.services.version.v1; - -import "google/protobuf/empty.proto"; -import weak "gogoproto/gogo.proto"; - -// TODO(stevvooe): Should version service actually be versioned? -option go_package = "github.com/containerd/containerd/api/services/version/v1;version"; - -service Version { - rpc Version(google.protobuf.Empty) returns (VersionResponse); -} - -message VersionResponse { - string version = 1; - string revision = 2; -} diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/metrics.proto b/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/metrics.proto deleted file mode 100644 index 0e631d2ac35..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/metrics.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package containerd.types; - -import weak "gogoproto/gogo.proto"; -import "google/protobuf/any.proto"; -import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/containerd/containerd/api/types;types"; - -message Metric { - google.protobuf.Timestamp timestamp = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; - string id = 2; - google.protobuf.Any data = 3; -} diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/platform.proto b/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/platform.proto deleted file mode 100644 index 4cf9834bdc4..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/platform.proto +++ /dev/null @@ -1,15 +0,0 @@ -syntax = "proto3"; - -package containerd.types; - -import weak "gogoproto/gogo.proto"; - -option go_package = "github.com/containerd/containerd/api/types;types"; - -// Platform follows the structure of the OCI platform specification, from -// descriptors. -message Platform { - string os = 1 [(gogoproto.customname) = "OS"]; - string architecture = 2; - string variant = 3; -} diff --git a/cluster-autoscaler/vendor/github.com/containerd/ttrpc/go.mod b/cluster-autoscaler/vendor/github.com/containerd/ttrpc/go.mod deleted file mode 100644 index 4ed7512f916..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/ttrpc/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module github.com/containerd/ttrpc - -go 1.13 - -require ( - github.com/gogo/protobuf v1.3.1 - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect - github.com/pkg/errors v0.9.1 - github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1 - github.com/sirupsen/logrus v1.4.2 - golang.org/x/sys v0.0.0-20200120151820-655fe14d7479 - google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24 - google.golang.org/grpc v1.26.0 -) diff --git a/cluster-autoscaler/vendor/github.com/containerd/ttrpc/go.sum b/cluster-autoscaler/vendor/github.com/containerd/ttrpc/go.sum deleted file mode 100644 index 8f641f4f891..00000000000 --- a/cluster-autoscaler/vendor/github.com/containerd/ttrpc/go.sum +++ /dev/null @@ -1,85 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -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/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -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/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -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/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= -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/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/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1 h1:Lo6mRUjdS99f3zxYOUalftWHUoOGaDRqFk1+j0Q57/I= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5 h1:f005F/Jl5JLP036x7QIvUVhNTqxvSYwFIiyOh2q12iU= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479 h1:LhLiKguPgZL+Tglay4GhVtfF0kb8cvOJ0dHTCBO8YNI= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69 h1:4rNOqY4ULrKzS6twXa619uQgI7h9PaVd4ZhjFQ7C5zs= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24 h1:wDju+RU97qa0FZT0QnZDg9Uc2dH0Ql513kFvHocz+WM= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.21.0 h1:G+97AoqBnmZIT91cLG/EkCoK9NSelj64P8bOHHNmGn0= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cluster-autoscaler/vendor/github.com/cyphar/filepath-securejoin/go.mod b/cluster-autoscaler/vendor/github.com/cyphar/filepath-securejoin/go.mod deleted file mode 100644 index 0607c1fa060..00000000000 --- a/cluster-autoscaler/vendor/github.com/cyphar/filepath-securejoin/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/cyphar/filepath-securejoin - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/digitalocean/godo/go.mod b/cluster-autoscaler/vendor/github.com/digitalocean/godo/go.mod deleted file mode 100644 index a8af42bdad7..00000000000 --- a/cluster-autoscaler/vendor/github.com/digitalocean/godo/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/digitalocean/godo - -go 1.13 - -require ( - github.com/google/go-querystring v1.0.0 - github.com/stretchr/testify v1.3.0 - golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a -) diff --git a/cluster-autoscaler/vendor/github.com/digitalocean/godo/go.sum b/cluster-autoscaler/vendor/github.com/digitalocean/godo/go.sum deleted file mode 100644 index ace703edd89..00000000000 --- a/cluster-autoscaler/vendor/github.com/digitalocean/godo/go.sum +++ /dev/null @@ -1,22 +0,0 @@ -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e h1:bRhVy7zSSasaqNksaRZiA5EEI+Ei4I1nO5Jh72wfHlg= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -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-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= diff --git a/cluster-autoscaler/vendor/github.com/dimchansky/utfbom/go.mod b/cluster-autoscaler/vendor/github.com/dimchansky/utfbom/go.mod deleted file mode 100644 index 8f8620af3b5..00000000000 --- a/cluster-autoscaler/vendor/github.com/dimchansky/utfbom/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/dimchansky/utfbom diff --git a/cluster-autoscaler/vendor/github.com/emicklei/go-restful/v3/go.mod b/cluster-autoscaler/vendor/github.com/emicklei/go-restful/v3/go.mod deleted file mode 100644 index 325c09bc40c..00000000000 --- a/cluster-autoscaler/vendor/github.com/emicklei/go-restful/v3/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/emicklei/go-restful/v3 - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/felixge/httpsnoop/go.mod b/cluster-autoscaler/vendor/github.com/felixge/httpsnoop/go.mod deleted file mode 100644 index 73b3946905a..00000000000 --- a/cluster-autoscaler/vendor/github.com/felixge/httpsnoop/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/felixge/httpsnoop - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/fsnotify/fsnotify/go.mod b/cluster-autoscaler/vendor/github.com/fsnotify/fsnotify/go.mod deleted file mode 100644 index 48cfd07fe23..00000000000 --- a/cluster-autoscaler/vendor/github.com/fsnotify/fsnotify/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/fsnotify/fsnotify - -go 1.16 - -require golang.org/x/sys v0.0.0-20220412211240-33da011f77ad - -retract ( - v1.5.3 // Published an incorrect branch accidentally https://github.com/fsnotify/fsnotify/issues/445 - v1.5.0 // Contains symlink regression https://github.com/fsnotify/fsnotify/pull/394 -) diff --git a/cluster-autoscaler/vendor/github.com/fsnotify/fsnotify/go.sum b/cluster-autoscaler/vendor/github.com/fsnotify/fsnotify/go.sum deleted file mode 100644 index 7f2d82d5c1b..00000000000 --- a/cluster-autoscaler/vendor/github.com/fsnotify/fsnotify/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/cluster-autoscaler/vendor/github.com/go-logr/logr/go.mod b/cluster-autoscaler/vendor/github.com/go-logr/logr/go.mod deleted file mode 100644 index 7baec9b5707..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-logr/logr/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/go-logr/logr - -go 1.16 diff --git a/cluster-autoscaler/vendor/github.com/go-openapi/jsonpointer/go.mod b/cluster-autoscaler/vendor/github.com/go-openapi/jsonpointer/go.mod deleted file mode 100644 index 3e45e225b5d..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-openapi/jsonpointer/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/go-openapi/jsonpointer - -require ( - github.com/go-openapi/swag v0.19.5 - github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e // indirect - github.com/stretchr/testify v1.3.0 -) - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/go-openapi/jsonpointer/go.sum b/cluster-autoscaler/vendor/github.com/go-openapi/jsonpointer/go.sum deleted file mode 100644 index 953d4f354e5..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-openapi/jsonpointer/go.sum +++ /dev/null @@ -1,24 +0,0 @@ -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/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 h1:nTT4s92Dgz2HlrB2NaMgvlfqHH39OgMhA7z3PK7PGD4= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/cluster-autoscaler/vendor/github.com/go-openapi/jsonreference/go.mod b/cluster-autoscaler/vendor/github.com/go-openapi/jsonreference/go.mod deleted file mode 100644 index e6c2ec4d929..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-openapi/jsonreference/go.mod +++ /dev/null @@ -1,12 +0,0 @@ -module github.com/go-openapi/jsonreference - -require ( - github.com/PuerkitoBio/purell v1.1.1 - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect - github.com/go-openapi/jsonpointer v0.19.3 - github.com/stretchr/testify v1.3.0 - golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect - golang.org/x/text v0.3.3 // indirect -) - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/go-openapi/jsonreference/go.sum b/cluster-autoscaler/vendor/github.com/go-openapi/jsonreference/go.sum deleted file mode 100644 index b37f873e553..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-openapi/jsonreference/go.sum +++ /dev/null @@ -1,38 +0,0 @@ -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= -github.com/PuerkitoBio/purell v1.1.1/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/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/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63 h1:nTT4s92Dgz2HlrB2NaMgvlfqHH39OgMhA7z3PK7PGD4= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/cluster-autoscaler/vendor/github.com/go-openapi/swag/go.mod b/cluster-autoscaler/vendor/github.com/go-openapi/swag/go.mod deleted file mode 100644 index fb29b65b256..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-openapi/swag/go.mod +++ /dev/null @@ -1,18 +0,0 @@ -module github.com/go-openapi/swag - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/mailru/easyjson v0.7.6 - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect - github.com/stretchr/testify v1.6.1 - gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect - gopkg.in/yaml.v2 v2.4.0 - gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 // indirect -) - -replace github.com/golang/lint => golang.org/x/lint v0.0.0-20190409202823-959b441ac422 - -replace sourcegraph.com/sourcegraph/go-diff => github.com/sourcegraph/go-diff v0.5.1 - -go 1.11 diff --git a/cluster-autoscaler/vendor/github.com/go-openapi/swag/go.sum b/cluster-autoscaler/vendor/github.com/go-openapi/swag/go.sum deleted file mode 100644 index a45da809afa..00000000000 --- a/cluster-autoscaler/vendor/github.com/go-openapi/swag/go.sum +++ /dev/null @@ -1,29 +0,0 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -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/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/github.com/godbus/dbus/v5/go.mod b/cluster-autoscaler/vendor/github.com/godbus/dbus/v5/go.mod deleted file mode 100644 index 15b920203c5..00000000000 --- a/cluster-autoscaler/vendor/github.com/godbus/dbus/v5/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/godbus/dbus/v5 - -go 1.12 diff --git a/cluster-autoscaler/vendor/github.com/godbus/dbus/v5/go.sum b/cluster-autoscaler/vendor/github.com/godbus/dbus/v5/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/golang-jwt/jwt/v4/go.mod b/cluster-autoscaler/vendor/github.com/golang-jwt/jwt/v4/go.mod deleted file mode 100644 index 6bc53fdcb93..00000000000 --- a/cluster-autoscaler/vendor/github.com/golang-jwt/jwt/v4/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/golang-jwt/jwt/v4 - -go 1.15 diff --git a/cluster-autoscaler/vendor/github.com/golang-jwt/jwt/v4/go.sum b/cluster-autoscaler/vendor/github.com/golang-jwt/jwt/v4/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/common/helpers.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/common/helpers.go index 2b232f6ac55..e028f279cfc 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/common/helpers.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/common/helpers.go @@ -210,7 +210,8 @@ func getSpecInternal(cgroupPaths map[string]string, machineInfoFactory info.Mach if cgroup2UnifiedMode { ioControllerName = "io" } - if blkioRoot, ok := cgroupPaths[ioControllerName]; ok && utils.FileExists(blkioRoot) { + + if blkioRoot, ok := GetControllerPath(cgroupPaths, ioControllerName, cgroup2UnifiedMode); ok && utils.FileExists(blkioRoot) { spec.HasDiskIo = true } diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/containerd/client.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/containerd/client.go index c4921a5b7a5..0c3dc2ce06e 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/containerd/client.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/containerd/client.go @@ -22,16 +22,17 @@ import ( "sync" "time" - containersapi "github.com/containerd/containerd/api/services/containers/v1" - tasksapi "github.com/containerd/containerd/api/services/tasks/v1" - versionapi "github.com/containerd/containerd/api/services/version/v1" - tasktypes "github.com/containerd/containerd/api/types/task" ptypes "github.com/gogo/protobuf/types" + "google.golang.org/grpc" + "google.golang.org/grpc/backoff" + "github.com/google/cadvisor/container/containerd/containers" "github.com/google/cadvisor/container/containerd/errdefs" "github.com/google/cadvisor/container/containerd/pkg/dialer" - "google.golang.org/grpc" - "google.golang.org/grpc/backoff" + containersapi "github.com/google/cadvisor/third_party/containerd/api/services/containers/v1" + tasksapi "github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1" + versionapi "github.com/google/cadvisor/third_party/containerd/api/services/version/v1" + tasktypes "github.com/google/cadvisor/third_party/containerd/api/types/task" ) type client struct { diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/client.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/client.go index e0d63333c34..ca65ba1ad48 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/client.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/container/crio/client.go @@ -18,6 +18,7 @@ import ( "context" "encoding/json" "fmt" + "io/ioutil" "net" "net/http" "sync" @@ -141,7 +142,11 @@ func (c *crioClientImpl) ContainerInfo(id string) (*ContainerInfo, error) { // golang's http.Do doesn't return an error if non 200 response code is returned // handle this case here, rather than failing to decode the body if resp.StatusCode != http.StatusOK { - return nil, fmt.Errorf("Error finding container %s: Status %d returned error %s", id, resp.StatusCode, resp.Body) + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("Error finding container %s: Status %d", id, resp.StatusCode) + } + return nil, fmt.Errorf("Error finding container %s: Status %d returned error %s", id, resp.StatusCode, string(respBody)) } if err := json.NewDecoder(resp.Body).Decode(&cInfo); err != nil { diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/info/v2/container.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/info/v2/container.go index 4ee3b817939..15fb79b9ea4 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/info/v2/container.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/info/v2/container.go @@ -265,7 +265,7 @@ type FsInfo struct { type RequestOptions struct { // Type of container identifier specified - TypeName (default) or TypeDocker IdType string `json:"type"` - // Number of stats to return + // Number of stats to return, -1 means no limit. Count int `json:"count"` // Whether to include stats for child subcontainers. Recursive bool `json:"recursive"` diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/manager.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/manager.go index 5ef1dff8fea..980e0a3863a 100644 --- a/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/manager.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/manager/manager.go @@ -155,9 +155,7 @@ func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs, houskeepingConfig selfContainer := "/" var err error // Avoid using GetOwnCgroupPath on cgroup v2 as it is not supported by libcontainer - if cgroups.IsCgroup2UnifiedMode() { - klog.Warningf("Cannot detect current cgroup on cgroup v2") - } else { + if !cgroups.IsCgroup2UnifiedMode() { selfContainer, err = cgroups.GetOwnCgroup("cpu") if err != nil { return nil, err diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/LICENSE b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/LICENSE similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/LICENSE rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/LICENSE diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/NOTICE b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/NOTICE similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/NOTICE rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/NOTICE diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/containers/v1/containers.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/containers.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/containers/v1/containers.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/containers.pb.go diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/containers/v1/containers.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/containers.proto similarity index 91% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/containers/v1/containers.proto rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/containers.proto index d491f46cfa1..36ab177de77 100644 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/containers/v1/containers.proto +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/containers.proto @@ -1,3 +1,19 @@ +/* + 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. +*/ + syntax = "proto3"; package containerd.services.containers.v1; diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/doc.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/doc.go new file mode 100644 index 00000000000..a6ef491ce5f --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/containers/v1/doc.go @@ -0,0 +1,17 @@ +/* + 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 containers diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/doc.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/doc.go new file mode 100644 index 00000000000..0888ba8a85f --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/doc.go @@ -0,0 +1,17 @@ +/* + 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 tasks diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/tasks.pb.go similarity index 92% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/tasks.pb.go index 484b469c6e4..096e389db1f 100644 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.pb.go +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/tasks.pb.go @@ -6,9 +6,10 @@ package tasks import ( context "context" fmt "fmt" - types "github.com/containerd/containerd/api/types" - task "github.com/containerd/containerd/api/types/task" + types "github.com/google/cadvisor/third_party/containerd/api/types" + task "github.com/google/cadvisor/third_party/containerd/api/types/task" proto "github.com/gogo/protobuf/proto" + github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys" github_com_gogo_protobuf_types "github.com/gogo/protobuf/types" types1 "github.com/gogo/protobuf/types" github_com_opencontainers_go_digest "github.com/opencontainers/go-digest" @@ -50,6 +51,7 @@ type CreateTaskRequest struct { Terminal bool `protobuf:"varint,7,opt,name=terminal,proto3" json:"terminal,omitempty"` Checkpoint *types.Descriptor `protobuf:"bytes,8,opt,name=checkpoint,proto3" json:"checkpoint,omitempty"` Options *types1.Any `protobuf:"bytes,9,opt,name=options,proto3" json:"options,omitempty"` + RuntimePath string `protobuf:"bytes,10,opt,name=runtime_path,json=runtimePath,proto3" json:"runtime_path,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -934,11 +936,12 @@ func (m *CheckpointTaskResponse) XXX_DiscardUnknown() { var xxx_messageInfo_CheckpointTaskResponse proto.InternalMessageInfo type UpdateTaskRequest struct { - ContainerID string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` - Resources *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ContainerID string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + Resources *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"` + Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *UpdateTaskRequest) Reset() { *m = UpdateTaskRequest{} } @@ -1155,6 +1158,7 @@ func init() { proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.services.tasks.v1.CheckpointTaskRequest") proto.RegisterType((*CheckpointTaskResponse)(nil), "containerd.services.tasks.v1.CheckpointTaskResponse") proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.services.tasks.v1.UpdateTaskRequest") + proto.RegisterMapType((map[string]string)(nil), "containerd.services.tasks.v1.UpdateTaskRequest.AnnotationsEntry") proto.RegisterType((*MetricsRequest)(nil), "containerd.services.tasks.v1.MetricsRequest") proto.RegisterType((*MetricsResponse)(nil), "containerd.services.tasks.v1.MetricsResponse") proto.RegisterType((*WaitRequest)(nil), "containerd.services.tasks.v1.WaitRequest") @@ -1166,90 +1170,95 @@ func init() { } var fileDescriptor_310e7127b8a26f14 = []byte{ - // 1318 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0x1b, 0x45, - 0x1c, 0xef, 0xfa, 0xed, 0xbf, 0x93, 0x36, 0x59, 0xd2, 0x60, 0x96, 0x2a, 0x0e, 0xcb, 0xc5, 0x04, - 0xba, 0x4b, 0x5d, 0x54, 0x21, 0x5a, 0x21, 0x35, 0x0f, 0x22, 0x0b, 0xaa, 0xa6, 0xdb, 0x02, 0x55, - 0x25, 0x14, 0xb6, 0xbb, 0x13, 0x67, 0x14, 0x7b, 0x67, 0xbb, 0x33, 0x4e, 0x1b, 0x38, 0xc0, 0x47, - 0xe8, 0x95, 0x0b, 0x9f, 0x27, 0x47, 0x8e, 0x08, 0x55, 0x81, 0xfa, 0x5b, 0x70, 0x43, 0xf3, 0xd8, - 0xcd, 0xc6, 0x8e, 0xbd, 0x4e, 0xd3, 0x70, 0x69, 0x67, 0x66, 0xff, 0xaf, 0xf9, 0xcd, 0xff, 0xf1, - 0x73, 0x60, 0xb5, 0x83, 0xd9, 0x6e, 0xff, 0xa9, 0xe5, 0x91, 0x9e, 0xed, 0x91, 0x80, 0xb9, 0x38, - 0x40, 0x91, 0x9f, 0x5e, 0xba, 0x21, 0xb6, 0x29, 0x8a, 0xf6, 0xb1, 0x87, 0xa8, 0xcd, 0x5c, 0xba, - 0x47, 0xed, 0xfd, 0x1b, 0x72, 0x61, 0x85, 0x11, 0x61, 0x44, 0xbf, 0x76, 0x2c, 0x6d, 0xc5, 0x92, - 0x96, 0x14, 0xd8, 0xbf, 0x61, 0xbc, 0xdf, 0x21, 0xa4, 0xd3, 0x45, 0xb6, 0x90, 0x7d, 0xda, 0xdf, - 0xb1, 0x51, 0x2f, 0x64, 0x07, 0x52, 0xd5, 0x78, 0x6f, 0xf8, 0xa3, 0x1b, 0xc4, 0x9f, 0x16, 0x3a, - 0xa4, 0x43, 0xc4, 0xd2, 0xe6, 0x2b, 0x75, 0x7a, 0x6b, 0xaa, 0x78, 0xd9, 0x41, 0x88, 0xa8, 0xdd, - 0x23, 0xfd, 0x80, 0x29, 0xbd, 0xcf, 0xcf, 0xa2, 0x87, 0x58, 0x84, 0x3d, 0x75, 0x3b, 0xe3, 0xf6, - 0x19, 0x34, 0x7d, 0x44, 0xbd, 0x08, 0x87, 0x8c, 0x44, 0x4a, 0xf9, 0x8b, 0x33, 0x28, 0x73, 0xc4, - 0xc4, 0x3f, 0x4a, 0xb7, 0x31, 0x8c, 0x0d, 0xc3, 0x3d, 0x44, 0x99, 0xdb, 0x0b, 0xa5, 0x80, 0x79, - 0x98, 0x83, 0xf9, 0xb5, 0x08, 0xb9, 0x0c, 0x3d, 0x72, 0xe9, 0x9e, 0x83, 0x9e, 0xf5, 0x11, 0x65, - 0x7a, 0x0b, 0x66, 0x12, 0xf3, 0xdb, 0xd8, 0xaf, 0x6b, 0xcb, 0x5a, 0xb3, 0xba, 0x7a, 0x65, 0x70, - 0xd4, 0xa8, 0xad, 0xc5, 0xe7, 0xed, 0x75, 0xa7, 0x96, 0x08, 0xb5, 0x7d, 0xdd, 0x86, 0x52, 0x44, - 0x08, 0xdb, 0xa1, 0xf5, 0xfc, 0x72, 0xbe, 0x59, 0x6b, 0xbd, 0x6b, 0xa5, 0x9e, 0x54, 0x44, 0x67, - 0xdd, 0xe3, 0x60, 0x3a, 0x4a, 0x4c, 0x5f, 0x80, 0x22, 0x65, 0x3e, 0x0e, 0xea, 0x05, 0x6e, 0xdd, - 0x91, 0x1b, 0x7d, 0x11, 0x4a, 0x94, 0xf9, 0xa4, 0xcf, 0xea, 0x45, 0x71, 0xac, 0x76, 0xea, 0x1c, - 0x45, 0x51, 0xbd, 0x94, 0x9c, 0xa3, 0x28, 0xd2, 0x0d, 0xa8, 0x30, 0x14, 0xf5, 0x70, 0xe0, 0x76, - 0xeb, 0xe5, 0x65, 0xad, 0x59, 0x71, 0x92, 0xbd, 0x7e, 0x07, 0xc0, 0xdb, 0x45, 0xde, 0x5e, 0x48, - 0x70, 0xc0, 0xea, 0x95, 0x65, 0xad, 0x59, 0x6b, 0x5d, 0x1b, 0x0d, 0x6b, 0x3d, 0x41, 0xdc, 0x49, - 0xc9, 0xeb, 0x16, 0x94, 0x49, 0xc8, 0x30, 0x09, 0x68, 0xbd, 0x2a, 0x54, 0x17, 0x2c, 0x89, 0xa6, - 0x15, 0xa3, 0x69, 0xdd, 0x0d, 0x0e, 0x9c, 0x58, 0xc8, 0x7c, 0x02, 0x7a, 0x1a, 0x49, 0x1a, 0x92, - 0x80, 0xa2, 0x37, 0x82, 0x72, 0x0e, 0xf2, 0x21, 0xf6, 0xeb, 0xb9, 0x65, 0xad, 0x39, 0xeb, 0xf0, - 0xa5, 0xd9, 0x81, 0x99, 0x87, 0xcc, 0x8d, 0xd8, 0x79, 0x1e, 0xe8, 0x43, 0x28, 0xa3, 0x17, 0xc8, - 0xdb, 0x56, 0x96, 0xab, 0xab, 0x30, 0x38, 0x6a, 0x94, 0x36, 0x5e, 0x20, 0xaf, 0xbd, 0xee, 0x94, - 0xf8, 0xa7, 0xb6, 0x6f, 0x7e, 0x00, 0xb3, 0xca, 0x91, 0x8a, 0x5f, 0xc5, 0xa2, 0x1d, 0xc7, 0xb2, - 0x09, 0xf3, 0xeb, 0xa8, 0x8b, 0xce, 0x9d, 0x31, 0xe6, 0xef, 0x1a, 0x5c, 0x96, 0x96, 0x12, 0x6f, - 0x8b, 0x90, 0x4b, 0x94, 0x4b, 0x83, 0xa3, 0x46, 0xae, 0xbd, 0xee, 0xe4, 0xf0, 0x29, 0x88, 0xe8, - 0x0d, 0xa8, 0xa1, 0x17, 0x98, 0x6d, 0x53, 0xe6, 0xb2, 0x3e, 0xcf, 0x39, 0xfe, 0x05, 0xf8, 0xd1, - 0x43, 0x71, 0xa2, 0xdf, 0x85, 0x2a, 0xdf, 0x21, 0x7f, 0xdb, 0x65, 0x22, 0xc5, 0x6a, 0x2d, 0x63, - 0xe4, 0x01, 0x1f, 0xc5, 0xe5, 0xb0, 0x5a, 0x39, 0x3c, 0x6a, 0x5c, 0x7a, 0xf9, 0x77, 0x43, 0x73, - 0x2a, 0x52, 0xed, 0x2e, 0x33, 0x09, 0x2c, 0xc8, 0xf8, 0xb6, 0x22, 0xe2, 0x21, 0x4a, 0x2f, 0x1c, - 0x7d, 0x04, 0xb0, 0x89, 0x2e, 0xfe, 0x91, 0x37, 0xa0, 0x26, 0xdc, 0x28, 0xd0, 0x6f, 0x41, 0x39, - 0x94, 0x17, 0x14, 0x2e, 0x86, 0x6a, 0x64, 0xff, 0x86, 0x2a, 0x93, 0x18, 0x84, 0x58, 0xd8, 0x5c, - 0x81, 0xb9, 0x6f, 0x30, 0x65, 0x3c, 0x0d, 0x12, 0x68, 0x16, 0xa1, 0xb4, 0x83, 0xbb, 0x0c, 0x45, - 0x32, 0x5a, 0x47, 0xed, 0x78, 0xd2, 0xa4, 0x64, 0x93, 0xda, 0x28, 0x8a, 0x16, 0x5f, 0xd7, 0x44, - 0xc7, 0x98, 0xec, 0x56, 0x8a, 0x9a, 0x2f, 0x35, 0xa8, 0x7d, 0x8d, 0xbb, 0xdd, 0x8b, 0x06, 0x49, - 0x34, 0x1c, 0xdc, 0xe1, 0x6d, 0x45, 0xe6, 0x96, 0xda, 0xf1, 0x54, 0x74, 0xbb, 0x5d, 0x91, 0x51, - 0x15, 0x87, 0x2f, 0xcd, 0x7f, 0x35, 0xd0, 0xb9, 0xf2, 0x5b, 0xc8, 0x92, 0xa4, 0x27, 0xe6, 0x4e, - 0xef, 0x89, 0xf9, 0x31, 0x3d, 0xb1, 0x30, 0xb6, 0x27, 0x16, 0x87, 0x7a, 0x62, 0x13, 0x0a, 0x34, - 0x44, 0x9e, 0xe8, 0xa2, 0xe3, 0x5a, 0x9a, 0x90, 0x48, 0xa3, 0x54, 0x1e, 0x9b, 0x4a, 0x57, 0xe1, - 0x9d, 0x13, 0x57, 0x97, 0x2f, 0x6b, 0xfe, 0xa6, 0xc1, 0x9c, 0x83, 0x28, 0xfe, 0x09, 0x6d, 0xb1, - 0x83, 0x0b, 0x7f, 0xaa, 0x05, 0x28, 0x3e, 0xc7, 0x3e, 0xdb, 0x55, 0x2f, 0x25, 0x37, 0x1c, 0x9d, - 0x5d, 0x84, 0x3b, 0xbb, 0xb2, 0xfa, 0x67, 0x1d, 0xb5, 0x33, 0x7f, 0x81, 0xcb, 0x6b, 0x5d, 0x42, - 0x51, 0xfb, 0xfe, 0xff, 0x11, 0x98, 0x7c, 0xce, 0xbc, 0x78, 0x05, 0xb9, 0x31, 0xbf, 0x82, 0xb9, - 0x2d, 0xb7, 0x4f, 0xcf, 0xdd, 0x3f, 0x37, 0x61, 0xde, 0x41, 0xb4, 0xdf, 0x3b, 0xb7, 0xa1, 0x0d, - 0xb8, 0xc2, 0x8b, 0x73, 0x0b, 0xfb, 0xe7, 0x49, 0x5e, 0xd3, 0x91, 0xfd, 0x40, 0x9a, 0x51, 0x25, - 0xfe, 0x25, 0x54, 0x55, 0xbb, 0x40, 0x71, 0x99, 0x2f, 0x4f, 0x2a, 0xf3, 0x76, 0xb0, 0x43, 0x9c, - 0x63, 0x15, 0xf3, 0x95, 0x06, 0x57, 0xd7, 0x92, 0x99, 0x7c, 0x5e, 0x8e, 0xb2, 0x0d, 0xf3, 0xa1, - 0x1b, 0xa1, 0x80, 0x6d, 0xa7, 0x78, 0x81, 0x7c, 0xbe, 0x16, 0xef, 0xff, 0x7f, 0x1d, 0x35, 0x56, - 0x52, 0x6c, 0x8b, 0x84, 0x28, 0x48, 0xd4, 0xa9, 0xdd, 0x21, 0xd7, 0x7d, 0xdc, 0x41, 0x94, 0x59, - 0xeb, 0xe2, 0x3f, 0x67, 0x4e, 0x1a, 0x5b, 0x3b, 0x95, 0x33, 0xe4, 0xa7, 0xe1, 0x0c, 0x8f, 0x61, - 0x71, 0xf8, 0x76, 0x09, 0x70, 0xb5, 0x63, 0x26, 0x78, 0x6a, 0x87, 0x1c, 0x21, 0x2f, 0x69, 0x05, - 0xf3, 0x67, 0x98, 0xff, 0x36, 0xf4, 0xdf, 0x02, 0xaf, 0x6b, 0x41, 0x35, 0x42, 0x94, 0xf4, 0x23, - 0x0f, 0x51, 0x81, 0xd5, 0xb8, 0x4b, 0x1d, 0x8b, 0x99, 0x2b, 0x70, 0xf9, 0x9e, 0x24, 0xc0, 0xb1, - 0xe7, 0x3a, 0x94, 0xe5, 0x24, 0x90, 0x57, 0xa9, 0x3a, 0xf1, 0x96, 0x27, 0x5f, 0x22, 0x9b, 0xcc, - 0x85, 0xb2, 0xe2, 0xcf, 0xea, 0xde, 0xf5, 0x53, 0xb8, 0xa4, 0x10, 0x70, 0x62, 0x41, 0x73, 0x07, - 0x6a, 0xdf, 0xbb, 0xf8, 0xe2, 0x67, 0x67, 0x04, 0x33, 0xd2, 0x8f, 0x8a, 0x75, 0x88, 0x87, 0x68, - 0x93, 0x79, 0x48, 0xee, 0x4d, 0x78, 0x48, 0xeb, 0xd5, 0x0c, 0x14, 0xc5, 0xe4, 0xd4, 0xf7, 0xa0, - 0x24, 0x39, 0xa6, 0x6e, 0x5b, 0x93, 0x7e, 0x31, 0x59, 0x23, 0x9c, 0xde, 0xf8, 0x74, 0x7a, 0x05, - 0x75, 0xb5, 0x1f, 0xa1, 0x28, 0xb8, 0xa0, 0xbe, 0x32, 0x59, 0x35, 0xcd, 0x4c, 0x8d, 0x8f, 0xa7, - 0x92, 0x55, 0x1e, 0x3a, 0x50, 0x92, 0x04, 0x2b, 0xeb, 0x3a, 0x23, 0x84, 0xd3, 0xf8, 0x64, 0x1a, - 0x85, 0xc4, 0xd1, 0x33, 0x98, 0x3d, 0xc1, 0xe4, 0xf4, 0xd6, 0x34, 0xea, 0x27, 0x07, 0xfa, 0x19, - 0x5d, 0x3e, 0x81, 0xfc, 0x26, 0x62, 0x7a, 0x73, 0xb2, 0xd2, 0x31, 0xdd, 0x33, 0x3e, 0x9a, 0x42, - 0x32, 0xc1, 0xad, 0xc0, 0x3b, 0xad, 0x6e, 0x4d, 0x56, 0x19, 0x66, 0x67, 0x86, 0x3d, 0xb5, 0xbc, - 0x72, 0xd4, 0x86, 0x02, 0x27, 0x5b, 0x7a, 0x46, 0x6c, 0x29, 0x42, 0x66, 0x2c, 0x8e, 0x24, 0xf7, - 0x06, 0xff, 0xb1, 0xae, 0x6f, 0x41, 0x81, 0x97, 0x92, 0x9e, 0x91, 0x87, 0xa3, 0x44, 0x6a, 0xac, - 0xc5, 0x87, 0x50, 0x4d, 0x38, 0x46, 0x16, 0x14, 0xc3, 0x64, 0x64, 0xac, 0xd1, 0xfb, 0x50, 0x56, - 0xec, 0x40, 0xcf, 0x78, 0xef, 0x93, 0x24, 0x62, 0x82, 0xc1, 0xa2, 0x98, 0xf6, 0x59, 0x11, 0x0e, - 0x53, 0x82, 0xb1, 0x06, 0x1f, 0x40, 0x49, 0x8e, 0xfd, 0xac, 0xa2, 0x19, 0x21, 0x07, 0x63, 0x4d, - 0x62, 0xa8, 0xc4, 0x93, 0x5b, 0xbf, 0x9e, 0x9d, 0x23, 0x29, 0xa2, 0x60, 0x58, 0xd3, 0x8a, 0xab, - 0x8c, 0x7a, 0x0e, 0x90, 0x9a, 0x97, 0x37, 0x33, 0x20, 0x3e, 0x6d, 0xf2, 0x1b, 0x9f, 0x9d, 0x4d, - 0x49, 0x39, 0x7e, 0x00, 0x25, 0x39, 0x10, 0xb3, 0x60, 0x1b, 0x19, 0x9b, 0x63, 0x61, 0xdb, 0x81, - 0xb2, 0x1a, 0x5d, 0x59, 0xb9, 0x72, 0x72, 0x1a, 0x1a, 0xd7, 0xa7, 0x94, 0x56, 0xa1, 0xff, 0x00, - 0x05, 0x3e, 0x73, 0xb2, 0xaa, 0x30, 0x35, 0xff, 0x8c, 0x95, 0x69, 0x44, 0xa5, 0xf9, 0xd5, 0xef, - 0x0e, 0x5f, 0x2f, 0x5d, 0xfa, 0xf3, 0xf5, 0xd2, 0xa5, 0x5f, 0x07, 0x4b, 0xda, 0xe1, 0x60, 0x49, - 0xfb, 0x63, 0xb0, 0xa4, 0xfd, 0x33, 0x58, 0xd2, 0x9e, 0xdc, 0x79, 0xb3, 0xbf, 0xec, 0xdd, 0x16, - 0x8b, 0xc7, 0xb9, 0xa7, 0x25, 0x01, 0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa2, - 0x4f, 0xd1, 0x22, 0x14, 0x00, 0x00, + // 1400 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x6f, 0x1b, 0x45, + 0x14, 0xee, 0xfa, 0xee, 0xe3, 0xa4, 0x4d, 0x96, 0x34, 0x98, 0xa5, 0x8a, 0xd3, 0xe5, 0xc5, 0x04, + 0xba, 0xa6, 0x2e, 0xaa, 0xaa, 0xb6, 0xaa, 0xc8, 0x8d, 0xc8, 0x82, 0xaa, 0xe9, 0xb6, 0x40, 0x55, + 0x09, 0x99, 0x8d, 0x77, 0x62, 0x8f, 0x62, 0xef, 0x6c, 0x77, 0xc6, 0x69, 0xcd, 0x0b, 0xfc, 0x84, + 0xbe, 0xf2, 0x02, 0x7f, 0xa7, 0x8f, 0x3c, 0x22, 0x54, 0x05, 0xea, 0x57, 0x7e, 0x01, 0x6f, 0x68, + 0x2e, 0xbb, 0xde, 0xd8, 0xf1, 0x25, 0x4d, 0xc3, 0x4b, 0x3b, 0x33, 0x7b, 0xce, 0x99, 0x33, 0xdf, + 0xb9, 0x7d, 0x0e, 0x6c, 0x34, 0x31, 0x6b, 0x75, 0xf7, 0xac, 0x06, 0xe9, 0x54, 0x1a, 0xc4, 0x63, + 0x0e, 0xf6, 0x50, 0xe0, 0xc6, 0x97, 0x8e, 0x8f, 0x2b, 0x14, 0x05, 0x87, 0xb8, 0x81, 0x68, 0x85, + 0x39, 0xf4, 0x80, 0x56, 0x0e, 0xaf, 0xcb, 0x85, 0xe5, 0x07, 0x84, 0x11, 0xfd, 0xca, 0x40, 0xda, + 0x0a, 0x25, 0x2d, 0x29, 0x70, 0x78, 0xdd, 0xf8, 0xb0, 0x49, 0x48, 0xb3, 0x8d, 0x2a, 0x42, 0x76, + 0xaf, 0xbb, 0x5f, 0x41, 0x1d, 0x9f, 0xf5, 0xa4, 0xaa, 0xf1, 0xc1, 0xf0, 0x47, 0xc7, 0x0b, 0x3f, + 0x2d, 0x35, 0x49, 0x93, 0x88, 0x65, 0x85, 0xaf, 0xd4, 0xe9, 0xcd, 0x99, 0xfc, 0x65, 0x3d, 0x1f, + 0xd1, 0x4a, 0x87, 0x74, 0x3d, 0xa6, 0xf4, 0x6e, 0x9d, 0x46, 0x0f, 0xb1, 0x00, 0x37, 0xd4, 0xeb, + 0x8c, 0x3b, 0xa7, 0xd0, 0x74, 0x11, 0x6d, 0x04, 0xd8, 0x67, 0x24, 0x50, 0xca, 0xb7, 0x4f, 0xa1, + 0xcc, 0x11, 0x13, 0xff, 0x28, 0xdd, 0xd2, 0x30, 0x36, 0x0c, 0x77, 0x10, 0x65, 0x4e, 0xc7, 0x97, + 0x02, 0xe6, 0x3f, 0x09, 0x58, 0xdc, 0x0c, 0x90, 0xc3, 0xd0, 0x63, 0x87, 0x1e, 0xd8, 0xe8, 0x59, + 0x17, 0x51, 0xa6, 0x57, 0x61, 0x2e, 0x32, 0x5f, 0xc7, 0x6e, 0x51, 0x5b, 0xd5, 0xca, 0xf9, 0x8d, + 0x4b, 0xfd, 0xa3, 0x52, 0x61, 0x33, 0x3c, 0xaf, 0x6d, 0xd9, 0x85, 0x48, 0xa8, 0xe6, 0xea, 0x15, + 0xc8, 0x04, 0x84, 0xb0, 0x7d, 0x5a, 0x4c, 0xae, 0x26, 0xcb, 0x85, 0xea, 0xfb, 0x56, 0x2c, 0xa4, + 0xc2, 0x3b, 0xeb, 0x3e, 0x07, 0xd3, 0x56, 0x62, 0xfa, 0x12, 0xa4, 0x29, 0x73, 0xb1, 0x57, 0x4c, + 0x71, 0xeb, 0xb6, 0xdc, 0xe8, 0xcb, 0x90, 0xa1, 0xcc, 0x25, 0x5d, 0x56, 0x4c, 0x8b, 0x63, 0xb5, + 0x53, 0xe7, 0x28, 0x08, 0x8a, 0x99, 0xe8, 0x1c, 0x05, 0x81, 0x6e, 0x40, 0x8e, 0xa1, 0xa0, 0x83, + 0x3d, 0xa7, 0x5d, 0xcc, 0xae, 0x6a, 0xe5, 0x9c, 0x1d, 0xed, 0xf5, 0xbb, 0x00, 0x8d, 0x16, 0x6a, + 0x1c, 0xf8, 0x04, 0x7b, 0xac, 0x98, 0x5b, 0xd5, 0xca, 0x85, 0xea, 0x95, 0x51, 0xb7, 0xb6, 0x22, + 0xc4, 0xed, 0x98, 0xbc, 0x6e, 0x41, 0x96, 0xf8, 0x0c, 0x13, 0x8f, 0x16, 0xf3, 0x42, 0x75, 0xc9, + 0x92, 0x68, 0x5a, 0x21, 0x9a, 0xd6, 0xba, 0xd7, 0xb3, 0x43, 0x21, 0xfd, 0x2a, 0xcc, 0x05, 0x5d, + 0x8f, 0x03, 0x5c, 0xf7, 0x1d, 0xd6, 0x2a, 0x82, 0xf0, 0xb3, 0xa0, 0xce, 0x76, 0x1d, 0xd6, 0x32, + 0x9f, 0x82, 0x1e, 0x07, 0x9b, 0xfa, 0xc4, 0xa3, 0xe8, 0xad, 0xd0, 0x5e, 0x80, 0xa4, 0x8f, 0xdd, + 0x62, 0x62, 0x55, 0x2b, 0xcf, 0xdb, 0x7c, 0x69, 0x36, 0x61, 0xee, 0x11, 0x73, 0x02, 0x76, 0x96, + 0x18, 0x7e, 0x04, 0x59, 0xf4, 0x02, 0x35, 0xea, 0xca, 0x72, 0x7e, 0x03, 0xfa, 0x47, 0xa5, 0xcc, + 0xf6, 0x0b, 0xd4, 0xa8, 0x6d, 0xd9, 0x19, 0xfe, 0xa9, 0xe6, 0x9a, 0x57, 0x61, 0x5e, 0x5d, 0xa4, + 0xfc, 0x57, 0xbe, 0x68, 0x03, 0x5f, 0x76, 0x60, 0x71, 0x0b, 0xb5, 0xd1, 0x99, 0x93, 0xca, 0xfc, + 0x55, 0x83, 0x8b, 0xd2, 0x52, 0x74, 0xdb, 0x32, 0x24, 0x22, 0xe5, 0x4c, 0xff, 0xa8, 0x94, 0xa8, + 0x6d, 0xd9, 0x09, 0x7c, 0x02, 0x22, 0x7a, 0x09, 0x0a, 0xe8, 0x05, 0x66, 0x75, 0xca, 0x1c, 0xd6, + 0xe5, 0x69, 0xc9, 0xbf, 0x00, 0x3f, 0x7a, 0x24, 0x4e, 0xf4, 0x75, 0xc8, 0xf3, 0x1d, 0x72, 0xeb, + 0x0e, 0x13, 0x59, 0x58, 0xa8, 0x1a, 0x23, 0x31, 0x7e, 0x1c, 0x56, 0xcc, 0x46, 0xee, 0xd5, 0x51, + 0xe9, 0xc2, 0xcb, 0xbf, 0x4a, 0x9a, 0x9d, 0x93, 0x6a, 0xeb, 0xcc, 0x24, 0xb0, 0x24, 0xfd, 0xdb, + 0x0d, 0x48, 0x03, 0x51, 0x7a, 0xee, 0xe8, 0x23, 0x80, 0x1d, 0x74, 0xfe, 0x41, 0xde, 0x86, 0x82, + 0xb8, 0x46, 0x81, 0x7e, 0x13, 0xb2, 0xbe, 0x7c, 0xa0, 0xb8, 0x62, 0xa8, 0x8c, 0x0e, 0xaf, 0xab, + 0x4a, 0x0a, 0x41, 0x08, 0x85, 0xcd, 0x35, 0x58, 0xf8, 0x1a, 0x53, 0xc6, 0xd3, 0x20, 0x82, 0x66, + 0x19, 0x32, 0xfb, 0xb8, 0xcd, 0x50, 0x20, 0xbd, 0xb5, 0xd5, 0x8e, 0x27, 0x4d, 0x4c, 0x36, 0xaa, + 0x8d, 0xb4, 0x98, 0x02, 0x45, 0x4d, 0x34, 0x95, 0xc9, 0xd7, 0x4a, 0x51, 0xf3, 0xa5, 0x06, 0x85, + 0xaf, 0x70, 0xbb, 0x7d, 0xde, 0x20, 0x89, 0x9e, 0x84, 0x9b, 0xbc, 0xf3, 0xc8, 0xdc, 0x52, 0x3b, + 0x9e, 0x8a, 0x4e, 0xbb, 0x2d, 0x32, 0x2a, 0x67, 0xf3, 0xa5, 0xf9, 0xaf, 0x06, 0x3a, 0x57, 0x7e, + 0x07, 0x59, 0x12, 0xb5, 0xcd, 0xc4, 0xc9, 0x6d, 0x33, 0x39, 0xa6, 0x6d, 0xa6, 0xc6, 0xb6, 0xcd, + 0xf4, 0x50, 0xdb, 0x2c, 0x43, 0x8a, 0xfa, 0xa8, 0x21, 0x1a, 0xed, 0xb8, 0xae, 0x27, 0x24, 0xe2, + 0x28, 0x65, 0xc7, 0xa6, 0xd2, 0x65, 0x78, 0xef, 0xd8, 0xd3, 0x65, 0x64, 0xcd, 0x5f, 0x34, 0x58, + 0xb0, 0x11, 0xc5, 0x3f, 0xa2, 0x5d, 0xd6, 0x3b, 0xf7, 0x50, 0x2d, 0x41, 0xfa, 0x39, 0x76, 0x59, + 0x4b, 0x45, 0x4a, 0x6e, 0x38, 0x3a, 0x2d, 0x84, 0x9b, 0x2d, 0x59, 0xfd, 0xf3, 0xb6, 0xda, 0x99, + 0x3f, 0xc1, 0xc5, 0xcd, 0x36, 0xa1, 0xa8, 0xf6, 0xe0, 0xff, 0x70, 0x4c, 0x86, 0x33, 0x29, 0xa2, + 0x20, 0x37, 0xe6, 0x97, 0xb0, 0xb0, 0xeb, 0x74, 0xe9, 0x99, 0xfb, 0xe7, 0x0e, 0x2c, 0xda, 0x88, + 0x76, 0x3b, 0x67, 0x36, 0xb4, 0x0d, 0x97, 0x78, 0x71, 0xee, 0x62, 0xf7, 0x2c, 0xc9, 0x6b, 0xda, + 0xb2, 0x1f, 0x48, 0x33, 0xaa, 0xc4, 0xef, 0x41, 0x5e, 0xb5, 0x0b, 0x14, 0x96, 0xf9, 0xea, 0xa4, + 0x32, 0xaf, 0x79, 0xfb, 0xc4, 0x1e, 0xa8, 0x98, 0xaf, 0x35, 0xb8, 0xbc, 0x19, 0x8d, 0xed, 0xb3, + 0xd2, 0x98, 0x3a, 0x2c, 0xfa, 0x4e, 0x80, 0x3c, 0x56, 0x8f, 0x51, 0x07, 0x19, 0xbe, 0x2a, 0xef, + 0xff, 0x7f, 0x1e, 0x95, 0xd6, 0x62, 0x84, 0x8c, 0xf8, 0xc8, 0x8b, 0xd4, 0x69, 0xa5, 0x49, 0xae, + 0xb9, 0xb8, 0x89, 0x28, 0xb3, 0xb6, 0xc4, 0x7f, 0xf6, 0x82, 0x34, 0xb6, 0x79, 0x22, 0xad, 0x48, + 0xce, 0x40, 0x2b, 0xcc, 0x27, 0xb0, 0x3c, 0xfc, 0xba, 0x08, 0xb8, 0xc2, 0x80, 0x2c, 0x9e, 0xd8, + 0x21, 0x47, 0xf8, 0x4d, 0x5c, 0xc1, 0xfc, 0x2d, 0x01, 0x8b, 0xdf, 0xf8, 0xee, 0x3b, 0xe0, 0x7e, + 0x55, 0xc8, 0x07, 0x88, 0x92, 0x6e, 0xd0, 0x40, 0x54, 0x80, 0x35, 0xee, 0x55, 0x03, 0x31, 0x7d, + 0x0f, 0x0a, 0x8e, 0xe7, 0x11, 0xe6, 0x84, 0x58, 0x70, 0xef, 0xbf, 0xb0, 0x26, 0xfd, 0x0e, 0xb0, + 0x46, 0xbc, 0xb5, 0xd6, 0x07, 0x26, 0xb6, 0x3d, 0x16, 0xf4, 0xec, 0xb8, 0x51, 0xe3, 0x1e, 0x2c, + 0x0c, 0x0b, 0xf0, 0xe6, 0x7c, 0x80, 0x7a, 0x6a, 0xf6, 0xf0, 0x25, 0x2f, 0xc1, 0x43, 0xa7, 0xdd, + 0x45, 0x61, 0x47, 0x15, 0x9b, 0xdb, 0x89, 0x5b, 0x9a, 0xb9, 0x06, 0x17, 0xef, 0x4b, 0x22, 0x1f, + 0xa2, 0x53, 0x84, 0xac, 0x1c, 0x57, 0x12, 0xef, 0xbc, 0x1d, 0x6e, 0x79, 0x85, 0x44, 0xb2, 0xd1, + 0xf0, 0xca, 0xaa, 0xdf, 0x01, 0x2a, 0x38, 0xc5, 0x13, 0x38, 0xb1, 0x10, 0xb0, 0x43, 0x41, 0x73, + 0x1f, 0x0a, 0xdf, 0x39, 0xf8, 0xfc, 0x07, 0x7c, 0x00, 0x73, 0xf2, 0x1e, 0xe5, 0xeb, 0x10, 0x59, + 0xd2, 0x26, 0x93, 0xa5, 0xc4, 0xdb, 0x90, 0xa5, 0xea, 0xeb, 0x39, 0x48, 0x8b, 0xf1, 0xae, 0x1f, + 0x40, 0x46, 0x12, 0x61, 0xbd, 0x32, 0x39, 0xe2, 0x23, 0xbf, 0x4d, 0x8c, 0xcf, 0x66, 0x57, 0x50, + 0x4f, 0xfb, 0x01, 0xd2, 0x82, 0xb0, 0xea, 0x6b, 0x93, 0x55, 0xe3, 0xf4, 0xd9, 0xf8, 0x64, 0x26, + 0x59, 0x75, 0x43, 0x13, 0x32, 0x92, 0x05, 0x4e, 0x7b, 0xce, 0x08, 0x2b, 0x36, 0x3e, 0x9d, 0x45, + 0x21, 0xba, 0xe8, 0x19, 0xcc, 0x1f, 0xa3, 0x9b, 0x7a, 0x75, 0x16, 0xf5, 0xe3, 0xac, 0xe3, 0x94, + 0x57, 0x3e, 0x85, 0xe4, 0x0e, 0x62, 0x7a, 0x79, 0xb2, 0xd2, 0x80, 0x93, 0x1a, 0x1f, 0xcf, 0x20, + 0x19, 0xe1, 0x96, 0xe2, 0xe3, 0x40, 0xb7, 0x26, 0xab, 0x0c, 0x53, 0x48, 0xa3, 0x32, 0xb3, 0xbc, + 0xba, 0xa8, 0x06, 0x29, 0xce, 0x08, 0xf5, 0x29, 0xbe, 0xc5, 0x58, 0xa3, 0xb1, 0x3c, 0x92, 0xdc, + 0xdb, 0x1d, 0x9f, 0xf5, 0xf4, 0x5d, 0x48, 0xf1, 0x52, 0xd2, 0xa7, 0xe4, 0xe1, 0x28, 0xdb, 0x1b, + 0x6b, 0xf1, 0x11, 0xe4, 0x23, 0x22, 0x34, 0x0d, 0x8a, 0x61, 0xc6, 0x34, 0xd6, 0xe8, 0x03, 0xc8, + 0x2a, 0x0a, 0xa3, 0x4f, 0x89, 0xf7, 0x71, 0xa6, 0x33, 0xc1, 0x60, 0x5a, 0x50, 0x92, 0x69, 0x1e, + 0x0e, 0xf3, 0x96, 0xb1, 0x06, 0x1f, 0x42, 0x46, 0x72, 0x93, 0x69, 0x45, 0x33, 0xc2, 0x60, 0xc6, + 0x9a, 0xc4, 0x90, 0x0b, 0xe9, 0x85, 0x7e, 0x6d, 0x7a, 0x8e, 0xc4, 0xd8, 0x8c, 0x61, 0xcd, 0x2a, + 0xae, 0x32, 0xea, 0x39, 0x40, 0x6c, 0xa8, 0xdf, 0x98, 0x02, 0xf1, 0x49, 0xf4, 0xc4, 0xf8, 0xfc, + 0x74, 0x4a, 0xea, 0xe2, 0x87, 0x90, 0x91, 0x63, 0x70, 0x1a, 0x6c, 0x23, 0xc3, 0x72, 0x2c, 0x6c, + 0xfb, 0x90, 0x55, 0xa3, 0x6b, 0x5a, 0xae, 0x1c, 0x9f, 0x86, 0xc6, 0xb5, 0x19, 0xa5, 0x95, 0xeb, + 0xdf, 0x43, 0x8a, 0xcf, 0x9c, 0x69, 0x55, 0x18, 0x9b, 0x7f, 0xc6, 0xda, 0x2c, 0xa2, 0xd2, 0xfc, + 0xc6, 0xb7, 0xaf, 0xde, 0xac, 0x5c, 0xf8, 0xe3, 0xcd, 0xca, 0x85, 0x9f, 0xfb, 0x2b, 0xda, 0xab, + 0xfe, 0x8a, 0xf6, 0x7b, 0x7f, 0x45, 0xfb, 0xbb, 0xbf, 0xa2, 0x3d, 0xbd, 0xfb, 0x76, 0x7f, 0xa1, + 0xbc, 0x23, 0x16, 0x4f, 0x12, 0x7b, 0x19, 0x01, 0xd8, 0x8d, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, + 0xc7, 0x3c, 0xaa, 0x56, 0xea, 0x14, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1940,6 +1949,13 @@ func (m *CreateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.RuntimePath) > 0 { + i -= len(m.RuntimePath) + copy(dAtA[i:], m.RuntimePath) + i = encodeVarintTasks(dAtA, i, uint64(len(m.RuntimePath))) + i-- + dAtA[i] = 0x52 + } if m.Options != nil { { size, err := m.Options.MarshalToSizedBuffer(dAtA[:i]) @@ -2943,6 +2959,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i -= len(m.XXX_unrecognized) copy(dAtA[i:], m.XXX_unrecognized) } + if len(m.Annotations) > 0 { + for k := range m.Annotations { + v := m.Annotations[k] + baseI := i + i -= len(v) + copy(dAtA[i:], v) + i = encodeVarintTasks(dAtA, i, uint64(len(v))) + i-- + dAtA[i] = 0x12 + i -= len(k) + copy(dAtA[i:], k) + i = encodeVarintTasks(dAtA, i, uint64(len(k))) + i-- + dAtA[i] = 0xa + i = encodeVarintTasks(dAtA, i, uint64(baseI-i)) + i-- + dAtA[i] = 0x1a + } + } if m.Resources != nil { { size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) @@ -3173,6 +3208,10 @@ func (m *CreateTaskRequest) Size() (n int) { l = m.Options.Size() n += 1 + l + sovTasks(uint64(l)) } + l = len(m.RuntimePath) + if l > 0 { + n += 1 + l + sovTasks(uint64(l)) + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3611,6 +3650,14 @@ func (m *UpdateTaskRequest) Size() (n int) { l = m.Resources.Size() n += 1 + l + sovTasks(uint64(l)) } + if len(m.Annotations) > 0 { + for k, v := range m.Annotations { + _ = k + _ = v + mapEntrySize := 1 + len(k) + sovTasks(uint64(len(k))) + 1 + len(v) + sovTasks(uint64(len(v))) + n += mapEntrySize + 1 + sovTasks(uint64(mapEntrySize)) + } + } if m.XXX_unrecognized != nil { n += len(m.XXX_unrecognized) } @@ -3714,6 +3761,7 @@ func (this *CreateTaskRequest) String() string { `Terminal:` + fmt.Sprintf("%v", this.Terminal) + `,`, `Checkpoint:` + strings.Replace(fmt.Sprintf("%v", this.Checkpoint), "Descriptor", "types.Descriptor", 1) + `,`, `Options:` + strings.Replace(fmt.Sprintf("%v", this.Options), "Any", "types1.Any", 1) + `,`, + `RuntimePath:` + fmt.Sprintf("%v", this.RuntimePath) + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, `}`, }, "") @@ -3991,9 +4039,20 @@ func (this *UpdateTaskRequest) String() string { if this == nil { return "nil" } + keysForAnnotations := make([]string, 0, len(this.Annotations)) + for k, _ := range this.Annotations { + keysForAnnotations = append(keysForAnnotations, k) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations) + mapStringForAnnotations := "map[string]string{" + for _, k := range keysForAnnotations { + mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k]) + } + mapStringForAnnotations += "}" s := strings.Join([]string{`&UpdateTaskRequest{`, `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`, `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`, + `Annotations:` + mapStringForAnnotations + `,`, `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`, `}`, }, "") @@ -4341,6 +4400,38 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RuntimePath", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTasks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTasks + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTasks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.RuntimePath = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTasks(dAtA[iNdEx:]) @@ -6799,6 +6890,133 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTasks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTasks + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTasks + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Annotations == nil { + m.Annotations = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTasks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTasks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthTasks + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthTasks + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTasks + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthTasks + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthTasks + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipTasks(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTasks + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Annotations[mapkey] = mapvalue + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTasks(dAtA[iNdEx:]) diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/tasks.proto similarity index 88% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.proto rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/tasks.proto index 90793cbabad..6299c760265 100644 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/tasks/v1/tasks.proto +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1/tasks.proto @@ -1,3 +1,19 @@ +/* + 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. +*/ + syntax = "proto3"; package containerd.services.tasks.v1; @@ -72,6 +88,8 @@ message CreateTaskRequest { containerd.types.Descriptor checkpoint = 8; google.protobuf.Any options = 9; + + string runtime_path = 10; } message CreateTaskResponse { @@ -188,6 +206,7 @@ message CheckpointTaskResponse { message UpdateTaskRequest { string container_id = 1; google.protobuf.Any resources = 2; + map annotations = 3; } message MetricsRequest { diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/doc.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/doc.go new file mode 100644 index 00000000000..c5c0b85ddb2 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/doc.go @@ -0,0 +1,18 @@ +/* + 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 version defines the version service. +package version diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/version/v1/version.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/version.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/services/version/v1/version.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/version.pb.go diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/version.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/version.proto new file mode 100644 index 00000000000..97681bb86ee --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/services/version/v1/version.proto @@ -0,0 +1,34 @@ +/* + 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. +*/ + +syntax = "proto3"; + +package containerd.services.version.v1; + +import "google/protobuf/empty.proto"; +import weak "gogoproto/gogo.proto"; + +// TODO(stevvooe): Should version service actually be versioned? +option go_package = "github.com/containerd/containerd/api/services/version/v1;version"; + +service Version { + rpc Version(google.protobuf.Empty) returns (VersionResponse); +} + +message VersionResponse { + string version = 1; + string revision = 2; +} diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/descriptor.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/descriptor.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/descriptor.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/descriptor.pb.go diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/descriptor.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/descriptor.proto similarity index 51% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/descriptor.proto rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/descriptor.proto index 6d90a1626e7..a841d1bb22d 100644 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/descriptor.proto +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/descriptor.proto @@ -1,3 +1,19 @@ +/* + 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. +*/ + syntax = "proto3"; package containerd.types; diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/doc.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/doc.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/doc.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/doc.go diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/metrics.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/metrics.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/metrics.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/metrics.pb.go diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/metrics.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/metrics.proto new file mode 100644 index 00000000000..b8bc673267f --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/metrics.proto @@ -0,0 +1,31 @@ +/* + 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. +*/ + +syntax = "proto3"; + +package containerd.types; + +import weak "gogoproto/gogo.proto"; +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; + +option go_package = "github.com/containerd/containerd/api/types;types"; + +message Metric { + google.protobuf.Timestamp timestamp = 1 [(gogoproto.stdtime) = true, (gogoproto.nullable) = false]; + string id = 2; + google.protobuf.Any data = 3; +} diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/mount.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/mount.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/mount.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/mount.pb.go diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/mount.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/mount.proto similarity index 58% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/mount.proto rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/mount.proto index cd80e44a2c0..41ab1331387 100644 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/mount.proto +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/mount.proto @@ -1,3 +1,19 @@ +/* + 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. +*/ + syntax = "proto3"; package containerd.types; diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/platform.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/platform.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/platform.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/platform.pb.go diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/platform.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/platform.proto new file mode 100644 index 00000000000..78136068411 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/platform.proto @@ -0,0 +1,31 @@ +/* + 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. +*/ + +syntax = "proto3"; + +package containerd.types; + +import weak "gogoproto/gogo.proto"; + +option go_package = "github.com/containerd/containerd/api/types;types"; + +// Platform follows the structure of the OCI platform specification, from +// descriptors. +message Platform { + string os = 1 [(gogoproto.customname) = "OS"]; + string architecture = 2; + string variant = 3; +} diff --git a/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/doc.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/doc.go new file mode 100644 index 00000000000..e10c7a46993 --- /dev/null +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/doc.go @@ -0,0 +1,18 @@ +/* + 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 task defines the task service. +package task diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/task/task.pb.go b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/task.pb.go similarity index 100% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/task/task.pb.go rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/task.pb.go diff --git a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/task/task.proto b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/task.proto similarity index 67% rename from cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/task/task.proto rename to cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/task.proto index da91cb033ef..df08dfd99d9 100644 --- a/cluster-autoscaler/vendor/github.com/containerd/containerd/api/types/task/task.proto +++ b/cluster-autoscaler/vendor/github.com/google/cadvisor/third_party/containerd/api/types/task/task.proto @@ -1,3 +1,19 @@ +/* + 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. +*/ + syntax = "proto3"; package containerd.v1.types; diff --git a/cluster-autoscaler/vendor/github.com/google/gofuzz/go.mod b/cluster-autoscaler/vendor/github.com/google/gofuzz/go.mod deleted file mode 100644 index 8ec4fe9e972..00000000000 --- a/cluster-autoscaler/vendor/github.com/google/gofuzz/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/google/gofuzz - -go 1.12 diff --git a/cluster-autoscaler/vendor/github.com/google/uuid/go.mod b/cluster-autoscaler/vendor/github.com/google/uuid/go.mod deleted file mode 100644 index fc84cd79d4c..00000000000 --- a/cluster-autoscaler/vendor/github.com/google/uuid/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/google/uuid diff --git a/cluster-autoscaler/vendor/github.com/googleapis/gax-go/v2/go.mod b/cluster-autoscaler/vendor/github.com/googleapis/gax-go/v2/go.mod deleted file mode 100644 index 3a9f820e2a4..00000000000 --- a/cluster-autoscaler/vendor/github.com/googleapis/gax-go/v2/go.mod +++ /dev/null @@ -1,12 +0,0 @@ -module github.com/googleapis/gax-go/v2 - -go 1.11 - -require ( - github.com/google/go-cmp v0.5.6 - google.golang.org/api v0.56.0 - google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af - google.golang.org/grpc v1.40.0 - google.golang.org/protobuf v1.27.1 - -) diff --git a/cluster-autoscaler/vendor/github.com/googleapis/gax-go/v2/go.sum b/cluster-autoscaler/vendor/github.com/googleapis/gax-go/v2/go.sum deleted file mode 100644 index 6acac60a9d4..00000000000 --- a/cluster-autoscaler/vendor/github.com/googleapis/gax-go/v2/go.sum +++ /dev/null @@ -1,535 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -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/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/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-20190213061140-3a22650c66bd/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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420 h1:a8jGStKg0XqKDlKqjLrXn0ioF5MH36pT7Z0BRTqLhbk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf h1:2ucpDCmfkl8Bd/FsLtiD653Wf96cW37s+iGx93zsu4k= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -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-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.56.0 h1:08F9XVYTLOGeSQb3xI9C0gXMuQanhdGed0cWFhDozbI= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -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/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af h1:aLMMXFYqw01RA6XJim5uaN+afqNNjc9P8HPAbnpnc5s= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/cluster-autoscaler/vendor/github.com/gophercloud/gophercloud/go.mod b/cluster-autoscaler/vendor/github.com/gophercloud/gophercloud/go.mod deleted file mode 100644 index d1ee3b472ec..00000000000 --- a/cluster-autoscaler/vendor/github.com/gophercloud/gophercloud/go.mod +++ /dev/null @@ -1,7 +0,0 @@ -module github.com/gophercloud/gophercloud - -require ( - golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67 - golang.org/x/sys v0.0.0-20190209173611-3b5209105503 // indirect - gopkg.in/yaml.v2 v2.2.2 -) diff --git a/cluster-autoscaler/vendor/github.com/gophercloud/gophercloud/go.sum b/cluster-autoscaler/vendor/github.com/gophercloud/gophercloud/go.sum deleted file mode 100644 index 33cb0be8aa3..00000000000 --- a/cluster-autoscaler/vendor/github.com/gophercloud/gophercloud/go.sum +++ /dev/null @@ -1,8 +0,0 @@ -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67 h1:ng3VDlRp5/DHpSWl02R4rM9I+8M2rhmsuLwAMmkLQWE= -golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503 h1:5SvYFrOM3W8Mexn9/oA44Ji7vhXAZQ9hiP+1Q/DMrWg= -golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -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/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/cluster-autoscaler/vendor/github.com/imdario/mergo/README.md b/cluster-autoscaler/vendor/github.com/imdario/mergo/README.md index d1cefa87189..8b76f1fbf33 100644 --- a/cluster-autoscaler/vendor/github.com/imdario/mergo/README.md +++ b/cluster-autoscaler/vendor/github.com/imdario/mergo/README.md @@ -27,7 +27,7 @@ It is ready for production use. [It is used in several projects by Docker, Googl ### Latest release -[Release v0.3.4](https://github.com/imdario/mergo/releases/tag/v0.3.4). +[Release v0.3.6](https://github.com/imdario/mergo/releases/tag/v0.3.6). ### Important note diff --git a/cluster-autoscaler/vendor/github.com/imdario/mergo/merge.go b/cluster-autoscaler/vendor/github.com/imdario/mergo/merge.go index 706b22069c3..44f70a89d91 100644 --- a/cluster-autoscaler/vendor/github.com/imdario/mergo/merge.go +++ b/cluster-autoscaler/vendor/github.com/imdario/mergo/merge.go @@ -9,6 +9,7 @@ package mergo import ( + "fmt" "reflect" ) @@ -127,6 +128,9 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { dstSlice = srcSlice } else if config.AppendSlice { + if srcSlice.Type() != dstSlice.Type() { + return fmt.Errorf("cannot append two slice with different type (%s, %s)", srcSlice.Type(), dstSlice.Type()) + } dstSlice = reflect.AppendSlice(dstSlice, srcSlice) } dst.SetMapIndex(key, dstSlice) @@ -150,6 +154,9 @@ func deepMerge(dst, src reflect.Value, visited map[uintptr]*visit, depth int, co if !isEmptyValue(src) && (overwrite || isEmptyValue(dst)) && !config.AppendSlice { dst.Set(src) } else if config.AppendSlice { + if src.Type() != dst.Type() { + return fmt.Errorf("cannot append two slice with different type (%s, %s)", src.Type(), dst.Type()) + } dst.Set(reflect.AppendSlice(dst, src)) } case reflect.Ptr: diff --git a/cluster-autoscaler/vendor/github.com/jmespath/go-jmespath/go.mod b/cluster-autoscaler/vendor/github.com/jmespath/go-jmespath/go.mod deleted file mode 100644 index 4d448e88b06..00000000000 --- a/cluster-autoscaler/vendor/github.com/jmespath/go-jmespath/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/jmespath/go-jmespath - -go 1.14 - -require github.com/jmespath/go-jmespath/internal/testify v1.5.1 diff --git a/cluster-autoscaler/vendor/github.com/jmespath/go-jmespath/go.sum b/cluster-autoscaler/vendor/github.com/jmespath/go-jmespath/go.sum deleted file mode 100644 index d2db411e585..00000000000 --- a/cluster-autoscaler/vendor/github.com/jmespath/go-jmespath/go.sum +++ /dev/null @@ -1,11 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -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/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/cluster-autoscaler/vendor/github.com/josharian/intern/go.mod b/cluster-autoscaler/vendor/github.com/josharian/intern/go.mod deleted file mode 100644 index f2262ff0d54..00000000000 --- a/cluster-autoscaler/vendor/github.com/josharian/intern/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/josharian/intern - -go 1.5 diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/go.mod b/cluster-autoscaler/vendor/github.com/json-iterator/go/go.mod deleted file mode 100644 index e817cccbf6f..00000000000 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/go.mod +++ /dev/null @@ -1,11 +0,0 @@ -module github.com/json-iterator/go - -go 1.12 - -require ( - github.com/davecgh/go-spew v1.1.1 - github.com/google/gofuzz v1.0.0 - github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 - github.com/modern-go/reflect2 v1.0.2 - github.com/stretchr/testify v1.3.0 -) diff --git a/cluster-autoscaler/vendor/github.com/json-iterator/go/go.sum b/cluster-autoscaler/vendor/github.com/json-iterator/go/go.sum deleted file mode 100644 index 4b7bb8a2952..00000000000 --- a/cluster-autoscaler/vendor/github.com/json-iterator/go/go.sum +++ /dev/null @@ -1,14 +0,0 @@ -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/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 h1:ZqeYNhU3OHLH3mGKHDcjJRFFRrJa6eAM5H+CtDdOsPc= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/cluster-autoscaler/vendor/github.com/karrick/godirwalk/go.mod b/cluster-autoscaler/vendor/github.com/karrick/godirwalk/go.mod deleted file mode 100644 index faf23fd98a4..00000000000 --- a/cluster-autoscaler/vendor/github.com/karrick/godirwalk/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/karrick/godirwalk - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/karrick/godirwalk/go.sum b/cluster-autoscaler/vendor/github.com/karrick/godirwalk/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/lithammer/dedent/go.mod b/cluster-autoscaler/vendor/github.com/lithammer/dedent/go.mod deleted file mode 100644 index 9468fd10591..00000000000 --- a/cluster-autoscaler/vendor/github.com/lithammer/dedent/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/lithammer/dedent diff --git a/cluster-autoscaler/vendor/github.com/mitchellh/go-homedir/go.mod b/cluster-autoscaler/vendor/github.com/mitchellh/go-homedir/go.mod deleted file mode 100644 index 7efa09a0432..00000000000 --- a/cluster-autoscaler/vendor/github.com/mitchellh/go-homedir/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/mitchellh/go-homedir diff --git a/cluster-autoscaler/vendor/github.com/mitchellh/mapstructure/go.mod b/cluster-autoscaler/vendor/github.com/mitchellh/mapstructure/go.mod deleted file mode 100644 index a03ae973088..00000000000 --- a/cluster-autoscaler/vendor/github.com/mitchellh/mapstructure/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/mitchellh/mapstructure - -go 1.14 diff --git a/cluster-autoscaler/vendor/github.com/moby/ipvs/go.mod b/cluster-autoscaler/vendor/github.com/moby/ipvs/go.mod deleted file mode 100644 index a57cc9d210b..00000000000 --- a/cluster-autoscaler/vendor/github.com/moby/ipvs/go.mod +++ /dev/null @@ -1,12 +0,0 @@ -module github.com/moby/ipvs - -go 1.13 - -require ( - github.com/pkg/errors v0.9.1 // indirect - github.com/sirupsen/logrus v1.4.2 - github.com/vishvananda/netlink v1.1.0 - github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df - golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 - gotest.tools/v3 v3.0.2 -) diff --git a/cluster-autoscaler/vendor/github.com/moby/ipvs/go.sum b/cluster-autoscaler/vendor/github.com/moby/ipvs/go.sum deleted file mode 100644 index 324acf7c940..00000000000 --- a/cluster-autoscaler/vendor/github.com/moby/ipvs/go.sum +++ /dev/null @@ -1,35 +0,0 @@ -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/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -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/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/vishvananda/netlink v1.1.0 h1:1iyaYNBLmP6L0220aDnYQpo1QEV4t4hJ+xEEhhJH8j0= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df h1:OviZH7qLw/7ZovXvuNyL3XQl8UFofeikI1NW1Gypu7k= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444 h1:/d2cWp6PSamH4jDPFLyO150psQdqvtoNX8Zjg3AQ31g= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= diff --git a/cluster-autoscaler/vendor/github.com/moby/spdystream/go.mod b/cluster-autoscaler/vendor/github.com/moby/spdystream/go.mod deleted file mode 100644 index d9b9ad59c7f..00000000000 --- a/cluster-autoscaler/vendor/github.com/moby/spdystream/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/moby/spdystream - -go 1.13 - -require github.com/gorilla/websocket v1.4.2 diff --git a/cluster-autoscaler/vendor/github.com/moby/spdystream/go.sum b/cluster-autoscaler/vendor/github.com/moby/spdystream/go.sum deleted file mode 100644 index 85efffd996e..00000000000 --- a/cluster-autoscaler/vendor/github.com/moby/spdystream/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= diff --git a/cluster-autoscaler/vendor/github.com/moby/sys/mountinfo/go.mod b/cluster-autoscaler/vendor/github.com/moby/sys/mountinfo/go.mod deleted file mode 100644 index 1cc3efcf748..00000000000 --- a/cluster-autoscaler/vendor/github.com/moby/sys/mountinfo/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/moby/sys/mountinfo - -go 1.16 - -require golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 diff --git a/cluster-autoscaler/vendor/github.com/moby/sys/mountinfo/go.sum b/cluster-autoscaler/vendor/github.com/moby/sys/mountinfo/go.sum deleted file mode 100644 index c257a6a29d5..00000000000 --- a/cluster-autoscaler/vendor/github.com/moby/sys/mountinfo/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359 h1:2B5p2L5IfGiD7+b9BOoRMC6DgObAVZV+Fsp050NqXik= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/cluster-autoscaler/vendor/github.com/modern-go/reflect2/go.mod b/cluster-autoscaler/vendor/github.com/modern-go/reflect2/go.mod deleted file mode 100644 index 9057e9b33f2..00000000000 --- a/cluster-autoscaler/vendor/github.com/modern-go/reflect2/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/modern-go/reflect2 - -go 1.12 diff --git a/cluster-autoscaler/vendor/github.com/mrunalp/fileutils/go.mod b/cluster-autoscaler/vendor/github.com/mrunalp/fileutils/go.mod deleted file mode 100644 index d8971cabc46..00000000000 --- a/cluster-autoscaler/vendor/github.com/mrunalp/fileutils/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/mrunalp/fileutils - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/opencontainers/go-digest/go.mod b/cluster-autoscaler/vendor/github.com/opencontainers/go-digest/go.mod deleted file mode 100644 index cf5d7b1d2d7..00000000000 --- a/cluster-autoscaler/vendor/github.com/opencontainers/go-digest/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/opencontainers/go-digest - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/prometheus/procfs/go.mod b/cluster-autoscaler/vendor/github.com/prometheus/procfs/go.mod deleted file mode 100644 index ba6681f5217..00000000000 --- a/cluster-autoscaler/vendor/github.com/prometheus/procfs/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module github.com/prometheus/procfs - -go 1.13 - -require ( - github.com/google/go-cmp v0.5.4 - golang.org/x/sync v0.0.0-20201207232520-09787c993a3a - golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c -) diff --git a/cluster-autoscaler/vendor/github.com/prometheus/procfs/go.sum b/cluster-autoscaler/vendor/github.com/prometheus/procfs/go.sum deleted file mode 100644 index 7ceaf56b7d5..00000000000 --- a/cluster-autoscaler/vendor/github.com/prometheus/procfs/go.sum +++ /dev/null @@ -1,8 +0,0 @@ -github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c h1:VwygUrnw9jn88c4u8GD3rZQbqrP/tgas88tPUbBxQrk= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/LICENSE b/cluster-autoscaler/vendor/github.com/quobyte/api/LICENSE deleted file mode 100644 index bac2de07540..00000000000 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ - -Copyright (c) 2016, Quobyte Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of quobyte-automation nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/README.md b/cluster-autoscaler/vendor/github.com/quobyte/api/README.md deleted file mode 100644 index 1b7451f0148..00000000000 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Quobyte API Clients - -Get the quobyte api client - -```bash -go get github.com/quobyte/api -``` - -## Usage - -```go -package main - -import ( - "log" - quobyte_api "github.com/quobyte/api" -) - -func main() { - client := quobyte_api.NewQuobyteClient("http://apiserver:7860", "user", "password") - client.SetAPIRetryPolicy(quobyte_api.RetryInfinitely) // Default quobyte_api.RetryInteractive - req := &quobyte_api.CreateVolumeRequest{ - Name: "MyVolume", - RootUserID: "root", - RootGroupID: "root", - ConfigurationName: "BASE", - Labels: []quobyte_api.Label{ - {Name: "label1", Value: "value1"}, - {Name: "label2", Value: "value2"}, - }, - } - - volumeUUID, err := client.CreateVolume(req) - if err != nil { - log.Fatalf("Error:", err) - } - - log.Printf("%s", volumeUUID) -} -``` \ No newline at end of file diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go b/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go deleted file mode 100644 index c5e36d7fc7b..00000000000 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/quobyte.go +++ /dev/null @@ -1,245 +0,0 @@ -// Package quobyte represents a golang API for the Quobyte Storage System -package quobyte - -import ( - "net/http" - "regexp" -) - -// retry policy codes -const ( - RetryNever string = "NEVER" - RetryInteractive string = "INTERACTIVE" - RetryInfinitely string = "INFINITELY" - RetryOncePerTarget string = "ONCE_PER_TARGET" -) - -var UUIDValidator = regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-4[a-fA-F0-9]{3}-[8|9|aA|bB][a-fA-F0-9]{3}-[a-fA-F0-9]{12}$") - -type QuobyteClient struct { - client *http.Client - url string - username string - password string - apiRetryPolicy string -} - -func (client *QuobyteClient) SetAPIRetryPolicy(retry string) { - client.apiRetryPolicy = retry -} - -func (client *QuobyteClient) GetAPIRetryPolicy() string { - return client.apiRetryPolicy -} - -func (client *QuobyteClient) SetTransport(t http.RoundTripper) { - client.client.Transport = t -} - -// NewQuobyteClient creates a new Quobyte API client -func NewQuobyteClient(url string, username string, password string) *QuobyteClient { - return &QuobyteClient{ - client: &http.Client{}, - url: url, - username: username, - password: password, - apiRetryPolicy: RetryInteractive, - } -} - -// CreateVolume creates a new Quobyte volume. Its root directory will be owned by given user and group -func (client QuobyteClient) CreateVolume(request *CreateVolumeRequest) (string, error) { - var response volumeUUID - tenantUUID, err := client.GetTenantUUID(request.TenantID) - if err != nil { - return "", err - } - request.TenantID = tenantUUID - - if err = client.sendRequest("createVolume", request, &response); err != nil { - return "", err - } - - return response.VolumeUUID, nil -} - -// GetVolumeUUID resolves the volumeUUID for the given volume and tenant name. -// This method should be used when it is not clear if the given string is volume UUID or Name. -func (client QuobyteClient) GetVolumeUUID(volume, tenant string) (string, error) { - if len(volume) != 0 && !IsValidUUID(volume) { - tenantUUID, err := client.GetTenantUUID(tenant) - if err != nil { - return "", err - } - volUUID, err := client.ResolveVolumeNameToUUID(volume, tenantUUID) - if err != nil { - return "", err - } - - return volUUID, nil - } - return volume, nil -} - -// GetTenantUUID resolves the tenatnUUID for the given name -// This method should be used when it is not clear if the given string is Tenant UUID or Name. -func (client QuobyteClient) GetTenantUUID(tenant string) (string, error) { - if len(tenant) != 0 && !IsValidUUID(tenant) { - tenantUUID, err := client.ResolveTenantNameToUUID(tenant) - if err != nil { - return "", err - } - return tenantUUID, nil - } - return tenant, nil -} - -// ResolveVolumeNameToUUID resolves a volume name to a UUID -func (client *QuobyteClient) ResolveVolumeNameToUUID(volumeName, tenant string) (string, error) { - request := &resolveVolumeNameRequest{ - VolumeName: volumeName, - TenantDomain: tenant, - } - var response volumeUUID - if err := client.sendRequest("resolveVolumeName", request, &response); err != nil { - return "", err - } - - return response.VolumeUUID, nil -} - -// DeleteVolumeByResolvingNamesToUUID deletes the volume by resolving the volume name and tenant name to -// respective UUID if required. -// This method should be used if the given volume, tenant information is name or UUID. -func (client *QuobyteClient) DeleteVolumeByResolvingNamesToUUID(volume, tenant string) error { - volumeUUID, err := client.GetVolumeUUID(volume, tenant) - if err != nil { - return err - } - - return client.DeleteVolume(volumeUUID) -} - -// DeleteVolume deletes a Quobyte volume -func (client *QuobyteClient) DeleteVolume(UUID string) error { - return client.sendRequest( - "deleteVolume", - &volumeUUID{ - VolumeUUID: UUID, - }, - nil) -} - -// DeleteVolumeByName deletes a volume by a given name -func (client *QuobyteClient) DeleteVolumeByName(volumeName, tenant string) error { - uuid, err := client.ResolveVolumeNameToUUID(volumeName, tenant) - if err != nil { - return err - } - - return client.DeleteVolume(uuid) -} - -// GetClientList returns a list of all active clients -func (client *QuobyteClient) GetClientList(tenant string) (GetClientListResponse, error) { - request := &getClientListRequest{ - TenantDomain: tenant, - } - - var response GetClientListResponse - if err := client.sendRequest("getClientListRequest", request, &response); err != nil { - return response, err - } - - return response, nil -} - -// SetVolumeQuota sets a Quota to the specified Volume -func (client *QuobyteClient) SetVolumeQuota(volumeUUID string, quotaSize uint64) error { - request := &setQuotaRequest{ - Quotas: []*quota{ - "a{ - Consumer: []*consumingEntity{ - &consumingEntity{ - Type: "VOLUME", - Identifier: volumeUUID, - }, - }, - Limits: []*resource{ - &resource{ - Type: "LOGICAL_DISK_SPACE", - Value: quotaSize, - }, - }, - }, - }, - } - - return client.sendRequest("setQuota", request, nil) -} - -// GetTenant returns the Tenant configuration for all specified tenants -func (client *QuobyteClient) GetTenant(tenantIDs []string) (GetTenantResponse, error) { - request := &getTenantRequest{TenantIDs: tenantIDs} - - var response GetTenantResponse - err := client.sendRequest("getTenant", request, &response) - if err != nil { - return response, err - } - - return response, nil -} - -// GetTenantMap returns a map that contains all tenant names and there ID's -func (client *QuobyteClient) GetTenantMap() (map[string]string, error) { - result := map[string]string{} - response, err := client.GetTenant([]string{}) - - if err != nil { - return result, err - } - - for _, tenant := range response.Tenants { - result[tenant.Name] = tenant.TenantID - } - - return result, nil -} - -// SetTenant creates a Tenant with the specified name -func (client *QuobyteClient) SetTenant(tenantName string) (string, error) { - request := &setTenantRequest{ - &TenantDomainConfiguration{ - Name: tenantName, - }, - retryPolicy{client.GetAPIRetryPolicy()}, - } - - var response setTenantResponse - err := client.sendRequest("setTenant", request, &response) - if err != nil { - return "", err - } - - return response.TenantID, nil -} - -// IsValidUUID Validates the given uuid -func IsValidUUID(uuid string) bool { - return UUIDValidator.MatchString(uuid) -} - -// ResolveTenantNameToUUID Returns UUID for given name, error if not found. -func (client *QuobyteClient) ResolveTenantNameToUUID(name string) (string, error) { - request := &resolveTenantNameRequest{ - TenantName: name, - } - - var response resolveTenantNameResponse - err := client.sendRequest("resolveTenantName", request, &response) - if err != nil { - return "", err - } - return response.TenantID, nil -} diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go b/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go deleted file mode 100644 index b5ea3694629..00000000000 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/rpc_client.go +++ /dev/null @@ -1,124 +0,0 @@ -package quobyte - -import ( - "bytes" - "encoding/json" - "errors" - "fmt" - "io" - "log" - "math/rand" - "net/http" - "reflect" - "strconv" -) - -const ( - emptyResponse string = "Empty result and no error occured" -) - -type request struct { - ID string `json:"id"` - Version string `json:"jsonrpc"` - Method string `json:"method"` - Params interface{} `json:"params"` -} - -type response struct { - ID string `json:"id"` - Version string `json:"jsonrpc"` - Result *json.RawMessage `json:"result"` - Error *json.RawMessage `json:"error"` -} - -type rpcError struct { - Code int64 `json:"code"` - Message string `json:"message"` -} - -func (err *rpcError) decodeErrorCode() string { - switch err.Code { - case -32600: - return "ERROR_CODE_INVALID_REQUEST" - case -32603: - return "ERROR_CODE_JSON_ENCODING_FAILED" - case -32601: - return "ERROR_CODE_METHOD_NOT_FOUND" - case -32700: - return "ERROR_CODE_PARSE_ERROR" - } - - return "" -} - -func encodeRequest(method string, params interface{}) ([]byte, error) { - return json.Marshal(&request{ - // Generate random ID and convert it to a string - ID: strconv.FormatInt(rand.Int63(), 10), - Version: "2.0", - Method: method, - Params: params, - }) -} - -func decodeResponse(ioReader io.Reader, reply interface{}) error { - var resp response - if err := json.NewDecoder(ioReader).Decode(&resp); err != nil { - return err - } - - if resp.Error != nil { - var rpcErr rpcError - if err := json.Unmarshal(*resp.Error, &rpcErr); err != nil { - return err - } - - if rpcErr.Message != "" { - return errors.New(rpcErr.Message) - } - - respError := rpcErr.decodeErrorCode() - if respError != "" { - return errors.New(respError) - } - } - - if resp.Result != nil && reply != nil { - return json.Unmarshal(*resp.Result, reply) - } - - return errors.New(emptyResponse) -} - -func (client QuobyteClient) sendRequest(method string, request interface{}, response interface{}) error { - etype := reflect.ValueOf(request).Elem() - field := etype.FieldByName("RetryPolicy") - if field.IsValid() { - field.SetString(client.GetAPIRetryPolicy()) - } - message, err := encodeRequest(method, request) - if err != nil { - return err - } - req, err := http.NewRequest("POST", client.url, bytes.NewBuffer(message)) - if err != nil { - return err - } - req.Header.Set("Content-Type", "application/json") - req.SetBasicAuth(client.username, client.password) - resp, err := client.client.Do(req) - if err != nil { - return err - } - defer resp.Body.Close() - - if resp.StatusCode < 200 || resp.StatusCode > 299 { - log.Printf("Warning: HTTP status code for request is %s\n", - strconv.Itoa(resp.StatusCode)) - if resp.StatusCode == 401 { - return errors.New("Unable to authenticate with Quobyte API service") - } - return fmt.Errorf("JsonRPC failed with error code %d", resp.StatusCode) - } - return decodeResponse(resp.Body, &response) -} diff --git a/cluster-autoscaler/vendor/github.com/quobyte/api/types.go b/cluster-autoscaler/vendor/github.com/quobyte/api/types.go deleted file mode 100644 index d15a71bfa76..00000000000 --- a/cluster-autoscaler/vendor/github.com/quobyte/api/types.go +++ /dev/null @@ -1,109 +0,0 @@ -package quobyte - -type retryPolicy struct { - RetryPolicy string `json:"retry,omitempty"` -} - -// CreateVolumeRequest represents a CreateVolumeRequest -type CreateVolumeRequest struct { - Name string `json:"name,omitempty"` - RootUserID string `json:"root_user_id,omitempty"` - RootGroupID string `json:"root_group_id,omitempty"` - ReplicaDeviceIDS []uint64 `json:"replica_device_ids,string,omitempty"` - ConfigurationName string `json:"configuration_name,omitempty"` - Labels []Label `json:"label,omitempty"` - AccessMode uint32 `json:"access_mode,uint32,omitempty"` - TenantID string `json:"tenant_id,omitempty"` - retryPolicy -} - -type Label struct { - Name string `json:"name,string,omitempty"` - Value string `json:"value,string,omitempty"` -} - -type resolveVolumeNameRequest struct { - VolumeName string `json:"volume_name,omitempty"` - TenantDomain string `json:"tenant_domain,omitempty"` - retryPolicy -} - -type resolveTenantNameRequest struct { - TenantName string `json:"tenant_name,omitempty"` -} - -type resolveTenantNameResponse struct { - TenantID string `json:"tenant_id,omitempty"` -} - -type volumeUUID struct { - VolumeUUID string `json:"volume_uuid,omitempty"` -} - -type getClientListRequest struct { - TenantDomain string `json:"tenant_domain,omitempty"` - retryPolicy -} - -type GetClientListResponse struct { - Clients []Client `json:"client,omitempty"` -} - -type Client struct { - MountedUserName string `json:"mount_user_name,omitempty"` - MountedVolumeUUID string `json:"mounted_volume_uuid,omitempty"` -} - -type consumingEntity struct { - Type string `json:"type,omitempty"` - Identifier string `json:"identifier,omitempty"` - TenantID string `json:"tenant_id,omitempty"` -} - -type resource struct { - Type string `json:"type,omitempty"` - Value uint64 `json:"value,omitempty"` -} - -type quota struct { - ID string `json:"id,omitempty"` - Consumer []*consumingEntity `json:"consumer,omitempty"` - Limits []*resource `json:"limits,omitempty"` - Currentusage []*resource `json:"current_usage,omitempty"` -} - -type setQuotaRequest struct { - Quotas []*quota `json:"quotas,omitempty"` - retryPolicy -} - -type getTenantRequest struct { - TenantIDs []string `json:"tenant_id,omitempty"` - retryPolicy -} - -type GetTenantResponse struct { - Tenants []*TenantDomainConfiguration `json:"tenant,omitempty"` -} - -type TenantDomainConfiguration struct { - TenantID string `json:"tenant_id,omitempty"` - Name string `json:"name,omitempty"` - RestrictToNetwork []string `json:"restrict_to_network,omitempty"` - VolumeAccess []*TenantDomainConfigurationVolumeAccess `json:"volume_access,omitempty"` -} - -type TenantDomainConfigurationVolumeAccess struct { - VolumeUUID string `json:"volume_uuid,omitempty"` - RestrictToNetwork string `json:"restrict_to_network,omitempty"` - ReadOnly bool `json:"read_only,omitempty"` -} - -type setTenantRequest struct { - Tenants *TenantDomainConfiguration `json:"tenant,omitempty"` - retryPolicy -} - -type setTenantResponse struct { - TenantID string `json:"tenant_id,omitempty"` -} diff --git a/cluster-autoscaler/vendor/github.com/seccomp/libseccomp-golang/go.mod b/cluster-autoscaler/vendor/github.com/seccomp/libseccomp-golang/go.mod deleted file mode 100644 index 6384b3769bd..00000000000 --- a/cluster-autoscaler/vendor/github.com/seccomp/libseccomp-golang/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/seccomp/libseccomp-golang - -go 1.14 diff --git a/cluster-autoscaler/vendor/github.com/seccomp/libseccomp-golang/go.sum b/cluster-autoscaler/vendor/github.com/seccomp/libseccomp-golang/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/sirupsen/logrus/go.mod b/cluster-autoscaler/vendor/github.com/sirupsen/logrus/go.mod deleted file mode 100644 index b3919d5eabf..00000000000 --- a/cluster-autoscaler/vendor/github.com/sirupsen/logrus/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/sirupsen/logrus - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/stretchr/testify v1.2.2 - golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 -) - -go 1.13 diff --git a/cluster-autoscaler/vendor/github.com/sirupsen/logrus/go.sum b/cluster-autoscaler/vendor/github.com/sirupsen/logrus/go.sum deleted file mode 100644 index 694c18b8454..00000000000 --- a/cluster-autoscaler/vendor/github.com/sirupsen/logrus/go.sum +++ /dev/null @@ -1,8 +0,0 @@ -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037 h1:YyJpGZS1sBuBCzLAR1VEpK193GlqGZbnPFnPV/5Rsb4= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/cluster-autoscaler/vendor/github.com/spf13/cobra/go.mod b/cluster-autoscaler/vendor/github.com/spf13/cobra/go.mod deleted file mode 100644 index 2d6855911de..00000000000 --- a/cluster-autoscaler/vendor/github.com/spf13/cobra/go.mod +++ /dev/null @@ -1,10 +0,0 @@ -module github.com/spf13/cobra - -go 1.15 - -require ( - github.com/cpuguy83/go-md2man/v2 v2.0.1 - github.com/inconshreveable/mousetrap v1.0.0 - github.com/spf13/pflag v1.0.5 - gopkg.in/yaml.v2 v2.4.0 -) diff --git a/cluster-autoscaler/vendor/github.com/spf13/cobra/go.sum b/cluster-autoscaler/vendor/github.com/spf13/cobra/go.sum deleted file mode 100644 index 431058ed0f6..00000000000 --- a/cluster-autoscaler/vendor/github.com/spf13/cobra/go.sum +++ /dev/null @@ -1,18 +0,0 @@ -github.com/cpuguy83/go-md2man/v2 v2.0.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/cluster-autoscaler/vendor/github.com/spf13/pflag/go.mod b/cluster-autoscaler/vendor/github.com/spf13/pflag/go.mod deleted file mode 100644 index b2287eec134..00000000000 --- a/cluster-autoscaler/vendor/github.com/spf13/pflag/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module github.com/spf13/pflag - -go 1.12 diff --git a/cluster-autoscaler/vendor/github.com/spf13/pflag/go.sum b/cluster-autoscaler/vendor/github.com/spf13/pflag/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/.gitignore b/cluster-autoscaler/vendor/github.com/storageos/go-api/.gitignore deleted file mode 100644 index daf913b1b34..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/.gitignore +++ /dev/null @@ -1,24 +0,0 @@ -# Compiled Object files, Static and Dynamic libs (Shared Objects) -*.o -*.a -*.so - -# Folders -_obj -_test - -# Architecture specific extensions/prefixes -*.[568vq] -[568vq].out - -*.cgo1.go -*.cgo2.c -_cgo_defun.c -_cgo_gotypes.go -_cgo_export.* - -_testmain.go - -*.exe -*.test -*.prof diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/LICENCE b/cluster-autoscaler/vendor/github.com/storageos/go-api/LICENCE deleted file mode 100644 index c577408a6dc..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/LICENCE +++ /dev/null @@ -1,45 +0,0 @@ -MIT License - -Copyright (c) 2015-2018 StorageOS - -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. - - -Copyright (c) 2013-2017, go-dockerclient authors -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, -this list of conditions and the following disclaimer in the documentation -and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/README.md b/cluster-autoscaler/vendor/github.com/storageos/go-api/README.md deleted file mode 100644 index 15ebd60eb05..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# StorageOS API client library - -## Swagger Spec -Swagger specification for this repo is available in the [StorageOS public documentation](https://github.com/storageos/storageos.github.io/blob/master/swagger.yaml). - diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/client.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/client.go deleted file mode 100644 index 1a6dc0dcde4..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/client.go +++ /dev/null @@ -1,612 +0,0 @@ -package storageos - -import ( - "bytes" - "context" - "encoding/json" - "errors" - "fmt" - "io" - "io/ioutil" - "math/rand" - "net" - "net/http" - "net/url" - "reflect" - "strconv" - "strings" - "sync" - "time" - - "github.com/storageos/go-api/netutil" - "github.com/storageos/go-api/serror" -) - -const ( - // DefaultUserAgent is the default User-Agent header to include in HTTP requests. - DefaultUserAgent = "go-storageosclient" - // DefaultVersionStr is the string value of the default API version. - DefaultVersionStr = "1" - // DefaultVersion is the default API version. - DefaultVersion = 1 -) - -var ( - // ErrConnectionRefused is returned when the client cannot connect to the given endpoint. - ErrConnectionRefused = errors.New("cannot connect to StorageOS API endpoint") - - // ErrInactivityTimeout is returned when a streamable call has been inactive for some time. - ErrInactivityTimeout = errors.New("inactivity time exceeded timeout") - - // ErrInvalidVersion is returned when a versioned client was requested but no version specified. - ErrInvalidVersion = errors.New("invalid version") - - // ErrProxyNotSupported is returned when a client is unable to set a proxy for http requests. - ErrProxyNotSupported = errors.New("client does not support http proxy") - - // ErrDialerNotSupported is returned when a client is unable to set a DialContext for http requests. - ErrDialerNotSupported = errors.New("client does not support setting DialContext") - - // DefaultPort is the default API port. - DefaultPort = "5705" - - // DataplaneHealthPort is the the port used by the dataplane health-check service. - DataplaneHealthPort = "5704" - - // DefaultHost is the default API host. - DefaultHost = "http://localhost:" + DefaultPort -) - -// APIVersion is an internal representation of a version of the Remote API. -type APIVersion int - -// NewAPIVersion returns an instance of APIVersion for the given string. -// -// The given string must be in the form -func NewAPIVersion(input string) (APIVersion, error) { - if input == "" { - return DefaultVersion, ErrInvalidVersion - } - version, err := strconv.Atoi(input) - if err != nil { - return 0, fmt.Errorf("Unable to parse version %q", input) - } - return APIVersion(version), nil -} - -func (version APIVersion) String() string { - return fmt.Sprintf("v%d", version) -} - -// Client is the basic type of this package. It provides methods for -// interaction with the API. -type Client struct { - httpClient *http.Client - - addresses []string - username string - secret string - userAgent string - - configLock *sync.RWMutex // Lock for config changes - addressLock *sync.Mutex // Lock used to copy/update the address slice - - requestedAPIVersion APIVersion - serverAPIVersion APIVersion - expectedAPIVersion APIVersion - - SkipServerVersionCheck bool -} - -// ClientVersion returns the API version of the client -func (c *Client) ClientVersion() string { - return DefaultVersionStr -} - -// Dialer is an interface that allows network connections to be dialed -// (net.Dialer fulfills this interface) and named pipes (a shim using -// winio.DialPipe) -type Dialer interface { - Dial(network, address string) (net.Conn, error) -} - -type dialContext = func(ctx context.Context, network, address string) (net.Conn, error) - -// NewClient returns a Client instance ready for communication with the given -// server endpoint. It will use the latest remote API version available in the -// server. -func NewClient(nodes string) (*Client, error) { - client, err := NewVersionedClient(nodes, "") - if err != nil { - return nil, err - } - client.SkipServerVersionCheck = true - client.userAgent = DefaultUserAgent - return client, nil -} - -// NewVersionedClient returns a Client instance ready for communication with -// the given server endpoint, using a specific remote API version. -func NewVersionedClient(nodestring string, apiVersionString string) (*Client, error) { - nodes := strings.Split(nodestring, ",") - addresses, err := netutil.AddressesFromNodes(nodes) - if err != nil { - return nil, err - } - - if len(addresses) > 1 { - // Shuffle returned addresses in attempt to spread the load - rnd := rand.New(rand.NewSource(time.Now().UnixNano())) - rnd.Shuffle(len(addresses), func(i, j int) { - addresses[i], addresses[j] = addresses[j], addresses[i] - }) - } - - client := &Client{ - httpClient: defaultClient(), - addresses: addresses, - configLock: &sync.RWMutex{}, - addressLock: &sync.Mutex{}, - } - - if apiVersionString != "" { - version, err := strconv.Atoi(apiVersionString) - if err != nil { - return nil, err - } - client.requestedAPIVersion = APIVersion(version) - } - - return client, nil -} - -// SetUserAgent sets the client useragent. -func (c *Client) SetUserAgent(useragent string) { - c.configLock.Lock() - defer c.configLock.Unlock() - c.userAgent = useragent -} - -// SetAuth sets the API username and secret to be used for all API requests. -// It should not be called concurrently with any other Client methods. -func (c *Client) SetAuth(username string, secret string) { - c.configLock.Lock() - defer c.configLock.Unlock() - if username != "" { - c.username = username - } - if secret != "" { - c.secret = secret - } -} - -// SetProxy will set the proxy URL for both the HTTPClient. -// If the transport method does not support usage -// of proxies, an error will be returned. -func (c *Client) SetProxy(proxy *url.URL) error { - c.configLock.Lock() - defer c.configLock.Unlock() - - if client := c.httpClient; client != nil { - transport, supported := client.Transport.(*http.Transport) - if !supported { - return ErrProxyNotSupported - } - transport.Proxy = http.ProxyURL(proxy) - } - return nil -} - -// SetTimeout takes a timeout and applies it to both the HTTPClient and -// nativeHTTPClient. It should not be called concurrently with any other Client -// methods. -func (c *Client) SetTimeout(t time.Duration) { - c.configLock.Lock() - defer c.configLock.Unlock() - if c.httpClient != nil { - c.httpClient.Timeout = t - } -} - -// GetDialContext returns the current DialContext function, or nil if there is none. -func (c *Client) GetDialContext() dialContext { - c.configLock.RLock() - defer c.configLock.RUnlock() - - if c.httpClient == nil { - return nil - } - transport, supported := c.httpClient.Transport.(*http.Transport) - if !supported { - return nil - } - return transport.DialContext -} - -// SetDialContext uses the given dial function to establish TCP connections in the HTTPClient. -func (c *Client) SetDialContext(dial dialContext) error { - c.configLock.Lock() - defer c.configLock.Unlock() - - if client := c.httpClient; client != nil { - transport, supported := client.Transport.(*http.Transport) - if !supported { - return ErrDialerNotSupported - } - transport.DialContext = dial - } - return nil -} - -func (c *Client) checkAPIVersion() error { - serverAPIVersionString, err := c.getServerAPIVersionString() - if err != nil { - return err - } - c.serverAPIVersion, err = NewAPIVersion(serverAPIVersionString) - if err != nil { - return err - } - c.configLock.Lock() - defer c.configLock.Unlock() - if c.requestedAPIVersion == 0 { - c.expectedAPIVersion = c.serverAPIVersion - } else { - c.expectedAPIVersion = c.requestedAPIVersion - } - return nil -} - -// Ping pings the API server -// -// See https://goo.gl/wYfgY1 for more details. -func (c *Client) Ping() error { - urlpath := "/_ping" - resp, err := c.do("GET", urlpath, doOptions{}) - if err != nil { - return err - } - if resp.StatusCode != http.StatusOK { - return newError(resp) - } - return resp.Body.Close() -} - -func (c *Client) getServerAPIVersionString() (version string, err error) { - v, err := c.ServerVersion(context.Background()) - if err != nil { - return "", err - } - return v.APIVersion, nil -} - -type doOptions struct { - context context.Context - data interface{} - - values url.Values - headers map[string]string - - fieldSelector string - labelSelector string - namespace string - - forceJSON bool - force bool - unversioned bool - - retryOn []int // http.status codes -} - -func (c *Client) do(method, urlpath string, doOptions doOptions) (*http.Response, error) { - var params io.Reader - if doOptions.data != nil || doOptions.forceJSON { - buf, err := json.Marshal(doOptions.data) - if err != nil { - return nil, err - } - params = bytes.NewBuffer(buf) - } - - // Prefix the path with the namespace if given. The caller should only set - // the namespace if this is desired. - if doOptions.namespace != "" { - urlpath = "/" + NamespaceAPIPrefix + "/" + doOptions.namespace + "/" + urlpath - } - - if !c.SkipServerVersionCheck && !doOptions.unversioned { - err := c.checkAPIVersion() - if err != nil { - return nil, err - } - } - - query := url.Values{} - if doOptions.values != nil { - query = doOptions.values - } - if doOptions.force { - query.Add("force", "1") - } - - // Obtain a reader lock to prevent the http client from being - // modified underneath us during a do(). - c.configLock.RLock() - defer c.configLock.RUnlock() // This defer matches both the initial and the above lock - - httpClient := c.httpClient - endpoint := c.getAPIPath(urlpath, query, doOptions.unversioned) - - // The doOptions Context is shared for every attempted request in the do. - ctx := doOptions.context - if ctx == nil { - ctx = context.Background() - } - - var failedAddresses = map[string]struct{}{} - - c.addressLock.Lock() - var addresses = make([]string, len(c.addresses)) - copy(addresses, c.addresses) - c.addressLock.Unlock() - - for _, address := range addresses { - target := address + endpoint - - req, err := http.NewRequest(method, target, params) - if err != nil { - // Probably should not try and continue if we're unable - // to create the request. - return nil, err - } - req.Header.Set("User-Agent", c.userAgent) - if doOptions.data != nil { - req.Header.Set("Content-Type", "application/json") - } else if method == "POST" { - req.Header.Set("Content-Type", "plain/text") - } - if c.username != "" && c.secret != "" { - req.SetBasicAuth(c.username, c.secret) - } - - for k, v := range doOptions.headers { - req.Header.Set(k, v) - } - - resp, err := httpClient.Do(req.WithContext(ctx)) - if err != nil { - - // If it is a custom error, return it. It probably knows more than us - if serror.IsStorageOSError(err) { - switch serror.ErrorKind(err) { - case serror.APIUncontactable: - // If API isn't contactable we should try the next address - failedAddresses[address] = struct{}{} - continue - case serror.InvalidHostConfig: - // If invalid host or unknown error, we should report back - fallthrough - case serror.UnknownError: - return nil, err - } - } - - select { - case <-ctx.Done(): - return nil, ctx.Err() - default: - if _, ok := err.(net.Error); ok { - // Be optimistic and try the next endpoint - failedAddresses[address] = struct{}{} - continue - } - return nil, err - } - } - - var shouldretry bool - if doOptions.retryOn != nil { - for _, code := range doOptions.retryOn { - if resp.StatusCode == code { - failedAddresses[address] = struct{}{} - shouldretry = true - } - - } - } - - // If we get to the point of response, we should move any failed - // addresses to the back. - failed := len(failedAddresses) - if failed > 0 { - // Copy addresses we think are okay into the head of the list - newOrder := make([]string, 0, len(addresses)-failed) - - for _, addr := range addresses { - if _, exists := failedAddresses[addr]; !exists { - newOrder = append(newOrder, addr) - } - } - for addr := range failedAddresses { - newOrder = append(newOrder, addr) - } - - c.addressLock.Lock() - // Bring in the new order - c.addresses = newOrder - c.addressLock.Unlock() - } - - if shouldretry { - continue - } - - if resp.StatusCode < 200 || resp.StatusCode >= 400 { - return nil, newError(resp) // These status codes are likely to be fatal - } - return resp, nil - } - - return nil, netutil.ErrAllFailed(addresses) -} - -func (c *Client) getAPIPath(path string, query url.Values, unversioned bool) string { - var apiPath = strings.TrimLeft(path, "/") - - if !unversioned { - apiPath = fmt.Sprintf("/%s/%s", c.requestedAPIVersion, apiPath) - } else { - apiPath = fmt.Sprintf("/%s", apiPath) - } - - if len(query) > 0 { - apiPath = apiPath + "?" + query.Encode() - } - - return apiPath -} - -func queryString(opts interface{}) string { - if opts == nil { - return "" - } - value := reflect.ValueOf(opts) - if value.Kind() == reflect.Ptr { - value = value.Elem() - } - if value.Kind() != reflect.Struct { - return "" - } - items := url.Values(map[string][]string{}) - for i := 0; i < value.NumField(); i++ { - field := value.Type().Field(i) - if field.PkgPath != "" { - continue - } - key := field.Tag.Get("qs") - if key == "" { - key = strings.ToLower(field.Name) - } else if key == "-" { - continue - } - addQueryStringValue(items, key, value.Field(i)) - } - return items.Encode() -} - -func addQueryStringValue(items url.Values, key string, v reflect.Value) { - switch v.Kind() { - case reflect.Bool: - if v.Bool() { - items.Add(key, "1") - } - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: - if v.Int() > 0 { - items.Add(key, strconv.FormatInt(v.Int(), 10)) - } - case reflect.Float32, reflect.Float64: - if v.Float() > 0 { - items.Add(key, strconv.FormatFloat(v.Float(), 'f', -1, 64)) - } - case reflect.String: - if v.String() != "" { - items.Add(key, v.String()) - } - case reflect.Ptr: - if !v.IsNil() { - if b, err := json.Marshal(v.Interface()); err == nil { - items.Add(key, string(b)) - } - } - case reflect.Map: - if len(v.MapKeys()) > 0 { - if b, err := json.Marshal(v.Interface()); err == nil { - items.Add(key, string(b)) - } - } - case reflect.Array, reflect.Slice: - vLen := v.Len() - if vLen > 0 { - for i := 0; i < vLen; i++ { - addQueryStringValue(items, key, v.Index(i)) - } - } - } -} - -// Error represents failures in the API. It represents a failure from the API. -type Error struct { - Status int - Message string -} - -func newError(resp *http.Response) *Error { - type jsonError struct { - Message string `json:"message"` - } - - defer resp.Body.Close() - data, err := ioutil.ReadAll(resp.Body) - if err != nil { - return &Error{Status: resp.StatusCode, Message: fmt.Sprintf("cannot read body, err: %v", err)} - } - - // attempt to unmarshal the error if in json format - jerr := &jsonError{} - err = json.Unmarshal(data, jerr) - if err != nil { - return &Error{Status: resp.StatusCode, Message: string(data)} // Failed, just return string - } - - return &Error{Status: resp.StatusCode, Message: jerr.Message} -} - -func (e *Error) Error() string { - var niceStatus string - - switch e.Status { - case 400, 500: - niceStatus = "Server failed to process your request. Was the data correct?" - case 401: - niceStatus = "Unauthenticated access of secure endpoint, please retry after authentication" - case 403: - niceStatus = "Forbidden request. Your user cannot perform this action" - case 404: - niceStatus = "Requested object not found. Does this item exist?" - } - - if niceStatus != "" { - return fmt.Sprintf("API error (%s): %s", niceStatus, e.Message) - } - return fmt.Sprintf("API error (%s): %s", http.StatusText(e.Status), e.Message) -} - -// defaultPooledTransport returns a new http.Transport with similar default -// values to http.DefaultTransport. Do not use this for transient transports as -// it can leak file descriptors over time. Only use this for transports that -// will be re-used for the same host(s). -func defaultPooledTransport(dialer Dialer) *http.Transport { - transport := &http.Transport{ - Proxy: http.ProxyFromEnvironment, - Dial: dialer.Dial, - TLSHandshakeTimeout: 5 * time.Second, - DisableKeepAlives: false, - MaxIdleConnsPerHost: 1, - } - return transport -} - -// defaultClient returns a new http.Client with similar default values to -// http.Client, but with a non-shared Transport, idle connections disabled, and -// keepalives disabled. -// If a custom dialer is not provided, one with sane defaults will be created. -func defaultClient() *http.Client { - dialer := &net.Dialer{ - Timeout: 5 * time.Second, - KeepAlive: 5 * time.Second, - } - - return &http.Client{ - Transport: defaultPooledTransport(dialer), - } -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/cluster.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/cluster.go deleted file mode 100644 index 1ba6f86451d..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/cluster.go +++ /dev/null @@ -1,48 +0,0 @@ -package storageos - -import ( - "encoding/json" - - "github.com/storageos/go-api/types" -) - -var ( - // ClusterMaintenanceAPIPrefix is a path to the HTTP endpoint for managing - // the cluster maintenance mode. - ClusterMaintenanceAPIPrefix = "cluster/maintenance" -) - -// Maintenance returns the maintenance status of the cluster -func (c *Client) Maintenance() (*types.Maintenance, error) { - resp, err := c.do("GET", ClusterMaintenanceAPIPrefix, doOptions{}) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - res := &types.Maintenance{} - if err := json.NewDecoder(resp.Body).Decode(res); err != nil { - return nil, err - } - return res, nil -} - -// EnableMaintenance enables maintenance mode in the cluster -func (c *Client) EnableMaintenance() error { - resp, err := c.do("POST", ClusterMaintenanceAPIPrefix, doOptions{}) - if err != nil { - return err - } - defer resp.Body.Close() - return nil -} - -// DisableMaintenance disables maintenance mode in the cluster -func (c *Client) DisableMaintenance() error { - resp, err := c.do("DELETE", ClusterMaintenanceAPIPrefix, doOptions{}) - if err != nil { - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/health.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/health.go deleted file mode 100644 index b1acd5db890..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/health.go +++ /dev/null @@ -1,91 +0,0 @@ -package storageos - -import ( - "context" - "encoding/json" - "fmt" - "net/http" - - "github.com/storageos/go-api/types" -) - -var ( - // HealthAPIPrefix is a partial path to the HTTP endpoint. - HealthAPIPrefix = "health" -) - -func (c *Client) ClusterHealth(ctx context.Context) ([]*types.ClusterHealthNode, error) { - status := []*types.ClusterHealthNode{} - url := fmt.Sprintf("/cluster/%s", HealthAPIPrefix) - - resp, err := c.do("GET", url, doOptions{context: ctx, retryOn: []int{http.StatusNotFound}}) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - if err := json.NewDecoder(resp.Body).Decode(&status); err != nil { - return nil, err - } - return status, nil -} - -// CPHealth returns the health of the control plane server at a given url. -func (c *Client) CPHealth(ctx context.Context, hostname string) (*types.CPHealthStatus, error) { - - url := fmt.Sprintf("http://%s:%s/v1/%s", hostname, DefaultPort, HealthAPIPrefix) - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - - req.Header.Set("User-Agent", c.userAgent) - if c.username != "" && c.secret != "" { - req.SetBasicAuth(c.username, c.secret) - } - - c.configLock.RLock() - resp, err := c.httpClient.Do(req.WithContext(ctx)) - c.configLock.RUnlock() - if err != nil { - return nil, err - } - defer resp.Body.Close() - - var status *types.CPHealthStatus - if err := json.NewDecoder(resp.Body).Decode(&status); err != nil { - return nil, err - } - - return status, nil -} - -// DPHealth returns the health of the data plane server at a given url. -func (c *Client) DPHealth(ctx context.Context, hostname string) (*types.DPHealthStatus, error) { - - url := fmt.Sprintf("http://%s:%s/v1/%s", hostname, DataplaneHealthPort, HealthAPIPrefix) - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - - req.Header.Set("User-Agent", c.userAgent) - if c.username != "" && c.secret != "" { - req.SetBasicAuth(c.username, c.secret) - } - - c.configLock.RLock() - resp, err := c.httpClient.Do(req.WithContext(ctx)) - c.configLock.RUnlock() - if err != nil { - return nil, err - } - defer resp.Body.Close() - - var status *types.DPHealthStatus - if err := json.NewDecoder(resp.Body).Decode(&status); err != nil { - return nil, err - } - - return status, nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/licence.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/licence.go deleted file mode 100644 index 425d97462cd..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/licence.go +++ /dev/null @@ -1,43 +0,0 @@ -package storageos - -import ( - "encoding/json" - - "github.com/storageos/go-api/types" -) - -const ( - // licenceAPIPrefix is a partial path to the HTTP endpoint. - licenceAPIPrefix = "licencing" -) - -// Licence returns the current licence on the server. -func (c *Client) Licence() (*types.Licence, error) { - resp, err := c.do("GET", licenceAPIPrefix, doOptions{}) - if err != nil { - return nil, err - } - defer resp.Body.Close() - licence := &types.Licence{} - if err := json.NewDecoder(resp.Body).Decode(&licence); err != nil { - return nil, err - } - return licence, nil -} - -// LicenceApply applies a licence on the server. -func (c *Client) LicenceApply(licenceKey string) error { - _, err := c.do("POST", licenceAPIPrefix, doOptions{ - data: &types.LicenceKeyContainer{Key: licenceKey}, - }) - return err -} - -// LicenceDelete removes the current licence. -func (c *Client) LicenceDelete() error { - resp, err := c.do("DELETE", licenceAPIPrefix, doOptions{}) - if err != nil { - return err - } - return resp.Body.Close() -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/logger.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/logger.go deleted file mode 100644 index 6db81231263..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/logger.go +++ /dev/null @@ -1,62 +0,0 @@ -package storageos - -import ( - "context" - "encoding/json" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - // LoggerAPIPrefix is a partial path to the HTTP endpoint. - LoggerAPIPrefix = "logs" -) - -// LoggerConfig returns every cluster node's logging configuration. -func (c *Client) LoggerConfig(opts types.ListOptions) ([]*types.Logger, error) { - - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", LoggerAPIPrefix+"/cluster/config", listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var loggers []*types.Logger - if err := json.NewDecoder(resp.Body).Decode(&loggers); err != nil { - return nil, err - } - return loggers, nil - -} - -// LoggerUpdate patches updates to logging configuration. Fields to update must -// be listed in the Fields value, and if a list of Nodes is given it will only -// apply to the nodes listed. Returns the updated configuration. -func (c *Client) LoggerUpdate(opts types.LoggerUpdateOptions) ([]*types.Logger, error) { - - resp, err := c.do("PATCH", LoggerAPIPrefix+"/cluster/config", doOptions{ - data: opts, - context: context.Background(), - }) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var loggers []*types.Logger - if err := json.NewDecoder(resp.Body).Decode(&loggers); err != nil { - return nil, err - } - return loggers, nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/login.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/login.go deleted file mode 100644 index 371a31ec756..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/login.go +++ /dev/null @@ -1,47 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" -) - -var ( - // LoginAPIPrefix is a partial path to the HTTP endpoint. - LoginAPIPrefix = "auth/login" - // ErrLoginFailed is the error returned on an unsuccessful login. - ErrLoginFailed = errors.New("failed to get token from API endpoint") -) - -// Login attemps to get a token from the API -func (c *Client) Login() (token string, err error) { - resp, err := c.do("POST", LoginAPIPrefix, doOptions{data: struct { - User string `json:"username"` - Pass string `json:"password"` - }{c.username, c.secret}}) - - if err != nil { - if _, ok := err.(*Error); ok { - return "", ErrLoginFailed - } - - return "", err - } - - if resp.StatusCode != 200 { - return "", ErrLoginFailed - } - - unmarsh := struct { - Token string `json:"token"` - }{} - - if err := json.NewDecoder(resp.Body).Decode(&unmarsh); err != nil { - return "", err - } - - if unmarsh.Token == "" { - return "", ErrLoginFailed - } - - return unmarsh.Token, nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/namespace.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/namespace.go deleted file mode 100644 index 69fee1bc8ef..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/namespace.go +++ /dev/null @@ -1,125 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" - "net/http" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - - // NamespaceAPIPrefix is a partial path to the HTTP endpoint. - NamespaceAPIPrefix = "namespaces" - - // ErrNoSuchNamespace is the error returned when the namespace does not exist. - ErrNoSuchNamespace = errors.New("no such namespace") - - // ErrNamespaceInUse is the error returned when the namespace requested to be removed is still in use. - ErrNamespaceInUse = errors.New("namespace in use and cannot be removed") -) - -// NamespaceList returns the list of available namespaces. -func (c *Client) NamespaceList(opts types.ListOptions) ([]*types.Namespace, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - namespace: opts.Namespace, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", NamespaceAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var namespaces []*types.Namespace - if err := json.NewDecoder(resp.Body).Decode(&namespaces); err != nil { - return nil, err - } - return namespaces, nil -} - -// Namespace returns a namespace by its reference. -func (c *Client) Namespace(ref string) (*types.Namespace, error) { - resp, err := c.do("GET", NamespaceAPIPrefix+"/"+ref, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchNamespace - } - return nil, err - } - defer resp.Body.Close() - var namespace types.Namespace - if err := json.NewDecoder(resp.Body).Decode(&namespace); err != nil { - return nil, err - } - return &namespace, nil -} - -// NamespaceCreate creates a namespace on the server and returns the new object. -func (c *Client) NamespaceCreate(opts types.NamespaceCreateOptions) (*types.Namespace, error) { - resp, err := c.do("POST", NamespaceAPIPrefix, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - var namespace types.Namespace - if err := json.NewDecoder(resp.Body).Decode(&namespace); err != nil { - return nil, err - } - return &namespace, nil -} - -// NamespaceUpdate updates a namespace on the server and returns the updated object. -func (c *Client) NamespaceUpdate(opts types.NamespaceCreateOptions) (*types.Namespace, error) { - resp, err := c.do("PUT", NamespaceAPIPrefix+"/"+opts.Name, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - var namespace types.Namespace - if err := json.NewDecoder(resp.Body).Decode(&namespace); err != nil { - return nil, err - } - return &namespace, nil -} - -// NamespaceDelete removes a namespace by its reference. -func (c *Client) NamespaceDelete(opts types.DeleteOptions) error { - deleteOpts := doOptions{ - force: opts.Force, - context: opts.Context, - } - resp, err := c.do("DELETE", NamespaceAPIPrefix+"/"+opts.Name, deleteOpts) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchNamespace - } - if e.Status == http.StatusConflict { - return ErrNamespaceInUse - } - - // namespace can't be deleted yet, unless force is supplied - if e.Status == http.StatusPreconditionFailed { - return err - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/errors.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/errors.go deleted file mode 100644 index f61980d08cb..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/errors.go +++ /dev/null @@ -1,31 +0,0 @@ -package netutil - -import ( - "errors" - "fmt" - "strings" - - "github.com/storageos/go-api/serror" -) - -// ErrAllFailed produces a typed StorageOS error which should be used to indicate that -// the API is not contactable for all of the supplied node addresses. -func ErrAllFailed(addrs []string) error { - msg := fmt.Sprintf("failed to dial all known cluster members, (%s)", strings.Join(addrs, ",")) - help := "ensure that the value of $STORAGEOS_HOST (or the -H flag) is correct, and that there are healthy StorageOS nodes in this cluster" - - return serror.NewTypedStorageOSError(serror.APIUncontactable, nil, msg, help) -} - -func newInvalidNodeError(err error) error { - msg := fmt.Sprintf("invalid node format: %s", err) - help := "please check the format of $STORAGEOS_HOST (or the -H flag) complies with the StorageOS JOIN format" - - return serror.NewTypedStorageOSError(serror.InvalidHostConfig, err, msg, help) -} - -var ( - errUnsupportedScheme = errors.New("unsupported URL scheme") - errInvalidHostName = errors.New("invalid hostname") - errInvalidPortNumber = errors.New("invalid port number") -) diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/netutil.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/netutil.go deleted file mode 100644 index 7f9c550c46e..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/netutil.go +++ /dev/null @@ -1,5 +0,0 @@ -// Package netutil provides network related errors and helper functions. -package netutil - -// DefaultDialPort is the default port which the API is contacted on. -const DefaultDialPort = "5705" diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/parsers.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/parsers.go deleted file mode 100644 index 932c7795b80..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/netutil/parsers.go +++ /dev/null @@ -1,84 +0,0 @@ -package netutil - -import ( - "net/url" - "strconv" - "strings" -) - -const ( - httpScheme = "http" - httpsScheme = "https" - tcpScheme = "tcp" -) - -// AddressesFromNodes takes a list of node hosts and attempts to return a list of hosts in host:port -// format along with any error encountered. -// -// The function accepts node hosts in URL, ip, ip:port, resolvable-name and resolvable-name:port -// formats and will append the default port value if needed. For hosts where the scheme has been omitted, -// the scheme for the first host will be used. If the first host has no scheme, it will default to http. -func AddressesFromNodes(nodes []string) ([]string, error) { - var addresses []string - - var scheme string - - for _, node := range nodes { - address := node - // If no scheme present, set the first scheme - if !strings.Contains(address, "://") { - if scheme == "" { - scheme = httpScheme - } - address = strings.Join([]string{scheme, address}, "://") - } - - url, err := url.Parse(address) - if err != nil { - return nil, newInvalidNodeError(err) - } - - switch url.Scheme { - case tcpScheme: - url.Scheme = httpScheme - fallthrough - case httpScheme, httpsScheme: - if scheme == "" { - scheme = url.Scheme - } - default: - return nil, newInvalidNodeError(errUnsupportedScheme) - } - - host := url.Hostname() - if host == "" { - return nil, newInvalidNodeError(errInvalidHostName) - } - - // Given input like "http://localhost:8080:8383", url.Parse() will - // return host as "localhost:8000", which isn't a vaild DNS name. - if strings.Contains(host, ":") { - return nil, newInvalidNodeError(errInvalidHostName) - } - - port := url.Port() - if port == "" { - port = DefaultDialPort - } - if !validPort(port) { - return nil, newInvalidNodeError(errInvalidPortNumber) - } - - addresses = append(addresses, strings.TrimRight(url.String(), "/")) - } - - return addresses, nil -} - -func validPort(port string) bool { - intPort, err := strconv.Atoi(port) - - return (err == nil) && - (intPort > 0) && - (intPort <= 65535) -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/network_diagnostics.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/network_diagnostics.go deleted file mode 100644 index 5d8a0bcc8f4..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/network_diagnostics.go +++ /dev/null @@ -1,35 +0,0 @@ -package storageos - -import ( - "encoding/json" - "net/http" - "path" - - "github.com/storageos/go-api/types" -) - -var ( - // NetworkDiagnosticsAPIPrefix is a partial path to the HTTP endpoint for - // the node connectivity diagnostics report. - NetworkDiagnosticsAPIPrefix = "diagnostics/network" -) - -// NetworkDiagnostics returns a collection of network connectivity reports. If -// a reference to a node is given, it will only check connectivity from that -// node. Otherwise, connectivity between all cluster nodes will be returned. -func (c *Client) NetworkDiagnostics(ref string) (types.ConnectivityResults, error) { - resp, err := c.do("GET", path.Join(NetworkDiagnosticsAPIPrefix, ref), doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchNode - } - return nil, err - } - defer resp.Body.Close() - - var results types.ConnectivityResults - if err := json.NewDecoder(resp.Body).Decode(&results); err != nil { - return nil, err - } - return results, nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/node.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/node.go deleted file mode 100644 index 4188f582a4e..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/node.go +++ /dev/null @@ -1,110 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" - "net/http" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - - // NodeAPIPrefix is a partial path to the HTTP endpoint. - NodeAPIPrefix = "nodes" - - // ErrNoSuchNode is the error returned when the node does not exist. - ErrNoSuchNode = errors.New("no such node") - - // ErrNodeInUse is the error returned when the node requested to be removed is still in use. - ErrNodeInUse = errors.New("node in use and cannot be removed") -) - -// NodeList returns the list of available nodes. -func (c *Client) NodeList(opts types.ListOptions) ([]*types.Node, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", NodeAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var nodes []*types.Node - if err := json.NewDecoder(resp.Body).Decode(&nodes); err != nil { - return nil, err - } - return nodes, nil -} - -// Node returns a node by its reference. -func (c *Client) Node(ref string) (*types.Node, error) { - - resp, err := c.do("GET", NodeAPIPrefix+"/"+ref, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchNode - } - return nil, err - } - defer resp.Body.Close() - var node types.Node - if err := json.NewDecoder(resp.Body).Decode(&node); err != nil { - return nil, err - } - return &node, nil -} - -// NodeUpdate updates a node on the server. -func (c *Client) NodeUpdate(opts types.NodeUpdateOptions) (*types.Node, error) { - ref := opts.Name - if IsUUID(opts.ID) { - ref = opts.ID - } - resp, err := c.do("PUT", NodeAPIPrefix+"/"+ref, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var node types.Node - if err := json.NewDecoder(resp.Body).Decode(&node); err != nil { - return nil, err - } - return &node, nil -} - -// NodeDelete removes a node by its reference. -func (c *Client) NodeDelete(opts types.DeleteOptions) error { - deleteOpts := doOptions{ - namespace: opts.Namespace, - force: opts.Force, - context: opts.Context, - } - resp, err := c.do("DELETE", NodeAPIPrefix+"/"+opts.Name, deleteOpts) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchNode - } - if e.Status == http.StatusConflict { - return ErrNodeInUse - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/policy.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/policy.go deleted file mode 100644 index f5c1a050df7..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/policy.go +++ /dev/null @@ -1,102 +0,0 @@ -package storageos - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - // PolicyAPIPrefix is a partial path to the HTTP endpoint. - PolicyAPIPrefix = "policies" - // ErrNoSuchPolicy is the error returned when the policy does not exist. - ErrNoSuchPolicy = errors.New("no such policy") -) - -// nopMarshaler is an alias to a []byte that implements json.Marshaler -// it bypasses the base64 encoded string representation that json will give byte slices. -// It should only be used to wrap []byte types containing pre-rendered valid json that will later -// (out of the caller's control) be run through json.Marshal -type nopMarshaler []byte - -func (n *nopMarshaler) MarshalJSON() ([]byte, error) { - return *n, nil -} - -// PolicyCreate creates a policy on the server. -func (c *Client) PolicyCreate(ctx context.Context, jsonl []byte) error { - nopm := nopMarshaler(jsonl) - _, err := c.do("POST", PolicyAPIPrefix, doOptions{ - data: &nopm, - context: ctx, - headers: map[string]string{"Content-Type": "application/x-jsonlines"}, - }) - return err -} - -// Policy returns a policy on the server by ID. -func (c *Client) Policy(id string) (*types.Policy, error) { - path := fmt.Sprintf("%s/%s", PolicyAPIPrefix, id) - resp, err := c.do("GET", path, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchPolicy - } - return nil, err - } - defer resp.Body.Close() - - var policy *types.Policy - if err := json.NewDecoder(resp.Body).Decode(&policy); err != nil { - return nil, err - } - return policy, nil -} - -// PolicyList returns the list of policies on the server. -func (c *Client) PolicyList(opts types.ListOptions) (types.PolicySet, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - namespace: opts.Namespace, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", PolicyAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - var policies types.PolicySet - if err := json.NewDecoder(resp.Body).Decode(&policies); err != nil { - return nil, err - } - return policies, nil -} - -// PolicyDelete deletes a policy on the server by ID. -func (c *Client) PolicyDelete(opts types.DeleteOptions) error { - resp, err := c.do("DELETE", PolicyAPIPrefix+"/"+opts.Name, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchPolicy - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/pool.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/pool.go deleted file mode 100644 index b383e77007c..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/pool.go +++ /dev/null @@ -1,117 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" - "net/http" - - "github.com/storageos/go-api/types" -) - -var ( - - // PoolAPIPrefix is a partial path to the HTTP endpoint. - PoolAPIPrefix = "pools" - - // ErrNoSuchPool is the error returned when the pool does not exist. - ErrNoSuchPool = errors.New("no such pool") - - // ErrPoolInUse is the error returned when the pool requested to be removed is still in use. - ErrPoolInUse = errors.New("pool in use and cannot be removed") -) - -// PoolList returns the list of available pools. -func (c *Client) PoolList(opts types.ListOptions) ([]*types.Pool, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - namespace: opts.Namespace, - context: opts.Context, - } - resp, err := c.do("GET", PoolAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var pools []*types.Pool - if err := json.NewDecoder(resp.Body).Decode(&pools); err != nil { - return nil, err - } - return pools, nil -} - -// PoolCreate creates a pool on the server and returns the new object. -func (c *Client) PoolCreate(opts types.PoolOptions) (*types.Pool, error) { - resp, err := c.do("POST", PoolAPIPrefix, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - var pool types.Pool - if err := json.NewDecoder(resp.Body).Decode(&pool); err != nil { - return nil, err - } - return &pool, nil -} - -// PoolUpdate - update pool -func (c *Client) PoolUpdate(opts types.PoolOptions) (*types.Pool, error) { - ref := opts.Name - if IsUUID(opts.ID) { - ref = opts.ID - } - - resp, err := c.do("PUT", PoolAPIPrefix+"/"+ref, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - var pool types.Pool - if err := json.NewDecoder(resp.Body).Decode(&pool); err != nil { - return nil, err - } - return &pool, nil -} - -// Pool returns a pool by its reference. -func (c *Client) Pool(ref string) (*types.Pool, error) { - resp, err := c.do("GET", PoolAPIPrefix+"/"+ref, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchPool - } - return nil, err - } - defer resp.Body.Close() - var pool types.Pool - if err := json.NewDecoder(resp.Body).Decode(&pool); err != nil { - return nil, err - } - return &pool, nil -} - -// PoolDelete removes a pool by its reference. -func (c *Client) PoolDelete(opts types.DeleteOptions) error { - deleteOpts := doOptions{ - force: opts.Force, - context: opts.Context, - } - resp, err := c.do("DELETE", PoolAPIPrefix+"/"+opts.Name, deleteOpts) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchPool - } - if e.Status == http.StatusConflict { - return ErrPoolInUse - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/rule.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/rule.go deleted file mode 100644 index af1dc196849..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/rule.go +++ /dev/null @@ -1,141 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" - "net/http" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - - // RuleAPIPrefix is a partial path to the HTTP endpoint. - RuleAPIPrefix = "rules" - - // ErrNoSuchRule is the error returned when the rule does not exist. - ErrNoSuchRule = errors.New("no such rule") - - // ErrRuleInUse is the error returned when the rule requested to be removed is still in use. - ErrRuleInUse = errors.New("rule in use and cannot be removed") -) - -// RuleList returns the list of available rules. -func (c *Client) RuleList(opts types.ListOptions) ([]*types.Rule, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - namespace: opts.Namespace, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", RuleAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var rules []*types.Rule - if err := json.NewDecoder(resp.Body).Decode(&rules); err != nil { - return nil, err - } - return rules, nil -} - -// Rule returns a rule by its reference. -func (c *Client) Rule(namespace string, ref string) (*types.Rule, error) { - path, err := namespacedRefPath(namespace, RuleAPIPrefix, ref) - if err != nil { - return nil, err - } - resp, err := c.do("GET", path, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchRule - } - return nil, err - } - defer resp.Body.Close() - var rule types.Rule - if err := json.NewDecoder(resp.Body).Decode(&rule); err != nil { - return nil, err - } - return &rule, nil -} - -// RuleCreate creates a rule on the server and returns the new object. -func (c *Client) RuleCreate(opts types.RuleCreateOptions) (*types.Rule, error) { - path, err := namespacedPath(opts.Namespace, RuleAPIPrefix) - if err != nil { - return nil, err - } - - resp, err := c.do("POST", path, doOptions{ - data: opts, - // namespace: opts.Namespace, - context: opts.Context, - }) - if err != nil { - return nil, err - } - var rule types.Rule - if err := json.NewDecoder(resp.Body).Decode(&rule); err != nil { - return nil, err - } - return &rule, nil -} - -// RuleUpdate updates a rule on the server. -func (c *Client) RuleUpdate(opts types.RuleUpdateOptions) (*types.Rule, error) { - ref := opts.Name - if IsUUID(opts.ID) { - ref = opts.ID - } - - path, err := namespacedRefPath(opts.Namespace, RuleAPIPrefix, ref) - if err != nil { - return nil, err - } - resp, err := c.do("PUT", path, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var rule types.Rule - if err := json.NewDecoder(resp.Body).Decode(&rule); err != nil { - return nil, err - } - return &rule, nil -} - -// RuleDelete removes a rule by its reference. -func (c *Client) RuleDelete(opts types.DeleteOptions) error { - deleteOpts := doOptions{ - namespace: opts.Namespace, - force: opts.Force, - context: opts.Context, - } - resp, err := c.do("DELETE", RuleAPIPrefix+"/"+opts.Name, deleteOpts) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchRule - } - if e.Status == http.StatusConflict { - return ErrRuleInUse - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/error_kind.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/error_kind.go deleted file mode 100644 index 53531398769..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/error_kind.go +++ /dev/null @@ -1,11 +0,0 @@ -package serror - -//go:generate stringer -type=StorageOSErrorKind error_kind.go -type StorageOSErrorKind int - -// Known error kinds -const ( - UnknownError StorageOSErrorKind = iota - APIUncontactable - InvalidHostConfig -) diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/kind_lookup_map.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/kind_lookup_map.go deleted file mode 100644 index f96ce6a9d9a..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/kind_lookup_map.go +++ /dev/null @@ -1,37 +0,0 @@ -package serror - -import ( - "encoding/json" - "fmt" - "strings" -) - -var kindLookupMap map[string]StorageOSErrorKind - -func init() { - kindLookupMap = make(map[string]StorageOSErrorKind) - - // Populate the lookup map with all the known constants - for i := StorageOSErrorKind(0); !strings.HasPrefix(i.String(), "StorageOSErrorKind("); i++ { - kindLookupMap[i.String()] = i - } -} - -func (s *StorageOSErrorKind) UnmarshalJSON(b []byte) error { - str := "" - if err := json.Unmarshal(b, &str); err != nil { - return err - } - - v, ok := kindLookupMap[str] - if !ok { - return fmt.Errorf("Failed to unmarshal ErrorKind %s", s) - } - - *s = v - return nil -} - -func (s *StorageOSErrorKind) MarshalJSON() ([]byte, error) { - return json.Marshal(s.String()) -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/storageos_error.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/storageos_error.go deleted file mode 100644 index 332c19ad677..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/storageos_error.go +++ /dev/null @@ -1,34 +0,0 @@ -package serror - -import ( - "encoding/json" -) - -type StorageOSError interface { - // embedding error provides compatibility with standard error handling code - error - - // Encoding/decoding methods to help errors traverse API boundaries - json.Marshaler - json.Unmarshaler - - Err() error // Returns the underlying error that caused this event - String() string // A short string representing the error (for logging etc) - Help() string // A larger string that should provide informative debug instruction to users - Kind() StorageOSErrorKind // A type representing a set of known error conditions, helpful to switch on - Extra() map[string]string // A container for error specific information - - // TODO: should we include callstack traces here? We could have a debug mode for it. -} - -func ErrorKind(err error) StorageOSErrorKind { - if serr, ok := err.(StorageOSError); ok { - return serr.Kind() - } - return UnknownError -} - -func IsStorageOSError(err error) bool { - _, ok := err.(StorageOSError) - return ok -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/storageoserrorkind_string.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/storageoserrorkind_string.go deleted file mode 100644 index fafdccc7460..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/storageoserrorkind_string.go +++ /dev/null @@ -1,16 +0,0 @@ -// Code generated by "stringer -type=StorageOSErrorKind error_kind.go"; DO NOT EDIT. - -package serror - -import "strconv" - -const _StorageOSErrorKind_name = "UnknownErrorAPIUncontactableInvalidHostConfig" - -var _StorageOSErrorKind_index = [...]uint8{0, 12, 28, 45} - -func (i StorageOSErrorKind) String() string { - if i < 0 || i >= StorageOSErrorKind(len(_StorageOSErrorKind_index)-1) { - return "StorageOSErrorKind(" + strconv.FormatInt(int64(i), 10) + ")" - } - return _StorageOSErrorKind_name[_StorageOSErrorKind_index[i]:_StorageOSErrorKind_index[i+1]] -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/typed_error.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/typed_error.go deleted file mode 100644 index 553adec4398..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/serror/typed_error.go +++ /dev/null @@ -1,64 +0,0 @@ -package serror - -import ( - "encoding/json" -) - -func NewTypedStorageOSError(kind StorageOSErrorKind, err error, msg string, help string) StorageOSError { - return &typedStorageOSError{ - internal: &internal_TypedStorageOSError{ - ErrorKind: &kind, - Cause: err, - ErrMessage: msg, - HelpMessage: help, - }, - } -} - -func NewUntypedStorageOSError(err error, msg string, help string) StorageOSError { - var kind StorageOSErrorKind = UnknownError - - return &typedStorageOSError{ - internal: &internal_TypedStorageOSError{ - ErrorKind: &kind, - Cause: err, - ErrMessage: msg, - HelpMessage: help, - }, - } -} - -type internal_TypedStorageOSError struct { - ErrorKind *StorageOSErrorKind `json:"error_kind"` - Cause error `json:"caused_by"` - ErrMessage string `json:"error_message"` - HelpMessage string `json:"help_message"` - ExtraMap map[string]string `json:"extra"` -} - -type typedStorageOSError struct { - internal *internal_TypedStorageOSError -} - -func (t *typedStorageOSError) MarshalJSON() ([]byte, error) { - return json.Marshal(t.internal) -} - -func (t *typedStorageOSError) UnmarshalJSON(d []byte) error { - internal := &internal_TypedStorageOSError{} - - err := json.Unmarshal(d, internal) - if err != nil { - return err - } - - t.internal = internal - return nil -} - -func (t *typedStorageOSError) Error() string { return t.String() } -func (t *typedStorageOSError) Err() error { return t.internal.Cause } -func (t *typedStorageOSError) String() string { return t.internal.ErrMessage } -func (t *typedStorageOSError) Help() string { return t.internal.HelpMessage } -func (t *typedStorageOSError) Kind() StorageOSErrorKind { return *t.internal.ErrorKind } -func (t *typedStorageOSError) Extra() map[string]string { return t.internal.ExtraMap } diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/server_version.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/server_version.go deleted file mode 100644 index 3e44aced436..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/server_version.go +++ /dev/null @@ -1,28 +0,0 @@ -package storageos - -import ( - "context" - "encoding/json" - "net/http" - - "github.com/storageos/go-api/types" -) - -// ServerVersion returns the server's version and runtime info. -func (c *Client) ServerVersion(ctx context.Context) (*types.VersionInfo, error) { - - // Send as unversioned - resp, err := c.do("GET", "version", doOptions{context: ctx, unversioned: true}) - if err != nil { - return nil, err - } - if resp.StatusCode != http.StatusOK { - return nil, newError(resp) - } - defer resp.Body.Close() - var version types.VersionInfo - if err := json.NewDecoder(resp.Body).Decode(&version); err != nil { - return nil, err - } - return &version, nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/template.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/template.go deleted file mode 100644 index ca5d4a32292..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/template.go +++ /dev/null @@ -1,90 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" - "io/ioutil" - "net/http" - "strconv" - - "github.com/storageos/go-api/types" -) - -var ( - - // TemplateAPIPrefix is a partial path to the HTTP endpoint. - TemplateAPIPrefix = "/templates" - - // ErrNoSuchTemplate is the error returned when the template does not exist. - ErrNoSuchTemplate = errors.New("no such template") - - // ErrTemplateInUse is the error returned when the template requested to be removed is still in use. - ErrTemplateInUse = errors.New("template in use and cannot be removed") -) - -// TemplateList returns the list of available templates. -func (c *Client) TemplateList(opts types.ListOptions) ([]types.Template, error) { - path := TemplateAPIPrefix + "?" + queryString(opts) - resp, err := c.do("GET", path, doOptions{context: opts.Context}) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var templates []types.Template - if err := json.NewDecoder(resp.Body).Decode(&templates); err != nil { - return nil, err - } - return templates, nil -} - -// TemplateCreate creates a template on the server and returns the new object. -func (c *Client) TemplateCreate(opts types.TemplateCreateOptions) (string, error) { - resp, err := c.do("POST", TemplateAPIPrefix, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return "", err - } - defer resp.Body.Close() - out, err := ioutil.ReadAll(resp.Body) - if err != nil { - return "", err - } - return strconv.Unquote(string(out)) -} - -// Template returns a template by its reference. -func (c *Client) Template(ref string) (*types.Template, error) { - resp, err := c.do("GET", TemplateAPIPrefix+"/"+ref, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchTemplate - } - return nil, err - } - defer resp.Body.Close() - var template types.Template - if err := json.NewDecoder(resp.Body).Decode(&template); err != nil { - return nil, err - } - return &template, nil -} - -// TemplateDelete removes a template by its reference. -func (c *Client) TemplateDelete(ref string) error { - resp, err := c.do("DELETE", TemplateAPIPrefix+"/"+ref, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchTemplate - } - if e.Status == http.StatusConflict { - return ErrTemplateInUse - } - } - return nil - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/auth.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/auth.go deleted file mode 100644 index 16f516b7cb8..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/auth.go +++ /dev/null @@ -1,14 +0,0 @@ -package types - -// AuthConfig contains authorization information for connecting to a Registry -type AuthConfig struct { - Name string `json:"name,omitempty"` - Username string `json:"username,omitempty"` - Password string `json:"password,omitempty"` - Auth string `json:"auth,omitempty"` - ServerAddress string `json:"serveraddress,omitempty"` - - // IdentityToken is used to authenticate the user and get - // an access token for the registry. - IdentityToken string `json:"identitytoken,omitempty"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/capacity_stats.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/capacity_stats.go deleted file mode 100644 index 865e253d8a4..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/capacity_stats.go +++ /dev/null @@ -1,25 +0,0 @@ -package types - -// ErrCapacityStatsUnchanged can be used when comparing stats -const ErrCapacityStatsUnchanged = "no changes" - -// CapacityStats is used to report capacity statistics on pools and controllers. -type CapacityStats struct { - - // TotalCapacityBytes is the object's total capacity in bytes. - TotalCapacityBytes uint64 `json:"totalCapacityBytes"` - - // AvailableCapacityBytes is the object's available capacity in bytes. - AvailableCapacityBytes uint64 `json:"availableCapacityBytes"` - - // ProvisionedCapacityBytes is the object's provisioned capacity in bytes. - ProvisionedCapacityBytes uint64 `json:"provisionedCapacityBytes"` -} - -// IsEqual checks if capacity values are the same -func (c CapacityStats) IsEqual(n CapacityStats) bool { - if c == n { - return true - } - return false -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/cluster.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/cluster.go deleted file mode 100644 index 65625d01210..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/cluster.go +++ /dev/null @@ -1,10 +0,0 @@ -package types - -import "time" - -// Maintenance is used to place the cluster in maintenance mode. -type Maintenance struct { - Enabled bool `json:"enabled"` - UpdatedBy string `json:"updatedBy"` - UpdatedAt time.Time `json:"updatedAt"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/connectivity.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/connectivity.go deleted file mode 100644 index 8d3177d1ac1..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/connectivity.go +++ /dev/null @@ -1,41 +0,0 @@ -package types - -import "time" - -// ConnectivityResult capture's a node connectivity report to a given target. -type ConnectivityResult struct { - // Label is a human-readable reference for the service being tested. - Label string `json:"label"` - - // Address is the host:port of the service being tested. - Address string `json:"address"` - - // Source is a human-readable reference for the source host where the tests - // were run from. - Source string `json:"source"` - - // LatencyNS is the duration in nanoseconds that the check took to complete. - // Will also be set on unsuccessful attempts. - LatencyNS time.Duration `json:"latency_ns"` - - // Error is set if the test returned an error. - Error string `json:"error"` -} - -// IsOK returns true iff no error -func (r ConnectivityResult) IsOK() bool { - return len(r.Error) == 0 -} - -// ConnectivityResults is a collection of connectivty reports. -type ConnectivityResults []ConnectivityResult - -// IsOK returns true iff no error in any result. -func (r ConnectivityResults) IsOK() bool { - for _, result := range r { - if !result.IsOK() { - return false - } - } - return true -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/delete_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/delete_options.go deleted file mode 100644 index 0355f7d5f5e..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/delete_options.go +++ /dev/null @@ -1,24 +0,0 @@ -package types - -import "context" - -// DeleteOptions are available parameters for deleting existing volumes. -type DeleteOptions struct { - - // Volume unique ID. - // Read Only: true - ID string `json:"id"` - - // Volume name. - // Read Only: true - Name string `json:"name"` - - // Namespace is the object scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // Force will cause the volume to be deleted even if it's in use. - Force bool `json:"force"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/deployment.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/deployment.go deleted file mode 100644 index cdc33e4076f..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/deployment.go +++ /dev/null @@ -1,36 +0,0 @@ -package types - -import "time" - -// Deployment Volume master or replica deployment details. -// swagger:model Deployment -type Deployment struct { - - // Deployment unique ID - // Read Only: true - ID string `json:"id"` - - // Inode number - // Read Only: true - Inode uint32 `json:"inode"` - - // Node ID - // Read Only: true - Node string `json:"node"` - - // Node name - // Read Only: true - NodeName string `json:"nodeName"` - - // Health - // Read Only: true - Health string `json:"health"` - - // Status - // Read Only: true - Status string `json:"status"` - - // Created at - // Read Only: true - CreatedAt time.Time `json:"createdAt"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/driver_instance.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/driver_instance.go deleted file mode 100644 index 2ef16b0db32..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/driver_instance.go +++ /dev/null @@ -1,86 +0,0 @@ -package types - -import "encoding/gob" - -// DriverInstance is used to define an instance of a storage capacity driver. -type DriverInstance struct { - - // Instance unique ID. - // Read Only: true - ID string `json:"id"` - - // Instance name. - Name string `json:"name"` - - // Instance description. - Description string `json:"description"` - - // Flag describing whether the template is active. - // Default: false - Active bool `json:"active"` - - // Config is JSON struct that is passed directly to the driver. There is no - // specific format, and the driver is responsible for validation. - Config interface{} `json:"config"` - - // Labels define a list of labels that describe the driver instance. These - // are inherited from the pool when the driver instance is created. - Labels []string `json:"labels"` - - // ControllerName specifies the controller that this instance is running on. - ControllerName string `json:"controllerName"` - - // PoolID refers to the pool that this driver instance relates to. - PoolID string `json:"poolID"` - - // DriverName specifies which capacity driver this is an instance of. - DriverName string `json:"driverName"` - - // CapacityStats tracks that capacity usage of this driver instance on the - // current controller. - CapacityStats CapacityStats `json:"capacityStats"` -} - -// DriverInstances is a collection of Driver instance objects. -type DriverInstances []*DriverInstance - -func init() { - gob.Register(DriverInstance{}) - gob.Register([]interface{}{}) -} - -// Find an instance matching the parameters. -func (i *DriverInstances) Find(pool string, driver string, controller string) *DriverInstance { - - for _, inst := range *i { - if inst.PoolID == pool && inst.DriverName == driver && inst.ControllerName == controller { - return inst - } - } - return nil -} - -// Add a new instance to the list of instances. -func (i *DriverInstances) Add(new *DriverInstance) { - - for _, inst := range *i { - // Skip if it already exists - if inst.PoolID == new.PoolID && inst.DriverName == new.DriverName && inst.ControllerName == new.ControllerName { - return - } - } - *i = append(*i, new) -} - -// Remove an instance to the list of instances. -func (i *DriverInstances) Remove(id string) { - - // TODO: not working - // for ndx, inst := range *i { - // if inst.ID == id { - // // splice out the item to remove - // *i = append(*i[:ndx], *i[ndx+1:]...) - // return - // } - // } -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/error_response.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/error_response.go deleted file mode 100644 index dc942d9d9ef..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/error_response.go +++ /dev/null @@ -1,13 +0,0 @@ -package types - -// This file was generated by the swagger tool. -// Editing this file might prove futile when you re-run the swagger generate command - -// ErrorResponse Represents an error. -// swagger:model ErrorResponse -type ErrorResponse struct { - - // The error message. - // Required: true - Message string `json:"message"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/events.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/events.go deleted file mode 100644 index 6e3adf07e6a..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/events.go +++ /dev/null @@ -1,60 +0,0 @@ -package types - -import "time" - -// EventType describes the type of event -type EventType string - -// EventTypes are added to events to assist with type assertions -const ( - RequestType EventType = "request" - ResponseType = "response" - HeartbeatType = "heartbeat" - BackupType = "backup" -) - -// Event describes the fields that all events should implement. Event is -// intended to be inherherited in more specific Event types. -type Event struct { - ID string `json:"id"` - // Parent is used to specify parent event - Parent string `json:"parent"` - EventType EventType `json:"eventType"` - Action string `json:"action"` - Timestamp int64 `json:"timestamp"` - Status string `json:"status"` - Message string `json:"message"` - Log []string `json:"log"` - ProgressPercent int `json:"progressPercent"` - CreatedBy string `json:"createdBy"` - - Target string `json:"target"` - ActionPayload interface{} `json:"actionPayload"` - - // payload can be encoded into bytes as well - ActionPayloadBytes []byte `json:"actionPayloadBts"` - - UpdatedAt time.Time `json:"updatedAt"` - CreatedAt time.Time `json:"createdAt"` - // retry related value - Retry bool `json:"retry"` - RetriedAt time.Time `json:"retriedAt"` - Attempts int `json:"attempts"` - - // optional parameter - Deadline time.Time `json:"deadline"` - - // optional events to dispatch - Rollback []*Request `json:"rollback"` - RollbackDone bool `json:"rollbackDone"` - - Subject string `json:"subject"` // or "queue" - - // controller ID which created this event - OriginController string `json:"originController"` -} - -// Request is the message structure used for sending request events -type Request struct { - Event -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/health.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/health.go deleted file mode 100644 index 6efe0a4079b..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/health.go +++ /dev/null @@ -1,148 +0,0 @@ -package types - -import "encoding/json" - -type SubModuleStatus struct { - Status string `json:"status"` - UpdatedAt string `json:"updatedAt"` - ChangedAt string `json:"changedAt"` - Message string `json:"message"` -} - -type NamedSubModuleStatus struct { - Name string - SubModuleStatus -} - -type ClusterHealthNode struct { - NodeID string `json:"nodeID"` - NodeName string `json:"nodeName"` - Submodules struct { - DirectFSInitiator SubModuleStatus `json:"directfs_initiator"` - Director SubModuleStatus `json:"director"` - KV SubModuleStatus `json:"kv"` - KVWrite SubModuleStatus `json:"kv_write"` - NATS SubModuleStatus `json:"nats"` - Presentation SubModuleStatus `json:"presentation"` - RDB SubModuleStatus `json:"rdb"` - } `json:"submodules"` -} - -type CPHealthStatus struct { - KV SubModuleStatus - KVWrite SubModuleStatus - NATS SubModuleStatus - Scheduler SubModuleStatus -} - -func (c *CPHealthStatus) ToNamedSubmodules() []NamedSubModuleStatus { - return []NamedSubModuleStatus{ - {Name: "nats", SubModuleStatus: c.NATS}, - {Name: "kv", SubModuleStatus: c.KV}, - {Name: "kv_write", SubModuleStatus: c.KVWrite}, - {Name: "scheduler", SubModuleStatus: c.Scheduler}, - } -} - -func (c *CPHealthStatus) UnmarshalJSON(data []byte) error { - unmarsh := struct { - Submodules struct { - KV SubModuleStatus `json:"kv"` - KVWrite SubModuleStatus `json:"kv_write"` - NATS SubModuleStatus `json:"nats"` - Scheduler SubModuleStatus `json:"scheduler"` - } `json:"submodules"` - }{} - - if err := json.Unmarshal(data, &unmarsh); err != nil { - return err - } - - c.KV = unmarsh.Submodules.KV - c.KVWrite = unmarsh.Submodules.KVWrite - c.NATS = unmarsh.Submodules.NATS - c.Scheduler = unmarsh.Submodules.Scheduler - - return nil -} - -type DPHealthStatus struct { - DirectFSClient SubModuleStatus - DirectFSServer SubModuleStatus - Director SubModuleStatus - FSDriver SubModuleStatus - FS SubModuleStatus -} - -func (d *DPHealthStatus) ToNamedSubmodules() []NamedSubModuleStatus { - return []NamedSubModuleStatus{ - {Name: "dfs_client", SubModuleStatus: d.DirectFSClient}, - {Name: "dfs_server", SubModuleStatus: d.DirectFSServer}, - {Name: "director", SubModuleStatus: d.Director}, - {Name: "fs_driver", SubModuleStatus: d.FSDriver}, - {Name: "fs", SubModuleStatus: d.FS}, - } -} - -func (d *DPHealthStatus) UnmarshalJSON(data []byte) error { - unmarsh := struct { - Submodules struct { - DirectFSClient SubModuleStatus `json:"directfs-client"` - DirectFSServer SubModuleStatus `json:"directfs-server"` - Director SubModuleStatus `json:"director"` - FSDriver SubModuleStatus `json:"filesystem-driver"` - FS SubModuleStatus `json:"fs"` - } `json:"submodules"` - }{} - - if err := json.Unmarshal(data, &unmarsh); err != nil { - return err - } - - d.DirectFSClient = unmarsh.Submodules.DirectFSClient - d.DirectFSServer = unmarsh.Submodules.DirectFSServer - d.Director = unmarsh.Submodules.Director - d.FSDriver = unmarsh.Submodules.FSDriver - d.FS = unmarsh.Submodules.FS - - return nil -} - -// HealthStatus is the health status json object. -type HealthStatus struct { - Submodules HealthSubmodules `json:"submodules"` -} - -// HealthSubmodules is the "submodules" attribuet of HealthStatus. -type HealthSubmodules struct { - KV SubModuleStatus `json:"kv,omitempty"` - KVWrite SubModuleStatus `json:"kv_write,omitempty"` - NATS SubModuleStatus `json:"nats,omitempty"` - Scheduler SubModuleStatus `json:"scheduler,omitempty"` - DirectFSClient SubModuleStatus `json:"directfs_initiator,omitempty"` - DirectFSServer SubModuleStatus `json:"directfs_responder,omitempty"` - Director SubModuleStatus `json:"director,omitempty"` - FSDriver SubModuleStatus `json:"rdb,omitempty"` - FS SubModuleStatus `json:"presentation,omitempty"` -} - -// ToCPHealthStatus returns only CPHealthStatus from the HealthStatus. -func (h *HealthStatus) ToCPHealthStatus() *CPHealthStatus { - return &CPHealthStatus{ - KV: h.Submodules.KV, - KVWrite: h.Submodules.KVWrite, - NATS: h.Submodules.KVWrite, - Scheduler: h.Submodules.Scheduler, - } -} - -// ToDPHealthStatus returns only DPHealthStatus from the HealthStatus. -func (h *HealthStatus) ToDPHealthStatus() *DPHealthStatus { - return &DPHealthStatus{ - DirectFSClient: h.Submodules.DirectFSClient, - DirectFSServer: h.Submodules.DirectFSServer, - Director: h.Submodules.Director, - FSDriver: h.Submodules.FSDriver, - FS: h.Submodules.FS, - } -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/licence.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/licence.go deleted file mode 100644 index c486ed2bb7b..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/licence.go +++ /dev/null @@ -1,35 +0,0 @@ -package types - -import "time" - -// FeatureType store features types -type FeatureType string - -const ( - // HA means High Availability - HA = FeatureType("HA") - // DEV means developer licence - DEV = FeatureType("DEV") - // TRIAL means trial licence - TRIAL = FeatureType("TRIAL") -) - -// Licence holds the information to be encoded in the licence key. It needs to be synced across -// the django server running on portal-API as well as the corresponding decoding package on the -// storageOS control plane -type Licence struct { - ArrayUUID string `json:"arrayUUID,omitempty"` - ClusterID string `json:"clusterID,omitempty"` - CustomerID string `json:"customerID"` - CustomerName string `json:"customerName"` - Storage int `json:"storage"` - ValidUntil time.Time `json:"validUntil"` - LicenceType string `json:"licenceType"` - Features map[FeatureType]bool `json:"features"` - Unregistered bool `json:"unregistered"` -} - -// LicenceKeyContainer - stores a licence key -type LicenceKeyContainer struct { - Key string `json:"key"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/list_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/list_options.go deleted file mode 100644 index caeaead578f..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/list_options.go +++ /dev/null @@ -1,19 +0,0 @@ -package types - -import "context" - -// ListOptions are optional parameters for finding and listing most objects. -type ListOptions struct { - - // FieldSelector restricts the list of returned objects by their fields. Defaults to everything. - FieldSelector string - - // LabelSelector restricts the list of returned objects by their labels. Defaults to everything. - LabelSelector string - - // Namespace is the object scope, such as for teams and projects. - Namespace string - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/logger.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/logger.go deleted file mode 100644 index f02bad96eb5..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/logger.go +++ /dev/null @@ -1,40 +0,0 @@ -package types - -import "context" - -// Logger is the runtime configuration of the node's logging services. -// swagger:model Logger -type Logger struct { - - // Node name - Node string `json:"node"` - - // Log level - Level string `json:"level"` - - // Log filter - Filter string `json:"filter"` - - // Log filters by category - // Read Only: true - Categories map[string]string `json:"categories"` -} - -// LoggerUpdateOptions are the available parameters for updating loggers. -type LoggerUpdateOptions struct { - - // Log level - Level string `json:"level"` - - // Log filter - Filter string `json:"filter"` - - // List of nodes to update. All if not set. - Nodes []string `json:"nodes"` - - // List of fields to update. Must be set. - Fields []string `json:"fields"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/namespace.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/namespace.go deleted file mode 100644 index e82aeeafef6..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/namespace.go +++ /dev/null @@ -1,59 +0,0 @@ -package types - -import ( - "context" - "time" -) - -// Namespace is used to as a container to isolate namespace and rule obects. -type Namespace struct { - - // Namespace unique ID. - // Read Only: true - ID string `json:"id"` - - // Namespace name. - // Required: true - Name string `json:"name"` - - // The optional DisplayName is how the project is displayed in the web console (defaults to name). - DisplayName string `json:"displayName"` - - // Namespcae description. - Description string `json:"description"` - - // User-defined key/value metadata. - Labels map[string]string `json:"labels"` - - // When the namespace was created. - // Read Only: true - CreatedAt time.Time `json:"createdAt"` - - // User that created the namespace. - // Read Only: true - CreatedBy string `json:"createdBy"` - - // When the namespace was created. - // Read Only: true - UpdatedAt time.Time `json:"updatedAt"` -} - -// NamespaceCreateOptions are available parameters for creating new namespaces. -type NamespaceCreateOptions struct { - - // Name is the name of the namespace to create. - // Required: true - Name string `json:"name"` - - // The optional DisplayName is how the project is displayed in the web console (defaults to name). - DisplayName string `json:"displayName"` - - // Description describes the namespace. - Description string `json:"description"` - - // Labels are user-defined key/value metadata. - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/node.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/node.go deleted file mode 100644 index 6d60d86110d..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/node.go +++ /dev/null @@ -1,104 +0,0 @@ -package types - -import ( - "time" -) - -// Node represents a StorageOS cluster node. -type Node struct { - NodeConfig - - HostID uint32 `json:"hostID"` - Name string `json:"name"` - Description string `json:"description"` - CreatedAt time.Time `json:"createdAt"` - UpdatedAt time.Time `json:"updatedAt"` - - Health string `json:"health"` - HealthUpdatedAt time.Time `json:"healthUpdatedAt"` - - VersionInfo map[string]VersionInfo `json:"versionInfo"` - Version string `json:"version"` - Revision string // the GitCommit this maps to - - Scheduler bool `json:"scheduler"` - - Cordon bool `json:"cordon"` - Drain bool `json:"drain"` - - VolumeStats VolumeStats `json:"volumeStats"` - - // PoolStats map[string]map[string]CapacityStats `json:"poolStats"` - - CapacityStats CapacityStats `json:"capacityStats"` -} - -// NodeConfig is a read-only representation of the node's configuration, set at -// start time by environment variables passed to the container or using defaults. -type NodeConfig struct { - // UUID is the unique identifier of the node. It cannot be changed once set. - ID string `json:"id,omitempty"` - - // Hostname of the node. - Hostname string `json:"hostname"` - - // Address is is used for communication between nodes. - // Nodes will fail to start if the address they first registered with - // changes. This protects against the container being re-scheduled on a - // different host. Nodes will typically use the host server's ip address, - // running the docker container in -net host mode. - Address string `json:"address"` - - // KvAddr is the address of the KV store to use for storing configuration. - // It can include the address or FQDN with optional port. Defaults to - // Address/ADVERTISE_IP. - KvAddr string `json:"kvAddr"` - - // Port allocations - APIPort int `json:"apiPort"` - NatsPort int `json:"natsPort"` - NatsClusterPort int `json:"natsClusterPort"` - SerfPort int `json:"serfPort"` - DFSPort int `json:"dfsPort"` - KVPeerPort int `json:"kvPeerPort"` - KVClientPort int `json:"kvClientPort"` - - Labels map[string]string `json:"labels"` - - LogLevel string `json:"logLevel"` // the level of the logs to outout - LogFormat string `json:"logFormat"` // either text or json - LogFilter string `json:"logFilter"` // used to discard messages based on the message's category - - // BindAddr is used to control the default address StorageOS binds to. This - // should always be set to 0.0.0.0 (all interfaces). - BindAddr string `json:"bindAddr"` - - // DeviceDir is where the volumes are exported. This directory must be - // shared into the container using the rshared volume mount option. - DeviceDir string `json:"deviceDir"` - - // Join existing cluster - Join string `json:"join"` - - // Backend selects the KV backend, either embedded (testing only) or etcd. - Backend string `json:"kvBackend"` - - // EnableDebug is used to enable various debugging features. Used by http - // to enable debug endpoints and as a shortcut to enable debug logging. - EnableDebug bool `json:"debug"` - - // Devices specify all devices that are available on the node. - Devices []Device `json:"devices"` -} - -// Device - device type -type Device struct { - ID string - Labels map[string]string `json:"labels"` - Status string `json:"status"` - Identifier string `json:"identifier"` - Class string `json:"class"` - CapacityStats CapacityStats `json:"capacityStats"` - CreatedAt time.Time `json:"createdAt"` - UpdatedAt time.Time `json:"updatedAt"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/node_update_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/node_update_options.go deleted file mode 100644 index f902567541a..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/node_update_options.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -import "context" - -// NodeUpdateOptions are available parameters for updating existing nodes. -type NodeUpdateOptions struct { - - // Node unique ID. - // Read Only: true - ID string `json:"id"` - - // Node name. - // Read Only: true - Name string `json:"name"` - - // Description of the node. - Description string `json:"description"` - - // Labels are user-defined key/value metadata. - Labels map[string]string `json:"labels"` - - // Cordon marks the node as unschedulable if true - Cordon bool `json:"cordon"` - Drain bool `json:"drain"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/operator.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/operator.go deleted file mode 100644 index 5971a5059e3..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/operator.go +++ /dev/null @@ -1,19 +0,0 @@ -package types - -// Operator represents a key/field's relationship to value(s). -// See labels.Requirement and fields.Requirement for more details. -type Operator string - -// Valid operators -const ( - None Operator = "" - DoesNotExist Operator = "!" - Equals Operator = "=" - DoubleEquals Operator = "==" - In Operator = "in" - NotEquals Operator = "!=" - NotIn Operator = "notin" - Exists Operator = "exists" - GreaterThan Operator = "gt" - LessThan Operator = "lt" -) diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/policy.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/policy.go deleted file mode 100644 index 6441939d5e4..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/policy.go +++ /dev/null @@ -1,45 +0,0 @@ -package types - -import ( - "encoding/json" -) - -type Policy struct { - Spec struct { - User string `json:"user,omitempty"` - Group string `json:"group,omitempty"` - Readonly bool `json:"readonly,omitempty"` - APIGroup string `json:"apiGroup,omitempty"` - Resource string `json:"resource,omitempty"` - Namespace string `json:"namespace,omitempty"` - NonResourcePath string `json:"nonResourcePath,omitempty"` - } `json:"spec"` -} - -// PolicyWithId is used as an internal type to render table formated versions of the json response -type PolicyWithID struct { - Policy - ID string -} - -// MarshalJSON returns a marshaled copy of the internal policy object, so it is still valid to use -// with the REST API -func (p *PolicyWithID) MarshalJSON() ([]byte, error) { - return json.Marshal(p.Policy) -} - -// PolicySet is a representation of the data structure returned from the REST API -type PolicySet map[string]Policy - -func (p PolicySet) GetPoliciesWithID() []*PolicyWithID { - rtn := make([]*PolicyWithID, 0, len(p)) - - for k, v := range p { - rtn = append(rtn, &PolicyWithID{ - Policy: v, - ID: k, - }) - } - - return rtn -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/pool.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/pool.go deleted file mode 100644 index 9487d80551d..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/pool.go +++ /dev/null @@ -1,39 +0,0 @@ -package types - -// Pool is used to define a capacity pool. -type Pool struct { - - // Pool unique ID. - // Read Only: true - ID string `json:"id"` - - // Pool name. - // Required: true - Name string `json:"name"` - - // Pool description. - Description string `json:"description"` - - // Default determines whether this pool is the default if a volume is - // provisioned without a pool specified. There can only be one default pool. - Default bool `json:"default"` - - NodeSelector string `json:"nodeSelector"` - - // DeviceSelector - specifies a selector to filter node devices based on their labels. - // Only devices from nodes that are in the 'NodeNames' list can be selected - DeviceSelector string `json:"deviceSelector"` - - // Populated by the system. Read-only. - CapacityStats CapacityStats `json:"capacityStats"` - - // This field is computed based on NodeSelector value - // Populated by the system. Read-only. - Nodes []*Node `json:"nodes"` - - // Labels define a list of labels that describe the pool. - Labels map[string]string `json:"labels"` -} - -// Pools is a collection of Pool objects -type Pools []*Pool diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/pool_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/pool_options.go deleted file mode 100644 index dd08a98c0b6..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/pool_options.go +++ /dev/null @@ -1,28 +0,0 @@ -package types - -import "context" - -// PoolOptions are available parameters for creating or updating pools. -type PoolOptions struct { - ID string `json:"id"` - Name string `json:"name"` - - // Pool description. - Description string `json:"description"` - - // Default determines whether this pool is the default if a volume is - // provisioned without a pool specified. There can only be one default pool. - Default bool `json:"default"` - - NodeSelector string `json:"nodeSelector"` - - // DeviceSelector - specifies a selector to filter node devices based on their labels. - // Only devices from nodes that are in the 'NodeNames' list can be selected - DeviceSelector string `json:"deviceSelector"` - - // Labels define a list of labels that describe the pool. - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/rule.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/rule.go deleted file mode 100644 index fb7251dfcf3..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/rule.go +++ /dev/null @@ -1,125 +0,0 @@ -package types - -import "context" - -// Rule is used to define a rule -type Rule struct { - - // Rule unique ID. - // Read Only: true - ID string `json:"id"` - - // Rule name. - // Required: true - Name string `json:"name"` - - // Namespace is the object name and authentication scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // Rule description. - Description string `json:"description"` - - // Flag describing whether the rule is active. - // Default: false - Active bool `json:"active"` - - // Weight is used to determine order during rule processing. Rules with - // heavier weights are processed later. - // default: 0 - Weight int `json:"weight"` - - // RuleAction controls whether the action is to add or remove a label from the - // matching object(s). - RuleAction string `json:"action"` - - // Selectors defines the list of labels that should trigger a rule. - Selector string `json:"selector"` - - // Labels define the list of labels that will be added or removed from the - // matching object(s). - Labels map[string]string `json:"labels"` -} - -// Rules is a collection of Rules. -type Rules []*Rule - -// RuleCreateOptions are available parameters for creating new rules. -type RuleCreateOptions struct { - - // Rule name. - // Required: true - Name string `json:"name"` - - // Namespace is the object name and authentication scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // Rule description. - Description string `json:"description"` - - // Flag describing whether the rule is active. - // Default: false - Active bool `json:"active"` - - // Weight is used to determine order during rule processing. Rules with - // heavier weights are processed later. - // default: 0 - Weight int `json:"weight"` - - // RuleAction controls whether the action is to add or remove a label from the - // matching object(s). - RuleAction string `json:"action"` - - // Selectors defines the list of labels that should trigger a rule. - Selector string `json:"selector"` - - // Labels define the list of labels that will be added or removed from the - // matching object(s). - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} - -// RuleUpdateOptions are available parameters for creating new rules. -type RuleUpdateOptions struct { - - // Rule unique ID. - // Read Only: true - ID string `json:"id"` - - // Rule name. - // Required: true - Name string `json:"name"` - - // Namespace is the object name and authentication scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // Rule description. - Description string `json:"description"` - - // Flag describing whether the rule is active. - // Default: false - Active bool `json:"active"` - - // Weight is used to determine order during rule processing. Rules with - // heavier weights are processed later. - // default: 0 - Weight int `json:"weight"` - - // Operator is used to compare objects or labels. - Operator string `json:"operator"` - - // RuleAction controls whether the action is to add or remove a label from the - // matching object(s). - RuleAction string `json:"action"` - - // Selectors defines the list of labels that should trigger a rule. - Selector string `json:"selector"` - - // Labels define the list of labels that will be added or removed from the - // matching object(s). - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/template.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/template.go deleted file mode 100644 index 75f8cc7d564..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/template.go +++ /dev/null @@ -1,53 +0,0 @@ -package types - -// Template is used to define an auto-naming rule. -type Template struct { - - // Template unique ID. - // Read Only: true - ID string `json:"id"` - - // Template name. - // Required: true - Name string `json:"name"` - - // Template description. - Description string `json:"description"` - - // Template format. This is used for pattern matching against labels. - Format string `json:"format"` - - // Autoincrement defines whether there is a dynamic numeric component in the - // template that must auto-increment when objects with the same name already - // exists. - AutoIncrement bool `json:"autoIncrement"` - - // Padding determines whether a dynamic numeric component in the name should - // be padded. - // default: false - Padding bool `json:"padding"` - - // PaddingLength sets the length of the padding. A Padding length of 3 would - // set name similar to `abc001` for the first item. Ignored if Padding set to - // `false`. - PaddingLength int `json:"paddingLength"` - - // Flag describing whether the template is active. - // Default: false - Active bool `json:"active"` - - // Weight is used to determine order during template processing. Templates - // with heavier weights are processed later. - // default: 0 - Weight int `json:"weight"` - - // ObjectTypes defines the type names that the template can be applied to. - ObjectTypes []string `json:"objectTypes"` - - // Labels define a list of the labels that the object must have in order for - // the template to be applied. - Labels map[string]string `json:"labels"` -} - -// Templates is a collection of Template objects -type Templates []*Template diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/template_create_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/template_create_options.go deleted file mode 100644 index 7b905b94389..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/template_create_options.go +++ /dev/null @@ -1,51 +0,0 @@ -package types - -import "context" - -// TemplateCreateOptions are available parameters for creating new templates. -type TemplateCreateOptions struct { - - // Template name. - // Required: true - Name string `json:"name"` - - // Template description. - Description string `json:"description"` - - // Template format. This is used for pattern matching against labels. - Format string `json:"format"` - - // Autoincrement defines whether there is a dynamic numeric component in the - // template that must auto-increment when objects with the same name already - // exists. - AutoIncrement bool `json:"autoIncrement"` - - // Padding determines whether a dynamic numeric component in the name should - // be padded. - // default: false - Padding bool `json:"padding"` - - // PaddingLength sets the length of the padding. A Padding length of 3 would - // set name similar to `abc001` for the first item. Ignored if Padding set to - // `false`. - PaddingLength int `json:"paddingLength"` - - // Flag describing whether the template is active. - // Default: false - Active bool `json:"active"` - - // Weight is used to determine order during template processing. Templates - // with heavier weights are processed later. - // default: 0 - Weight int `json:"weight"` - - // ObjectTypes defines the type names that the template can be applied to. - ObjectTypes []string `json:"objectTypes"` - - // Labels define a list of the labels that the object must have in order for - // the template to be applied. - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/user.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/user.go deleted file mode 100644 index aa4bca8ce5b..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/user.go +++ /dev/null @@ -1,79 +0,0 @@ -package types - -import ( - "context" - "encoding/json" - "strings" -) - -type User struct { - UUID string `json:"id"` - Username string `json:"username"` - Groups []string `json:"groups"` - Password string `json:"password,omitempty"` - Role string `json:"role"` -} - -func (u *User) MarshalJSON() ([]byte, error) { - return json.Marshal(&struct { - UUID string `json:"id"` - Username string `json:"username"` - Groups string `json:"groups"` - Password string `json:"password,omitempty"` - Role string `json:"role"` - }{ - UUID: u.UUID, - Username: u.Username, - Groups: strings.Join(u.Groups, ","), - Password: u.Password, - Role: u.Role, - }) - -} - -func (u *User) UnmarshalJSON(data []byte) error { - temp := &struct { - UUID string `json:"id"` - Username string `json:"username"` - Groups string `json:"groups"` - Password string `json:"password"` - Role string `json:"role"` - }{} - - if err := json.Unmarshal(data, temp); err != nil { - return err - } - - u.UUID = temp.UUID - u.Username = temp.Username - u.Password = temp.Password - u.Role = temp.Role - u.Groups = strings.Split(temp.Groups, ",") - - return nil -} - -type UserCreateOptions struct { - Username string `json:"username"` - Groups []string `json:"groups"` - Password string `json:"password"` - Role string `json:"role"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} - -func (u UserCreateOptions) MarshalJSON() ([]byte, error) { - return json.Marshal(&struct { - Username string `json:"username"` - Groups string `json:"groups"` - Password string `json:"password"` - Role string `json:"role"` - }{ - Username: u.Username, - Groups: strings.Join(u.Groups, ","), - Password: u.Password, - Role: u.Role, - }) - -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/version.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/version.go deleted file mode 100644 index 60da8bf44c9..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/version.go +++ /dev/null @@ -1,26 +0,0 @@ -package types - -// VersionInfo describes version and runtime info. -type VersionInfo struct { - Name string `json:"name"` - BuildDate string `json:"buildDate"` - Revision string `json:"revision"` - Version string `json:"version"` - APIVersion string `json:"apiVersion"` - GoVersion string `json:"goVersion"` - OS string `json:"os"` - Arch string `json:"arch"` - KernelVersion string `json:"kernelVersion"` - Experimental bool `json:"experimental"` -} - -type VersionResponse struct { - Client *VersionInfo - Server *VersionInfo -} - -// ServerOK returns true when the client could connect to the docker server -// and parse the information received. It returns false otherwise. -func (v VersionResponse) ServerOK() bool { - return v.Server != nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume.go deleted file mode 100644 index 698d7a92d72..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume.go +++ /dev/null @@ -1,143 +0,0 @@ -package types - -import ( - "context" - "time" -) - -// DefaultNamespace is used when a namespace hasn't been specified. -const DefaultNamespace = "default" - -// Volume represents storage volume. -// swagger:model Volume -type Volume struct { - - // Volume unique ID. - // Read Only: true - ID string `json:"id"` - - // Block device inode. - // Read Only: true - Inode uint32 `json:"inode"` - - // Volume name. - // Required: true - Name string `json:"name"` - - // Size in GB. - // Required: true - Size int `json:"size"` - - // Name of capacity pool to provision the volume in, or the name of the current pool. - Pool string `json:"pool"` - - // Filesystem type to mount. May be set on create, or set by rules to influence client. - FSType string `json:"fsType"` - - // Volume description. - Description string `json:"description"` - - // User-defined key/value metadata. - Labels map[string]string `json:"labels"` - - // Namespace is the object name and authentication scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // node selector (where volumes should land) - NodeSelector string `json:"nodeSelector"` - - // Volume deployment information for the master volume. - // Read Only: true - Master *Deployment `json:"master,omitempty"` - - // Flag indicating if the volume is mounted and in use. - // Read Only: true - Mounted bool `json:"mounted"` - - // MountDevice, where the device is located - MountDevice string `json:"mountDevice"` - - // Mountpoint, where the volume is mounted - Mountpoint string `json:"mountpoint"` - - // When the volume was mounted. - // Read Only: true - MountedAt time.Time `json:"mountedAt,omitempty"` - - // Reference to the node that has the volume mounted. - // Read Only: true - MountedBy string `json:"mountedBy,omitempty"` - - // Volume deployment information for the replica volumes. - // Read Only: true - Replicas []*Deployment `json:"replicas"` - - // Volume health, one of: healthy, degraded or dead. - // Read Only: true - Health string `json:"health"` - - // Short status, one of: pending, evaluating, deploying, active, unavailable, failed, updating, deleting. - // Read Only: true - Status string `json:"status"` - - // Status message explaining current status. - // Read Only: true - StatusMessage string `json:"statusMessage"` - - // mkfs performed on new volumes - MkfsDone bool `json:"mkfsDone"` - MkfsDoneAt time.Time `json:"mkfsDoneAt"` - - // When the volume was created. - // Read Only: true - CreatedAt time.Time `json:"createdAt"` - - // User that created the volume. - // Read Only: true - CreatedBy string `json:"createdBy"` -} - -// VolumeMountOptions - used by clients to inform of volume mount operations. -type VolumeMountOptions struct { - - // Volume unique ID. - ID string `json:"id"` - - // Name is the name of the volume to mount. - Name string `json:"name"` - - // Mountpoint, where the volume is mounted - Mountpoint string `json:"mountpoint"` - - // Filesystem type, optional but expected when mounting raw volume - FsType string `json:"fsType"` - - // Namespace is the object scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // The hostname of the client mounting the volume. - Client string `json:"client"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} - -// VolumeUnmountOptions - used by clients to inform of volume mount operations. -type VolumeUnmountOptions struct { - - // Volume unique ID. - ID string `json:"id"` - - // Name is the name of the volume to unmount. - Name string `json:"name"` - - // Namespace is the object scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // The hostname of the client unmounting the volume. Must match the hostname - // of the client that registered the mount operation. - Client string `json:"client"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_create_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_create_options.go deleted file mode 100644 index d7096e1e89a..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_create_options.go +++ /dev/null @@ -1,36 +0,0 @@ -package types - -import "context" - -// VolumeCreateOptions are available parameters for creating new volumes. -type VolumeCreateOptions struct { - - // Name is the name of the volume to create. - // Required: true - Name string `json:"name"` - - // Description describes the volume. - Description string `json:"description"` - - // Size in GB. - // Required: true - Size int `json:"size"` - - // Pool is the name or id of capacity pool to provision the volume in. - Pool string `json:"pool"` - - // Filesystem type to mount. May be set on create, or set by rules to influence client. - FSType string `json:"fsType"` - - // Namespace is the object scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // node selector (where volumes should land) - NodeSelector string `json:"nodeSelector"` - - // Labels are user-defined key/value metadata. - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_stats.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_stats.go deleted file mode 100644 index cda4de047f1..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_stats.go +++ /dev/null @@ -1,8 +0,0 @@ -package types - -// VolumeStats - volume stats (volume counts, looking forward to capacity) -type VolumeStats struct { - MasterVolumeCount int `json:"masterVolumeCount"` - ReplicaVolumeCount int `json:"replicaVolumeCount"` - VirtualVolumeCount int `json:"virtualVolumeCount"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_update_options.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_update_options.go deleted file mode 100644 index 3c73c6b904e..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/types/volume_update_options.go +++ /dev/null @@ -1,34 +0,0 @@ -package types - -import "context" - -// VolumeUpdateOptions are available parameters for updating existing volumes. -type VolumeUpdateOptions struct { - - // Volume unique ID. - // Read Only: true - ID string `json:"id"` - - // Volume name. - // Read Only: true - Name string `json:"name"` - - // Description describes the volume. - Description string `json:"description"` - - // Size in GB. - // Required: true - Size int `json:"size"` - - // Namespace is the object scope, such as for teams and projects. - Namespace string `json:"namespace"` - - // node selector (where volumes should land) - NodeSelector string `json:"nodeSelector"` - - // Labels are user-defined key/value metadata. - Labels map[string]string `json:"labels"` - - // Context can be set with a timeout or can be used to cancel a request. - Context context.Context `json:"-"` -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/user.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/user.go deleted file mode 100644 index bfea90105d2..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/user.go +++ /dev/null @@ -1,118 +0,0 @@ -package storageos - -import ( - "context" - "encoding/json" - "errors" - "fmt" - "net/http" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - // UserAPIPrefix is a partial path to the HTTP endpoint. - UserAPIPrefix = "users" - - // ErrNoSuchUser is the error returned when the user does not exist. - ErrNoSuchUser = errors.New("no such user") -) - -// UserList returns the list of available users. -func (c *Client) UserList(opts types.ListOptions) ([]*types.User, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - namespace: opts.Namespace, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", UserAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - users := make([]*types.User, 0) - if err := json.NewDecoder(resp.Body).Decode(&users); err != nil { - return nil, err - } - return users, nil -} - -// User returns a user by its username/id. -func (c *Client) User(username string) (*types.User, error) { - path := fmt.Sprintf("%s/%s", UserAPIPrefix, username) - resp, err := c.do("GET", path, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchUser - } - return nil, err - } - defer resp.Body.Close() - - var user *types.User - if err := json.NewDecoder(resp.Body).Decode(&user); err != nil { - return nil, err - } - return user, nil -} - -// UserCreate creates a user on the server. -func (c *Client) UserCreate(opts types.UserCreateOptions) error { - _, err := c.do("POST", UserAPIPrefix, doOptions{ - data: opts, - context: opts.Context, - }) - return err -} - -// UserUpdate updates a user on the server. -func (c *Client) UserUpdate(ctx context.Context, user *types.User) error { - var ref string - switch { - case user.UUID != "": - ref = user.UUID - case user.Username != "": - ref = user.Username - default: - return ErrNoSuchUser - } - - path := fmt.Sprintf("%s/%s", UserAPIPrefix, ref) - resp, err := c.do("POST", path, doOptions{ - data: user, - context: ctx, - }) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return ErrNoSuchUser - } - return err - } - defer resp.Body.Close() - return nil -} - -// UserDelete removes a user by its reference. -func (c *Client) UserDelete(opts types.DeleteOptions) error { - resp, err := c.do("DELETE", UserAPIPrefix+"/"+opts.Name, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchUser - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/util.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/util.go deleted file mode 100644 index 21674042d07..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/util.go +++ /dev/null @@ -1,16 +0,0 @@ -package storageos - -import ( - "fmt" - "strings" -) - -// ParseRef is a helper to split out the namespace and name from a path -// reference. -func ParseRef(ref string) (namespace string, name string, err error) { - parts := strings.Split(ref, "/") - if len(parts) != 2 { - return "", "", fmt.Errorf("Name must be prefixed with /") - } - return parts[0], parts[1], nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/validation.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/validation.go deleted file mode 100644 index f58063044ae..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/validation.go +++ /dev/null @@ -1,76 +0,0 @@ -package storageos - -import ( - "errors" - "regexp" -) - -const ( - // IDFormat are the characters allowed to represent an ID. - IDFormat = `[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}` - - // NameFormat are the characters allowed to represent a name. - NameFormat = `[a-zA-Z0-9][a-zA-Z0-9~_.-]+` -) - -var ( - // IDPattern is a regular expression to validate a unique id against the - // collection of restricted characters. - IDPattern = regexp.MustCompile(`^` + IDFormat + `$`) - - // NamePattern is a regular expression to validate names against the - // collection of restricted characters. - NamePattern = regexp.MustCompile(`^` + NameFormat + `$`) - - // ErrNoRef is given when the reference given is invalid. - ErrNoRef = errors.New("no ref provided or incorrect format") - // ErrNoNamespace is given when the namespace given is invalid. - ErrNoNamespace = errors.New("no namespace provided or incorrect format") -) - -// ValidateNamespaceAndRef returns true if both the namespace and ref are valid. -func ValidateNamespaceAndRef(namespace, ref string) error { - if !IsUUID(ref) && !IsName(ref) { - return ErrNoRef - } - if !IsName(namespace) { - return ErrNoNamespace - } - return nil -} - -// ValidateNamespace returns true if the namespace uses a valid name. -func ValidateNamespace(namespace string) error { - if !IsName(namespace) { - return ErrNoNamespace - } - return nil -} - -// IsUUID returns true if the string input is a valid UUID string. -func IsUUID(s string) bool { - return IDPattern.MatchString(s) -} - -// IsName returns true if the string input is a valid Name string. -func IsName(s string) bool { - return NamePattern.MatchString(s) -} - -// namespacedPath checks for valid input and returns api path for a namespaced -// objectType. Use namespacedRefPath for objects. -func namespacedPath(namespace, objectType string) (string, error) { - if err := ValidateNamespace(namespace); err != nil { - return "", err - } - return "/namespaces/" + namespace + "/" + objectType, nil -} - -// namespacedRefPath checks for valid input and returns api path for a single -// namespaced object. Use namespacedPath for objects type path. -func namespacedRefPath(namespace, objectType, ref string) (string, error) { - if err := ValidateNamespaceAndRef(namespace, ref); err != nil { - return "", err - } - return "/namespaces/" + namespace + "/" + objectType + "/" + ref, nil -} diff --git a/cluster-autoscaler/vendor/github.com/storageos/go-api/volume.go b/cluster-autoscaler/vendor/github.com/storageos/go-api/volume.go deleted file mode 100644 index d2d7092059e..00000000000 --- a/cluster-autoscaler/vendor/github.com/storageos/go-api/volume.go +++ /dev/null @@ -1,197 +0,0 @@ -package storageos - -import ( - "encoding/json" - "errors" - "net/http" - "net/url" - - "github.com/storageos/go-api/types" -) - -var ( - - // VolumeAPIPrefix is a partial path to the HTTP endpoint. - VolumeAPIPrefix = "volumes" - - // ErrNoSuchVolume is the error returned when the volume does not exist. - ErrNoSuchVolume = errors.New("no such volume") - - // ErrVolumeInUse is the error returned when the volume requested to be removed is still in use. - ErrVolumeInUse = errors.New("volume in use and cannot be removed") -) - -// VolumeList returns the list of available volumes. -func (c *Client) VolumeList(opts types.ListOptions) ([]*types.Volume, error) { - listOpts := doOptions{ - fieldSelector: opts.FieldSelector, - labelSelector: opts.LabelSelector, - namespace: opts.Namespace, - context: opts.Context, - } - - if opts.LabelSelector != "" { - query := url.Values{} - query.Add("labelSelector", opts.LabelSelector) - listOpts.values = query - } - - resp, err := c.do("GET", VolumeAPIPrefix, listOpts) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var volumes []*types.Volume - if err := json.NewDecoder(resp.Body).Decode(&volumes); err != nil { - return nil, err - } - return volumes, nil -} - -// Volume returns a volume by its reference. -func (c *Client) Volume(namespace string, ref string) (*types.Volume, error) { - path, err := namespacedRefPath(namespace, VolumeAPIPrefix, ref) - if err != nil { - return nil, err - } - resp, err := c.do("GET", path, doOptions{}) - if err != nil { - if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound { - return nil, ErrNoSuchVolume - } - return nil, err - } - defer resp.Body.Close() - var volume types.Volume - if err := json.NewDecoder(resp.Body).Decode(&volume); err != nil { - return nil, err - } - return &volume, nil -} - -// VolumeCreate creates a volume on the server and returns the new object. -func (c *Client) VolumeCreate(opts types.VolumeCreateOptions) (*types.Volume, error) { - path, err := namespacedPath(opts.Namespace, VolumeAPIPrefix) - if err != nil { - return nil, err - } - resp, err := c.do("POST", path, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var volume types.Volume - if err := json.NewDecoder(resp.Body).Decode(&volume); err != nil { - return nil, err - } - return &volume, nil -} - -// VolumeUpdate updates a volume on the server. -func (c *Client) VolumeUpdate(opts types.VolumeUpdateOptions) (*types.Volume, error) { - ref := opts.Name - if IsUUID(opts.ID) { - ref = opts.ID - } - path, err := namespacedRefPath(opts.Namespace, VolumeAPIPrefix, ref) - if err != nil { - return nil, err - } - resp, err := c.do("PUT", path, doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - return nil, err - } - defer resp.Body.Close() - var volume types.Volume - if err := json.NewDecoder(resp.Body).Decode(&volume); err != nil { - return nil, err - } - return &volume, nil -} - -// VolumeDelete removes a volume by its reference. -func (c *Client) VolumeDelete(opts types.DeleteOptions) error { - deleteOpts := doOptions{ - namespace: opts.Namespace, - force: opts.Force, - context: opts.Context, - } - resp, err := c.do("DELETE", VolumeAPIPrefix+"/"+opts.Name, deleteOpts) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchVolume - } - if e.Status == http.StatusConflict { - return ErrVolumeInUse - } - } - return err - } - defer resp.Body.Close() - return nil -} - -// VolumeMount updates the volume with the client that mounted it. -func (c *Client) VolumeMount(opts types.VolumeMountOptions) error { - ref := opts.Name - if IsUUID(opts.ID) { - ref = opts.ID - } - path, err := namespacedRefPath(opts.Namespace, VolumeAPIPrefix, ref) - if err != nil { - return err - } - resp, err := c.do("POST", path+"/mount", doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchVolume - } - if e.Status == http.StatusConflict { - return ErrVolumeInUse - } - } - return err - } - defer resp.Body.Close() - return nil -} - -// VolumeUnmount removes the client from the mount reference. -func (c *Client) VolumeUnmount(opts types.VolumeUnmountOptions) error { - ref := opts.Name - if IsUUID(opts.ID) { - ref = opts.ID - } - path, err := namespacedRefPath(opts.Namespace, VolumeAPIPrefix, ref) - if err != nil { - return err - } - resp, err := c.do("POST", path+"/unmount", doOptions{ - data: opts, - context: opts.Context, - }) - if err != nil { - if e, ok := err.(*Error); ok { - if e.Status == http.StatusNotFound { - return ErrNoSuchVolume - } - if e.Status == http.StatusConflict { - return ErrVolumeInUse - } - } - return err - } - defer resp.Body.Close() - return nil -} diff --git a/cluster-autoscaler/vendor/github.com/stretchr/objx/go.mod b/cluster-autoscaler/vendor/github.com/stretchr/objx/go.mod deleted file mode 100644 index 31ec5a7d948..00000000000 --- a/cluster-autoscaler/vendor/github.com/stretchr/objx/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/stretchr/objx - -go 1.12 - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/stretchr/testify v1.3.0 -) diff --git a/cluster-autoscaler/vendor/github.com/stretchr/objx/go.sum b/cluster-autoscaler/vendor/github.com/stretchr/objx/go.sum deleted file mode 100644 index 4f89841505b..00000000000 --- a/cluster-autoscaler/vendor/github.com/stretchr/objx/go.sum +++ /dev/null @@ -1,8 +0,0 @@ -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/cluster-autoscaler/vendor/github.com/vishvananda/netlink/go.mod b/cluster-autoscaler/vendor/github.com/vishvananda/netlink/go.mod deleted file mode 100644 index 09ee60e7784..00000000000 --- a/cluster-autoscaler/vendor/github.com/vishvananda/netlink/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/vishvananda/netlink - -go 1.12 - -require ( - github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df - golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444 -) diff --git a/cluster-autoscaler/vendor/github.com/vishvananda/netlink/go.sum b/cluster-autoscaler/vendor/github.com/vishvananda/netlink/go.sum deleted file mode 100644 index 402d14ec552..00000000000 --- a/cluster-autoscaler/vendor/github.com/vishvananda/netlink/go.sum +++ /dev/null @@ -1,4 +0,0 @@ -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df h1:OviZH7qLw/7ZovXvuNyL3XQl8UFofeikI1NW1Gypu7k= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444 h1:/d2cWp6PSamH4jDPFLyO150psQdqvtoNX8Zjg3AQ31g= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/cluster-autoscaler/vendor/github.com/vishvananda/netns/go.mod b/cluster-autoscaler/vendor/github.com/vishvananda/netns/go.mod deleted file mode 100644 index 9cdf577ad44..00000000000 --- a/cluster-autoscaler/vendor/github.com/vishvananda/netns/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/vishvananda/netns - -go 1.12 - -require golang.org/x/sys v0.0.0-20200217220822-9197077df867 diff --git a/cluster-autoscaler/vendor/github.com/vishvananda/netns/go.sum b/cluster-autoscaler/vendor/github.com/vishvananda/netns/go.sum deleted file mode 100644 index 1d4adf4519f..00000000000 --- a/cluster-autoscaler/vendor/github.com/vishvananda/netns/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -golang.org/x/sys v0.0.0-20200217220822-9197077df867 h1:JoRuNIf+rpHl+VhScRQQvzbHed86tKkqwPMV34T8myw= -golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/cluster-autoscaler/vendor/go.etcd.io/etcd/client/v3/go.mod b/cluster-autoscaler/vendor/go.etcd.io/etcd/client/v3/go.mod deleted file mode 100644 index 7c50734e6ae..00000000000 --- a/cluster-autoscaler/vendor/go.etcd.io/etcd/client/v3/go.mod +++ /dev/null @@ -1,28 +0,0 @@ -module go.etcd.io/etcd/client/v3 - -go 1.16 - -require ( - github.com/dustin/go-humanize v1.0.0 - github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/prometheus/client_golang v1.11.1 - go.etcd.io/etcd/api/v3 v3.5.4 - go.etcd.io/etcd/client/pkg/v3 v3.5.4 - go.uber.org/zap v1.17.0 - google.golang.org/grpc v1.38.0 - sigs.k8s.io/yaml v1.2.0 -) - -replace ( - go.etcd.io/etcd/api/v3 => ../../api - go.etcd.io/etcd/client/pkg/v3 => ../pkg -) - -// Bad imports are sometimes causing attempts to pull that code. -// This makes the error more explicit. -replace ( - go.etcd.io/etcd => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/pkg/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/etcd/v3 => ./FORBIDDEN_DEPENDENCY - go.etcd.io/tests/v3 => ./FORBIDDEN_DEPENDENCY -) diff --git a/cluster-autoscaler/vendor/go.etcd.io/etcd/client/v3/go.sum b/cluster-autoscaler/vendor/go.etcd.io/etcd/client/v3/go.sum deleted file mode 100644 index a3acfed4cc4..00000000000 --- a/cluster-autoscaler/vendor/go.etcd.io/etcd/client/v3/go.sum +++ /dev/null @@ -1,270 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -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/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -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/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -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.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -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/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.1 h1:+4eQaD7vAZ6DsfsxB15hbE0odUjGI5ARs9yskGu1v4s= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0 h1:iMAkS2TDoNWnKM+Kopnx/8tnEStIfpYA0ur0xQzzhMQ= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -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/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/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-20190213061140-3a22650c66bd/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-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4 h1:4nGaVu0QrbjT/AK2PRLuQfQuh6DJve+pELhqTdAj3x0= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40 h1:JWgyZ1qgdTaF3N3oxC+MdTV7qvEEgHo3otj+HB5CM7Q= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5 h1:i6eZZ+zk0SOf0xgBpEpPD18qWcJda6q1sxt3S0kzyUQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c h1:wtujag7C+4D6KMoulW9YauvK2lgdvCMS260jsqqBXr0= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/cluster-autoscaler/vendor/go.opencensus.io/go.mod b/cluster-autoscaler/vendor/go.opencensus.io/go.mod deleted file mode 100644 index 95b2522a7fa..00000000000 --- a/cluster-autoscaler/vendor/go.opencensus.io/go.mod +++ /dev/null @@ -1,12 +0,0 @@ -module go.opencensus.io - -require ( - github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e - github.com/golang/protobuf v1.4.3 - github.com/google/go-cmp v0.5.3 - github.com/stretchr/testify v1.6.1 - golang.org/x/net v0.0.0-20201110031124-69a78807bb2b - google.golang.org/grpc v1.33.2 -) - -go 1.13 diff --git a/cluster-autoscaler/vendor/go.opencensus.io/go.sum b/cluster-autoscaler/vendor/go.opencensus.io/go.sum deleted file mode 100644 index c97cd1b551e..00000000000 --- a/cluster-autoscaler/vendor/go.opencensus.io/go.sum +++ /dev/null @@ -1,116 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -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-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.3 h1:JjCZWpVbqXDqFVmTfYWEVTMIYrL/NPdPSCHPJ0T/raM= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -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-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3 h1:x95R7cp+rSeeqAMI2knLtQ0DKlaBhv2NrtrOvafPHRo= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3 h1:XQyxROzUlZH+WIQwySDgnISgOivlhjIEwaQaJEJrrN0= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= -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-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd h1:/e+gpKk9r3dJobndpTytxS2gOy6m5uvpg+ISQoEcusQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/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/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= -google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/go.mod deleted file mode 100644 index 3a96b217dec..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module go.opentelemetry.io/contrib - -go 1.14 diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/go.sum deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/LICENSE b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/LICENSE similarity index 94% rename from cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/LICENSE rename to cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/LICENSE index 9b72e90b75d..261eeb9e9f8 100644 --- a/cluster-autoscaler/vendor/github.com/clusterhq/flocker-go/LICENSE +++ b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/LICENSE @@ -1,4 +1,4 @@ - Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -175,7 +175,18 @@ END OF TERMS AND CONDITIONS - Copyright 2014-2016 ClusterHQ + 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] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/config.go b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/config.go new file mode 100644 index 00000000000..aca36150dab --- /dev/null +++ b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/config.go @@ -0,0 +1,46 @@ +// Copyright The OpenTelemetry 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 otelrestful + +import ( + "go.opentelemetry.io/otel/propagation" + oteltrace "go.opentelemetry.io/otel/trace" +) + +// config is used to configure the go-restful middleware. +type config struct { + TracerProvider oteltrace.TracerProvider + Propagators propagation.TextMapPropagator +} + +// Option specifies instrumentation configuration options. +type Option func(*config) + +// WithPropagators specifies propagators to use for extracting +// information from the HTTP requests. If none are specified, global +// ones will be used. +func WithPropagators(propagators propagation.TextMapPropagator) Option { + return func(cfg *config) { + cfg.Propagators = propagators + } +} + +// WithTracerProvider specifies a tracer provider to use for creating a tracer. +// If none is specified, the global provider is used. +func WithTracerProvider(provider oteltrace.TracerProvider) Option { + return func(cfg *config) { + cfg.TracerProvider = provider + } +} diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/doc.go b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/doc.go new file mode 100644 index 00000000000..5801fcc1a0f --- /dev/null +++ b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/doc.go @@ -0,0 +1,25 @@ +// Copyright The OpenTelemetry 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 otelrestful instruments github.com/emicklei/go-restful. +// +// Instrumentation is provided to trace the emicklei/go-restful/v3 +// package (https://github.com/emicklei/go-restful). +// +// Instrumentation of an incoming request is achieved via a go-restful +// FilterFunc called `OTelFilterFunc` which may be applied at any one of +// * the container level +// * webservice level +// * route level +package otelrestful // import "go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful" diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/restful.go b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/restful.go new file mode 100644 index 00000000000..9830d2043ff --- /dev/null +++ b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/restful.go @@ -0,0 +1,74 @@ +// Copyright The OpenTelemetry 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 otelrestful + +import ( + "github.com/emicklei/go-restful/v3" + + "go.opentelemetry.io/contrib" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/propagation" + "go.opentelemetry.io/otel/semconv" + oteltrace "go.opentelemetry.io/otel/trace" +) + +const tracerName = "go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful" + +// OTelFilter returns a restful.FilterFunction which will trace an incoming request. +// +// The service parameter should describe the name of the (virtual) server handling +// the request. Options can be applied to configure the tracer and propagators +// used for this filter. +func OTelFilter(service string, opts ...Option) restful.FilterFunction { + cfg := config{} + for _, opt := range opts { + opt(&cfg) + } + if cfg.TracerProvider == nil { + cfg.TracerProvider = otel.GetTracerProvider() + } + tracer := cfg.TracerProvider.Tracer( + tracerName, + oteltrace.WithInstrumentationVersion(contrib.SemVersion()), + ) + if cfg.Propagators == nil { + cfg.Propagators = otel.GetTextMapPropagator() + } + return func(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) { + r := req.Request + ctx := cfg.Propagators.Extract(r.Context(), propagation.HeaderCarrier(r.Header)) + route := req.SelectedRoutePath() + spanName := route + + opts := []oteltrace.SpanOption{ + oteltrace.WithAttributes(semconv.NetAttributesFromHTTPRequest("tcp", r)...), + oteltrace.WithAttributes(semconv.EndUserAttributesFromHTTPRequest(r)...), + oteltrace.WithAttributes(semconv.HTTPServerAttributesFromHTTPRequest(service, route, r)...), + oteltrace.WithSpanKind(oteltrace.SpanKindServer), + } + ctx, span := tracer.Start(ctx, spanName, opts...) + defer span.End() + + // pass the span through the request context + req.Request = req.Request.WithContext(ctx) + + chain.ProcessFilter(req, resp) + + attrs := semconv.HTTPAttributesFromHTTPStatusCode(resp.StatusCode()) + spanStatus, spanMessage := semconv.SpanStatusFromHTTPStatusCode(resp.StatusCode()) + span.SetAttributes(attrs...) + span.SetStatus(spanStatus, spanMessage) + } +} diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/go.mod deleted file mode 100644 index 368ca8dea0a..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/go.mod +++ /dev/null @@ -1,16 +0,0 @@ -module go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc - -go 1.14 - -replace go.opentelemetry.io/contrib => ../../../../ - -require ( - github.com/golang/protobuf v1.5.2 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/contrib v0.20.0 - go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/oteltest v0.20.0 - go.opentelemetry.io/otel/trace v0.20.0 - go.uber.org/goleak v1.1.10 - google.golang.org/grpc v1.37.0 -) diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/go.sum deleted file mode 100644 index 5bc12d8ab63..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/go.sum +++ /dev/null @@ -1,122 +0,0 @@ -cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -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.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/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-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -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-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 h1:Yq9t9jnGoR+dBuitxdo9l6Q7xh/zOyNnYUtDKaQ3x0E= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/go.mod deleted file mode 100644 index fdeefbeac2b..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/go.mod +++ /dev/null @@ -1,15 +0,0 @@ -module go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp - -go 1.14 - -replace go.opentelemetry.io/contrib => ../../../.. - -require ( - github.com/felixge/httpsnoop v1.0.1 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/contrib v0.20.0 - go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/metric v0.20.0 - go.opentelemetry.io/otel/oteltest v0.20.0 - go.opentelemetry.io/otel/trace v0.20.0 -) diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/go.sum deleted file mode 100644 index 88a41f1c902..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/go.sum +++ /dev/null @@ -1,25 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/exporters/otlp/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/exporters/otlp/go.mod deleted file mode 100644 index fe4fdba8535..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/exporters/otlp/go.mod +++ /dev/null @@ -1,62 +0,0 @@ -module go.opentelemetry.io/otel/exporters/otlp - -go 1.14 - -replace ( - go.opentelemetry.io/otel => ../.. - go.opentelemetry.io/otel/sdk => ../../sdk -) - -require ( - github.com/google/go-cmp v0.5.5 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/metric v0.20.0 - go.opentelemetry.io/otel/sdk v0.20.0 - go.opentelemetry.io/otel/sdk/export/metric v0.20.0 - go.opentelemetry.io/otel/sdk/metric v0.20.0 - go.opentelemetry.io/otel/trace v0.20.0 - go.opentelemetry.io/proto/otlp v0.7.0 - google.golang.org/grpc v1.37.0 - google.golang.org/protobuf v1.26.0 -) - -replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus - -replace go.opentelemetry.io/otel/bridge/opentracing => ../../bridge/opentracing - -replace go.opentelemetry.io/otel/example/jaeger => ../../example/jaeger - -replace go.opentelemetry.io/otel/example/namedtracer => ../../example/namedtracer - -replace go.opentelemetry.io/otel/example/opencensus => ../../example/opencensus - -replace go.opentelemetry.io/otel/example/otel-collector => ../../example/otel-collector - -replace go.opentelemetry.io/otel/example/prom-collector => ../../example/prom-collector - -replace go.opentelemetry.io/otel/example/prometheus => ../../example/prometheus - -replace go.opentelemetry.io/otel/example/zipkin => ../../example/zipkin - -replace go.opentelemetry.io/otel/exporters/metric/prometheus => ../metric/prometheus - -replace go.opentelemetry.io/otel/exporters/otlp => ./ - -replace go.opentelemetry.io/otel/exporters/stdout => ../stdout - -replace go.opentelemetry.io/otel/exporters/trace/jaeger => ../trace/jaeger - -replace go.opentelemetry.io/otel/exporters/trace/zipkin => ../trace/zipkin - -replace go.opentelemetry.io/otel/internal/tools => ../../internal/tools - -replace go.opentelemetry.io/otel/metric => ../../metric - -replace go.opentelemetry.io/otel/oteltest => ../../oteltest - -replace go.opentelemetry.io/otel/sdk/export/metric => ../../sdk/export/metric - -replace go.opentelemetry.io/otel/sdk/metric => ../../sdk/metric - -replace go.opentelemetry.io/otel/trace => ../../trace diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/exporters/otlp/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/exporters/otlp/go.sum deleted file mode 100644 index 65606007ace..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/exporters/otlp/go.sum +++ /dev/null @@ -1,123 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/benbjohnson/clock v1.0.3 h1:vkLuvpK4fmtSCuo60+yC63p7y0BmQ8gm5ZXGuBCJyXg= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -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.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0 h1:LUVKkCeviFUMKqHa4tXIIij/lbhnMbP7Fn5wKdKkRh4= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/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-20190213061140-3a22650c66bd/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-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0 h1:uSZWeQJX5j11bIQ4AJoj+McDBo29cY1MCoC1wO3ts+c= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -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/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/go.mod deleted file mode 100644 index a0e9267ad36..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/go.mod +++ /dev/null @@ -1,55 +0,0 @@ -module go.opentelemetry.io/otel - -go 1.14 - -require ( - github.com/google/go-cmp v0.5.5 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel/metric v0.20.0 - go.opentelemetry.io/otel/oteltest v0.20.0 - go.opentelemetry.io/otel/trace v0.20.0 -) - -replace go.opentelemetry.io/otel => ./ - -replace go.opentelemetry.io/otel/bridge/opencensus => ./bridge/opencensus - -replace go.opentelemetry.io/otel/bridge/opentracing => ./bridge/opentracing - -replace go.opentelemetry.io/otel/example/jaeger => ./example/jaeger - -replace go.opentelemetry.io/otel/example/namedtracer => ./example/namedtracer - -replace go.opentelemetry.io/otel/example/opencensus => ./example/opencensus - -replace go.opentelemetry.io/otel/example/otel-collector => ./example/otel-collector - -replace go.opentelemetry.io/otel/example/prom-collector => ./example/prom-collector - -replace go.opentelemetry.io/otel/example/prometheus => ./example/prometheus - -replace go.opentelemetry.io/otel/example/zipkin => ./example/zipkin - -replace go.opentelemetry.io/otel/exporters/metric/prometheus => ./exporters/metric/prometheus - -replace go.opentelemetry.io/otel/exporters/otlp => ./exporters/otlp - -replace go.opentelemetry.io/otel/exporters/stdout => ./exporters/stdout - -replace go.opentelemetry.io/otel/exporters/trace/jaeger => ./exporters/trace/jaeger - -replace go.opentelemetry.io/otel/exporters/trace/zipkin => ./exporters/trace/zipkin - -replace go.opentelemetry.io/otel/internal/tools => ./internal/tools - -replace go.opentelemetry.io/otel/sdk => ./sdk - -replace go.opentelemetry.io/otel/metric => ./metric - -replace go.opentelemetry.io/otel/oteltest => ./oteltest - -replace go.opentelemetry.io/otel/sdk/export/metric => ./sdk/export/metric - -replace go.opentelemetry.io/otel/sdk/metric => ./sdk/metric - -replace go.opentelemetry.io/otel/trace => ./trace diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/go.sum deleted file mode 100644 index b69f2e56da0..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/go.sum +++ /dev/null @@ -1,15 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/metric/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/metric/go.mod deleted file mode 100644 index 47bc47badde..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/metric/go.mod +++ /dev/null @@ -1,54 +0,0 @@ -module go.opentelemetry.io/otel/metric - -go 1.14 - -replace go.opentelemetry.io/otel => ../ - -replace go.opentelemetry.io/otel/bridge/opencensus => ../bridge/opencensus - -replace go.opentelemetry.io/otel/bridge/opentracing => ../bridge/opentracing - -replace go.opentelemetry.io/otel/example/jaeger => ../example/jaeger - -replace go.opentelemetry.io/otel/example/namedtracer => ../example/namedtracer - -replace go.opentelemetry.io/otel/example/opencensus => ../example/opencensus - -replace go.opentelemetry.io/otel/example/otel-collector => ../example/otel-collector - -replace go.opentelemetry.io/otel/example/prom-collector => ../example/prom-collector - -replace go.opentelemetry.io/otel/example/prometheus => ../example/prometheus - -replace go.opentelemetry.io/otel/example/zipkin => ../example/zipkin - -replace go.opentelemetry.io/otel/exporters/metric/prometheus => ../exporters/metric/prometheus - -replace go.opentelemetry.io/otel/exporters/otlp => ../exporters/otlp - -replace go.opentelemetry.io/otel/exporters/stdout => ../exporters/stdout - -replace go.opentelemetry.io/otel/exporters/trace/jaeger => ../exporters/trace/jaeger - -replace go.opentelemetry.io/otel/exporters/trace/zipkin => ../exporters/trace/zipkin - -replace go.opentelemetry.io/otel/internal/tools => ../internal/tools - -replace go.opentelemetry.io/otel/metric => ./ - -replace go.opentelemetry.io/otel/oteltest => ../oteltest - -replace go.opentelemetry.io/otel/sdk => ../sdk - -replace go.opentelemetry.io/otel/sdk/export/metric => ../sdk/export/metric - -replace go.opentelemetry.io/otel/sdk/metric => ../sdk/metric - -replace go.opentelemetry.io/otel/trace => ../trace - -require ( - github.com/google/go-cmp v0.5.5 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/oteltest v0.20.0 -) diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/metric/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/metric/go.sum deleted file mode 100644 index b69f2e56da0..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/metric/go.sum +++ /dev/null @@ -1,15 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/export/metric/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/export/metric/go.mod deleted file mode 100644 index 170d38157fa..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/export/metric/go.mod +++ /dev/null @@ -1,54 +0,0 @@ -module go.opentelemetry.io/otel/sdk/export/metric - -go 1.14 - -replace go.opentelemetry.io/otel => ../../.. - -replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus - -replace go.opentelemetry.io/otel/bridge/opentracing => ../../../bridge/opentracing - -replace go.opentelemetry.io/otel/example/jaeger => ../../../example/jaeger - -replace go.opentelemetry.io/otel/example/namedtracer => ../../../example/namedtracer - -replace go.opentelemetry.io/otel/example/opencensus => ../../../example/opencensus - -replace go.opentelemetry.io/otel/example/otel-collector => ../../../example/otel-collector - -replace go.opentelemetry.io/otel/example/prom-collector => ../../../example/prom-collector - -replace go.opentelemetry.io/otel/example/prometheus => ../../../example/prometheus - -replace go.opentelemetry.io/otel/example/zipkin => ../../../example/zipkin - -replace go.opentelemetry.io/otel/exporters/metric/prometheus => ../../../exporters/metric/prometheus - -replace go.opentelemetry.io/otel/exporters/otlp => ../../../exporters/otlp - -replace go.opentelemetry.io/otel/exporters/stdout => ../../../exporters/stdout - -replace go.opentelemetry.io/otel/exporters/trace/jaeger => ../../../exporters/trace/jaeger - -replace go.opentelemetry.io/otel/exporters/trace/zipkin => ../../../exporters/trace/zipkin - -replace go.opentelemetry.io/otel/internal/tools => ../../../internal/tools - -replace go.opentelemetry.io/otel/metric => ../../../metric - -replace go.opentelemetry.io/otel/oteltest => ../../../oteltest - -replace go.opentelemetry.io/otel/sdk => ../.. - -replace go.opentelemetry.io/otel/sdk/export/metric => ./ - -replace go.opentelemetry.io/otel/sdk/metric => ../../metric - -replace go.opentelemetry.io/otel/trace => ../../../trace - -require ( - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/metric v0.20.0 - go.opentelemetry.io/otel/sdk v0.20.0 -) diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/export/metric/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/export/metric/go.sum deleted file mode 100644 index b69f2e56da0..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/export/metric/go.sum +++ /dev/null @@ -1,15 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/metric/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/metric/go.mod deleted file mode 100644 index 6ad529662cf..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/metric/go.mod +++ /dev/null @@ -1,56 +0,0 @@ -module go.opentelemetry.io/otel/sdk/metric - -go 1.14 - -replace go.opentelemetry.io/otel => ../.. - -replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus - -replace go.opentelemetry.io/otel/bridge/opentracing => ../../bridge/opentracing - -replace go.opentelemetry.io/otel/example/jaeger => ../../example/jaeger - -replace go.opentelemetry.io/otel/example/namedtracer => ../../example/namedtracer - -replace go.opentelemetry.io/otel/example/opencensus => ../../example/opencensus - -replace go.opentelemetry.io/otel/example/otel-collector => ../../example/otel-collector - -replace go.opentelemetry.io/otel/example/prom-collector => ../../example/prom-collector - -replace go.opentelemetry.io/otel/example/prometheus => ../../example/prometheus - -replace go.opentelemetry.io/otel/example/zipkin => ../../example/zipkin - -replace go.opentelemetry.io/otel/exporters/metric/prometheus => ../../exporters/metric/prometheus - -replace go.opentelemetry.io/otel/exporters/otlp => ../../exporters/otlp - -replace go.opentelemetry.io/otel/exporters/stdout => ../../exporters/stdout - -replace go.opentelemetry.io/otel/exporters/trace/jaeger => ../../exporters/trace/jaeger - -replace go.opentelemetry.io/otel/exporters/trace/zipkin => ../../exporters/trace/zipkin - -replace go.opentelemetry.io/otel/internal/tools => ../../internal/tools - -replace go.opentelemetry.io/otel/metric => ../../metric - -replace go.opentelemetry.io/otel/oteltest => ../../oteltest - -replace go.opentelemetry.io/otel/sdk => ../ - -replace go.opentelemetry.io/otel/sdk/export/metric => ../export/metric - -replace go.opentelemetry.io/otel/sdk/metric => ./ - -replace go.opentelemetry.io/otel/trace => ../../trace - -require ( - github.com/benbjohnson/clock v1.0.3 // do not upgrade to v1.1.x because it would require Go >= 1.15 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel v0.20.0 - go.opentelemetry.io/otel/metric v0.20.0 - go.opentelemetry.io/otel/sdk v0.20.0 - go.opentelemetry.io/otel/sdk/export/metric v0.20.0 -) diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/metric/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/metric/go.sum deleted file mode 100644 index dcd83045504..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/sdk/metric/go.sum +++ /dev/null @@ -1,17 +0,0 @@ -github.com/benbjohnson/clock v1.0.3 h1:vkLuvpK4fmtSCuo60+yC63p7y0BmQ8gm5ZXGuBCJyXg= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/trace/go.mod b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/trace/go.mod deleted file mode 100644 index 914e4f4384a..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/trace/go.mod +++ /dev/null @@ -1,53 +0,0 @@ -module go.opentelemetry.io/otel/trace - -go 1.14 - -replace go.opentelemetry.io/otel => ../ - -replace go.opentelemetry.io/otel/bridge/opencensus => ../bridge/opencensus - -replace go.opentelemetry.io/otel/bridge/opentracing => ../bridge/opentracing - -replace go.opentelemetry.io/otel/example/jaeger => ../example/jaeger - -replace go.opentelemetry.io/otel/example/namedtracer => ../example/namedtracer - -replace go.opentelemetry.io/otel/example/opencensus => ../example/opencensus - -replace go.opentelemetry.io/otel/example/otel-collector => ../example/otel-collector - -replace go.opentelemetry.io/otel/example/prom-collector => ../example/prom-collector - -replace go.opentelemetry.io/otel/example/prometheus => ../example/prometheus - -replace go.opentelemetry.io/otel/example/zipkin => ../example/zipkin - -replace go.opentelemetry.io/otel/exporters/metric/prometheus => ../exporters/metric/prometheus - -replace go.opentelemetry.io/otel/exporters/otlp => ../exporters/otlp - -replace go.opentelemetry.io/otel/exporters/stdout => ../exporters/stdout - -replace go.opentelemetry.io/otel/exporters/trace/jaeger => ../exporters/trace/jaeger - -replace go.opentelemetry.io/otel/exporters/trace/zipkin => ../exporters/trace/zipkin - -replace go.opentelemetry.io/otel/internal/tools => ../internal/tools - -replace go.opentelemetry.io/otel/metric => ../metric - -replace go.opentelemetry.io/otel/oteltest => ../oteltest - -replace go.opentelemetry.io/otel/sdk => ../sdk - -replace go.opentelemetry.io/otel/sdk/export/metric => ../sdk/export/metric - -replace go.opentelemetry.io/otel/sdk/metric => ../sdk/metric - -replace go.opentelemetry.io/otel/trace => ./ - -require ( - github.com/google/go-cmp v0.5.5 - github.com/stretchr/testify v1.7.0 - go.opentelemetry.io/otel v0.20.0 -) diff --git a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/trace/go.sum b/cluster-autoscaler/vendor/go.opentelemetry.io/otel/trace/go.sum deleted file mode 100644 index b69f2e56da0..00000000000 --- a/cluster-autoscaler/vendor/go.opentelemetry.io/otel/trace/go.sum +++ /dev/null @@ -1,15 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -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/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/go.uber.org/atomic/go.mod b/cluster-autoscaler/vendor/go.uber.org/atomic/go.mod deleted file mode 100644 index daa7599fe19..00000000000 --- a/cluster-autoscaler/vendor/go.uber.org/atomic/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module go.uber.org/atomic - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/stretchr/testify v1.3.0 -) - -go 1.13 diff --git a/cluster-autoscaler/vendor/go.uber.org/atomic/go.sum b/cluster-autoscaler/vendor/go.uber.org/atomic/go.sum deleted file mode 100644 index 4f76e62c1f3..00000000000 --- a/cluster-autoscaler/vendor/go.uber.org/atomic/go.sum +++ /dev/null @@ -1,9 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= diff --git a/cluster-autoscaler/vendor/go.uber.org/multierr/go.mod b/cluster-autoscaler/vendor/go.uber.org/multierr/go.mod deleted file mode 100644 index ff8bdf95fcf..00000000000 --- a/cluster-autoscaler/vendor/go.uber.org/multierr/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module go.uber.org/multierr - -go 1.12 - -require ( - github.com/stretchr/testify v1.3.0 - go.uber.org/atomic v1.7.0 -) diff --git a/cluster-autoscaler/vendor/go.uber.org/multierr/go.sum b/cluster-autoscaler/vendor/go.uber.org/multierr/go.sum deleted file mode 100644 index ecfc2865782..00000000000 --- a/cluster-autoscaler/vendor/go.uber.org/multierr/go.sum +++ /dev/null @@ -1,11 +0,0 @@ -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= diff --git a/cluster-autoscaler/vendor/go.uber.org/zap/go.mod b/cluster-autoscaler/vendor/go.uber.org/zap/go.mod deleted file mode 100644 index 9455c99cc9c..00000000000 --- a/cluster-autoscaler/vendor/go.uber.org/zap/go.mod +++ /dev/null @@ -1,14 +0,0 @@ -module go.uber.org/zap - -go 1.13 - -require ( - github.com/benbjohnson/clock v1.1.0 - github.com/pkg/errors v0.8.1 - github.com/stretchr/testify v1.7.0 - go.uber.org/atomic v1.7.0 - go.uber.org/goleak v1.1.10 - go.uber.org/multierr v1.6.0 - gopkg.in/yaml.v2 v2.2.8 - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect -) diff --git a/cluster-autoscaler/vendor/go.uber.org/zap/go.sum b/cluster-autoscaler/vendor/go.uber.org/zap/go.sum deleted file mode 100644 index 9031a6131a2..00000000000 --- a/cluster-autoscaler/vendor/go.uber.org/zap/go.sum +++ /dev/null @@ -1,46 +0,0 @@ -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -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/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 h1:Yq9t9jnGoR+dBuitxdo9l6Q7xh/zOyNnYUtDKaQ3x0E= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cluster-autoscaler/vendor/golang.org/x/net/AUTHORS b/cluster-autoscaler/vendor/golang.org/x/net/AUTHORS deleted file mode 100644 index 15167cd746c..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/net/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/cluster-autoscaler/vendor/golang.org/x/net/CONTRIBUTORS b/cluster-autoscaler/vendor/golang.org/x/net/CONTRIBUTORS deleted file mode 100644 index 1c4577e9680..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/net/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/cluster-autoscaler/vendor/golang.org/x/net/bpf/doc.go b/cluster-autoscaler/vendor/golang.org/x/net/bpf/doc.go index ae62feb5341..04ec1c8ab52 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/bpf/doc.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/bpf/doc.go @@ -3,7 +3,6 @@ // license that can be found in the LICENSE file. /* - Package bpf implements marshaling and unmarshaling of programs for the Berkeley Packet Filter virtual machine, and provides a Go implementation of the virtual machine. @@ -21,7 +20,7 @@ access to kernel functions, and while conditional branches are allowed, they can only jump forwards, to guarantee that there are no infinite loops. -The virtual machine +# The virtual machine The BPF VM is an accumulator machine. Its main register, called register A, is an implicit source and destination in all arithmetic @@ -50,7 +49,7 @@ to extensions, which are essentially calls to kernel utility functions. Currently, the only extensions supported by this package are the Linux packet filter extensions. -Examples +# Examples This packet filter selects all ARP packets. @@ -77,6 +76,5 @@ This packet filter captures a random 1% sample of traffic. // Ignore. bpf.RetConstant{Val: 0}, }) - */ package bpf // import "golang.org/x/net/bpf" diff --git a/cluster-autoscaler/vendor/golang.org/x/net/context/context.go b/cluster-autoscaler/vendor/golang.org/x/net/context/context.go index a3c021d3f88..cf66309c4a8 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/context/context.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/context/context.go @@ -21,9 +21,9 @@ // explicitly to each function that needs it. The Context should be the first // parameter, typically named ctx: // -// func DoSomething(ctx context.Context, arg Arg) error { -// // ... use ctx ... -// } +// func DoSomething(ctx context.Context, arg Arg) error { +// // ... use ctx ... +// } // // Do not pass a nil Context, even if a function permits it. Pass context.TODO // if you are unsure about which Context to use. diff --git a/cluster-autoscaler/vendor/golang.org/x/net/context/go17.go b/cluster-autoscaler/vendor/golang.org/x/net/context/go17.go index 344bd143345..0a54bdbcc65 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/context/go17.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/context/go17.go @@ -54,11 +54,11 @@ func WithDeadline(parent Context, deadline time.Time) (Context, CancelFunc) { // Canceling this context releases resources associated with it, so code should // call cancel as soon as the operations running in this Context complete: // -// func slowOperationWithTimeout(ctx context.Context) (Result, error) { -// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) -// defer cancel() // releases resources if slowOperation completes before timeout elapses -// return slowOperation(ctx) -// } +// func slowOperationWithTimeout(ctx context.Context) (Result, error) { +// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) +// defer cancel() // releases resources if slowOperation completes before timeout elapses +// return slowOperation(ctx) +// } func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { return WithDeadline(parent, time.Now().Add(timeout)) } diff --git a/cluster-autoscaler/vendor/golang.org/x/net/context/pre_go17.go b/cluster-autoscaler/vendor/golang.org/x/net/context/pre_go17.go index 5270db5db7d..7b6b685114a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/context/pre_go17.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/context/pre_go17.go @@ -264,11 +264,11 @@ func (c *timerCtx) cancel(removeFromParent bool, err error) { // Canceling this context releases resources associated with it, so code should // call cancel as soon as the operations running in this Context complete: // -// func slowOperationWithTimeout(ctx context.Context) (Result, error) { -// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) -// defer cancel() // releases resources if slowOperation completes before timeout elapses -// return slowOperation(ctx) -// } +// func slowOperationWithTimeout(ctx context.Context) (Result, error) { +// ctx, cancel := context.WithTimeout(ctx, 100*time.Millisecond) +// defer cancel() // releases resources if slowOperation completes before timeout elapses +// return slowOperation(ctx) +// } func WithTimeout(parent Context, timeout time.Duration) (Context, CancelFunc) { return WithDeadline(parent, time.Now().Add(timeout)) } diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http/httpguts/httplex.go b/cluster-autoscaler/vendor/golang.org/x/net/http/httpguts/httplex.go index c79aa73f28b..6e071e85243 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http/httpguts/httplex.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http/httpguts/httplex.go @@ -173,13 +173,15 @@ func tokenEqual(t1, t2 string) bool { // isLWS reports whether b is linear white space, according // to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 -// LWS = [CRLF] 1*( SP | HT ) +// +// LWS = [CRLF] 1*( SP | HT ) func isLWS(b byte) bool { return b == ' ' || b == '\t' } // isCTL reports whether b is a control byte, according // to http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 -// CTL = +// +// CTL = func isCTL(b byte) bool { const del = 0x7f // a CTL return b < ' ' || b == del @@ -189,12 +191,13 @@ func isCTL(b byte) bool { // HTTP/2 imposes the additional restriction that uppercase ASCII // letters are not allowed. // -// RFC 7230 says: -// header-field = field-name ":" OWS field-value OWS -// field-name = token -// token = 1*tchar -// tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / -// "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA +// RFC 7230 says: +// +// header-field = field-name ":" OWS field-value OWS +// field-name = token +// token = 1*tchar +// tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" / "." / +// "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA func ValidHeaderFieldName(v string) bool { if len(v) == 0 { return false @@ -267,27 +270,28 @@ var validHostByte = [256]bool{ // ValidHeaderFieldValue reports whether v is a valid "field-value" according to // http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 : // -// message-header = field-name ":" [ field-value ] -// field-value = *( field-content | LWS ) -// field-content = +// message-header = field-name ":" [ field-value ] +// field-value = *( field-content | LWS ) +// field-content = // // http://www.w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2 : // -// TEXT = -// LWS = [CRLF] 1*( SP | HT ) -// CTL = +// TEXT = +// LWS = [CRLF] 1*( SP | HT ) +// CTL = // // RFC 7230 says: -// field-value = *( field-content / obs-fold ) -// obj-fold = N/A to http2, and deprecated -// field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] -// field-vchar = VCHAR / obs-text -// obs-text = %x80-FF -// VCHAR = "any visible [USASCII] character" +// +// field-value = *( field-content / obs-fold ) +// obj-fold = N/A to http2, and deprecated +// field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] +// field-vchar = VCHAR / obs-text +// obs-text = %x80-FF +// VCHAR = "any visible [USASCII] character" // // http2 further says: "Similarly, HTTP/2 allows header field values // that are not valid. While most of the values that can be encoded diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/client_conn_pool.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/client_conn_pool.go index c936843eafa..780968d6c19 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/client_conn_pool.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/client_conn_pool.go @@ -139,7 +139,6 @@ func (p *clientConnPool) getStartDialLocked(ctx context.Context, addr string) *d func (c *dialCall) dial(ctx context.Context, addr string) { const singleUse = false // shared conn c.res, c.err = c.p.t.dialClientConn(ctx, addr, singleUse) - close(c.done) c.p.mu.Lock() delete(c.p.dialing, addr) @@ -147,6 +146,8 @@ func (c *dialCall) dial(ctx context.Context, addr string) { c.p.addConnLocked(addr, c.res) } c.p.mu.Unlock() + + close(c.done) } // addConnIfNeeded makes a NewClientConn out of c if a connection for key doesn't diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/errors.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/errors.go index 2663e5d287e..f2067dabc59 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/errors.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/errors.go @@ -136,7 +136,7 @@ func (e headerFieldNameError) Error() string { type headerFieldValueError string func (e headerFieldValueError) Error() string { - return fmt.Sprintf("invalid header field value %q", string(e)) + return fmt.Sprintf("invalid header field value for %q", string(e)) } var ( diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/frame.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/frame.go index 96a74790524..0178647ee0a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/frame.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/frame.go @@ -1532,7 +1532,8 @@ func (fr *Framer) readMetaFrame(hf *HeadersFrame) (*MetaHeadersFrame, error) { fr.debugReadLoggerf("http2: decoded hpack field %+v", hf) } if !httpguts.ValidHeaderFieldValue(hf.Value) { - invalid = headerFieldValueError(hf.Value) + // Don't include the value in the error, because it may be sensitive. + invalid = headerFieldValueError(hf.Name) } isPseudo := strings.HasPrefix(hf.Name, ":") if isPseudo { diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/hpack/huffman.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/hpack/huffman.go index fe0b84ccd46..20d083a716d 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/hpack/huffman.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/hpack/huffman.go @@ -169,25 +169,50 @@ func buildRootHuffmanNode() { // AppendHuffmanString appends s, as encoded in Huffman codes, to dst // and returns the extended buffer. func AppendHuffmanString(dst []byte, s string) []byte { - rembits := uint8(8) - + // This relies on the maximum huffman code length being 30 (See tables.go huffmanCodeLen array) + // So if a uint64 buffer has less than 32 valid bits can always accommodate another huffmanCode. + var ( + x uint64 // buffer + n uint // number valid of bits present in x + ) for i := 0; i < len(s); i++ { - if rembits == 8 { - dst = append(dst, 0) + c := s[i] + n += uint(huffmanCodeLen[c]) + x <<= huffmanCodeLen[c] % 64 + x |= uint64(huffmanCodes[c]) + if n >= 32 { + n %= 32 // Normally would be -= 32 but %= 32 informs compiler 0 <= n <= 31 for upcoming shift + y := uint32(x >> n) // Compiler doesn't combine memory writes if y isn't uint32 + dst = append(dst, byte(y>>24), byte(y>>16), byte(y>>8), byte(y)) } - dst, rembits = appendByteToHuffmanCode(dst, rembits, s[i]) } - - if rembits < 8 { - // special EOS symbol - code := uint32(0x3fffffff) - nbits := uint8(30) - - t := uint8(code >> (nbits - rembits)) - dst[len(dst)-1] |= t + // Add padding bits if necessary + if over := n % 8; over > 0 { + const ( + eosCode = 0x3fffffff + eosNBits = 30 + eosPadByte = eosCode >> (eosNBits - 8) + ) + pad := 8 - over + x = (x << pad) | (eosPadByte >> over) + n += pad // 8 now divides into n exactly } - - return dst + // n in (0, 8, 16, 24, 32) + switch n / 8 { + case 0: + return dst + case 1: + return append(dst, byte(x)) + case 2: + y := uint16(x) + return append(dst, byte(y>>8), byte(y)) + case 3: + y := uint16(x >> 8) + return append(dst, byte(y>>8), byte(y), byte(x)) + } + // case 4: + y := uint32(x) + return append(dst, byte(y>>24), byte(y>>16), byte(y>>8), byte(y)) } // HuffmanEncodeLength returns the number of bytes required to encode @@ -199,35 +224,3 @@ func HuffmanEncodeLength(s string) uint64 { } return (n + 7) / 8 } - -// appendByteToHuffmanCode appends Huffman code for c to dst and -// returns the extended buffer and the remaining bits in the last -// element. The appending is not byte aligned and the remaining bits -// in the last element of dst is given in rembits. -func appendByteToHuffmanCode(dst []byte, rembits uint8, c byte) ([]byte, uint8) { - code := huffmanCodes[c] - nbits := huffmanCodeLen[c] - - for { - if rembits > nbits { - t := uint8(code << (rembits - nbits)) - dst[len(dst)-1] |= t - rembits -= nbits - break - } - - t := uint8(code >> (nbits - rembits)) - dst[len(dst)-1] |= t - - nbits -= rembits - rembits = 8 - - if nbits == 0 { - break - } - - dst = append(dst, 0) - } - - return dst, rembits -} diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/http2.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/http2.go index 5571ccfd261..479ba4b2b11 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/http2.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/http2.go @@ -13,7 +13,6 @@ // See https://http2.github.io/ for more information on HTTP/2. // // See https://http2.golang.org/ for a test server running this code. -// package http2 // import "golang.org/x/net/http2" import ( @@ -176,10 +175,11 @@ func (s SettingID) String() string { // name (key). See httpguts.ValidHeaderName for the base rules. // // Further, http2 says: -// "Just as in HTTP/1.x, header field names are strings of ASCII -// characters that are compared in a case-insensitive -// fashion. However, header field names MUST be converted to -// lowercase prior to their encoding in HTTP/2. " +// +// "Just as in HTTP/1.x, header field names are strings of ASCII +// characters that are compared in a case-insensitive +// fashion. However, header field names MUST be converted to +// lowercase prior to their encoding in HTTP/2. " func validWireHeaderFieldName(v string) bool { if len(v) == 0 { return false @@ -365,8 +365,8 @@ func (s *sorter) SortStrings(ss []string) { // validPseudoPath reports whether v is a valid :path pseudo-header // value. It must be either: // -// *) a non-empty string starting with '/' -// *) the string '*', for OPTIONS requests. +// - a non-empty string starting with '/' +// - the string '*', for OPTIONS requests. // // For now this is only used a quick check for deciding when to clean // up Opaque URLs before sending requests from the Transport. diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/server.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/server.go index e644d9b2f34..47524a61a5d 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/server.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/server.go @@ -315,6 +315,20 @@ type ServeConnOpts struct { // requests. If nil, BaseConfig.Handler is used. If BaseConfig // or BaseConfig.Handler is nil, http.DefaultServeMux is used. Handler http.Handler + + // UpgradeRequest is an initial request received on a connection + // undergoing an h2c upgrade. The request body must have been + // completely read from the connection before calling ServeConn, + // and the 101 Switching Protocols response written. + UpgradeRequest *http.Request + + // Settings is the decoded contents of the HTTP2-Settings header + // in an h2c upgrade request. + Settings []byte + + // SawClientPreface is set if the HTTP/2 connection preface + // has already been read from the connection. + SawClientPreface bool } func (o *ServeConnOpts) context() context.Context { @@ -383,6 +397,7 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { headerTableSize: initialHeaderTableSize, serveG: newGoroutineLock(), pushEnabled: true, + sawClientPreface: opts.SawClientPreface, } s.state.registerConn(sc) @@ -400,7 +415,7 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { if s.NewWriteScheduler != nil { sc.writeSched = s.NewWriteScheduler() } else { - sc.writeSched = NewRandomWriteScheduler() + sc.writeSched = NewPriorityWriteScheduler(nil) } // These start at the RFC-specified defaults. If there is a higher @@ -465,9 +480,27 @@ func (s *Server) ServeConn(c net.Conn, opts *ServeConnOpts) { } } + if opts.Settings != nil { + fr := &SettingsFrame{ + FrameHeader: FrameHeader{valid: true}, + p: opts.Settings, + } + if err := fr.ForeachSetting(sc.processSetting); err != nil { + sc.rejectConn(ErrCodeProtocol, "invalid settings") + return + } + opts.Settings = nil + } + if hook := testHookGetServerConn; hook != nil { hook(sc) } + + if opts.UpgradeRequest != nil { + sc.upgradeRequest(opts.UpgradeRequest) + opts.UpgradeRequest = nil + } + sc.serve() } @@ -512,6 +545,7 @@ type serverConn struct { // Everything following is owned by the serve loop; use serveG.check(): serveG goroutineLock // used to verify funcs are on serve() pushEnabled bool + sawClientPreface bool // preface has already been read, used in h2c upgrade sawFirstSettings bool // got the initial SETTINGS frame after the preface needToSendSettingsAck bool unackedSettings int // how many SETTINGS have we sent without ACKs? @@ -974,6 +1008,9 @@ var errPrefaceTimeout = errors.New("timeout waiting for client preface") // returns errPrefaceTimeout on timeout, or an error if the greeting // is invalid. func (sc *serverConn) readPreface() error { + if sc.sawClientPreface { + return nil + } errc := make(chan error, 1) go func() { // Read the client preface @@ -1915,6 +1952,26 @@ func (sc *serverConn) processHeaders(f *MetaHeadersFrame) error { return nil } +func (sc *serverConn) upgradeRequest(req *http.Request) { + sc.serveG.check() + id := uint32(1) + sc.maxClientStreamID = id + st := sc.newStream(id, 0, stateHalfClosedRemote) + st.reqTrailer = req.Trailer + if st.reqTrailer != nil { + st.trailer = make(http.Header) + } + rw := sc.newResponseWriter(st, req) + + // Disable any read deadline set by the net/http package + // prior to the upgrade. + if sc.hs.ReadTimeout != 0 { + sc.conn.SetReadDeadline(time.Time{}) + } + + go sc.runHandler(rw, req, sc.handler.ServeHTTP) +} + func (st *stream) processTrailerHeaders(f *MetaHeadersFrame) error { sc := st.sc sc.serveG.check() @@ -2145,6 +2202,11 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r } req = req.WithContext(st.ctx) + rw := sc.newResponseWriter(st, req) + return rw, req, nil +} + +func (sc *serverConn) newResponseWriter(st *stream, req *http.Request) *responseWriter { rws := responseWriterStatePool.Get().(*responseWriterState) bwSave := rws.bw *rws = responseWriterState{} // zero all the fields @@ -2153,10 +2215,7 @@ func (sc *serverConn) newWriterAndRequestNoBody(st *stream, rp requestParam) (*r rws.bw.Reset(chunkWriter{rws}) rws.stream = st rws.req = req - rws.body = body - - rw := &responseWriter{rws: rws} - return rw, req, nil + return &responseWriter{rws: rws} } // Run on its own goroutine. @@ -2316,17 +2375,18 @@ type requestBody struct { _ incomparable stream *stream conn *serverConn - closed bool // for use by Close only - sawEOF bool // for use by Read only - pipe *pipe // non-nil if we have a HTTP entity message body - needsContinue bool // need to send a 100-continue + closeOnce sync.Once // for use by Close only + sawEOF bool // for use by Read only + pipe *pipe // non-nil if we have a HTTP entity message body + needsContinue bool // need to send a 100-continue } func (b *requestBody) Close() error { - if b.pipe != nil && !b.closed { - b.pipe.BreakWithError(errClosedBody) - } - b.closed = true + b.closeOnce.Do(func() { + if b.pipe != nil { + b.pipe.BreakWithError(errClosedBody) + } + }) return nil } @@ -2370,7 +2430,6 @@ type responseWriterState struct { // immutable within a request: stream *stream req *http.Request - body *requestBody // to close at end of request, if DATA frames didn't conn *serverConn // TODO: adjust buffer writing sizes based on server config, frame size updates from peer, etc @@ -2546,8 +2605,9 @@ func (rws *responseWriterState) writeChunk(p []byte) (n int, err error) { // prior to the headers being written. If the set of trailers is fixed // or known before the header is written, the normal Go trailers mechanism // is preferred: -// https://golang.org/pkg/net/http/#ResponseWriter -// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers +// +// https://golang.org/pkg/net/http/#ResponseWriter +// https://golang.org/pkg/net/http/#example_ResponseWriter_trailers const TrailerPrefix = "Trailer:" // promoteUndeclaredTrailers permits http.Handlers to set trailers @@ -2643,8 +2703,7 @@ func checkWriteHeaderCode(code int) { // Issue 22880: require valid WriteHeader status codes. // For now we only enforce that it's three digits. // In the future we might block things over 599 (600 and above aren't defined - // at http://httpwg.org/specs/rfc7231.html#status.codes) - // and we might block under 200 (once we have more mature 1xx support). + // at http://httpwg.org/specs/rfc7231.html#status.codes). // But for now any three digits. // // We used to send "HTTP/1.1 000 0" on the wire in responses but there's @@ -2665,13 +2724,41 @@ func (w *responseWriter) WriteHeader(code int) { } func (rws *responseWriterState) writeHeader(code int) { - if !rws.wroteHeader { - checkWriteHeaderCode(code) - rws.wroteHeader = true - rws.status = code - if len(rws.handlerHeader) > 0 { - rws.snapHeader = cloneHeader(rws.handlerHeader) + if rws.wroteHeader { + return + } + + checkWriteHeaderCode(code) + + // Handle informational headers + if code >= 100 && code <= 199 { + // Per RFC 8297 we must not clear the current header map + h := rws.handlerHeader + + _, cl := h["Content-Length"] + _, te := h["Transfer-Encoding"] + if cl || te { + h = h.Clone() + h.Del("Content-Length") + h.Del("Transfer-Encoding") + } + + if rws.conn.writeHeaders(rws.stream, &writeResHeaders{ + streamID: rws.stream.id, + httpResCode: code, + h: h, + endStream: rws.handlerDone && !rws.hasTrailers(), + }) != nil { + rws.dirty = true } + + return + } + + rws.wroteHeader = true + rws.status = code + if len(rws.handlerHeader) > 0 { + rws.snapHeader = cloneHeader(rws.handlerHeader) } } diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/transport.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/transport.go index 4f098976377..4ded4dfd56c 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/transport.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/transport.go @@ -16,7 +16,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "log" "math" mathrand "math/rand" @@ -501,12 +500,14 @@ func (t *Transport) RoundTripOpt(req *http.Request, opt RoundTripOpt) (*http.Res if req, err = shouldRetryRequest(req, err); err == nil { // After the first retry, do exponential backoff with 10% jitter. if retry == 0 { + t.vlogf("RoundTrip retrying after failure: %v", err) continue } backoff := float64(uint(1) << (uint(retry) - 1)) backoff += backoff * (0.1 * mathrand.Float64()) select { case <-time.After(time.Second * time.Duration(backoff)): + t.vlogf("RoundTrip retrying after failure: %v", err) continue case <-req.Context().Done(): err = req.Context().Err() @@ -732,10 +733,13 @@ func (cc *ClientConn) healthCheck() { // trigger the healthCheck again if there is no frame received. ctx, cancel := context.WithTimeout(context.Background(), pingTimeout) defer cancel() + cc.vlogf("http2: Transport sending health check") err := cc.Ping(ctx) if err != nil { + cc.vlogf("http2: Transport health check failure: %v", err) cc.closeForLostPing() - return + } else { + cc.vlogf("http2: Transport health check success") } } @@ -1765,7 +1769,8 @@ func (cc *ClientConn) encodeHeaders(req *http.Request, addGzipHeader bool, trail } for _, v := range vv { if !httpguts.ValidHeaderFieldValue(v) { - return nil, fmt.Errorf("invalid HTTP header value %q for header %q", v, k) + // Don't include the value in the error, because it may be sensitive. + return nil, fmt.Errorf("invalid HTTP header value for header %q", k) } } } @@ -2898,7 +2903,12 @@ func (t *Transport) logf(format string, args ...interface{}) { log.Printf(format, args...) } -var noBody io.ReadCloser = ioutil.NopCloser(bytes.NewReader(nil)) +var noBody io.ReadCloser = noBodyReader{} + +type noBodyReader struct{} + +func (noBodyReader) Close() error { return nil } +func (noBodyReader) Read([]byte) (int, error) { return 0, io.EOF } type missingBody struct{} diff --git a/cluster-autoscaler/vendor/golang.org/x/net/http2/writesched_priority.go b/cluster-autoscaler/vendor/golang.org/x/net/http2/writesched_priority.go index 2618b2c11d2..0a242c669e2 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/http2/writesched_priority.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/http2/writesched_priority.go @@ -383,16 +383,15 @@ func (ws *priorityWriteScheduler) AdjustStream(streamID uint32, priority Priorit func (ws *priorityWriteScheduler) Push(wr FrameWriteRequest) { var n *priorityNode - if id := wr.StreamID(); id == 0 { + if wr.isControl() { n = &ws.root } else { + id := wr.StreamID() n = ws.nodes[id] if n == nil { // id is an idle or closed stream. wr should not be a HEADERS or - // DATA frame. However, wr can be a RST_STREAM. In this case, we - // push wr onto the root, rather than creating a new priorityNode, - // since RST_STREAM is tiny and the stream's priority is unknown - // anyway. See issue #17919. + // DATA frame. In other case, we push wr onto the root, rather + // than creating a new priorityNode. if wr.DataSize() > 0 { panic("add DATA on non-open stream") } diff --git a/cluster-autoscaler/vendor/golang.org/x/net/idna/trieval.go b/cluster-autoscaler/vendor/golang.org/x/net/idna/trieval.go index 7a8cf889b5b..9c070a44b37 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/idna/trieval.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/idna/trieval.go @@ -17,23 +17,23 @@ package idna // // The per-rune values have the following format: // -// if mapped { -// if inlinedXOR { -// 15..13 inline XOR marker -// 12..11 unused -// 10..3 inline XOR mask -// } else { -// 15..3 index into xor or mapping table -// } -// } else { -// 15..14 unused -// 13 mayNeedNorm -// 12..11 attributes -// 10..8 joining type -// 7..3 category type -// } -// 2 use xor pattern -// 1..0 mapped category +// if mapped { +// if inlinedXOR { +// 15..13 inline XOR marker +// 12..11 unused +// 10..3 inline XOR mask +// } else { +// 15..3 index into xor or mapping table +// } +// } else { +// 15..14 unused +// 13 mayNeedNorm +// 12..11 attributes +// 10..8 joining type +// 7..3 category type +// } +// 2 use xor pattern +// 1..0 mapped category // // See the definitions below for a more detailed description of the various // bits. diff --git a/cluster-autoscaler/vendor/golang.org/x/net/websocket/websocket.go b/cluster-autoscaler/vendor/golang.org/x/net/websocket/websocket.go index 6c45c735296..ea422e110d7 100644 --- a/cluster-autoscaler/vendor/golang.org/x/net/websocket/websocket.go +++ b/cluster-autoscaler/vendor/golang.org/x/net/websocket/websocket.go @@ -8,8 +8,8 @@ // This package currently lacks some features found in alternative // and more actively maintained WebSocket packages: // -// https://godoc.org/github.com/gorilla/websocket -// https://godoc.org/nhooyr.io/websocket +// https://godoc.org/github.com/gorilla/websocket +// https://godoc.org/nhooyr.io/websocket package websocket // import "golang.org/x/net/websocket" import ( @@ -416,7 +416,6 @@ Trivial usage: // send binary frame data = []byte{0, 1, 2} websocket.Message.Send(ws, data) - */ var Message = Codec{marshal, unmarshal} diff --git a/cluster-autoscaler/vendor/golang.org/x/oauth2/go.mod b/cluster-autoscaler/vendor/golang.org/x/oauth2/go.mod deleted file mode 100644 index 2b13f0b34cb..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/oauth2/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module golang.org/x/oauth2 - -go 1.11 - -require ( - cloud.google.com/go v0.65.0 - golang.org/x/net v0.0.0-20200822124328-c89045814202 - google.golang.org/appengine v1.6.6 -) diff --git a/cluster-autoscaler/vendor/golang.org/x/oauth2/go.sum b/cluster-autoscaler/vendor/golang.org/x/oauth2/go.sum deleted file mode 100644 index eab5833c421..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/oauth2/go.sum +++ /dev/null @@ -1,361 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0 h1:Dg9iHVQfrhq82rUNu9ZxUDrJLaxFUe/HlCVaLyRruq8= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -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/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1 h1:JFrFEBb2xKufg6XkJsJr+WbKb4FQlURi5RUcBveYu9k= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/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-20190213061140-3a22650c66bd/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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -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-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -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/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6 h1:lMO5rYAqUxkmaj76jAkRUvt5JZgFymx/+Q5Mzfivuhc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/cluster-autoscaler/vendor/golang.org/x/sync/AUTHORS b/cluster-autoscaler/vendor/golang.org/x/sync/AUTHORS deleted file mode 100644 index 15167cd746c..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sync/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/cluster-autoscaler/vendor/golang.org/x/sync/CONTRIBUTORS b/cluster-autoscaler/vendor/golang.org/x/sync/CONTRIBUTORS deleted file mode 100644 index 1c4577e9680..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sync/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/AUTHORS b/cluster-autoscaler/vendor/golang.org/x/sys/AUTHORS deleted file mode 100644 index 15167cd746c..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sys/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/CONTRIBUTORS b/cluster-autoscaler/vendor/golang.org/x/sys/CONTRIBUTORS deleted file mode 100644 index 1c4577e9680..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sys/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu.go b/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu.go index b56886f2616..83f112c4c80 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu.go @@ -106,8 +106,8 @@ var ARM64 struct { // ARM contains the supported CPU features of the current ARM (32-bit) platform. // All feature flags are false if: -// 1. the current platform is not arm, or -// 2. the current operating system is not Linux. +// 1. the current platform is not arm, or +// 2. the current operating system is not Linux. var ARM struct { _ CacheLinePad HasSWP bool // SWP instruction support diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c b/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c index e363c7d1319..a4605e6d12e 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c +++ b/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c @@ -7,6 +7,7 @@ #include #include +#include // Need to wrap __get_cpuid_count because it's declared as static. int @@ -17,27 +18,21 @@ gccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf, return __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx); } +#pragma GCC diagnostic ignored "-Wunknown-pragmas" +#pragma GCC push_options +#pragma GCC target("xsave") +#pragma clang attribute push (__attribute__((target("xsave"))), apply_to=function) + // xgetbv reads the contents of an XCR (Extended Control Register) // specified in the ECX register into registers EDX:EAX. // Currently, the only supported value for XCR is 0. -// -// TODO: Replace with a better alternative: -// -// #include -// -// #pragma GCC target("xsave") -// -// void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { -// unsigned long long x = _xgetbv(0); -// *eax = x & 0xffffffff; -// *edx = (x >> 32) & 0xffffffff; -// } -// -// Note that _xgetbv is defined starting with GCC 8. void gccgoXgetbv(uint32_t *eax, uint32_t *edx) { - __asm(" xorl %%ecx, %%ecx\n" - " xgetbv" - : "=a"(*eax), "=d"(*edx)); + uint64_t v = _xgetbv(0); + *eax = v & 0xffffffff; + *edx = v >> 32; } + +#pragma clang attribute pop +#pragma GCC pop_options diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go new file mode 100644 index 00000000000..dd10eb79fee --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go @@ -0,0 +1,12 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build !linux && riscv64 +// +build !linux,riscv64 + +package cpu + +func archInit() { + Initialized = true +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall.go b/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall.go index 602473cba37..a25223b8fd4 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall.go @@ -113,5 +113,6 @@ func (tv *Timeval) Nano() int64 { // use is a no-op, but the compiler cannot see that it is. // Calling use(p) ensures that p is kept live until that point. +// //go:noescape func use(p unsafe.Pointer) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall_plan9.go b/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall_plan9.go index 723b1f4002a..d079d8116e9 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall_plan9.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/plan9/syscall_plan9.go @@ -115,6 +115,7 @@ func Write(fd int, p []byte) (n int, err error) { var ioSync int64 //sys fd2path(fd int, buf []byte) (err error) + func Fd2path(fd int) (path string, err error) { var buf [512]byte @@ -126,6 +127,7 @@ func Fd2path(fd int) (path string, err error) { } //sys pipe(p *[2]int32) (err error) + func Pipe(p []int) (err error) { if len(p) != 2 { return syscall.ErrorString("bad arg in system call") @@ -180,6 +182,7 @@ func (w Waitmsg) ExitStatus() int { } //sys await(s []byte) (n int, err error) + func Await(w *Waitmsg) (err error) { var buf [512]byte var f [5][]byte @@ -301,42 +304,49 @@ func Getgroups() (gids []int, err error) { } //sys open(path string, mode int) (fd int, err error) + func Open(path string, mode int) (fd int, err error) { fixwd() return open(path, mode) } //sys create(path string, mode int, perm uint32) (fd int, err error) + func Create(path string, mode int, perm uint32) (fd int, err error) { fixwd() return create(path, mode, perm) } //sys remove(path string) (err error) + func Remove(path string) error { fixwd() return remove(path) } //sys stat(path string, edir []byte) (n int, err error) + func Stat(path string, edir []byte) (n int, err error) { fixwd() return stat(path, edir) } //sys bind(name string, old string, flag int) (err error) + func Bind(name string, old string, flag int) (err error) { fixwd() return bind(name, old, flag) } //sys mount(fd int, afd int, old string, flag int, aname string) (err error) + func Mount(fd int, afd int, old string, flag int, aname string) (err error) { fixwd() return mount(fd, afd, old, flag, aname) } //sys wstat(path string, edir []byte) (err error) + func Wstat(path string, edir []byte) (err error) { fixwd() return wstat(path, edir) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s b/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s new file mode 100644 index 00000000000..d560019ea29 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s @@ -0,0 +1,29 @@ +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build (darwin || freebsd || netbsd || openbsd) && gc +// +build darwin freebsd netbsd openbsd +// +build gc + +#include "textflag.h" + +// System call support for RISCV64 BSD + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-56 + JMP syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-80 + JMP syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-104 + JMP syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-56 + JMP syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 + JMP syscall·RawSyscall6(SB) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_linux_loong64.s b/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_linux_loong64.s index 6abd48eef0d..565357288a8 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_linux_loong64.s +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/asm_linux_loong64.s @@ -30,7 +30,7 @@ TEXT ·SyscallNoError(SB),NOSPLIT,$0-48 MOVV trap+0(FP), R11 // syscall entry SYSCALL MOVV R4, r1+32(FP) - MOVV R5, r2+40(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 JAL runtime·exitsyscall(SB) RET @@ -50,5 +50,5 @@ TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48 MOVV trap+0(FP), R11 // syscall entry SYSCALL MOVV R4, r1+32(FP) - MOVV R5, r2+40(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0 RET diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/endian_little.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/endian_little.go index 4362f47e2c0..b0f2bc4ae3b 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/endian_little.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/endian_little.go @@ -2,8 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // -//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh -// +build 386 amd64 amd64p32 alpha arm arm64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh +//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh +// +build 386 amd64 amd64p32 alpha arm arm64 loong64 mipsle mips64le mips64p32le nios2 ppc64le riscv riscv64 sh package unix diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_386.go deleted file mode 100644 index 761db66efec..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_386.go +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep -// them here for backwards compatibility. - -package unix - -const ( - DLT_HHDLC = 0x79 - IFF_SMART = 0x20 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BSC = 0x53 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IPPROTO_MAXID = 0x34 - IPV6_FAITH = 0x1d - IPV6_MIN_MEMBERSHIPS = 0x1f - IP_FAITH = 0x16 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MIN_MEMBERSHIPS = 0x1f - MAP_NORESERVE = 0x40 - MAP_RENAME = 0x20 - NET_RT_MAXID = 0x6 - RTF_PRCLONING = 0x10000 - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RT_CACHING_CONTEXT = 0x1 - RT_NORTREF = 0x2 - SIOCADDRT = 0x8030720a - SIOCALIFADDR = 0x8118691b - SIOCDELRT = 0x8030720b - SIOCDLIFADDR = 0x8118691d - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCSLIFPHYADDR = 0x8118694a -) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go deleted file mode 100644 index 070f44b6510..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go +++ /dev/null @@ -1,233 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep -// them here for backwards compatibility. - -package unix - -const ( - DLT_HHDLC = 0x79 - IFF_SMART = 0x20 - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BSC = 0x53 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAITH = 0xf2 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_IPXIP = 0xf9 - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - IPPROTO_MAXID = 0x34 - IPV6_FAITH = 0x1d - IPV6_MIN_MEMBERSHIPS = 0x1f - IP_FAITH = 0x16 - IP_MAX_SOURCE_FILTER = 0x400 - IP_MIN_MEMBERSHIPS = 0x1f - MAP_NORESERVE = 0x40 - MAP_RENAME = 0x20 - NET_RT_MAXID = 0x6 - RTF_PRCLONING = 0x10000 - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - RT_CACHING_CONTEXT = 0x1 - RT_NORTREF = 0x2 - SIOCADDRT = 0x8040720a - SIOCALIFADDR = 0x8118691b - SIOCDELRT = 0x8040720b - SIOCDLIFADDR = 0x8118691d - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCSLIFPHYADDR = 0x8118694a -) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go deleted file mode 100644 index 856dca32543..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go +++ /dev/null @@ -1,226 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package unix - -const ( - IFT_1822 = 0x2 - IFT_A12MPPSWITCH = 0x82 - IFT_AAL2 = 0xbb - IFT_AAL5 = 0x31 - IFT_ADSL = 0x5e - IFT_AFLANE8023 = 0x3b - IFT_AFLANE8025 = 0x3c - IFT_ARAP = 0x58 - IFT_ARCNET = 0x23 - IFT_ARCNETPLUS = 0x24 - IFT_ASYNC = 0x54 - IFT_ATM = 0x25 - IFT_ATMDXI = 0x69 - IFT_ATMFUNI = 0x6a - IFT_ATMIMA = 0x6b - IFT_ATMLOGICAL = 0x50 - IFT_ATMRADIO = 0xbd - IFT_ATMSUBINTERFACE = 0x86 - IFT_ATMVCIENDPT = 0xc2 - IFT_ATMVIRTUAL = 0x95 - IFT_BGPPOLICYACCOUNTING = 0xa2 - IFT_BSC = 0x53 - IFT_CCTEMUL = 0x3d - IFT_CEPT = 0x13 - IFT_CES = 0x85 - IFT_CHANNEL = 0x46 - IFT_CNR = 0x55 - IFT_COFFEE = 0x84 - IFT_COMPOSITELINK = 0x9b - IFT_DCN = 0x8d - IFT_DIGITALPOWERLINE = 0x8a - IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba - IFT_DLSW = 0x4a - IFT_DOCSCABLEDOWNSTREAM = 0x80 - IFT_DOCSCABLEMACLAYER = 0x7f - IFT_DOCSCABLEUPSTREAM = 0x81 - IFT_DS0 = 0x51 - IFT_DS0BUNDLE = 0x52 - IFT_DS1FDL = 0xaa - IFT_DS3 = 0x1e - IFT_DTM = 0x8c - IFT_DVBASILN = 0xac - IFT_DVBASIOUT = 0xad - IFT_DVBRCCDOWNSTREAM = 0x93 - IFT_DVBRCCMACLAYER = 0x92 - IFT_DVBRCCUPSTREAM = 0x94 - IFT_ENC = 0xf4 - IFT_EON = 0x19 - IFT_EPLRS = 0x57 - IFT_ESCON = 0x49 - IFT_ETHER = 0x6 - IFT_FAST = 0x7d - IFT_FASTETHER = 0x3e - IFT_FASTETHERFX = 0x45 - IFT_FDDI = 0xf - IFT_FIBRECHANNEL = 0x38 - IFT_FRAMERELAYINTERCONNECT = 0x3a - IFT_FRAMERELAYMPI = 0x5c - IFT_FRDLCIENDPT = 0xc1 - IFT_FRELAY = 0x20 - IFT_FRELAYDCE = 0x2c - IFT_FRF16MFRBUNDLE = 0xa3 - IFT_FRFORWARD = 0x9e - IFT_G703AT2MB = 0x43 - IFT_G703AT64K = 0x42 - IFT_GIF = 0xf0 - IFT_GIGABITETHERNET = 0x75 - IFT_GR303IDT = 0xb2 - IFT_GR303RDT = 0xb1 - IFT_H323GATEKEEPER = 0xa4 - IFT_H323PROXY = 0xa5 - IFT_HDH1822 = 0x3 - IFT_HDLC = 0x76 - IFT_HDSL2 = 0xa8 - IFT_HIPERLAN2 = 0xb7 - IFT_HIPPI = 0x2f - IFT_HIPPIINTERFACE = 0x39 - IFT_HOSTPAD = 0x5a - IFT_HSSI = 0x2e - IFT_HY = 0xe - IFT_IBM370PARCHAN = 0x48 - IFT_IDSL = 0x9a - IFT_IEEE80211 = 0x47 - IFT_IEEE80212 = 0x37 - IFT_IEEE8023ADLAG = 0xa1 - IFT_IFGSN = 0x91 - IFT_IMT = 0xbe - IFT_INTERLEAVE = 0x7c - IFT_IP = 0x7e - IFT_IPFORWARD = 0x8e - IFT_IPOVERATM = 0x72 - IFT_IPOVERCDLC = 0x6d - IFT_IPOVERCLAW = 0x6e - IFT_IPSWITCH = 0x4e - IFT_ISDN = 0x3f - IFT_ISDNBASIC = 0x14 - IFT_ISDNPRIMARY = 0x15 - IFT_ISDNS = 0x4b - IFT_ISDNU = 0x4c - IFT_ISO88022LLC = 0x29 - IFT_ISO88023 = 0x7 - IFT_ISO88024 = 0x8 - IFT_ISO88025 = 0x9 - IFT_ISO88025CRFPINT = 0x62 - IFT_ISO88025DTR = 0x56 - IFT_ISO88025FIBER = 0x73 - IFT_ISO88026 = 0xa - IFT_ISUP = 0xb3 - IFT_L3IPXVLAN = 0x89 - IFT_LAPB = 0x10 - IFT_LAPD = 0x4d - IFT_LAPF = 0x77 - IFT_LOCALTALK = 0x2a - IFT_LOOP = 0x18 - IFT_MEDIAMAILOVERIP = 0x8b - IFT_MFSIGLINK = 0xa7 - IFT_MIOX25 = 0x26 - IFT_MODEM = 0x30 - IFT_MPC = 0x71 - IFT_MPLS = 0xa6 - IFT_MPLSTUNNEL = 0x96 - IFT_MSDSL = 0x8f - IFT_MVL = 0xbf - IFT_MYRINET = 0x63 - IFT_NFAS = 0xaf - IFT_NSIP = 0x1b - IFT_OPTICALCHANNEL = 0xc3 - IFT_OPTICALTRANSPORT = 0xc4 - IFT_OTHER = 0x1 - IFT_P10 = 0xc - IFT_P80 = 0xd - IFT_PARA = 0x22 - IFT_PFLOG = 0xf6 - IFT_PFSYNC = 0xf7 - IFT_PLC = 0xae - IFT_POS = 0xab - IFT_PPPMULTILINKBUNDLE = 0x6c - IFT_PROPBWAP2MP = 0xb8 - IFT_PROPCNLS = 0x59 - IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 - IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 - IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 - IFT_PROPMUX = 0x36 - IFT_PROPWIRELESSP2P = 0x9d - IFT_PTPSERIAL = 0x16 - IFT_PVC = 0xf1 - IFT_QLLC = 0x44 - IFT_RADIOMAC = 0xbc - IFT_RADSL = 0x5f - IFT_REACHDSL = 0xc0 - IFT_RFC1483 = 0x9f - IFT_RS232 = 0x21 - IFT_RSRB = 0x4f - IFT_SDLC = 0x11 - IFT_SDSL = 0x60 - IFT_SHDSL = 0xa9 - IFT_SIP = 0x1f - IFT_SLIP = 0x1c - IFT_SMDSDXI = 0x2b - IFT_SMDSICIP = 0x34 - IFT_SONET = 0x27 - IFT_SONETOVERHEADCHANNEL = 0xb9 - IFT_SONETPATH = 0x32 - IFT_SONETVT = 0x33 - IFT_SRP = 0x97 - IFT_SS7SIGLINK = 0x9c - IFT_STACKTOSTACK = 0x6f - IFT_STARLAN = 0xb - IFT_STF = 0xd7 - IFT_T1 = 0x12 - IFT_TDLC = 0x74 - IFT_TERMPAD = 0x5b - IFT_TR008 = 0xb0 - IFT_TRANSPHDLC = 0x7b - IFT_TUNNEL = 0x83 - IFT_ULTRA = 0x1d - IFT_USB = 0xa0 - IFT_V11 = 0x40 - IFT_V35 = 0x2d - IFT_V36 = 0x41 - IFT_V37 = 0x78 - IFT_VDSL = 0x61 - IFT_VIRTUALIPADDRESS = 0x70 - IFT_VOICEEM = 0x64 - IFT_VOICEENCAP = 0x67 - IFT_VOICEFXO = 0x65 - IFT_VOICEFXS = 0x66 - IFT_VOICEOVERATM = 0x98 - IFT_VOICEOVERFRAMERELAY = 0x99 - IFT_VOICEOVERIP = 0x68 - IFT_X213 = 0x5d - IFT_X25 = 0x5 - IFT_X25DDN = 0x4 - IFT_X25HUNTGROUP = 0x7a - IFT_X25MLP = 0x79 - IFT_X25PLE = 0x28 - IFT_XETHER = 0x1a - - // missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go - IFF_SMART = 0x20 - IFT_FAITH = 0xf2 - IFT_IPXIP = 0xf9 - IPPROTO_MAXID = 0x34 - IPV6_FAITH = 0x1d - IP_FAITH = 0x16 - MAP_NORESERVE = 0x40 - MAP_RENAME = 0x20 - NET_RT_MAXID = 0x6 - RTF_PRCLONING = 0x10000 - RTM_OLDADD = 0x9 - RTM_OLDDEL = 0xa - SIOCADDRT = 0x8030720a - SIOCALIFADDR = 0x8118691b - SIOCDELRT = 0x8030720b - SIOCDLIFADDR = 0x8118691d - SIOCGLIFADDR = 0xc118691c - SIOCGLIFPHYADDR = 0xc118694b - SIOCSLIFPHYADDR = 0x8118694a -) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go deleted file mode 100644 index 946dcf3fc7e..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/errors_freebsd_arm64.go +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright 2020 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep -// them here for backwards compatibility. - -package unix - -const ( - DLT_HHDLC = 0x79 - IPV6_MIN_MEMBERSHIPS = 0x1f - IP_MAX_SOURCE_FILTER = 0x400 - IP_MIN_MEMBERSHIPS = 0x1f - RT_CACHING_CONTEXT = 0x1 - RT_NORTREF = 0x2 -) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ifreq_linux.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ifreq_linux.go index 934af313c32..15721a5104e 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ifreq_linux.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ifreq_linux.go @@ -8,7 +8,6 @@ package unix import ( - "bytes" "unsafe" ) @@ -45,13 +44,7 @@ func NewIfreq(name string) (*Ifreq, error) { // Name returns the interface name associated with the Ifreq. func (ifr *Ifreq) Name() string { - // BytePtrToString requires a NULL terminator or the program may crash. If - // one is not present, just return the empty string. - if !bytes.Contains(ifr.raw.Ifrn[:], []byte{0x00}) { - return "" - } - - return BytePtrToString(&ifr.raw.Ifrn[0]) + return ByteSliceToString(ifr.raw.Ifrn[:]) } // According to netdevice(7), only AF_INET addresses are returned for numerous diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkall.sh b/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkall.sh index ee73623489b..dcef4de6f18 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkall.sh +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkall.sh @@ -89,25 +89,30 @@ dragonfly_amd64) freebsd_386) mkerrors="$mkerrors -m32" mksyscall="go run mksyscall.go -l32" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_amd64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" mktypes="GOARCH=$GOARCH go tool cgo -godefs" ;; freebsd_arm) mkerrors="$mkerrors" mksyscall="go run mksyscall.go -l32 -arm" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" # Let the type of C char be signed for making the bare syscall # API consistent across platforms. mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; freebsd_arm64) mkerrors="$mkerrors -m64" - mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" + mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" + ;; +freebsd_riscv64) + mkerrors="$mkerrors -m64" + mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'" mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" ;; netbsd_386) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkerrors.sh b/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkerrors.sh index d888fb77036..2ab44aa6591 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkerrors.sh +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/mkerrors.sh @@ -128,6 +128,7 @@ includes_FreeBSD=' #include #include #include +#include #include #include #include @@ -202,6 +203,7 @@ struct ltchars { #include #include #include +#include #include #include #include @@ -295,6 +297,10 @@ struct ltchars { #define SOL_NETLINK 270 #endif +#ifndef SOL_SMC +#define SOL_SMC 286 +#endif + #ifdef SOL_BLUETOOTH // SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h // but it is already in bluetooth_linux.go @@ -529,7 +535,7 @@ ccflags="$@" $2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ || $2 ~ /^NS_GET_/ || $2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ || - $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|TFD)_/ || + $2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ || $2 ~ /^KEXEC_/ || $2 ~ /^LINUX_REBOOT_CMD_/ || $2 ~ /^LINUX_REBOOT_MAGIC[12]$/ || @@ -553,6 +559,7 @@ ccflags="$@" $2 ~ /^CLONE_[A-Z_]+/ || $2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+)$/ && $2 ~ /^(BPF|DLT)_/ || + $2 ~ /^AUDIT_/ || $2 ~ /^(CLOCK|TIMER)_/ || $2 ~ /^CAN_/ || $2 ~ /^CAP_/ || @@ -575,7 +582,6 @@ ccflags="$@" $2 ~ /^SEEK_/ || $2 ~ /^SPLICE_/ || $2 ~ /^SYNC_FILE_RANGE_/ || - $2 !~ /^AUDIT_RECORD_MAGIC/ && $2 !~ /IOC_MAGIC/ && $2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ || $2 ~ /^(VM|VMADDR)_/ || diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_aix.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_aix.go index f2a114fc27b..ac579c60feb 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_aix.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_aix.go @@ -37,6 +37,7 @@ func Creat(path string, mode uint32) (fd int, err error) { } //sys utimes(path string, times *[2]Timeval) (err error) + func Utimes(path string, tv []Timeval) error { if len(tv) != 2 { return EINVAL @@ -45,6 +46,7 @@ func Utimes(path string, tv []Timeval) error { } //sys utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) + func UtimesNano(path string, ts []Timespec) error { if len(ts) != 2 { return EINVAL @@ -215,12 +217,12 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { return } -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { // Recvmsg not implemented on AIX return -1, -1, -1, ENOSYS } -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { // SendmsgN not implemented on AIX return -1, ENOSYS } @@ -300,11 +302,13 @@ func direntNamlen(buf []byte) (uint64, bool) { } //sys getdirent(fd int, buf []byte) (n int, err error) + func Getdents(fd int, buf []byte) (n int, err error) { return getdirent(fd, buf) } //sys wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) + func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) { var status _C_int var r Pid_t @@ -372,6 +376,7 @@ func (w WaitStatus) TrapCause() int { return -1 } //sys fcntl(fd int, cmd int, arg int) (val int, err error) //sys fsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range + func Fsync(fd int) error { return fsyncRange(fd, O_SYNC, 0, 0) } @@ -536,6 +541,7 @@ func Poll(fds []PollFd, timeout int) (n int, err error) { //sys Getsystemcfg(label int) (n uint64) //sys umount(target string) (err error) + func Unmount(target string, flags int) (err error) { if flags != 0 { // AIX doesn't have any flags for umount. diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_bsd.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_bsd.go index 9c87c5f07f8..c437fc5d7bb 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_bsd.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_bsd.go @@ -325,27 +325,26 @@ func GetsockoptString(fd, level, opt int) (string, error) { //sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(rsa)) msg.Namelen = uint32(SizeofSockaddrAny) - var iov Iovec - if len(p) > 0 { - iov.Base = (*byte)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } var dummy byte if len(oob) > 0 { // receive at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Control = (*byte)(unsafe.Pointer(&oob[0])) msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = recvmsg(fd, &msg, flags); err != nil { return } @@ -356,31 +355,32 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(ptr)) msg.Namelen = uint32(salen) - var iov Iovec - if len(p) > 0 { - iov.Base = (*byte)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } var dummy byte + var empty bool if len(oob) > 0 { // send at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + empty := emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Control = (*byte)(unsafe.Pointer(&oob[0])) msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = sendmsg(fd, &msg, flags); err != nil { return 0, err } - if len(oob) > 0 && len(p) == 0 { + if len(oob) > 0 && empty { n = 0 } return n, nil diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_darwin.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_darwin.go index 09a25c65321..4f87f16ea7c 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_darwin.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_darwin.go @@ -393,6 +393,13 @@ func GetsockoptXucred(fd, level, opt int) (*Xucred, error) { return x, err } +func GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) { + var value TCPConnectionInfo + vallen := _Socklen(SizeofTCPConnectionInfo) + err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen) + return &value, err +} + func SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) { mib, err := sysctlmib(name, args...) if err != nil { @@ -504,6 +511,7 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { //sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) //sys Mknod(path string, mode uint32, dev int) (err error) +//sys Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) //sys Pathconf(path string, name int) (val int, err error) @@ -572,7 +580,6 @@ func SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) { // Nfssvc // Getfh // Quotactl -// Mount // Csops // Waitid // Add_profil diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_dragonfly.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_dragonfly.go index c61e2749800..61c0d0de15d 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_dragonfly.go @@ -125,11 +125,13 @@ func Pipe2(p []int, flags int) (err error) { } //sys extpread(fd int, p []byte, flags int, offset int64) (n int, err error) + func pread(fd int, p []byte, offset int64) (n int, err error) { return extpread(fd, p, 0, offset) } //sys extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) + func pwrite(fd int, p []byte, offset int64) (n int, err error) { return extpwrite(fd, p, 0, offset) } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd.go index 6f6c510f413..de7c23e0648 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd.go @@ -17,25 +17,12 @@ import ( "unsafe" ) -const ( - SYS_FSTAT_FREEBSD12 = 551 // { int fstat(int fd, _Out_ struct stat *sb); } - SYS_FSTATAT_FREEBSD12 = 552 // { int fstatat(int fd, _In_z_ char *path, \ - SYS_GETDIRENTRIES_FREEBSD12 = 554 // { ssize_t getdirentries(int fd, \ - SYS_STATFS_FREEBSD12 = 555 // { int statfs(_In_z_ char *path, \ - SYS_FSTATFS_FREEBSD12 = 556 // { int fstatfs(int fd, \ - SYS_GETFSSTAT_FREEBSD12 = 557 // { int getfsstat( \ - SYS_MKNODAT_FREEBSD12 = 559 // { int mknodat(int fd, _In_z_ char *path, \ -) - // See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html. var ( osreldateOnce sync.Once osreldate uint32 ) -// INO64_FIRST from /usr/src/lib/libc/sys/compat-ino64.h -const _ino64First = 1200031 - func supportsABI(ver uint32) bool { osreldateOnce.Do(func() { osreldate, _ = SysctlUint32("kern.osreldate") }) return osreldate >= ver @@ -159,38 +146,18 @@ func Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) { func Getfsstat(buf []Statfs_t, flags int) (n int, err error) { var ( - _p0 unsafe.Pointer - bufsize uintptr - oldBuf []statfs_freebsd11_t - needsConvert bool + _p0 unsafe.Pointer + bufsize uintptr ) - if len(buf) > 0 { - if supportsABI(_ino64First) { - _p0 = unsafe.Pointer(&buf[0]) - bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) - } else { - n := len(buf) - oldBuf = make([]statfs_freebsd11_t, n) - _p0 = unsafe.Pointer(&oldBuf[0]) - bufsize = unsafe.Sizeof(statfs_freebsd11_t{}) * uintptr(n) - needsConvert = true - } + _p0 = unsafe.Pointer(&buf[0]) + bufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf)) } - var sysno uintptr = SYS_GETFSSTAT - if supportsABI(_ino64First) { - sysno = SYS_GETFSSTAT_FREEBSD12 - } - r0, _, e1 := Syscall(sysno, uintptr(_p0), bufsize, uintptr(flags)) + r0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags)) n = int(r0) if e1 != 0 { err = e1 } - if e1 == 0 && needsConvert { - for i := range oldBuf { - buf[i].convertFrom(&oldBuf[i]) - } - } return } @@ -245,87 +212,11 @@ func Uname(uname *Utsname) error { } func Stat(path string, st *Stat_t) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstatat_freebsd12(AT_FDCWD, path, st, 0) - } - err = stat(path, &oldStat) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil + return Fstatat(AT_FDCWD, path, st, 0) } func Lstat(path string, st *Stat_t) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstatat_freebsd12(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) - } - err = lstat(path, &oldStat) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil -} - -func Fstat(fd int, st *Stat_t) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstat_freebsd12(fd, st) - } - err = fstat(fd, &oldStat) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil -} - -func Fstatat(fd int, path string, st *Stat_t, flags int) (err error) { - var oldStat stat_freebsd11_t - if supportsABI(_ino64First) { - return fstatat_freebsd12(fd, path, st, flags) - } - err = fstatat(fd, path, &oldStat, flags) - if err != nil { - return err - } - - st.convertFrom(&oldStat) - return nil -} - -func Statfs(path string, st *Statfs_t) (err error) { - var oldStatfs statfs_freebsd11_t - if supportsABI(_ino64First) { - return statfs_freebsd12(path, st) - } - err = statfs(path, &oldStatfs) - if err != nil { - return err - } - - st.convertFrom(&oldStatfs) - return nil -} - -func Fstatfs(fd int, st *Statfs_t) (err error) { - var oldStatfs statfs_freebsd11_t - if supportsABI(_ino64First) { - return fstatfs_freebsd12(fd, st) - } - err = fstatfs(fd, &oldStatfs) - if err != nil { - return err - } - - st.convertFrom(&oldStatfs) - return nil + return Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW) } func Getdents(fd int, buf []byte) (n int, err error) { @@ -333,162 +224,25 @@ func Getdents(fd int, buf []byte) (n int, err error) { } func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { - if supportsABI(_ino64First) { - if basep == nil || unsafe.Sizeof(*basep) == 8 { - return getdirentries_freebsd12(fd, buf, (*uint64)(unsafe.Pointer(basep))) - } - // The freebsd12 syscall needs a 64-bit base. On 32-bit machines - // we can't just use the basep passed in. See #32498. - var base uint64 = uint64(*basep) - n, err = getdirentries_freebsd12(fd, buf, &base) - *basep = uintptr(base) - if base>>32 != 0 { - // We can't stuff the base back into a uintptr, so any - // future calls would be suspect. Generate an error. - // EIO is allowed by getdirentries. - err = EIO - } - return - } - - // The old syscall entries are smaller than the new. Use 1/4 of the original - // buffer size rounded up to DIRBLKSIZ (see /usr/src/lib/libc/sys/getdirentries.c). - oldBufLen := roundup(len(buf)/4, _dirblksiz) - oldBuf := make([]byte, oldBufLen) - n, err = getdirentries(fd, oldBuf, basep) - if err == nil && n > 0 { - n = convertFromDirents11(buf, oldBuf[:n]) + if basep == nil || unsafe.Sizeof(*basep) == 8 { + return getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep))) + } + // The syscall needs a 64-bit base. On 32-bit machines + // we can't just use the basep passed in. See #32498. + var base uint64 = uint64(*basep) + n, err = getdirentries(fd, buf, &base) + *basep = uintptr(base) + if base>>32 != 0 { + // We can't stuff the base back into a uintptr, so any + // future calls would be suspect. Generate an error. + // EIO is allowed by getdirentries. + err = EIO } return } func Mknod(path string, mode uint32, dev uint64) (err error) { - var oldDev int - if supportsABI(_ino64First) { - return mknodat_freebsd12(AT_FDCWD, path, mode, dev) - } - oldDev = int(dev) - return mknod(path, mode, oldDev) -} - -func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { - var oldDev int - if supportsABI(_ino64First) { - return mknodat_freebsd12(fd, path, mode, dev) - } - oldDev = int(dev) - return mknodat(fd, path, mode, oldDev) -} - -// round x to the nearest multiple of y, larger or equal to x. -// -// from /usr/include/sys/param.h Macros for counting and rounding. -// #define roundup(x, y) ((((x)+((y)-1))/(y))*(y)) -func roundup(x, y int) int { - return ((x + y - 1) / y) * y -} - -func (s *Stat_t) convertFrom(old *stat_freebsd11_t) { - *s = Stat_t{ - Dev: uint64(old.Dev), - Ino: uint64(old.Ino), - Nlink: uint64(old.Nlink), - Mode: old.Mode, - Uid: old.Uid, - Gid: old.Gid, - Rdev: uint64(old.Rdev), - Atim: old.Atim, - Mtim: old.Mtim, - Ctim: old.Ctim, - Btim: old.Btim, - Size: old.Size, - Blocks: old.Blocks, - Blksize: old.Blksize, - Flags: old.Flags, - Gen: uint64(old.Gen), - } -} - -func (s *Statfs_t) convertFrom(old *statfs_freebsd11_t) { - *s = Statfs_t{ - Version: _statfsVersion, - Type: old.Type, - Flags: old.Flags, - Bsize: old.Bsize, - Iosize: old.Iosize, - Blocks: old.Blocks, - Bfree: old.Bfree, - Bavail: old.Bavail, - Files: old.Files, - Ffree: old.Ffree, - Syncwrites: old.Syncwrites, - Asyncwrites: old.Asyncwrites, - Syncreads: old.Syncreads, - Asyncreads: old.Asyncreads, - // Spare - Namemax: old.Namemax, - Owner: old.Owner, - Fsid: old.Fsid, - // Charspare - // Fstypename - // Mntfromname - // Mntonname - } - - sl := old.Fstypename[:] - n := clen(*(*[]byte)(unsafe.Pointer(&sl))) - copy(s.Fstypename[:], old.Fstypename[:n]) - - sl = old.Mntfromname[:] - n = clen(*(*[]byte)(unsafe.Pointer(&sl))) - copy(s.Mntfromname[:], old.Mntfromname[:n]) - - sl = old.Mntonname[:] - n = clen(*(*[]byte)(unsafe.Pointer(&sl))) - copy(s.Mntonname[:], old.Mntonname[:n]) -} - -func convertFromDirents11(buf []byte, old []byte) int { - const ( - fixedSize = int(unsafe.Offsetof(Dirent{}.Name)) - oldFixedSize = int(unsafe.Offsetof(dirent_freebsd11{}.Name)) - ) - - dstPos := 0 - srcPos := 0 - for dstPos+fixedSize < len(buf) && srcPos+oldFixedSize < len(old) { - var dstDirent Dirent - var srcDirent dirent_freebsd11 - - // If multiple direntries are written, sometimes when we reach the final one, - // we may have cap of old less than size of dirent_freebsd11. - copy((*[unsafe.Sizeof(srcDirent)]byte)(unsafe.Pointer(&srcDirent))[:], old[srcPos:]) - - reclen := roundup(fixedSize+int(srcDirent.Namlen)+1, 8) - if dstPos+reclen > len(buf) { - break - } - - dstDirent.Fileno = uint64(srcDirent.Fileno) - dstDirent.Off = 0 - dstDirent.Reclen = uint16(reclen) - dstDirent.Type = srcDirent.Type - dstDirent.Pad0 = 0 - dstDirent.Namlen = uint16(srcDirent.Namlen) - dstDirent.Pad1 = 0 - - copy(dstDirent.Name[:], srcDirent.Name[:srcDirent.Namlen]) - copy(buf[dstPos:], (*[unsafe.Sizeof(dstDirent)]byte)(unsafe.Pointer(&dstDirent))[:]) - padding := buf[dstPos+fixedSize+int(dstDirent.Namlen) : dstPos+reclen] - for i := range padding { - padding[i] = 0 - } - - dstPos += int(dstDirent.Reclen) - srcPos += int(srcDirent.Reclen) - } - - return dstPos + return Mknodat(AT_FDCWD, path, mode, dev) } func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { @@ -501,31 +255,31 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys ptrace(request int, pid int, addr uintptr, data int) (err error) func PtraceAttach(pid int) (err error) { - return ptrace(PTRACE_ATTACH, pid, 0, 0) + return ptrace(PT_ATTACH, pid, 0, 0) } func PtraceCont(pid int, signal int) (err error) { - return ptrace(PTRACE_CONT, pid, 1, signal) + return ptrace(PT_CONTINUE, pid, 1, signal) } func PtraceDetach(pid int) (err error) { - return ptrace(PTRACE_DETACH, pid, 1, 0) + return ptrace(PT_DETACH, pid, 1, 0) } func PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) { - return ptrace(PTRACE_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) + return ptrace(PT_GETFPREGS, pid, uintptr(unsafe.Pointer(fpregsout)), 0) } func PtraceGetRegs(pid int, regsout *Reg) (err error) { - return ptrace(PTRACE_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) + return ptrace(PT_GETREGS, pid, uintptr(unsafe.Pointer(regsout)), 0) } func PtraceLwpEvents(pid int, enable int) (err error) { - return ptrace(PTRACE_LWPEVENTS, pid, 0, enable) + return ptrace(PT_LWP_EVENTS, pid, 0, enable) } func PtraceLwpInfo(pid int, info uintptr) (err error) { - return ptrace(PTRACE_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) + return ptrace(PT_LWPINFO, pid, info, int(unsafe.Sizeof(PtraceLwpInfoStruct{}))) } func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) { @@ -545,11 +299,11 @@ func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) { } func PtraceSetRegs(pid int, regs *Reg) (err error) { - return ptrace(PTRACE_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) + return ptrace(PT_SETREGS, pid, uintptr(unsafe.Pointer(regs)), 0) } func PtraceSingleStep(pid int) (err error) { - return ptrace(PTRACE_SINGLESTEP, pid, 1, 0) + return ptrace(PT_STEP, pid, 1, 0) } /* @@ -591,16 +345,12 @@ func PtraceSingleStep(pid int) (err error) { //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) //sys Flock(fd int, how int) (err error) //sys Fpathconf(fd int, name int) (val int, err error) -//sys fstat(fd int, stat *stat_freebsd11_t) (err error) -//sys fstat_freebsd12(fd int, stat *Stat_t) (err error) -//sys fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) -//sys fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) -//sys fstatfs(fd int, stat *statfs_freebsd11_t) (err error) -//sys fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) +//sys Fstat(fd int, stat *Stat_t) (err error) +//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) +//sys Fstatfs(fd int, stat *Statfs_t) (err error) //sys Fsync(fd int) (err error) //sys Ftruncate(fd int, length int64) (err error) -//sys getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) -//sys getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) +//sys getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) //sys Getdtablesize() (size int) //sysnb Getegid() (egid int) //sysnb Geteuid() (uid int) @@ -622,13 +372,10 @@ func PtraceSingleStep(pid int) (err error) { //sys Link(path string, link string) (err error) //sys Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) //sys Listen(s int, backlog int) (err error) -//sys lstat(path string, stat *stat_freebsd11_t) (err error) //sys Mkdir(path string, mode uint32) (err error) //sys Mkdirat(dirfd int, path string, mode uint32) (err error) //sys Mkfifo(path string, mode uint32) (err error) -//sys mknod(path string, mode uint32, dev int) (err error) -//sys mknodat(fd int, path string, mode uint32, dev int) (err error) -//sys mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) +//sys Mknodat(fd int, path string, mode uint32, dev uint64) (err error) //sys Nanosleep(time *Timespec, leftover *Timespec) (err error) //sys Open(path string, mode int, perm uint32) (fd int, err error) //sys Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) @@ -658,9 +405,7 @@ func PtraceSingleStep(pid int) (err error) { //sysnb Setsid() (pid int, err error) //sysnb Settimeofday(tp *Timeval) (err error) //sysnb Setuid(uid int) (err error) -//sys stat(path string, stat *stat_freebsd11_t) (err error) -//sys statfs(path string, stat *statfs_freebsd11_t) (err error) -//sys statfs_freebsd12(path string, stat *Statfs_t) (err error) +//sys Statfs(path string, stat *Statfs_t) (err error) //sys Symlink(path string, link string) (err error) //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error) //sys Sync() (err error) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go index 342fc32b168..c3c4c698e07 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go @@ -57,11 +57,11 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceGetFsBase(pid int, fsbase *int64) (err error) { - return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) + return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) } func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go index a32d5aa4aed..82be61a2f98 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go @@ -57,11 +57,11 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) func PtraceGetFsBase(pid int, fsbase *int64) (err error) { - return ptrace(PTRACE_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) + return ptrace(PT_GETFSBASE, pid, uintptr(unsafe.Pointer(fsbase)), 0) } func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go index 1e36d39abe0..cd58f1026c0 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go @@ -58,6 +58,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint32(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go index a09a1537bd6..d6f538f9e00 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go @@ -58,6 +58,6 @@ func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} - err = ptrace(PTRACE_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) return int(ioDesc.Len), err } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go new file mode 100644 index 00000000000..8ea6e96100a --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go @@ -0,0 +1,63 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +package unix + +import ( + "syscall" + "unsafe" +) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint64(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = int32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + var writtenOut uint64 = 0 + _, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0) + + written = int(writtenOut) + + if e1 != 0 { + err = e1 + } + return +} + +func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) + +func PtraceIO(req int, pid int, addr uintptr, out []byte, countin int) (count int, err error) { + ioDesc := PtraceIoDesc{Op: int32(req), Offs: (*byte)(unsafe.Pointer(addr)), Addr: (*byte)(unsafe.Pointer(&out[0])), Len: uint64(countin)} + err = ptrace(PT_IO, pid, uintptr(unsafe.Pointer(&ioDesc)), 0) + return int(ioDesc.Len), err +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_illumos.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_illumos.go index 8d5f294c425..e48244a9c9a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_illumos.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_illumos.go @@ -20,10 +20,9 @@ func bytes2iovec(bs [][]byte) []Iovec { for i, b := range bs { iovecs[i].SetLen(len(b)) if len(b) > 0 { - // somehow Iovec.Base on illumos is (*int8), not (*byte) - iovecs[i].Base = (*int8)(unsafe.Pointer(&b[0])) + iovecs[i].Base = &b[0] } else { - iovecs[i].Base = (*int8)(unsafe.Pointer(&_zero)) + iovecs[i].Base = (*byte)(unsafe.Pointer(&_zero)) } } return iovecs diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux.go index d251dafae00..5e4a94f7311 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux.go @@ -512,24 +512,24 @@ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) { // // Server example: // -// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) -// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ -// Channel: 1, -// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 -// }) -// _ = Listen(fd, 1) -// nfd, sa, _ := Accept(fd) -// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) -// Read(nfd, buf) +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = unix.Bind(fd, &unix.SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00 +// }) +// _ = Listen(fd, 1) +// nfd, sa, _ := Accept(fd) +// fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd) +// Read(nfd, buf) // // Client example: // -// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) -// _ = Connect(fd, &SockaddrRFCOMM{ -// Channel: 1, -// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 -// }) -// Write(fd, []byte(`hello`)) +// fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM) +// _ = Connect(fd, &SockaddrRFCOMM{ +// Channel: 1, +// Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11 +// }) +// Write(fd, []byte(`hello`)) type SockaddrRFCOMM struct { // Addr represents a bluetooth address, byte ordering is little-endian. Addr [6]uint8 @@ -556,12 +556,12 @@ func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) { // The SockaddrCAN struct must be bound to the socket file descriptor // using Bind before the CAN socket can be used. // -// // Read one raw CAN frame -// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) -// addr := &SockaddrCAN{Ifindex: index} -// Bind(fd, addr) -// frame := make([]byte, 16) -// Read(fd, frame) +// // Read one raw CAN frame +// fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW) +// addr := &SockaddrCAN{Ifindex: index} +// Bind(fd, addr) +// frame := make([]byte, 16) +// Read(fd, frame) // // The full SocketCAN documentation can be found in the linux kernel // archives at: https://www.kernel.org/doc/Documentation/networking/can.txt @@ -632,13 +632,13 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { // Here is an example of using an AF_ALG socket with SHA1 hashing. // The initial socket setup process is as follows: // -// // Open a socket to perform SHA1 hashing. -// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) -// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} -// unix.Bind(fd, addr) -// // Note: unix.Accept does not work at this time; must invoke accept() -// // manually using unix.Syscall. -// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) +// // Open a socket to perform SHA1 hashing. +// fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0) +// addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"} +// unix.Bind(fd, addr) +// // Note: unix.Accept does not work at this time; must invoke accept() +// // manually using unix.Syscall. +// hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0) // // Once a file descriptor has been returned from Accept, it may be used to // perform SHA1 hashing. The descriptor is not safe for concurrent use, but @@ -647,39 +647,39 @@ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) { // When hashing a small byte slice or string, a single Write and Read may // be used: // -// // Assume hashfd is already configured using the setup process. -// hash := os.NewFile(hashfd, "sha1") -// // Hash an input string and read the results. Each Write discards -// // previous hash state. Read always reads the current state. -// b := make([]byte, 20) -// for i := 0; i < 2; i++ { -// io.WriteString(hash, "Hello, world.") -// hash.Read(b) -// fmt.Println(hex.EncodeToString(b)) -// } -// // Output: -// // 2ae01472317d1935a84797ec1983ae243fc6aa28 -// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // Assume hashfd is already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash an input string and read the results. Each Write discards +// // previous hash state. Read always reads the current state. +// b := make([]byte, 20) +// for i := 0; i < 2; i++ { +// io.WriteString(hash, "Hello, world.") +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// } +// // Output: +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 +// // 2ae01472317d1935a84797ec1983ae243fc6aa28 // // For hashing larger byte slices, or byte streams such as those read from // a file or socket, use Sendto with MSG_MORE to instruct the kernel to update // the hash digest instead of creating a new one for a given chunk and finalizing it. // -// // Assume hashfd and addr are already configured using the setup process. -// hash := os.NewFile(hashfd, "sha1") -// // Hash the contents of a file. -// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") -// b := make([]byte, 4096) -// for { -// n, err := f.Read(b) -// if err == io.EOF { -// break -// } -// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) -// } -// hash.Read(b) -// fmt.Println(hex.EncodeToString(b)) -// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 +// // Assume hashfd and addr are already configured using the setup process. +// hash := os.NewFile(hashfd, "sha1") +// // Hash the contents of a file. +// f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz") +// b := make([]byte, 4096) +// for { +// n, err := f.Read(b) +// if err == io.EOF { +// break +// } +// unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr) +// } +// hash.Read(b) +// fmt.Println(hex.EncodeToString(b)) +// // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5 // // For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html. type SockaddrALG struct { @@ -1499,18 +1499,13 @@ func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error //sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL //sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(rsa)) msg.Namelen = uint32(SizeofSockaddrAny) - var iov Iovec - if len(p) > 0 { - iov.Base = &p[0] - iov.SetLen(len(p)) - } var dummy byte if len(oob) > 0 { - if len(p) == 0 { + if emptyIovecs(iov) { var sockType int sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) if err != nil { @@ -1518,15 +1513,19 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn } // receive at least one normal byte if sockType != SOCK_DGRAM { - iov.Base = &dummy - iov.SetLen(1) + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } } msg.Control = &oob[0] msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = recvmsg(fd, &msg, flags); err != nil { return } @@ -1535,18 +1534,15 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn return } -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { var msg Msghdr msg.Name = (*byte)(ptr) msg.Namelen = uint32(salen) - var iov Iovec - if len(p) > 0 { - iov.Base = &p[0] - iov.SetLen(len(p)) - } var dummy byte + var empty bool if len(oob) > 0 { - if len(p) == 0 { + empty := emptyIovecs(iov) + if empty { var sockType int sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE) if err != nil { @@ -1554,19 +1550,22 @@ func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags i } // send at least one normal byte if sockType != SOCK_DGRAM { - iov.Base = &dummy - iov.SetLen(1) + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) } } msg.Control = &oob[0] msg.SetControllen(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = sendmsg(fd, &msg, flags); err != nil { return 0, err } - if len(oob) > 0 && len(p) == 0 { + if len(oob) > 0 && empty { n = 0 } return n, nil diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go new file mode 100644 index 00000000000..0b69c3eff96 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go @@ -0,0 +1,226 @@ +// Copyright 2022 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +//go:build loong64 && linux +// +build loong64,linux + +package unix + +import "unsafe" + +//sys EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT +//sys Fadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64 +//sys Fchown(fd int, uid int, gid int) (err error) +//sys Fstatfs(fd int, buf *Statfs_t) (err error) +//sys Ftruncate(fd int, length int64) (err error) +//sysnb Getegid() (egid int) +//sysnb Geteuid() (euid int) +//sysnb Getgid() (gid int) +//sysnb Getuid() (uid int) +//sys Listen(s int, n int) (err error) +//sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 +//sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 +//sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + var ts *Timespec + if timeout != nil { + ts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000} + } + return Pselect(nfd, r, w, e, ts, nil) +} + +//sys sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) +//sys setfsgid(gid int) (prev int, err error) +//sys setfsuid(uid int) (prev int, err error) +//sysnb Setregid(rgid int, egid int) (err error) +//sysnb Setresgid(rgid int, egid int, sgid int) (err error) +//sysnb Setresuid(ruid int, euid int, suid int) (err error) +//sysnb Setreuid(ruid int, euid int) (err error) +//sys Shutdown(fd int, how int) (err error) +//sys Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) + +func timespecFromStatxTimestamp(x StatxTimestamp) Timespec { + return Timespec{ + Sec: x.Sec, + Nsec: int64(x.Nsec), + } +} + +func Fstatat(fd int, path string, stat *Stat_t, flags int) error { + var r Statx_t + // Do it the glibc way, add AT_NO_AUTOMOUNT. + if err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil { + return err + } + + stat.Dev = Mkdev(r.Dev_major, r.Dev_minor) + stat.Ino = r.Ino + stat.Mode = uint32(r.Mode) + stat.Nlink = r.Nlink + stat.Uid = r.Uid + stat.Gid = r.Gid + stat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor) + // hope we don't get to process files so large to overflow these size + // fields... + stat.Size = int64(r.Size) + stat.Blksize = int32(r.Blksize) + stat.Blocks = int64(r.Blocks) + stat.Atim = timespecFromStatxTimestamp(r.Atime) + stat.Mtim = timespecFromStatxTimestamp(r.Mtime) + stat.Ctim = timespecFromStatxTimestamp(r.Ctime) + + return nil +} + +func Fstat(fd int, stat *Stat_t) (err error) { + return Fstatat(fd, "", stat, AT_EMPTY_PATH) +} + +func Stat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, 0) +} + +func Lchown(path string, uid int, gid int) (err error) { + return Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW) +} + +func Lstat(path string, stat *Stat_t) (err error) { + return Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW) +} + +//sys Statfs(path string, buf *Statfs_t) (err error) +//sys SyncFileRange(fd int, off int64, n int64, flags int) (err error) +//sys Truncate(path string, length int64) (err error) + +func Ustat(dev int, ubuf *Ustat_t) (err error) { + return ENOSYS +} + +//sys accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) +//sys bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sys connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) +//sysnb getgroups(n int, list *_Gid_t) (nn int, err error) +//sysnb setgroups(n int, list *_Gid_t) (err error) +//sys getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) +//sys setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) +//sysnb socket(domain int, typ int, proto int) (fd int, err error) +//sysnb socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) +//sysnb getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sysnb getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) +//sys recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) +//sys sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) +//sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) +//sys mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) + +//sysnb Gettimeofday(tv *Timeval) (err error) + +func setTimespec(sec, nsec int64) Timespec { + return Timespec{Sec: sec, Nsec: nsec} +} + +func setTimeval(sec, usec int64) Timeval { + return Timeval{Sec: sec, Usec: usec} +} + +func Getrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, nil, rlim) + return +} + +func Setrlimit(resource int, rlim *Rlimit) (err error) { + err = Prlimit(0, resource, rlim, nil) + return +} + +func futimesat(dirfd int, path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(dirfd, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func Time(t *Time_t) (Time_t, error) { + var tv Timeval + err := Gettimeofday(&tv) + if err != nil { + return 0, err + } + if t != nil { + *t = Time_t(tv.Sec) + } + return Time_t(tv.Sec), nil +} + +func Utime(path string, buf *Utimbuf) error { + tv := []Timeval{ + {Sec: buf.Actime}, + {Sec: buf.Modtime}, + } + return Utimes(path, tv) +} + +func utimes(path string, tv *[2]Timeval) (err error) { + if tv == nil { + return utimensat(AT_FDCWD, path, nil, 0) + } + + ts := []Timespec{ + NsecToTimespec(TimevalToNsec(tv[0])), + NsecToTimespec(TimevalToNsec(tv[1])), + } + return utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0) +} + +func (r *PtraceRegs) PC() uint64 { return r.Era } + +func (r *PtraceRegs) SetPC(era uint64) { r.Era = era } + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint64(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint64(length) +} + +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint64(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint64(length) +} + +func (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) { + rsa.Service_name_len = uint64(length) +} + +func Pause() error { + _, err := ppoll(nil, 0, nil, nil) + return err +} + +func Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) { + return Renameat2(olddirfd, oldpath, newdirfd, newpath, 0) +} + +//sys kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) + +func KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error { + cmdlineLen := len(cmdline) + if cmdlineLen > 0 { + // Account for the additional NULL byte added by + // BytePtrFromString in kexecFileLoad. The kexec_file_load + // syscall expects a NULL-terminated string. + cmdlineLen++ + } + return kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags) +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go index 8ff7adba039..925a748a39b 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go @@ -22,6 +22,7 @@ import "unsafe" //sysnb Getrlimit(resource int, rlim *Rlimit) (err error) //sysnb Getuid() (uid int) //sys Listen(s int, n int) (err error) +//sys MemfdSecret(flags int) (fd int, err error) //sys pread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64 //sys pwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64 //sys Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd.go index 15d637d63ea..78daceb338b 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd.go @@ -81,6 +81,7 @@ func Pipe(p []int) (err error) { } //sysnb pipe2(p *[2]_C_int, flags int) (err error) + func Pipe2(p []int, flags int) error { if len(p) != 2 { return EINVAL @@ -95,6 +96,7 @@ func Pipe2(p []int, flags int) error { } //sys Getdents(fd int, buf []byte) (n int, err error) + func Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { n, err = Getdents(fd, buf) if err != nil || basep == nil { diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go index 30f285343ee..1378489f8d7 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go @@ -26,6 +26,10 @@ func (msghdr *Msghdr) SetControllen(length int) { msghdr.Controllen = uint32(length) } +func (msghdr *Msghdr) SetIovlen(length int) { + msghdr.Iovlen = uint32(length) +} + func (cmsg *Cmsghdr) SetLen(length int) { cmsg.Len = uint32(length) } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_solaris.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_solaris.go index 5c2003cec65..b5ec457cdcc 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_solaris.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_solaris.go @@ -451,26 +451,25 @@ func Accept(fd int) (nfd int, sa Sockaddr, err error) { //sys recvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg -func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { +func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(rsa)) msg.Namelen = uint32(SizeofSockaddrAny) - var iov Iovec - if len(p) > 0 { - iov.Base = (*int8)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } - var dummy int8 + var dummy byte if len(oob) > 0 { // receive at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + if emptyIovecs(iov) { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Accrightslen = int32(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = recvmsg(fd, &msg, flags); n == -1 { return } @@ -480,30 +479,31 @@ func recvmsgRaw(fd int, p, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn //sys sendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg -func sendmsgN(fd int, p, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { +func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) { var msg Msghdr msg.Name = (*byte)(unsafe.Pointer(ptr)) msg.Namelen = uint32(salen) - var iov Iovec - if len(p) > 0 { - iov.Base = (*int8)(unsafe.Pointer(&p[0])) - iov.SetLen(len(p)) - } - var dummy int8 + var dummy byte + var empty bool if len(oob) > 0 { // send at least one normal byte - if len(p) == 0 { - iov.Base = &dummy - iov.SetLen(1) + empty = emptyIovecs(iov) + if empty { + var iova [1]Iovec + iova[0].Base = &dummy + iova[0].SetLen(1) + iov = iova[:] } msg.Accrightslen = int32(len(oob)) } - msg.Iov = &iov - msg.Iovlen = 1 + if len(iov) > 0 { + msg.Iov = &iov[0] + msg.SetIovlen(len(iov)) + } if n, err = sendmsg(fd, &msg, flags); err != nil { return 0, err } - if len(oob) > 0 && len(p) == 0 { + if len(oob) > 0 && empty { n = 0 } return n, nil @@ -618,6 +618,7 @@ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err e //sys Getpriority(which int, who int) (n int, err error) //sysnb Getrlimit(which int, lim *Rlimit) (err error) //sysnb Getrusage(who int, rusage *Rusage) (err error) +//sysnb Getsid(pid int) (sid int, err error) //sysnb Gettimeofday(tv *Timeval) (err error) //sysnb Getuid() (uid int) //sys Kill(pid int, signum syscall.Signal) (err error) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_unix.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_unix.go index 70508afc1d1..1ff5060b512 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_unix.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/syscall_unix.go @@ -338,8 +338,13 @@ func Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) { } func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } var rsa RawSockaddrAny - n, oobn, recvflags, err = recvmsgRaw(fd, p, oob, flags, &rsa) + n, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa) // source address is only specified if the socket is unconnected if rsa.Addr.Family != AF_UNSPEC { from, err = anyToSockaddr(fd, &rsa) @@ -347,12 +352,67 @@ func Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from return } +// RecvmsgBuffers receives a message from a socket using the recvmsg +// system call. The flags are passed to recvmsg. Any non-control data +// read is scattered into the buffers slices. The results are: +// - n is the number of non-control data read into bufs +// - oobn is the number of control data read into oob; this may be interpreted using [ParseSocketControlMessage] +// - recvflags is flags returned by recvmsg +// - from is the address of the sender +func RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } + var rsa RawSockaddrAny + n, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa) + if err == nil && rsa.Addr.Family != AF_UNSPEC { + from, err = anyToSockaddr(fd, &rsa) + } + return +} + func Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) { _, err = SendmsgN(fd, p, oob, to, flags) return } func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) { + var iov [1]Iovec + if len(p) > 0 { + iov[0].Base = &p[0] + iov[0].SetLen(len(p)) + } + var ptr unsafe.Pointer + var salen _Socklen + if to != nil { + ptr, salen, err = to.sockaddr() + if err != nil { + return 0, err + } + } + return sendmsgN(fd, iov[:], oob, ptr, salen, flags) +} + +// SendmsgBuffers sends a message on a socket to an address using the sendmsg +// system call. The flags are passed to sendmsg. Any non-control data written +// is gathered from buffers. The function returns the number of bytes written +// to the socket. +func SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) { + iov := make([]Iovec, len(buffers)) + for i := range buffers { + if len(buffers[i]) > 0 { + iov[i].Base = &buffers[i][0] + iov[i].SetLen(len(buffers[i])) + } else { + iov[i].Base = (*byte)(unsafe.Pointer(&_zero)) + } + } var ptr unsafe.Pointer var salen _Socklen if to != nil { @@ -361,7 +421,7 @@ func SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) return 0, err } } - return sendmsgN(fd, p, oob, ptr, salen, flags) + return sendmsgN(fd, iov, oob, ptr, salen, flags) } func Send(s int, buf []byte, flags int) (err error) { @@ -484,3 +544,13 @@ func Lutimes(path string, tv []Timeval) error { } return UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW) } + +// emptyIovec reports whether there are no bytes in the slice of Iovec. +func emptyIovecs(iov []Iovec) bool { + for i := range iov { + if iov[i].Len > 0 { + return false + } + } + return true +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go index 440900112cd..f8c2c513874 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80084267 BIOCSETFNR = 0x80084282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8008427b BIOCSETZBUF = 0x800c4281 BIOCSHDRCMPLT = 0x80044275 @@ -447,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -487,10 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x113 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -734,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -814,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -911,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -989,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -1000,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1179,6 +1185,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1189,6 +1197,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1196,6 +1208,60 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXMMREGS = 0x40 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXMMREGS = 0x41 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1320,10 +1386,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0086924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1414,6 +1482,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_REUSEPORT_LB = 0x10000 @@ -1472,22 +1541,40 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b TCP_BBR_DRAIN_INC_EXTRA = 0x43c TCP_BBR_DRAIN_PG = 0x42e TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 TCP_BBR_IWINTSO = 0x42b TCP_BBR_LOWGAIN_FD = 0x436 TCP_BBR_LOWGAIN_HALF = 0x435 TCP_BBR_LOWGAIN_THRESH = 0x434 TCP_BBR_MAX_RTO = 0x439 TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 TCP_BBR_ONE_RETRAN = 0x431 TCP_BBR_PACE_CROSS = 0x442 TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 TCP_BBR_PACE_PER_SEC = 0x43e TCP_BBR_PACE_SEG_MAX = 0x440 TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 TCP_BBR_PROBE_RTT_GAIN = 0x44d TCP_BBR_PROBE_RTT_INT = 0x430 TCP_BBR_PROBE_RTT_LEN = 0x44e @@ -1496,12 +1583,18 @@ const ( TCP_BBR_REC_OVER_HPTS = 0x43a TCP_BBR_RETRAN_WTSO = 0x44b TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d TCP_BBR_STARTUP_LOSS_EXIT = 0x432 TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 TCP_BBR_UNLIMITED = 0x43b TCP_BBR_USEDEL_RATE = 0x437 TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 @@ -1541,6 +1634,7 @@ const ( TCP_PCAP_OUT = 0x800 TCP_RACK_EARLY_RECOV = 0x423 TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 TCP_RACK_IDLE_REDUCE_HIGH = 0x444 TCP_RACK_MIN_PACE = 0x445 TCP_RACK_MIN_PACE_SEG = 0x446 @@ -1554,7 +1648,6 @@ const ( TCP_RACK_PRR_SENDALOT = 0x421 TCP_RACK_REORD_FADE = 0x426 TCP_RACK_REORD_THRESH = 0x425 - TCP_RACK_SESS_CWV = 0x42a TCP_RACK_TLP_INC_VAR = 0x429 TCP_RACK_TLP_REDUCE = 0x41c TCP_RACK_TLP_THRESH = 0x427 @@ -1694,12 +1787,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1842,7 +1936,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1904,6 +1998,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go index 64520d31226..96310c3be1b 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80104267 BIOCSETFNR = 0x80104282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8010427b BIOCSETZBUF = 0x80184281 BIOCSHDRCMPLT = 0x80044275 @@ -447,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -487,10 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x113 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -734,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -814,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -911,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -989,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -1000,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1180,6 +1186,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1190,6 +1198,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1197,6 +1209,58 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETFSBASE = 0x47 + PT_GETGSBASE = 0x49 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETXSTATE = 0x45 + PT_GETXSTATE_INFO = 0x44 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETFSBASE = 0x48 + PT_SETGSBASE = 0x4a + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETXSTATE = 0x46 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1321,10 +1385,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0106924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1415,6 +1481,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_REUSEPORT_LB = 0x10000 @@ -1473,22 +1540,40 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b TCP_BBR_DRAIN_INC_EXTRA = 0x43c TCP_BBR_DRAIN_PG = 0x42e TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 TCP_BBR_IWINTSO = 0x42b TCP_BBR_LOWGAIN_FD = 0x436 TCP_BBR_LOWGAIN_HALF = 0x435 TCP_BBR_LOWGAIN_THRESH = 0x434 TCP_BBR_MAX_RTO = 0x439 TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 TCP_BBR_ONE_RETRAN = 0x431 TCP_BBR_PACE_CROSS = 0x442 TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 TCP_BBR_PACE_PER_SEC = 0x43e TCP_BBR_PACE_SEG_MAX = 0x440 TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 TCP_BBR_PROBE_RTT_GAIN = 0x44d TCP_BBR_PROBE_RTT_INT = 0x430 TCP_BBR_PROBE_RTT_LEN = 0x44e @@ -1497,12 +1582,18 @@ const ( TCP_BBR_REC_OVER_HPTS = 0x43a TCP_BBR_RETRAN_WTSO = 0x44b TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d TCP_BBR_STARTUP_LOSS_EXIT = 0x432 TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 TCP_BBR_UNLIMITED = 0x43b TCP_BBR_USEDEL_RATE = 0x437 TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 @@ -1542,6 +1633,7 @@ const ( TCP_PCAP_OUT = 0x800 TCP_RACK_EARLY_RECOV = 0x423 TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 TCP_RACK_IDLE_REDUCE_HIGH = 0x444 TCP_RACK_MIN_PACE = 0x445 TCP_RACK_MIN_PACE_SEG = 0x446 @@ -1555,7 +1647,6 @@ const ( TCP_RACK_PRR_SENDALOT = 0x421 TCP_RACK_REORD_FADE = 0x426 TCP_RACK_REORD_THRESH = 0x425 - TCP_RACK_SESS_CWV = 0x42a TCP_RACK_TLP_INC_VAR = 0x429 TCP_RACK_TLP_REDUCE = 0x41c TCP_RACK_TLP_THRESH = 0x427 @@ -1693,12 +1784,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1841,7 +1933,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1903,6 +1995,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go index 99e9a0e06e9..777b69defa0 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80084267 BIOCSETFNR = 0x80084282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8008427b BIOCSETZBUF = 0x800c4281 BIOCSHDRCMPLT = 0x80044275 @@ -362,7 +363,7 @@ const ( CTL_KERN = 0x1 CTL_MAXNAME = 0x18 CTL_NET = 0x4 - DIOCGATTR = 0xc144648e + DIOCGATTR = 0xc148648e DIOCGDELETE = 0x80106488 DIOCGFLUSH = 0x20006487 DIOCGFRONTSTUFF = 0x40086486 @@ -377,7 +378,7 @@ const ( DIOCGSTRIPESIZE = 0x4008648b DIOCSKERNELDUMP = 0x804c6490 DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 - DIOCZONECMD = 0xc06c648f + DIOCZONECMD = 0xc078648f DLT_A429 = 0xb8 DLT_A653_ICM = 0xb9 DLT_AIRONET_HEADER = 0x78 @@ -407,7 +408,9 @@ const ( DLT_C_HDLC_WITH_DIR = 0xcd DLT_DBUS = 0xe7 DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 DLT_DVB_CI = 0xeb DLT_ECONET = 0x73 DLT_EN10MB = 0x1 @@ -417,6 +420,7 @@ const ( DLT_ERF = 0xc5 DLT_ERF_ETH = 0xaf DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 DLT_FC_2 = 0xe0 DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 DLT_FDDI = 0xa @@ -444,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -484,9 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x109 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -502,7 +508,9 @@ const ( DLT_NFC_LLCP = 0xf5 DLT_NFLOG = 0xef DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b DLT_PCI_EXP = 0x7d DLT_PFLOG = 0x75 DLT_PFSYNC = 0x79 @@ -526,15 +534,18 @@ const ( DLT_RTAC_SERIAL = 0xfa DLT_SCCP = 0x8e DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c DLT_SITA = 0xc4 DLT_SLIP = 0x8 DLT_SLIP_BSDOS = 0xd DLT_STANAG_5066_D_PDU = 0xed DLT_SUNATM = 0x7b DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d DLT_TZSP = 0x80 DLT_USB = 0xba DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a DLT_USB_FREEBSD = 0xba DLT_USB_LINUX = 0xbd DLT_USB_LINUX_MMAPPED = 0xdc @@ -554,6 +565,7 @@ const ( DLT_USER7 = 0x9a DLT_USER8 = 0x9b DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f DLT_WATTSTOPPER_DLM = 0x107 DLT_WIHART = 0xdf DLT_WIRESHARK_UPPER_PDU = 0xfc @@ -578,6 +590,7 @@ const ( ECHONL = 0x10 ECHOPRT = 0x20 EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd EVFILT_FS = -0x9 EVFILT_LIO = -0xa EVFILT_PROC = -0x5 @@ -585,11 +598,12 @@ const ( EVFILT_READ = -0x1 EVFILT_SENDFILE = -0xc EVFILT_SIGNAL = -0x6 - EVFILT_SYSCOUNT = 0xc + EVFILT_SYSCOUNT = 0xd EVFILT_TIMER = -0x7 EVFILT_USER = -0xb EVFILT_VNODE = -0x4 EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 EV_ADD = 0x1 EV_CLEAR = 0x20 EV_DELETE = 0x2 @@ -606,6 +620,7 @@ const ( EV_RECEIPT = 0x40 EV_SYSFLAGS = 0xf000 EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff EXTATTR_NAMESPACE_EMPTY = 0x0 EXTATTR_NAMESPACE_SYSTEM = 0x2 EXTATTR_NAMESPACE_USER = 0x1 @@ -647,6 +662,7 @@ const ( IEXTEN = 0x400 IFAN_ARRIVAL = 0x0 IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 IFF_ALLMULTI = 0x200 IFF_ALTPHYS = 0x4000 IFF_BROADCAST = 0x2 @@ -663,6 +679,7 @@ const ( IFF_MONITOR = 0x40000 IFF_MULTICAST = 0x8000 IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 IFF_OACTIVE = 0x400 IFF_POINTOPOINT = 0x10 IFF_PPROMISC = 0x20000 @@ -719,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -799,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -837,6 +854,7 @@ const ( IPV6_DSTOPTS = 0x32 IPV6_FLOWID = 0x43 IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 IPV6_FLOWLABEL_MASK = 0xffff0f00 IPV6_FLOWTYPE = 0x44 IPV6_FRAGTTL = 0x78 @@ -857,13 +875,13 @@ const ( IPV6_MAX_GROUP_SRC_FILTER = 0x200 IPV6_MAX_MEMBERSHIPS = 0xfff IPV6_MAX_SOCK_SRC_FILTER = 0x80 - IPV6_MIN_MEMBERSHIPS = 0x1f IPV6_MMTU = 0x500 IPV6_MSFILTER = 0x4a IPV6_MULTICAST_HOPS = 0xa IPV6_MULTICAST_IF = 0x9 IPV6_MULTICAST_LOOP = 0xb IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 IPV6_PATHMTU = 0x2c IPV6_PKTINFO = 0x2e IPV6_PORTRANGE = 0xe @@ -875,6 +893,7 @@ const ( IPV6_RECVFLOWID = 0x46 IPV6_RECVHOPLIMIT = 0x25 IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 IPV6_RECVPATHMTU = 0x2b IPV6_RECVPKTINFO = 0x24 IPV6_RECVRSSBUCKETID = 0x47 @@ -894,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -935,10 +955,8 @@ const ( IP_MAX_MEMBERSHIPS = 0xfff IP_MAX_SOCK_MUTE_FILTER = 0x80 IP_MAX_SOCK_SRC_FILTER = 0x80 - IP_MAX_SOURCE_FILTER = 0x400 IP_MF = 0x2000 IP_MINTTL = 0x42 - IP_MIN_MEMBERSHIPS = 0x1f IP_MSFILTER = 0x4a IP_MSS = 0x240 IP_MULTICAST_IF = 0x9 @@ -948,6 +966,7 @@ const ( IP_OFFMASK = 0x1fff IP_ONESBCAST = 0x17 IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b IP_PORTRANGE = 0x13 IP_PORTRANGE_DEFAULT = 0x0 IP_PORTRANGE_HIGH = 0x1 @@ -956,6 +975,7 @@ const ( IP_RECVFLOWID = 0x5d IP_RECVIF = 0x14 IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b IP_RECVRETOPTS = 0x6 IP_RECVRSSBUCKETID = 0x5e IP_RECVTOS = 0x44 @@ -972,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -983,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1071,10 +1094,12 @@ const ( MNT_SUSPEND = 0x4 MNT_SYNCHRONOUS = 0x2 MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 MNT_UPDATE = 0x10000 - MNT_UPDATEMASK = 0x2d8d0807e + MNT_UPDATEMASK = 0xad8d0807e MNT_USER = 0x8000 - MNT_VISFLAGMASK = 0x3fef0ffff + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff MNT_WAIT = 0x1 MSG_CMSG_CLOEXEC = 0x40000 MSG_COMPAT = 0x8000 @@ -1103,6 +1128,7 @@ const ( NFDBITS = 0x20 NOFLSH = 0x80000000 NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 NOTE_ATTRIB = 0x8 NOTE_CHILD = 0x4 NOTE_CLOSE = 0x100 @@ -1159,6 +1185,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1169,6 +1197,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1176,6 +1208,53 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GETVFPREGS = 0x40 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SETVFPREGS = 0x41 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1257,7 +1336,6 @@ const ( RTV_WEIGHT = 0x100 RT_ALL_FIBS = -0x1 RT_BLACKHOLE = 0x40 - RT_CACHING_CONTEXT = 0x1 RT_DEFAULT_FIB = 0x0 RT_HAS_GW = 0x80 RT_HAS_HEADER = 0x10 @@ -1267,15 +1345,17 @@ const ( RT_LLE_CACHE = 0x100 RT_MAY_LOOP = 0x8 RT_MAY_LOOP_BIT = 0x3 - RT_NORTREF = 0x2 RT_REJECT = 0x20 RUSAGE_CHILDREN = -0x1 RUSAGE_SELF = 0x0 RUSAGE_THREAD = 0x1 SCM_BINTIME = 0x4 SCM_CREDS = 0x3 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 SCM_RIGHTS = 0x1 SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 SEEK_CUR = 0x1 SEEK_DATA = 0x3 SEEK_END = 0x2 @@ -1299,10 +1379,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0086924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1318,8 +1400,11 @@ const ( SIOCGIFPDSTADDR = 0xc0206948 SIOCGIFPHYS = 0xc0206935 SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 SIOCGIFSTATUS = 0xc331693b SIOCGIFXMEDIA = 0xc028698b + SIOCGLANPCP = 0xc0206998 SIOCGLOWAT = 0x40047303 SIOCGPGRP = 0x40047309 SIOCGPRIVATE_0 = 0xc0206950 @@ -1350,6 +1435,7 @@ const ( SIOCSIFPHYS = 0x80206936 SIOCSIFRVNET = 0xc020695b SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 SIOCSLOWAT = 0x80047302 SIOCSPGRP = 0x80047308 SIOCSTUNFIB = 0x8020695f @@ -1369,6 +1455,7 @@ const ( SO_BINTIME = 0x2000 SO_BROADCAST = 0x20 SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 SO_DONTROUTE = 0x10 SO_ERROR = 0x1007 SO_KEEPALIVE = 0x8 @@ -1377,6 +1464,7 @@ const ( SO_LISTENINCQLEN = 0x1013 SO_LISTENQLEN = 0x1012 SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 SO_NOSIGPIPE = 0x800 SO_NO_DDP = 0x8000 SO_NO_OFFLOAD = 0x4000 @@ -1387,13 +1475,22 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 SO_SETFIB = 0x1014 SO_SNDBUF = 0x1001 SO_SNDLOWAT = 0x1003 SO_SNDTIMEO = 0x1005 SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 SO_TYPE = 0x1008 SO_USELOOPBACK = 0x40 SO_USER_COOKIE = 0x1015 @@ -1437,10 +1534,69 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DELACK = 0x48 TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 TCP_FUNCTION_BLK = 0x2000 TCP_FUNCTION_NAME_LEN_MAX = 0x20 TCP_INFO = 0x20 @@ -1448,6 +1604,12 @@ const ( TCP_KEEPIDLE = 0x100 TCP_KEEPINIT = 0x80 TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOG_ID_LEN = 0x40 TCP_MAXBURST = 0x4 TCP_MAXHLEN = 0x3c TCP_MAXOLEN = 0x28 @@ -1463,8 +1625,30 @@ const ( TCP_NOPUSH = 0x4 TCP_PCAP_IN = 0x1000 TCP_PCAP_OUT = 0x800 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 TCP_VENDOR = 0x80000000 TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 TIOCCBRK = 0x2000747a TIOCCDTR = 0x20007478 TIOCCONS = 0x80047462 @@ -1528,6 +1712,8 @@ const ( TIOCTIMESTAMP = 0x40107459 TIOCUCNTL = 0x80047466 TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 VDISCARD = 0xf VDSUSP = 0xb VEOF = 0x0 @@ -1592,12 +1778,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1740,7 +1927,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1802,6 +1989,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go index 4c837711493..c557ac2db31 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go @@ -151,6 +151,7 @@ const ( BIOCSETF = 0x80104267 BIOCSETFNR = 0x80104282 BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 BIOCSETWF = 0x8010427b BIOCSETZBUF = 0x80184281 BIOCSHDRCMPLT = 0x80044275 @@ -447,7 +448,7 @@ const ( DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 DLT_INFINIBAND = 0xf7 DLT_IPFILTER = 0x74 - DLT_IPMB = 0xc7 + DLT_IPMB_KONTRON = 0xc7 DLT_IPMB_LINUX = 0xd1 DLT_IPMI_HPM_2 = 0x104 DLT_IPNET = 0xe2 @@ -487,10 +488,11 @@ const ( DLT_LINUX_LAPD = 0xb1 DLT_LINUX_PPP_WITHDIRECTION = 0xa6 DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 DLT_LOOP = 0x6c DLT_LORATAP = 0x10e DLT_LTALK = 0x72 - DLT_MATCHING_MAX = 0x113 + DLT_MATCHING_MAX = 0x114 DLT_MATCHING_MIN = 0x68 DLT_MFR = 0xb6 DLT_MOST = 0xd3 @@ -734,6 +736,7 @@ const ( IPPROTO_CMTP = 0x26 IPPROTO_CPHB = 0x49 IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 IPPROTO_DDP = 0x25 IPPROTO_DGP = 0x56 IPPROTO_DIVERT = 0x102 @@ -814,7 +817,6 @@ const ( IPPROTO_SCTP = 0x84 IPPROTO_SDRP = 0x2a IPPROTO_SEND = 0x103 - IPPROTO_SEP = 0x21 IPPROTO_SHIM6 = 0x8c IPPROTO_SKIP = 0x39 IPPROTO_SPACER = 0x7fff @@ -911,6 +913,7 @@ const ( IPV6_V6ONLY = 0x1b IPV6_VERSION = 0x60 IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b IP_ADD_MEMBERSHIP = 0xc IP_ADD_SOURCE_MEMBERSHIP = 0x46 IP_BINDANY = 0x18 @@ -989,8 +992,12 @@ const ( IP_TOS = 0x3 IP_TTL = 0x4 IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b ISIG = 0x80 ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 IXANY = 0x800 IXOFF = 0x400 IXON = 0x200 @@ -1000,7 +1007,6 @@ const ( KERN_VERSION = 0x4 LOCAL_CONNWAIT = 0x4 LOCAL_CREDS = 0x2 - LOCAL_CREDS_PERSISTENT = 0x3 LOCAL_PEERCRED = 0x1 LOCAL_VENDOR = 0x80000000 LOCK_EX = 0x2 @@ -1180,6 +1186,8 @@ const ( O_NONBLOCK = 0x4 O_RDONLY = 0x0 O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 O_SHLOCK = 0x10 O_SYNC = 0x80 O_TRUNC = 0x400 @@ -1190,6 +1198,10 @@ const ( PARMRK = 0x8 PARODD = 0x2000 PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 PRIO_PGRP = 0x1 PRIO_PROCESS = 0x0 PRIO_USER = 0x2 @@ -1197,6 +1209,51 @@ const ( PROT_NONE = 0x0 PROT_READ = 0x1 PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc RLIMIT_AS = 0xa RLIMIT_CORE = 0x4 RLIMIT_CPU = 0x0 @@ -1321,10 +1378,12 @@ const ( SIOCGHWADDR = 0xc020693e SIOCGI2C = 0xc020693d SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d SIOCGIFBRDADDR = 0xc0206923 SIOCGIFCAP = 0xc020691f SIOCGIFCONF = 0xc0106924 SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a SIOCGIFDSTADDR = 0xc0206922 SIOCGIFFIB = 0xc020695c SIOCGIFFLAGS = 0xc0206911 @@ -1415,6 +1474,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVLOWAT = 0x1004 SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 SO_REUSEADDR = 0x4 SO_REUSEPORT = 0x200 SO_REUSEPORT_LB = 0x10000 @@ -1473,22 +1533,40 @@ const ( TCOFLUSH = 0x2 TCOOFF = 0x1 TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b TCP_BBR_DRAIN_INC_EXTRA = 0x43c TCP_BBR_DRAIN_PG = 0x42e TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 TCP_BBR_IWINTSO = 0x42b TCP_BBR_LOWGAIN_FD = 0x436 TCP_BBR_LOWGAIN_HALF = 0x435 TCP_BBR_LOWGAIN_THRESH = 0x434 TCP_BBR_MAX_RTO = 0x439 TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 TCP_BBR_ONE_RETRAN = 0x431 TCP_BBR_PACE_CROSS = 0x442 TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 TCP_BBR_PACE_PER_SEC = 0x43e TCP_BBR_PACE_SEG_MAX = 0x440 TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 TCP_BBR_PROBE_RTT_GAIN = 0x44d TCP_BBR_PROBE_RTT_INT = 0x430 TCP_BBR_PROBE_RTT_LEN = 0x44e @@ -1497,12 +1575,18 @@ const ( TCP_BBR_REC_OVER_HPTS = 0x43a TCP_BBR_RETRAN_WTSO = 0x44b TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d TCP_BBR_STARTUP_LOSS_EXIT = 0x432 TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 TCP_BBR_UNLIMITED = 0x43b TCP_BBR_USEDEL_RATE = 0x437 TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 TCP_CA_NAME_MAX = 0x10 TCP_CCALGOOPT = 0x41 TCP_CONGESTION = 0x40 @@ -1542,6 +1626,7 @@ const ( TCP_PCAP_OUT = 0x800 TCP_RACK_EARLY_RECOV = 0x423 TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_GP_INCREASE = 0x446 TCP_RACK_IDLE_REDUCE_HIGH = 0x444 TCP_RACK_MIN_PACE = 0x445 TCP_RACK_MIN_PACE_SEG = 0x446 @@ -1555,7 +1640,6 @@ const ( TCP_RACK_PRR_SENDALOT = 0x421 TCP_RACK_REORD_FADE = 0x426 TCP_RACK_REORD_THRESH = 0x425 - TCP_RACK_SESS_CWV = 0x42a TCP_RACK_TLP_INC_VAR = 0x429 TCP_RACK_TLP_REDUCE = 0x41c TCP_RACK_TLP_THRESH = 0x427 @@ -1694,12 +1778,13 @@ const ( EIDRM = syscall.Errno(0x52) EILSEQ = syscall.Errno(0x56) EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) EINTR = syscall.Errno(0x4) EINVAL = syscall.Errno(0x16) EIO = syscall.Errno(0x5) EISCONN = syscall.Errno(0x38) EISDIR = syscall.Errno(0x15) - ELAST = syscall.Errno(0x60) + ELAST = syscall.Errno(0x61) ELOOP = syscall.Errno(0x3e) EMFILE = syscall.Errno(0x18) EMLINK = syscall.Errno(0x1f) @@ -1842,7 +1927,7 @@ var errorList = [...]struct { {32, "EPIPE", "broken pipe"}, {33, "EDOM", "numerical argument out of domain"}, {34, "ERANGE", "result too large"}, - {35, "EAGAIN", "resource temporarily unavailable"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, {36, "EINPROGRESS", "operation now in progress"}, {37, "EALREADY", "operation already in progress"}, {38, "ENOTSOCK", "socket operation on non-socket"}, @@ -1904,6 +1989,7 @@ var errorList = [...]struct { {94, "ECAPMODE", "not permitted in capability mode"}, {95, "ENOTRECOVERABLE", "state not recoverable"}, {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, } // Signal table diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go new file mode 100644 index 00000000000..341b4d96265 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go @@ -0,0 +1,2148 @@ +// mkerrors.sh -m64 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -m64 _const.go + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_ARP = 0x23 + AF_ATM = 0x1e + AF_BLUETOOTH = 0x24 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_HYLINK = 0xf + AF_HYPERV = 0x2b + AF_IEEE80211 = 0x25 + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x1c + AF_INET6_SDP = 0x2a + AF_INET_SDP = 0x28 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x2b + AF_NATM = 0x1d + AF_NETBIOS = 0x6 + AF_NETGRAPH = 0x20 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SCLUSTER = 0x22 + AF_SIP = 0x18 + AF_SLOW = 0x21 + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + AF_VENDOR00 = 0x27 + AF_VENDOR01 = 0x29 + AF_VENDOR03 = 0x2d + AF_VENDOR04 = 0x2f + AF_VENDOR05 = 0x31 + AF_VENDOR06 = 0x33 + AF_VENDOR07 = 0x35 + AF_VENDOR08 = 0x37 + AF_VENDOR09 = 0x39 + AF_VENDOR10 = 0x3b + AF_VENDOR11 = 0x3d + AF_VENDOR12 = 0x3f + AF_VENDOR13 = 0x41 + AF_VENDOR14 = 0x43 + AF_VENDOR15 = 0x45 + AF_VENDOR16 = 0x47 + AF_VENDOR17 = 0x49 + AF_VENDOR18 = 0x4b + AF_VENDOR19 = 0x4d + AF_VENDOR20 = 0x4f + AF_VENDOR21 = 0x51 + AF_VENDOR22 = 0x53 + AF_VENDOR23 = 0x55 + AF_VENDOR24 = 0x57 + AF_VENDOR25 = 0x59 + AF_VENDOR26 = 0x5b + AF_VENDOR27 = 0x5d + AF_VENDOR28 = 0x5f + AF_VENDOR29 = 0x61 + AF_VENDOR30 = 0x63 + AF_VENDOR31 = 0x65 + AF_VENDOR32 = 0x67 + AF_VENDOR33 = 0x69 + AF_VENDOR34 = 0x6b + AF_VENDOR35 = 0x6d + AF_VENDOR36 = 0x6f + AF_VENDOR37 = 0x71 + AF_VENDOR38 = 0x73 + AF_VENDOR39 = 0x75 + AF_VENDOR40 = 0x77 + AF_VENDOR41 = 0x79 + AF_VENDOR42 = 0x7b + AF_VENDOR43 = 0x7d + AF_VENDOR44 = 0x7f + AF_VENDOR45 = 0x81 + AF_VENDOR46 = 0x83 + AF_VENDOR47 = 0x85 + ALTWERASE = 0x200 + B0 = 0x0 + B1000000 = 0xf4240 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1500000 = 0x16e360 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B2000000 = 0x1e8480 + B230400 = 0x38400 + B2400 = 0x960 + B2500000 = 0x2625a0 + B28800 = 0x7080 + B300 = 0x12c + B3000000 = 0x2dc6c0 + B3500000 = 0x3567e0 + B38400 = 0x9600 + B4000000 = 0x3d0900 + B460800 = 0x70800 + B4800 = 0x12c0 + B50 = 0x32 + B500000 = 0x7a120 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B921600 = 0xe1000 + B9600 = 0x2580 + BIOCFEEDBACK = 0x8004427c + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRECTION = 0x40044276 + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc0104279 + BIOCGETBUFMODE = 0x4004427d + BIOCGETIF = 0x4020426b + BIOCGETZMAX = 0x4008427f + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044272 + BIOCGRTIMEOUT = 0x4010426e + BIOCGSEESENT = 0x40044276 + BIOCGSTATS = 0x4008426f + BIOCGTSTAMP = 0x40044283 + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x2000427a + BIOCPROMISC = 0x20004269 + BIOCROTZBUF = 0x40184280 + BIOCSBLEN = 0xc0044266 + BIOCSDIRECTION = 0x80044277 + BIOCSDLT = 0x80044278 + BIOCSETBUFMODE = 0x8004427e + BIOCSETF = 0x80104267 + BIOCSETFNR = 0x80104282 + BIOCSETIF = 0x8020426c + BIOCSETVLANPCP = 0x80044285 + BIOCSETWF = 0x8010427b + BIOCSETZBUF = 0x80184281 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044273 + BIOCSRTIMEOUT = 0x8010426d + BIOCSSEESENT = 0x80044277 + BIOCSTSTAMP = 0x80044284 + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x8 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_BUFMODE_BUFFER = 0x1 + BPF_BUFMODE_ZBUF = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x80000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MOD = 0x90 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_T_BINTIME = 0x2 + BPF_T_BINTIME_FAST = 0x102 + BPF_T_BINTIME_MONOTONIC = 0x202 + BPF_T_BINTIME_MONOTONIC_FAST = 0x302 + BPF_T_FAST = 0x100 + BPF_T_FLAG_MASK = 0x300 + BPF_T_FORMAT_MASK = 0x3 + BPF_T_MICROTIME = 0x0 + BPF_T_MICROTIME_FAST = 0x100 + BPF_T_MICROTIME_MONOTONIC = 0x200 + BPF_T_MICROTIME_MONOTONIC_FAST = 0x300 + BPF_T_MONOTONIC = 0x200 + BPF_T_MONOTONIC_FAST = 0x300 + BPF_T_NANOTIME = 0x1 + BPF_T_NANOTIME_FAST = 0x101 + BPF_T_NANOTIME_MONOTONIC = 0x201 + BPF_T_NANOTIME_MONOTONIC_FAST = 0x301 + BPF_T_NONE = 0x3 + BPF_T_NORMAL = 0x0 + BPF_W = 0x0 + BPF_X = 0x8 + BPF_XOR = 0xa0 + BRKINT = 0x2 + CAP_ACCEPT = 0x200000020000000 + CAP_ACL_CHECK = 0x400000000010000 + CAP_ACL_DELETE = 0x400000000020000 + CAP_ACL_GET = 0x400000000040000 + CAP_ACL_SET = 0x400000000080000 + CAP_ALL0 = 0x20007ffffffffff + CAP_ALL1 = 0x4000000001fffff + CAP_BIND = 0x200000040000000 + CAP_BINDAT = 0x200008000000400 + CAP_CHFLAGSAT = 0x200000000001400 + CAP_CONNECT = 0x200000080000000 + CAP_CONNECTAT = 0x200010000000400 + CAP_CREATE = 0x200000000000040 + CAP_EVENT = 0x400000000000020 + CAP_EXTATTR_DELETE = 0x400000000001000 + CAP_EXTATTR_GET = 0x400000000002000 + CAP_EXTATTR_LIST = 0x400000000004000 + CAP_EXTATTR_SET = 0x400000000008000 + CAP_FCHDIR = 0x200000000000800 + CAP_FCHFLAGS = 0x200000000001000 + CAP_FCHMOD = 0x200000000002000 + CAP_FCHMODAT = 0x200000000002400 + CAP_FCHOWN = 0x200000000004000 + CAP_FCHOWNAT = 0x200000000004400 + CAP_FCNTL = 0x200000000008000 + CAP_FCNTL_ALL = 0x78 + CAP_FCNTL_GETFL = 0x8 + CAP_FCNTL_GETOWN = 0x20 + CAP_FCNTL_SETFL = 0x10 + CAP_FCNTL_SETOWN = 0x40 + CAP_FEXECVE = 0x200000000000080 + CAP_FLOCK = 0x200000000010000 + CAP_FPATHCONF = 0x200000000020000 + CAP_FSCK = 0x200000000040000 + CAP_FSTAT = 0x200000000080000 + CAP_FSTATAT = 0x200000000080400 + CAP_FSTATFS = 0x200000000100000 + CAP_FSYNC = 0x200000000000100 + CAP_FTRUNCATE = 0x200000000000200 + CAP_FUTIMES = 0x200000000200000 + CAP_FUTIMESAT = 0x200000000200400 + CAP_GETPEERNAME = 0x200000100000000 + CAP_GETSOCKNAME = 0x200000200000000 + CAP_GETSOCKOPT = 0x200000400000000 + CAP_IOCTL = 0x400000000000080 + CAP_IOCTLS_ALL = 0x7fffffffffffffff + CAP_KQUEUE = 0x400000000100040 + CAP_KQUEUE_CHANGE = 0x400000000100000 + CAP_KQUEUE_EVENT = 0x400000000000040 + CAP_LINKAT_SOURCE = 0x200020000000400 + CAP_LINKAT_TARGET = 0x200000000400400 + CAP_LISTEN = 0x200000800000000 + CAP_LOOKUP = 0x200000000000400 + CAP_MAC_GET = 0x400000000000001 + CAP_MAC_SET = 0x400000000000002 + CAP_MKDIRAT = 0x200000000800400 + CAP_MKFIFOAT = 0x200000001000400 + CAP_MKNODAT = 0x200000002000400 + CAP_MMAP = 0x200000000000010 + CAP_MMAP_R = 0x20000000000001d + CAP_MMAP_RW = 0x20000000000001f + CAP_MMAP_RWX = 0x20000000000003f + CAP_MMAP_RX = 0x20000000000003d + CAP_MMAP_W = 0x20000000000001e + CAP_MMAP_WX = 0x20000000000003e + CAP_MMAP_X = 0x20000000000003c + CAP_PDGETPID = 0x400000000000200 + CAP_PDKILL = 0x400000000000800 + CAP_PDWAIT = 0x400000000000400 + CAP_PEELOFF = 0x200001000000000 + CAP_POLL_EVENT = 0x400000000000020 + CAP_PREAD = 0x20000000000000d + CAP_PWRITE = 0x20000000000000e + CAP_READ = 0x200000000000001 + CAP_RECV = 0x200000000000001 + CAP_RENAMEAT_SOURCE = 0x200000004000400 + CAP_RENAMEAT_TARGET = 0x200040000000400 + CAP_RIGHTS_VERSION = 0x0 + CAP_RIGHTS_VERSION_00 = 0x0 + CAP_SEEK = 0x20000000000000c + CAP_SEEK_TELL = 0x200000000000004 + CAP_SEM_GETVALUE = 0x400000000000004 + CAP_SEM_POST = 0x400000000000008 + CAP_SEM_WAIT = 0x400000000000010 + CAP_SEND = 0x200000000000002 + CAP_SETSOCKOPT = 0x200002000000000 + CAP_SHUTDOWN = 0x200004000000000 + CAP_SOCK_CLIENT = 0x200007780000003 + CAP_SOCK_SERVER = 0x200007f60000003 + CAP_SYMLINKAT = 0x200000008000400 + CAP_TTYHOOK = 0x400000000000100 + CAP_UNLINKAT = 0x200000010000400 + CAP_UNUSED0_44 = 0x200080000000000 + CAP_UNUSED0_57 = 0x300000000000000 + CAP_UNUSED1_22 = 0x400000000200000 + CAP_UNUSED1_57 = 0x500000000000000 + CAP_WRITE = 0x200000000000002 + CFLUSH = 0xf + CLOCAL = 0x8000 + CLOCK_BOOTTIME = 0x5 + CLOCK_MONOTONIC = 0x4 + CLOCK_MONOTONIC_COARSE = 0xc + CLOCK_MONOTONIC_FAST = 0xc + CLOCK_MONOTONIC_PRECISE = 0xb + CLOCK_PROCESS_CPUTIME_ID = 0xf + CLOCK_PROF = 0x2 + CLOCK_REALTIME = 0x0 + CLOCK_REALTIME_COARSE = 0xa + CLOCK_REALTIME_FAST = 0xa + CLOCK_REALTIME_PRECISE = 0x9 + CLOCK_SECOND = 0xd + CLOCK_THREAD_CPUTIME_ID = 0xe + CLOCK_UPTIME = 0x5 + CLOCK_UPTIME_FAST = 0x8 + CLOCK_UPTIME_PRECISE = 0x7 + CLOCK_VIRTUAL = 0x1 + CPUSTATES = 0x5 + CP_IDLE = 0x4 + CP_INTR = 0x3 + CP_NICE = 0x1 + CP_SYS = 0x2 + CP_USER = 0x0 + CREAD = 0x800 + CRTSCTS = 0x30000 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0x14 + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_HW = 0x6 + CTL_KERN = 0x1 + CTL_MAXNAME = 0x18 + CTL_NET = 0x4 + DIOCGATTR = 0xc148648e + DIOCGDELETE = 0x80106488 + DIOCGFLUSH = 0x20006487 + DIOCGFWHEADS = 0x40046483 + DIOCGFWSECTORS = 0x40046482 + DIOCGIDENT = 0x41006489 + DIOCGKERNELDUMP = 0xc0986492 + DIOCGMEDIASIZE = 0x40086481 + DIOCGPHYSPATH = 0x4400648d + DIOCGPROVIDERNAME = 0x4400648a + DIOCGSECTORSIZE = 0x40046480 + DIOCGSTRIPEOFFSET = 0x4008648c + DIOCGSTRIPESIZE = 0x4008648b + DIOCSKERNELDUMP = 0x80986491 + DIOCSKERNELDUMP_FREEBSD11 = 0x80046485 + DIOCSKERNELDUMP_FREEBSD12 = 0x80506490 + DIOCZONECMD = 0xc080648f + DLT_A429 = 0xb8 + DLT_A653_ICM = 0xb9 + DLT_AIRONET_HEADER = 0x78 + DLT_AOS = 0xde + DLT_APPLE_IP_OVER_IEEE1394 = 0x8a + DLT_ARCNET = 0x7 + DLT_ARCNET_LINUX = 0x81 + DLT_ATM_CLIP = 0x13 + DLT_ATM_RFC1483 = 0xb + DLT_AURORA = 0x7e + DLT_AX25 = 0x3 + DLT_AX25_KISS = 0xca + DLT_BACNET_MS_TP = 0xa5 + DLT_BLUETOOTH_BREDR_BB = 0xff + DLT_BLUETOOTH_HCI_H4 = 0xbb + DLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9 + DLT_BLUETOOTH_LE_LL = 0xfb + DLT_BLUETOOTH_LE_LL_WITH_PHDR = 0x100 + DLT_BLUETOOTH_LINUX_MONITOR = 0xfe + DLT_CAN20B = 0xbe + DLT_CAN_SOCKETCAN = 0xe3 + DLT_CHAOS = 0x5 + DLT_CHDLC = 0x68 + DLT_CISCO_IOS = 0x76 + DLT_CLASS_NETBSD_RAWAF = 0x2240000 + DLT_C_HDLC = 0x68 + DLT_C_HDLC_WITH_DIR = 0xcd + DLT_DBUS = 0xe7 + DLT_DECT = 0xdd + DLT_DISPLAYPORT_AUX = 0x113 + DLT_DOCSIS = 0x8f + DLT_DOCSIS31_XRA31 = 0x111 + DLT_DVB_CI = 0xeb + DLT_ECONET = 0x73 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0x6d + DLT_EPON = 0x103 + DLT_ERF = 0xc5 + DLT_ERF_ETH = 0xaf + DLT_ERF_POS = 0xb0 + DLT_ETHERNET_MPACKET = 0x112 + DLT_FC_2 = 0xe0 + DLT_FC_2_WITH_FRAME_DELIMS = 0xe1 + DLT_FDDI = 0xa + DLT_FLEXRAY = 0xd2 + DLT_FRELAY = 0x6b + DLT_FRELAY_WITH_DIR = 0xce + DLT_GCOM_SERIAL = 0xad + DLT_GCOM_T1E1 = 0xac + DLT_GPF_F = 0xab + DLT_GPF_T = 0xaa + DLT_GPRS_LLC = 0xa9 + DLT_GSMTAP_ABIS = 0xda + DLT_GSMTAP_UM = 0xd9 + DLT_IBM_SN = 0x92 + DLT_IBM_SP = 0x91 + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_IEEE802_11_RADIO_AVS = 0xa3 + DLT_IEEE802_15_4 = 0xc3 + DLT_IEEE802_15_4_LINUX = 0xbf + DLT_IEEE802_15_4_NOFCS = 0xe6 + DLT_IEEE802_15_4_NONASK_PHY = 0xd7 + DLT_IEEE802_16_MAC_CPS = 0xbc + DLT_IEEE802_16_MAC_CPS_RADIO = 0xc1 + DLT_INFINIBAND = 0xf7 + DLT_IPFILTER = 0x74 + DLT_IPMB_KONTRON = 0xc7 + DLT_IPMB_LINUX = 0xd1 + DLT_IPMI_HPM_2 = 0x104 + DLT_IPNET = 0xe2 + DLT_IPOIB = 0xf2 + DLT_IPV4 = 0xe4 + DLT_IPV6 = 0xe5 + DLT_IP_OVER_FC = 0x7a + DLT_ISO_14443 = 0x108 + DLT_JUNIPER_ATM1 = 0x89 + DLT_JUNIPER_ATM2 = 0x87 + DLT_JUNIPER_ATM_CEMIC = 0xee + DLT_JUNIPER_CHDLC = 0xb5 + DLT_JUNIPER_ES = 0x84 + DLT_JUNIPER_ETHER = 0xb2 + DLT_JUNIPER_FIBRECHANNEL = 0xea + DLT_JUNIPER_FRELAY = 0xb4 + DLT_JUNIPER_GGSN = 0x85 + DLT_JUNIPER_ISM = 0xc2 + DLT_JUNIPER_MFR = 0x86 + DLT_JUNIPER_MLFR = 0x83 + DLT_JUNIPER_MLPPP = 0x82 + DLT_JUNIPER_MONITOR = 0xa4 + DLT_JUNIPER_PIC_PEER = 0xae + DLT_JUNIPER_PPP = 0xb3 + DLT_JUNIPER_PPPOE = 0xa7 + DLT_JUNIPER_PPPOE_ATM = 0xa8 + DLT_JUNIPER_SERVICES = 0x88 + DLT_JUNIPER_SRX_E2E = 0xe9 + DLT_JUNIPER_ST = 0xc8 + DLT_JUNIPER_VP = 0xb7 + DLT_JUNIPER_VS = 0xe8 + DLT_LAPB_WITH_DIR = 0xcf + DLT_LAPD = 0xcb + DLT_LIN = 0xd4 + DLT_LINUX_EVDEV = 0xd8 + DLT_LINUX_IRDA = 0x90 + DLT_LINUX_LAPD = 0xb1 + DLT_LINUX_PPP_WITHDIRECTION = 0xa6 + DLT_LINUX_SLL = 0x71 + DLT_LINUX_SLL2 = 0x114 + DLT_LOOP = 0x6c + DLT_LORATAP = 0x10e + DLT_LTALK = 0x72 + DLT_MATCHING_MAX = 0x114 + DLT_MATCHING_MIN = 0x68 + DLT_MFR = 0xb6 + DLT_MOST = 0xd3 + DLT_MPEG_2_TS = 0xf3 + DLT_MPLS = 0xdb + DLT_MTP2 = 0x8c + DLT_MTP2_WITH_PHDR = 0x8b + DLT_MTP3 = 0x8d + DLT_MUX27010 = 0xec + DLT_NETANALYZER = 0xf0 + DLT_NETANALYZER_TRANSPARENT = 0xf1 + DLT_NETLINK = 0xfd + DLT_NFC_LLCP = 0xf5 + DLT_NFLOG = 0xef + DLT_NG40 = 0xf4 + DLT_NORDIC_BLE = 0x110 + DLT_NULL = 0x0 + DLT_OPENFLOW = 0x10b + DLT_PCI_EXP = 0x7d + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x79 + DLT_PKTAP = 0x102 + DLT_PPI = 0xc0 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0xe + DLT_PPP_ETHER = 0x33 + DLT_PPP_PPPD = 0xa6 + DLT_PPP_SERIAL = 0x32 + DLT_PPP_WITH_DIR = 0xcc + DLT_PPP_WITH_DIRECTION = 0xa6 + DLT_PRISM_HEADER = 0x77 + DLT_PROFIBUS_DL = 0x101 + DLT_PRONET = 0x4 + DLT_RAIF1 = 0xc6 + DLT_RAW = 0xc + DLT_RDS = 0x109 + DLT_REDBACK_SMARTEDGE = 0x20 + DLT_RIO = 0x7c + DLT_RTAC_SERIAL = 0xfa + DLT_SCCP = 0x8e + DLT_SCTP = 0xf8 + DLT_SDLC = 0x10c + DLT_SITA = 0xc4 + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xd + DLT_STANAG_5066_D_PDU = 0xed + DLT_SUNATM = 0x7b + DLT_SYMANTEC_FIREWALL = 0x63 + DLT_TI_LLN_SNIFFER = 0x10d + DLT_TZSP = 0x80 + DLT_USB = 0xba + DLT_USBPCAP = 0xf9 + DLT_USB_DARWIN = 0x10a + DLT_USB_FREEBSD = 0xba + DLT_USB_LINUX = 0xbd + DLT_USB_LINUX_MMAPPED = 0xdc + DLT_USER0 = 0x93 + DLT_USER1 = 0x94 + DLT_USER10 = 0x9d + DLT_USER11 = 0x9e + DLT_USER12 = 0x9f + DLT_USER13 = 0xa0 + DLT_USER14 = 0xa1 + DLT_USER15 = 0xa2 + DLT_USER2 = 0x95 + DLT_USER3 = 0x96 + DLT_USER4 = 0x97 + DLT_USER5 = 0x98 + DLT_USER6 = 0x99 + DLT_USER7 = 0x9a + DLT_USER8 = 0x9b + DLT_USER9 = 0x9c + DLT_VSOCK = 0x10f + DLT_WATTSTOPPER_DLM = 0x107 + DLT_WIHART = 0xdf + DLT_WIRESHARK_UPPER_PDU = 0xfc + DLT_X2E_SERIAL = 0xd5 + DLT_X2E_XORAYA = 0xd6 + DLT_ZWAVE_R1_R2 = 0x105 + DLT_ZWAVE_R3 = 0x106 + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + DT_WHT = 0xe + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EHE_DEAD_PRIORITY = -0x1 + EVFILT_AIO = -0x3 + EVFILT_EMPTY = -0xd + EVFILT_FS = -0x9 + EVFILT_LIO = -0xa + EVFILT_PROC = -0x5 + EVFILT_PROCDESC = -0x8 + EVFILT_READ = -0x1 + EVFILT_SENDFILE = -0xc + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0xd + EVFILT_TIMER = -0x7 + EVFILT_USER = -0xb + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EVNAMEMAP_NAME_SIZE = 0x40 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_DISPATCH = 0x80 + EV_DROP = 0x1000 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_FLAG2 = 0x4000 + EV_FORCEONESHOT = 0x100 + EV_ONESHOT = 0x10 + EV_RECEIPT = 0x40 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTATTR_MAXNAMELEN = 0xff + EXTATTR_NAMESPACE_EMPTY = 0x0 + EXTATTR_NAMESPACE_SYSTEM = 0x2 + EXTATTR_NAMESPACE_USER = 0x1 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_NONE = -0xc8 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_ADD_SEALS = 0x13 + F_CANCEL = 0x5 + F_DUP2FD = 0xa + F_DUP2FD_CLOEXEC = 0x12 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0x11 + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0xb + F_GETOWN = 0x5 + F_GET_SEALS = 0x14 + F_ISUNIONSTACK = 0x15 + F_KINFO = 0x16 + F_OGETLK = 0x7 + F_OK = 0x0 + F_OSETLK = 0x8 + F_OSETLKW = 0x9 + F_RDAHEAD = 0x10 + F_RDLCK = 0x1 + F_READAHEAD = 0xf + F_SEAL_GROW = 0x4 + F_SEAL_SEAL = 0x1 + F_SEAL_SHRINK = 0x2 + F_SEAL_WRITE = 0x8 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0xc + F_SETLKW = 0xd + F_SETLK_REMOTE = 0xe + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_UNLCKSYS = 0x4 + F_WRLCK = 0x3 + HUPCL = 0x4000 + HW_MACHINE = 0x1 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFCAP_WOL_MAGIC = 0x2000 + IFF_ALLMULTI = 0x200 + IFF_ALTPHYS = 0x4000 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x218f72 + IFF_CANTCONFIG = 0x10000 + IFF_DEBUG = 0x4 + IFF_DRV_OACTIVE = 0x400 + IFF_DRV_RUNNING = 0x40 + IFF_DYING = 0x200000 + IFF_KNOWSEPOCH = 0x20 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MONITOR = 0x40000 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOGROUP = 0x800000 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PPROMISC = 0x20000 + IFF_PROMISC = 0x100 + IFF_RENAMING = 0x400000 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_STATICARP = 0x80000 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_BRIDGE = 0xd1 + IFT_CARP = 0xf8 + IFT_IEEE1394 = 0x90 + IFT_INFINIBAND = 0xc7 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_PPP = 0x17 + IFT_PROPVIRTUAL = 0x35 + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_NETMASK_DEFAULT = 0xffffff00 + IN_RFC3021_MASK = 0xfffffffe + IPPROTO_3PC = 0x22 + IPPROTO_ADFS = 0x44 + IPPROTO_AH = 0x33 + IPPROTO_AHIP = 0x3d + IPPROTO_APES = 0x63 + IPPROTO_ARGUS = 0xd + IPPROTO_AX25 = 0x5d + IPPROTO_BHA = 0x31 + IPPROTO_BLT = 0x1e + IPPROTO_BRSATMON = 0x4c + IPPROTO_CARP = 0x70 + IPPROTO_CFTP = 0x3e + IPPROTO_CHAOS = 0x10 + IPPROTO_CMTP = 0x26 + IPPROTO_CPHB = 0x49 + IPPROTO_CPNX = 0x48 + IPPROTO_DCCP = 0x21 + IPPROTO_DDP = 0x25 + IPPROTO_DGP = 0x56 + IPPROTO_DIVERT = 0x102 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_EMCON = 0xe + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GMTP = 0x64 + IPPROTO_GRE = 0x2f + IPPROTO_HELLO = 0x3f + IPPROTO_HIP = 0x8b + IPPROTO_HMP = 0x14 + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IDPR = 0x23 + IPPROTO_IDRP = 0x2d + IPPROTO_IGMP = 0x2 + IPPROTO_IGP = 0x55 + IPPROTO_IGRP = 0x58 + IPPROTO_IL = 0x28 + IPPROTO_INLSP = 0x34 + IPPROTO_INP = 0x20 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPCV = 0x47 + IPPROTO_IPEIP = 0x5e + IPPROTO_IPIP = 0x4 + IPPROTO_IPPC = 0x43 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_IRTP = 0x1c + IPPROTO_KRYPTOLAN = 0x41 + IPPROTO_LARP = 0x5b + IPPROTO_LEAF1 = 0x19 + IPPROTO_LEAF2 = 0x1a + IPPROTO_MAX = 0x100 + IPPROTO_MEAS = 0x13 + IPPROTO_MH = 0x87 + IPPROTO_MHRP = 0x30 + IPPROTO_MICP = 0x5f + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_MTP = 0x5c + IPPROTO_MUX = 0x12 + IPPROTO_ND = 0x4d + IPPROTO_NHRP = 0x36 + IPPROTO_NONE = 0x3b + IPPROTO_NSP = 0x1f + IPPROTO_NVPII = 0xb + IPPROTO_OLD_DIVERT = 0xfe + IPPROTO_OSPFIGP = 0x59 + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PGM = 0x71 + IPPROTO_PIGP = 0x9 + IPPROTO_PIM = 0x67 + IPPROTO_PRM = 0x15 + IPPROTO_PUP = 0xc + IPPROTO_PVP = 0x4b + IPPROTO_RAW = 0xff + IPPROTO_RCCMON = 0xa + IPPROTO_RDP = 0x1b + IPPROTO_RESERVED_253 = 0xfd + IPPROTO_RESERVED_254 = 0xfe + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_RVD = 0x42 + IPPROTO_SATEXPAK = 0x40 + IPPROTO_SATMON = 0x45 + IPPROTO_SCCSP = 0x60 + IPPROTO_SCTP = 0x84 + IPPROTO_SDRP = 0x2a + IPPROTO_SEND = 0x103 + IPPROTO_SHIM6 = 0x8c + IPPROTO_SKIP = 0x39 + IPPROTO_SPACER = 0x7fff + IPPROTO_SRPC = 0x5a + IPPROTO_ST = 0x7 + IPPROTO_SVMTP = 0x52 + IPPROTO_SWIPE = 0x35 + IPPROTO_TCF = 0x57 + IPPROTO_TCP = 0x6 + IPPROTO_TLSP = 0x38 + IPPROTO_TP = 0x1d + IPPROTO_TPXX = 0x27 + IPPROTO_TRUNK1 = 0x17 + IPPROTO_TRUNK2 = 0x18 + IPPROTO_TTP = 0x54 + IPPROTO_UDP = 0x11 + IPPROTO_UDPLITE = 0x88 + IPPROTO_VINES = 0x53 + IPPROTO_VISA = 0x46 + IPPROTO_VMTP = 0x51 + IPPROTO_WBEXPAK = 0x4f + IPPROTO_WBMON = 0x4e + IPPROTO_WSN = 0x4a + IPPROTO_XNET = 0xf + IPPROTO_XTP = 0x24 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_BINDANY = 0x40 + IPV6_BINDMULTI = 0x41 + IPV6_BINDV6ONLY = 0x1b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_FLOWID = 0x43 + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_LEN = 0x14 + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FLOWTYPE = 0x44 + IPV6_FRAGTTL = 0x78 + IPV6_FW_ADD = 0x1e + IPV6_FW_DEL = 0x1f + IPV6_FW_FLUSH = 0x20 + IPV6_FW_GET = 0x22 + IPV6_FW_ZERO = 0x21 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPSEC_POLICY = 0x1c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXOPTHDR = 0x800 + IPV6_MAXPACKET = 0xffff + IPV6_MAX_GROUP_SRC_FILTER = 0x200 + IPV6_MAX_MEMBERSHIPS = 0xfff + IPV6_MAX_SOCK_SRC_FILTER = 0x80 + IPV6_MMTU = 0x500 + IPV6_MSFILTER = 0x4a + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_ORIGDSTADDR = 0x48 + IPV6_PATHMTU = 0x2c + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_PREFER_TEMPADDR = 0x3f + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVFLOWID = 0x46 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVORIGDSTADDR = 0x48 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRSSBUCKETID = 0x47 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RSSBUCKETID = 0x45 + IPV6_RSS_LISTEN_BUCKET = 0x42 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IPV6_VLAN_PCP = 0x4b + IP_ADD_MEMBERSHIP = 0xc + IP_ADD_SOURCE_MEMBERSHIP = 0x46 + IP_BINDANY = 0x18 + IP_BINDMULTI = 0x19 + IP_BLOCK_SOURCE = 0x48 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DONTFRAG = 0x43 + IP_DROP_MEMBERSHIP = 0xd + IP_DROP_SOURCE_MEMBERSHIP = 0x47 + IP_DUMMYNET3 = 0x31 + IP_DUMMYNET_CONFIGURE = 0x3c + IP_DUMMYNET_DEL = 0x3d + IP_DUMMYNET_FLUSH = 0x3e + IP_DUMMYNET_GET = 0x40 + IP_FLOWID = 0x5a + IP_FLOWTYPE = 0x5b + IP_FW3 = 0x30 + IP_FW_ADD = 0x32 + IP_FW_DEL = 0x33 + IP_FW_FLUSH = 0x34 + IP_FW_GET = 0x36 + IP_FW_NAT_CFG = 0x38 + IP_FW_NAT_DEL = 0x39 + IP_FW_NAT_GET_CONFIG = 0x3a + IP_FW_NAT_GET_LOG = 0x3b + IP_FW_RESETLOG = 0x37 + IP_FW_TABLE_ADD = 0x28 + IP_FW_TABLE_DEL = 0x29 + IP_FW_TABLE_FLUSH = 0x2a + IP_FW_TABLE_GETSIZE = 0x2b + IP_FW_TABLE_LIST = 0x2c + IP_FW_ZERO = 0x35 + IP_HDRINCL = 0x2 + IP_IPSEC_POLICY = 0x15 + IP_MAXPACKET = 0xffff + IP_MAX_GROUP_SRC_FILTER = 0x200 + IP_MAX_MEMBERSHIPS = 0xfff + IP_MAX_SOCK_MUTE_FILTER = 0x80 + IP_MAX_SOCK_SRC_FILTER = 0x80 + IP_MF = 0x2000 + IP_MINTTL = 0x42 + IP_MSFILTER = 0x4a + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_VIF = 0xe + IP_OFFMASK = 0x1fff + IP_ONESBCAST = 0x17 + IP_OPTIONS = 0x1 + IP_ORIGDSTADDR = 0x1b + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVFLOWID = 0x5d + IP_RECVIF = 0x14 + IP_RECVOPTS = 0x5 + IP_RECVORIGDSTADDR = 0x1b + IP_RECVRETOPTS = 0x6 + IP_RECVRSSBUCKETID = 0x5e + IP_RECVTOS = 0x44 + IP_RECVTTL = 0x41 + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RSSBUCKETID = 0x5c + IP_RSS_LISTEN_BUCKET = 0x1a + IP_RSVP_OFF = 0x10 + IP_RSVP_ON = 0xf + IP_RSVP_VIF_OFF = 0x12 + IP_RSVP_VIF_ON = 0x11 + IP_SENDSRCADDR = 0x7 + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_UNBLOCK_SOURCE = 0x49 + IP_VLAN_PCP = 0x4b + ISIG = 0x80 + ISTRIP = 0x20 + ITIMER_PROF = 0x2 + ITIMER_REAL = 0x0 + ITIMER_VIRTUAL = 0x1 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + KERN_HOSTNAME = 0xa + KERN_OSRELEASE = 0x2 + KERN_OSTYPE = 0x1 + KERN_VERSION = 0x4 + LOCAL_CONNWAIT = 0x4 + LOCAL_CREDS = 0x2 + LOCAL_CREDS_PERSISTENT = 0x3 + LOCAL_PEERCRED = 0x1 + LOCAL_VENDOR = 0x80000000 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_AUTOSYNC = 0x7 + MADV_CORE = 0x9 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x5 + MADV_NOCORE = 0x8 + MADV_NORMAL = 0x0 + MADV_NOSYNC = 0x6 + MADV_PROTECT = 0xa + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_WILLNEED = 0x3 + MAP_32BIT = 0x80000 + MAP_ALIGNED_SUPER = 0x1000000 + MAP_ALIGNMENT_MASK = -0x1000000 + MAP_ALIGNMENT_SHIFT = 0x18 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_EXCL = 0x4000 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_GUARD = 0x2000 + MAP_HASSEMAPHORE = 0x200 + MAP_NOCORE = 0x20000 + MAP_NOSYNC = 0x800 + MAP_PREFAULT_READ = 0x40000 + MAP_PRIVATE = 0x2 + MAP_RESERVED0020 = 0x20 + MAP_RESERVED0040 = 0x40 + MAP_RESERVED0080 = 0x80 + MAP_RESERVED0100 = 0x100 + MAP_SHARED = 0x1 + MAP_STACK = 0x400 + MCAST_BLOCK_SOURCE = 0x54 + MCAST_EXCLUDE = 0x2 + MCAST_INCLUDE = 0x1 + MCAST_JOIN_GROUP = 0x50 + MCAST_JOIN_SOURCE_GROUP = 0x52 + MCAST_LEAVE_GROUP = 0x51 + MCAST_LEAVE_SOURCE_GROUP = 0x53 + MCAST_UNBLOCK_SOURCE = 0x55 + MCAST_UNDEFINED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MFD_ALLOW_SEALING = 0x2 + MFD_CLOEXEC = 0x1 + MFD_HUGETLB = 0x4 + MFD_HUGE_16GB = -0x78000000 + MFD_HUGE_16MB = 0x60000000 + MFD_HUGE_1GB = 0x78000000 + MFD_HUGE_1MB = 0x50000000 + MFD_HUGE_256MB = 0x70000000 + MFD_HUGE_2GB = 0x7c000000 + MFD_HUGE_2MB = 0x54000000 + MFD_HUGE_32MB = 0x64000000 + MFD_HUGE_512KB = 0x4c000000 + MFD_HUGE_512MB = 0x74000000 + MFD_HUGE_64KB = 0x40000000 + MFD_HUGE_8MB = 0x5c000000 + MFD_HUGE_MASK = 0xfc000000 + MFD_HUGE_SHIFT = 0x1a + MNT_ACLS = 0x8000000 + MNT_ASYNC = 0x40 + MNT_AUTOMOUNTED = 0x200000000 + MNT_BYFSID = 0x8000000 + MNT_CMDFLAGS = 0x300d0f0000 + MNT_DEFEXPORTED = 0x200 + MNT_DELEXPORT = 0x20000 + MNT_EMPTYDIR = 0x2000000000 + MNT_EXKERB = 0x800 + MNT_EXPORTANON = 0x400 + MNT_EXPORTED = 0x100 + MNT_EXPUBLIC = 0x20000000 + MNT_EXRDONLY = 0x80 + MNT_EXTLS = 0x4000000000 + MNT_EXTLSCERT = 0x8000000000 + MNT_EXTLSCERTUSER = 0x10000000000 + MNT_FORCE = 0x80000 + MNT_GJOURNAL = 0x2000000 + MNT_IGNORE = 0x800000 + MNT_LAZY = 0x3 + MNT_LOCAL = 0x1000 + MNT_MULTILABEL = 0x4000000 + MNT_NFS4ACLS = 0x10 + MNT_NOATIME = 0x10000000 + MNT_NOCLUSTERR = 0x40000000 + MNT_NOCLUSTERW = 0x80000000 + MNT_NOCOVER = 0x1000000000 + MNT_NOEXEC = 0x4 + MNT_NONBUSY = 0x4000000 + MNT_NOSUID = 0x8 + MNT_NOSYMFOLLOW = 0x400000 + MNT_NOWAIT = 0x2 + MNT_QUOTA = 0x2000 + MNT_RDONLY = 0x1 + MNT_RELOAD = 0x40000 + MNT_ROOTFS = 0x4000 + MNT_SNAPSHOT = 0x1000000 + MNT_SOFTDEP = 0x200000 + MNT_SUIDDIR = 0x100000 + MNT_SUJ = 0x100000000 + MNT_SUSPEND = 0x4 + MNT_SYNCHRONOUS = 0x2 + MNT_UNION = 0x20 + MNT_UNTRUSTED = 0x800000000 + MNT_UPDATE = 0x10000 + MNT_UPDATEMASK = 0xad8d0807e + MNT_USER = 0x8000 + MNT_VERIFIED = 0x400000000 + MNT_VISFLAGMASK = 0xffef0ffff + MNT_WAIT = 0x1 + MSG_CMSG_CLOEXEC = 0x40000 + MSG_COMPAT = 0x8000 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOF = 0x100 + MSG_EOR = 0x8 + MSG_NBIO = 0x4000 + MSG_NOSIGNAL = 0x20000 + MSG_NOTIFICATION = 0x2000 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MSG_WAITFORONE = 0x80000 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x2 + MS_SYNC = 0x0 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_IFLISTL = 0x5 + NET_RT_IFMALIST = 0x4 + NET_RT_NHGRP = 0x7 + NET_RT_NHOP = 0x6 + NFDBITS = 0x40 + NOFLSH = 0x80000000 + NOKERNINFO = 0x2000000 + NOTE_ABSTIME = 0x10 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_CLOSE = 0x100 + NOTE_CLOSE_WRITE = 0x200 + NOTE_DELETE = 0x1 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FFAND = 0x40000000 + NOTE_FFCOPY = 0xc0000000 + NOTE_FFCTRLMASK = 0xc0000000 + NOTE_FFLAGSMASK = 0xffffff + NOTE_FFNOP = 0x0 + NOTE_FFOR = 0x80000000 + NOTE_FILE_POLL = 0x2 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_MSECONDS = 0x2 + NOTE_NSECONDS = 0x8 + NOTE_OPEN = 0x80 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_READ = 0x400 + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_SECONDS = 0x1 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRIGGER = 0x1000000 + NOTE_USECONDS = 0x4 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x40 + ONOCR = 0x20 + ONOEOT = 0x8 + OPOST = 0x1 + OXTABS = 0x4 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x100000 + O_CREAT = 0x200 + O_DIRECT = 0x10000 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x1000000 + O_EMPTY_PATH = 0x2000000 + O_EXCL = 0x800 + O_EXEC = 0x40000 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_PATH = 0x400000 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RESOLVE_BENEATH = 0x800000 + O_SEARCH = 0x40000 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_TTY_INIT = 0x80000 + O_VERIFY = 0x200000 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PIOD_READ_D = 0x1 + PIOD_READ_I = 0x3 + PIOD_WRITE_D = 0x2 + PIOD_WRITE_I = 0x4 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + PTRACE_DEFAULT = 0x1 + PTRACE_EXEC = 0x1 + PTRACE_FORK = 0x8 + PTRACE_LWP = 0x10 + PTRACE_SCE = 0x2 + PTRACE_SCX = 0x4 + PTRACE_SYSCALL = 0x6 + PTRACE_VFORK = 0x20 + PT_ATTACH = 0xa + PT_CLEARSTEP = 0x10 + PT_CONTINUE = 0x7 + PT_COREDUMP = 0x1d + PT_DETACH = 0xb + PT_FIRSTMACH = 0x40 + PT_FOLLOW_FORK = 0x17 + PT_GETDBREGS = 0x25 + PT_GETFPREGS = 0x23 + PT_GETLWPLIST = 0xf + PT_GETNUMLWPS = 0xe + PT_GETREGS = 0x21 + PT_GET_EVENT_MASK = 0x19 + PT_GET_SC_ARGS = 0x1b + PT_GET_SC_RET = 0x1c + PT_IO = 0xc + PT_KILL = 0x8 + PT_LWPINFO = 0xd + PT_LWP_EVENTS = 0x18 + PT_READ_D = 0x2 + PT_READ_I = 0x1 + PT_RESUME = 0x13 + PT_SETDBREGS = 0x26 + PT_SETFPREGS = 0x24 + PT_SETREGS = 0x22 + PT_SETSTEP = 0x11 + PT_SET_EVENT_MASK = 0x1a + PT_STEP = 0x9 + PT_SUSPEND = 0x12 + PT_SYSCALL = 0x16 + PT_TO_SCE = 0x14 + PT_TO_SCX = 0x15 + PT_TRACE_ME = 0x0 + PT_VM_ENTRY = 0x29 + PT_VM_TIMESTAMP = 0x28 + PT_WRITE_D = 0x5 + PT_WRITE_I = 0x4 + P_ZONEID = 0xc + RLIMIT_AS = 0xa + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_MEMLOCK = 0x6 + RLIMIT_NOFILE = 0x8 + RLIMIT_NPROC = 0x7 + RLIMIT_RSS = 0x5 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_MAX = 0x8 + RTAX_NETMASK = 0x2 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_NETMASK = 0x4 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FIXEDMTU = 0x80000 + RTF_FMASK = 0x1004d808 + RTF_GATEWAY = 0x2 + RTF_GWFLAG_COMPAT = 0x80000000 + RTF_HOST = 0x4 + RTF_LLDATA = 0x400 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MODIFIED = 0x20 + RTF_MULTICAST = 0x800000 + RTF_PINNED = 0x100000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x40000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_STICKY = 0x10000000 + RTF_UP = 0x1 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DELMADDR = 0x10 + RTM_GET = 0x4 + RTM_IEEE80211 = 0x12 + RTM_IFANNOUNCE = 0x11 + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_NEWMADDR = 0xf + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RTV_WEIGHT = 0x100 + RT_ALL_FIBS = -0x1 + RT_BLACKHOLE = 0x40 + RT_DEFAULT_FIB = 0x0 + RT_DEFAULT_WEIGHT = 0x1 + RT_HAS_GW = 0x80 + RT_HAS_HEADER = 0x10 + RT_HAS_HEADER_BIT = 0x4 + RT_L2_ME = 0x4 + RT_L2_ME_BIT = 0x2 + RT_LLE_CACHE = 0x100 + RT_MAX_WEIGHT = 0xffffff + RT_MAY_LOOP = 0x8 + RT_MAY_LOOP_BIT = 0x3 + RT_REJECT = 0x20 + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_BINTIME = 0x4 + SCM_CREDS = 0x3 + SCM_CREDS2 = 0x8 + SCM_MONOTONIC = 0x6 + SCM_REALTIME = 0x5 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x2 + SCM_TIME_INFO = 0x7 + SEEK_CUR = 0x1 + SEEK_DATA = 0x3 + SEEK_END = 0x2 + SEEK_HOLE = 0x4 + SEEK_SET = 0x0 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80286987 + SIOCATMARK = 0x40047307 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80286989 + SIOCDIFPHYADDR = 0x80206949 + SIOCGDRVSPEC = 0xc028697b + SIOCGETSGCNT = 0xc0207210 + SIOCGETVIFCNT = 0xc028720f + SIOCGHIWAT = 0x40047301 + SIOCGHWADDR = 0xc020693e + SIOCGI2C = 0xc020693d + SIOCGIFADDR = 0xc0206921 + SIOCGIFALIAS = 0xc044692d + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCAP = 0xc020691f + SIOCGIFCONF = 0xc0106924 + SIOCGIFDATA = 0x8020692c + SIOCGIFDESCR = 0xc020692a + SIOCGIFDOWNREASON = 0xc058699a + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFIB = 0xc020695c + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc028698a + SIOCGIFGROUP = 0xc0286988 + SIOCGIFINDEX = 0xc0206920 + SIOCGIFMAC = 0xc0206926 + SIOCGIFMEDIA = 0xc0306938 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc0206933 + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPHYS = 0xc0206935 + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRSSHASH = 0xc0186997 + SIOCGIFRSSKEY = 0xc0946996 + SIOCGIFSTATUS = 0xc331693b + SIOCGIFXMEDIA = 0xc030698b + SIOCGLANPCP = 0xc0206998 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGPRIVATE_0 = 0xc0206950 + SIOCGPRIVATE_1 = 0xc0206951 + SIOCGTUNFIB = 0xc020695e + SIOCIFCREATE = 0xc020697a + SIOCIFCREATE2 = 0xc020697c + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc0106978 + SIOCSDRVSPEC = 0x8028697b + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFCAP = 0x8020691e + SIOCSIFDESCR = 0x80206929 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFIB = 0x8020695d + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020693c + SIOCSIFMAC = 0x80206927 + SIOCSIFMEDIA = 0xc0206937 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x80206934 + SIOCSIFNAME = 0x80206928 + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPHYS = 0x80206936 + SIOCSIFRVNET = 0xc020695b + SIOCSIFVNET = 0xc020695a + SIOCSLANPCP = 0x80206999 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSTUNFIB = 0x8020695f + SOCK_CLOEXEC = 0x10000000 + SOCK_DGRAM = 0x2 + SOCK_MAXADDRLEN = 0xff + SOCK_NONBLOCK = 0x20000000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_LOCAL = 0x0 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_ACCEPTFILTER = 0x1000 + SO_BINTIME = 0x2000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DOMAIN = 0x1019 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LABEL = 0x1009 + SO_LINGER = 0x80 + SO_LISTENINCQLEN = 0x1013 + SO_LISTENQLEN = 0x1012 + SO_LISTENQLIMIT = 0x1011 + SO_MAX_PACING_RATE = 0x1018 + SO_NOSIGPIPE = 0x800 + SO_NO_DDP = 0x8000 + SO_NO_OFFLOAD = 0x4000 + SO_OOBINLINE = 0x100 + SO_PEERLABEL = 0x1010 + SO_PROTOCOL = 0x1016 + SO_PROTOTYPE = 0x1016 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_RERROR = 0x20000 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_REUSEPORT_LB = 0x10000 + SO_SETFIB = 0x1014 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_TIMESTAMP = 0x400 + SO_TS_BINTIME = 0x1 + SO_TS_CLOCK = 0x1017 + SO_TS_CLOCK_MAX = 0x3 + SO_TS_DEFAULT = 0x0 + SO_TS_MONOTONIC = 0x3 + SO_TS_REALTIME = 0x2 + SO_TS_REALTIME_MICRO = 0x0 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + SO_USER_COOKIE = 0x1015 + SO_VENDOR = 0x80000000 + S_BLKSIZE = 0x200 + S_IEXEC = 0x40 + S_IFBLK = 0x6000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFIFO = 0x1000 + S_IFLNK = 0xa000 + S_IFMT = 0xf000 + S_IFREG = 0x8000 + S_IFSOCK = 0xc000 + S_IFWHT = 0xe000 + S_IREAD = 0x100 + S_IRGRP = 0x20 + S_IROTH = 0x4 + S_IRUSR = 0x100 + S_IRWXG = 0x38 + S_IRWXO = 0x7 + S_IRWXU = 0x1c0 + S_ISGID = 0x400 + S_ISTXT = 0x200 + S_ISUID = 0x800 + S_ISVTX = 0x200 + S_IWGRP = 0x10 + S_IWOTH = 0x2 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXGRP = 0x8 + S_IXOTH = 0x1 + S_IXUSR = 0x40 + TAB0 = 0x0 + TAB3 = 0x4 + TABDLY = 0x4 + TCIFLUSH = 0x1 + TCIOFF = 0x3 + TCIOFLUSH = 0x3 + TCION = 0x4 + TCOFLUSH = 0x2 + TCOOFF = 0x1 + TCOON = 0x2 + TCPOPT_EOL = 0x0 + TCPOPT_FAST_OPEN = 0x22 + TCPOPT_MAXSEG = 0x2 + TCPOPT_NOP = 0x1 + TCPOPT_PAD = 0x0 + TCPOPT_SACK = 0x5 + TCPOPT_SACK_PERMITTED = 0x4 + TCPOPT_SIGNATURE = 0x13 + TCPOPT_TIMESTAMP = 0x8 + TCPOPT_WINDOW = 0x3 + TCP_BBR_ACK_COMP_ALG = 0x448 + TCP_BBR_ALGORITHM = 0x43b + TCP_BBR_DRAIN_INC_EXTRA = 0x43c + TCP_BBR_DRAIN_PG = 0x42e + TCP_BBR_EXTRA_GAIN = 0x449 + TCP_BBR_EXTRA_STATE = 0x453 + TCP_BBR_FLOOR_MIN_TSO = 0x454 + TCP_BBR_HDWR_PACE = 0x451 + TCP_BBR_HOLD_TARGET = 0x436 + TCP_BBR_IWINTSO = 0x42b + TCP_BBR_LOWGAIN_FD = 0x436 + TCP_BBR_LOWGAIN_HALF = 0x435 + TCP_BBR_LOWGAIN_THRESH = 0x434 + TCP_BBR_MAX_RTO = 0x439 + TCP_BBR_MIN_RTO = 0x438 + TCP_BBR_MIN_TOPACEOUT = 0x455 + TCP_BBR_ONE_RETRAN = 0x431 + TCP_BBR_PACE_CROSS = 0x442 + TCP_BBR_PACE_DEL_TAR = 0x43f + TCP_BBR_PACE_OH = 0x435 + TCP_BBR_PACE_PER_SEC = 0x43e + TCP_BBR_PACE_SEG_MAX = 0x440 + TCP_BBR_PACE_SEG_MIN = 0x441 + TCP_BBR_POLICER_DETECT = 0x457 + TCP_BBR_PROBE_RTT_GAIN = 0x44d + TCP_BBR_PROBE_RTT_INT = 0x430 + TCP_BBR_PROBE_RTT_LEN = 0x44e + TCP_BBR_RACK_INIT_RATE = 0x458 + TCP_BBR_RACK_RTT_USE = 0x44a + TCP_BBR_RECFORCE = 0x42c + TCP_BBR_REC_OVER_HPTS = 0x43a + TCP_BBR_RETRAN_WTSO = 0x44b + TCP_BBR_RWND_IS_APP = 0x42f + TCP_BBR_SEND_IWND_IN_TSO = 0x44f + TCP_BBR_STARTUP_EXIT_EPOCH = 0x43d + TCP_BBR_STARTUP_LOSS_EXIT = 0x432 + TCP_BBR_STARTUP_PG = 0x42d + TCP_BBR_TMR_PACE_OH = 0x448 + TCP_BBR_TSLIMITS = 0x434 + TCP_BBR_TSTMP_RAISES = 0x456 + TCP_BBR_UNLIMITED = 0x43b + TCP_BBR_USEDEL_RATE = 0x437 + TCP_BBR_USE_LOWGAIN = 0x433 + TCP_BBR_USE_RACK_CHEAT = 0x450 + TCP_BBR_USE_RACK_RR = 0x450 + TCP_BBR_UTTER_MAX_TSO = 0x452 + TCP_CA_NAME_MAX = 0x10 + TCP_CCALGOOPT = 0x41 + TCP_CONGESTION = 0x40 + TCP_DATA_AFTER_CLOSE = 0x44c + TCP_DEFER_OPTIONS = 0x470 + TCP_DELACK = 0x48 + TCP_FASTOPEN = 0x401 + TCP_FASTOPEN_MAX_COOKIE_LEN = 0x10 + TCP_FASTOPEN_MIN_COOKIE_LEN = 0x4 + TCP_FASTOPEN_PSK_LEN = 0x10 + TCP_FAST_RSM_HACK = 0x471 + TCP_FIN_IS_RST = 0x49 + TCP_FUNCTION_BLK = 0x2000 + TCP_FUNCTION_NAME_LEN_MAX = 0x20 + TCP_HDWR_RATE_CAP = 0x46a + TCP_HDWR_UP_ONLY = 0x46c + TCP_IDLE_REDUCE = 0x46 + TCP_INFO = 0x20 + TCP_IWND_NB = 0x2b + TCP_IWND_NSEG = 0x2c + TCP_KEEPCNT = 0x400 + TCP_KEEPIDLE = 0x100 + TCP_KEEPINIT = 0x80 + TCP_KEEPINTVL = 0x200 + TCP_LOG = 0x22 + TCP_LOGBUF = 0x23 + TCP_LOGDUMP = 0x25 + TCP_LOGDUMPID = 0x26 + TCP_LOGID = 0x24 + TCP_LOGID_CNT = 0x2e + TCP_LOG_ID_LEN = 0x40 + TCP_LOG_LIMIT = 0x4a + TCP_LOG_TAG = 0x2f + TCP_MAXBURST = 0x4 + TCP_MAXHLEN = 0x3c + TCP_MAXOLEN = 0x28 + TCP_MAXPEAKRATE = 0x45 + TCP_MAXSEG = 0x2 + TCP_MAXUNACKTIME = 0x44 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x4 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x10 + TCP_MINMSS = 0xd8 + TCP_MSS = 0x218 + TCP_NODELAY = 0x1 + TCP_NOOPT = 0x8 + TCP_NOPUSH = 0x4 + TCP_NO_PRR = 0x462 + TCP_PACING_RATE_CAP = 0x46b + TCP_PCAP_IN = 0x1000 + TCP_PCAP_OUT = 0x800 + TCP_PERF_INFO = 0x4e + TCP_PROC_ACCOUNTING = 0x4c + TCP_RACK_ABC_VAL = 0x46d + TCP_RACK_CHEAT_NOT_CONF_RATE = 0x459 + TCP_RACK_DO_DETECTION = 0x449 + TCP_RACK_EARLY_RECOV = 0x423 + TCP_RACK_EARLY_SEG = 0x424 + TCP_RACK_FORCE_MSEG = 0x45d + TCP_RACK_GP_INCREASE = 0x446 + TCP_RACK_GP_INCREASE_CA = 0x45a + TCP_RACK_GP_INCREASE_REC = 0x45c + TCP_RACK_GP_INCREASE_SS = 0x45b + TCP_RACK_IDLE_REDUCE_HIGH = 0x444 + TCP_RACK_MBUF_QUEUE = 0x41a + TCP_RACK_MEASURE_CNT = 0x46f + TCP_RACK_MIN_PACE = 0x445 + TCP_RACK_MIN_PACE_SEG = 0x446 + TCP_RACK_MIN_TO = 0x422 + TCP_RACK_NONRXT_CFG_RATE = 0x463 + TCP_RACK_NO_PUSH_AT_MAX = 0x466 + TCP_RACK_PACE_ALWAYS = 0x41f + TCP_RACK_PACE_MAX_SEG = 0x41e + TCP_RACK_PACE_RATE_CA = 0x45e + TCP_RACK_PACE_RATE_REC = 0x460 + TCP_RACK_PACE_RATE_SS = 0x45f + TCP_RACK_PACE_REDUCE = 0x41d + TCP_RACK_PACE_TO_FILL = 0x467 + TCP_RACK_PACING_BETA = 0x472 + TCP_RACK_PACING_BETA_ECN = 0x473 + TCP_RACK_PKT_DELAY = 0x428 + TCP_RACK_PROFILE = 0x469 + TCP_RACK_PROP = 0x41b + TCP_RACK_PROP_RATE = 0x420 + TCP_RACK_PRR_SENDALOT = 0x421 + TCP_RACK_REORD_FADE = 0x426 + TCP_RACK_REORD_THRESH = 0x425 + TCP_RACK_RR_CONF = 0x459 + TCP_RACK_TIMER_SLOP = 0x474 + TCP_RACK_TLP_INC_VAR = 0x429 + TCP_RACK_TLP_REDUCE = 0x41c + TCP_RACK_TLP_THRESH = 0x427 + TCP_RACK_TLP_USE = 0x447 + TCP_REC_ABC_VAL = 0x46e + TCP_REMOTE_UDP_ENCAPS_PORT = 0x47 + TCP_REUSPORT_LB_NUMA = 0x402 + TCP_REUSPORT_LB_NUMA_CURDOM = -0x1 + TCP_REUSPORT_LB_NUMA_NODOM = -0x2 + TCP_RXTLS_ENABLE = 0x29 + TCP_RXTLS_MODE = 0x2a + TCP_SHARED_CWND_ALLOWED = 0x4b + TCP_SHARED_CWND_ENABLE = 0x464 + TCP_SHARED_CWND_TIME_LIMIT = 0x468 + TCP_STATS = 0x21 + TCP_TIMELY_DYN_ADJ = 0x465 + TCP_TLS_MODE_IFNET = 0x2 + TCP_TLS_MODE_NONE = 0x0 + TCP_TLS_MODE_SW = 0x1 + TCP_TLS_MODE_TOE = 0x3 + TCP_TXTLS_ENABLE = 0x27 + TCP_TXTLS_MODE = 0x28 + TCP_USER_LOG = 0x30 + TCP_USE_CMP_ACKS = 0x4d + TCP_VENDOR = 0x80000000 + TCSAFLUSH = 0x2 + TIMER_ABSTIME = 0x1 + TIMER_RELTIME = 0x0 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLUSH = 0x80047410 + TIOCGDRAINWAIT = 0x40047456 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGPGRP = 0x40047477 + TIOCGPTN = 0x4004740f + TIOCGSID = 0x40047463 + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGDTRWAIT = 0x4004745a + TIOCMGET = 0x4004746a + TIOCMSDTRWAIT = 0x8004745b + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DCD = 0x40 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCPTMASTER = 0x2000741c + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDRAINWAIT = 0x80047457 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSIG = 0x2004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x20007465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSWINSZ = 0x80087467 + TIOCTIMESTAMP = 0x40107459 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + UTIME_NOW = -0x1 + UTIME_OMIT = -0x2 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VERASE2 = 0x7 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WCONTINUED = 0x4 + WCOREFLAG = 0x80 + WEXITED = 0x10 + WLINUXCLONE = 0x80000000 + WNOHANG = 0x1 + WNOWAIT = 0x8 + WSTOPPED = 0x2 + WTRAPPED = 0x20 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADMSG = syscall.Errno(0x59) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x55) + ECAPMODE = syscall.Errno(0x5e) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDOOFUS = syscall.Errno(0x58) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x52) + EILSEQ = syscall.Errno(0x56) + EINPROGRESS = syscall.Errno(0x24) + EINTEGRITY = syscall.Errno(0x61) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x61) + ELOOP = syscall.Errno(0x3e) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + EMULTIHOP = syscall.Errno(0x5a) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x57) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOLINK = syscall.Errno(0x5b) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x53) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCAPABLE = syscall.Errno(0x5d) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTRECOVERABLE = syscall.Errno(0x5f) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x2d) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x54) + EOWNERDEAD = syscall.Errno(0x60) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTO = syscall.Errno(0x5c) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGLIBRT = syscall.Signal(0x21) + SIGLWP = syscall.Signal(0x20) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "device not configured"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EDEADLK", "resource deadlock avoided"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "cross-device link"}, + {19, "ENODEV", "operation not supported by device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "result too large"}, + {35, "EWOULDBLOCK", "resource temporarily unavailable"}, + {36, "EINPROGRESS", "operation now in progress"}, + {37, "EALREADY", "operation already in progress"}, + {38, "ENOTSOCK", "socket operation on non-socket"}, + {39, "EDESTADDRREQ", "destination address required"}, + {40, "EMSGSIZE", "message too long"}, + {41, "EPROTOTYPE", "protocol wrong type for socket"}, + {42, "ENOPROTOOPT", "protocol not available"}, + {43, "EPROTONOSUPPORT", "protocol not supported"}, + {44, "ESOCKTNOSUPPORT", "socket type not supported"}, + {45, "EOPNOTSUPP", "operation not supported"}, + {46, "EPFNOSUPPORT", "protocol family not supported"}, + {47, "EAFNOSUPPORT", "address family not supported by protocol family"}, + {48, "EADDRINUSE", "address already in use"}, + {49, "EADDRNOTAVAIL", "can't assign requested address"}, + {50, "ENETDOWN", "network is down"}, + {51, "ENETUNREACH", "network is unreachable"}, + {52, "ENETRESET", "network dropped connection on reset"}, + {53, "ECONNABORTED", "software caused connection abort"}, + {54, "ECONNRESET", "connection reset by peer"}, + {55, "ENOBUFS", "no buffer space available"}, + {56, "EISCONN", "socket is already connected"}, + {57, "ENOTCONN", "socket is not connected"}, + {58, "ESHUTDOWN", "can't send after socket shutdown"}, + {59, "ETOOMANYREFS", "too many references: can't splice"}, + {60, "ETIMEDOUT", "operation timed out"}, + {61, "ECONNREFUSED", "connection refused"}, + {62, "ELOOP", "too many levels of symbolic links"}, + {63, "ENAMETOOLONG", "file name too long"}, + {64, "EHOSTDOWN", "host is down"}, + {65, "EHOSTUNREACH", "no route to host"}, + {66, "ENOTEMPTY", "directory not empty"}, + {67, "EPROCLIM", "too many processes"}, + {68, "EUSERS", "too many users"}, + {69, "EDQUOT", "disc quota exceeded"}, + {70, "ESTALE", "stale NFS file handle"}, + {71, "EREMOTE", "too many levels of remote in path"}, + {72, "EBADRPC", "RPC struct is bad"}, + {73, "ERPCMISMATCH", "RPC version wrong"}, + {74, "EPROGUNAVAIL", "RPC prog. not avail"}, + {75, "EPROGMISMATCH", "program version wrong"}, + {76, "EPROCUNAVAIL", "bad procedure for program"}, + {77, "ENOLCK", "no locks available"}, + {78, "ENOSYS", "function not implemented"}, + {79, "EFTYPE", "inappropriate file type or format"}, + {80, "EAUTH", "authentication error"}, + {81, "ENEEDAUTH", "need authenticator"}, + {82, "EIDRM", "identifier removed"}, + {83, "ENOMSG", "no message of desired type"}, + {84, "EOVERFLOW", "value too large to be stored in data type"}, + {85, "ECANCELED", "operation canceled"}, + {86, "EILSEQ", "illegal byte sequence"}, + {87, "ENOATTR", "attribute not found"}, + {88, "EDOOFUS", "programming error"}, + {89, "EBADMSG", "bad message"}, + {90, "EMULTIHOP", "multihop attempted"}, + {91, "ENOLINK", "link has been severed"}, + {92, "EPROTO", "protocol error"}, + {93, "ENOTCAPABLE", "capabilities insufficient"}, + {94, "ECAPMODE", "not permitted in capability mode"}, + {95, "ENOTRECOVERABLE", "state not recoverable"}, + {96, "EOWNERDEAD", "previous owner died"}, + {97, "EINTEGRITY", "integrity check failed"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/BPT trap"}, + {6, "SIGIOT", "abort trap"}, + {7, "SIGEMT", "EMT trap"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGBUS", "bus error"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGSYS", "bad system call"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGURG", "urgent I/O condition"}, + {17, "SIGSTOP", "suspended (signal)"}, + {18, "SIGTSTP", "suspended"}, + {19, "SIGCONT", "continued"}, + {20, "SIGCHLD", "child exited"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGIO", "I/O possible"}, + {24, "SIGXCPU", "cputime limit exceeded"}, + {25, "SIGXFSZ", "filesize limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window size changes"}, + {29, "SIGINFO", "information request"}, + {30, "SIGUSR1", "user defined signal 1"}, + {31, "SIGUSR2", "user defined signal 2"}, + {32, "SIGTHR", "unknown signal"}, + {33, "SIGLIBRT", "unknown signal"}, +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux.go index 3de79fa2576..785d693eb32 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux.go @@ -140,6 +140,306 @@ const ( ARPHRD_VOID = 0xffff ARPHRD_VSOCKMON = 0x33a ARPHRD_X25 = 0x10f + AUDIT_ADD = 0x3eb + AUDIT_ADD_RULE = 0x3f3 + AUDIT_ALWAYS = 0x2 + AUDIT_ANOM_ABEND = 0x6a5 + AUDIT_ANOM_CREAT = 0x6a7 + AUDIT_ANOM_LINK = 0x6a6 + AUDIT_ANOM_PROMISCUOUS = 0x6a4 + AUDIT_ARCH = 0xb + AUDIT_ARCH_AARCH64 = 0xc00000b7 + AUDIT_ARCH_ALPHA = 0xc0009026 + AUDIT_ARCH_ARCOMPACT = 0x4000005d + AUDIT_ARCH_ARCOMPACTBE = 0x5d + AUDIT_ARCH_ARCV2 = 0x400000c3 + AUDIT_ARCH_ARCV2BE = 0xc3 + AUDIT_ARCH_ARM = 0x40000028 + AUDIT_ARCH_ARMEB = 0x28 + AUDIT_ARCH_C6X = 0x4000008c + AUDIT_ARCH_C6XBE = 0x8c + AUDIT_ARCH_CRIS = 0x4000004c + AUDIT_ARCH_CSKY = 0x400000fc + AUDIT_ARCH_FRV = 0x5441 + AUDIT_ARCH_H8300 = 0x2e + AUDIT_ARCH_HEXAGON = 0xa4 + AUDIT_ARCH_I386 = 0x40000003 + AUDIT_ARCH_IA64 = 0xc0000032 + AUDIT_ARCH_LOONGARCH32 = 0x40000102 + AUDIT_ARCH_LOONGARCH64 = 0xc0000102 + AUDIT_ARCH_M32R = 0x58 + AUDIT_ARCH_M68K = 0x4 + AUDIT_ARCH_MICROBLAZE = 0xbd + AUDIT_ARCH_MIPS = 0x8 + AUDIT_ARCH_MIPS64 = 0x80000008 + AUDIT_ARCH_MIPS64N32 = 0xa0000008 + AUDIT_ARCH_MIPSEL = 0x40000008 + AUDIT_ARCH_MIPSEL64 = 0xc0000008 + AUDIT_ARCH_MIPSEL64N32 = 0xe0000008 + AUDIT_ARCH_NDS32 = 0x400000a7 + AUDIT_ARCH_NDS32BE = 0xa7 + AUDIT_ARCH_NIOS2 = 0x40000071 + AUDIT_ARCH_OPENRISC = 0x5c + AUDIT_ARCH_PARISC = 0xf + AUDIT_ARCH_PARISC64 = 0x8000000f + AUDIT_ARCH_PPC = 0x14 + AUDIT_ARCH_PPC64 = 0x80000015 + AUDIT_ARCH_PPC64LE = 0xc0000015 + AUDIT_ARCH_RISCV32 = 0x400000f3 + AUDIT_ARCH_RISCV64 = 0xc00000f3 + AUDIT_ARCH_S390 = 0x16 + AUDIT_ARCH_S390X = 0x80000016 + AUDIT_ARCH_SH = 0x2a + AUDIT_ARCH_SH64 = 0x8000002a + AUDIT_ARCH_SHEL = 0x4000002a + AUDIT_ARCH_SHEL64 = 0xc000002a + AUDIT_ARCH_SPARC = 0x2 + AUDIT_ARCH_SPARC64 = 0x8000002b + AUDIT_ARCH_TILEGX = 0xc00000bf + AUDIT_ARCH_TILEGX32 = 0x400000bf + AUDIT_ARCH_TILEPRO = 0x400000bc + AUDIT_ARCH_UNICORE = 0x4000006e + AUDIT_ARCH_X86_64 = 0xc000003e + AUDIT_ARCH_XTENSA = 0x5e + AUDIT_ARG0 = 0xc8 + AUDIT_ARG1 = 0xc9 + AUDIT_ARG2 = 0xca + AUDIT_ARG3 = 0xcb + AUDIT_AVC = 0x578 + AUDIT_AVC_PATH = 0x57a + AUDIT_BITMASK_SIZE = 0x40 + AUDIT_BIT_MASK = 0x8000000 + AUDIT_BIT_TEST = 0x48000000 + AUDIT_BPF = 0x536 + AUDIT_BPRM_FCAPS = 0x529 + AUDIT_CAPSET = 0x52a + AUDIT_CLASS_CHATTR = 0x2 + AUDIT_CLASS_CHATTR_32 = 0x3 + AUDIT_CLASS_DIR_WRITE = 0x0 + AUDIT_CLASS_DIR_WRITE_32 = 0x1 + AUDIT_CLASS_READ = 0x4 + AUDIT_CLASS_READ_32 = 0x5 + AUDIT_CLASS_SIGNAL = 0x8 + AUDIT_CLASS_SIGNAL_32 = 0x9 + AUDIT_CLASS_WRITE = 0x6 + AUDIT_CLASS_WRITE_32 = 0x7 + AUDIT_COMPARE_AUID_TO_EUID = 0x10 + AUDIT_COMPARE_AUID_TO_FSUID = 0xe + AUDIT_COMPARE_AUID_TO_OBJ_UID = 0x5 + AUDIT_COMPARE_AUID_TO_SUID = 0xf + AUDIT_COMPARE_EGID_TO_FSGID = 0x17 + AUDIT_COMPARE_EGID_TO_OBJ_GID = 0x4 + AUDIT_COMPARE_EGID_TO_SGID = 0x18 + AUDIT_COMPARE_EUID_TO_FSUID = 0x12 + AUDIT_COMPARE_EUID_TO_OBJ_UID = 0x3 + AUDIT_COMPARE_EUID_TO_SUID = 0x11 + AUDIT_COMPARE_FSGID_TO_OBJ_GID = 0x9 + AUDIT_COMPARE_FSUID_TO_OBJ_UID = 0x8 + AUDIT_COMPARE_GID_TO_EGID = 0x14 + AUDIT_COMPARE_GID_TO_FSGID = 0x15 + AUDIT_COMPARE_GID_TO_OBJ_GID = 0x2 + AUDIT_COMPARE_GID_TO_SGID = 0x16 + AUDIT_COMPARE_SGID_TO_FSGID = 0x19 + AUDIT_COMPARE_SGID_TO_OBJ_GID = 0x7 + AUDIT_COMPARE_SUID_TO_FSUID = 0x13 + AUDIT_COMPARE_SUID_TO_OBJ_UID = 0x6 + AUDIT_COMPARE_UID_TO_AUID = 0xa + AUDIT_COMPARE_UID_TO_EUID = 0xb + AUDIT_COMPARE_UID_TO_FSUID = 0xc + AUDIT_COMPARE_UID_TO_OBJ_UID = 0x1 + AUDIT_COMPARE_UID_TO_SUID = 0xd + AUDIT_CONFIG_CHANGE = 0x519 + AUDIT_CWD = 0x51b + AUDIT_DAEMON_ABORT = 0x4b2 + AUDIT_DAEMON_CONFIG = 0x4b3 + AUDIT_DAEMON_END = 0x4b1 + AUDIT_DAEMON_START = 0x4b0 + AUDIT_DEL = 0x3ec + AUDIT_DEL_RULE = 0x3f4 + AUDIT_DEVMAJOR = 0x64 + AUDIT_DEVMINOR = 0x65 + AUDIT_DIR = 0x6b + AUDIT_DM_CTRL = 0x53a + AUDIT_DM_EVENT = 0x53b + AUDIT_EGID = 0x6 + AUDIT_EOE = 0x528 + AUDIT_EQUAL = 0x40000000 + AUDIT_EUID = 0x2 + AUDIT_EVENT_LISTENER = 0x537 + AUDIT_EXE = 0x70 + AUDIT_EXECVE = 0x51d + AUDIT_EXIT = 0x67 + AUDIT_FAIL_PANIC = 0x2 + AUDIT_FAIL_PRINTK = 0x1 + AUDIT_FAIL_SILENT = 0x0 + AUDIT_FANOTIFY = 0x533 + AUDIT_FD_PAIR = 0x525 + AUDIT_FEATURE_BITMAP_ALL = 0x7f + AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT = 0x1 + AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME = 0x2 + AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND = 0x8 + AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH = 0x4 + AUDIT_FEATURE_BITMAP_FILTER_FS = 0x40 + AUDIT_FEATURE_BITMAP_LOST_RESET = 0x20 + AUDIT_FEATURE_BITMAP_SESSIONID_FILTER = 0x10 + AUDIT_FEATURE_CHANGE = 0x530 + AUDIT_FEATURE_LOGINUID_IMMUTABLE = 0x1 + AUDIT_FEATURE_ONLY_UNSET_LOGINUID = 0x0 + AUDIT_FEATURE_VERSION = 0x1 + AUDIT_FIELD_COMPARE = 0x6f + AUDIT_FILETYPE = 0x6c + AUDIT_FILTERKEY = 0xd2 + AUDIT_FILTER_ENTRY = 0x2 + AUDIT_FILTER_EXCLUDE = 0x5 + AUDIT_FILTER_EXIT = 0x4 + AUDIT_FILTER_FS = 0x6 + AUDIT_FILTER_PREPEND = 0x10 + AUDIT_FILTER_TASK = 0x1 + AUDIT_FILTER_TYPE = 0x5 + AUDIT_FILTER_URING_EXIT = 0x7 + AUDIT_FILTER_USER = 0x0 + AUDIT_FILTER_WATCH = 0x3 + AUDIT_FIRST_KERN_ANOM_MSG = 0x6a4 + AUDIT_FIRST_USER_MSG = 0x44c + AUDIT_FIRST_USER_MSG2 = 0x834 + AUDIT_FSGID = 0x8 + AUDIT_FSTYPE = 0x1a + AUDIT_FSUID = 0x4 + AUDIT_GET = 0x3e8 + AUDIT_GET_FEATURE = 0x3fb + AUDIT_GID = 0x5 + AUDIT_GREATER_THAN = 0x20000000 + AUDIT_GREATER_THAN_OR_EQUAL = 0x60000000 + AUDIT_INODE = 0x66 + AUDIT_INTEGRITY_DATA = 0x708 + AUDIT_INTEGRITY_EVM_XATTR = 0x70e + AUDIT_INTEGRITY_HASH = 0x70b + AUDIT_INTEGRITY_METADATA = 0x709 + AUDIT_INTEGRITY_PCR = 0x70c + AUDIT_INTEGRITY_POLICY_RULE = 0x70f + AUDIT_INTEGRITY_RULE = 0x70d + AUDIT_INTEGRITY_STATUS = 0x70a + AUDIT_IPC = 0x517 + AUDIT_IPC_SET_PERM = 0x51f + AUDIT_KERNEL = 0x7d0 + AUDIT_KERNEL_OTHER = 0x524 + AUDIT_KERN_MODULE = 0x532 + AUDIT_LAST_FEATURE = 0x1 + AUDIT_LAST_KERN_ANOM_MSG = 0x707 + AUDIT_LAST_USER_MSG = 0x4af + AUDIT_LAST_USER_MSG2 = 0xbb7 + AUDIT_LESS_THAN = 0x10000000 + AUDIT_LESS_THAN_OR_EQUAL = 0x50000000 + AUDIT_LIST = 0x3ea + AUDIT_LIST_RULES = 0x3f5 + AUDIT_LOGIN = 0x3ee + AUDIT_LOGINUID = 0x9 + AUDIT_LOGINUID_SET = 0x18 + AUDIT_MAC_CALIPSO_ADD = 0x58a + AUDIT_MAC_CALIPSO_DEL = 0x58b + AUDIT_MAC_CIPSOV4_ADD = 0x57f + AUDIT_MAC_CIPSOV4_DEL = 0x580 + AUDIT_MAC_CONFIG_CHANGE = 0x57d + AUDIT_MAC_IPSEC_ADDSA = 0x583 + AUDIT_MAC_IPSEC_ADDSPD = 0x585 + AUDIT_MAC_IPSEC_DELSA = 0x584 + AUDIT_MAC_IPSEC_DELSPD = 0x586 + AUDIT_MAC_IPSEC_EVENT = 0x587 + AUDIT_MAC_MAP_ADD = 0x581 + AUDIT_MAC_MAP_DEL = 0x582 + AUDIT_MAC_POLICY_LOAD = 0x57b + AUDIT_MAC_STATUS = 0x57c + AUDIT_MAC_UNLBL_ALLOW = 0x57e + AUDIT_MAC_UNLBL_STCADD = 0x588 + AUDIT_MAC_UNLBL_STCDEL = 0x589 + AUDIT_MAKE_EQUIV = 0x3f7 + AUDIT_MAX_FIELDS = 0x40 + AUDIT_MAX_FIELD_COMPARE = 0x19 + AUDIT_MAX_KEY_LEN = 0x100 + AUDIT_MESSAGE_TEXT_MAX = 0x2170 + AUDIT_MMAP = 0x52b + AUDIT_MQ_GETSETATTR = 0x523 + AUDIT_MQ_NOTIFY = 0x522 + AUDIT_MQ_OPEN = 0x520 + AUDIT_MQ_SENDRECV = 0x521 + AUDIT_MSGTYPE = 0xc + AUDIT_NEGATE = 0x80000000 + AUDIT_NETFILTER_CFG = 0x52d + AUDIT_NETFILTER_PKT = 0x52c + AUDIT_NEVER = 0x0 + AUDIT_NLGRP_MAX = 0x1 + AUDIT_NOT_EQUAL = 0x30000000 + AUDIT_NR_FILTERS = 0x8 + AUDIT_OBJ_GID = 0x6e + AUDIT_OBJ_LEV_HIGH = 0x17 + AUDIT_OBJ_LEV_LOW = 0x16 + AUDIT_OBJ_PID = 0x526 + AUDIT_OBJ_ROLE = 0x14 + AUDIT_OBJ_TYPE = 0x15 + AUDIT_OBJ_UID = 0x6d + AUDIT_OBJ_USER = 0x13 + AUDIT_OPENAT2 = 0x539 + AUDIT_OPERATORS = 0x78000000 + AUDIT_PATH = 0x516 + AUDIT_PERM = 0x6a + AUDIT_PERM_ATTR = 0x8 + AUDIT_PERM_EXEC = 0x1 + AUDIT_PERM_READ = 0x4 + AUDIT_PERM_WRITE = 0x2 + AUDIT_PERS = 0xa + AUDIT_PID = 0x0 + AUDIT_POSSIBLE = 0x1 + AUDIT_PPID = 0x12 + AUDIT_PROCTITLE = 0x52f + AUDIT_REPLACE = 0x531 + AUDIT_SADDR_FAM = 0x71 + AUDIT_SECCOMP = 0x52e + AUDIT_SELINUX_ERR = 0x579 + AUDIT_SESSIONID = 0x19 + AUDIT_SET = 0x3e9 + AUDIT_SET_FEATURE = 0x3fa + AUDIT_SGID = 0x7 + AUDIT_SID_UNSET = 0xffffffff + AUDIT_SIGNAL_INFO = 0x3f2 + AUDIT_SOCKADDR = 0x51a + AUDIT_SOCKETCALL = 0x518 + AUDIT_STATUS_BACKLOG_LIMIT = 0x10 + AUDIT_STATUS_BACKLOG_WAIT_TIME = 0x20 + AUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL = 0x80 + AUDIT_STATUS_ENABLED = 0x1 + AUDIT_STATUS_FAILURE = 0x2 + AUDIT_STATUS_LOST = 0x40 + AUDIT_STATUS_PID = 0x4 + AUDIT_STATUS_RATE_LIMIT = 0x8 + AUDIT_SUBJ_CLR = 0x11 + AUDIT_SUBJ_ROLE = 0xe + AUDIT_SUBJ_SEN = 0x10 + AUDIT_SUBJ_TYPE = 0xf + AUDIT_SUBJ_USER = 0xd + AUDIT_SUCCESS = 0x68 + AUDIT_SUID = 0x3 + AUDIT_SYSCALL = 0x514 + AUDIT_SYSCALL_CLASSES = 0x10 + AUDIT_TIME_ADJNTPVAL = 0x535 + AUDIT_TIME_INJOFFSET = 0x534 + AUDIT_TRIM = 0x3f6 + AUDIT_TTY = 0x527 + AUDIT_TTY_GET = 0x3f8 + AUDIT_TTY_SET = 0x3f9 + AUDIT_UID = 0x1 + AUDIT_UID_UNSET = 0xffffffff + AUDIT_UNUSED_BITS = 0x7fffc00 + AUDIT_URINGOP = 0x538 + AUDIT_USER = 0x3ed + AUDIT_USER_AVC = 0x453 + AUDIT_USER_TTY = 0x464 + AUDIT_VERSION_BACKLOG_LIMIT = 0x1 + AUDIT_VERSION_BACKLOG_WAIT_TIME = 0x2 + AUDIT_VERSION_LATEST = 0x7f + AUDIT_WATCH = 0x69 + AUDIT_WATCH_INS = 0x3ef + AUDIT_WATCH_LIST = 0x3f1 + AUDIT_WATCH_REM = 0x3f0 AUTOFS_SUPER_MAGIC = 0x187 B0 = 0x0 B110 = 0x3 @@ -184,6 +484,7 @@ const ( BPF_F_ALLOW_MULTI = 0x2 BPF_F_ALLOW_OVERRIDE = 0x1 BPF_F_ANY_ALIGNMENT = 0x2 + BPF_F_KPROBE_MULTI_RETURN = 0x1 BPF_F_QUERY_EFFECTIVE = 0x1 BPF_F_REPLACE = 0x4 BPF_F_SLEEPABLE = 0x10 @@ -191,6 +492,8 @@ const ( BPF_F_TEST_RND_HI32 = 0x4 BPF_F_TEST_RUN_ON_CPU = 0x1 BPF_F_TEST_STATE_FREQ = 0x8 + BPF_F_TEST_XDP_LIVE_FRAMES = 0x2 + BPF_F_XDP_HAS_FRAGS = 0x20 BPF_H = 0x8 BPF_IMM = 0x0 BPF_IND = 0x40 @@ -517,9 +820,9 @@ const ( DM_UUID_FLAG = 0x4000 DM_UUID_LEN = 0x81 DM_VERSION = 0xc138fd00 - DM_VERSION_EXTRA = "-ioctl (2021-03-22)" + DM_VERSION_EXTRA = "-ioctl (2022-02-22)" DM_VERSION_MAJOR = 0x4 - DM_VERSION_MINOR = 0x2d + DM_VERSION_MINOR = 0x2e DM_VERSION_PATCHLEVEL = 0x0 DT_BLK = 0x6 DT_CHR = 0x2 @@ -535,6 +838,55 @@ const ( EFD_SEMAPHORE = 0x1 EFIVARFS_MAGIC = 0xde5e81e4 EFS_SUPER_MAGIC = 0x414a53 + EM_386 = 0x3 + EM_486 = 0x6 + EM_68K = 0x4 + EM_860 = 0x7 + EM_88K = 0x5 + EM_AARCH64 = 0xb7 + EM_ALPHA = 0x9026 + EM_ALTERA_NIOS2 = 0x71 + EM_ARCOMPACT = 0x5d + EM_ARCV2 = 0xc3 + EM_ARM = 0x28 + EM_BLACKFIN = 0x6a + EM_BPF = 0xf7 + EM_CRIS = 0x4c + EM_CSKY = 0xfc + EM_CYGNUS_M32R = 0x9041 + EM_CYGNUS_MN10300 = 0xbeef + EM_FRV = 0x5441 + EM_H8_300 = 0x2e + EM_HEXAGON = 0xa4 + EM_IA_64 = 0x32 + EM_LOONGARCH = 0x102 + EM_M32 = 0x1 + EM_M32R = 0x58 + EM_MICROBLAZE = 0xbd + EM_MIPS = 0x8 + EM_MIPS_RS3_LE = 0xa + EM_MIPS_RS4_BE = 0xa + EM_MN10300 = 0x59 + EM_NDS32 = 0xa7 + EM_NONE = 0x0 + EM_OPENRISC = 0x5c + EM_PARISC = 0xf + EM_PPC = 0x14 + EM_PPC64 = 0x15 + EM_RISCV = 0xf3 + EM_S390 = 0x16 + EM_S390_OLD = 0xa390 + EM_SH = 0x2a + EM_SPARC = 0x2 + EM_SPARC32PLUS = 0x12 + EM_SPARCV9 = 0x2b + EM_SPU = 0x17 + EM_TILEGX = 0xbf + EM_TILEPRO = 0xbc + EM_TI_C6000 = 0x8c + EM_UNICORE = 0x6e + EM_X86_64 = 0x3e + EM_XTENSA = 0x5e ENCODING_DEFAULT = 0x0 ENCODING_FM_MARK = 0x3 ENCODING_FM_SPACE = 0x4 @@ -712,6 +1064,7 @@ const ( ETH_P_EDSA = 0xdada ETH_P_ERSPAN = 0x88be ETH_P_ERSPAN2 = 0x22eb + ETH_P_ETHERCAT = 0x88a4 ETH_P_FCOE = 0x8906 ETH_P_FIP = 0x8914 ETH_P_HDLC = 0x19 @@ -749,6 +1102,7 @@ const ( ETH_P_PPP_MP = 0x8 ETH_P_PPP_SES = 0x8864 ETH_P_PREAUTH = 0x88c7 + ETH_P_PROFINET = 0x8892 ETH_P_PRP = 0x88fb ETH_P_PUP = 0x200 ETH_P_PUPAT = 0x201 @@ -837,6 +1191,7 @@ const ( FAN_FS_ERROR = 0x8000 FAN_MARK_ADD = 0x1 FAN_MARK_DONT_FOLLOW = 0x4 + FAN_MARK_EVICTABLE = 0x200 FAN_MARK_FILESYSTEM = 0x100 FAN_MARK_FLUSH = 0x80 FAN_MARK_IGNORED_MASK = 0x20 @@ -1055,7 +1410,7 @@ const ( IFA_F_STABLE_PRIVACY = 0x800 IFA_F_TEMPORARY = 0x1 IFA_F_TENTATIVE = 0x40 - IFA_MAX = 0xa + IFA_MAX = 0xb IFF_ALLMULTI = 0x200 IFF_ATTACH_QUEUE = 0x200 IFF_AUTOMEDIA = 0x4000 @@ -1310,6 +1665,7 @@ const ( KEXEC_ARCH_ARM = 0x280000 KEXEC_ARCH_DEFAULT = 0x0 KEXEC_ARCH_IA_64 = 0x320000 + KEXEC_ARCH_LOONGARCH = 0x1020000 KEXEC_ARCH_MASK = 0xffff0000 KEXEC_ARCH_MIPS = 0x80000 KEXEC_ARCH_MIPS_LE = 0xa0000 @@ -1402,6 +1758,7 @@ const ( LANDLOCK_ACCESS_FS_MAKE_SYM = 0x1000 LANDLOCK_ACCESS_FS_READ_DIR = 0x8 LANDLOCK_ACCESS_FS_READ_FILE = 0x4 + LANDLOCK_ACCESS_FS_REFER = 0x2000 LANDLOCK_ACCESS_FS_REMOVE_DIR = 0x10 LANDLOCK_ACCESS_FS_REMOVE_FILE = 0x20 LANDLOCK_ACCESS_FS_WRITE_FILE = 0x2 @@ -1757,6 +2114,7 @@ const ( NLM_F_ACK_TLVS = 0x200 NLM_F_APPEND = 0x800 NLM_F_ATOMIC = 0x400 + NLM_F_BULK = 0x200 NLM_F_CAPPED = 0x100 NLM_F_CREATE = 0x400 NLM_F_DUMP = 0x300 @@ -2074,6 +2432,11 @@ const ( PR_SET_UNALIGN = 0x6 PR_SET_VMA = 0x53564d41 PR_SET_VMA_ANON_NAME = 0x0 + PR_SME_GET_VL = 0x40 + PR_SME_SET_VL = 0x3f + PR_SME_SET_VL_ONEXEC = 0x40000 + PR_SME_VL_INHERIT = 0x20000 + PR_SME_VL_LEN_MASK = 0xffff PR_SPEC_DISABLE = 0x4 PR_SPEC_DISABLE_NOEXEC = 0x10 PR_SPEC_ENABLE = 0x2 @@ -2226,8 +2589,9 @@ const ( RTC_FEATURE_ALARM = 0x0 RTC_FEATURE_ALARM_RES_2S = 0x3 RTC_FEATURE_ALARM_RES_MINUTE = 0x1 + RTC_FEATURE_ALARM_WAKEUP_ONLY = 0x7 RTC_FEATURE_BACKUP_SWITCH_MODE = 0x6 - RTC_FEATURE_CNT = 0x7 + RTC_FEATURE_CNT = 0x8 RTC_FEATURE_CORRECTION = 0x5 RTC_FEATURE_NEED_WEEK_DAY = 0x2 RTC_FEATURE_UPDATE_INTERRUPT = 0x4 @@ -2301,6 +2665,7 @@ const ( RTM_DELRULE = 0x21 RTM_DELTCLASS = 0x29 RTM_DELTFILTER = 0x2d + RTM_DELTUNNEL = 0x79 RTM_DELVLAN = 0x71 RTM_F_CLONED = 0x200 RTM_F_EQUALIZE = 0x400 @@ -2333,8 +2698,9 @@ const ( RTM_GETSTATS = 0x5e RTM_GETTCLASS = 0x2a RTM_GETTFILTER = 0x2e + RTM_GETTUNNEL = 0x7a RTM_GETVLAN = 0x72 - RTM_MAX = 0x77 + RTM_MAX = 0x7b RTM_NEWACTION = 0x30 RTM_NEWADDR = 0x14 RTM_NEWADDRLABEL = 0x48 @@ -2358,11 +2724,13 @@ const ( RTM_NEWSTATS = 0x5c RTM_NEWTCLASS = 0x28 RTM_NEWTFILTER = 0x2c - RTM_NR_FAMILIES = 0x1a - RTM_NR_MSGTYPES = 0x68 + RTM_NEWTUNNEL = 0x78 + RTM_NR_FAMILIES = 0x1b + RTM_NR_MSGTYPES = 0x6c RTM_SETDCB = 0x4f RTM_SETLINK = 0x13 RTM_SETNEIGHTBL = 0x43 + RTM_SETSTATS = 0x5f RTNH_ALIGNTO = 0x4 RTNH_COMPARE_MASK = 0x59 RTNH_F_DEAD = 0x1 @@ -2543,6 +2911,9 @@ const ( SOCK_RDM = 0x4 SOCK_SEQPACKET = 0x5 SOCK_SNDBUF_LOCK = 0x1 + SOCK_TXREHASH_DEFAULT = 0xff + SOCK_TXREHASH_DISABLED = 0x0 + SOCK_TXREHASH_ENABLED = 0x1 SOL_AAL = 0x109 SOL_ALG = 0x117 SOL_ATM = 0x108 @@ -2558,6 +2929,8 @@ const ( SOL_IUCV = 0x115 SOL_KCM = 0x119 SOL_LLC = 0x10c + SOL_MCTP = 0x11d + SOL_MPTCP = 0x11c SOL_NETBEUI = 0x10b SOL_NETLINK = 0x10e SOL_NFC = 0x118 @@ -2567,6 +2940,7 @@ const ( SOL_RAW = 0xff SOL_RDS = 0x114 SOL_RXRPC = 0x110 + SOL_SMC = 0x11e SOL_TCP = 0x6 SOL_TIPC = 0x10f SOL_TLS = 0x11a @@ -2673,7 +3047,7 @@ const ( TASKSTATS_GENL_NAME = "TASKSTATS" TASKSTATS_GENL_VERSION = 0x1 TASKSTATS_TYPE_MAX = 0x6 - TASKSTATS_VERSION = 0xb + TASKSTATS_VERSION = 0xd TCIFLUSH = 0x0 TCIOFF = 0x2 TCIOFLUSH = 0x2 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_386.go index 234fd4a5d1a..274e2dabdfe 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_386.go @@ -5,7 +5,7 @@ // +build 386,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -350,6 +351,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go index 58619b7589b..95b6eeedfec 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go @@ -5,7 +5,7 @@ // +build amd64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 _const.go package unix @@ -327,6 +327,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go index 3a64ff59dce..918cd130ec8 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go @@ -5,7 +5,7 @@ // +build arm,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -333,6 +333,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -357,6 +358,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go index abe0b925789..3907dc5a90e 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go @@ -5,7 +5,7 @@ // +build arm64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go package unix @@ -323,6 +323,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -347,6 +348,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 @@ -511,6 +513,7 @@ const ( WORDSIZE = 0x40 XCASE = 0x4 XTABS = 0x1800 + ZA_MAGIC = 0x54366345 _HIDIOCGRAWNAME = 0x80804804 _HIDIOCGRAWPHYS = 0x80404805 _HIDIOCGRAWUNIQ = 0x80404808 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go new file mode 100644 index 00000000000..03d5c105a38 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go @@ -0,0 +1,818 @@ +// mkerrors.sh -Wall -Werror -static -I/tmp/include +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux +// +build loong64,linux + +// Code generated by cmd/cgo -godefs; DO NOT EDIT. +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go + +package unix + +import "syscall" + +const ( + B1000000 = 0x1008 + B115200 = 0x1002 + B1152000 = 0x1009 + B1500000 = 0x100a + B2000000 = 0x100b + B230400 = 0x1003 + B2500000 = 0x100c + B3000000 = 0x100d + B3500000 = 0x100e + B4000000 = 0x100f + B460800 = 0x1004 + B500000 = 0x1005 + B57600 = 0x1001 + B576000 = 0x1006 + B921600 = 0x1007 + BLKBSZGET = 0x80081270 + BLKBSZSET = 0x40081271 + BLKFLSBUF = 0x1261 + BLKFRAGET = 0x1265 + BLKFRASET = 0x1264 + BLKGETSIZE = 0x1260 + BLKGETSIZE64 = 0x80081272 + BLKPBSZGET = 0x127b + BLKRAGET = 0x1263 + BLKRASET = 0x1262 + BLKROGET = 0x125e + BLKROSET = 0x125d + BLKRRPART = 0x125f + BLKSECTGET = 0x1267 + BLKSECTSET = 0x1266 + BLKSSZGET = 0x1268 + BOTHER = 0x1000 + BS1 = 0x2000 + BSDLY = 0x2000 + CBAUD = 0x100f + CBAUDEX = 0x1000 + CIBAUD = 0x100f0000 + CLOCAL = 0x800 + CR1 = 0x200 + CR2 = 0x400 + CR3 = 0x600 + CRDLY = 0x600 + CREAD = 0x80 + CS6 = 0x10 + CS7 = 0x20 + CS8 = 0x30 + CSIZE = 0x30 + CSTOPB = 0x40 + ECCGETLAYOUT = 0x81484d11 + ECCGETSTATS = 0x80104d12 + ECHOCTL = 0x200 + ECHOE = 0x10 + ECHOK = 0x20 + ECHOKE = 0x800 + ECHONL = 0x40 + ECHOPRT = 0x400 + EFD_CLOEXEC = 0x80000 + EFD_NONBLOCK = 0x800 + EPOLL_CLOEXEC = 0x80000 + EXTPROC = 0x10000 + FF1 = 0x8000 + FFDLY = 0x8000 + FICLONE = 0x40049409 + FICLONERANGE = 0x4020940d + FLUSHO = 0x1000 + FPU_CTX_MAGIC = 0x46505501 + FS_IOC_ENABLE_VERITY = 0x40806685 + FS_IOC_GETFLAGS = 0x80086601 + FS_IOC_GET_ENCRYPTION_NONCE = 0x8010661b + FS_IOC_GET_ENCRYPTION_POLICY = 0x400c6615 + FS_IOC_GET_ENCRYPTION_PWSALT = 0x40106614 + FS_IOC_SETFLAGS = 0x40086602 + FS_IOC_SET_ENCRYPTION_POLICY = 0x800c6613 + F_GETLK = 0x5 + F_GETLK64 = 0x5 + F_GETOWN = 0x9 + F_RDLCK = 0x0 + F_SETLK = 0x6 + F_SETLK64 = 0x6 + F_SETLKW = 0x7 + F_SETLKW64 = 0x7 + F_SETOWN = 0x8 + F_UNLCK = 0x2 + F_WRLCK = 0x1 + HIDIOCGRAWINFO = 0x80084803 + HIDIOCGRDESC = 0x90044802 + HIDIOCGRDESCSIZE = 0x80044801 + HUPCL = 0x400 + ICANON = 0x2 + IEXTEN = 0x8000 + IN_CLOEXEC = 0x80000 + IN_NONBLOCK = 0x800 + IOCTL_VM_SOCKETS_GET_LOCAL_CID = 0x7b9 + ISIG = 0x1 + IUCLC = 0x200 + IXOFF = 0x1000 + IXON = 0x400 + MAP_ANON = 0x20 + MAP_ANONYMOUS = 0x20 + MAP_DENYWRITE = 0x800 + MAP_EXECUTABLE = 0x1000 + MAP_GROWSDOWN = 0x100 + MAP_HUGETLB = 0x40000 + MAP_LOCKED = 0x2000 + MAP_NONBLOCK = 0x10000 + MAP_NORESERVE = 0x4000 + MAP_POPULATE = 0x8000 + MAP_STACK = 0x20000 + MAP_SYNC = 0x80000 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MCL_ONFAULT = 0x4 + MEMERASE = 0x40084d02 + MEMERASE64 = 0x40104d14 + MEMGETBADBLOCK = 0x40084d0b + MEMGETINFO = 0x80204d01 + MEMGETOOBSEL = 0x80c84d0a + MEMGETREGIONCOUNT = 0x80044d07 + MEMISLOCKED = 0x80084d17 + MEMLOCK = 0x40084d05 + MEMREADOOB = 0xc0104d04 + MEMSETBADBLOCK = 0x40084d0c + MEMUNLOCK = 0x40084d06 + MEMWRITEOOB = 0xc0104d03 + MTDFILEMODE = 0x4d13 + NFDBITS = 0x40 + NLDLY = 0x100 + NOFLSH = 0x80 + NS_GET_NSTYPE = 0xb703 + NS_GET_OWNER_UID = 0xb704 + NS_GET_PARENT = 0xb702 + NS_GET_USERNS = 0xb701 + OLCUC = 0x2 + ONLCR = 0x4 + OTPERASE = 0x400c4d19 + OTPGETREGIONCOUNT = 0x40044d0e + OTPGETREGIONINFO = 0x400c4d0f + OTPLOCK = 0x800c4d10 + OTPSELECT = 0x80044d0d + O_APPEND = 0x400 + O_ASYNC = 0x2000 + O_CLOEXEC = 0x80000 + O_CREAT = 0x40 + O_DIRECT = 0x4000 + O_DIRECTORY = 0x10000 + O_DSYNC = 0x1000 + O_EXCL = 0x80 + O_FSYNC = 0x101000 + O_LARGEFILE = 0x0 + O_NDELAY = 0x800 + O_NOATIME = 0x40000 + O_NOCTTY = 0x100 + O_NOFOLLOW = 0x20000 + O_NONBLOCK = 0x800 + O_PATH = 0x200000 + O_RSYNC = 0x101000 + O_SYNC = 0x101000 + O_TMPFILE = 0x410000 + O_TRUNC = 0x200 + PARENB = 0x100 + PARODD = 0x200 + PENDIN = 0x4000 + PERF_EVENT_IOC_DISABLE = 0x2401 + PERF_EVENT_IOC_ENABLE = 0x2400 + PERF_EVENT_IOC_ID = 0x80082407 + PERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b + PERF_EVENT_IOC_PAUSE_OUTPUT = 0x40042409 + PERF_EVENT_IOC_PERIOD = 0x40082404 + PERF_EVENT_IOC_QUERY_BPF = 0xc008240a + PERF_EVENT_IOC_REFRESH = 0x2402 + PERF_EVENT_IOC_RESET = 0x2403 + PERF_EVENT_IOC_SET_BPF = 0x40042408 + PERF_EVENT_IOC_SET_FILTER = 0x40082406 + PERF_EVENT_IOC_SET_OUTPUT = 0x2405 + PPPIOCATTACH = 0x4004743d + PPPIOCATTCHAN = 0x40047438 + PPPIOCBRIDGECHAN = 0x40047435 + PPPIOCCONNECT = 0x4004743a + PPPIOCDETACH = 0x4004743c + PPPIOCDISCONN = 0x7439 + PPPIOCGASYNCMAP = 0x80047458 + PPPIOCGCHAN = 0x80047437 + PPPIOCGDEBUG = 0x80047441 + PPPIOCGFLAGS = 0x8004745a + PPPIOCGIDLE = 0x8010743f + PPPIOCGIDLE32 = 0x8008743f + PPPIOCGIDLE64 = 0x8010743f + PPPIOCGL2TPSTATS = 0x80487436 + PPPIOCGMRU = 0x80047453 + PPPIOCGRASYNCMAP = 0x80047455 + PPPIOCGUNIT = 0x80047456 + PPPIOCGXASYNCMAP = 0x80207450 + PPPIOCSACTIVE = 0x40107446 + PPPIOCSASYNCMAP = 0x40047457 + PPPIOCSCOMPRESS = 0x4010744d + PPPIOCSDEBUG = 0x40047440 + PPPIOCSFLAGS = 0x40047459 + PPPIOCSMAXCID = 0x40047451 + PPPIOCSMRRU = 0x4004743b + PPPIOCSMRU = 0x40047452 + PPPIOCSNPMODE = 0x4008744b + PPPIOCSPASS = 0x40107447 + PPPIOCSRASYNCMAP = 0x40047454 + PPPIOCSXASYNCMAP = 0x4020744f + PPPIOCUNBRIDGECHAN = 0x7434 + PPPIOCXFERUNIT = 0x744e + PR_SET_PTRACER_ANY = 0xffffffffffffffff + PTRACE_SYSEMU = 0x1f + PTRACE_SYSEMU_SINGLESTEP = 0x20 + RLIMIT_AS = 0x9 + RLIMIT_MEMLOCK = 0x8 + RLIMIT_NOFILE = 0x7 + RLIMIT_NPROC = 0x6 + RLIMIT_RSS = 0x5 + RNDADDENTROPY = 0x40085203 + RNDADDTOENTCNT = 0x40045201 + RNDCLEARPOOL = 0x5206 + RNDGETENTCNT = 0x80045200 + RNDGETPOOL = 0x80085202 + RNDRESEEDCRNG = 0x5207 + RNDZAPENTCNT = 0x5204 + RTC_AIE_OFF = 0x7002 + RTC_AIE_ON = 0x7001 + RTC_ALM_READ = 0x80247008 + RTC_ALM_SET = 0x40247007 + RTC_EPOCH_READ = 0x8008700d + RTC_EPOCH_SET = 0x4008700e + RTC_IRQP_READ = 0x8008700b + RTC_IRQP_SET = 0x4008700c + RTC_PARAM_GET = 0x40187013 + RTC_PARAM_SET = 0x40187014 + RTC_PIE_OFF = 0x7006 + RTC_PIE_ON = 0x7005 + RTC_PLL_GET = 0x80207011 + RTC_PLL_SET = 0x40207012 + RTC_RD_TIME = 0x80247009 + RTC_SET_TIME = 0x4024700a + RTC_UIE_OFF = 0x7004 + RTC_UIE_ON = 0x7003 + RTC_VL_CLR = 0x7014 + RTC_VL_READ = 0x80047013 + RTC_WIE_OFF = 0x7010 + RTC_WIE_ON = 0x700f + RTC_WKALM_RD = 0x80287010 + RTC_WKALM_SET = 0x4028700f + SCM_TIMESTAMPING = 0x25 + SCM_TIMESTAMPING_OPT_STATS = 0x36 + SCM_TIMESTAMPING_PKTINFO = 0x3a + SCM_TIMESTAMPNS = 0x23 + SCM_TXTIME = 0x3d + SCM_WIFI_STATUS = 0x29 + SFD_CLOEXEC = 0x80000 + SFD_NONBLOCK = 0x800 + SIOCATMARK = 0x8905 + SIOCGPGRP = 0x8904 + SIOCGSTAMPNS_NEW = 0x80108907 + SIOCGSTAMP_NEW = 0x80108906 + SIOCINQ = 0x541b + SIOCOUTQ = 0x5411 + SIOCSPGRP = 0x8902 + SOCK_CLOEXEC = 0x80000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x800 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0x1 + SO_ACCEPTCONN = 0x1e + SO_ATTACH_BPF = 0x32 + SO_ATTACH_REUSEPORT_CBPF = 0x33 + SO_ATTACH_REUSEPORT_EBPF = 0x34 + SO_BINDTODEVICE = 0x19 + SO_BINDTOIFINDEX = 0x3e + SO_BPF_EXTENSIONS = 0x30 + SO_BROADCAST = 0x6 + SO_BSDCOMPAT = 0xe + SO_BUF_LOCK = 0x48 + SO_BUSY_POLL = 0x2e + SO_BUSY_POLL_BUDGET = 0x46 + SO_CNX_ADVICE = 0x35 + SO_COOKIE = 0x39 + SO_DETACH_REUSEPORT_BPF = 0x44 + SO_DOMAIN = 0x27 + SO_DONTROUTE = 0x5 + SO_ERROR = 0x4 + SO_INCOMING_CPU = 0x31 + SO_INCOMING_NAPI_ID = 0x38 + SO_KEEPALIVE = 0x9 + SO_LINGER = 0xd + SO_LOCK_FILTER = 0x2c + SO_MARK = 0x24 + SO_MAX_PACING_RATE = 0x2f + SO_MEMINFO = 0x37 + SO_NETNS_COOKIE = 0x47 + SO_NOFCS = 0x2b + SO_OOBINLINE = 0xa + SO_PASSCRED = 0x10 + SO_PASSSEC = 0x22 + SO_PEEK_OFF = 0x2a + SO_PEERCRED = 0x11 + SO_PEERGROUPS = 0x3b + SO_PEERSEC = 0x1f + SO_PREFER_BUSY_POLL = 0x45 + SO_PROTOCOL = 0x26 + SO_RCVBUF = 0x8 + SO_RCVBUFFORCE = 0x21 + SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b + SO_RCVTIMEO = 0x14 + SO_RCVTIMEO_NEW = 0x42 + SO_RCVTIMEO_OLD = 0x14 + SO_RESERVE_MEM = 0x49 + SO_REUSEADDR = 0x2 + SO_REUSEPORT = 0xf + SO_RXQ_OVFL = 0x28 + SO_SECURITY_AUTHENTICATION = 0x16 + SO_SECURITY_ENCRYPTION_NETWORK = 0x18 + SO_SECURITY_ENCRYPTION_TRANSPORT = 0x17 + SO_SELECT_ERR_QUEUE = 0x2d + SO_SNDBUF = 0x7 + SO_SNDBUFFORCE = 0x20 + SO_SNDLOWAT = 0x13 + SO_SNDTIMEO = 0x15 + SO_SNDTIMEO_NEW = 0x43 + SO_SNDTIMEO_OLD = 0x15 + SO_TIMESTAMPING = 0x25 + SO_TIMESTAMPING_NEW = 0x41 + SO_TIMESTAMPING_OLD = 0x25 + SO_TIMESTAMPNS = 0x23 + SO_TIMESTAMPNS_NEW = 0x40 + SO_TIMESTAMPNS_OLD = 0x23 + SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a + SO_TXTIME = 0x3d + SO_TYPE = 0x3 + SO_WIFI_STATUS = 0x29 + SO_ZEROCOPY = 0x3c + TAB1 = 0x800 + TAB2 = 0x1000 + TAB3 = 0x1800 + TABDLY = 0x1800 + TCFLSH = 0x540b + TCGETA = 0x5405 + TCGETS = 0x5401 + TCGETS2 = 0x802c542a + TCGETX = 0x5432 + TCSAFLUSH = 0x2 + TCSBRK = 0x5409 + TCSBRKP = 0x5425 + TCSETA = 0x5406 + TCSETAF = 0x5408 + TCSETAW = 0x5407 + TCSETS = 0x5402 + TCSETS2 = 0x402c542b + TCSETSF = 0x5404 + TCSETSF2 = 0x402c542d + TCSETSW = 0x5403 + TCSETSW2 = 0x402c542c + TCSETX = 0x5433 + TCSETXF = 0x5434 + TCSETXW = 0x5435 + TCXONC = 0x540a + TFD_CLOEXEC = 0x80000 + TFD_NONBLOCK = 0x800 + TIOCCBRK = 0x5428 + TIOCCONS = 0x541d + TIOCEXCL = 0x540c + TIOCGDEV = 0x80045432 + TIOCGETD = 0x5424 + TIOCGEXCL = 0x80045440 + TIOCGICOUNT = 0x545d + TIOCGISO7816 = 0x80285442 + TIOCGLCKTRMIOS = 0x5456 + TIOCGPGRP = 0x540f + TIOCGPKT = 0x80045438 + TIOCGPTLCK = 0x80045439 + TIOCGPTN = 0x80045430 + TIOCGPTPEER = 0x5441 + TIOCGRS485 = 0x542e + TIOCGSERIAL = 0x541e + TIOCGSID = 0x5429 + TIOCGSOFTCAR = 0x5419 + TIOCGWINSZ = 0x5413 + TIOCINQ = 0x541b + TIOCLINUX = 0x541c + TIOCMBIC = 0x5417 + TIOCMBIS = 0x5416 + TIOCMGET = 0x5415 + TIOCMIWAIT = 0x545c + TIOCMSET = 0x5418 + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x5422 + TIOCNXCL = 0x540d + TIOCOUTQ = 0x5411 + TIOCPKT = 0x5420 + TIOCSBRK = 0x5427 + TIOCSCTTY = 0x540e + TIOCSERCONFIG = 0x5453 + TIOCSERGETLSR = 0x5459 + TIOCSERGETMULTI = 0x545a + TIOCSERGSTRUCT = 0x5458 + TIOCSERGWILD = 0x5454 + TIOCSERSETMULTI = 0x545b + TIOCSERSWILD = 0x5455 + TIOCSER_TEMT = 0x1 + TIOCSETD = 0x5423 + TIOCSIG = 0x40045436 + TIOCSISO7816 = 0xc0285443 + TIOCSLCKTRMIOS = 0x5457 + TIOCSPGRP = 0x5410 + TIOCSPTLCK = 0x40045431 + TIOCSRS485 = 0x542f + TIOCSSERIAL = 0x541f + TIOCSSOFTCAR = 0x541a + TIOCSTI = 0x5412 + TIOCSWINSZ = 0x5414 + TIOCVHANGUP = 0x5437 + TOSTOP = 0x100 + TUNATTACHFILTER = 0x401054d5 + TUNDETACHFILTER = 0x401054d6 + TUNGETDEVNETNS = 0x54e3 + TUNGETFEATURES = 0x800454cf + TUNGETFILTER = 0x801054db + TUNGETIFF = 0x800454d2 + TUNGETSNDBUF = 0x800454d3 + TUNGETVNETBE = 0x800454df + TUNGETVNETHDRSZ = 0x800454d7 + TUNGETVNETLE = 0x800454dd + TUNSETCARRIER = 0x400454e2 + TUNSETDEBUG = 0x400454c9 + TUNSETFILTEREBPF = 0x800454e1 + TUNSETGROUP = 0x400454ce + TUNSETIFF = 0x400454ca + TUNSETIFINDEX = 0x400454da + TUNSETLINK = 0x400454cd + TUNSETNOCSUM = 0x400454c8 + TUNSETOFFLOAD = 0x400454d0 + TUNSETOWNER = 0x400454cc + TUNSETPERSIST = 0x400454cb + TUNSETQUEUE = 0x400454d9 + TUNSETSNDBUF = 0x400454d4 + TUNSETSTEERINGEBPF = 0x800454e0 + TUNSETTXFILTER = 0x400454d1 + TUNSETVNETBE = 0x400454de + TUNSETVNETHDRSZ = 0x400454d8 + TUNSETVNETLE = 0x400454dc + UBI_IOCATT = 0x40186f40 + UBI_IOCDET = 0x40046f41 + UBI_IOCEBCH = 0x40044f02 + UBI_IOCEBER = 0x40044f01 + UBI_IOCEBISMAP = 0x80044f05 + UBI_IOCEBMAP = 0x40084f03 + UBI_IOCEBUNMAP = 0x40044f04 + UBI_IOCMKVOL = 0x40986f00 + UBI_IOCRMVOL = 0x40046f01 + UBI_IOCRNVOL = 0x51106f03 + UBI_IOCRPEB = 0x40046f04 + UBI_IOCRSVOL = 0x400c6f02 + UBI_IOCSETVOLPROP = 0x40104f06 + UBI_IOCSPEB = 0x40046f05 + UBI_IOCVOLCRBLK = 0x40804f07 + UBI_IOCVOLRMBLK = 0x4f08 + UBI_IOCVOLUP = 0x40084f00 + VDISCARD = 0xd + VEOF = 0x4 + VEOL = 0xb + VEOL2 = 0x10 + VMIN = 0x6 + VREPRINT = 0xc + VSTART = 0x8 + VSTOP = 0x9 + VSUSP = 0xa + VSWTC = 0x7 + VT1 = 0x4000 + VTDLY = 0x4000 + VTIME = 0x5 + VWERASE = 0xe + WDIOC_GETBOOTSTATUS = 0x80045702 + WDIOC_GETPRETIMEOUT = 0x80045709 + WDIOC_GETSTATUS = 0x80045701 + WDIOC_GETSUPPORT = 0x80285700 + WDIOC_GETTEMP = 0x80045703 + WDIOC_GETTIMELEFT = 0x8004570a + WDIOC_GETTIMEOUT = 0x80045707 + WDIOC_KEEPALIVE = 0x80045705 + WDIOC_SETOPTIONS = 0x80045704 + WORDSIZE = 0x40 + XCASE = 0x4 + XTABS = 0x1800 + _HIDIOCGRAWNAME = 0x80804804 + _HIDIOCGRAWPHYS = 0x80404805 + _HIDIOCGRAWUNIQ = 0x80404808 +) + +// Errors +const ( + EADDRINUSE = syscall.Errno(0x62) + EADDRNOTAVAIL = syscall.Errno(0x63) + EADV = syscall.Errno(0x44) + EAFNOSUPPORT = syscall.Errno(0x61) + EALREADY = syscall.Errno(0x72) + EBADE = syscall.Errno(0x34) + EBADFD = syscall.Errno(0x4d) + EBADMSG = syscall.Errno(0x4a) + EBADR = syscall.Errno(0x35) + EBADRQC = syscall.Errno(0x38) + EBADSLT = syscall.Errno(0x39) + EBFONT = syscall.Errno(0x3b) + ECANCELED = syscall.Errno(0x7d) + ECHRNG = syscall.Errno(0x2c) + ECOMM = syscall.Errno(0x46) + ECONNABORTED = syscall.Errno(0x67) + ECONNREFUSED = syscall.Errno(0x6f) + ECONNRESET = syscall.Errno(0x68) + EDEADLK = syscall.Errno(0x23) + EDEADLOCK = syscall.Errno(0x23) + EDESTADDRREQ = syscall.Errno(0x59) + EDOTDOT = syscall.Errno(0x49) + EDQUOT = syscall.Errno(0x7a) + EHOSTDOWN = syscall.Errno(0x70) + EHOSTUNREACH = syscall.Errno(0x71) + EHWPOISON = syscall.Errno(0x85) + EIDRM = syscall.Errno(0x2b) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x73) + EISCONN = syscall.Errno(0x6a) + EISNAM = syscall.Errno(0x78) + EKEYEXPIRED = syscall.Errno(0x7f) + EKEYREJECTED = syscall.Errno(0x81) + EKEYREVOKED = syscall.Errno(0x80) + EL2HLT = syscall.Errno(0x33) + EL2NSYNC = syscall.Errno(0x2d) + EL3HLT = syscall.Errno(0x2e) + EL3RST = syscall.Errno(0x2f) + ELIBACC = syscall.Errno(0x4f) + ELIBBAD = syscall.Errno(0x50) + ELIBEXEC = syscall.Errno(0x53) + ELIBMAX = syscall.Errno(0x52) + ELIBSCN = syscall.Errno(0x51) + ELNRNG = syscall.Errno(0x30) + ELOOP = syscall.Errno(0x28) + EMEDIUMTYPE = syscall.Errno(0x7c) + EMSGSIZE = syscall.Errno(0x5a) + EMULTIHOP = syscall.Errno(0x48) + ENAMETOOLONG = syscall.Errno(0x24) + ENAVAIL = syscall.Errno(0x77) + ENETDOWN = syscall.Errno(0x64) + ENETRESET = syscall.Errno(0x66) + ENETUNREACH = syscall.Errno(0x65) + ENOANO = syscall.Errno(0x37) + ENOBUFS = syscall.Errno(0x69) + ENOCSI = syscall.Errno(0x32) + ENODATA = syscall.Errno(0x3d) + ENOKEY = syscall.Errno(0x7e) + ENOLCK = syscall.Errno(0x25) + ENOLINK = syscall.Errno(0x43) + ENOMEDIUM = syscall.Errno(0x7b) + ENOMSG = syscall.Errno(0x2a) + ENONET = syscall.Errno(0x40) + ENOPKG = syscall.Errno(0x41) + ENOPROTOOPT = syscall.Errno(0x5c) + ENOSR = syscall.Errno(0x3f) + ENOSTR = syscall.Errno(0x3c) + ENOSYS = syscall.Errno(0x26) + ENOTCONN = syscall.Errno(0x6b) + ENOTEMPTY = syscall.Errno(0x27) + ENOTNAM = syscall.Errno(0x76) + ENOTRECOVERABLE = syscall.Errno(0x83) + ENOTSOCK = syscall.Errno(0x58) + ENOTSUP = syscall.Errno(0x5f) + ENOTUNIQ = syscall.Errno(0x4c) + EOPNOTSUPP = syscall.Errno(0x5f) + EOVERFLOW = syscall.Errno(0x4b) + EOWNERDEAD = syscall.Errno(0x82) + EPFNOSUPPORT = syscall.Errno(0x60) + EPROTO = syscall.Errno(0x47) + EPROTONOSUPPORT = syscall.Errno(0x5d) + EPROTOTYPE = syscall.Errno(0x5b) + EREMCHG = syscall.Errno(0x4e) + EREMOTE = syscall.Errno(0x42) + EREMOTEIO = syscall.Errno(0x79) + ERESTART = syscall.Errno(0x55) + ERFKILL = syscall.Errno(0x84) + ESHUTDOWN = syscall.Errno(0x6c) + ESOCKTNOSUPPORT = syscall.Errno(0x5e) + ESRMNT = syscall.Errno(0x45) + ESTALE = syscall.Errno(0x74) + ESTRPIPE = syscall.Errno(0x56) + ETIME = syscall.Errno(0x3e) + ETIMEDOUT = syscall.Errno(0x6e) + ETOOMANYREFS = syscall.Errno(0x6d) + EUCLEAN = syscall.Errno(0x75) + EUNATCH = syscall.Errno(0x31) + EUSERS = syscall.Errno(0x57) + EXFULL = syscall.Errno(0x36) +) + +// Signals +const ( + SIGBUS = syscall.Signal(0x7) + SIGCHLD = syscall.Signal(0x11) + SIGCLD = syscall.Signal(0x11) + SIGCONT = syscall.Signal(0x12) + SIGIO = syscall.Signal(0x1d) + SIGPOLL = syscall.Signal(0x1d) + SIGPROF = syscall.Signal(0x1b) + SIGPWR = syscall.Signal(0x1e) + SIGSTKFLT = syscall.Signal(0x10) + SIGSTOP = syscall.Signal(0x13) + SIGSYS = syscall.Signal(0x1f) + SIGTSTP = syscall.Signal(0x14) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x17) + SIGUSR1 = syscall.Signal(0xa) + SIGUSR2 = syscall.Signal(0xc) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errorList = [...]struct { + num syscall.Errno + name string + desc string +}{ + {1, "EPERM", "operation not permitted"}, + {2, "ENOENT", "no such file or directory"}, + {3, "ESRCH", "no such process"}, + {4, "EINTR", "interrupted system call"}, + {5, "EIO", "input/output error"}, + {6, "ENXIO", "no such device or address"}, + {7, "E2BIG", "argument list too long"}, + {8, "ENOEXEC", "exec format error"}, + {9, "EBADF", "bad file descriptor"}, + {10, "ECHILD", "no child processes"}, + {11, "EAGAIN", "resource temporarily unavailable"}, + {12, "ENOMEM", "cannot allocate memory"}, + {13, "EACCES", "permission denied"}, + {14, "EFAULT", "bad address"}, + {15, "ENOTBLK", "block device required"}, + {16, "EBUSY", "device or resource busy"}, + {17, "EEXIST", "file exists"}, + {18, "EXDEV", "invalid cross-device link"}, + {19, "ENODEV", "no such device"}, + {20, "ENOTDIR", "not a directory"}, + {21, "EISDIR", "is a directory"}, + {22, "EINVAL", "invalid argument"}, + {23, "ENFILE", "too many open files in system"}, + {24, "EMFILE", "too many open files"}, + {25, "ENOTTY", "inappropriate ioctl for device"}, + {26, "ETXTBSY", "text file busy"}, + {27, "EFBIG", "file too large"}, + {28, "ENOSPC", "no space left on device"}, + {29, "ESPIPE", "illegal seek"}, + {30, "EROFS", "read-only file system"}, + {31, "EMLINK", "too many links"}, + {32, "EPIPE", "broken pipe"}, + {33, "EDOM", "numerical argument out of domain"}, + {34, "ERANGE", "numerical result out of range"}, + {35, "EDEADLK", "resource deadlock avoided"}, + {36, "ENAMETOOLONG", "file name too long"}, + {37, "ENOLCK", "no locks available"}, + {38, "ENOSYS", "function not implemented"}, + {39, "ENOTEMPTY", "directory not empty"}, + {40, "ELOOP", "too many levels of symbolic links"}, + {42, "ENOMSG", "no message of desired type"}, + {43, "EIDRM", "identifier removed"}, + {44, "ECHRNG", "channel number out of range"}, + {45, "EL2NSYNC", "level 2 not synchronized"}, + {46, "EL3HLT", "level 3 halted"}, + {47, "EL3RST", "level 3 reset"}, + {48, "ELNRNG", "link number out of range"}, + {49, "EUNATCH", "protocol driver not attached"}, + {50, "ENOCSI", "no CSI structure available"}, + {51, "EL2HLT", "level 2 halted"}, + {52, "EBADE", "invalid exchange"}, + {53, "EBADR", "invalid request descriptor"}, + {54, "EXFULL", "exchange full"}, + {55, "ENOANO", "no anode"}, + {56, "EBADRQC", "invalid request code"}, + {57, "EBADSLT", "invalid slot"}, + {59, "EBFONT", "bad font file format"}, + {60, "ENOSTR", "device not a stream"}, + {61, "ENODATA", "no data available"}, + {62, "ETIME", "timer expired"}, + {63, "ENOSR", "out of streams resources"}, + {64, "ENONET", "machine is not on the network"}, + {65, "ENOPKG", "package not installed"}, + {66, "EREMOTE", "object is remote"}, + {67, "ENOLINK", "link has been severed"}, + {68, "EADV", "advertise error"}, + {69, "ESRMNT", "srmount error"}, + {70, "ECOMM", "communication error on send"}, + {71, "EPROTO", "protocol error"}, + {72, "EMULTIHOP", "multihop attempted"}, + {73, "EDOTDOT", "RFS specific error"}, + {74, "EBADMSG", "bad message"}, + {75, "EOVERFLOW", "value too large for defined data type"}, + {76, "ENOTUNIQ", "name not unique on network"}, + {77, "EBADFD", "file descriptor in bad state"}, + {78, "EREMCHG", "remote address changed"}, + {79, "ELIBACC", "can not access a needed shared library"}, + {80, "ELIBBAD", "accessing a corrupted shared library"}, + {81, "ELIBSCN", ".lib section in a.out corrupted"}, + {82, "ELIBMAX", "attempting to link in too many shared libraries"}, + {83, "ELIBEXEC", "cannot exec a shared library directly"}, + {84, "EILSEQ", "invalid or incomplete multibyte or wide character"}, + {85, "ERESTART", "interrupted system call should be restarted"}, + {86, "ESTRPIPE", "streams pipe error"}, + {87, "EUSERS", "too many users"}, + {88, "ENOTSOCK", "socket operation on non-socket"}, + {89, "EDESTADDRREQ", "destination address required"}, + {90, "EMSGSIZE", "message too long"}, + {91, "EPROTOTYPE", "protocol wrong type for socket"}, + {92, "ENOPROTOOPT", "protocol not available"}, + {93, "EPROTONOSUPPORT", "protocol not supported"}, + {94, "ESOCKTNOSUPPORT", "socket type not supported"}, + {95, "ENOTSUP", "operation not supported"}, + {96, "EPFNOSUPPORT", "protocol family not supported"}, + {97, "EAFNOSUPPORT", "address family not supported by protocol"}, + {98, "EADDRINUSE", "address already in use"}, + {99, "EADDRNOTAVAIL", "cannot assign requested address"}, + {100, "ENETDOWN", "network is down"}, + {101, "ENETUNREACH", "network is unreachable"}, + {102, "ENETRESET", "network dropped connection on reset"}, + {103, "ECONNABORTED", "software caused connection abort"}, + {104, "ECONNRESET", "connection reset by peer"}, + {105, "ENOBUFS", "no buffer space available"}, + {106, "EISCONN", "transport endpoint is already connected"}, + {107, "ENOTCONN", "transport endpoint is not connected"}, + {108, "ESHUTDOWN", "cannot send after transport endpoint shutdown"}, + {109, "ETOOMANYREFS", "too many references: cannot splice"}, + {110, "ETIMEDOUT", "connection timed out"}, + {111, "ECONNREFUSED", "connection refused"}, + {112, "EHOSTDOWN", "host is down"}, + {113, "EHOSTUNREACH", "no route to host"}, + {114, "EALREADY", "operation already in progress"}, + {115, "EINPROGRESS", "operation now in progress"}, + {116, "ESTALE", "stale file handle"}, + {117, "EUCLEAN", "structure needs cleaning"}, + {118, "ENOTNAM", "not a XENIX named type file"}, + {119, "ENAVAIL", "no XENIX semaphores available"}, + {120, "EISNAM", "is a named type file"}, + {121, "EREMOTEIO", "remote I/O error"}, + {122, "EDQUOT", "disk quota exceeded"}, + {123, "ENOMEDIUM", "no medium found"}, + {124, "EMEDIUMTYPE", "wrong medium type"}, + {125, "ECANCELED", "operation canceled"}, + {126, "ENOKEY", "required key not available"}, + {127, "EKEYEXPIRED", "key has expired"}, + {128, "EKEYREVOKED", "key has been revoked"}, + {129, "EKEYREJECTED", "key was rejected by service"}, + {130, "EOWNERDEAD", "owner died"}, + {131, "ENOTRECOVERABLE", "state not recoverable"}, + {132, "ERFKILL", "operation not possible due to RF-kill"}, + {133, "EHWPOISON", "memory page has hardware error"}, +} + +// Signal table +var signalList = [...]struct { + num syscall.Signal + name string + desc string +}{ + {1, "SIGHUP", "hangup"}, + {2, "SIGINT", "interrupt"}, + {3, "SIGQUIT", "quit"}, + {4, "SIGILL", "illegal instruction"}, + {5, "SIGTRAP", "trace/breakpoint trap"}, + {6, "SIGABRT", "aborted"}, + {7, "SIGBUS", "bus error"}, + {8, "SIGFPE", "floating point exception"}, + {9, "SIGKILL", "killed"}, + {10, "SIGUSR1", "user defined signal 1"}, + {11, "SIGSEGV", "segmentation fault"}, + {12, "SIGUSR2", "user defined signal 2"}, + {13, "SIGPIPE", "broken pipe"}, + {14, "SIGALRM", "alarm clock"}, + {15, "SIGTERM", "terminated"}, + {16, "SIGSTKFLT", "stack fault"}, + {17, "SIGCHLD", "child exited"}, + {18, "SIGCONT", "continued"}, + {19, "SIGSTOP", "stopped (signal)"}, + {20, "SIGTSTP", "stopped"}, + {21, "SIGTTIN", "stopped (tty input)"}, + {22, "SIGTTOU", "stopped (tty output)"}, + {23, "SIGURG", "urgent I/O condition"}, + {24, "SIGXCPU", "CPU time limit exceeded"}, + {25, "SIGXFSZ", "file size limit exceeded"}, + {26, "SIGVTALRM", "virtual timer expired"}, + {27, "SIGPROF", "profiling timer expired"}, + {28, "SIGWINCH", "window changed"}, + {29, "SIGIO", "I/O possible"}, + {30, "SIGPWR", "power failure"}, + {31, "SIGSYS", "bad system call"}, +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go index 14d7a84399d..bd794e0108e 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go @@ -5,7 +5,7 @@ // +build mips,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go index 99e7c4ac0b4..6c741b05476 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go @@ -5,7 +5,7 @@ // +build mips64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go index 496364c33cc..807b8cd2a8d 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go @@ -5,7 +5,7 @@ // +build mips64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go index 3e40830857d..a39e4f5c206 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go @@ -5,7 +5,7 @@ // +build mipsle,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -326,6 +326,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x1004 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x1006 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x1006 @@ -351,6 +352,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go index 1151a7dfab3..c0fcda86b4c 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go @@ -5,7 +5,7 @@ // +build ppc,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -381,6 +381,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 @@ -405,6 +406,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go index ed17f249e75..f3b72407aa6 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go @@ -5,7 +5,7 @@ // +build ppc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -385,6 +385,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 @@ -409,6 +410,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go index d84a37c1ac2..72f2a45d503 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go @@ -5,7 +5,7 @@ // +build ppc64le,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -385,6 +385,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x10 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x12 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x12 @@ -409,6 +410,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go index 5cafba83f6b..45b214b4d3a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go @@ -5,7 +5,7 @@ // +build riscv64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -314,6 +314,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -338,6 +339,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go index 6d122da41c5..1897f207bb3 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go @@ -5,7 +5,7 @@ // +build s390x,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char _const.go package unix @@ -389,6 +389,7 @@ const ( SO_RCVBUF = 0x8 SO_RCVBUFFORCE = 0x21 SO_RCVLOWAT = 0x12 + SO_RCVMARK = 0x4b SO_RCVTIMEO = 0x14 SO_RCVTIMEO_NEW = 0x42 SO_RCVTIMEO_OLD = 0x14 @@ -413,6 +414,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x40 SO_TIMESTAMPNS_OLD = 0x23 SO_TIMESTAMP_NEW = 0x3f + SO_TXREHASH = 0x4a SO_TXTIME = 0x3d SO_TYPE = 0x3 SO_WIFI_STATUS = 0x29 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go index 6bd19e51dbb..1fb7a3953a9 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go @@ -5,7 +5,7 @@ // +build sparc64,linux // Code generated by cmd/cgo -godefs; DO NOT EDIT. -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/_const.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include _const.go package unix @@ -380,6 +380,7 @@ const ( SO_RCVBUF = 0x1002 SO_RCVBUFFORCE = 0x100b SO_RCVLOWAT = 0x800 + SO_RCVMARK = 0x54 SO_RCVTIMEO = 0x2000 SO_RCVTIMEO_NEW = 0x44 SO_RCVTIMEO_OLD = 0x2000 @@ -404,6 +405,7 @@ const ( SO_TIMESTAMPNS_NEW = 0x42 SO_TIMESTAMPNS_OLD = 0x21 SO_TIMESTAMP_NEW = 0x46 + SO_TXREHASH = 0x53 SO_TXTIME = 0x3f SO_TYPE = 0x1008 SO_WIFI_STATUS = 0x25 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go index 87937658964..467deed7633 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go @@ -1643,6 +1643,30 @@ var libc_mknod_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Open(path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s index 8da90cf0e4f..7e308a476d9 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s @@ -600,6 +600,12 @@ TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) + +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go index f47eedd5a86..35938d34ff8 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go @@ -1643,6 +1643,30 @@ var libc_mknod_trampoline_addr uintptr // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(fsType) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(dir) + if err != nil { + return + } + _, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +var libc_mount_trampoline_addr uintptr + +//go:cgo_import_dynamic libc_mount mount "/usr/lib/libSystem.B.dylib" + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Open(path string, mode int, perm uint32) (fd int, err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s index 4d26f7d014e..b09e5bb0e20 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s @@ -600,6 +600,12 @@ TEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0 GLOBL ·libc_mknod_trampoline_addr(SB), RODATA, $8 DATA ·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB) +TEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0 + JMP libc_mount(SB) + +GLOBL ·libc_mount_trampoline_addr(SB), RODATA, $8 +DATA ·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB) + TEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0 JMP libc_open(SB) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go index e9d9997eeda..039c4aa06c2 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,43 +1250,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0) + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0) if e1 != 0 { err = errnoErr(e1) } @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go index edd373b1a56..0535d3cfdf2 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,22 +1250,7 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1347,21 +1265,6 @@ func mknodat(fd int, path string, mode uint32, dev int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go index 82e9764b257..1018b522170 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go @@ -351,22 +351,6 @@ func Munlockall() (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { - var _p0 unsafe.Pointer - if len(mib) > 0 { - _p0 = unsafe.Pointer(&mib[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func pipe2(p *[2]_C_int, flags int) (err error) { _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) if e1 != 0 { @@ -404,6 +388,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func ptrace(request int, pid int, addr uintptr, data int) (err error) { _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) if e1 != 0 { @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,43 +1250,13 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { return } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32)) if e1 != 0 { err = errnoErr(e1) } @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go index a6479acd1fc..3802f4b379a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go @@ -912,7 +912,7 @@ func Fpathconf(fd int, name int) (val int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat(fd int, stat *stat_freebsd11_t) (err error) { +func Fstat(fd int, stat *Stat_t) (err error) { _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -922,17 +922,7 @@ func fstat(fd int, stat *stat_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstat_freebsd12(fd int, stat *Stat_t) (err error) { - _, _, e1 := Syscall(SYS_FSTAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) { +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -947,22 +937,7 @@ func fstatat(fd int, path string, stat *stat_freebsd11_t, flags int) (err error) // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatat_freebsd12(fd int, path string, stat *Stat_t, flags int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_FSTATAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { +func Fstatfs(fd int, stat *Statfs_t) (err error) { _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) if e1 != 0 { err = errnoErr(e1) @@ -972,16 +947,6 @@ func fstatfs(fd int, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func fstatfs_freebsd12(fd int, stat *Statfs_t) (err error) { - _, _, e1 := Syscall(SYS_FSTATFS_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Fsync(fd int) (err error) { _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) if e1 != 0 { @@ -1002,7 +967,7 @@ func Ftruncate(fd int, length int64) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { var _p0 unsafe.Pointer if len(buf) > 0 { _p0 = unsafe.Pointer(&buf[0]) @@ -1019,23 +984,6 @@ func getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func getdirentries_freebsd12(fd int, buf []byte, basep *uint64) (n int, err error) { - var _p0 unsafe.Pointer - if len(buf) > 0 { - _p0 = unsafe.Pointer(&buf[0]) - } else { - _p0 = unsafe.Pointer(&_zero) - } - r0, _, e1 := Syscall6(SYS_GETDIRENTRIES_FREEBSD12, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) - n = int(r0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Getdtablesize() (size int) { r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) size = int(r0) @@ -1257,21 +1205,6 @@ func Listen(s int, backlog int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func lstat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Mkdir(path string, mode uint32) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) @@ -1317,22 +1250,7 @@ func Mkfifo(path string, mode uint32) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknod(path string, mode uint32, dev int) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func mknodat(fd int, path string, mode uint32, dev int) (err error) { +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1347,21 +1265,6 @@ func mknodat(fd int, path string, mode uint32, dev int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func mknodat_freebsd12(fd int, path string, mode uint32, dev uint64) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall6(SYS_MKNODAT_FREEBSD12, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Nanosleep(time *Timespec, leftover *Timespec) (err error) { _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) if e1 != 0 { @@ -1753,22 +1656,7 @@ func Setuid(uid int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func stat(path string, stat *stat_freebsd11_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - -func statfs(path string, stat *statfs_freebsd11_t) (err error) { +func Statfs(path string, stat *Statfs_t) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) if err != nil { @@ -1783,21 +1671,6 @@ func statfs(path string, stat *statfs_freebsd11_t) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT -func statfs_freebsd12(path string, stat *Statfs_t) (err error) { - var _p0 *byte - _p0, err = BytePtrFromString(path) - if err != nil { - return - } - _, _, e1 := Syscall(SYS_STATFS_FREEBSD12, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) - if e1 != 0 { - err = errnoErr(e1) - } - return -} - -// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT - func Symlink(path string, link string) (err error) { var _p0 *byte _p0, err = BytePtrFromString(path) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go new file mode 100644 index 00000000000..8a2db7da9f3 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go @@ -0,0 +1,1889 @@ +// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build freebsd && riscv64 +// +build freebsd,riscv64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func poll(fds *PollFd, nfds int, timeout int) (n int, err error) { + r0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe2(p *[2]_C_int, flags int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getcwd(buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ioctl(fd int, req uint, arg uintptr) (err error) { + _, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ptrace(request int, pid int, addr uintptr, data int) (err error) { + _, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func CapEnter() (err error) { + _, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsGet(version int, fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func capRightsLimit(fd int, rightsp *CapRights) (err error) { + _, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(file) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(attrname) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(link) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0) + ret = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getdtablesize() (size int) { + r0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0) + size = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdirat(dirfd int, path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknodat(fd int, path string, mode uint32, dev uint64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlinkat(dirfd int, path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Renameat(fromfd int, from string, tofd int, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + newoffset = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) { + r0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlinkat(oldpath string, newdirfd int, newpath string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(oldpath) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(newpath) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Undelete(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlinkat(dirfd int, path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos)) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go new file mode 100644 index 00000000000..523f2ba03e4 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go @@ -0,0 +1,527 @@ +// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build linux && loong64 +// +build linux,loong64 + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) { + _, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fallocate(fd int, mode uint32, off int64, len int64) (err error) { + _, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Tee(rfd int, wfd int, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) { + var _p0 unsafe.Pointer + if len(events) > 0 { + _p0 = unsafe.Pointer(&events[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fadvise(fd int, offset int64, length int64, advice int) (err error) { + _, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, buf *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (euid int) { + r0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0) + euid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, n int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (off int64, err error) { + r0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence)) + off = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) { + r0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0) + written = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsgid(gid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setfsuid(uid int) (prev int, err error) { + r0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0) + prev = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) { + r0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags)) + n = int64(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, buf *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func SyncFileRange(fd int, off int64, n int64, flags int) (err error) { + _, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) { + r0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(n int, list *_Gid_t) (nn int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + nn = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(n int, list *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) { + r0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)) + xaddr = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(cmdline) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go index a1a9bcbbdf6..1239cc2de9c 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go @@ -180,6 +180,17 @@ func Listen(s int, n int) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func MemfdSecret(flags int) (fd int, err error) { + r0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func pread(fd int, p []byte, offset int64) (n int, err error) { var _p0 unsafe.Pointer if len(p) > 0 { diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go index d12f4fbfea5..fdf53f8daf3 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go @@ -66,6 +66,7 @@ import ( //go:cgo_import_dynamic libc_getpriority getpriority "libc.so" //go:cgo_import_dynamic libc_getrlimit getrlimit "libc.so" //go:cgo_import_dynamic libc_getrusage getrusage "libc.so" +//go:cgo_import_dynamic libc_getsid getsid "libc.so" //go:cgo_import_dynamic libc_gettimeofday gettimeofday "libc.so" //go:cgo_import_dynamic libc_getuid getuid "libc.so" //go:cgo_import_dynamic libc_kill kill "libc.so" @@ -202,6 +203,7 @@ import ( //go:linkname procGetpriority libc_getpriority //go:linkname procGetrlimit libc_getrlimit //go:linkname procGetrusage libc_getrusage +//go:linkname procGetsid libc_getsid //go:linkname procGettimeofday libc_gettimeofday //go:linkname procGetuid libc_getuid //go:linkname procKill libc_kill @@ -339,6 +341,7 @@ var ( procGetpriority, procGetrlimit, procGetrusage, + procGetsid, procGettimeofday, procGetuid, procKill, @@ -1044,6 +1047,17 @@ func Getrusage(who int, rusage *Rusage) (err error) { // THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0) + sid = int(r0) + if e1 != 0 { + err = e1 + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + func Gettimeofday(tv *Timeval) (err error) { _, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0) if e1 != 0 { diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go index 59d5dfc2092..4e0d96107b9 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go index 342d471d2eb..01636b838d3 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go index e2e3d72c5b0..ad99bc106a8 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go index 61ad5ca3c19..89dcc427476 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go @@ -1,4 +1,4 @@ -// go run mksysnum.go https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && freebsd @@ -19,10 +19,9 @@ const ( SYS_UNLINK = 10 // { int unlink(char *path); } SYS_CHDIR = 12 // { int chdir(char *path); } SYS_FCHDIR = 13 // { int fchdir(int fd); } - SYS_MKNOD = 14 // { int mknod(char *path, int mode, int dev); } SYS_CHMOD = 15 // { int chmod(char *path, int mode); } SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } - SYS_OBREAK = 17 // { int obreak(char *nsize); } break obreak_args int + SYS_BREAK = 17 // { caddr_t break(char *nsize); } SYS_GETPID = 20 // { pid_t getpid(void); } SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } @@ -43,7 +42,6 @@ const ( SYS_KILL = 37 // { int kill(int pid, int signum); } SYS_GETPPID = 39 // { pid_t getppid(void); } SYS_DUP = 41 // { int dup(u_int fd); } - SYS_PIPE = 42 // { int pipe(void); } SYS_GETEGID = 43 // { gid_t getegid(void); } SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } @@ -58,15 +56,14 @@ const ( SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } - SYS_UMASK = 60 // { int umask(int newmask); } umask umask_args int + SYS_UMASK = 60 // { int umask(int newmask); } SYS_CHROOT = 61 // { int chroot(char *path); } SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } SYS_VFORK = 66 // { int vfork(void); } SYS_SBRK = 69 // { int sbrk(int incr); } SYS_SSTK = 70 // { int sstk(int incr); } - SYS_OVADVISE = 72 // { int ovadvise(int anom); } vadvise ovadvise_args int SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } - SYS_MPROTECT = 74 // { int mprotect(const void *addr, size_t len, int prot); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } @@ -124,14 +121,10 @@ const ( SYS_SETGID = 181 // { int setgid(gid_t gid); } SYS_SETEGID = 182 // { int setegid(gid_t egid); } SYS_SETEUID = 183 // { int seteuid(uid_t euid); } - SYS_STAT = 188 // { int stat(char *path, struct stat *ub); } - SYS_FSTAT = 189 // { int fstat(int fd, struct stat *sb); } - SYS_LSTAT = 190 // { int lstat(char *path, struct stat *ub); } SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int - SYS_GETDIRENTRIES = 196 // { int getdirentries(int fd, char *buf, u_int count, long *basep); } SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } @@ -143,12 +136,12 @@ const ( SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } - SYS_MSGRCV = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } - SYS_CLOCK_SETTIME = 233 // { int clock_settime( clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } @@ -157,50 +150,44 @@ const ( SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } - SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate( struct ffclock_estimate *cest); } - SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate( struct ffclock_estimate *cest); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } - SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id,int which, clockid_t *clock_id); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } SYS_RFORK = 251 // { int rfork(int flags); } - SYS_OPENBSD_POLL = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); } SYS_ISSETUGID = 253 // { int issetugid(void); } SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } - SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); } - SYS_GETDENTS = 272 // { int getdents(int fd, char *buf, size_t count); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } - SYS_NSTAT = 278 // { int nstat(char *path, struct nstat *ub); } - SYS_NFSTAT = 279 // { int nfstat(int fd, struct nstat *sb); } - SYS_NLSTAT = 280 // { int nlstat(char *path, struct nstat *ub); } SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } - SYS_FHSTAT = 299 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } SYS_MODNEXT = 300 // { int modnext(int modid); } - SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat *stat); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } SYS_MODFNEXT = 302 // { int modfnext(int modid); } SYS_MODFIND = 303 // { int modfind(const char *name); } SYS_KLDLOAD = 304 // { int kldload(const char *file); } SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } SYS_KLDFIND = 306 // { int kldfind(const char *file); } SYS_KLDNEXT = 307 // { int kldnext(int fileid); } - SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } SYS_GETSID = 310 // { int getsid(pid_t pid); } SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } - SYS_AIO_SUSPEND = 315 // { int aio_suspend( struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } SYS_YIELD = 321 // { int yield(void); } SYS_MLOCKALL = 324 // { int mlockall(int how); } SYS_MUNLOCKALL = 325 // { int munlockall(void); } - SYS___GETCWD = 326 // { int __getcwd(char *buf, u_int buflen); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } @@ -226,14 +213,13 @@ const ( SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } - SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } - SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete( struct aiocb **aiocbp, struct timespec *timeout); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } SYS_KQUEUE = 362 // { int kqueue(void); } - SYS_KEVENT = 363 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } @@ -251,10 +237,6 @@ const ( SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } - SYS_GETFSSTAT = 395 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } - SYS_STATFS = 396 // { int statfs(char *path, struct statfs *buf); } - SYS_FSTATFS = 397 // { int fstatfs(int fd, struct statfs *buf); } - SYS_FHSTATFS = 398 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } @@ -267,14 +249,14 @@ const ( SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } - SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link( const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } - SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link( const char *path, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } - SYS_SIGRETURN = 417 // { int sigreturn( const struct __ucontext *sigcntxp); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } - SYS_SETCONTEXT = 422 // { int setcontext( const struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } SYS_SWAPOFF = 424 // { int swapoff(const char *name); } SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } @@ -288,10 +270,10 @@ const ( SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file( const char *path, int attrnamespace, void *data, size_t nbytes); } - SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link( const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } - SYS_THR_SUSPEND = 442 // { int thr_suspend( const struct timespec *timeout); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } SYS_THR_WAKE = 443 // { int thr_wake(long id); } SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } @@ -300,17 +282,17 @@ const ( SYS_SETAUID = 448 // { int setauid(uid_t *auid); } SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } - SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } - SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr( struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } SYS_AUDITCTL = 453 // { int auditctl(char *path); } SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } - SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } - SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } - SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len,unsigned msg_prio, const struct timespec *abs_timeout);} - SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } @@ -319,7 +301,7 @@ const ( SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } - SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr * from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } @@ -338,14 +320,12 @@ const ( SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } - SYS_FSTATAT = 493 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } - SYS_MKNODAT = 498 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } - SYS_READLINKAT = 500 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } @@ -391,7 +371,24 @@ const ( SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } - SYS_NUMA_GETAFFINITY = 548 // { int numa_getaffinity(cpuwhich_t which, id_t id, struct vm_domain_policy_entry *policy); } - SYS_NUMA_SETAFFINITY = 549 // { int numa_setaffinity(cpuwhich_t which, id_t id, const struct vm_domain_policy_entry *policy); } SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } ) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go new file mode 100644 index 00000000000..ee37aaa0c90 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go @@ -0,0 +1,394 @@ +// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12 +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +package unix + +const ( + // SYS_NOSYS = 0; // { int nosys(void); } syscall nosys_args int + SYS_EXIT = 1 // { void sys_exit(int rval); } exit sys_exit_args void + SYS_FORK = 2 // { int fork(void); } + SYS_READ = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); } + SYS_OPEN = 5 // { int open(char *path, int flags, int mode); } + SYS_CLOSE = 6 // { int close(int fd); } + SYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } + SYS_LINK = 9 // { int link(char *path, char *link); } + SYS_UNLINK = 10 // { int unlink(char *path); } + SYS_CHDIR = 12 // { int chdir(char *path); } + SYS_FCHDIR = 13 // { int fchdir(int fd); } + SYS_CHMOD = 15 // { int chmod(char *path, int mode); } + SYS_CHOWN = 16 // { int chown(char *path, int uid, int gid); } + SYS_BREAK = 17 // { caddr_t break(char *nsize); } + SYS_GETPID = 20 // { pid_t getpid(void); } + SYS_MOUNT = 21 // { int mount(char *type, char *path, int flags, caddr_t data); } + SYS_UNMOUNT = 22 // { int unmount(char *path, int flags); } + SYS_SETUID = 23 // { int setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t getuid(void); } + SYS_GETEUID = 25 // { uid_t geteuid(void); } + SYS_PTRACE = 26 // { int ptrace(int req, pid_t pid, caddr_t addr, int data); } + SYS_RECVMSG = 27 // { int recvmsg(int s, struct msghdr *msg, int flags); } + SYS_SENDMSG = 28 // { int sendmsg(int s, struct msghdr *msg, int flags); } + SYS_RECVFROM = 29 // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); } + SYS_ACCEPT = 30 // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); } + SYS_GETPEERNAME = 31 // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_GETSOCKNAME = 32 // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); } + SYS_ACCESS = 33 // { int access(char *path, int amode); } + SYS_CHFLAGS = 34 // { int chflags(const char *path, u_long flags); } + SYS_FCHFLAGS = 35 // { int fchflags(int fd, u_long flags); } + SYS_SYNC = 36 // { int sync(void); } + SYS_KILL = 37 // { int kill(int pid, int signum); } + SYS_GETPPID = 39 // { pid_t getppid(void); } + SYS_DUP = 41 // { int dup(u_int fd); } + SYS_GETEGID = 43 // { gid_t getegid(void); } + SYS_PROFIL = 44 // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); } + SYS_KTRACE = 45 // { int ktrace(const char *fname, int ops, int facs, int pid); } + SYS_GETGID = 47 // { gid_t getgid(void); } + SYS_GETLOGIN = 49 // { int getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int setlogin(char *namebuf); } + SYS_ACCT = 51 // { int acct(char *path); } + SYS_SIGALTSTACK = 53 // { int sigaltstack(stack_t *ss, stack_t *oss); } + SYS_IOCTL = 54 // { int ioctl(int fd, u_long com, caddr_t data); } + SYS_REBOOT = 55 // { int reboot(int opt); } + SYS_REVOKE = 56 // { int revoke(char *path); } + SYS_SYMLINK = 57 // { int symlink(char *path, char *link); } + SYS_READLINK = 58 // { ssize_t readlink(char *path, char *buf, size_t count); } + SYS_EXECVE = 59 // { int execve(char *fname, char **argv, char **envv); } + SYS_UMASK = 60 // { int umask(int newmask); } + SYS_CHROOT = 61 // { int chroot(char *path); } + SYS_MSYNC = 65 // { int msync(void *addr, size_t len, int flags); } + SYS_VFORK = 66 // { int vfork(void); } + SYS_SBRK = 69 // { int sbrk(int incr); } + SYS_SSTK = 70 // { int sstk(int incr); } + SYS_MUNMAP = 73 // { int munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int mprotect(void *addr, size_t len, int prot); } + SYS_MADVISE = 75 // { int madvise(void *addr, size_t len, int behav); } + SYS_MINCORE = 78 // { int mincore(const void *addr, size_t len, char *vec); } + SYS_GETGROUPS = 79 // { int getgroups(u_int gidsetsize, gid_t *gidset); } + SYS_SETGROUPS = 80 // { int setgroups(u_int gidsetsize, gid_t *gidset); } + SYS_GETPGRP = 81 // { int getpgrp(void); } + SYS_SETPGID = 82 // { int setpgid(int pid, int pgid); } + SYS_SETITIMER = 83 // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); } + SYS_SWAPON = 85 // { int swapon(char *name); } + SYS_GETITIMER = 86 // { int getitimer(u_int which, struct itimerval *itv); } + SYS_GETDTABLESIZE = 89 // { int getdtablesize(void); } + SYS_DUP2 = 90 // { int dup2(u_int from, u_int to); } + SYS_FCNTL = 92 // { int fcntl(int fd, int cmd, long arg); } + SYS_SELECT = 93 // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); } + SYS_FSYNC = 95 // { int fsync(int fd); } + SYS_SETPRIORITY = 96 // { int setpriority(int which, int who, int prio); } + SYS_SOCKET = 97 // { int socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int connect(int s, caddr_t name, int namelen); } + SYS_GETPRIORITY = 100 // { int getpriority(int which, int who); } + SYS_BIND = 104 // { int bind(int s, caddr_t name, int namelen); } + SYS_SETSOCKOPT = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); } + SYS_LISTEN = 106 // { int listen(int s, int backlog); } + SYS_GETTIMEOFDAY = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); } + SYS_GETRUSAGE = 117 // { int getrusage(int who, struct rusage *rusage); } + SYS_GETSOCKOPT = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); } + SYS_READV = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_WRITEV = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); } + SYS_SETTIMEOFDAY = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); } + SYS_FCHOWN = 123 // { int fchown(int fd, int uid, int gid); } + SYS_FCHMOD = 124 // { int fchmod(int fd, int mode); } + SYS_SETREUID = 126 // { int setreuid(int ruid, int euid); } + SYS_SETREGID = 127 // { int setregid(int rgid, int egid); } + SYS_RENAME = 128 // { int rename(char *from, char *to); } + SYS_FLOCK = 131 // { int flock(int fd, int how); } + SYS_MKFIFO = 132 // { int mkfifo(char *path, int mode); } + SYS_SENDTO = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); } + SYS_SHUTDOWN = 134 // { int shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); } + SYS_MKDIR = 136 // { int mkdir(char *path, int mode); } + SYS_RMDIR = 137 // { int rmdir(char *path); } + SYS_UTIMES = 138 // { int utimes(char *path, struct timeval *tptr); } + SYS_ADJTIME = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); } + SYS_SETSID = 147 // { int setsid(void); } + SYS_QUOTACTL = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); } + SYS_NLM_SYSCALL = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); } + SYS_NFSSVC = 155 // { int nfssvc(int flag, caddr_t argp); } + SYS_LGETFH = 160 // { int lgetfh(char *fname, struct fhandle *fhp); } + SYS_GETFH = 161 // { int getfh(char *fname, struct fhandle *fhp); } + SYS_SYSARCH = 165 // { int sysarch(int op, char *parms); } + SYS_RTPRIO = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); } + SYS_SEMSYS = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); } + SYS_MSGSYS = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); } + SYS_SHMSYS = 171 // { int shmsys(int which, int a2, int a3, int a4); } + SYS_SETFIB = 175 // { int setfib(int fibnum); } + SYS_NTP_ADJTIME = 176 // { int ntp_adjtime(struct timex *tp); } + SYS_SETGID = 181 // { int setgid(gid_t gid); } + SYS_SETEGID = 182 // { int setegid(gid_t egid); } + SYS_SETEUID = 183 // { int seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { int pathconf(char *path, int name); } + SYS_FPATHCONF = 192 // { int fpathconf(int fd, int name); } + SYS_GETRLIMIT = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int + SYS_SETRLIMIT = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int + SYS___SYSCTL = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int + SYS_MLOCK = 203 // { int mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int munlock(const void *addr, size_t len); } + SYS_UNDELETE = 205 // { int undelete(char *path); } + SYS_FUTIMES = 206 // { int futimes(int fd, struct timeval *tptr); } + SYS_GETPGID = 207 // { int getpgid(pid_t pid); } + SYS_POLL = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); } + SYS_SEMGET = 221 // { int semget(key_t key, int nsems, int semflg); } + SYS_SEMOP = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); } + SYS_MSGGET = 225 // { int msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); } + SYS_MSGRCV = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); } + SYS_SHMAT = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); } + SYS_SHMDT = 230 // { int shmdt(const void *shmaddr); } + SYS_SHMGET = 231 // { int shmget(key_t key, size_t size, int shmflg); } + SYS_CLOCK_GETTIME = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); } + SYS_CLOCK_SETTIME = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); } + SYS_CLOCK_GETRES = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); } + SYS_KTIMER_CREATE = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); } + SYS_KTIMER_DELETE = 236 // { int ktimer_delete(int timerid); } + SYS_KTIMER_SETTIME = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); } + SYS_KTIMER_GETTIME = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); } + SYS_KTIMER_GETOVERRUN = 239 // { int ktimer_getoverrun(int timerid); } + SYS_NANOSLEEP = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); } + SYS_FFCLOCK_GETCOUNTER = 241 // { int ffclock_getcounter(ffcounter *ffcount); } + SYS_FFCLOCK_SETESTIMATE = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); } + SYS_FFCLOCK_GETESTIMATE = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); } + SYS_CLOCK_NANOSLEEP = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); } + SYS_CLOCK_GETCPUCLOCKID2 = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); } + SYS_NTP_GETTIME = 248 // { int ntp_gettime(struct ntptimeval *ntvp); } + SYS_MINHERIT = 250 // { int minherit(void *addr, size_t len, int inherit); } + SYS_RFORK = 251 // { int rfork(int flags); } + SYS_ISSETUGID = 253 // { int issetugid(void); } + SYS_LCHOWN = 254 // { int lchown(char *path, int uid, int gid); } + SYS_AIO_READ = 255 // { int aio_read(struct aiocb *aiocbp); } + SYS_AIO_WRITE = 256 // { int aio_write(struct aiocb *aiocbp); } + SYS_LIO_LISTIO = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); } + SYS_LCHMOD = 274 // { int lchmod(char *path, mode_t mode); } + SYS_LUTIMES = 276 // { int lutimes(char *path, struct timeval *tptr); } + SYS_PREADV = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_PWRITEV = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); } + SYS_FHOPEN = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); } + SYS_MODNEXT = 300 // { int modnext(int modid); } + SYS_MODSTAT = 301 // { int modstat(int modid, struct module_stat* stat); } + SYS_MODFNEXT = 302 // { int modfnext(int modid); } + SYS_MODFIND = 303 // { int modfind(const char *name); } + SYS_KLDLOAD = 304 // { int kldload(const char *file); } + SYS_KLDUNLOAD = 305 // { int kldunload(int fileid); } + SYS_KLDFIND = 306 // { int kldfind(const char *file); } + SYS_KLDNEXT = 307 // { int kldnext(int fileid); } + SYS_KLDSTAT = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); } + SYS_KLDFIRSTMOD = 309 // { int kldfirstmod(int fileid); } + SYS_GETSID = 310 // { int getsid(pid_t pid); } + SYS_SETRESUID = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } + SYS_SETRESGID = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } + SYS_AIO_RETURN = 314 // { ssize_t aio_return(struct aiocb *aiocbp); } + SYS_AIO_SUSPEND = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); } + SYS_AIO_CANCEL = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); } + SYS_AIO_ERROR = 317 // { int aio_error(struct aiocb *aiocbp); } + SYS_YIELD = 321 // { int yield(void); } + SYS_MLOCKALL = 324 // { int mlockall(int how); } + SYS_MUNLOCKALL = 325 // { int munlockall(void); } + SYS___GETCWD = 326 // { int __getcwd(char *buf, size_t buflen); } + SYS_SCHED_SETPARAM = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); } + SYS_SCHED_GETPARAM = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); } + SYS_SCHED_SETSCHEDULER = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); } + SYS_SCHED_GETSCHEDULER = 330 // { int sched_getscheduler (pid_t pid); } + SYS_SCHED_YIELD = 331 // { int sched_yield (void); } + SYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); } + SYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); } + SYS_SCHED_RR_GET_INTERVAL = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); } + SYS_UTRACE = 335 // { int utrace(const void *addr, size_t len); } + SYS_KLDSYM = 337 // { int kldsym(int fileid, int cmd, void *data); } + SYS_JAIL = 338 // { int jail(struct jail *jail); } + SYS_SIGPROCMASK = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); } + SYS_SIGSUSPEND = 341 // { int sigsuspend(const sigset_t *sigmask); } + SYS_SIGPENDING = 343 // { int sigpending(sigset_t *set); } + SYS_SIGTIMEDWAIT = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); } + SYS_SIGWAITINFO = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); } + SYS___ACL_GET_FILE = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FILE = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_GET_FD = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_FD = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_FILE = 351 // { int __acl_delete_file(const char *path, acl_type_t type); } + SYS___ACL_DELETE_FD = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); } + SYS___ACL_ACLCHECK_FILE = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_ACLCHECK_FD = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); } + SYS_EXTATTRCTL = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); } + SYS_EXTATTR_SET_FILE = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FILE = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FILE = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); } + SYS_AIO_WAITCOMPLETE = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); } + SYS_GETRESUID = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } + SYS_GETRESGID = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } + SYS_KQUEUE = 362 // { int kqueue(void); } + SYS_EXTATTR_SET_FD = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_FD = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_FD = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); } + SYS___SETUGID = 374 // { int __setugid(int flag); } + SYS_EACCESS = 376 // { int eaccess(char *path, int amode); } + SYS_NMOUNT = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS___MAC_GET_PROC = 384 // { int __mac_get_proc(struct mac *mac_p); } + SYS___MAC_SET_PROC = 385 // { int __mac_set_proc(struct mac *mac_p); } + SYS___MAC_GET_FD = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); } + SYS___MAC_GET_FILE = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_FD = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); } + SYS___MAC_SET_FILE = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); } + SYS_KENV = 390 // { int kenv(int what, const char *name, char *value, int len); } + SYS_LCHFLAGS = 391 // { int lchflags(const char *path, u_long flags); } + SYS_UUIDGEN = 392 // { int uuidgen(struct uuid *store, int count); } + SYS_SENDFILE = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); } + SYS_MAC_SYSCALL = 394 // { int mac_syscall(const char *policy, int call, void *arg); } + SYS_KSEM_CLOSE = 400 // { int ksem_close(semid_t id); } + SYS_KSEM_POST = 401 // { int ksem_post(semid_t id); } + SYS_KSEM_WAIT = 402 // { int ksem_wait(semid_t id); } + SYS_KSEM_TRYWAIT = 403 // { int ksem_trywait(semid_t id); } + SYS_KSEM_INIT = 404 // { int ksem_init(semid_t *idp, unsigned int value); } + SYS_KSEM_OPEN = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); } + SYS_KSEM_UNLINK = 406 // { int ksem_unlink(const char *name); } + SYS_KSEM_GETVALUE = 407 // { int ksem_getvalue(semid_t id, int *val); } + SYS_KSEM_DESTROY = 408 // { int ksem_destroy(semid_t id); } + SYS___MAC_GET_PID = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); } + SYS___MAC_GET_LINK = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); } + SYS___MAC_SET_LINK = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); } + SYS_EXTATTR_SET_LINK = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_GET_LINK = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); } + SYS_EXTATTR_DELETE_LINK = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); } + SYS___MAC_EXECVE = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); } + SYS_SIGACTION = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); } + SYS_SIGRETURN = 417 // { int sigreturn(const struct __ucontext *sigcntxp); } + SYS_GETCONTEXT = 421 // { int getcontext(struct __ucontext *ucp); } + SYS_SETCONTEXT = 422 // { int setcontext(const struct __ucontext *ucp); } + SYS_SWAPCONTEXT = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); } + SYS_SWAPOFF = 424 // { int swapoff(const char *name); } + SYS___ACL_GET_LINK = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_SET_LINK = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS___ACL_DELETE_LINK = 427 // { int __acl_delete_link(const char *path, acl_type_t type); } + SYS___ACL_ACLCHECK_LINK = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); } + SYS_SIGWAIT = 429 // { int sigwait(const sigset_t *set, int *sig); } + SYS_THR_CREATE = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); } + SYS_THR_EXIT = 431 // { void thr_exit(long *state); } + SYS_THR_SELF = 432 // { int thr_self(long *id); } + SYS_THR_KILL = 433 // { int thr_kill(long id, int sig); } + SYS_JAIL_ATTACH = 436 // { int jail_attach(int jid); } + SYS_EXTATTR_LIST_FD = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_FILE = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_EXTATTR_LIST_LINK = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); } + SYS_KSEM_TIMEDWAIT = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); } + SYS_THR_SUSPEND = 442 // { int thr_suspend(const struct timespec *timeout); } + SYS_THR_WAKE = 443 // { int thr_wake(long id); } + SYS_KLDUNLOADF = 444 // { int kldunloadf(int fileid, int flags); } + SYS_AUDIT = 445 // { int audit(const void *record, u_int length); } + SYS_AUDITON = 446 // { int auditon(int cmd, void *data, u_int length); } + SYS_GETAUID = 447 // { int getauid(uid_t *auid); } + SYS_SETAUID = 448 // { int setauid(uid_t *auid); } + SYS_GETAUDIT = 449 // { int getaudit(struct auditinfo *auditinfo); } + SYS_SETAUDIT = 450 // { int setaudit(struct auditinfo *auditinfo); } + SYS_GETAUDIT_ADDR = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_SETAUDIT_ADDR = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); } + SYS_AUDITCTL = 453 // { int auditctl(char *path); } + SYS__UMTX_OP = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); } + SYS_THR_NEW = 455 // { int thr_new(struct thr_param *param, int param_size); } + SYS_SIGQUEUE = 456 // { int sigqueue(pid_t pid, int signum, void *value); } + SYS_KMQ_OPEN = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); } + SYS_KMQ_SETATTR = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); } + SYS_KMQ_TIMEDRECEIVE = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_TIMEDSEND = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); } + SYS_KMQ_NOTIFY = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); } + SYS_KMQ_UNLINK = 462 // { int kmq_unlink(const char *path); } + SYS_ABORT2 = 463 // { int abort2(const char *why, int nargs, void **args); } + SYS_THR_SET_NAME = 464 // { int thr_set_name(long id, const char *name); } + SYS_AIO_FSYNC = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); } + SYS_RTPRIO_THREAD = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); } + SYS_SCTP_PEELOFF = 471 // { int sctp_peeloff(int sd, uint32_t name); } + SYS_SCTP_GENERIC_SENDMSG = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); } + SYS_SCTP_GENERIC_RECVMSG = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); } + SYS_PREAD = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); } + SYS_PWRITE = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); } + SYS_MMAP = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); } + SYS_LSEEK = 478 // { off_t lseek(int fd, off_t offset, int whence); } + SYS_TRUNCATE = 479 // { int truncate(char *path, off_t length); } + SYS_FTRUNCATE = 480 // { int ftruncate(int fd, off_t length); } + SYS_THR_KILL2 = 481 // { int thr_kill2(pid_t pid, long id, int sig); } + SYS_SHM_OPEN = 482 // { int shm_open(const char *path, int flags, mode_t mode); } + SYS_SHM_UNLINK = 483 // { int shm_unlink(const char *path); } + SYS_CPUSET = 484 // { int cpuset(cpusetid_t *setid); } + SYS_CPUSET_SETID = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); } + SYS_CPUSET_GETID = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); } + SYS_CPUSET_GETAFFINITY = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); } + SYS_CPUSET_SETAFFINITY = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); } + SYS_FACCESSAT = 489 // { int faccessat(int fd, char *path, int amode, int flag); } + SYS_FCHMODAT = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); } + SYS_FCHOWNAT = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); } + SYS_FEXECVE = 492 // { int fexecve(int fd, char **argv, char **envv); } + SYS_FUTIMESAT = 494 // { int futimesat(int fd, char *path, struct timeval *times); } + SYS_LINKAT = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); } + SYS_MKDIRAT = 496 // { int mkdirat(int fd, char *path, mode_t mode); } + SYS_MKFIFOAT = 497 // { int mkfifoat(int fd, char *path, mode_t mode); } + SYS_OPENAT = 499 // { int openat(int fd, char *path, int flag, mode_t mode); } + SYS_READLINKAT = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); } + SYS_RENAMEAT = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); } + SYS_SYMLINKAT = 502 // { int symlinkat(char *path1, int fd, char *path2); } + SYS_UNLINKAT = 503 // { int unlinkat(int fd, char *path, int flag); } + SYS_POSIX_OPENPT = 504 // { int posix_openpt(int flags); } + SYS_GSSD_SYSCALL = 505 // { int gssd_syscall(char *path); } + SYS_JAIL_GET = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_SET = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); } + SYS_JAIL_REMOVE = 508 // { int jail_remove(int jid); } + SYS_CLOSEFROM = 509 // { int closefrom(int lowfd); } + SYS___SEMCTL = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); } + SYS_MSGCTL = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); } + SYS_SHMCTL = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); } + SYS_LPATHCONF = 513 // { int lpathconf(char *path, int name); } + SYS___CAP_RIGHTS_GET = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); } + SYS_CAP_ENTER = 516 // { int cap_enter(void); } + SYS_CAP_GETMODE = 517 // { int cap_getmode(u_int *modep); } + SYS_PDFORK = 518 // { int pdfork(int *fdp, int flags); } + SYS_PDKILL = 519 // { int pdkill(int fd, int signum); } + SYS_PDGETPID = 520 // { int pdgetpid(int fd, pid_t *pidp); } + SYS_PSELECT = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); } + SYS_GETLOGINCLASS = 523 // { int getloginclass(char *namebuf, size_t namelen); } + SYS_SETLOGINCLASS = 524 // { int setloginclass(const char *namebuf); } + SYS_RCTL_GET_RACCT = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_RULES = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_GET_LIMITS = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_ADD_RULE = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_RCTL_REMOVE_RULE = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); } + SYS_POSIX_FALLOCATE = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); } + SYS_POSIX_FADVISE = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); } + SYS_WAIT6 = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); } + SYS_CAP_RIGHTS_LIMIT = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); } + SYS_CAP_IOCTLS_LIMIT = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); } + SYS_CAP_IOCTLS_GET = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); } + SYS_CAP_FCNTLS_LIMIT = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); } + SYS_CAP_FCNTLS_GET = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); } + SYS_BINDAT = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); } + SYS_CONNECTAT = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); } + SYS_CHFLAGSAT = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); } + SYS_ACCEPT4 = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); } + SYS_PIPE2 = 542 // { int pipe2(int *fildes, int flags); } + SYS_AIO_MLOCK = 543 // { int aio_mlock(struct aiocb *aiocbp); } + SYS_PROCCTL = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); } + SYS_PPOLL = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); } + SYS_FUTIMENS = 546 // { int futimens(int fd, struct timespec *times); } + SYS_UTIMENSAT = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); } + SYS_FDATASYNC = 550 // { int fdatasync(int fd); } + SYS_FSTAT = 551 // { int fstat(int fd, struct stat *sb); } + SYS_FSTATAT = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); } + SYS_FHSTAT = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); } + SYS_GETDIRENTRIES = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); } + SYS_STATFS = 555 // { int statfs(char *path, struct statfs *buf); } + SYS_FSTATFS = 556 // { int fstatfs(int fd, struct statfs *buf); } + SYS_GETFSSTAT = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); } + SYS_FHSTATFS = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); } + SYS_MKNODAT = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); } + SYS_KEVENT = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); } + SYS_CPUSET_GETDOMAIN = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); } + SYS_CPUSET_SETDOMAIN = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); } + SYS_GETRANDOM = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); } + SYS_GETFHAT = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); } + SYS_FHLINK = 565 // { int fhlink(struct fhandle *fhp, const char *to); } + SYS_FHLINKAT = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); } + SYS_FHREADLINK = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); } + SYS___SYSCTLBYNAME = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } + SYS_CLOSE_RANGE = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); } +) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go new file mode 100644 index 00000000000..44a764c9917 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go @@ -0,0 +1,311 @@ +// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/include /tmp/include/asm/unistd.h +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux +// +build loong64,linux + +package unix + +const ( + SYS_IO_SETUP = 0 + SYS_IO_DESTROY = 1 + SYS_IO_SUBMIT = 2 + SYS_IO_CANCEL = 3 + SYS_IO_GETEVENTS = 4 + SYS_SETXATTR = 5 + SYS_LSETXATTR = 6 + SYS_FSETXATTR = 7 + SYS_GETXATTR = 8 + SYS_LGETXATTR = 9 + SYS_FGETXATTR = 10 + SYS_LISTXATTR = 11 + SYS_LLISTXATTR = 12 + SYS_FLISTXATTR = 13 + SYS_REMOVEXATTR = 14 + SYS_LREMOVEXATTR = 15 + SYS_FREMOVEXATTR = 16 + SYS_GETCWD = 17 + SYS_LOOKUP_DCOOKIE = 18 + SYS_EVENTFD2 = 19 + SYS_EPOLL_CREATE1 = 20 + SYS_EPOLL_CTL = 21 + SYS_EPOLL_PWAIT = 22 + SYS_DUP = 23 + SYS_DUP3 = 24 + SYS_FCNTL = 25 + SYS_INOTIFY_INIT1 = 26 + SYS_INOTIFY_ADD_WATCH = 27 + SYS_INOTIFY_RM_WATCH = 28 + SYS_IOCTL = 29 + SYS_IOPRIO_SET = 30 + SYS_IOPRIO_GET = 31 + SYS_FLOCK = 32 + SYS_MKNODAT = 33 + SYS_MKDIRAT = 34 + SYS_UNLINKAT = 35 + SYS_SYMLINKAT = 36 + SYS_LINKAT = 37 + SYS_UMOUNT2 = 39 + SYS_MOUNT = 40 + SYS_PIVOT_ROOT = 41 + SYS_NFSSERVCTL = 42 + SYS_STATFS = 43 + SYS_FSTATFS = 44 + SYS_TRUNCATE = 45 + SYS_FTRUNCATE = 46 + SYS_FALLOCATE = 47 + SYS_FACCESSAT = 48 + SYS_CHDIR = 49 + SYS_FCHDIR = 50 + SYS_CHROOT = 51 + SYS_FCHMOD = 52 + SYS_FCHMODAT = 53 + SYS_FCHOWNAT = 54 + SYS_FCHOWN = 55 + SYS_OPENAT = 56 + SYS_CLOSE = 57 + SYS_VHANGUP = 58 + SYS_PIPE2 = 59 + SYS_QUOTACTL = 60 + SYS_GETDENTS64 = 61 + SYS_LSEEK = 62 + SYS_READ = 63 + SYS_WRITE = 64 + SYS_READV = 65 + SYS_WRITEV = 66 + SYS_PREAD64 = 67 + SYS_PWRITE64 = 68 + SYS_PREADV = 69 + SYS_PWRITEV = 70 + SYS_SENDFILE = 71 + SYS_PSELECT6 = 72 + SYS_PPOLL = 73 + SYS_SIGNALFD4 = 74 + SYS_VMSPLICE = 75 + SYS_SPLICE = 76 + SYS_TEE = 77 + SYS_READLINKAT = 78 + SYS_SYNC = 81 + SYS_FSYNC = 82 + SYS_FDATASYNC = 83 + SYS_SYNC_FILE_RANGE = 84 + SYS_TIMERFD_CREATE = 85 + SYS_TIMERFD_SETTIME = 86 + SYS_TIMERFD_GETTIME = 87 + SYS_UTIMENSAT = 88 + SYS_ACCT = 89 + SYS_CAPGET = 90 + SYS_CAPSET = 91 + SYS_PERSONALITY = 92 + SYS_EXIT = 93 + SYS_EXIT_GROUP = 94 + SYS_WAITID = 95 + SYS_SET_TID_ADDRESS = 96 + SYS_UNSHARE = 97 + SYS_FUTEX = 98 + SYS_SET_ROBUST_LIST = 99 + SYS_GET_ROBUST_LIST = 100 + SYS_NANOSLEEP = 101 + SYS_GETITIMER = 102 + SYS_SETITIMER = 103 + SYS_KEXEC_LOAD = 104 + SYS_INIT_MODULE = 105 + SYS_DELETE_MODULE = 106 + SYS_TIMER_CREATE = 107 + SYS_TIMER_GETTIME = 108 + SYS_TIMER_GETOVERRUN = 109 + SYS_TIMER_SETTIME = 110 + SYS_TIMER_DELETE = 111 + SYS_CLOCK_SETTIME = 112 + SYS_CLOCK_GETTIME = 113 + SYS_CLOCK_GETRES = 114 + SYS_CLOCK_NANOSLEEP = 115 + SYS_SYSLOG = 116 + SYS_PTRACE = 117 + SYS_SCHED_SETPARAM = 118 + SYS_SCHED_SETSCHEDULER = 119 + SYS_SCHED_GETSCHEDULER = 120 + SYS_SCHED_GETPARAM = 121 + SYS_SCHED_SETAFFINITY = 122 + SYS_SCHED_GETAFFINITY = 123 + SYS_SCHED_YIELD = 124 + SYS_SCHED_GET_PRIORITY_MAX = 125 + SYS_SCHED_GET_PRIORITY_MIN = 126 + SYS_SCHED_RR_GET_INTERVAL = 127 + SYS_RESTART_SYSCALL = 128 + SYS_KILL = 129 + SYS_TKILL = 130 + SYS_TGKILL = 131 + SYS_SIGALTSTACK = 132 + SYS_RT_SIGSUSPEND = 133 + SYS_RT_SIGACTION = 134 + SYS_RT_SIGPROCMASK = 135 + SYS_RT_SIGPENDING = 136 + SYS_RT_SIGTIMEDWAIT = 137 + SYS_RT_SIGQUEUEINFO = 138 + SYS_RT_SIGRETURN = 139 + SYS_SETPRIORITY = 140 + SYS_GETPRIORITY = 141 + SYS_REBOOT = 142 + SYS_SETREGID = 143 + SYS_SETGID = 144 + SYS_SETREUID = 145 + SYS_SETUID = 146 + SYS_SETRESUID = 147 + SYS_GETRESUID = 148 + SYS_SETRESGID = 149 + SYS_GETRESGID = 150 + SYS_SETFSUID = 151 + SYS_SETFSGID = 152 + SYS_TIMES = 153 + SYS_SETPGID = 154 + SYS_GETPGID = 155 + SYS_GETSID = 156 + SYS_SETSID = 157 + SYS_GETGROUPS = 158 + SYS_SETGROUPS = 159 + SYS_UNAME = 160 + SYS_SETHOSTNAME = 161 + SYS_SETDOMAINNAME = 162 + SYS_GETRUSAGE = 165 + SYS_UMASK = 166 + SYS_PRCTL = 167 + SYS_GETCPU = 168 + SYS_GETTIMEOFDAY = 169 + SYS_SETTIMEOFDAY = 170 + SYS_ADJTIMEX = 171 + SYS_GETPID = 172 + SYS_GETPPID = 173 + SYS_GETUID = 174 + SYS_GETEUID = 175 + SYS_GETGID = 176 + SYS_GETEGID = 177 + SYS_GETTID = 178 + SYS_SYSINFO = 179 + SYS_MQ_OPEN = 180 + SYS_MQ_UNLINK = 181 + SYS_MQ_TIMEDSEND = 182 + SYS_MQ_TIMEDRECEIVE = 183 + SYS_MQ_NOTIFY = 184 + SYS_MQ_GETSETATTR = 185 + SYS_MSGGET = 186 + SYS_MSGCTL = 187 + SYS_MSGRCV = 188 + SYS_MSGSND = 189 + SYS_SEMGET = 190 + SYS_SEMCTL = 191 + SYS_SEMTIMEDOP = 192 + SYS_SEMOP = 193 + SYS_SHMGET = 194 + SYS_SHMCTL = 195 + SYS_SHMAT = 196 + SYS_SHMDT = 197 + SYS_SOCKET = 198 + SYS_SOCKETPAIR = 199 + SYS_BIND = 200 + SYS_LISTEN = 201 + SYS_ACCEPT = 202 + SYS_CONNECT = 203 + SYS_GETSOCKNAME = 204 + SYS_GETPEERNAME = 205 + SYS_SENDTO = 206 + SYS_RECVFROM = 207 + SYS_SETSOCKOPT = 208 + SYS_GETSOCKOPT = 209 + SYS_SHUTDOWN = 210 + SYS_SENDMSG = 211 + SYS_RECVMSG = 212 + SYS_READAHEAD = 213 + SYS_BRK = 214 + SYS_MUNMAP = 215 + SYS_MREMAP = 216 + SYS_ADD_KEY = 217 + SYS_REQUEST_KEY = 218 + SYS_KEYCTL = 219 + SYS_CLONE = 220 + SYS_EXECVE = 221 + SYS_MMAP = 222 + SYS_FADVISE64 = 223 + SYS_SWAPON = 224 + SYS_SWAPOFF = 225 + SYS_MPROTECT = 226 + SYS_MSYNC = 227 + SYS_MLOCK = 228 + SYS_MUNLOCK = 229 + SYS_MLOCKALL = 230 + SYS_MUNLOCKALL = 231 + SYS_MINCORE = 232 + SYS_MADVISE = 233 + SYS_REMAP_FILE_PAGES = 234 + SYS_MBIND = 235 + SYS_GET_MEMPOLICY = 236 + SYS_SET_MEMPOLICY = 237 + SYS_MIGRATE_PAGES = 238 + SYS_MOVE_PAGES = 239 + SYS_RT_TGSIGQUEUEINFO = 240 + SYS_PERF_EVENT_OPEN = 241 + SYS_ACCEPT4 = 242 + SYS_RECVMMSG = 243 + SYS_ARCH_SPECIFIC_SYSCALL = 244 + SYS_WAIT4 = 260 + SYS_PRLIMIT64 = 261 + SYS_FANOTIFY_INIT = 262 + SYS_FANOTIFY_MARK = 263 + SYS_NAME_TO_HANDLE_AT = 264 + SYS_OPEN_BY_HANDLE_AT = 265 + SYS_CLOCK_ADJTIME = 266 + SYS_SYNCFS = 267 + SYS_SETNS = 268 + SYS_SENDMMSG = 269 + SYS_PROCESS_VM_READV = 270 + SYS_PROCESS_VM_WRITEV = 271 + SYS_KCMP = 272 + SYS_FINIT_MODULE = 273 + SYS_SCHED_SETATTR = 274 + SYS_SCHED_GETATTR = 275 + SYS_RENAMEAT2 = 276 + SYS_SECCOMP = 277 + SYS_GETRANDOM = 278 + SYS_MEMFD_CREATE = 279 + SYS_BPF = 280 + SYS_EXECVEAT = 281 + SYS_USERFAULTFD = 282 + SYS_MEMBARRIER = 283 + SYS_MLOCK2 = 284 + SYS_COPY_FILE_RANGE = 285 + SYS_PREADV2 = 286 + SYS_PWRITEV2 = 287 + SYS_PKEY_MPROTECT = 288 + SYS_PKEY_ALLOC = 289 + SYS_PKEY_FREE = 290 + SYS_STATX = 291 + SYS_IO_PGETEVENTS = 292 + SYS_RSEQ = 293 + SYS_KEXEC_FILE_LOAD = 294 + SYS_PIDFD_SEND_SIGNAL = 424 + SYS_IO_URING_SETUP = 425 + SYS_IO_URING_ENTER = 426 + SYS_IO_URING_REGISTER = 427 + SYS_OPEN_TREE = 428 + SYS_MOVE_MOUNT = 429 + SYS_FSOPEN = 430 + SYS_FSCONFIG = 431 + SYS_FSMOUNT = 432 + SYS_FSPICK = 433 + SYS_PIDFD_OPEN = 434 + SYS_CLONE3 = 435 + SYS_CLOSE_RANGE = 436 + SYS_OPENAT2 = 437 + SYS_PIDFD_GETFD = 438 + SYS_FACCESSAT2 = 439 + SYS_PROCESS_MADVISE = 440 + SYS_EPOLL_PWAIT2 = 441 + SYS_MOUNT_SETATTR = 442 + SYS_QUOTACTL_FD = 443 + SYS_LANDLOCK_CREATE_RULESET = 444 + SYS_LANDLOCK_ADD_RULE = 445 + SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_PROCESS_MRELEASE = 448 + SYS_FUTEX_WAITV = 449 + SYS_SET_MEMPOLICY_HOME_NODE = 450 +) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go index c3a5af8623b..3a9c96b2882 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go @@ -309,6 +309,7 @@ const ( SYS_LANDLOCK_CREATE_RULESET = 444 SYS_LANDLOCK_ADD_RULE = 445 SYS_LANDLOCK_RESTRICT_SELF = 446 + SYS_MEMFD_SECRET = 447 SYS_PROCESS_MRELEASE = 448 SYS_FUTEX_WAITV = 449 SYS_SET_MEMPOLICY_HOME_NODE = 450 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go index 885842c0eb4..e2a64f0991a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go @@ -366,30 +366,57 @@ type ICMPv6Filter struct { Filt [8]uint32 } +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x6c - SizeofSockaddrUnix = 0x6a - SizeofSockaddrDatalink = 0x14 - SizeofSockaddrCtl = 0x20 - SizeofSockaddrVM = 0xc - SizeofXvsockpcb = 0xa8 - SizeofXSocket = 0x64 - SizeofXSockbuf = 0x18 - SizeofXVSockPgen = 0x20 - SizeofXucred = 0x4c - SizeofLinger = 0x8 - SizeofIovec = 0x10 - SizeofIPMreq = 0x8 - SizeofIPMreqn = 0xc - SizeofIPv6Mreq = 0x14 - SizeofMsghdr = 0x30 - SizeofCmsghdr = 0xc - SizeofInet4Pktinfo = 0xc - SizeofInet6Pktinfo = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 ) const ( diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go index b23c02337db..34aa775219f 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go @@ -366,30 +366,57 @@ type ICMPv6Filter struct { Filt [8]uint32 } +type TCPConnectionInfo struct { + State uint8 + Snd_wscale uint8 + Rcv_wscale uint8 + _ uint8 + Options uint32 + Flags uint32 + Rto uint32 + Maxseg uint32 + Snd_ssthresh uint32 + Snd_cwnd uint32 + Snd_wnd uint32 + Snd_sbbytes uint32 + Rcv_wnd uint32 + Rttcur uint32 + Srtt uint32 + Rttvar uint32 + Txpackets uint64 + Txbytes uint64 + Txretransmitbytes uint64 + Rxpackets uint64 + Rxbytes uint64 + Rxoutoforderbytes uint64 + Txretransmitpackets uint64 +} + const ( - SizeofSockaddrInet4 = 0x10 - SizeofSockaddrInet6 = 0x1c - SizeofSockaddrAny = 0x6c - SizeofSockaddrUnix = 0x6a - SizeofSockaddrDatalink = 0x14 - SizeofSockaddrCtl = 0x20 - SizeofSockaddrVM = 0xc - SizeofXvsockpcb = 0xa8 - SizeofXSocket = 0x64 - SizeofXSockbuf = 0x18 - SizeofXVSockPgen = 0x20 - SizeofXucred = 0x4c - SizeofLinger = 0x8 - SizeofIovec = 0x10 - SizeofIPMreq = 0x8 - SizeofIPMreqn = 0xc - SizeofIPv6Mreq = 0x14 - SizeofMsghdr = 0x30 - SizeofCmsghdr = 0xc - SizeofInet4Pktinfo = 0xc - SizeofInet6Pktinfo = 0x14 - SizeofIPv6MTUInfo = 0x20 - SizeofICMPv6Filter = 0x20 + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x14 + SizeofSockaddrCtl = 0x20 + SizeofSockaddrVM = 0xc + SizeofXvsockpcb = 0xa8 + SizeofXSocket = 0x64 + SizeofXSockbuf = 0x18 + SizeofXVSockPgen = 0x20 + SizeofXucred = 0x4c + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet4Pktinfo = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 + SizeofTCPConnectionInfo = 0x70 ) const ( diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go index 4eec078e524..dea0c9a607d 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go @@ -90,27 +90,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec - _ [8]byte -} - type Statfs_t struct { Version uint32 Type uint32 @@ -136,31 +115,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -181,14 +135,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -337,41 +283,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETFSBASE = 0x47 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_GETXSTATE = 0x45 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -432,6 +346,8 @@ type FpReg struct { Pad [64]uint8 } +type FpExtendedPrecision struct{} + type PtraceIoDesc struct { Op int32 Offs *byte @@ -444,8 +360,9 @@ type Kevent_t struct { Filter int16 Flags uint16 Fflags uint32 - Data int32 + Data int64 Udata *byte + Ext [4]uint64 } type FdSet struct { diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go index 7622904a532..da0ea0d608a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go @@ -86,26 +86,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec -} - type Statfs_t struct { Version uint32 Type uint32 @@ -131,31 +111,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -177,14 +132,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -333,41 +280,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETFSBASE = 0x47 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_GETXSTATE = 0x45 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -435,6 +350,8 @@ type FpReg struct { Spare [12]uint64 } +type FpExtendedPrecision struct{} + type PtraceIoDesc struct { Op int32 Offs *byte @@ -449,6 +366,7 @@ type Kevent_t struct { Fflags uint32 Data int64 Udata *byte + Ext [4]uint64 } type FdSet struct { diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go index 19223ce8ecf..da8f7404509 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go @@ -33,7 +33,7 @@ type Timeval struct { _ [4]byte } -type Time_t int32 +type Time_t int64 type Rusage struct { Utime Timeval @@ -88,26 +88,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec -} - type Statfs_t struct { Version uint32 Type uint32 @@ -133,31 +113,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -179,14 +134,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -335,41 +282,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETFSBASE = 0x47 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_GETXSTATE = 0x45 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -386,15 +301,15 @@ type PtraceLwpInfoStruct struct { } type __Siginfo struct { - Signo int32 - Errno int32 - Code int32 - Pid int32 - Uid uint32 - Status int32 - Addr *byte - Value [4]byte - X_reason [32]byte + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [4]byte + _ [32]byte } type Sigset_t struct { @@ -402,16 +317,22 @@ type Sigset_t struct { } type Reg struct { - R [13]uint32 - R_sp uint32 - R_lr uint32 - R_pc uint32 - R_cpsr uint32 + R [13]uint32 + Sp uint32 + Lr uint32 + Pc uint32 + Cpsr uint32 } type FpReg struct { - Fpr_fpsr uint32 - Fpr [8][3]uint32 + Fpsr uint32 + Fpr [8]FpExtendedPrecision +} + +type FpExtendedPrecision struct { + Exponent uint32 + Mantissa_hi uint32 + Mantissa_lo uint32 } type PtraceIoDesc struct { @@ -426,8 +347,11 @@ type Kevent_t struct { Filter int16 Flags uint16 Fflags uint32 - Data int32 + _ [4]byte + Data int64 Udata *byte + _ [4]byte + Ext [4]uint64 } type FdSet struct { @@ -453,7 +377,7 @@ type ifMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte + _ uint16 Data ifData } @@ -464,7 +388,6 @@ type IfMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte Data IfData } @@ -532,7 +455,7 @@ type IfaMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte + _ uint16 Metric int32 } @@ -543,7 +466,7 @@ type IfmaMsghdr struct { Addrs int32 Flags int32 Index uint16 - _ [2]byte + _ uint16 } type IfAnnounceMsghdr struct { @@ -560,7 +483,7 @@ type RtMsghdr struct { Version uint8 Type uint8 Index uint16 - _ [2]byte + _ uint16 Flags int32 Addrs int32 Pid int32 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go index 8e3e33f6790..d69988e5e58 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go @@ -86,26 +86,6 @@ type Stat_t struct { Spare [10]uint64 } -type stat_freebsd11_t struct { - Dev uint32 - Ino uint32 - Mode uint16 - Nlink uint16 - Uid uint32 - Gid uint32 - Rdev uint32 - Atim Timespec - Mtim Timespec - Ctim Timespec - Size int64 - Blocks int64 - Blksize int32 - Flags uint32 - Gen uint32 - Lspare int32 - Btim Timespec -} - type Statfs_t struct { Version uint32 Type uint32 @@ -131,31 +111,6 @@ type Statfs_t struct { Mntonname [1024]byte } -type statfs_freebsd11_t struct { - Version uint32 - Type uint32 - Flags uint64 - Bsize uint64 - Iosize uint64 - Blocks uint64 - Bfree uint64 - Bavail int64 - Files uint64 - Ffree int64 - Syncwrites uint64 - Asyncwrites uint64 - Syncreads uint64 - Asyncreads uint64 - Spare [10]uint64 - Namemax uint32 - Owner uint32 - Fsid Fsid - Charspare [80]int8 - Fstypename [16]byte - Mntfromname [88]byte - Mntonname [88]byte -} - type Flock_t struct { Start int64 Len int64 @@ -177,14 +132,6 @@ type Dirent struct { Name [256]int8 } -type dirent_freebsd11 struct { - Fileno uint32 - Reclen uint16 - Type uint8 - Namlen uint8 - Name [256]int8 -} - type Fsid struct { Val [2]int32 } @@ -333,39 +280,9 @@ const ( ) const ( - PTRACE_ATTACH = 0xa - PTRACE_CONT = 0x7 - PTRACE_DETACH = 0xb - PTRACE_GETFPREGS = 0x23 - PTRACE_GETLWPLIST = 0xf - PTRACE_GETNUMLWPS = 0xe - PTRACE_GETREGS = 0x21 - PTRACE_IO = 0xc - PTRACE_KILL = 0x8 - PTRACE_LWPEVENTS = 0x18 - PTRACE_LWPINFO = 0xd - PTRACE_SETFPREGS = 0x24 - PTRACE_SETREGS = 0x22 - PTRACE_SINGLESTEP = 0x9 - PTRACE_TRACEME = 0x0 -) - -const ( - PIOD_READ_D = 0x1 - PIOD_WRITE_D = 0x2 - PIOD_READ_I = 0x3 - PIOD_WRITE_I = 0x4 -) - -const ( - PL_FLAG_BORN = 0x100 - PL_FLAG_EXITED = 0x200 - PL_FLAG_SI = 0x20 -) - -const ( - TRAP_BRKPT = 0x1 - TRAP_TRACE = 0x2 + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 ) type PtraceLwpInfoStruct struct { @@ -413,6 +330,8 @@ type FpReg struct { _ [8]byte } +type FpExtendedPrecision struct{} + type PtraceIoDesc struct { Op int32 Offs *byte @@ -427,6 +346,7 @@ type Kevent_t struct { Fflags uint32 Data int64 Udata *byte + Ext [4]uint64 } type FdSet struct { diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go new file mode 100644 index 00000000000..d6fd9e88382 --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go @@ -0,0 +1,626 @@ +// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build riscv64 && freebsd +// +build riscv64,freebsd + +package unix + +const ( + SizeofPtr = 0x8 + SizeofShort = 0x2 + SizeofInt = 0x4 + SizeofLong = 0x8 + SizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int64 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Time_t int64 + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Rlimit struct { + Cur int64 + Max int64 +} + +type _Gid_t uint32 + +const ( + _statfsVersion = 0x20140518 + _dirblksiz = 0x400 +) + +type Stat_t struct { + Dev uint64 + Ino uint64 + Nlink uint64 + Mode uint16 + _0 int16 + Uid uint32 + Gid uint32 + _1 int32 + Rdev uint64 + Atim Timespec + Mtim Timespec + Ctim Timespec + Btim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint64 + Spare [10]uint64 +} + +type Statfs_t struct { + Version uint32 + Type uint32 + Flags uint64 + Bsize uint64 + Iosize uint64 + Blocks uint64 + Bfree uint64 + Bavail int64 + Files uint64 + Ffree int64 + Syncwrites uint64 + Asyncwrites uint64 + Syncreads uint64 + Asyncreads uint64 + Spare [10]uint64 + Namemax uint32 + Owner uint32 + Fsid Fsid + Charspare [80]int8 + Fstypename [16]byte + Mntfromname [1024]byte + Mntonname [1024]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 + Sysid int32 + _ [4]byte +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Pad0 uint8 + Namlen uint16 + Pad1 uint16 + Name [256]int8 +} + +type Fsid struct { + Val [2]int32 +} + +const ( + PathMax = 0x400 +) + +const ( + FADV_NORMAL = 0x0 + FADV_RANDOM = 0x1 + FADV_SEQUENTIAL = 0x2 + FADV_WILLNEED = 0x3 + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [46]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Xucred struct { + Version uint32 + Uid uint32 + Ngroups int16 + Groups [16]uint32 + _ *byte +} + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPMreqn struct { + Multiaddr [4]byte /* in_addr */ + Address [4]byte /* in_addr */ + Ifindex int32 +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen int32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x36 + SizeofXucred = 0x58 + SizeofLinger = 0x8 + SizeofIovec = 0x10 + SizeofIPMreq = 0x8 + SizeofIPMreqn = 0xc + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x30 + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type PtraceLwpInfoStruct struct { + Lwpid int32 + Event int32 + Flags int32 + Sigmask Sigset_t + Siglist Sigset_t + Siginfo __Siginfo + Tdname [20]int8 + Child_pid int32 + Syscall_code uint32 + Syscall_narg uint32 +} + +type __Siginfo struct { + Signo int32 + Errno int32 + Code int32 + Pid int32 + Uid uint32 + Status int32 + Addr *byte + Value [8]byte + _ [40]byte +} + +type Sigset_t struct { + Val [4]uint32 +} + +type Reg struct { + Ra uint64 + Sp uint64 + Gp uint64 + Tp uint64 + T [7]uint64 + S [12]uint64 + A [8]uint64 + Sepc uint64 + Sstatus uint64 +} + +type FpReg struct { + X [32][2]uint64 + Fcsr uint64 +} + +type FpExtendedPrecision struct{} + +type PtraceIoDesc struct { + Op int32 + Offs *byte + Addr *byte + Len uint64 +} + +type Kevent_t struct { + Ident uint64 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte + Ext [4]uint64 +} + +type FdSet struct { + Bits [16]uint64 +} + +const ( + sizeofIfMsghdr = 0xa8 + SizeofIfMsghdr = 0xa8 + sizeofIfData = 0x98 + SizeofIfData = 0x98 + SizeofIfaMsghdr = 0x14 + SizeofIfmaMsghdr = 0x10 + SizeofIfAnnounceMsghdr = 0x18 + SizeofRtMsghdr = 0x98 + SizeofRtMetrics = 0x70 +) + +type ifMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Data ifData +} + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + Data IfData +} + +type ifData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Vhid uint8 + Datalen uint16 + Mtu uint32 + Metric uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Oqdrops uint64 + Noproto uint64 + Hwassist uint64 + _ [8]byte + _ [16]byte +} + +type IfData struct { + Type uint8 + Physical uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Spare_char1 uint8 + Spare_char2 uint8 + Datalen uint8 + Mtu uint64 + Metric uint64 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Hwassist uint64 + Epoch int64 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 + Metric int32 +} + +type IfmaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Addrs int32 + Flags int32 + Index uint16 + _ uint16 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + Name [16]int8 + What uint16 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Index uint16 + _ uint16 + Flags int32 + Addrs int32 + Pid int32 + Seq int32 + Errno int32 + Fmask int32 + Inits uint64 + Rmx RtMetrics +} + +type RtMetrics struct { + Locks uint64 + Mtu uint64 + Hopcount uint64 + Expire uint64 + Recvpipe uint64 + Sendpipe uint64 + Ssthresh uint64 + Rtt uint64 + Rttvar uint64 + Pksent uint64 + Weight uint64 + Nhidx uint64 + Filler [2]uint64 +} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfZbuf = 0x18 + SizeofBpfProgram = 0x10 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x20 + SizeofBpfZbufHeader = 0x20 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfZbuf struct { + Bufa *byte + Bufb *byte + Buflen uint64 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp Timeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + _ [6]byte +} + +type BpfZbufHeader struct { + Kernel_gen uint32 + Kernel_len uint32 + User_gen uint32 + _ [5]uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Winsize struct { + Row uint16 + Col uint16 + Xpixel uint16 + Ypixel uint16 +} + +const ( + AT_FDCWD = -0x64 + AT_EACCESS = 0x100 + AT_SYMLINK_NOFOLLOW = 0x200 + AT_SYMLINK_FOLLOW = 0x400 + AT_REMOVEDIR = 0x800 +) + +type PollFd struct { + Fd int32 + Events int16 + Revents int16 +} + +const ( + POLLERR = 0x8 + POLLHUP = 0x10 + POLLIN = 0x1 + POLLINIGNEOF = 0x2000 + POLLNVAL = 0x20 + POLLOUT = 0x4 + POLLPRI = 0x2 + POLLRDBAND = 0x80 + POLLRDNORM = 0x40 + POLLWRBAND = 0x100 + POLLWRNORM = 0x4 +) + +type CapRights struct { + Rights [2]uint64 +} + +type Utsname struct { + Sysname [256]byte + Nodename [256]byte + Release [256]byte + Version [256]byte + Machine [256]byte +} + +const SizeofClockinfo = 0x14 + +type Clockinfo struct { + Hz int32 + Tick int32 + Spare int32 + Stathz int32 + Profhz int32 +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux.go index 9962d26bb30..86984798754 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux.go @@ -1127,7 +1127,9 @@ const ( PERF_BR_SYSRET = 0x8 PERF_BR_COND_CALL = 0x9 PERF_BR_COND_RET = 0xa - PERF_BR_MAX = 0xb + PERF_BR_ERET = 0xb + PERF_BR_IRQ = 0xc + PERF_BR_MAX = 0xd PERF_SAMPLE_REGS_ABI_NONE = 0x0 PERF_SAMPLE_REGS_ABI_32 = 0x1 PERF_SAMPLE_REGS_ABI_64 = 0x2 @@ -2969,7 +2971,7 @@ const ( DEVLINK_CMD_TRAP_POLICER_NEW = 0x47 DEVLINK_CMD_TRAP_POLICER_DEL = 0x48 DEVLINK_CMD_HEALTH_REPORTER_TEST = 0x49 - DEVLINK_CMD_MAX = 0x4d + DEVLINK_CMD_MAX = 0x51 DEVLINK_PORT_TYPE_NOTSET = 0x0 DEVLINK_PORT_TYPE_AUTO = 0x1 DEVLINK_PORT_TYPE_ETH = 0x2 @@ -3198,7 +3200,7 @@ const ( DEVLINK_ATTR_RATE_NODE_NAME = 0xa8 DEVLINK_ATTR_RATE_PARENT_NODE_NAME = 0xa9 DEVLINK_ATTR_REGION_MAX_SNAPSHOTS = 0xaa - DEVLINK_ATTR_MAX = 0xaa + DEVLINK_ATTR_MAX = 0xae DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE = 0x0 DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX = 0x1 DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT = 0x0 @@ -3638,7 +3640,11 @@ const ( ETHTOOL_A_RINGS_RX_MINI = 0x7 ETHTOOL_A_RINGS_RX_JUMBO = 0x8 ETHTOOL_A_RINGS_TX = 0x9 - ETHTOOL_A_RINGS_MAX = 0xa + ETHTOOL_A_RINGS_RX_BUF_LEN = 0xa + ETHTOOL_A_RINGS_TCP_DATA_SPLIT = 0xb + ETHTOOL_A_RINGS_CQE_SIZE = 0xc + ETHTOOL_A_RINGS_TX_PUSH = 0xd + ETHTOOL_A_RINGS_MAX = 0xd ETHTOOL_A_CHANNELS_UNSPEC = 0x0 ETHTOOL_A_CHANNELS_HEADER = 0x1 ETHTOOL_A_CHANNELS_RX_MAX = 0x2 @@ -4323,7 +4329,7 @@ const ( NL80211_ATTR_MAC_HINT = 0xc8 NL80211_ATTR_MAC_MASK = 0xd7 NL80211_ATTR_MAX_AP_ASSOC_STA = 0xca - NL80211_ATTR_MAX = 0x135 + NL80211_ATTR_MAX = 0x137 NL80211_ATTR_MAX_CRIT_PROT_DURATION = 0xb4 NL80211_ATTR_MAX_CSA_COUNTERS = 0xce NL80211_ATTR_MAX_MATCH_SETS = 0x85 @@ -4549,7 +4555,7 @@ const ( NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY = 0x3 NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE = 0x5 NL80211_BAND_IFTYPE_ATTR_IFTYPES = 0x1 - NL80211_BAND_IFTYPE_ATTR_MAX = 0x7 + NL80211_BAND_IFTYPE_ATTR_MAX = 0xb NL80211_BAND_S1GHZ = 0x4 NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE = 0x2 NL80211_BITRATE_ATTR_MAX = 0x2 @@ -4887,7 +4893,7 @@ const ( NL80211_FREQUENCY_ATTR_GO_CONCURRENT = 0xf NL80211_FREQUENCY_ATTR_INDOOR_ONLY = 0xe NL80211_FREQUENCY_ATTR_IR_CONCURRENT = 0xf - NL80211_FREQUENCY_ATTR_MAX = 0x19 + NL80211_FREQUENCY_ATTR_MAX = 0x1b NL80211_FREQUENCY_ATTR_MAX_TX_POWER = 0x6 NL80211_FREQUENCY_ATTR_NO_10MHZ = 0x11 NL80211_FREQUENCY_ATTR_NO_160MHZ = 0xc @@ -5254,7 +5260,7 @@ const ( NL80211_RATE_INFO_HE_RU_ALLOC_52 = 0x1 NL80211_RATE_INFO_HE_RU_ALLOC_996 = 0x5 NL80211_RATE_INFO_HE_RU_ALLOC = 0x11 - NL80211_RATE_INFO_MAX = 0x11 + NL80211_RATE_INFO_MAX = 0x16 NL80211_RATE_INFO_MCS = 0x2 NL80211_RATE_INFO_SHORT_GI = 0x4 NL80211_RATE_INFO_VHT_MCS = 0x6 @@ -5588,3 +5594,8 @@ const ( FR_ACT_UNREACHABLE = 0x7 FR_ACT_PROHIBIT = 0x8 ) + +const ( + AUDIT_NLGRP_NONE = 0x0 + AUDIT_NLGRP_READLOG = 0x1 +) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_386.go index 5314092568f..7551af48318 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_386.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m32 linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build 386 && linux @@ -324,6 +324,13 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go index b02ab83dbd3..3e738ac0bbf 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -m64 linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build amd64 && linux @@ -338,6 +338,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go index 9e6871d2e04..6183eef4a40 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm && linux @@ -315,6 +315,13 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go index b732d12559c..968cecb17e8 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build arm64 && linux @@ -317,6 +317,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go new file mode 100644 index 00000000000..8fe4c522a9c --- /dev/null +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go @@ -0,0 +1,685 @@ +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +//go:build loong64 && linux +// +build loong64,linux + +package unix + +const ( + SizeofPtr = 0x8 + SizeofLong = 0x8 +) + +type ( + _C_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int64 +} + +type Timeval struct { + Sec int64 + Usec int64 +} + +type Timex struct { + Modes uint32 + Offset int64 + Freq int64 + Maxerror int64 + Esterror int64 + Status int32 + Constant int64 + Precision int64 + Tolerance int64 + Time Timeval + Tick int64 + Ppsfreq int64 + Jitter int64 + Shift int32 + Stabil int64 + Jitcnt int64 + Calcnt int64 + Errcnt int64 + Stbcnt int64 + Tai int32 + _ [44]byte +} + +type Time_t int64 + +type Tms struct { + Utime int64 + Stime int64 + Cutime int64 + Cstime int64 +} + +type Utimbuf struct { + Actime int64 + Modtime int64 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int64 + Ixrss int64 + Idrss int64 + Isrss int64 + Minflt int64 + Majflt int64 + Nswap int64 + Inblock int64 + Oublock int64 + Msgsnd int64 + Msgrcv int64 + Nsignals int64 + Nvcsw int64 + Nivcsw int64 +} + +type Stat_t struct { + Dev uint64 + Ino uint64 + Mode uint32 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev uint64 + _ uint64 + Size int64 + Blksize int32 + _ int32 + Blocks int64 + Atim Timespec + Mtim Timespec + Ctim Timespec + _ [2]int32 +} + +type Dirent struct { + Ino uint64 + Off int64 + Reclen uint16 + Type uint8 + Name [256]int8 + _ [5]byte +} + +type Flock_t struct { + Type int16 + Whence int16 + Start int64 + Len int64 + Pid int32 + _ [4]byte +} + +type DmNameList struct { + Dev uint64 + Next uint32 + Name [0]byte + _ [4]byte +} + +const ( + FADV_DONTNEED = 0x4 + FADV_NOREUSE = 0x5 +) + +type RawSockaddrNFCLLCP struct { + Sa_family uint16 + Dev_idx uint32 + Target_idx uint32 + Nfc_protocol uint32 + Dsap uint8 + Ssap uint8 + Service_name [63]uint8 + Service_name_len uint64 +} + +type RawSockaddr struct { + Family uint16 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [96]int8 +} + +type Iovec struct { + Base *byte + Len uint64 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint64 + Control *byte + Controllen uint64 + Flags int32 + _ [4]byte +} + +type Cmsghdr struct { + Len uint64 + Level int32 + Type int32 +} + +type ifreq struct { + Ifrn [16]byte + Ifru [24]byte +} + +const ( + SizeofSockaddrNFCLLCP = 0x60 + SizeofIovec = 0x10 + SizeofMsghdr = 0x38 + SizeofCmsghdr = 0x10 +) + +const ( + SizeofSockFprog = 0x10 +) + +type PtraceRegs struct { + Regs [32]uint64 + Orig_a0 uint64 + Era uint64 + Badv uint64 + Reserved [10]uint64 +} + +type FdSet struct { + Bits [16]int64 +} + +type Sysinfo_t struct { + Uptime int64 + Loads [3]uint64 + Totalram uint64 + Freeram uint64 + Sharedram uint64 + Bufferram uint64 + Totalswap uint64 + Freeswap uint64 + Procs uint16 + Pad uint16 + Totalhigh uint64 + Freehigh uint64 + Unit uint32 + _ [0]int8 + _ [4]byte +} + +type Ustat_t struct { + Tfree int32 + Tinode uint64 + Fname [6]int8 + Fpack [6]int8 + _ [4]byte +} + +type EpollEvent struct { + Events uint32 + _ int32 + Fd int32 + Pad int32 +} + +const ( + OPEN_TREE_CLOEXEC = 0x80000 +) + +const ( + POLLRDHUP = 0x2000 +) + +type Sigset_t struct { + Val [16]uint64 +} + +const _C__NSIG = 0x41 + +type Siginfo struct { + Signo int32 + Errno int32 + Code int32 + _ int32 + _ [112]byte +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Line uint8 + Cc [19]uint8 + Ispeed uint32 + Ospeed uint32 +} + +type Taskstats struct { + Version uint16 + Ac_exitcode uint32 + Ac_flag uint8 + Ac_nice uint8 + Cpu_count uint64 + Cpu_delay_total uint64 + Blkio_count uint64 + Blkio_delay_total uint64 + Swapin_count uint64 + Swapin_delay_total uint64 + Cpu_run_real_total uint64 + Cpu_run_virtual_total uint64 + Ac_comm [32]int8 + Ac_sched uint8 + Ac_pad [3]uint8 + _ [4]byte + Ac_uid uint32 + Ac_gid uint32 + Ac_pid uint32 + Ac_ppid uint32 + Ac_btime uint32 + Ac_etime uint64 + Ac_utime uint64 + Ac_stime uint64 + Ac_minflt uint64 + Ac_majflt uint64 + Coremem uint64 + Virtmem uint64 + Hiwater_rss uint64 + Hiwater_vm uint64 + Read_char uint64 + Write_char uint64 + Read_syscalls uint64 + Write_syscalls uint64 + Read_bytes uint64 + Write_bytes uint64 + Cancelled_write_bytes uint64 + Nvcsw uint64 + Nivcsw uint64 + Ac_utimescaled uint64 + Ac_stimescaled uint64 + Cpu_scaled_run_real_total uint64 + Freepages_count uint64 + Freepages_delay_total uint64 + Thrashing_count uint64 + Thrashing_delay_total uint64 + Ac_btime64 uint64 + Compact_count uint64 + Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 +} + +type cpuMask uint64 + +const ( + _NCPUBITS = 0x40 +) + +const ( + CBitFieldMaskBit0 = 0x1 + CBitFieldMaskBit1 = 0x2 + CBitFieldMaskBit2 = 0x4 + CBitFieldMaskBit3 = 0x8 + CBitFieldMaskBit4 = 0x10 + CBitFieldMaskBit5 = 0x20 + CBitFieldMaskBit6 = 0x40 + CBitFieldMaskBit7 = 0x80 + CBitFieldMaskBit8 = 0x100 + CBitFieldMaskBit9 = 0x200 + CBitFieldMaskBit10 = 0x400 + CBitFieldMaskBit11 = 0x800 + CBitFieldMaskBit12 = 0x1000 + CBitFieldMaskBit13 = 0x2000 + CBitFieldMaskBit14 = 0x4000 + CBitFieldMaskBit15 = 0x8000 + CBitFieldMaskBit16 = 0x10000 + CBitFieldMaskBit17 = 0x20000 + CBitFieldMaskBit18 = 0x40000 + CBitFieldMaskBit19 = 0x80000 + CBitFieldMaskBit20 = 0x100000 + CBitFieldMaskBit21 = 0x200000 + CBitFieldMaskBit22 = 0x400000 + CBitFieldMaskBit23 = 0x800000 + CBitFieldMaskBit24 = 0x1000000 + CBitFieldMaskBit25 = 0x2000000 + CBitFieldMaskBit26 = 0x4000000 + CBitFieldMaskBit27 = 0x8000000 + CBitFieldMaskBit28 = 0x10000000 + CBitFieldMaskBit29 = 0x20000000 + CBitFieldMaskBit30 = 0x40000000 + CBitFieldMaskBit31 = 0x80000000 + CBitFieldMaskBit32 = 0x100000000 + CBitFieldMaskBit33 = 0x200000000 + CBitFieldMaskBit34 = 0x400000000 + CBitFieldMaskBit35 = 0x800000000 + CBitFieldMaskBit36 = 0x1000000000 + CBitFieldMaskBit37 = 0x2000000000 + CBitFieldMaskBit38 = 0x4000000000 + CBitFieldMaskBit39 = 0x8000000000 + CBitFieldMaskBit40 = 0x10000000000 + CBitFieldMaskBit41 = 0x20000000000 + CBitFieldMaskBit42 = 0x40000000000 + CBitFieldMaskBit43 = 0x80000000000 + CBitFieldMaskBit44 = 0x100000000000 + CBitFieldMaskBit45 = 0x200000000000 + CBitFieldMaskBit46 = 0x400000000000 + CBitFieldMaskBit47 = 0x800000000000 + CBitFieldMaskBit48 = 0x1000000000000 + CBitFieldMaskBit49 = 0x2000000000000 + CBitFieldMaskBit50 = 0x4000000000000 + CBitFieldMaskBit51 = 0x8000000000000 + CBitFieldMaskBit52 = 0x10000000000000 + CBitFieldMaskBit53 = 0x20000000000000 + CBitFieldMaskBit54 = 0x40000000000000 + CBitFieldMaskBit55 = 0x80000000000000 + CBitFieldMaskBit56 = 0x100000000000000 + CBitFieldMaskBit57 = 0x200000000000000 + CBitFieldMaskBit58 = 0x400000000000000 + CBitFieldMaskBit59 = 0x800000000000000 + CBitFieldMaskBit60 = 0x1000000000000000 + CBitFieldMaskBit61 = 0x2000000000000000 + CBitFieldMaskBit62 = 0x4000000000000000 + CBitFieldMaskBit63 = 0x8000000000000000 +) + +type SockaddrStorage struct { + Family uint16 + _ [118]int8 + _ uint64 +} + +type HDGeometry struct { + Heads uint8 + Sectors uint8 + Cylinders uint16 + Start uint64 +} + +type Statfs_t struct { + Type int64 + Bsize int64 + Blocks uint64 + Bfree uint64 + Bavail uint64 + Files uint64 + Ffree uint64 + Fsid Fsid + Namelen int64 + Frsize int64 + Flags int64 + Spare [4]int64 +} + +type TpacketHdr struct { + Status uint64 + Len uint32 + Snaplen uint32 + Mac uint16 + Net uint16 + Sec uint32 + Usec uint32 + _ [4]byte +} + +const ( + SizeofTpacketHdr = 0x20 +) + +type RTCPLLInfo struct { + Ctrl int32 + Value int32 + Max int32 + Min int32 + Posmult int32 + Negmult int32 + Clock int64 +} + +type BlkpgPartition struct { + Start int64 + Length int64 + Pno int32 + Devname [64]uint8 + Volname [64]uint8 + _ [4]byte +} + +const ( + BLKPG = 0x1269 +) + +type XDPUmemReg struct { + Addr uint64 + Len uint64 + Size uint32 + Headroom uint32 + Flags uint32 + _ [4]byte +} + +type CryptoUserAlg struct { + Name [64]int8 + Driver_name [64]int8 + Module_name [64]int8 + Type uint32 + Mask uint32 + Refcnt uint32 + Flags uint32 +} + +type CryptoStatAEAD struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatAKCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Verify_cnt uint64 + Sign_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatCipher struct { + Type [64]int8 + Encrypt_cnt uint64 + Encrypt_tlen uint64 + Decrypt_cnt uint64 + Decrypt_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatCompress struct { + Type [64]int8 + Compress_cnt uint64 + Compress_tlen uint64 + Decompress_cnt uint64 + Decompress_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatHash struct { + Type [64]int8 + Hash_cnt uint64 + Hash_tlen uint64 + Err_cnt uint64 +} + +type CryptoStatKPP struct { + Type [64]int8 + Setsecret_cnt uint64 + Generate_public_key_cnt uint64 + Compute_shared_secret_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatRNG struct { + Type [64]int8 + Generate_cnt uint64 + Generate_tlen uint64 + Seed_cnt uint64 + Err_cnt uint64 +} + +type CryptoStatLarval struct { + Type [64]int8 +} + +type CryptoReportLarval struct { + Type [64]int8 +} + +type CryptoReportHash struct { + Type [64]int8 + Blocksize uint32 + Digestsize uint32 +} + +type CryptoReportCipher struct { + Type [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 +} + +type CryptoReportBlkCipher struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Min_keysize uint32 + Max_keysize uint32 + Ivsize uint32 +} + +type CryptoReportAEAD struct { + Type [64]int8 + Geniv [64]int8 + Blocksize uint32 + Maxauthsize uint32 + Ivsize uint32 +} + +type CryptoReportComp struct { + Type [64]int8 +} + +type CryptoReportRNG struct { + Type [64]int8 + Seedsize uint32 +} + +type CryptoReportAKCipher struct { + Type [64]int8 +} + +type CryptoReportKPP struct { + Type [64]int8 +} + +type CryptoReportAcomp struct { + Type [64]int8 +} + +type LoopInfo struct { + Number int32 + Device uint32 + Inode uint64 + Rdevice uint32 + Offset int32 + Encrypt_type int32 + Encrypt_key_size int32 + Flags int32 + Name [64]int8 + Encrypt_key [32]uint8 + Init [2]uint64 + Reserved [4]int8 + _ [4]byte +} + +type TIPCSubscr struct { + Seq TIPCServiceRange + Timeout uint32 + Filter uint32 + Handle [8]int8 +} + +type TIPCSIOCLNReq struct { + Peer uint32 + Id uint32 + Linkname [68]int8 +} + +type TIPCSIOCNodeIDReq struct { + Peer uint32 + Id [16]int8 +} + +type PPSKInfo struct { + Assert_sequence uint32 + Clear_sequence uint32 + Assert_tu PPSKTime + Clear_tu PPSKTime + Current_mode int32 + _ [4]byte +} + +const ( + PPS_GETPARAMS = 0x800870a1 + PPS_SETPARAMS = 0x400870a2 + PPS_GETCAP = 0x800870a3 + PPS_FETCH = 0xc00870a4 +) + +const ( + PIDFD_NONBLOCK = 0x800 +) + +type SysvIpcPerm struct { + Key int32 + Uid uint32 + Gid uint32 + Cuid uint32 + Cgid uint32 + Mode uint32 + _ [0]uint8 + Seq uint16 + _ uint16 + _ uint64 + _ uint64 +} +type SysvShmDesc struct { + Perm SysvIpcPerm + Segsz uint64 + Atime int64 + Dtime int64 + Ctime int64 + Cpid int32 + Lpid int32 + Nattch uint64 + _ uint64 + _ uint64 +} diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go index 5310f71ea56..11426a3010b 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips && linux @@ -320,6 +320,13 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go index 219bbb1267d..ad1c3b3de59 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64 && linux @@ -320,6 +320,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go index be9432da548..15fd84e4dd0 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mips64le && linux @@ -320,6 +320,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go index d0155a42e61..49c49825ab3 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build mipsle && linux @@ -320,6 +320,13 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go index 01c17bcc6f9..cd36d0da26a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc && linux @@ -327,6 +327,13 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + _ [4]byte + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint32 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go index 944a9c3c78f..8c6fce03950 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64 && linux @@ -327,6 +327,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go index 5d2c90e1ce3..20910f2ad78 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build ppc64le && linux @@ -327,6 +327,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go index e173cb51574..71b7b3331db 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build riscv64 && linux @@ -345,6 +345,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go index 6106715d5c6..71184cc2cda 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include -fsigned-char linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build s390x && linux @@ -340,6 +340,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go index ca7b37b4b57..06156285d9e 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go @@ -1,4 +1,4 @@ -// cgo -godefs -- -Wall -Werror -static -I/tmp/include /build/unix/linux/types.go | go run mkpost.go +// cgo -godefs -- -Wall -Werror -static -I/tmp/include linux/types.go | go run mkpost.go // Code generated by the command above; see README.md. DO NOT EDIT. //go:build sparc64 && linux @@ -322,6 +322,12 @@ type Taskstats struct { Ac_btime64 uint64 Compact_count uint64 Compact_delay_total uint64 + Ac_tgid uint32 + Ac_tgetime uint64 + Ac_exe_dev uint64 + Ac_exe_inode uint64 + Wpcopy_count uint64 + Wpcopy_delay_total uint64 } type cpuMask uint64 diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go index baf5fe65044..2ed718ca06a 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go @@ -94,10 +94,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte Pad_cgo_0 [2]byte Mount_info [160]byte } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go index e21ae8ecfa6..b4fb97ebe65 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go @@ -96,10 +96,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go index f190651cd96..2c4675040ef 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -98,10 +98,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go index 84747c582cf..ddee0451470 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go @@ -94,10 +94,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go index ac5c8b6370b..eb13d4e8bfc 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go @@ -94,10 +94,10 @@ type Statfs_t struct { F_namemax uint32 F_owner uint32 F_ctime uint64 - F_fstypename [16]int8 - F_mntonname [90]int8 - F_mntfromname [90]int8 - F_mntfromspec [90]int8 + F_fstypename [16]byte + F_mntonname [90]byte + F_mntfromname [90]byte + F_mntfromspec [90]byte _ [2]byte Mount_info [160]byte } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go index ad4aad27968..c1a9b83ad5e 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go @@ -178,7 +178,7 @@ type Linger struct { } type Iovec struct { - Base *int8 + Base *byte Len uint64 } diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/windows/exec_windows.go b/cluster-autoscaler/vendor/golang.org/x/sys/windows/exec_windows.go index 855698bb282..75980fd44ad 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/windows/exec_windows.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/windows/exec_windows.go @@ -15,11 +15,11 @@ import ( // in http://msdn.microsoft.com/en-us/library/ms880421. // This function returns "" (2 double quotes) if s is empty. // Alternatively, these transformations are done: -// - every back slash (\) is doubled, but only if immediately -// followed by double quote ("); -// - every double quote (") is escaped by back slash (\); -// - finally, s is wrapped with double quotes (arg -> "arg"), -// but only if there is space or tab inside s. +// - every back slash (\) is doubled, but only if immediately +// followed by double quote ("); +// - every double quote (") is escaped by back slash (\); +// - finally, s is wrapped with double quotes (arg -> "arg"), +// but only if there is space or tab inside s. func EscapeArg(s string) string { if len(s) == 0 { return "\"\"" diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/windows/registry/key.go b/cluster-autoscaler/vendor/golang.org/x/sys/windows/registry/key.go index 906325e095a..6c8d97b6a59 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/windows/registry/key.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/windows/registry/key.go @@ -20,7 +20,6 @@ // log.Fatal(err) // } // fmt.Printf("Windows system root is %q\n", s) -// package registry import ( diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/windows/svc/service.go b/cluster-autoscaler/vendor/golang.org/x/sys/windows/svc/service.go index 5b05c3e33f5..806baa055f6 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/windows/svc/service.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/windows/svc/service.go @@ -6,7 +6,6 @@ // +build windows // Package svc provides everything required to build Windows service. -// package svc import ( diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/windows/syscall_windows.go b/cluster-autoscaler/vendor/golang.org/x/sys/windows/syscall_windows.go index ce3075c4534..be3ec2bd467 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/windows/syscall_windows.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/windows/syscall_windows.go @@ -623,7 +623,6 @@ var ( func getStdHandle(stdhandle uint32) (fd Handle) { r, _ := GetStdHandle(stdhandle) - CloseOnExec(r) return r } @@ -862,6 +861,7 @@ const socket_error = uintptr(^uint32(0)) //sys GetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses //sys GetACP() (acp uint32) = kernel32.GetACP //sys MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar +//sys getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx // For testing: clients can set this flag to force // creation of IPv6 sockets to return EAFNOSUPPORT. @@ -1046,6 +1046,14 @@ func Connect(fd Handle, sa Sockaddr) (err error) { return connect(fd, ptr, n) } +func GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) { + ptr, _, err := sa.sockaddr() + if err != nil { + return err + } + return getBestInterfaceEx(ptr, pdwBestIfIndex) +} + func Getsockname(fd Handle) (sa Sockaddr, err error) { var rsa RawSockaddrAny l := int32(unsafe.Sizeof(rsa)) diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/windows/types_windows.go b/cluster-autoscaler/vendor/golang.org/x/sys/windows/types_windows.go index e19471c6a85..f9eaca528ed 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/windows/types_windows.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/windows/types_windows.go @@ -160,6 +160,10 @@ const ( MAX_COMPUTERNAME_LENGTH = 15 + MAX_DHCPV6_DUID_LENGTH = 130 + + MAX_DNS_SUFFIX_STRING_LENGTH = 256 + TIME_ZONE_ID_UNKNOWN = 0 TIME_ZONE_ID_STANDARD = 1 @@ -2000,27 +2004,62 @@ type IpAdapterPrefix struct { } type IpAdapterAddresses struct { - Length uint32 - IfIndex uint32 - Next *IpAdapterAddresses - AdapterName *byte - FirstUnicastAddress *IpAdapterUnicastAddress - FirstAnycastAddress *IpAdapterAnycastAddress - FirstMulticastAddress *IpAdapterMulticastAddress - FirstDnsServerAddress *IpAdapterDnsServerAdapter - DnsSuffix *uint16 - Description *uint16 - FriendlyName *uint16 - PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte - PhysicalAddressLength uint32 - Flags uint32 - Mtu uint32 - IfType uint32 - OperStatus uint32 - Ipv6IfIndex uint32 - ZoneIndices [16]uint32 - FirstPrefix *IpAdapterPrefix - /* more fields might be present here. */ + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + TransmitLinkSpeed uint64 + ReceiveLinkSpeed uint64 + FirstWinsServerAddress *IpAdapterWinsServerAddress + FirstGatewayAddress *IpAdapterGatewayAddress + Ipv4Metric uint32 + Ipv6Metric uint32 + Luid uint64 + Dhcpv4Server SocketAddress + CompartmentId uint32 + NetworkGuid GUID + ConnectionType uint32 + TunnelType uint32 + Dhcpv6Server SocketAddress + Dhcpv6ClientDuid [MAX_DHCPV6_DUID_LENGTH]byte + Dhcpv6ClientDuidLength uint32 + Dhcpv6Iaid uint32 + FirstDnsSuffix *IpAdapterDNSSuffix +} + +type IpAdapterWinsServerAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterWinsServerAddress + Address SocketAddress +} + +type IpAdapterGatewayAddress struct { + Length uint32 + Reserved uint32 + Next *IpAdapterGatewayAddress + Address SocketAddress +} + +type IpAdapterDNSSuffix struct { + Next *IpAdapterDNSSuffix + String [MAX_DNS_SUFFIX_STRING_LENGTH]uint16 } const ( diff --git a/cluster-autoscaler/vendor/golang.org/x/sys/windows/zsyscall_windows.go b/cluster-autoscaler/vendor/golang.org/x/sys/windows/zsyscall_windows.go index 68f52c1e61e..678262cda17 100644 --- a/cluster-autoscaler/vendor/golang.org/x/sys/windows/zsyscall_windows.go +++ b/cluster-autoscaler/vendor/golang.org/x/sys/windows/zsyscall_windows.go @@ -177,6 +177,7 @@ var ( procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree") procGetAdaptersAddresses = modiphlpapi.NewProc("GetAdaptersAddresses") procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo") + procGetBestInterfaceEx = modiphlpapi.NewProc("GetBestInterfaceEx") procGetIfEntry = modiphlpapi.NewProc("GetIfEntry") procAssignProcessToJobObject = modkernel32.NewProc("AssignProcessToJobObject") procCancelIo = modkernel32.NewProc("CancelIo") @@ -1539,6 +1540,14 @@ func GetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) { return } +func getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) { + r0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0) + if r0 != 0 { + errcode = syscall.Errno(r0) + } + return +} + func GetIfEntry(pIfRow *MibIfRow) (errcode error) { r0, _, _ := syscall.Syscall(procGetIfEntry.Addr(), 1, uintptr(unsafe.Pointer(pIfRow)), 0, 0) if r0 != 0 { diff --git a/cluster-autoscaler/vendor/golang.org/x/term/go.mod b/cluster-autoscaler/vendor/golang.org/x/term/go.mod deleted file mode 100644 index edf0e5b1db4..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/term/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module golang.org/x/term - -go 1.17 - -require golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 diff --git a/cluster-autoscaler/vendor/golang.org/x/term/go.sum b/cluster-autoscaler/vendor/golang.org/x/term/go.sum deleted file mode 100644 index ff132135ec6..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/term/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/cluster-autoscaler/vendor/golang.org/x/xerrors/go.mod b/cluster-autoscaler/vendor/golang.org/x/xerrors/go.mod deleted file mode 100644 index 870d4f612db..00000000000 --- a/cluster-autoscaler/vendor/golang.org/x/xerrors/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module golang.org/x/xerrors - -go 1.11 diff --git a/cluster-autoscaler/vendor/google.golang.org/appengine/go.mod b/cluster-autoscaler/vendor/google.golang.org/appengine/go.mod deleted file mode 100644 index 635c34f5a11..00000000000 --- a/cluster-autoscaler/vendor/google.golang.org/appengine/go.mod +++ /dev/null @@ -1,9 +0,0 @@ -module google.golang.org/appengine - -go 1.11 - -require ( - github.com/golang/protobuf v1.3.1 - golang.org/x/net v0.0.0-20190603091049-60506f45cf65 - golang.org/x/text v0.3.2 -) diff --git a/cluster-autoscaler/vendor/google.golang.org/appengine/go.sum b/cluster-autoscaler/vendor/google.golang.org/appengine/go.sum deleted file mode 100644 index ce22f6856c9..00000000000 --- a/cluster-autoscaler/vendor/google.golang.org/appengine/go.sum +++ /dev/null @@ -1,11 +0,0 @@ -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65 h1:+rhAzEzT3f4JtomfC371qB+0Ola2caSKcY69NUBZrRQ= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/cluster-autoscaler/vendor/google.golang.org/grpc/go.mod b/cluster-autoscaler/vendor/google.golang.org/grpc/go.mod deleted file mode 100644 index 6a760ed7435..00000000000 --- a/cluster-autoscaler/vendor/google.golang.org/grpc/go.mod +++ /dev/null @@ -1,19 +0,0 @@ -module google.golang.org/grpc - -go 1.14 - -require ( - github.com/cespare/xxhash/v2 v2.1.1 - github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 - github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 - github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1 - github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b - github.com/golang/protobuf v1.5.2 - github.com/google/go-cmp v0.5.6 - github.com/google/uuid v1.1.2 - golang.org/x/net v0.0.0-20201021035429-f5854403a974 - golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d - golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 - google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 - google.golang.org/protobuf v1.27.1 -) diff --git a/cluster-autoscaler/vendor/google.golang.org/grpc/go.sum b/cluster-autoscaler/vendor/google.golang.org/grpc/go.sum deleted file mode 100644 index 5f418dba1b4..00000000000 --- a/cluster-autoscaler/vendor/google.golang.org/grpc/go.sum +++ /dev/null @@ -1,141 +0,0 @@ -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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 h1:hzAQntlaYRkVSFEfj9OTWlVV1H155FMD8BTKktLv0QI= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 h1:zH8ljVhhq7yC0MIeUL/IviMtY8hx2mK8cN9wEYb8ggw= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1 h1:xvqufLtNVwAhN8NMyWklVgxnWohi+wtMGQMhtxexlm0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -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/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.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/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-20190213061140-3a22650c66bd/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-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -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/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/encoding/protowire/wire.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/encoding/protowire/wire.go index a427f8b7043..9c61112f58d 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/encoding/protowire/wire.go @@ -21,10 +21,11 @@ import ( type Number int32 const ( - MinValidNumber Number = 1 - FirstReservedNumber Number = 19000 - LastReservedNumber Number = 19999 - MaxValidNumber Number = 1<<29 - 1 + MinValidNumber Number = 1 + FirstReservedNumber Number = 19000 + LastReservedNumber Number = 19999 + MaxValidNumber Number = 1<<29 - 1 + DefaultRecursionLimit = 10000 ) // IsValid reports whether the field number is semantically valid. @@ -55,6 +56,7 @@ const ( errCodeOverflow errCodeReserved errCodeEndGroup + errCodeRecursionDepth ) var ( @@ -112,6 +114,10 @@ func ConsumeField(b []byte) (Number, Type, int) { // When parsing a group, the length includes the end group marker and // the end group is verified to match the starting field number. func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) { + return consumeFieldValueD(num, typ, b, DefaultRecursionLimit) +} + +func consumeFieldValueD(num Number, typ Type, b []byte, depth int) (n int) { switch typ { case VarintType: _, n = ConsumeVarint(b) @@ -126,6 +132,9 @@ func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) { _, n = ConsumeBytes(b) return n case StartGroupType: + if depth < 0 { + return errCodeRecursionDepth + } n0 := len(b) for { num2, typ2, n := ConsumeTag(b) @@ -140,7 +149,7 @@ func ConsumeFieldValue(num Number, typ Type, b []byte) (n int) { return n0 - len(b) } - n = ConsumeFieldValue(num2, typ2, b) + n = consumeFieldValueD(num2, typ2, b, depth-1) if n < 0 { return n // forward error code } diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go index eb10ea10261..37803773fa3 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go @@ -381,7 +381,7 @@ func (d *Decoder) currentOpenKind() (Kind, byte) { case '[': return ListOpen, ']' } - panic(fmt.Sprintf("Decoder: openStack contains invalid byte %s", string(openCh))) + panic(fmt.Sprintf("Decoder: openStack contains invalid byte %c", openCh)) } func (d *Decoder) pushOpenStack(ch byte) { diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go112.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go112.go index f90e909b37a..fbcd349207d 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go112.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.13 // +build !go1.13 package errors diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go113.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go113.go index dc05f4191c0..5e72f1cde9e 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/errors/is_go113.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.13 // +build go1.13 package errors diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go index a72995f02d9..bda8e8cf3fc 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !protolegacy // +build !protolegacy package flags diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go index 772e2f0e4d6..6d8d9bd6b01 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build protolegacy // +build protolegacy package flags diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go index 2706bb67f5d..4b15493f2f4 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !go1.12 // +build !go1.12 package impl diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go index 1533ef600cd..0b31b66eaf8 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build go1.12 // +build go1.12 package impl diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go index 90705e3aea7..145c577bd6b 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build purego || appengine // +build purego appengine package impl diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go index e118af1e20c..757642e23c9 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !purego && !appengine // +build !purego,!appengine package impl diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/decode.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/decode.go index 949dc49a65b..c65b0325c17 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/decode.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/decode.go @@ -18,6 +18,7 @@ import ( ) var errDecode = errors.New("cannot parse invalid wire-format data") +var errRecursionDepth = errors.New("exceeded maximum recursion depth") type unmarshalOptions struct { flags protoiface.UnmarshalInputFlags @@ -25,6 +26,7 @@ type unmarshalOptions struct { FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) } + depth int } func (o unmarshalOptions) Options() proto.UnmarshalOptions { @@ -44,6 +46,7 @@ func (o unmarshalOptions) IsDefault() bool { var lazyUnmarshalOptions = unmarshalOptions{ resolver: preg.GlobalTypes, + depth: protowire.DefaultRecursionLimit, } type unmarshalOutput struct { @@ -62,6 +65,7 @@ func (mi *MessageInfo) unmarshal(in piface.UnmarshalInput) (piface.UnmarshalOutp out, err := mi.unmarshalPointer(in.Buf, p, 0, unmarshalOptions{ flags: in.Flags, resolver: in.Resolver, + depth: in.Depth, }) var flags piface.UnmarshalOutputFlags if out.initialized { @@ -82,6 +86,10 @@ var errUnknown = errors.New("unknown") func (mi *MessageInfo) unmarshalPointer(b []byte, p pointer, groupTag protowire.Number, opts unmarshalOptions) (out unmarshalOutput, err error) { mi.init() + opts.depth-- + if opts.depth < 0 { + return out, errRecursionDepth + } if flags.ProtoLegacy && mi.isMessageSet { return unmarshalMessageSet(mi, b, p, opts) } diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go index 9e3ed821efb..4c491bdf482 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build purego || appengine // +build purego appengine package impl diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go index 9ecf23a85bb..ee0e0573e39 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !purego && !appengine // +build !purego,!appengine package impl diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go index 85e074c977d..a1f6f333860 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build purego || appengine // +build purego appengine package strs diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go index 2160c701914..56a8a4ed3c9 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !purego && !appengine // +build !purego,!appengine package strs diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/version/version.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/version/version.go index 14e774fb2ec..3d40d5249e9 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/version/version.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/internal/version/version.go @@ -52,8 +52,8 @@ import ( // 10. Send out the CL for review and submit it. const ( Major = 1 - Minor = 27 - Patch = 1 + Minor = 28 + Patch = 0 PreRelease = "" ) diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/decode.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/decode.go index 49f9b8c88cf..11bf7173be9 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/decode.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/decode.go @@ -42,18 +42,25 @@ type UnmarshalOptions struct { FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) } + + // RecursionLimit limits how deeply messages may be nested. + // If zero, a default limit is applied. + RecursionLimit int } // Unmarshal parses the wire-format message in b and places the result in m. // The provided message must be mutable (e.g., a non-nil pointer to a message). func Unmarshal(b []byte, m Message) error { - _, err := UnmarshalOptions{}.unmarshal(b, m.ProtoReflect()) + _, err := UnmarshalOptions{RecursionLimit: protowire.DefaultRecursionLimit}.unmarshal(b, m.ProtoReflect()) return err } // Unmarshal parses the wire-format message in b and places the result in m. // The provided message must be mutable (e.g., a non-nil pointer to a message). func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } _, err := o.unmarshal(b, m.ProtoReflect()) return err } @@ -63,6 +70,9 @@ func (o UnmarshalOptions) Unmarshal(b []byte, m Message) error { // This method permits fine-grained control over the unmarshaler. // Most users should use Unmarshal instead. func (o UnmarshalOptions) UnmarshalState(in protoiface.UnmarshalInput) (protoiface.UnmarshalOutput, error) { + if o.RecursionLimit == 0 { + o.RecursionLimit = protowire.DefaultRecursionLimit + } return o.unmarshal(in.Buf, in.Message) } @@ -86,12 +96,17 @@ func (o UnmarshalOptions) unmarshal(b []byte, m protoreflect.Message) (out proto Message: m, Buf: b, Resolver: o.Resolver, + Depth: o.RecursionLimit, } if o.DiscardUnknown { in.Flags |= protoiface.UnmarshalDiscardUnknown } out, err = methods.Unmarshal(in) } else { + o.RecursionLimit-- + if o.RecursionLimit < 0 { + return out, errors.New("exceeded max recursion depth") + } err = o.unmarshalMessageSlow(b, m) } if err != nil { diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_methods.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_methods.go index d8dd604f6b6..465e057b323 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_methods.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_methods.go @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // The protoreflect build tag disables use of fast-path methods. +//go:build !protoreflect // +build !protoreflect package proto diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_reflect.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_reflect.go index b103d43205c..494d6ceef9e 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_reflect.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/proto/proto_reflect.go @@ -3,6 +3,7 @@ // license that can be found in the LICENSE file. // The protoreflect build tag disables use of fast-path methods. +//go:build protoreflect // +build protoreflect package proto diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go index 6be5d16e9f3..d5d5af6ebed 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go @@ -53,6 +53,7 @@ type ( FindExtensionByName(field FullName) (ExtensionType, error) FindExtensionByNumber(message FullName, field FieldNumber) (ExtensionType, error) } + Depth int } unmarshalOutput = struct { pragma.NoUnkeyedLiterals diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go index 918e685e1d5..7ced876f4e8 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build purego || appengine // +build purego appengine package protoreflect diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go index 5a341472419..eb7764c307c 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go @@ -41,6 +41,31 @@ import ( // Converting to/from a Value and a concrete Go value panics on type mismatch. // For example, ValueOf("hello").Int() panics because this attempts to // retrieve an int64 from a string. +// +// List, Map, and Message Values are called "composite" values. +// +// A composite Value may alias (reference) memory at some location, +// such that changes to the Value updates the that location. +// A composite value acquired with a Mutable method, such as Message.Mutable, +// always references the source object. +// +// For example: +// // Append a 0 to a "repeated int32" field. +// // Since the Value returned by Mutable is guaranteed to alias +// // the source message, modifying the Value modifies the message. +// message.Mutable(fieldDesc).(List).Append(protoreflect.ValueOfInt32(0)) +// +// // Assign [0] to a "repeated int32" field by creating a new Value, +// // modifying it, and assigning it. +// list := message.NewField(fieldDesc).(List) +// list.Append(protoreflect.ValueOfInt32(0)) +// message.Set(fieldDesc, list) +// // ERROR: Since it is not defined whether Set aliases the source, +// // appending to the List here may or may not modify the message. +// list.Append(protoreflect.ValueOfInt32(0)) +// +// Some operations, such as Message.Get, may return an "empty, read-only" +// composite Value. Modifying an empty, read-only value panics. type Value value // The protoreflect API uses a custom Value union type instead of interface{} diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go index c45debdcac6..702ddf22a27 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +//go:build !purego && !appengine // +build !purego,!appengine package protoreflect diff --git a/cluster-autoscaler/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go b/cluster-autoscaler/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go index 32c04f67eb7..44cf467d884 100644 --- a/cluster-autoscaler/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +++ b/cluster-autoscaler/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go @@ -103,6 +103,7 @@ type UnmarshalInput = struct { FindExtensionByName(field protoreflect.FullName) (protoreflect.ExtensionType, error) FindExtensionByNumber(message protoreflect.FullName, field protoreflect.FieldNumber) (protoreflect.ExtensionType, error) } + Depth int } // UnmarshalOutput is output from the Unmarshal method. diff --git a/cluster-autoscaler/vendor/gopkg.in/yaml.v2/go.mod b/cluster-autoscaler/vendor/gopkg.in/yaml.v2/go.mod deleted file mode 100644 index 2cbb85aeacd..00000000000 --- a/cluster-autoscaler/vendor/gopkg.in/yaml.v2/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module gopkg.in/yaml.v2 - -go 1.15 - -require gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 diff --git a/cluster-autoscaler/vendor/gopkg.in/yaml.v3/go.mod b/cluster-autoscaler/vendor/gopkg.in/yaml.v3/go.mod deleted file mode 100644 index f407ea3213e..00000000000 --- a/cluster-autoscaler/vendor/gopkg.in/yaml.v3/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module "gopkg.in/yaml.v3" - -require ( - "gopkg.in/check.v1" v0.0.0-20161208181325-20d25e280405 -) diff --git a/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto index 37ac0d32670..63c45d54d71 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/generated.proto @@ -44,7 +44,7 @@ message ServerStorageVersion { repeated string decodableVersions = 3; } -// Storage version of a specific resource. +// Storage version of a specific resource. message StorageVersion { // The name is .. optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; diff --git a/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go index bfa249e135c..a0437b5074c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types.go @@ -24,7 +24,7 @@ import ( // +genclient:nonNamespaced // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object -// Storage version of a specific resource. +// Storage version of a specific resource. type StorageVersion struct { metav1.TypeMeta `json:",inline"` // The name is .. diff --git a/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go index 297ed08a715..6de93420069 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apiserverinternal/v1alpha1/types_swagger_doc_generated.go @@ -39,7 +39,7 @@ func (ServerStorageVersion) SwaggerDoc() map[string]string { } var map_StorageVersion = map[string]string{ - "": "\n Storage version of a specific resource.", + "": "Storage version of a specific resource.", "metadata": "The name is ..", "spec": "Spec is an empty spec. It is here to comply with Kubernetes API style.", "status": "API server instances report the version they can decode and the version they encode objects to when persisting objects in the backend.", diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/generated.proto index 1bdc400b9d2..5b27b92cf08 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/generated.proto @@ -513,7 +513,6 @@ message RollingUpdateDaemonSet { // daemonset on any given node can double if the readiness check fails, and // so resource intensive daemonsets should take into account that they may // cause evictions during disruption. - // This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate. // +optional optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2; } @@ -570,8 +569,9 @@ message RollingUpdateStatefulSetStrategy { // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. message StatefulSet { @@ -702,7 +702,6 @@ message StatefulSetSpec { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional optional int32 minReadySeconds = 9; @@ -758,7 +757,6 @@ message StatefulSetStatus { repeated StatefulSetCondition conditions = 10; // Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. - // This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate. // +optional optional int32 availableReplicas = 11; } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types.go index 28474be7f4f..e541d63d79e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types.go @@ -39,8 +39,9 @@ const ( // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. type StatefulSet struct { @@ -225,7 +226,6 @@ type StatefulSetSpec struct { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,9,opt,name=minReadySeconds"` @@ -281,7 +281,6 @@ type StatefulSetStatus struct { Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"` // Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. - // This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate. // +optional AvailableReplicas int32 `json:"availableReplicas" protobuf:"varint,11,opt,name=availableReplicas"` } @@ -598,7 +597,6 @@ type RollingUpdateDaemonSet struct { // daemonset on any given node can double if the readiness check fails, and // so resource intensive daemonsets should take into account that they may // cause evictions during disruption. - // This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate. // +optional MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"` } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go index f00d10aeabc..3cb5e4e760d 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1/types_swagger_doc_generated.go @@ -263,7 +263,7 @@ func (ReplicaSetStatus) SwaggerDoc() map[string]string { var map_RollingUpdateDaemonSet = map[string]string{ "": "Spec to control the desired behavior of daemon set rolling update.", "maxUnavailable": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.", - "maxSurge": "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate.", + "maxSurge": "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.", } func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string { @@ -291,7 +291,7 @@ func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string { } var map_StatefulSet = map[string]string{ - "": "StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "": "StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\n\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "spec": "Spec defines the desired identities of pods in this set.", "status": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", @@ -344,7 +344,7 @@ var map_StatefulSetSpec = map[string]string{ "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", "updateStrategy": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", "revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", - "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate.", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", "persistentVolumeClaimRetentionPolicy": "persistentVolumeClaimRetentionPolicy describes the lifecycle of persistent volume claims created from volumeClaimTemplates. By default, all persistent volume claims are created as needed and retained until manually deleted. This policy allows the lifecycle to be altered, for example by deleting persistent volume claims when their stateful set is deleted, or when their pod is scaled down. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha. +optional", } @@ -363,7 +363,7 @@ var map_StatefulSetStatus = map[string]string{ "updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", "conditions": "Represents the latest available observations of a statefulset's current state.", - "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate.", + "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset.", } func (StatefulSetStatus) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/generated.proto index 53df96ee4de..5823613ed20 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/generated.proto @@ -332,8 +332,9 @@ message ScaleStatus { // more information. // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. message StatefulSet { @@ -460,7 +461,6 @@ message StatefulSetSpec { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional optional int32 minReadySeconds = 9; @@ -513,7 +513,6 @@ message StatefulSetStatus { repeated StatefulSetCondition conditions = 10; // Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet. - // This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate. // +optional optional int32 availableReplicas = 11; } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types.go index cdc81c956a3..4632c63a79e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types.go @@ -88,8 +88,9 @@ type Scale struct { // more information. // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. type StatefulSet struct { @@ -267,7 +268,6 @@ type StatefulSetSpec struct { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,9,opt,name=minReadySeconds"` @@ -320,7 +320,6 @@ type StatefulSetStatus struct { Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"` // Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet. - // This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate. // +optional AvailableReplicas int32 `json:"availableReplicas" protobuf:"varint,11,opt,name=availableReplicas"` } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go index f57b7b2efcf..47f3414533d 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta1/types_swagger_doc_generated.go @@ -198,7 +198,7 @@ func (ScaleStatus) SwaggerDoc() map[string]string { } var map_StatefulSet = map[string]string{ - "": "DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "": "DEPRECATED - This group version of StatefulSet is deprecated by apps/v1beta2/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\n\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", "spec": "Spec defines the desired identities of pods in this set.", "status": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", } @@ -248,7 +248,7 @@ var map_StatefulSetSpec = map[string]string{ "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", "updateStrategy": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", "revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", - "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate.", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", "persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.", } @@ -267,7 +267,7 @@ var map_StatefulSetStatus = map[string]string{ "updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", "conditions": "Represents the latest available observations of a statefulset's current state.", - "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet. This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate.", + "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet.", } func (StatefulSetStatus) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/generated.proto index b5bc8c0cab5..9103c6ba1c8 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/generated.proto @@ -519,7 +519,6 @@ message RollingUpdateDaemonSet { // daemonset on any given node can double if the readiness check fails, and // so resource intensive daemonsets should take into account that they may // cause evictions during disruption. - // This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate. // +optional optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2; } @@ -620,8 +619,9 @@ message ScaleStatus { // more information. // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. message StatefulSet { @@ -747,7 +747,6 @@ message StatefulSetSpec { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional optional int32 minReadySeconds = 9; @@ -800,7 +799,6 @@ message StatefulSetStatus { repeated StatefulSetCondition conditions = 10; // Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet. - // This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate. // +optional optional int32 availableReplicas = 11; } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types.go index 6c2448869e7..4e21bb267e1 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types.go @@ -94,8 +94,9 @@ type Scale struct { // more information. // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. type StatefulSet struct { @@ -276,7 +277,6 @@ type StatefulSetSpec struct { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,9,opt,name=minReadySeconds"` @@ -329,7 +329,6 @@ type StatefulSetStatus struct { Conditions []StatefulSetCondition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,10,rep,name=conditions"` // Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet. - // This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate. // +optional AvailableReplicas int32 `json:"availableReplicas" protobuf:"varint,11,opt,name=availableReplicas"` } @@ -650,7 +649,6 @@ type RollingUpdateDaemonSet struct { // daemonset on any given node can double if the readiness check fails, and // so resource intensive daemonsets should take into account that they may // cause evictions during disruption. - // This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate. // +optional MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"` } diff --git a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go index ef1de63b2f2..29c746d0b1c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/apps/v1beta2/types_swagger_doc_generated.go @@ -263,7 +263,7 @@ func (ReplicaSetStatus) SwaggerDoc() map[string]string { var map_RollingUpdateDaemonSet = map[string]string{ "": "Spec to control the desired behavior of daemon set rolling update.", "maxUnavailable": "The maximum number of DaemonSet pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of total number of DaemonSet pods at the start of the update (ex: 10%). Absolute number is calculated from percentage by rounding up. This cannot be 0 if MaxSurge is 0 Default value is 1. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their pods stopped for an update at any given time. The update starts by stopping at most 30% of those DaemonSet pods and then brings up new DaemonSet pods in their place. Once the new pods are available, it then proceeds onto other DaemonSet pods, thus ensuring that at least 70% of original number of DaemonSet pods are available at all times during the update.", - "maxSurge": "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption. This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate.", + "maxSurge": "The maximum number of nodes with an existing available DaemonSet pod that can have an updated DaemonSet pod during during an update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up to a minimum of 1. Default value is 0. Example: when this is set to 30%, at most 30% of the total number of nodes that should be running the daemon pod (i.e. status.desiredNumberScheduled) can have their a new pod created before the old pod is marked as deleted. The update starts by launching new pods on 30% of nodes. Once an updated pod is available (Ready for at least minReadySeconds) the old DaemonSet pod on that node is marked deleted. If the old pod becomes unavailable for any reason (Ready transitions to false, is evicted, or is drained) an updated pod is immediatedly created on that node without considering surge limits. Allowing surge implies the possibility that the resources consumed by the daemonset on any given node can double if the readiness check fails, and so resource intensive daemonsets should take into account that they may cause evictions during disruption.", } func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string { @@ -322,7 +322,7 @@ func (ScaleStatus) SwaggerDoc() map[string]string { } var map_StatefulSet = map[string]string{ - "": "DEPRECATED - This group version of StatefulSet is deprecated by apps/v1/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", + "": "DEPRECATED - This group version of StatefulSet is deprecated by apps/v1/StatefulSet. See the release notes for more information. StatefulSet represents a set of pods with consistent identities. Identities are defined as:\n - Network: A single stable DNS and hostname.\n - Storage: As many VolumeClaims as requested.\n\nThe StatefulSet guarantees that a given network identity will always map to the same storage identity.", "spec": "Spec defines the desired identities of pods in this set.", "status": "Status is the current status of Pods in this StatefulSet. This data may be out of date by some window of time.", } @@ -372,7 +372,7 @@ var map_StatefulSetSpec = map[string]string{ "podManagementPolicy": "podManagementPolicy controls how pods are created during initial scale up, when replacing pods on nodes, or when scaling down. The default policy is `OrderedReady`, where pods are created in increasing order (pod-0, then pod-1, etc) and the controller will wait until each pod is ready before continuing. When scaling down, the pods are removed in the opposite order. The alternative policy is `Parallel` which will create pods in parallel to match the desired scale without waiting, and on scale down will delete all pods at once.", "updateStrategy": "updateStrategy indicates the StatefulSetUpdateStrategy that will be employed to update Pods in the StatefulSet when a revision is made to Template.", "revisionHistoryLimit": "revisionHistoryLimit is the maximum number of revisions that will be maintained in the StatefulSet's revision history. The revision history consists of all revisions not represented by a currently applied StatefulSetSpec version. The default value is 10.", - "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready) This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate.", + "minReadySeconds": "Minimum number of seconds for which a newly created pod should be ready without any of its container crashing for it to be considered available. Defaults to 0 (pod will be considered available as soon as it is ready)", "persistentVolumeClaimRetentionPolicy": "PersistentVolumeClaimRetentionPolicy describes the policy used for PVCs created from the StatefulSet VolumeClaimTemplates. This requires the StatefulSetAutoDeletePVC feature gate to be enabled, which is alpha.", } @@ -391,7 +391,7 @@ var map_StatefulSetStatus = map[string]string{ "updateRevision": "updateRevision, if not empty, indicates the version of the StatefulSet used to generate Pods in the sequence [replicas-updatedReplicas,replicas)", "collisionCount": "collisionCount is the count of hash collisions for the StatefulSet. The StatefulSet controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ControllerRevision.", "conditions": "Represents the latest available observations of a statefulset's current state.", - "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet. This is a beta field and enabled/disabled by StatefulSetMinReadySeconds feature gate.", + "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this StatefulSet.", } func (StatefulSetStatus) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.pb.go index 483406d84c5..feafc23c2bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.pb.go @@ -328,10 +328,126 @@ func (m *JobTemplateSpec) XXX_DiscardUnknown() { var xxx_messageInfo_JobTemplateSpec proto.InternalMessageInfo +func (m *PodFailurePolicy) Reset() { *m = PodFailurePolicy{} } +func (*PodFailurePolicy) ProtoMessage() {} +func (*PodFailurePolicy) Descriptor() ([]byte, []int) { + return fileDescriptor_3b52da57c93de713, []int{10} +} +func (m *PodFailurePolicy) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodFailurePolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PodFailurePolicy) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodFailurePolicy.Merge(m, src) +} +func (m *PodFailurePolicy) XXX_Size() int { + return m.Size() +} +func (m *PodFailurePolicy) XXX_DiscardUnknown() { + xxx_messageInfo_PodFailurePolicy.DiscardUnknown(m) +} + +var xxx_messageInfo_PodFailurePolicy proto.InternalMessageInfo + +func (m *PodFailurePolicyOnExitCodesRequirement) Reset() { + *m = PodFailurePolicyOnExitCodesRequirement{} +} +func (*PodFailurePolicyOnExitCodesRequirement) ProtoMessage() {} +func (*PodFailurePolicyOnExitCodesRequirement) Descriptor() ([]byte, []int) { + return fileDescriptor_3b52da57c93de713, []int{11} +} +func (m *PodFailurePolicyOnExitCodesRequirement) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodFailurePolicyOnExitCodesRequirement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PodFailurePolicyOnExitCodesRequirement) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodFailurePolicyOnExitCodesRequirement.Merge(m, src) +} +func (m *PodFailurePolicyOnExitCodesRequirement) XXX_Size() int { + return m.Size() +} +func (m *PodFailurePolicyOnExitCodesRequirement) XXX_DiscardUnknown() { + xxx_messageInfo_PodFailurePolicyOnExitCodesRequirement.DiscardUnknown(m) +} + +var xxx_messageInfo_PodFailurePolicyOnExitCodesRequirement proto.InternalMessageInfo + +func (m *PodFailurePolicyOnPodConditionsPattern) Reset() { + *m = PodFailurePolicyOnPodConditionsPattern{} +} +func (*PodFailurePolicyOnPodConditionsPattern) ProtoMessage() {} +func (*PodFailurePolicyOnPodConditionsPattern) Descriptor() ([]byte, []int) { + return fileDescriptor_3b52da57c93de713, []int{12} +} +func (m *PodFailurePolicyOnPodConditionsPattern) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodFailurePolicyOnPodConditionsPattern) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PodFailurePolicyOnPodConditionsPattern) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodFailurePolicyOnPodConditionsPattern.Merge(m, src) +} +func (m *PodFailurePolicyOnPodConditionsPattern) XXX_Size() int { + return m.Size() +} +func (m *PodFailurePolicyOnPodConditionsPattern) XXX_DiscardUnknown() { + xxx_messageInfo_PodFailurePolicyOnPodConditionsPattern.DiscardUnknown(m) +} + +var xxx_messageInfo_PodFailurePolicyOnPodConditionsPattern proto.InternalMessageInfo + +func (m *PodFailurePolicyRule) Reset() { *m = PodFailurePolicyRule{} } +func (*PodFailurePolicyRule) ProtoMessage() {} +func (*PodFailurePolicyRule) Descriptor() ([]byte, []int) { + return fileDescriptor_3b52da57c93de713, []int{13} +} +func (m *PodFailurePolicyRule) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PodFailurePolicyRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *PodFailurePolicyRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_PodFailurePolicyRule.Merge(m, src) +} +func (m *PodFailurePolicyRule) XXX_Size() int { + return m.Size() +} +func (m *PodFailurePolicyRule) XXX_DiscardUnknown() { + xxx_messageInfo_PodFailurePolicyRule.DiscardUnknown(m) +} + +var xxx_messageInfo_PodFailurePolicyRule proto.InternalMessageInfo + func (m *UncountedTerminatedPods) Reset() { *m = UncountedTerminatedPods{} } func (*UncountedTerminatedPods) ProtoMessage() {} func (*UncountedTerminatedPods) Descriptor() ([]byte, []int) { - return fileDescriptor_3b52da57c93de713, []int{10} + return fileDescriptor_3b52da57c93de713, []int{14} } func (m *UncountedTerminatedPods) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -367,6 +483,10 @@ func init() { proto.RegisterType((*JobSpec)(nil), "k8s.io.api.batch.v1.JobSpec") proto.RegisterType((*JobStatus)(nil), "k8s.io.api.batch.v1.JobStatus") proto.RegisterType((*JobTemplateSpec)(nil), "k8s.io.api.batch.v1.JobTemplateSpec") + proto.RegisterType((*PodFailurePolicy)(nil), "k8s.io.api.batch.v1.PodFailurePolicy") + proto.RegisterType((*PodFailurePolicyOnExitCodesRequirement)(nil), "k8s.io.api.batch.v1.PodFailurePolicyOnExitCodesRequirement") + proto.RegisterType((*PodFailurePolicyOnPodConditionsPattern)(nil), "k8s.io.api.batch.v1.PodFailurePolicyOnPodConditionsPattern") + proto.RegisterType((*PodFailurePolicyRule)(nil), "k8s.io.api.batch.v1.PodFailurePolicyRule") proto.RegisterType((*UncountedTerminatedPods)(nil), "k8s.io.api.batch.v1.UncountedTerminatedPods") } @@ -375,97 +495,113 @@ func init() { } var fileDescriptor_3b52da57c93de713 = []byte{ - // 1431 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x41, 0x6f, 0x1b, 0xc5, - 0x17, 0xcf, 0xc6, 0x71, 0x6c, 0x8f, 0x93, 0xd4, 0x9d, 0xfe, 0xdb, 0xfa, 0x6f, 0x2a, 0x6f, 0x6a, - 0x0a, 0x0a, 0xa8, 0xac, 0x49, 0x88, 0x10, 0x20, 0x40, 0xca, 0xa6, 0x2a, 0x34, 0x38, 0x6a, 0x18, - 0x3b, 0x42, 0x2a, 0x05, 0xb1, 0xde, 0x1d, 0x3b, 0xdb, 0xac, 0x77, 0xac, 0x9d, 0x71, 0x84, 0x6f, - 0x48, 0x7c, 0x01, 0xf8, 0x12, 0x1c, 0x11, 0x12, 0x9c, 0x39, 0xa2, 0x1e, 0x2b, 0x4e, 0x3d, 0xad, - 0xe8, 0xf2, 0x01, 0xb8, 0x87, 0x0b, 0x9a, 0xd9, 0xf1, 0xee, 0xda, 0xde, 0x0d, 0x49, 0x0f, 0x15, - 0xb7, 0xcc, 0x9b, 0xdf, 0xfb, 0xcd, 0xdb, 0x79, 0xbf, 0x79, 0xef, 0x39, 0xe0, 0xfd, 0xe3, 0x77, - 0xa8, 0x66, 0x93, 0xe6, 0xf1, 0xa8, 0x8b, 0x3d, 0x17, 0x33, 0x4c, 0x9b, 0x27, 0xd8, 0xb5, 0x88, - 0xd7, 0x94, 0x1b, 0xc6, 0xd0, 0x6e, 0x76, 0x0d, 0x66, 0x1e, 0x35, 0x4f, 0x36, 0x9b, 0x7d, 0xec, - 0x62, 0xcf, 0x60, 0xd8, 0xd2, 0x86, 0x1e, 0x61, 0x04, 0x5e, 0x09, 0x41, 0x9a, 0x31, 0xb4, 0x35, - 0x01, 0xd2, 0x4e, 0x36, 0x6b, 0x6f, 0xf4, 0x6d, 0x76, 0x34, 0xea, 0x6a, 0x26, 0x19, 0x34, 0xfb, - 0xa4, 0x4f, 0x9a, 0x02, 0xdb, 0x1d, 0xf5, 0xc4, 0x4a, 0x2c, 0xc4, 0x5f, 0x21, 0x47, 0xad, 0x91, - 0x38, 0xc8, 0x24, 0x1e, 0x4e, 0x39, 0xa7, 0xb6, 0x1d, 0x63, 0x06, 0x86, 0x79, 0x64, 0xbb, 0xd8, - 0x1b, 0x37, 0x87, 0xc7, 0x7d, 0x6e, 0xa0, 0xcd, 0x01, 0x66, 0x46, 0x9a, 0x57, 0x33, 0xcb, 0xcb, - 0x1b, 0xb9, 0xcc, 0x1e, 0xe0, 0x39, 0x87, 0xb7, 0xff, 0xcd, 0x81, 0x9a, 0x47, 0x78, 0x60, 0xcc, - 0xfa, 0x35, 0xfe, 0x56, 0x40, 0x61, 0xd7, 0x23, 0xee, 0x1e, 0xe9, 0xc2, 0xaf, 0x40, 0x91, 0xc7, - 0x63, 0x19, 0xcc, 0xa8, 0x2a, 0xeb, 0xca, 0x46, 0x79, 0xeb, 0x4d, 0x2d, 0xbe, 0xa5, 0x88, 0x56, - 0x1b, 0x1e, 0xf7, 0xb9, 0x81, 0x6a, 0x1c, 0xad, 0x9d, 0x6c, 0x6a, 0xf7, 0xbb, 0x8f, 0xb0, 0xc9, - 0xf6, 0x31, 0x33, 0x74, 0xf8, 0xd8, 0x57, 0x17, 0x02, 0x5f, 0x05, 0xb1, 0x0d, 0x45, 0xac, 0x50, - 0x07, 0x4b, 0x74, 0x88, 0xcd, 0xea, 0xa2, 0x60, 0x5f, 0xd7, 0x52, 0x72, 0xa0, 0xc9, 0x68, 0xda, - 0x43, 0x6c, 0xea, 0x2b, 0x92, 0x6d, 0x89, 0xaf, 0x90, 0xf0, 0x85, 0x7b, 0x60, 0x99, 0x32, 0x83, - 0x8d, 0x68, 0x35, 0x27, 0x58, 0x1a, 0x67, 0xb2, 0x08, 0xa4, 0xbe, 0x26, 0x79, 0x96, 0xc3, 0x35, - 0x92, 0x0c, 0x8d, 0x1f, 0x15, 0x50, 0x96, 0xc8, 0x96, 0x4d, 0x19, 0x7c, 0x38, 0x77, 0x03, 0xda, - 0xf9, 0x6e, 0x80, 0x7b, 0x8b, 0xef, 0xaf, 0xc8, 0x93, 0x8a, 0x13, 0x4b, 0xe2, 0xeb, 0x77, 0x40, - 0xde, 0x66, 0x78, 0x40, 0xab, 0x8b, 0xeb, 0xb9, 0x8d, 0xf2, 0xd6, 0x8d, 0xb3, 0x02, 0xd7, 0x57, - 0x25, 0x51, 0xfe, 0x1e, 0x77, 0x41, 0xa1, 0x67, 0xe3, 0xf7, 0xa5, 0x28, 0x60, 0x7e, 0x25, 0xf0, - 0x36, 0x28, 0xf2, 0xc4, 0x5a, 0x23, 0x07, 0x8b, 0x80, 0x4b, 0x71, 0x00, 0x6d, 0x69, 0x47, 0x11, - 0x02, 0x6e, 0x80, 0x22, 0xd7, 0xc2, 0x03, 0xe2, 0xe2, 0x6a, 0x51, 0xa0, 0x57, 0x38, 0xb2, 0x23, - 0x6d, 0x28, 0xda, 0x85, 0x87, 0xe0, 0x3a, 0x65, 0x86, 0xc7, 0x6c, 0xb7, 0x7f, 0x07, 0x1b, 0x96, - 0x63, 0xbb, 0xb8, 0x8d, 0x4d, 0xe2, 0x5a, 0x54, 0xe4, 0x2e, 0xa7, 0xbf, 0x14, 0xf8, 0xea, 0xf5, - 0x76, 0x3a, 0x04, 0x65, 0xf9, 0xc2, 0x87, 0xe0, 0xb2, 0x49, 0x5c, 0x73, 0xe4, 0x79, 0xd8, 0x35, - 0xc7, 0x07, 0xc4, 0xb1, 0xcd, 0xb1, 0x48, 0x63, 0x49, 0xd7, 0x64, 0xdc, 0x97, 0x77, 0x67, 0x01, - 0xa7, 0x69, 0x46, 0x34, 0x4f, 0x04, 0x5f, 0x01, 0x05, 0x3a, 0xa2, 0x43, 0xec, 0x5a, 0xd5, 0xa5, - 0x75, 0x65, 0xa3, 0xa8, 0x97, 0x03, 0x5f, 0x2d, 0xb4, 0x43, 0x13, 0x9a, 0xec, 0xc1, 0xcf, 0x41, - 0xf9, 0x11, 0xe9, 0x76, 0xf0, 0x60, 0xe8, 0x18, 0x0c, 0x57, 0xf3, 0x22, 0xcf, 0xb7, 0x52, 0x93, - 0xb1, 0x17, 0xe3, 0x84, 0x1e, 0xaf, 0xc8, 0x20, 0xcb, 0x89, 0x0d, 0x94, 0x64, 0x83, 0x5f, 0x82, - 0x1a, 0x1d, 0x99, 0x26, 0xa6, 0xb4, 0x37, 0x72, 0xf6, 0x48, 0x97, 0x7e, 0x6c, 0x53, 0x46, 0xbc, - 0x71, 0xcb, 0x1e, 0xd8, 0xac, 0xba, 0xbc, 0xae, 0x6c, 0xe4, 0xf5, 0x7a, 0xe0, 0xab, 0xb5, 0x76, - 0x26, 0x0a, 0x9d, 0xc1, 0x00, 0x11, 0xb8, 0xd6, 0x33, 0x6c, 0x07, 0x5b, 0x73, 0xdc, 0x05, 0xc1, - 0x5d, 0x0b, 0x7c, 0xf5, 0xda, 0xdd, 0x54, 0x04, 0xca, 0xf0, 0x6c, 0xfc, 0xba, 0x08, 0x56, 0xa7, - 0xde, 0x0b, 0xfc, 0x04, 0x2c, 0x1b, 0x26, 0xb3, 0x4f, 0xb8, 0xa8, 0xb8, 0x54, 0x5f, 0x4e, 0xde, - 0x0e, 0xaf, 0x74, 0xf1, 0xab, 0x47, 0xb8, 0x87, 0x79, 0x12, 0x70, 0xfc, 0xc8, 0x76, 0x84, 0x2b, - 0x92, 0x14, 0xd0, 0x01, 0x15, 0xc7, 0xa0, 0x6c, 0xa2, 0x47, 0xae, 0x36, 0x91, 0x9f, 0xf2, 0xd6, - 0xeb, 0xe7, 0x7b, 0x5c, 0xdc, 0x43, 0xff, 0x5f, 0xe0, 0xab, 0x95, 0xd6, 0x0c, 0x0f, 0x9a, 0x63, - 0x86, 0x1e, 0x80, 0xc2, 0x16, 0x5d, 0xa1, 0x38, 0x2f, 0x7f, 0xe1, 0xf3, 0xae, 0x05, 0xbe, 0x0a, - 0x5b, 0x73, 0x4c, 0x28, 0x85, 0xbd, 0xf1, 0x97, 0x02, 0x72, 0x2f, 0xa6, 0x80, 0x7e, 0x38, 0x55, - 0x40, 0x6f, 0x64, 0x89, 0x36, 0xb3, 0x78, 0xde, 0x9d, 0x29, 0x9e, 0xf5, 0x4c, 0x86, 0xb3, 0x0b, - 0xe7, 0x6f, 0x39, 0xb0, 0xb2, 0x47, 0xba, 0xbb, 0xc4, 0xb5, 0x6c, 0x66, 0x13, 0x17, 0x6e, 0x83, - 0x25, 0x36, 0x1e, 0x4e, 0x8a, 0xd0, 0xfa, 0xe4, 0xe8, 0xce, 0x78, 0x88, 0x4f, 0x7d, 0xb5, 0x92, - 0xc4, 0x72, 0x1b, 0x12, 0x68, 0xd8, 0x8a, 0xc2, 0x59, 0x14, 0x7e, 0xdb, 0xd3, 0xc7, 0x9d, 0xfa, - 0x6a, 0x4a, 0x8b, 0xd5, 0x22, 0xa6, 0xe9, 0xa0, 0x60, 0x1f, 0xac, 0xf2, 0xe4, 0x1c, 0x78, 0xa4, - 0x1b, 0xaa, 0x2c, 0x77, 0xe1, 0xac, 0x5f, 0x95, 0x01, 0xac, 0xb6, 0x92, 0x44, 0x68, 0x9a, 0x17, - 0x9e, 0x84, 0x1a, 0xeb, 0x78, 0x86, 0x4b, 0xc3, 0x4f, 0x7a, 0x3e, 0x4d, 0xd7, 0xe4, 0x69, 0x42, - 0x67, 0xd3, 0x6c, 0x28, 0xe5, 0x04, 0xf8, 0x2a, 0x58, 0xf6, 0xb0, 0x41, 0x89, 0x2b, 0xf4, 0x5c, - 0x8a, 0xb3, 0x83, 0x84, 0x15, 0xc9, 0x5d, 0xf8, 0x1a, 0x28, 0x0c, 0x30, 0xa5, 0x46, 0x1f, 0x8b, - 0x8a, 0x53, 0xd2, 0x2f, 0x49, 0x60, 0x61, 0x3f, 0x34, 0xa3, 0xc9, 0x7e, 0xe3, 0x07, 0x05, 0x14, - 0x5e, 0x4c, 0xf7, 0xfb, 0x60, 0xba, 0xfb, 0x55, 0xb3, 0x94, 0x97, 0xd1, 0xf9, 0x7e, 0xca, 0x8b, - 0x40, 0x45, 0xd7, 0xdb, 0x04, 0xe5, 0xa1, 0xe1, 0x19, 0x8e, 0x83, 0x1d, 0x9b, 0x0e, 0x44, 0xac, - 0x79, 0xfd, 0x12, 0xaf, 0xcb, 0x07, 0xb1, 0x19, 0x25, 0x31, 0xdc, 0xc5, 0x24, 0x83, 0xa1, 0x83, - 0xf9, 0x65, 0x86, 0x72, 0x93, 0x2e, 0xbb, 0xb1, 0x19, 0x25, 0x31, 0xf0, 0x3e, 0xb8, 0x1a, 0x56, - 0xb0, 0xd9, 0x0e, 0x98, 0x13, 0x1d, 0xf0, 0xff, 0x81, 0xaf, 0x5e, 0xdd, 0x49, 0x03, 0xa0, 0x74, - 0x3f, 0xb8, 0x0d, 0x56, 0xba, 0x86, 0x79, 0x4c, 0x7a, 0xbd, 0x64, 0xc5, 0xae, 0x04, 0xbe, 0xba, - 0xa2, 0x27, 0xec, 0x68, 0x0a, 0x05, 0xbf, 0x00, 0x45, 0x8a, 0x1d, 0x6c, 0x32, 0xe2, 0x49, 0x89, - 0xbd, 0x75, 0xce, 0xac, 0x18, 0x5d, 0xec, 0xb4, 0xa5, 0x6b, 0xd8, 0xe9, 0x27, 0x2b, 0x14, 0x51, - 0xc2, 0xf7, 0xc0, 0xda, 0xc0, 0x70, 0x47, 0x46, 0x84, 0x14, 0xda, 0x2a, 0xea, 0x30, 0xf0, 0xd5, - 0xb5, 0xfd, 0xa9, 0x1d, 0x34, 0x83, 0x84, 0x9f, 0x82, 0x22, 0x9b, 0xb4, 0xd1, 0x65, 0x11, 0x5a, - 0x6a, 0xa3, 0x38, 0x20, 0xd6, 0x54, 0x17, 0x8d, 0x54, 0x12, 0xb5, 0xd0, 0x88, 0x86, 0x0f, 0x1e, - 0x8c, 0x39, 0xf2, 0xc6, 0x76, 0x7a, 0x0c, 0x7b, 0x77, 0x6d, 0xd7, 0xa6, 0x47, 0xd8, 0x12, 0x13, - 0x4b, 0x3e, 0x1c, 0x3c, 0x3a, 0x9d, 0x56, 0x1a, 0x04, 0x65, 0xf9, 0xc2, 0x16, 0x58, 0x8b, 0x53, - 0xbb, 0x4f, 0x2c, 0x5c, 0x2d, 0x89, 0x87, 0x71, 0x8b, 0x7f, 0xe5, 0xee, 0xd4, 0xce, 0xe9, 0x9c, - 0x05, 0xcd, 0xf8, 0x26, 0x07, 0x0d, 0x90, 0x3d, 0x68, 0x34, 0xbe, 0xcf, 0x83, 0x52, 0xdc, 0x53, - 0x0f, 0x01, 0x30, 0x27, 0x85, 0x8b, 0xca, 0xbe, 0x7a, 0x33, 0xeb, 0x11, 0x44, 0x25, 0x2e, 0xee, - 0x07, 0x91, 0x89, 0xa2, 0x04, 0x11, 0xfc, 0x0c, 0x94, 0xc4, 0xb4, 0x25, 0x4a, 0xd0, 0xe2, 0x85, - 0x4b, 0xd0, 0x6a, 0xe0, 0xab, 0xa5, 0xf6, 0x84, 0x00, 0xc5, 0x5c, 0xb0, 0x97, 0xbc, 0xb2, 0xe7, - 0x2c, 0xa7, 0x70, 0xfa, 0x7a, 0xc5, 0x11, 0x33, 0xac, 0xbc, 0xa8, 0xc9, 0x59, 0x63, 0x49, 0x24, - 0x38, 0x6b, 0x8c, 0x68, 0x82, 0x92, 0x98, 0x8b, 0xb0, 0x85, 0x2d, 0xa1, 0xd1, 0xbc, 0x7e, 0x59, - 0x42, 0x4b, 0xed, 0xc9, 0x06, 0x8a, 0x31, 0x9c, 0x38, 0x1c, 0x78, 0xe4, 0xd8, 0x15, 0x11, 0x87, - 0xe3, 0x11, 0x92, 0xbb, 0xf0, 0x0e, 0xa8, 0xc8, 0x90, 0xb0, 0x75, 0xcf, 0xb5, 0xf0, 0xd7, 0x98, - 0x8a, 0xa7, 0x59, 0xd2, 0xab, 0xd2, 0xa3, 0xb2, 0x3b, 0xb3, 0x8f, 0xe6, 0x3c, 0xe0, 0xb7, 0x0a, - 0xb8, 0x3e, 0x72, 0x4d, 0x32, 0x72, 0x19, 0xb6, 0x3a, 0xd8, 0x1b, 0xd8, 0x2e, 0xff, 0x99, 0x75, - 0x40, 0x2c, 0x2a, 0x94, 0x5b, 0xde, 0xba, 0x9d, 0x9a, 0xec, 0xc3, 0x74, 0x9f, 0x50, 0xe7, 0x19, - 0x9b, 0x28, 0xeb, 0x24, 0xa8, 0x82, 0xbc, 0x87, 0x0d, 0x6b, 0x2c, 0xe4, 0x9d, 0xd7, 0x4b, 0xbc, - 0x8c, 0x22, 0x6e, 0x40, 0xa1, 0xbd, 0xf1, 0xb3, 0x02, 0x2e, 0xcd, 0x4c, 0xb5, 0xff, 0xfd, 0xb1, - 0xa5, 0xf1, 0x8b, 0x02, 0xb2, 0xee, 0x02, 0x1e, 0x24, 0x75, 0xc1, 0x9f, 0x55, 0x49, 0xdf, 0x9a, - 0xd2, 0xc4, 0xa9, 0xaf, 0xde, 0xcc, 0xfa, 0x75, 0xcc, 0xa7, 0x10, 0xaa, 0x1d, 0xde, 0xbb, 0x93, - 0x14, 0xce, 0x47, 0x91, 0x70, 0x16, 0x05, 0x5d, 0x33, 0x16, 0xcd, 0xf9, 0xb8, 0xa4, 0xbb, 0xfe, - 0xee, 0xe3, 0x67, 0xf5, 0x85, 0x27, 0xcf, 0xea, 0x0b, 0x4f, 0x9f, 0xd5, 0x17, 0xbe, 0x09, 0xea, - 0xca, 0xe3, 0xa0, 0xae, 0x3c, 0x09, 0xea, 0xca, 0xd3, 0xa0, 0xae, 0xfc, 0x11, 0xd4, 0x95, 0xef, - 0xfe, 0xac, 0x2f, 0x3c, 0xb8, 0x92, 0xf2, 0xef, 0x8a, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xae, - 0xfd, 0x54, 0xb2, 0xdd, 0x10, 0x00, 0x00, + // 1696 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4f, 0x73, 0xe3, 0x48, + 0x15, 0x8f, 0xe2, 0xd8, 0xb1, 0xdb, 0xc9, 0xc4, 0xd3, 0xb3, 0x33, 0x63, 0xc2, 0x96, 0x95, 0xd5, + 0xec, 0x6e, 0x65, 0xa9, 0x45, 0x66, 0xb2, 0x53, 0x2c, 0xff, 0x8b, 0x91, 0x87, 0x59, 0x26, 0x78, + 0x36, 0xa6, 0x9d, 0x40, 0xd5, 0xb2, 0x50, 0xc8, 0x52, 0xdb, 0xd1, 0x46, 0x56, 0x1b, 0x75, 0x2b, + 0xb5, 0xb9, 0x50, 0x54, 0xf1, 0x05, 0xe0, 0xc8, 0x17, 0xe0, 0xc8, 0x05, 0xce, 0x70, 0xa3, 0x72, + 0xdc, 0xe2, 0xb4, 0xc5, 0x41, 0xc5, 0x88, 0x0f, 0xc0, 0x3d, 0x5c, 0xa8, 0x6e, 0xb5, 0xf5, 0xcf, + 0x52, 0xc8, 0x6c, 0x15, 0x5b, 0xdc, 0xa2, 0xf7, 0x7e, 0xef, 0xd7, 0x4f, 0xfd, 0x9e, 0x7e, 0xef, + 0xc5, 0xe0, 0x5b, 0x67, 0x5f, 0xa3, 0xba, 0x43, 0xfa, 0x67, 0xc1, 0x04, 0xfb, 0x1e, 0x66, 0x98, + 0xf6, 0xcf, 0xb1, 0x67, 0x13, 0xbf, 0x2f, 0x1d, 0xe6, 0xc2, 0xe9, 0x4f, 0x4c, 0x66, 0x9d, 0xf6, + 0xcf, 0x1f, 0xf6, 0x67, 0xd8, 0xc3, 0xbe, 0xc9, 0xb0, 0xad, 0x2f, 0x7c, 0xc2, 0x08, 0xbc, 0x13, + 0x83, 0x74, 0x73, 0xe1, 0xe8, 0x02, 0xa4, 0x9f, 0x3f, 0xdc, 0xfd, 0xf2, 0xcc, 0x61, 0xa7, 0xc1, + 0x44, 0xb7, 0xc8, 0xbc, 0x3f, 0x23, 0x33, 0xd2, 0x17, 0xd8, 0x49, 0x30, 0x15, 0x4f, 0xe2, 0x41, + 0xfc, 0x15, 0x73, 0xec, 0x6a, 0x99, 0x83, 0x2c, 0xe2, 0xe3, 0x92, 0x73, 0x76, 0x1f, 0xa5, 0x98, + 0xb9, 0x69, 0x9d, 0x3a, 0x1e, 0xf6, 0x2f, 0xfa, 0x8b, 0xb3, 0x19, 0x37, 0xd0, 0xfe, 0x1c, 0x33, + 0xb3, 0x2c, 0xaa, 0x5f, 0x15, 0xe5, 0x07, 0x1e, 0x73, 0xe6, 0x78, 0x25, 0xe0, 0xab, 0xff, 0x2d, + 0x80, 0x5a, 0xa7, 0x78, 0x6e, 0x16, 0xe3, 0xb4, 0x7f, 0x2b, 0x60, 0x73, 0xe0, 0x13, 0xef, 0x90, + 0x4c, 0xe0, 0xcf, 0x41, 0x93, 0xe7, 0x63, 0x9b, 0xcc, 0xec, 0x2a, 0x7b, 0xca, 0x7e, 0xfb, 0xe0, + 0x2b, 0x7a, 0x7a, 0x4b, 0x09, 0xad, 0xbe, 0x38, 0x9b, 0x71, 0x03, 0xd5, 0x39, 0x5a, 0x3f, 0x7f, + 0xa8, 0x1f, 0x4d, 0x3e, 0xc2, 0x16, 0x7b, 0x8e, 0x99, 0x69, 0xc0, 0xcb, 0x50, 0x5d, 0x8b, 0x42, + 0x15, 0xa4, 0x36, 0x94, 0xb0, 0x42, 0x03, 0x6c, 0xd0, 0x05, 0xb6, 0xba, 0xeb, 0x82, 0x7d, 0x4f, + 0x2f, 0xa9, 0x81, 0x2e, 0xb3, 0x19, 0x2f, 0xb0, 0x65, 0x6c, 0x49, 0xb6, 0x0d, 0xfe, 0x84, 0x44, + 0x2c, 0x3c, 0x04, 0x0d, 0xca, 0x4c, 0x16, 0xd0, 0x6e, 0x4d, 0xb0, 0x68, 0xd7, 0xb2, 0x08, 0xa4, + 0x71, 0x4b, 0xf2, 0x34, 0xe2, 0x67, 0x24, 0x19, 0xb4, 0x3f, 0x28, 0xa0, 0x2d, 0x91, 0x43, 0x87, + 0x32, 0xf8, 0xe1, 0xca, 0x0d, 0xe8, 0x37, 0xbb, 0x01, 0x1e, 0x2d, 0xde, 0xbf, 0x23, 0x4f, 0x6a, + 0x2e, 0x2d, 0x99, 0xb7, 0x7f, 0x0c, 0xea, 0x0e, 0xc3, 0x73, 0xda, 0x5d, 0xdf, 0xab, 0xed, 0xb7, + 0x0f, 0x5e, 0xbd, 0x2e, 0x71, 0x63, 0x5b, 0x12, 0xd5, 0x9f, 0xf1, 0x10, 0x14, 0x47, 0x6a, 0x7f, + 0xdb, 0x48, 0x12, 0xe6, 0x57, 0x02, 0xdf, 0x06, 0x4d, 0x5e, 0x58, 0x3b, 0x70, 0xb1, 0x48, 0xb8, + 0x95, 0x26, 0x30, 0x96, 0x76, 0x94, 0x20, 0xe0, 0x3e, 0x68, 0xf2, 0x5e, 0xf8, 0x80, 0x78, 0xb8, + 0xdb, 0x14, 0xe8, 0x2d, 0x8e, 0x3c, 0x96, 0x36, 0x94, 0x78, 0xe1, 0x09, 0xb8, 0x4f, 0x99, 0xe9, + 0x33, 0xc7, 0x9b, 0x3d, 0xc1, 0xa6, 0xed, 0x3a, 0x1e, 0x1e, 0x63, 0x8b, 0x78, 0x36, 0x15, 0xb5, + 0xab, 0x19, 0x5f, 0x8c, 0x42, 0xf5, 0xfe, 0xb8, 0x1c, 0x82, 0xaa, 0x62, 0xe1, 0x87, 0xe0, 0xb6, + 0x45, 0x3c, 0x2b, 0xf0, 0x7d, 0xec, 0x59, 0x17, 0x23, 0xe2, 0x3a, 0xd6, 0x85, 0x28, 0x63, 0xcb, + 0xd0, 0x65, 0xde, 0xb7, 0x07, 0x45, 0xc0, 0x55, 0x99, 0x11, 0xad, 0x12, 0xc1, 0x37, 0xc0, 0x26, + 0x0d, 0xe8, 0x02, 0x7b, 0x76, 0x77, 0x63, 0x4f, 0xd9, 0x6f, 0x1a, 0xed, 0x28, 0x54, 0x37, 0xc7, + 0xb1, 0x09, 0x2d, 0x7d, 0xf0, 0x27, 0xa0, 0xfd, 0x11, 0x99, 0x1c, 0xe3, 0xf9, 0xc2, 0x35, 0x19, + 0xee, 0xd6, 0x45, 0x9d, 0x5f, 0x2f, 0x2d, 0xc6, 0x61, 0x8a, 0x13, 0xfd, 0x78, 0x47, 0x26, 0xd9, + 0xce, 0x38, 0x50, 0x96, 0x0d, 0xfe, 0x0c, 0xec, 0xd2, 0xc0, 0xb2, 0x30, 0xa5, 0xd3, 0xc0, 0x3d, + 0x24, 0x13, 0xfa, 0x7d, 0x87, 0x32, 0xe2, 0x5f, 0x0c, 0x9d, 0xb9, 0xc3, 0xba, 0x8d, 0x3d, 0x65, + 0xbf, 0x6e, 0xf4, 0xa2, 0x50, 0xdd, 0x1d, 0x57, 0xa2, 0xd0, 0x35, 0x0c, 0x10, 0x81, 0x7b, 0x53, + 0xd3, 0x71, 0xb1, 0xbd, 0xc2, 0xbd, 0x29, 0xb8, 0x77, 0xa3, 0x50, 0xbd, 0xf7, 0xb4, 0x14, 0x81, + 0x2a, 0x22, 0xb5, 0x3f, 0xaf, 0x83, 0xed, 0xdc, 0xf7, 0x02, 0x7f, 0x00, 0x1a, 0xa6, 0xc5, 0x9c, + 0x73, 0xde, 0x54, 0xbc, 0x55, 0x1f, 0x64, 0x6f, 0x87, 0x2b, 0x5d, 0xfa, 0xd5, 0x23, 0x3c, 0xc5, + 0xbc, 0x08, 0x38, 0xfd, 0xc8, 0x1e, 0x8b, 0x50, 0x24, 0x29, 0xa0, 0x0b, 0x3a, 0xae, 0x49, 0xd9, + 0xb2, 0x1f, 0x79, 0xb7, 0x89, 0xfa, 0xb4, 0x0f, 0xbe, 0x74, 0xb3, 0x8f, 0x8b, 0x47, 0x18, 0xaf, + 0x44, 0xa1, 0xda, 0x19, 0x16, 0x78, 0xd0, 0x0a, 0x33, 0xf4, 0x01, 0x14, 0xb6, 0xe4, 0x0a, 0xc5, + 0x79, 0xf5, 0x97, 0x3e, 0xef, 0x5e, 0x14, 0xaa, 0x70, 0xb8, 0xc2, 0x84, 0x4a, 0xd8, 0xb5, 0x7f, + 0x29, 0xa0, 0xf6, 0xf9, 0x08, 0xe8, 0x77, 0x72, 0x02, 0xfa, 0x6a, 0x55, 0xd3, 0x56, 0x8a, 0xe7, + 0xd3, 0x82, 0x78, 0xf6, 0x2a, 0x19, 0xae, 0x17, 0xce, 0xbf, 0xd6, 0xc0, 0xd6, 0x21, 0x99, 0x0c, + 0x88, 0x67, 0x3b, 0xcc, 0x21, 0x1e, 0x7c, 0x04, 0x36, 0xd8, 0xc5, 0x62, 0x29, 0x42, 0x7b, 0xcb, + 0xa3, 0x8f, 0x2f, 0x16, 0xf8, 0x2a, 0x54, 0x3b, 0x59, 0x2c, 0xb7, 0x21, 0x81, 0x86, 0xc3, 0x24, + 0x9d, 0x75, 0x11, 0xf7, 0x28, 0x7f, 0xdc, 0x55, 0xa8, 0x96, 0x8c, 0x58, 0x3d, 0x61, 0xca, 0x27, + 0x05, 0x67, 0x60, 0x9b, 0x17, 0x67, 0xe4, 0x93, 0x49, 0xdc, 0x65, 0xb5, 0x97, 0xae, 0xfa, 0x5d, + 0x99, 0xc0, 0xf6, 0x30, 0x4b, 0x84, 0xf2, 0xbc, 0xf0, 0x3c, 0xee, 0xb1, 0x63, 0xdf, 0xf4, 0x68, + 0xfc, 0x4a, 0x9f, 0xad, 0xa7, 0x77, 0xe5, 0x69, 0xa2, 0xcf, 0xf2, 0x6c, 0xa8, 0xe4, 0x04, 0xf8, + 0x26, 0x68, 0xf8, 0xd8, 0xa4, 0xc4, 0x13, 0xfd, 0xdc, 0x4a, 0xab, 0x83, 0x84, 0x15, 0x49, 0x2f, + 0x7c, 0x0b, 0x6c, 0xce, 0x31, 0xa5, 0xe6, 0x0c, 0x0b, 0xc5, 0x69, 0x19, 0x3b, 0x12, 0xb8, 0xf9, + 0x3c, 0x36, 0xa3, 0xa5, 0x5f, 0xfb, 0xbd, 0x02, 0x36, 0x3f, 0x9f, 0xe9, 0xf7, 0xed, 0xfc, 0xf4, + 0xeb, 0x56, 0x75, 0x5e, 0xc5, 0xe4, 0xfb, 0x5d, 0x43, 0x24, 0x2a, 0xa6, 0xde, 0x43, 0xd0, 0x5e, + 0x98, 0xbe, 0xe9, 0xba, 0xd8, 0x75, 0xe8, 0x5c, 0xe4, 0x5a, 0x37, 0x76, 0xb8, 0x2e, 0x8f, 0x52, + 0x33, 0xca, 0x62, 0x78, 0x88, 0x45, 0xe6, 0x0b, 0x17, 0xf3, 0xcb, 0x8c, 0xdb, 0x4d, 0x86, 0x0c, + 0x52, 0x33, 0xca, 0x62, 0xe0, 0x11, 0xb8, 0x1b, 0x2b, 0x58, 0x71, 0x02, 0xd6, 0xc4, 0x04, 0xfc, + 0x42, 0x14, 0xaa, 0x77, 0x1f, 0x97, 0x01, 0x50, 0x79, 0x1c, 0x9c, 0x81, 0xce, 0x82, 0xd8, 0x5c, + 0x9c, 0x03, 0x1f, 0xcb, 0xe1, 0xd7, 0x16, 0xf7, 0xfc, 0x46, 0xe9, 0x65, 0x8c, 0x0a, 0xe0, 0x58, + 0x03, 0x8b, 0x56, 0xb4, 0x42, 0x0a, 0x1f, 0x81, 0xad, 0x89, 0x69, 0x9d, 0x91, 0xe9, 0x34, 0x3b, + 0x1a, 0x3a, 0x51, 0xa8, 0x6e, 0x19, 0x19, 0x3b, 0xca, 0xa1, 0xe0, 0x4f, 0x41, 0x93, 0x62, 0x17, + 0x5b, 0x8c, 0xf8, 0xb2, 0x97, 0xdf, 0xb9, 0x61, 0xf9, 0xcd, 0x09, 0x76, 0xc7, 0x32, 0x34, 0x5e, + 0x29, 0x96, 0x4f, 0x28, 0xa1, 0x84, 0xdf, 0x00, 0xb7, 0xe6, 0xa6, 0x17, 0x98, 0x09, 0x52, 0x34, + 0x71, 0xd3, 0x80, 0x51, 0xa8, 0xde, 0x7a, 0x9e, 0xf3, 0xa0, 0x02, 0x12, 0xfe, 0x10, 0x34, 0xd9, + 0x72, 0x5e, 0x37, 0x44, 0x6a, 0xa5, 0x13, 0x69, 0x44, 0xec, 0xdc, 0xb8, 0x4e, 0xda, 0x31, 0x99, + 0xd5, 0x09, 0x0d, 0xdf, 0x70, 0x18, 0x73, 0x65, 0x69, 0x1e, 0x4f, 0x19, 0xf6, 0x9f, 0x3a, 0x9e, + 0x43, 0x4f, 0xb1, 0x2d, 0x56, 0xa3, 0x7a, 0xbc, 0xe1, 0x1c, 0x1f, 0x0f, 0xcb, 0x20, 0xa8, 0x2a, + 0x16, 0x0e, 0xc1, 0xad, 0xb4, 0x87, 0x9e, 0x13, 0x1b, 0x77, 0x5b, 0xe2, 0x0b, 0x7c, 0x9d, 0xbf, + 0xe5, 0x20, 0xe7, 0xb9, 0x5a, 0xb1, 0xa0, 0x42, 0x6c, 0x76, 0xa3, 0x01, 0xd5, 0x1b, 0x8d, 0xf6, + 0xdb, 0x3a, 0x68, 0xa5, 0xc3, 0xfb, 0x04, 0x00, 0x6b, 0xa9, 0x90, 0x54, 0x0e, 0xf0, 0xd7, 0xaa, + 0xbe, 0xb6, 0x44, 0x4b, 0xd3, 0xc1, 0x93, 0x98, 0x28, 0xca, 0x10, 0xc1, 0x1f, 0x83, 0x96, 0x58, + 0xeb, 0x84, 0xd6, 0xad, 0xbf, 0xb4, 0xd6, 0x6d, 0x47, 0xa1, 0xda, 0x1a, 0x2f, 0x09, 0x50, 0xca, + 0x05, 0xa7, 0xd9, 0x2b, 0xfb, 0x8c, 0xba, 0x0d, 0xf3, 0xd7, 0x2b, 0x8e, 0x28, 0xb0, 0x72, 0xf5, + 0x94, 0x4b, 0xcd, 0x86, 0x28, 0x70, 0xd5, 0xbe, 0xd2, 0x07, 0x2d, 0xb1, 0x80, 0x61, 0x1b, 0xdb, + 0xa2, 0x47, 0xeb, 0xc6, 0x6d, 0x09, 0x6d, 0x8d, 0x97, 0x0e, 0x94, 0x62, 0x38, 0x71, 0xbc, 0x59, + 0xc9, 0xfd, 0x2e, 0x21, 0x8e, 0xf7, 0x30, 0x24, 0xbd, 0xf0, 0x09, 0xe8, 0xc8, 0x94, 0xb0, 0xfd, + 0xcc, 0xb3, 0xf1, 0xc7, 0x98, 0x8a, 0x4f, 0xb3, 0x65, 0x74, 0x65, 0x44, 0x67, 0x50, 0xf0, 0xa3, + 0x95, 0x08, 0xf8, 0x6b, 0x05, 0xdc, 0x0f, 0x3c, 0x8b, 0x04, 0x1e, 0xc3, 0xf6, 0x31, 0xf6, 0xe7, + 0x8e, 0xc7, 0xff, 0x9f, 0x1b, 0x11, 0x9b, 0x8a, 0xce, 0x6d, 0x1f, 0xbc, 0x5d, 0x5a, 0xec, 0x93, + 0xf2, 0x98, 0xb8, 0xcf, 0x2b, 0x9c, 0xa8, 0xea, 0x24, 0xa8, 0x82, 0xba, 0x8f, 0x4d, 0xfb, 0x42, + 0xb4, 0x77, 0xdd, 0x68, 0x71, 0xbd, 0x46, 0xdc, 0x80, 0x62, 0xbb, 0xf6, 0x47, 0x05, 0xec, 0x14, + 0xd6, 0xe7, 0xff, 0xff, 0xfd, 0x48, 0x9b, 0x80, 0x15, 0x7d, 0x85, 0xef, 0x83, 0xba, 0x1f, 0xb8, + 0x78, 0xf9, 0x29, 0xbd, 0x75, 0x23, 0xad, 0x46, 0x81, 0x8b, 0xd3, 0x49, 0xc6, 0x9f, 0x28, 0x8a, + 0x69, 0xb4, 0xbf, 0x2b, 0xe0, 0xcd, 0x22, 0xfc, 0xc8, 0xfb, 0xde, 0xc7, 0x0e, 0x1b, 0x10, 0x1b, + 0x53, 0x84, 0x7f, 0x11, 0x38, 0x3e, 0x9e, 0x63, 0x8f, 0xc1, 0x77, 0xc1, 0xb6, 0x45, 0x3c, 0x66, + 0xf2, 0x6b, 0x79, 0xdf, 0x9c, 0x2f, 0xd7, 0xab, 0xdb, 0x7c, 0x43, 0x19, 0x64, 0x1d, 0x28, 0x8f, + 0x83, 0x63, 0xd0, 0x24, 0x0b, 0xfe, 0x8f, 0x3e, 0xf1, 0xe5, 0x6a, 0xf5, 0xee, 0x52, 0x0b, 0x8f, + 0xa4, 0xfd, 0x2a, 0x54, 0x1f, 0x5c, 0x93, 0xc6, 0x12, 0x86, 0x12, 0x22, 0xa8, 0x81, 0xc6, 0xb9, + 0xe9, 0x06, 0x98, 0x4f, 0xc0, 0xda, 0x7e, 0xdd, 0x00, 0xbc, 0xc7, 0x7f, 0x24, 0x2c, 0x48, 0x7a, + 0xb4, 0xbf, 0x94, 0xbe, 0xdc, 0x88, 0xd8, 0xa9, 0xaa, 0x8c, 0x4c, 0xc6, 0xb0, 0xef, 0xc1, 0xf7, + 0x72, 0x2b, 0xe3, 0x3b, 0x85, 0x95, 0xf1, 0x41, 0xc9, 0xe2, 0x97, 0xa5, 0xf9, 0x5f, 0x6d, 0x91, + 0xda, 0xe5, 0x3a, 0x78, 0xa5, 0xac, 0x9a, 0xf0, 0xbb, 0xb1, 0x7e, 0x10, 0x4f, 0x66, 0xbc, 0x9f, + 0xd5, 0x0f, 0xe2, 0x5d, 0x85, 0xea, 0xbd, 0x62, 0x5c, 0xec, 0x41, 0x32, 0x0e, 0x7a, 0xa0, 0x4d, + 0xd2, 0x1b, 0x96, 0x4d, 0xfa, 0xcd, 0x1b, 0xf5, 0x53, 0x79, 0x83, 0xc4, 0x1b, 0x4c, 0xd6, 0x97, + 0x3d, 0x00, 0xfe, 0x12, 0xec, 0x90, 0xfc, 0xdd, 0x8b, 0xca, 0xdd, 0xfc, 0xcc, 0xb2, 0xba, 0x19, + 0xf7, 0xe5, 0x7b, 0xef, 0x14, 0xfc, 0xa8, 0x78, 0x98, 0xf6, 0x27, 0x05, 0x54, 0x29, 0x0b, 0x1c, + 0x65, 0x55, 0x96, 0x7f, 0x59, 0x2d, 0xe3, 0x20, 0xa7, 0xb0, 0x57, 0xa1, 0xfa, 0x5a, 0xd5, 0x8f, + 0x5a, 0xbc, 0xec, 0x54, 0x3f, 0x79, 0xf6, 0x24, 0x2b, 0xc3, 0xef, 0x25, 0x32, 0xbc, 0x2e, 0xe8, + 0xfa, 0xa9, 0x04, 0xdf, 0x8c, 0x4b, 0x86, 0x1b, 0x5f, 0xbf, 0x7c, 0xd1, 0x5b, 0xfb, 0xe4, 0x45, + 0x6f, 0xed, 0xd3, 0x17, 0xbd, 0xb5, 0x5f, 0x45, 0x3d, 0xe5, 0x32, 0xea, 0x29, 0x9f, 0x44, 0x3d, + 0xe5, 0xd3, 0xa8, 0xa7, 0xfc, 0x23, 0xea, 0x29, 0xbf, 0xf9, 0x67, 0x6f, 0xed, 0x83, 0x3b, 0x25, + 0xbf, 0x32, 0xfe, 0x27, 0x00, 0x00, 0xff, 0xff, 0xf2, 0x8e, 0x19, 0x59, 0x94, 0x14, 0x00, 0x00, } func (m *CronJob) Marshal() (dAtA []byte, err error) { @@ -887,6 +1023,18 @@ func (m *JobSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.PodFailurePolicy != nil { + { + size, err := m.PodFailurePolicy.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } if m.Suspend != nil { i-- if *m.Suspend { @@ -1099,6 +1247,172 @@ func (m *JobTemplateSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PodFailurePolicy) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodFailurePolicy) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodFailurePolicy) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Rules) > 0 { + for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *PodFailurePolicyOnExitCodesRequirement) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodFailurePolicyOnExitCodesRequirement) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodFailurePolicyOnExitCodesRequirement) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Values) > 0 { + for iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- { + i = encodeVarintGenerated(dAtA, i, uint64(m.Values[iNdEx])) + i-- + dAtA[i] = 0x18 + } + } + i -= len(m.Operator) + copy(dAtA[i:], m.Operator) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Operator))) + i-- + dAtA[i] = 0x12 + if m.ContainerName != nil { + i -= len(*m.ContainerName) + copy(dAtA[i:], *m.ContainerName) + i = encodeVarintGenerated(dAtA, i, uint64(len(*m.ContainerName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PodFailurePolicyOnPodConditionsPattern) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodFailurePolicyOnPodConditionsPattern) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodFailurePolicyOnPodConditionsPattern) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.Status) + copy(dAtA[i:], m.Status) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Status))) + i-- + dAtA[i] = 0x12 + i -= len(m.Type) + copy(dAtA[i:], m.Type) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Type))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *PodFailurePolicyRule) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PodFailurePolicyRule) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PodFailurePolicyRule) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OnPodConditions) > 0 { + for iNdEx := len(m.OnPodConditions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OnPodConditions[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.OnExitCodes != nil { + { + size, err := m.OnExitCodes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + i -= len(m.Action) + copy(dAtA[i:], m.Action) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.Action))) + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func (m *UncountedTerminatedPods) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -1327,6 +1641,10 @@ func (m *JobSpec) Size() (n int) { if m.Suspend != nil { n += 2 } + if m.PodFailurePolicy != nil { + l = m.PodFailurePolicy.Size() + n += 1 + l + sovGenerated(uint64(l)) + } return n } @@ -1378,47 +1696,116 @@ func (m *JobTemplateSpec) Size() (n int) { return n } -func (m *UncountedTerminatedPods) Size() (n int) { +func (m *PodFailurePolicy) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Succeeded) > 0 { - for _, s := range m.Succeeded { - l = len(s) + if len(m.Rules) > 0 { + for _, e := range m.Rules { + l = e.Size() n += 1 + l + sovGenerated(uint64(l)) } } - if len(m.Failed) > 0 { - for _, s := range m.Failed { - l = len(s) - n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *PodFailurePolicyOnExitCodesRequirement) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ContainerName != nil { + l = len(*m.ContainerName) + n += 1 + l + sovGenerated(uint64(l)) + } + l = len(m.Operator) + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Values) > 0 { + for _, e := range m.Values { + n += 1 + sovGenerated(uint64(e)) } } return n } -func sovGenerated(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGenerated(x uint64) (n int) { - return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (this *CronJob) String() string { - if this == nil { - return "nil" +func (m *PodFailurePolicyOnPodConditionsPattern) Size() (n int) { + if m == nil { + return 0 } - s := strings.Join([]string{`&CronJob{`, - `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, - `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CronJobSpec", "CronJobSpec", 1), `&`, ``, 1) + `,`, - `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CronJobStatus", "CronJobStatus", 1), `&`, ``, 1) + `,`, - `}`, - }, "") - return s + var l int + _ = l + l = len(m.Type) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Status) + n += 1 + l + sovGenerated(uint64(l)) + return n } -func (this *CronJobList) String() string { - if this == nil { + +func (m *PodFailurePolicyRule) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Action) + n += 1 + l + sovGenerated(uint64(l)) + if m.OnExitCodes != nil { + l = m.OnExitCodes.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + if len(m.OnPodConditions) > 0 { + for _, e := range m.OnPodConditions { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *UncountedTerminatedPods) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Succeeded) > 0 { + for _, s := range m.Succeeded { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + if len(m.Failed) > 0 { + for _, s := range m.Failed { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func sovGenerated(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *CronJob) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CronJob{`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "CronJobSpec", "CronJobSpec", 1), `&`, ``, 1) + `,`, + `Status:` + strings.Replace(strings.Replace(this.Status.String(), "CronJobStatus", "CronJobStatus", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *CronJobList) String() string { + if this == nil { return "nil" } repeatedStringForItems := "[]CronJob{" @@ -1525,6 +1912,7 @@ func (this *JobSpec) String() string { `TTLSecondsAfterFinished:` + valueToStringGenerated(this.TTLSecondsAfterFinished) + `,`, `CompletionMode:` + valueToStringGenerated(this.CompletionMode) + `,`, `Suspend:` + valueToStringGenerated(this.Suspend) + `,`, + `PodFailurePolicy:` + strings.Replace(this.PodFailurePolicy.String(), "PodFailurePolicy", "PodFailurePolicy", 1) + `,`, `}`, }, "") return s @@ -1563,6 +1951,61 @@ func (this *JobTemplateSpec) String() string { }, "") return s } +func (this *PodFailurePolicy) String() string { + if this == nil { + return "nil" + } + repeatedStringForRules := "[]PodFailurePolicyRule{" + for _, f := range this.Rules { + repeatedStringForRules += strings.Replace(strings.Replace(f.String(), "PodFailurePolicyRule", "PodFailurePolicyRule", 1), `&`, ``, 1) + "," + } + repeatedStringForRules += "}" + s := strings.Join([]string{`&PodFailurePolicy{`, + `Rules:` + repeatedStringForRules + `,`, + `}`, + }, "") + return s +} +func (this *PodFailurePolicyOnExitCodesRequirement) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodFailurePolicyOnExitCodesRequirement{`, + `ContainerName:` + valueToStringGenerated(this.ContainerName) + `,`, + `Operator:` + fmt.Sprintf("%v", this.Operator) + `,`, + `Values:` + fmt.Sprintf("%v", this.Values) + `,`, + `}`, + }, "") + return s +} +func (this *PodFailurePolicyOnPodConditionsPattern) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PodFailurePolicyOnPodConditionsPattern{`, + `Type:` + fmt.Sprintf("%v", this.Type) + `,`, + `Status:` + fmt.Sprintf("%v", this.Status) + `,`, + `}`, + }, "") + return s +} +func (this *PodFailurePolicyRule) String() string { + if this == nil { + return "nil" + } + repeatedStringForOnPodConditions := "[]PodFailurePolicyOnPodConditionsPattern{" + for _, f := range this.OnPodConditions { + repeatedStringForOnPodConditions += strings.Replace(strings.Replace(f.String(), "PodFailurePolicyOnPodConditionsPattern", "PodFailurePolicyOnPodConditionsPattern", 1), `&`, ``, 1) + "," + } + repeatedStringForOnPodConditions += "}" + s := strings.Join([]string{`&PodFailurePolicyRule{`, + `Action:` + fmt.Sprintf("%v", this.Action) + `,`, + `OnExitCodes:` + strings.Replace(this.OnExitCodes.String(), "PodFailurePolicyOnExitCodesRequirement", "PodFailurePolicyOnExitCodesRequirement", 1) + `,`, + `OnPodConditions:` + repeatedStringForOnPodConditions + `,`, + `}`, + }, "") + return s +} func (this *UncountedTerminatedPods) String() string { if this == nil { return "nil" @@ -3048,6 +3491,42 @@ func (m *JobSpec) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.Suspend = &b + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodFailurePolicy", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodFailurePolicy == nil { + m.PodFailurePolicy = &PodFailurePolicy{} + } + if err := m.PodFailurePolicy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -3486,6 +3965,547 @@ func (m *JobTemplateSpec) Unmarshal(dAtA []byte) error { } return nil } +func (m *PodFailurePolicy) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodFailurePolicy: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodFailurePolicy: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Rules = append(m.Rules, PodFailurePolicyRule{}) + if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodFailurePolicyOnExitCodesRequirement) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodFailurePolicyOnExitCodesRequirement: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodFailurePolicyOnExitCodesRequirement: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + s := string(dAtA[iNdEx:postIndex]) + m.ContainerName = &s + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Operator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Operator = PodFailurePolicyOnExitCodesOperator(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType == 0 { + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Values = append(m.Values, v) + } else if wireType == 2 { + var packedLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + packedLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if packedLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + packedLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + var elementCount int + var count int + for _, integer := range dAtA[iNdEx:postIndex] { + if integer < 128 { + count++ + } + } + elementCount = count + if elementCount != 0 && len(m.Values) == 0 { + m.Values = make([]int32, 0, elementCount) + } + for iNdEx < postIndex { + var v int32 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Values = append(m.Values, v) + } + } else { + return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType) + } + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodFailurePolicyOnPodConditionsPattern) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodFailurePolicyOnPodConditionsPattern: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodFailurePolicyOnPodConditionsPattern: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Type = k8s_io_api_core_v1.PodConditionType(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Status = k8s_io_api_core_v1.ConditionStatus(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PodFailurePolicyRule) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PodFailurePolicyRule: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PodFailurePolicyRule: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Action", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Action = PodFailurePolicyAction(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OnExitCodes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OnExitCodes == nil { + m.OnExitCodes = &PodFailurePolicyOnExitCodesRequirement{} + } + if err := m.OnExitCodes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OnPodConditions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OnPodConditions = append(m.OnPodConditions, PodFailurePolicyOnPodConditionsPattern{}) + if err := m.OnPodConditions[len(m.OnPodConditions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *UncountedTerminatedPods) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.proto index a57fef0b2f6..3a060f4be70 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/generated.proto @@ -63,9 +63,16 @@ message CronJobSpec { // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. optional string schedule = 1; - // The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - // If not specified, this will rely on the time zone of the kube-controller-manager process. - // ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate. + // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. + // If not specified, this will default to the time zone of the kube-controller-manager process. + // The set of valid time zone names and the time zone offset is loaded from the system-wide time zone + // database by the API server during CronJob validation and the controller manager during execution. + // If no system-wide time zone database can be found a bundled version of the database is used instead. + // If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host + // configuration, the controller will stop creating new new Jobs and will create a system event with the + // reason UnknownTimeZone. + // More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones + // This is beta field and must be enabled via the `CronJobTimeZone` feature gate. // +optional optional string timeZone = 8; @@ -198,6 +205,19 @@ message JobSpec { // +optional optional int64 activeDeadlineSeconds = 3; + // Specifies the policy of handling failed pods. In particular, it allows to + // specify the set of actions and conditions which need to be + // satisfied to take the associated action. + // If empty, the default behaviour applies - the counter of failed pods, + // represented by the jobs's .status.failed field, is incremented and it is + // checked against the backoffLimit. This field cannot be used in combination + // with restartPolicy=OnFailure. + // + // This field is alpha-level. To use this field, you must enable the + // `JobPodFailurePolicy` feature gate (disabled by default). + // +optional + optional PodFailurePolicy podFailurePolicy = 11; + // Specifies the number of retries before marking this job failed. // Defaults to 6 // +optional @@ -364,6 +384,92 @@ message JobTemplateSpec { optional JobSpec spec = 2; } +// PodFailurePolicy describes how failed pods influence the backoffLimit. +message PodFailurePolicy { + // A list of pod failure policy rules. The rules are evaluated in order. + // Once a rule matches a Pod failure, the remaining of the rules are ignored. + // When no rule matches the Pod failure, the default handling applies - the + // counter of pod failures is incremented and it is checked against + // the backoffLimit. At most 20 elements are allowed. + // +listType=atomic + repeated PodFailurePolicyRule rules = 1; +} + +// PodFailurePolicyOnExitCodesRequirement describes the requirement for handling +// a failed pod based on its container exit codes. In particular, it lookups the +// .state.terminated.exitCode for each app container and init container status, +// represented by the .status.containerStatuses and .status.initContainerStatuses +// fields in the Pod status, respectively. Containers completed with success +// (exit code 0) are excluded from the requirement check. +message PodFailurePolicyOnExitCodesRequirement { + // Restricts the check for exit codes to the container with the + // specified name. When null, the rule applies to all containers. + // When specified, it should match one the container or initContainer + // names in the pod template. + // +optional + optional string containerName = 1; + + // Represents the relationship between the container exit code(s) and the + // specified values. Containers completed with success (exit code 0) are + // excluded from the requirement check. Possible values are: + // - In: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is in the set of specified values. + // - NotIn: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is not in the set of specified values. + // Additional values are considered to be added in the future. Clients should + // react to an unknown operator by assuming the requirement is not satisfied. + optional string operator = 2; + + // Specifies the set of values. Each returned container exit code (might be + // multiple in case of multiple containers) is checked against this set of + // values with respect to the operator. The list of values must be ordered + // and must not contain duplicates. Value '0' cannot be used for the In operator. + // At least one element is required. At most 255 elements are allowed. + // +listType=set + repeated int32 values = 3; +} + +// PodFailurePolicyOnPodConditionsPattern describes a pattern for matching +// an actual pod condition type. +message PodFailurePolicyOnPodConditionsPattern { + // Specifies the required Pod condition type. To match a pod condition + // it is required that specified type equals the pod condition type. + optional string type = 1; + + // Specifies the required Pod condition status. To match a pod condition + // it is required that the specified status equals the pod condition status. + // Defaults to True. + optional string status = 2; +} + +// PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. +// One of OnExitCodes and onPodConditions, but not both, can be used in each rule. +message PodFailurePolicyRule { + // Specifies the action taken on a pod failure when the requirements are satisfied. + // Possible values are: + // - FailJob: indicates that the pod's job is marked as Failed and all + // running pods are terminated. + // - Ignore: indicates that the counter towards the .backoffLimit is not + // incremented and a replacement pod is created. + // - Count: indicates that the pod is handled in the default way - the + // counter towards the .backoffLimit is incremented. + // Additional values are considered to be added in the future. Clients should + // react to an unknown action by skipping the rule. + optional string action = 1; + + // Represents the requirement on the container exit codes. + // +optional + optional PodFailurePolicyOnExitCodesRequirement onExitCodes = 2; + + // Represents the requirement on the pod conditions. The requirement is represented + // as a list of pod condition patterns. The requirement is satisfied if at + // least one pattern matches an actual pod condition. At most 20 elements are allowed. + // +listType=atomic + repeated PodFailurePolicyOnPodConditionsPattern onPodConditions = 3; +} + // UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't // been accounted in Job status counters. message UncountedTerminatedPods { diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go index 110f974b788..0f85ce0a189 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types.go @@ -87,6 +87,120 @@ const ( IndexedCompletion CompletionMode = "Indexed" ) +// PodFailurePolicyAction specifies how a Pod failure is handled. +// +enum +type PodFailurePolicyAction string + +const ( + // This is an action which might be taken on a pod failure - mark the + // pod's job as Failed and terminate all running pods. + PodFailurePolicyActionFailJob PodFailurePolicyAction = "FailJob" + + // This is an action which might be taken on a pod failure - the counter towards + // .backoffLimit, represented by the job's .status.failed field, is not + // incremented and a replacement pod is created. + PodFailurePolicyActionIgnore PodFailurePolicyAction = "Ignore" + + // This is an action which might be taken on a pod failure - the pod failure + // is handled in the default way - the counter towards .backoffLimit, + // represented by the job's .status.failed field, is incremented. + PodFailurePolicyActionCount PodFailurePolicyAction = "Count" +) + +// +enum +type PodFailurePolicyOnExitCodesOperator string + +const ( + PodFailurePolicyOnExitCodesOpIn PodFailurePolicyOnExitCodesOperator = "In" + PodFailurePolicyOnExitCodesOpNotIn PodFailurePolicyOnExitCodesOperator = "NotIn" +) + +// PodFailurePolicyOnExitCodesRequirement describes the requirement for handling +// a failed pod based on its container exit codes. In particular, it lookups the +// .state.terminated.exitCode for each app container and init container status, +// represented by the .status.containerStatuses and .status.initContainerStatuses +// fields in the Pod status, respectively. Containers completed with success +// (exit code 0) are excluded from the requirement check. +type PodFailurePolicyOnExitCodesRequirement struct { + // Restricts the check for exit codes to the container with the + // specified name. When null, the rule applies to all containers. + // When specified, it should match one the container or initContainer + // names in the pod template. + // +optional + ContainerName *string `json:"containerName" protobuf:"bytes,1,opt,name=containerName"` + + // Represents the relationship between the container exit code(s) and the + // specified values. Containers completed with success (exit code 0) are + // excluded from the requirement check. Possible values are: + // - In: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is in the set of specified values. + // - NotIn: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is not in the set of specified values. + // Additional values are considered to be added in the future. Clients should + // react to an unknown operator by assuming the requirement is not satisfied. + Operator PodFailurePolicyOnExitCodesOperator `json:"operator" protobuf:"bytes,2,req,name=operator"` + + // Specifies the set of values. Each returned container exit code (might be + // multiple in case of multiple containers) is checked against this set of + // values with respect to the operator. The list of values must be ordered + // and must not contain duplicates. Value '0' cannot be used for the In operator. + // At least one element is required. At most 255 elements are allowed. + // +listType=set + Values []int32 `json:"values" protobuf:"varint,3,rep,name=values"` +} + +// PodFailurePolicyOnPodConditionsPattern describes a pattern for matching +// an actual pod condition type. +type PodFailurePolicyOnPodConditionsPattern struct { + // Specifies the required Pod condition type. To match a pod condition + // it is required that specified type equals the pod condition type. + Type corev1.PodConditionType `json:"type" protobuf:"bytes,1,req,name=type"` + + // Specifies the required Pod condition status. To match a pod condition + // it is required that the specified status equals the pod condition status. + // Defaults to True. + Status corev1.ConditionStatus `json:"status" protobuf:"bytes,2,req,name=status"` +} + +// PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. +// One of OnExitCodes and onPodConditions, but not both, can be used in each rule. +type PodFailurePolicyRule struct { + // Specifies the action taken on a pod failure when the requirements are satisfied. + // Possible values are: + // - FailJob: indicates that the pod's job is marked as Failed and all + // running pods are terminated. + // - Ignore: indicates that the counter towards the .backoffLimit is not + // incremented and a replacement pod is created. + // - Count: indicates that the pod is handled in the default way - the + // counter towards the .backoffLimit is incremented. + // Additional values are considered to be added in the future. Clients should + // react to an unknown action by skipping the rule. + Action PodFailurePolicyAction `json:"action" protobuf:"bytes,1,req,name=action"` + + // Represents the requirement on the container exit codes. + // +optional + OnExitCodes *PodFailurePolicyOnExitCodesRequirement `json:"onExitCodes" protobuf:"bytes,2,opt,name=onExitCodes"` + + // Represents the requirement on the pod conditions. The requirement is represented + // as a list of pod condition patterns. The requirement is satisfied if at + // least one pattern matches an actual pod condition. At most 20 elements are allowed. + // +listType=atomic + OnPodConditions []PodFailurePolicyOnPodConditionsPattern `json:"onPodConditions" protobuf:"bytes,3,opt,name=onPodConditions"` +} + +// PodFailurePolicy describes how failed pods influence the backoffLimit. +type PodFailurePolicy struct { + // A list of pod failure policy rules. The rules are evaluated in order. + // Once a rule matches a Pod failure, the remaining of the rules are ignored. + // When no rule matches the Pod failure, the default handling applies - the + // counter of pod failures is incremented and it is checked against + // the backoffLimit. At most 20 elements are allowed. + // +listType=atomic + Rules []PodFailurePolicyRule `json:"rules" protobuf:"bytes,1,opt,name=rules"` +} + // JobSpec describes how the job execution will look like. type JobSpec struct { @@ -115,6 +229,19 @@ type JobSpec struct { // +optional ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty" protobuf:"varint,3,opt,name=activeDeadlineSeconds"` + // Specifies the policy of handling failed pods. In particular, it allows to + // specify the set of actions and conditions which need to be + // satisfied to take the associated action. + // If empty, the default behaviour applies - the counter of failed pods, + // represented by the jobs's .status.failed field, is incremented and it is + // checked against the backoffLimit. This field cannot be used in combination + // with restartPolicy=OnFailure. + // + // This field is alpha-level. To use this field, you must enable the + // `JobPodFailurePolicy` feature gate (disabled by default). + // +optional + PodFailurePolicy *PodFailurePolicy `json:"podFailurePolicy,omitempty" protobuf:"bytes,11,opt,name=podFailurePolicy"` + // Specifies the number of retries before marking this job failed. // Defaults to 6 // +optional @@ -297,6 +424,9 @@ const ( JobComplete JobConditionType = "Complete" // JobFailed means the job has failed its execution. JobFailed JobConditionType = "Failed" + // FailureTarget means the job is about to fail its execution. + // The constant is to be renamed once the name is accepted within the KEP-3329. + AlphaNoCompatGuaranteeJobFailureTarget JobConditionType = "FailureTarget" ) // JobCondition describes current state of a job. @@ -375,9 +505,16 @@ type CronJobSpec struct { // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. Schedule string `json:"schedule" protobuf:"bytes,1,opt,name=schedule"` - // The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - // If not specified, this will rely on the time zone of the kube-controller-manager process. - // ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate. + // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. + // If not specified, this will default to the time zone of the kube-controller-manager process. + // The set of valid time zone names and the time zone offset is loaded from the system-wide time zone + // database by the API server during CronJob validation and the controller manager during execution. + // If no system-wide time zone database can be found a bundled version of the database is used instead. + // If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host + // configuration, the controller will stop creating new new Jobs and will create a system event with the + // reason UnknownTimeZone. + // More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones + // This is beta field and must be enabled via the `CronJobTimeZone` feature gate. // +optional TimeZone *string `json:"timeZone,omitempty" protobuf:"bytes,8,opt,name=timeZone"` diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go index df24723a82f..5131dd048a3 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/types_swagger_doc_generated.go @@ -51,7 +51,7 @@ func (CronJobList) SwaggerDoc() map[string]string { var map_CronJobSpec = map[string]string{ "": "CronJobSpec describes how the job execution will look like and when it will actually run.", "schedule": "The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.", - "timeZone": "The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will rely on the time zone of the kube-controller-manager process. ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate.", + "timeZone": "The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones This is beta field and must be enabled via the `CronJobTimeZone` feature gate.", "startingDeadlineSeconds": "Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.", "concurrencyPolicy": "Specifies how to treat concurrent executions of a Job. Valid values are: - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one", "suspend": "This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", @@ -115,6 +115,7 @@ var map_JobSpec = map[string]string{ "parallelism": "Specifies the maximum desired number of pods the job should run at any given time. The actual number of pods running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", "completions": "Specifies the desired number of successfully finished pods the job should be run with. Setting to nil means that the success of any pod signals the success of all pods, and allows parallelism to have any positive value. Setting to 1 means that parallelism is limited to 1 and the success of that pod signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/", "activeDeadlineSeconds": "Specifies the duration in seconds relative to the startTime that the job may be continuously active before the system tries to terminate it; value must be positive integer. If a Job is suspended (at creation or through an update), this timer will effectively be stopped and reset when the Job is resumed again.", + "podFailurePolicy": "Specifies the policy of handling failed pods. In particular, it allows to specify the set of actions and conditions which need to be satisfied to take the associated action. If empty, the default behaviour applies - the counter of failed pods, represented by the jobs's .status.failed field, is incremented and it is checked against the backoffLimit. This field cannot be used in combination with restartPolicy=OnFailure.\n\nThis field is alpha-level. To use this field, you must enable the `JobPodFailurePolicy` feature gate (disabled by default).", "backoffLimit": "Specifies the number of retries before marking this job failed. Defaults to 6", "selector": "A label query over pods that should match the pod count. Normally, the system sets this field for you. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors", "manualSelector": "manualSelector controls generation of pod labels and pod selectors. Leave `manualSelector` unset unless you are certain what you are doing. When false or unset, the system pick labels unique to this job and appends those labels to the pod template. When true, the user is responsible for picking unique labels and specifying the selector. Failure to pick a unique label may cause this and other jobs to not function correctly. However, You may see `manualSelector=true` in jobs that were created with the old `extensions/v1beta1` API. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector", @@ -155,6 +156,47 @@ func (JobTemplateSpec) SwaggerDoc() map[string]string { return map_JobTemplateSpec } +var map_PodFailurePolicy = map[string]string{ + "": "PodFailurePolicy describes how failed pods influence the backoffLimit.", + "rules": "A list of pod failure policy rules. The rules are evaluated in order. Once a rule matches a Pod failure, the remaining of the rules are ignored. When no rule matches the Pod failure, the default handling applies - the counter of pod failures is incremented and it is checked against the backoffLimit. At most 20 elements are allowed.", +} + +func (PodFailurePolicy) SwaggerDoc() map[string]string { + return map_PodFailurePolicy +} + +var map_PodFailurePolicyOnExitCodesRequirement = map[string]string{ + "": "PodFailurePolicyOnExitCodesRequirement describes the requirement for handling a failed pod based on its container exit codes. In particular, it lookups the .state.terminated.exitCode for each app container and init container status, represented by the .status.containerStatuses and .status.initContainerStatuses fields in the Pod status, respectively. Containers completed with success (exit code 0) are excluded from the requirement check.", + "containerName": "Restricts the check for exit codes to the container with the specified name. When null, the rule applies to all containers. When specified, it should match one the container or initContainer names in the pod template.", + "operator": "Represents the relationship between the container exit code(s) and the specified values. Containers completed with success (exit code 0) are excluded from the requirement check. Possible values are: - In: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is in the set of specified values.\n- NotIn: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is not in the set of specified values.\nAdditional values are considered to be added in the future. Clients should react to an unknown operator by assuming the requirement is not satisfied.", + "values": "Specifies the set of values. Each returned container exit code (might be multiple in case of multiple containers) is checked against this set of values with respect to the operator. The list of values must be ordered and must not contain duplicates. Value '0' cannot be used for the In operator. At least one element is required. At most 255 elements are allowed.", +} + +func (PodFailurePolicyOnExitCodesRequirement) SwaggerDoc() map[string]string { + return map_PodFailurePolicyOnExitCodesRequirement +} + +var map_PodFailurePolicyOnPodConditionsPattern = map[string]string{ + "": "PodFailurePolicyOnPodConditionsPattern describes a pattern for matching an actual pod condition type.", + "type": "Specifies the required Pod condition type. To match a pod condition it is required that specified type equals the pod condition type.", + "status": "Specifies the required Pod condition status. To match a pod condition it is required that the specified status equals the pod condition status. Defaults to True.", +} + +func (PodFailurePolicyOnPodConditionsPattern) SwaggerDoc() map[string]string { + return map_PodFailurePolicyOnPodConditionsPattern +} + +var map_PodFailurePolicyRule = map[string]string{ + "": "PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. One of OnExitCodes and onPodConditions, but not both, can be used in each rule.", + "action": "Specifies the action taken on a pod failure when the requirements are satisfied. Possible values are: - FailJob: indicates that the pod's job is marked as Failed and all\n running pods are terminated.\n- Ignore: indicates that the counter towards the .backoffLimit is not\n incremented and a replacement pod is created.\n- Count: indicates that the pod is handled in the default way - the\n counter towards the .backoffLimit is incremented.\nAdditional values are considered to be added in the future. Clients should react to an unknown action by skipping the rule.", + "onExitCodes": "Represents the requirement on the container exit codes.", + "onPodConditions": "Represents the requirement on the pod conditions. The requirement is represented as a list of pod condition patterns. The requirement is satisfied if at least one pattern matches an actual pod condition. At most 20 elements are allowed.", +} + +func (PodFailurePolicyRule) SwaggerDoc() map[string]string { + return map_PodFailurePolicyRule +} + var map_UncountedTerminatedPods = map[string]string{ "": "UncountedTerminatedPods holds UIDs of Pods that have terminated but haven't been accounted in Job status counters.", "succeeded": "Succeeded holds UIDs of succeeded Pods.", diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go index 4bc195a9f52..2a901e9d0f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1/zz_generated.deepcopy.go @@ -257,6 +257,11 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) { *out = new(int64) **out = **in } + if in.PodFailurePolicy != nil { + in, out := &in.PodFailurePolicy, &out.PodFailurePolicy + *out = new(PodFailurePolicy) + (*in).DeepCopyInto(*out) + } if in.BackoffLimit != nil { in, out := &in.BackoffLimit, &out.BackoffLimit *out = new(int32) @@ -360,6 +365,97 @@ func (in *JobTemplateSpec) DeepCopy() *JobTemplateSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicy) DeepCopyInto(out *PodFailurePolicy) { + *out = *in + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PodFailurePolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicy. +func (in *PodFailurePolicy) DeepCopy() *PodFailurePolicy { + if in == nil { + return nil + } + out := new(PodFailurePolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicyOnExitCodesRequirement) DeepCopyInto(out *PodFailurePolicyOnExitCodesRequirement) { + *out = *in + if in.ContainerName != nil { + in, out := &in.ContainerName, &out.ContainerName + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]int32, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicyOnExitCodesRequirement. +func (in *PodFailurePolicyOnExitCodesRequirement) DeepCopy() *PodFailurePolicyOnExitCodesRequirement { + if in == nil { + return nil + } + out := new(PodFailurePolicyOnExitCodesRequirement) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicyOnPodConditionsPattern) DeepCopyInto(out *PodFailurePolicyOnPodConditionsPattern) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicyOnPodConditionsPattern. +func (in *PodFailurePolicyOnPodConditionsPattern) DeepCopy() *PodFailurePolicyOnPodConditionsPattern { + if in == nil { + return nil + } + out := new(PodFailurePolicyOnPodConditionsPattern) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicyRule) DeepCopyInto(out *PodFailurePolicyRule) { + *out = *in + if in.OnExitCodes != nil { + in, out := &in.OnExitCodes, &out.OnExitCodes + *out = new(PodFailurePolicyOnExitCodesRequirement) + (*in).DeepCopyInto(*out) + } + if in.OnPodConditions != nil { + in, out := &in.OnPodConditions, &out.OnPodConditions + *out = make([]PodFailurePolicyOnPodConditionsPattern, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicyRule. +func (in *PodFailurePolicyRule) DeepCopy() *PodFailurePolicyRule { + if in == nil { + return nil + } + out := new(PodFailurePolicyRule) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *UncountedTerminatedPods) DeepCopyInto(out *UncountedTerminatedPods) { *out = *in diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/generated.proto index c73b7a65403..d8386a8f51d 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/generated.proto @@ -64,9 +64,16 @@ message CronJobSpec { // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. optional string schedule = 1; - // The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - // If not specified, this will rely on the time zone of the kube-controller-manager process. - // ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate. + // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. + // If not specified, this will default to the time zone of the kube-controller-manager process. + // The set of valid time zone names and the time zone offset is loaded from the system-wide time zone + // database by the API server during CronJob validation and the controller manager during execution. + // If no system-wide time zone database can be found a bundled version of the database is used instead. + // If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host + // configuration, the controller will stop creating new new Jobs and will create a system event with the + // reason UnknownTimeZone. + // More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones + // This is beta field and must be enabled via the `CronJobTimeZone` feature gate. // +optional optional string timeZone = 8; diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types.go index 54a2d14318f..4c0d69dd6b0 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types.go @@ -104,9 +104,16 @@ type CronJobSpec struct { // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. Schedule string `json:"schedule" protobuf:"bytes,1,opt,name=schedule"` - // The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - // If not specified, this will rely on the time zone of the kube-controller-manager process. - // ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate. + // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. + // If not specified, this will default to the time zone of the kube-controller-manager process. + // The set of valid time zone names and the time zone offset is loaded from the system-wide time zone + // database by the API server during CronJob validation and the controller manager during execution. + // If no system-wide time zone database can be found a bundled version of the database is used instead. + // If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host + // configuration, the controller will stop creating new new Jobs and will create a system event with the + // reason UnknownTimeZone. + // More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones + // This is beta field and must be enabled via the `CronJobTimeZone` feature gate. // +optional TimeZone *string `json:"timeZone,omitempty" protobuf:"bytes,8,opt,name=timeZone"` diff --git a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go index 87194807631..5716bbb862a 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/batch/v1beta1/types_swagger_doc_generated.go @@ -51,7 +51,7 @@ func (CronJobList) SwaggerDoc() map[string]string { var map_CronJobSpec = map[string]string{ "": "CronJobSpec describes how the job execution will look like and when it will actually run.", "schedule": "The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron.", - "timeZone": "The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will rely on the time zone of the kube-controller-manager process. ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate.", + "timeZone": "The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. If not specified, this will default to the time zone of the kube-controller-manager process. The set of valid time zone names and the time zone offset is loaded from the system-wide time zone database by the API server during CronJob validation and the controller manager during execution. If no system-wide time zone database can be found a bundled version of the database is used instead. If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host configuration, the controller will stop creating new new Jobs and will create a system event with the reason UnknownTimeZone. More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones This is beta field and must be enabled via the `CronJobTimeZone` feature gate.", "startingDeadlineSeconds": "Optional deadline in seconds for starting the job if it misses scheduled time for any reason. Missed jobs executions will be counted as failed ones.", "concurrencyPolicy": "Specifies how to treat concurrent executions of a Job. Valid values are: - \"Allow\" (default): allows CronJobs to run concurrently; - \"Forbid\": forbids concurrent runs, skipping next run if previous run hasn't finished yet; - \"Replace\": cancels currently running job and replaces it with a new one", "suspend": "This flag tells the controller to suspend subsequent executions, it does not apply to already started executions. Defaults to false.", diff --git a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1/types.go index 752c6697347..af5efb5165b 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1/types.go @@ -275,7 +275,9 @@ type CertificateSigningRequestList struct { // KeyUsage specifies valid usage contexts for keys. // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 -// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 +// +// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 +// // +enum type KeyUsage string diff --git a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/types.go index 877312d97e3..fe7aab9704d 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/certificates/v1beta1/types.go @@ -230,7 +230,8 @@ type CertificateSigningRequestList struct { // KeyUsages specifies valid usage contexts for keys. // See: https://tools.ietf.org/html/rfc5280#section-4.2.1.3 -// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 +// +// https://tools.ietf.org/html/rfc5280#section-4.2.1.12 type KeyUsage string const ( diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.pb.go index efdf2cde0c2..aa62ba138fd 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.pb.go @@ -6175,903 +6175,906 @@ func init() { } var fileDescriptor_83c10c24ec417dc9 = []byte{ - // 14336 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x7d, 0x6b, 0x70, 0x1c, 0xc9, - 0x79, 0x98, 0x66, 0x17, 0xaf, 0xfd, 0xf0, 0x6e, 0x90, 0x3c, 0x10, 0x77, 0xe4, 0xf2, 0xe6, 0x24, - 0x1e, 0x4f, 0x77, 0x07, 0x8a, 0xf7, 0x90, 0xce, 0x77, 0xd2, 0x59, 0x00, 0x16, 0x20, 0x71, 0x24, - 0xc0, 0xbd, 0x5e, 0x90, 0x94, 0xe4, 0x93, 0x4a, 0x83, 0xdd, 0x06, 0x30, 0xc2, 0xee, 0xcc, 0xde, - 0xcc, 0x2c, 0x48, 0x5c, 0xe4, 0x8a, 0x23, 0x3f, 0x65, 0x3b, 0x29, 0x55, 0xca, 0x79, 0x94, 0xec, - 0x72, 0xa5, 0x1c, 0x27, 0xb6, 0xa2, 0xbc, 0x1c, 0x39, 0xb6, 0x63, 0x39, 0xb1, 0xf3, 0x76, 0xf2, - 0xc3, 0x76, 0x5c, 0x15, 0xcb, 0x55, 0xae, 0x20, 0x36, 0x9d, 0x2a, 0x97, 0xaa, 0x12, 0xdb, 0x89, - 0x93, 0x1f, 0x41, 0x9c, 0x38, 0xd5, 0xcf, 0xe9, 0x9e, 0xc7, 0xee, 0x82, 0x07, 0x42, 0x27, 0xd5, - 0xfd, 0xdb, 0xed, 0xef, 0xeb, 0xaf, 0x7b, 0xfa, 0xf9, 0xf5, 0xf7, 0x84, 0x57, 0x76, 0x5f, 0x0a, - 0xe7, 0x5d, 0xff, 0xf2, 0x6e, 0x67, 0x93, 0x04, 0x1e, 0x89, 0x48, 0x78, 0x79, 0x8f, 0x78, 0x0d, - 0x3f, 0xb8, 0x2c, 0x00, 0x4e, 0xdb, 0xbd, 0x5c, 0xf7, 0x03, 0x72, 0x79, 0xef, 0xca, 0xe5, 0x6d, - 0xe2, 0x91, 0xc0, 0x89, 0x48, 0x63, 0xbe, 0x1d, 0xf8, 0x91, 0x8f, 0x10, 0xc7, 0x99, 0x77, 0xda, - 0xee, 0x3c, 0xc5, 0x99, 0xdf, 0xbb, 0x32, 0xf7, 0xec, 0xb6, 0x1b, 0xed, 0x74, 0x36, 0xe7, 0xeb, - 0x7e, 0xeb, 0xf2, 0xb6, 0xbf, 0xed, 0x5f, 0x66, 0xa8, 0x9b, 0x9d, 0x2d, 0xf6, 0x8f, 0xfd, 0x61, - 0xbf, 0x38, 0x89, 0xb9, 0x17, 0xe2, 0x66, 0x5a, 0x4e, 0x7d, 0xc7, 0xf5, 0x48, 0xb0, 0x7f, 0xb9, - 0xbd, 0xbb, 0xcd, 0xda, 0x0d, 0x48, 0xe8, 0x77, 0x82, 0x3a, 0x49, 0x36, 0xdc, 0xb5, 0x56, 0x78, - 0xb9, 0x45, 0x22, 0x27, 0xa3, 0xbb, 0x73, 0x97, 0xf3, 0x6a, 0x05, 0x1d, 0x2f, 0x72, 0x5b, 0xe9, - 0x66, 0x3e, 0xd8, 0xab, 0x42, 0x58, 0xdf, 0x21, 0x2d, 0x27, 0x55, 0xef, 0xf9, 0xbc, 0x7a, 0x9d, - 0xc8, 0x6d, 0x5e, 0x76, 0xbd, 0x28, 0x8c, 0x82, 0x64, 0x25, 0xfb, 0x6b, 0x16, 0x5c, 0x58, 0xb8, - 0x53, 0x5b, 0x6e, 0x3a, 0x61, 0xe4, 0xd6, 0x17, 0x9b, 0x7e, 0x7d, 0xb7, 0x16, 0xf9, 0x01, 0xb9, - 0xed, 0x37, 0x3b, 0x2d, 0x52, 0x63, 0x03, 0x81, 0x9e, 0x81, 0x91, 0x3d, 0xf6, 0x7f, 0xb5, 0x32, - 0x6b, 0x5d, 0xb0, 0x2e, 0x95, 0x16, 0xa7, 0x7e, 0xf5, 0xa0, 0xfc, 0x9e, 0xfb, 0x07, 0xe5, 0x91, - 0xdb, 0xa2, 0x1c, 0x2b, 0x0c, 0x74, 0x11, 0x86, 0xb6, 0xc2, 0x8d, 0xfd, 0x36, 0x99, 0x2d, 0x30, - 0xdc, 0x09, 0x81, 0x3b, 0xb4, 0x52, 0xa3, 0xa5, 0x58, 0x40, 0xd1, 0x65, 0x28, 0xb5, 0x9d, 0x20, - 0x72, 0x23, 0xd7, 0xf7, 0x66, 0x8b, 0x17, 0xac, 0x4b, 0x83, 0x8b, 0xd3, 0x02, 0xb5, 0x54, 0x95, - 0x00, 0x1c, 0xe3, 0xd0, 0x6e, 0x04, 0xc4, 0x69, 0xdc, 0xf4, 0x9a, 0xfb, 0xb3, 0x03, 0x17, 0xac, - 0x4b, 0x23, 0x71, 0x37, 0xb0, 0x28, 0xc7, 0x0a, 0xc3, 0xfe, 0x62, 0x01, 0x46, 0x16, 0xb6, 0xb6, - 0x5c, 0xcf, 0x8d, 0xf6, 0xd1, 0x6d, 0x18, 0xf3, 0xfc, 0x06, 0x91, 0xff, 0xd9, 0x57, 0x8c, 0x3e, - 0x77, 0x61, 0x3e, 0xbd, 0x94, 0xe6, 0xd7, 0x35, 0xbc, 0xc5, 0xa9, 0xfb, 0x07, 0xe5, 0x31, 0xbd, - 0x04, 0x1b, 0x74, 0x10, 0x86, 0xd1, 0xb6, 0xdf, 0x50, 0x64, 0x0b, 0x8c, 0x6c, 0x39, 0x8b, 0x6c, - 0x35, 0x46, 0x5b, 0x9c, 0xbc, 0x7f, 0x50, 0x1e, 0xd5, 0x0a, 0xb0, 0x4e, 0x04, 0x6d, 0xc2, 0x24, - 0xfd, 0xeb, 0x45, 0xae, 0xa2, 0x5b, 0x64, 0x74, 0x9f, 0xc8, 0xa3, 0xab, 0xa1, 0x2e, 0xce, 0xdc, - 0x3f, 0x28, 0x4f, 0x26, 0x0a, 0x71, 0x92, 0xa0, 0xfd, 0x16, 0x4c, 0x2c, 0x44, 0x91, 0x53, 0xdf, - 0x21, 0x0d, 0x3e, 0x83, 0xe8, 0x05, 0x18, 0xf0, 0x9c, 0x16, 0x11, 0xf3, 0x7b, 0x41, 0x0c, 0xec, - 0xc0, 0xba, 0xd3, 0x22, 0x87, 0x07, 0xe5, 0xa9, 0x5b, 0x9e, 0xfb, 0x66, 0x47, 0xac, 0x0a, 0x5a, - 0x86, 0x19, 0x36, 0x7a, 0x0e, 0xa0, 0x41, 0xf6, 0xdc, 0x3a, 0xa9, 0x3a, 0xd1, 0x8e, 0x98, 0x6f, - 0x24, 0xea, 0x42, 0x45, 0x41, 0xb0, 0x86, 0x65, 0xdf, 0x83, 0xd2, 0xc2, 0x9e, 0xef, 0x36, 0xaa, - 0x7e, 0x23, 0x44, 0xbb, 0x30, 0xd9, 0x0e, 0xc8, 0x16, 0x09, 0x54, 0xd1, 0xac, 0x75, 0xa1, 0x78, - 0x69, 0xf4, 0xb9, 0x4b, 0x99, 0x1f, 0x6b, 0xa2, 0x2e, 0x7b, 0x51, 0xb0, 0xbf, 0xf8, 0x88, 0x68, - 0x6f, 0x32, 0x01, 0xc5, 0x49, 0xca, 0xf6, 0xbf, 0x2a, 0xc0, 0xe9, 0x85, 0xb7, 0x3a, 0x01, 0xa9, - 0xb8, 0xe1, 0x6e, 0x72, 0x85, 0x37, 0xdc, 0x70, 0x77, 0x3d, 0x1e, 0x01, 0xb5, 0xb4, 0x2a, 0xa2, - 0x1c, 0x2b, 0x0c, 0xf4, 0x2c, 0x0c, 0xd3, 0xdf, 0xb7, 0xf0, 0xaa, 0xf8, 0xe4, 0x19, 0x81, 0x3c, - 0x5a, 0x71, 0x22, 0xa7, 0xc2, 0x41, 0x58, 0xe2, 0xa0, 0x35, 0x18, 0xad, 0xb3, 0x0d, 0xb9, 0xbd, - 0xe6, 0x37, 0x08, 0x9b, 0xcc, 0xd2, 0xe2, 0xd3, 0x14, 0x7d, 0x29, 0x2e, 0x3e, 0x3c, 0x28, 0xcf, - 0xf2, 0xbe, 0x09, 0x12, 0x1a, 0x0c, 0xeb, 0xf5, 0x91, 0xad, 0xf6, 0xd7, 0x00, 0xa3, 0x04, 0x19, - 0x7b, 0xeb, 0x92, 0xb6, 0x55, 0x06, 0xd9, 0x56, 0x19, 0xcb, 0xde, 0x26, 0xe8, 0x0a, 0x0c, 0xec, - 0xba, 0x5e, 0x63, 0x76, 0x88, 0xd1, 0x3a, 0x47, 0xe7, 0xfc, 0xba, 0xeb, 0x35, 0x0e, 0x0f, 0xca, - 0xd3, 0x46, 0x77, 0x68, 0x21, 0x66, 0xa8, 0xf6, 0x9f, 0x58, 0x50, 0x66, 0xb0, 0x15, 0xb7, 0x49, - 0xaa, 0x24, 0x08, 0xdd, 0x30, 0x22, 0x5e, 0x64, 0x0c, 0xe8, 0x73, 0x00, 0x21, 0xa9, 0x07, 0x24, - 0xd2, 0x86, 0x54, 0x2d, 0x8c, 0x9a, 0x82, 0x60, 0x0d, 0x8b, 0x1e, 0x08, 0xe1, 0x8e, 0x13, 0xb0, - 0xf5, 0x25, 0x06, 0x56, 0x1d, 0x08, 0x35, 0x09, 0xc0, 0x31, 0x8e, 0x71, 0x20, 0x14, 0x7b, 0x1d, - 0x08, 0xe8, 0x23, 0x30, 0x19, 0x37, 0x16, 0xb6, 0x9d, 0xba, 0x1c, 0x40, 0xb6, 0x65, 0x6a, 0x26, - 0x08, 0x27, 0x71, 0xed, 0xbf, 0x63, 0x89, 0xc5, 0x43, 0xbf, 0xfa, 0x1d, 0xfe, 0xad, 0xf6, 0x2f, - 0x58, 0x30, 0xbc, 0xe8, 0x7a, 0x0d, 0xd7, 0xdb, 0x46, 0x9f, 0x86, 0x11, 0x7a, 0x37, 0x35, 0x9c, - 0xc8, 0x11, 0xe7, 0xde, 0x07, 0xb4, 0xbd, 0xa5, 0xae, 0x8a, 0xf9, 0xf6, 0xee, 0x36, 0x2d, 0x08, - 0xe7, 0x29, 0x36, 0xdd, 0x6d, 0x37, 0x37, 0x3f, 0x43, 0xea, 0xd1, 0x1a, 0x89, 0x9c, 0xf8, 0x73, - 0xe2, 0x32, 0xac, 0xa8, 0xa2, 0xeb, 0x30, 0x14, 0x39, 0xc1, 0x36, 0x89, 0xc4, 0x01, 0x98, 0x79, - 0x50, 0xf1, 0x9a, 0x98, 0xee, 0x48, 0xe2, 0xd5, 0x49, 0x7c, 0x2d, 0x6c, 0xb0, 0xaa, 0x58, 0x90, - 0xb0, 0xff, 0xef, 0x30, 0x9c, 0x5d, 0xaa, 0xad, 0xe6, 0xac, 0xab, 0x8b, 0x30, 0xd4, 0x08, 0xdc, - 0x3d, 0x12, 0x88, 0x71, 0x56, 0x54, 0x2a, 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x09, 0xc6, 0xf8, 0x85, - 0x74, 0xcd, 0xf1, 0x1a, 0x4d, 0x39, 0xc4, 0xa7, 0x04, 0xf6, 0xd8, 0x6d, 0x0d, 0x86, 0x0d, 0xcc, - 0x23, 0x2e, 0xaa, 0x8b, 0x89, 0xcd, 0x98, 0x77, 0xd9, 0x7d, 0xde, 0x82, 0x29, 0xde, 0xcc, 0x42, - 0x14, 0x05, 0xee, 0x66, 0x27, 0x22, 0xe1, 0xec, 0x20, 0x3b, 0xe9, 0x96, 0xb2, 0x46, 0x2b, 0x77, - 0x04, 0xe6, 0x6f, 0x27, 0xa8, 0xf0, 0x43, 0x70, 0x56, 0xb4, 0x3b, 0x95, 0x04, 0xe3, 0x54, 0xb3, - 0xe8, 0xbb, 0x2d, 0x98, 0xab, 0xfb, 0x5e, 0x14, 0xf8, 0xcd, 0x26, 0x09, 0xaa, 0x9d, 0xcd, 0xa6, - 0x1b, 0xee, 0xf0, 0x75, 0x8a, 0xc9, 0x16, 0x3b, 0x09, 0x72, 0xe6, 0x50, 0x21, 0x89, 0x39, 0x3c, - 0x7f, 0xff, 0xa0, 0x3c, 0xb7, 0x94, 0x4b, 0x0a, 0x77, 0x69, 0x06, 0xed, 0x02, 0xa2, 0x57, 0x69, - 0x2d, 0x72, 0xb6, 0x49, 0xdc, 0xf8, 0x70, 0xff, 0x8d, 0x9f, 0xb9, 0x7f, 0x50, 0x46, 0xeb, 0x29, - 0x12, 0x38, 0x83, 0x2c, 0x7a, 0x13, 0x4e, 0xd1, 0xd2, 0xd4, 0xb7, 0x8e, 0xf4, 0xdf, 0xdc, 0xec, - 0xfd, 0x83, 0xf2, 0xa9, 0xf5, 0x0c, 0x22, 0x38, 0x93, 0x34, 0xfa, 0x2e, 0x0b, 0xce, 0xc6, 0x9f, - 0xbf, 0x7c, 0xaf, 0xed, 0x78, 0x8d, 0xb8, 0xe1, 0x52, 0xff, 0x0d, 0xd3, 0x33, 0xf9, 0xec, 0x52, - 0x1e, 0x25, 0x9c, 0xdf, 0x08, 0xf2, 0x60, 0x86, 0x76, 0x2d, 0xd9, 0x36, 0xf4, 0xdf, 0xf6, 0x23, - 0xf7, 0x0f, 0xca, 0x33, 0xeb, 0x69, 0x1a, 0x38, 0x8b, 0xf0, 0xdc, 0x12, 0x9c, 0xce, 0x5c, 0x9d, - 0x68, 0x0a, 0x8a, 0xbb, 0x84, 0x73, 0x5d, 0x25, 0x4c, 0x7f, 0xa2, 0x53, 0x30, 0xb8, 0xe7, 0x34, - 0x3b, 0x62, 0x63, 0x62, 0xfe, 0xe7, 0xe5, 0xc2, 0x4b, 0x96, 0xfd, 0xaf, 0x8b, 0x30, 0xb9, 0x54, - 0x5b, 0x7d, 0xa0, 0x5d, 0xaf, 0x5f, 0x7b, 0x85, 0xae, 0xd7, 0x5e, 0x7c, 0x89, 0x16, 0x73, 0x2f, - 0xd1, 0x3f, 0x9f, 0xb1, 0x65, 0x07, 0xd8, 0x96, 0xfd, 0xb6, 0x9c, 0x2d, 0x7b, 0xcc, 0x1b, 0x75, - 0x2f, 0x67, 0xd5, 0x0e, 0xb2, 0x09, 0xcc, 0xe4, 0x90, 0x6e, 0xf8, 0x75, 0xa7, 0x99, 0x3c, 0x6a, - 0x8f, 0xb8, 0x74, 0x8f, 0x67, 0x1e, 0xeb, 0x30, 0xb6, 0xe4, 0xb4, 0x9d, 0x4d, 0xb7, 0xe9, 0x46, - 0x2e, 0x09, 0xd1, 0x93, 0x50, 0x74, 0x1a, 0x0d, 0xc6, 0xdd, 0x95, 0x16, 0x4f, 0xdf, 0x3f, 0x28, - 0x17, 0x17, 0x1a, 0x94, 0xcd, 0x00, 0x85, 0xb5, 0x8f, 0x29, 0x06, 0x7a, 0x3f, 0x0c, 0x34, 0x02, - 0xbf, 0x3d, 0x5b, 0x60, 0x98, 0x74, 0x97, 0x0f, 0x54, 0x02, 0xbf, 0x9d, 0x40, 0x65, 0x38, 0xf6, - 0xaf, 0x14, 0xe0, 0xb1, 0x25, 0xd2, 0xde, 0x59, 0xa9, 0xe5, 0xdc, 0x17, 0x97, 0x60, 0xa4, 0xe5, - 0x7b, 0x6e, 0xe4, 0x07, 0xa1, 0x68, 0x9a, 0xad, 0x88, 0x35, 0x51, 0x86, 0x15, 0x14, 0x5d, 0x80, - 0x81, 0x76, 0xcc, 0xc4, 0x8e, 0x49, 0x06, 0x98, 0xb1, 0xaf, 0x0c, 0x42, 0x31, 0x3a, 0x21, 0x09, - 0xc4, 0x8a, 0x51, 0x18, 0xb7, 0x42, 0x12, 0x60, 0x06, 0x89, 0x39, 0x01, 0xca, 0x23, 0x88, 0x1b, - 0x21, 0xc1, 0x09, 0x50, 0x08, 0xd6, 0xb0, 0x50, 0x15, 0x4a, 0x61, 0x62, 0x66, 0xfb, 0xda, 0x9a, - 0xe3, 0x8c, 0x55, 0x50, 0x33, 0x19, 0x13, 0x31, 0x6e, 0xb0, 0xa1, 0x9e, 0xac, 0xc2, 0x57, 0x0b, - 0x80, 0xf8, 0x10, 0x7e, 0x93, 0x0d, 0xdc, 0xad, 0xf4, 0xc0, 0xf5, 0xbf, 0x25, 0x8e, 0x6b, 0xf4, - 0xfe, 0xa7, 0x05, 0x8f, 0x2d, 0xb9, 0x5e, 0x83, 0x04, 0x39, 0x0b, 0xf0, 0xe1, 0xbc, 0x9d, 0x8f, - 0xc6, 0xa4, 0x18, 0x4b, 0x6c, 0xe0, 0x18, 0x96, 0x98, 0xfd, 0x47, 0x16, 0x20, 0xfe, 0xd9, 0xef, - 0xb8, 0x8f, 0xbd, 0x95, 0xfe, 0xd8, 0x63, 0x58, 0x16, 0xf6, 0x0d, 0x98, 0x58, 0x6a, 0xba, 0xc4, - 0x8b, 0x56, 0xab, 0x4b, 0xbe, 0xb7, 0xe5, 0x6e, 0xa3, 0x97, 0x61, 0x22, 0x72, 0x5b, 0xc4, 0xef, - 0x44, 0x35, 0x52, 0xf7, 0x3d, 0xf6, 0x72, 0xb5, 0x2e, 0x0d, 0x2e, 0xa2, 0xfb, 0x07, 0xe5, 0x89, - 0x0d, 0x03, 0x82, 0x13, 0x98, 0xf6, 0xef, 0xd0, 0xf1, 0xf3, 0x5b, 0x6d, 0xdf, 0x23, 0x5e, 0xb4, - 0xe4, 0x7b, 0x0d, 0x2e, 0xe1, 0x78, 0x19, 0x06, 0x22, 0x3a, 0x1e, 0x7c, 0xec, 0x2e, 0xca, 0x8d, - 0x42, 0x47, 0xe1, 0xf0, 0xa0, 0x7c, 0x26, 0x5d, 0x83, 0x8d, 0x13, 0xab, 0x83, 0xbe, 0x0d, 0x86, - 0xc2, 0xc8, 0x89, 0x3a, 0xa1, 0x18, 0xcd, 0xc7, 0xe5, 0x68, 0xd6, 0x58, 0xe9, 0xe1, 0x41, 0x79, - 0x52, 0x55, 0xe3, 0x45, 0x58, 0x54, 0x40, 0x4f, 0xc1, 0x70, 0x8b, 0x84, 0xa1, 0xb3, 0x2d, 0x6f, - 0xc3, 0x49, 0x51, 0x77, 0x78, 0x8d, 0x17, 0x63, 0x09, 0x47, 0x4f, 0xc0, 0x20, 0x09, 0x02, 0x3f, - 0x10, 0x7b, 0x74, 0x5c, 0x20, 0x0e, 0x2e, 0xd3, 0x42, 0xcc, 0x61, 0xf6, 0xaf, 0x5b, 0x30, 0xa9, - 0xfa, 0xca, 0xdb, 0x3a, 0x81, 0x57, 0xc8, 0x27, 0x00, 0xea, 0xf2, 0x03, 0x43, 0x76, 0x7b, 0x8c, - 0x3e, 0x77, 0x31, 0xf3, 0xa2, 0x4e, 0x0d, 0x63, 0x4c, 0x59, 0x15, 0x85, 0x58, 0xa3, 0x66, 0xff, - 0x53, 0x0b, 0x66, 0x12, 0x5f, 0x74, 0xc3, 0x0d, 0x23, 0xf4, 0x46, 0xea, 0xab, 0xe6, 0xfb, 0xfb, - 0x2a, 0x5a, 0x9b, 0x7d, 0x93, 0x5a, 0xca, 0xb2, 0x44, 0xfb, 0xa2, 0x6b, 0x30, 0xe8, 0x46, 0xa4, - 0x25, 0x3f, 0xe6, 0x89, 0xae, 0x1f, 0xc3, 0x7b, 0x15, 0xcf, 0xc8, 0x2a, 0xad, 0x89, 0x39, 0x01, - 0xfb, 0x57, 0x8a, 0x50, 0xe2, 0xcb, 0x76, 0xcd, 0x69, 0x9f, 0xc0, 0x5c, 0x3c, 0x0d, 0x25, 0xb7, - 0xd5, 0xea, 0x44, 0xce, 0xa6, 0x38, 0xce, 0x47, 0xf8, 0xd6, 0x5a, 0x95, 0x85, 0x38, 0x86, 0xa3, - 0x55, 0x18, 0x60, 0x5d, 0xe1, 0x5f, 0xf9, 0x64, 0xf6, 0x57, 0x8a, 0xbe, 0xcf, 0x57, 0x9c, 0xc8, - 0xe1, 0x9c, 0x94, 0xba, 0x47, 0x68, 0x11, 0x66, 0x24, 0x90, 0x03, 0xb0, 0xe9, 0x7a, 0x4e, 0xb0, - 0x4f, 0xcb, 0x66, 0x8b, 0x8c, 0xe0, 0xb3, 0xdd, 0x09, 0x2e, 0x2a, 0x7c, 0x4e, 0x56, 0x7d, 0x58, - 0x0c, 0xc0, 0x1a, 0xd1, 0xb9, 0x0f, 0x41, 0x49, 0x21, 0x1f, 0x85, 0x21, 0x9a, 0xfb, 0x08, 0x4c, - 0x26, 0xda, 0xea, 0x55, 0x7d, 0x4c, 0xe7, 0xa7, 0x7e, 0x91, 0x1d, 0x19, 0xa2, 0xd7, 0xcb, 0xde, - 0x9e, 0x38, 0x72, 0xdf, 0x82, 0x53, 0xcd, 0x8c, 0x93, 0x4c, 0xcc, 0x6b, 0xff, 0x27, 0xdf, 0x63, - 0xe2, 0xb3, 0x4f, 0x65, 0x41, 0x71, 0x66, 0x1b, 0x94, 0x47, 0xf0, 0xdb, 0x74, 0x83, 0x38, 0x4d, - 0x9d, 0xdd, 0xbe, 0x29, 0xca, 0xb0, 0x82, 0xd2, 0xf3, 0xee, 0x94, 0xea, 0xfc, 0x75, 0xb2, 0x5f, - 0x23, 0x4d, 0x52, 0x8f, 0xfc, 0xe0, 0x1b, 0xda, 0xfd, 0x73, 0x7c, 0xf4, 0xf9, 0x71, 0x39, 0x2a, - 0x08, 0x14, 0xaf, 0x93, 0x7d, 0x3e, 0x15, 0xfa, 0xd7, 0x15, 0xbb, 0x7e, 0xdd, 0xcf, 0x58, 0x30, - 0xae, 0xbe, 0xee, 0x04, 0xce, 0x85, 0x45, 0xf3, 0x5c, 0x38, 0xd7, 0x75, 0x81, 0xe7, 0x9c, 0x08, - 0x5f, 0x2d, 0xc0, 0x59, 0x85, 0x43, 0xdf, 0x06, 0xfc, 0x8f, 0x58, 0x55, 0x97, 0xa1, 0xe4, 0x29, - 0x29, 0x99, 0x65, 0x8a, 0xa7, 0x62, 0x19, 0x59, 0x8c, 0x43, 0x59, 0x3c, 0x2f, 0x16, 0x65, 0x8d, - 0xe9, 0xe2, 0x63, 0x21, 0x2a, 0x5e, 0x84, 0x62, 0xc7, 0x6d, 0x88, 0x0b, 0xe6, 0x03, 0x72, 0xb4, - 0x6f, 0xad, 0x56, 0x0e, 0x0f, 0xca, 0x8f, 0xe7, 0xa9, 0x2e, 0xe8, 0xcd, 0x16, 0xce, 0xdf, 0x5a, - 0xad, 0x60, 0x5a, 0x19, 0x2d, 0xc0, 0xa4, 0xd4, 0xce, 0xdc, 0xa6, 0xec, 0x96, 0xef, 0x89, 0x7b, - 0x48, 0xc9, 0x80, 0xb1, 0x09, 0xc6, 0x49, 0x7c, 0x54, 0x81, 0xa9, 0xdd, 0xce, 0x26, 0x69, 0x92, - 0x88, 0x7f, 0xf0, 0x75, 0xc2, 0x25, 0xa4, 0xa5, 0xf8, 0x65, 0x76, 0x3d, 0x01, 0xc7, 0xa9, 0x1a, - 0xf6, 0x9f, 0xb1, 0xfb, 0x40, 0x8c, 0x5e, 0x35, 0xf0, 0xe9, 0xc2, 0xa2, 0xd4, 0xbf, 0x91, 0xcb, - 0xb9, 0x9f, 0x55, 0x71, 0x9d, 0xec, 0x6f, 0xf8, 0x94, 0x33, 0xcf, 0x5e, 0x15, 0xc6, 0x9a, 0x1f, - 0xe8, 0xba, 0xe6, 0x7f, 0xb6, 0x00, 0xa7, 0xd5, 0x08, 0x18, 0x4c, 0xe0, 0x37, 0xfb, 0x18, 0x5c, - 0x81, 0xd1, 0x06, 0xd9, 0x72, 0x3a, 0xcd, 0x48, 0x89, 0xeb, 0x07, 0xb9, 0xca, 0xa6, 0x12, 0x17, - 0x63, 0x1d, 0xe7, 0x08, 0xc3, 0xf6, 0xbf, 0x46, 0xd9, 0x45, 0x1c, 0x39, 0x74, 0x8d, 0xab, 0x5d, - 0x63, 0xe5, 0xee, 0x9a, 0x27, 0x60, 0xd0, 0x6d, 0x51, 0xc6, 0xac, 0x60, 0xf2, 0x5b, 0xab, 0xb4, - 0x10, 0x73, 0x18, 0x7a, 0x1f, 0x0c, 0xd7, 0xfd, 0x56, 0xcb, 0xf1, 0x1a, 0xec, 0xca, 0x2b, 0x2d, - 0x8e, 0x52, 0xde, 0x6d, 0x89, 0x17, 0x61, 0x09, 0x43, 0x8f, 0xc1, 0x80, 0x13, 0x6c, 0x73, 0x19, - 0x46, 0x69, 0x71, 0x84, 0xb6, 0xb4, 0x10, 0x6c, 0x87, 0x98, 0x95, 0xd2, 0x27, 0xd8, 0x5d, 0x3f, - 0xd8, 0x75, 0xbd, 0xed, 0x8a, 0x1b, 0x88, 0x2d, 0xa1, 0xee, 0xc2, 0x3b, 0x0a, 0x82, 0x35, 0x2c, - 0xb4, 0x02, 0x83, 0x6d, 0x3f, 0x88, 0xc2, 0xd9, 0x21, 0x36, 0xdc, 0x8f, 0xe7, 0x1c, 0x44, 0xfc, - 0x6b, 0xab, 0x7e, 0x10, 0xc5, 0x1f, 0x40, 0xff, 0x85, 0x98, 0x57, 0x47, 0x37, 0x60, 0x98, 0x78, - 0x7b, 0x2b, 0x81, 0xdf, 0x9a, 0x9d, 0xc9, 0xa7, 0xb4, 0xcc, 0x51, 0xf8, 0x32, 0x8b, 0x79, 0x54, - 0x51, 0x8c, 0x25, 0x09, 0xf4, 0x6d, 0x50, 0x24, 0xde, 0xde, 0xec, 0x30, 0xa3, 0x34, 0x97, 0x43, - 0xe9, 0xb6, 0x13, 0xc4, 0x67, 0xfe, 0xb2, 0xb7, 0x87, 0x69, 0x1d, 0xf4, 0x71, 0x28, 0xc9, 0x03, - 0x23, 0x14, 0xc2, 0xc1, 0xcc, 0x05, 0x2b, 0x8f, 0x19, 0x4c, 0xde, 0xec, 0xb8, 0x01, 0x69, 0x11, - 0x2f, 0x0a, 0xe3, 0x13, 0x52, 0x42, 0x43, 0x1c, 0x53, 0x43, 0x1f, 0x97, 0x12, 0xe9, 0x35, 0xbf, - 0xe3, 0x45, 0xe1, 0x6c, 0x89, 0x75, 0x2f, 0x53, 0x57, 0x78, 0x3b, 0xc6, 0x4b, 0x8a, 0xac, 0x79, - 0x65, 0x6c, 0x90, 0x42, 0x9f, 0x84, 0x71, 0xfe, 0x9f, 0x6b, 0xdc, 0xc2, 0xd9, 0xd3, 0x8c, 0xf6, - 0x85, 0x7c, 0xda, 0x1c, 0x71, 0xf1, 0xb4, 0x20, 0x3e, 0xae, 0x97, 0x86, 0xd8, 0xa4, 0x86, 0x30, - 0x8c, 0x37, 0xdd, 0x3d, 0xe2, 0x91, 0x30, 0xac, 0x06, 0xfe, 0x26, 0x11, 0x02, 0xc4, 0xb3, 0xd9, - 0x1a, 0x3a, 0x7f, 0x93, 0x2c, 0x4e, 0x53, 0x9a, 0x37, 0xf4, 0x3a, 0xd8, 0x24, 0x81, 0x6e, 0xc1, - 0x04, 0x7d, 0xb1, 0xb9, 0x31, 0xd1, 0xd1, 0x5e, 0x44, 0xd9, 0xbb, 0x0a, 0x1b, 0x95, 0x70, 0x82, - 0x08, 0xba, 0x09, 0x63, 0x61, 0xe4, 0x04, 0x51, 0xa7, 0xcd, 0x89, 0x9e, 0xe9, 0x45, 0x94, 0x29, - 0x78, 0x6b, 0x5a, 0x15, 0x6c, 0x10, 0x40, 0xaf, 0x41, 0xa9, 0xe9, 0x6e, 0x91, 0xfa, 0x7e, 0xbd, - 0x49, 0x66, 0xc7, 0x18, 0xb5, 0xcc, 0x43, 0xe5, 0x86, 0x44, 0xe2, 0x7c, 0xae, 0xfa, 0x8b, 0xe3, - 0xea, 0xe8, 0x36, 0x9c, 0x89, 0x48, 0xd0, 0x72, 0x3d, 0x87, 0x1e, 0x06, 0xe2, 0x69, 0xc5, 0x14, - 0xa7, 0xe3, 0x6c, 0xb7, 0x9d, 0x17, 0xb3, 0x71, 0x66, 0x23, 0x13, 0x0b, 0xe7, 0xd4, 0x46, 0xf7, - 0x60, 0x36, 0x03, 0xe2, 0x37, 0xdd, 0xfa, 0xfe, 0xec, 0x29, 0x46, 0xf9, 0xc3, 0x82, 0xf2, 0xec, - 0x46, 0x0e, 0xde, 0x61, 0x17, 0x18, 0xce, 0xa5, 0x8e, 0x6e, 0xc2, 0x24, 0x3b, 0x81, 0xaa, 0x9d, - 0x66, 0x53, 0x34, 0x38, 0xc1, 0x1a, 0x7c, 0x9f, 0xbc, 0x8f, 0x57, 0x4d, 0xf0, 0xe1, 0x41, 0x19, - 0xe2, 0x7f, 0x38, 0x59, 0x1b, 0x6d, 0x32, 0x1d, 0x5d, 0x27, 0x70, 0xa3, 0x7d, 0x7a, 0x6e, 0x90, - 0x7b, 0xd1, 0xec, 0x64, 0x57, 0x79, 0x85, 0x8e, 0xaa, 0x14, 0x79, 0x7a, 0x21, 0x4e, 0x12, 0xa4, - 0x47, 0x6a, 0x18, 0x35, 0x5c, 0x6f, 0x76, 0x8a, 0xbf, 0x4b, 0xe4, 0x89, 0x54, 0xa3, 0x85, 0x98, - 0xc3, 0x98, 0x7e, 0x8e, 0xfe, 0xb8, 0x49, 0x6f, 0xae, 0x69, 0x86, 0x18, 0xeb, 0xe7, 0x24, 0x00, - 0xc7, 0x38, 0x94, 0x99, 0x8c, 0xa2, 0xfd, 0x59, 0xc4, 0x50, 0xd5, 0xc1, 0xb2, 0xb1, 0xf1, 0x71, - 0x4c, 0xcb, 0xed, 0x4d, 0x98, 0x50, 0x07, 0x21, 0x1b, 0x13, 0x54, 0x86, 0x41, 0xc6, 0x3e, 0x09, - 0xe9, 0x5a, 0x89, 0x76, 0x81, 0xb1, 0x56, 0x98, 0x97, 0xb3, 0x2e, 0xb8, 0x6f, 0x91, 0xc5, 0xfd, - 0x88, 0xf0, 0x37, 0x7d, 0x51, 0xeb, 0x82, 0x04, 0xe0, 0x18, 0xc7, 0xfe, 0x7f, 0x9c, 0x0d, 0x8d, - 0x4f, 0xdb, 0x3e, 0xee, 0x97, 0x67, 0x60, 0x64, 0xc7, 0x0f, 0x23, 0x8a, 0xcd, 0xda, 0x18, 0x8c, - 0x19, 0xcf, 0x6b, 0xa2, 0x1c, 0x2b, 0x0c, 0xf4, 0x0a, 0x8c, 0xd7, 0xf5, 0x06, 0xc4, 0xe5, 0xa8, - 0x8e, 0x11, 0xa3, 0x75, 0x6c, 0xe2, 0xa2, 0x97, 0x60, 0x84, 0xd9, 0x9c, 0xd4, 0xfd, 0xa6, 0xe0, - 0xda, 0xe4, 0x0d, 0x3f, 0x52, 0x15, 0xe5, 0x87, 0xda, 0x6f, 0xac, 0xb0, 0xd1, 0x45, 0x18, 0xa2, - 0x5d, 0x58, 0xad, 0x8a, 0x6b, 0x49, 0x09, 0x8a, 0xae, 0xb1, 0x52, 0x2c, 0xa0, 0xf6, 0x5f, 0x2e, - 0x68, 0xa3, 0x4c, 0xdf, 0xc3, 0x04, 0x55, 0x61, 0xf8, 0xae, 0xe3, 0x46, 0xae, 0xb7, 0x2d, 0xf8, - 0x8f, 0xa7, 0xba, 0xde, 0x51, 0xac, 0xd2, 0x1d, 0x5e, 0x81, 0xdf, 0xa2, 0xe2, 0x0f, 0x96, 0x64, - 0x28, 0xc5, 0xa0, 0xe3, 0x79, 0x94, 0x62, 0xa1, 0x5f, 0x8a, 0x98, 0x57, 0xe0, 0x14, 0xc5, 0x1f, - 0x2c, 0xc9, 0xa0, 0x37, 0x00, 0xe4, 0x0e, 0x23, 0x0d, 0x61, 0xeb, 0xf1, 0x4c, 0x6f, 0xa2, 0x1b, - 0xaa, 0xce, 0xe2, 0x04, 0xbd, 0xa3, 0xe3, 0xff, 0x58, 0xa3, 0x67, 0x47, 0x8c, 0x4f, 0x4b, 0x77, - 0x06, 0x7d, 0x07, 0x5d, 0xe2, 0x4e, 0x10, 0x91, 0xc6, 0x42, 0x24, 0x06, 0xe7, 0xfd, 0xfd, 0x3d, - 0x52, 0x36, 0xdc, 0x16, 0xd1, 0xb7, 0x83, 0x20, 0x82, 0x63, 0x7a, 0xf6, 0xcf, 0x17, 0x61, 0x36, - 0xaf, 0xbb, 0x74, 0xd1, 0x91, 0x7b, 0x6e, 0xb4, 0x44, 0xd9, 0x2b, 0xcb, 0x5c, 0x74, 0xcb, 0xa2, - 0x1c, 0x2b, 0x0c, 0x3a, 0xfb, 0xa1, 0xbb, 0x2d, 0xdf, 0x98, 0x83, 0xf1, 0xec, 0xd7, 0x58, 0x29, - 0x16, 0x50, 0x8a, 0x17, 0x10, 0x27, 0x14, 0xc6, 0x44, 0xda, 0x2a, 0xc1, 0xac, 0x14, 0x0b, 0xa8, - 0x2e, 0xed, 0x1a, 0xe8, 0x21, 0xed, 0x32, 0x86, 0x68, 0xf0, 0x78, 0x87, 0x08, 0x7d, 0x0a, 0x60, - 0xcb, 0xf5, 0xdc, 0x70, 0x87, 0x51, 0x1f, 0x3a, 0x32, 0x75, 0xc5, 0x9c, 0xad, 0x28, 0x2a, 0x58, - 0xa3, 0x88, 0x5e, 0x84, 0x51, 0xb5, 0x01, 0x57, 0x2b, 0x4c, 0xb3, 0xaa, 0x59, 0xaa, 0xc4, 0xa7, - 0x51, 0x05, 0xeb, 0x78, 0xf6, 0x67, 0x92, 0xeb, 0x45, 0xec, 0x00, 0x6d, 0x7c, 0xad, 0x7e, 0xc7, - 0xb7, 0xd0, 0x7d, 0x7c, 0xed, 0xaf, 0x17, 0x61, 0xd2, 0x68, 0xac, 0x13, 0xf6, 0x71, 0x66, 0x5d, - 0xa5, 0x07, 0xb8, 0x13, 0x11, 0xb1, 0xff, 0xec, 0xde, 0x5b, 0x45, 0x3f, 0xe4, 0xe9, 0x0e, 0xe0, - 0xf5, 0xd1, 0xa7, 0xa0, 0xd4, 0x74, 0x42, 0x26, 0x39, 0x23, 0x62, 0xdf, 0xf5, 0x43, 0x2c, 0x7e, - 0x98, 0x38, 0x61, 0xa4, 0xdd, 0x9a, 0x9c, 0x76, 0x4c, 0x92, 0xde, 0x34, 0x94, 0x3f, 0x91, 0xd6, - 0x6a, 0xaa, 0x13, 0x94, 0x89, 0xd9, 0xc7, 0x1c, 0x86, 0x5e, 0x82, 0xb1, 0x80, 0xb0, 0x55, 0xb1, - 0x44, 0xb9, 0x39, 0xb6, 0xcc, 0x06, 0x63, 0xb6, 0x0f, 0x6b, 0x30, 0x6c, 0x60, 0xc6, 0x6f, 0x83, - 0xa1, 0x2e, 0x6f, 0x83, 0xa7, 0x60, 0x98, 0xfd, 0x50, 0x2b, 0x40, 0xcd, 0xc6, 0x2a, 0x2f, 0xc6, - 0x12, 0x9e, 0x5c, 0x30, 0x23, 0xfd, 0x2d, 0x18, 0xfa, 0xfa, 0x10, 0x8b, 0x9a, 0x69, 0xb5, 0x47, - 0xf8, 0x29, 0x27, 0x96, 0x3c, 0x96, 0x30, 0xfb, 0xfd, 0x30, 0x51, 0x71, 0x48, 0xcb, 0xf7, 0x96, - 0xbd, 0x46, 0xdb, 0x77, 0xbd, 0x08, 0xcd, 0xc2, 0x00, 0xbb, 0x44, 0xf8, 0x11, 0x30, 0x40, 0x1b, - 0xc2, 0xac, 0xc4, 0xde, 0x86, 0xd3, 0x15, 0xff, 0xae, 0x77, 0xd7, 0x09, 0x1a, 0x0b, 0xd5, 0x55, - 0xed, 0x7d, 0xbd, 0x2e, 0xdf, 0x77, 0xdc, 0x48, 0x2c, 0xf3, 0xe8, 0xd5, 0x6a, 0x72, 0xb6, 0x76, - 0xc5, 0x6d, 0x92, 0x1c, 0x29, 0xc8, 0x5f, 0x2b, 0x18, 0x2d, 0xc5, 0xf8, 0x4a, 0xab, 0x65, 0xe5, - 0x6a, 0xb5, 0x5e, 0x87, 0x91, 0x2d, 0x97, 0x34, 0x1b, 0x98, 0x6c, 0x89, 0x95, 0xf8, 0x64, 0xbe, - 0xdd, 0xcb, 0x0a, 0xc5, 0x94, 0x52, 0x2f, 0xfe, 0x3a, 0x5c, 0x11, 0x95, 0xb1, 0x22, 0x83, 0x76, - 0x61, 0x4a, 0x3e, 0x18, 0x24, 0x54, 0xac, 0xcb, 0xa7, 0xba, 0xbd, 0x42, 0x4c, 0xe2, 0xa7, 0xee, - 0x1f, 0x94, 0xa7, 0x70, 0x82, 0x0c, 0x4e, 0x11, 0xa6, 0xcf, 0xc1, 0x16, 0x3d, 0x81, 0x07, 0xd8, - 0xf0, 0xb3, 0xe7, 0x20, 0x7b, 0xd9, 0xb2, 0x52, 0xfb, 0xc7, 0x2c, 0x78, 0x24, 0x35, 0x32, 0xe2, - 0x85, 0x7f, 0xcc, 0xb3, 0x90, 0x7c, 0x71, 0x17, 0x7a, 0xbf, 0xb8, 0xed, 0xbf, 0x6b, 0xc1, 0xa9, - 0xe5, 0x56, 0x3b, 0xda, 0xaf, 0xb8, 0xa6, 0x0a, 0xea, 0x43, 0x30, 0xd4, 0x22, 0x0d, 0xb7, 0xd3, - 0x12, 0x33, 0x57, 0x96, 0xa7, 0xd4, 0x1a, 0x2b, 0x3d, 0x3c, 0x28, 0x8f, 0xd7, 0x22, 0x3f, 0x70, - 0xb6, 0x09, 0x2f, 0xc0, 0x02, 0x9d, 0x9d, 0xf5, 0xee, 0x5b, 0xe4, 0x86, 0xdb, 0x72, 0xa5, 0x1d, - 0x53, 0x57, 0x99, 0xdd, 0xbc, 0x1c, 0xd0, 0xf9, 0xd7, 0x3b, 0x8e, 0x17, 0xb9, 0xd1, 0xbe, 0xd0, - 0x1e, 0x49, 0x22, 0x38, 0xa6, 0x67, 0x7f, 0xcd, 0x82, 0x49, 0xb9, 0xee, 0x17, 0x1a, 0x8d, 0x80, - 0x84, 0x21, 0x9a, 0x83, 0x82, 0xdb, 0x16, 0xbd, 0x04, 0xd1, 0xcb, 0xc2, 0x6a, 0x15, 0x17, 0xdc, - 0xb6, 0x64, 0xcb, 0xd8, 0x41, 0x58, 0x34, 0x15, 0x69, 0xd7, 0x44, 0x39, 0x56, 0x18, 0xe8, 0x12, - 0x8c, 0x78, 0x7e, 0x83, 0xdb, 0x92, 0xf1, 0x2b, 0x8d, 0x2d, 0xb0, 0x75, 0x51, 0x86, 0x15, 0x14, - 0x55, 0xa1, 0xc4, 0xcd, 0xac, 0xe2, 0x45, 0xdb, 0x97, 0xb1, 0x16, 0xfb, 0xb2, 0x0d, 0x59, 0x13, - 0xc7, 0x44, 0xec, 0x5f, 0xb6, 0x60, 0x4c, 0x7e, 0x59, 0x9f, 0x3c, 0x27, 0xdd, 0x5a, 0x31, 0xbf, - 0x19, 0x6f, 0x2d, 0xca, 0x33, 0x32, 0x88, 0xc1, 0x2a, 0x16, 0x8f, 0xc4, 0x2a, 0x5e, 0x81, 0x51, - 0xa7, 0xdd, 0xae, 0x9a, 0x7c, 0x26, 0x5b, 0x4a, 0x0b, 0x71, 0x31, 0xd6, 0x71, 0xec, 0x1f, 0x2d, - 0xc0, 0x84, 0xfc, 0x82, 0x5a, 0x67, 0x33, 0x24, 0x11, 0xda, 0x80, 0x92, 0xc3, 0x67, 0x89, 0xc8, - 0x45, 0xfe, 0x44, 0xb6, 0x1c, 0xc1, 0x98, 0xd2, 0xf8, 0xc2, 0x5f, 0x90, 0xb5, 0x71, 0x4c, 0x08, - 0x35, 0x61, 0xda, 0xf3, 0x23, 0x76, 0xf8, 0x2b, 0x78, 0x37, 0xd5, 0x4e, 0x92, 0xfa, 0x59, 0x41, - 0x7d, 0x7a, 0x3d, 0x49, 0x05, 0xa7, 0x09, 0xa3, 0x65, 0x29, 0x9b, 0x29, 0xe6, 0x0b, 0x03, 0xf4, - 0x89, 0xcb, 0x16, 0xcd, 0xd8, 0xbf, 0x64, 0x41, 0x49, 0xa2, 0x9d, 0x84, 0x16, 0x6f, 0x0d, 0x86, - 0x43, 0x36, 0x09, 0x72, 0x68, 0xec, 0x6e, 0x1d, 0xe7, 0xf3, 0x15, 0xdf, 0x69, 0xfc, 0x7f, 0x88, - 0x25, 0x0d, 0x26, 0x9a, 0x57, 0xdd, 0x7f, 0x87, 0x88, 0xe6, 0x55, 0x7f, 0x72, 0x2e, 0xa5, 0x3f, - 0x60, 0x7d, 0xd6, 0x64, 0x5d, 0x94, 0xf5, 0x6a, 0x07, 0x64, 0xcb, 0xbd, 0x97, 0x64, 0xbd, 0xaa, - 0xac, 0x14, 0x0b, 0x28, 0x7a, 0x03, 0xc6, 0xea, 0x52, 0x26, 0x1b, 0xef, 0xf0, 0x8b, 0x5d, 0xf5, - 0x03, 0x4a, 0x95, 0xc4, 0x65, 0x21, 0x4b, 0x5a, 0x7d, 0x6c, 0x50, 0x33, 0xcd, 0x08, 0x8a, 0xbd, - 0xcc, 0x08, 0x62, 0xba, 0xf9, 0x4a, 0xf5, 0x1f, 0xb7, 0x60, 0x88, 0xcb, 0xe2, 0xfa, 0x13, 0x85, - 0x6a, 0x9a, 0xb5, 0x78, 0xec, 0x6e, 0xd3, 0x42, 0xa1, 0x29, 0x43, 0x6b, 0x50, 0x62, 0x3f, 0x98, - 0x2c, 0xb1, 0x98, 0x6f, 0xe5, 0xcf, 0x5b, 0xd5, 0x3b, 0x78, 0x5b, 0x56, 0xc3, 0x31, 0x05, 0xfb, - 0x47, 0x8a, 0xf4, 0x74, 0x8b, 0x51, 0x8d, 0x4b, 0xdf, 0x7a, 0x78, 0x97, 0x7e, 0xe1, 0x61, 0x5d, - 0xfa, 0xdb, 0x30, 0x59, 0xd7, 0xf4, 0x70, 0xf1, 0x4c, 0x5e, 0xea, 0xba, 0x48, 0x34, 0x95, 0x1d, - 0x97, 0xb2, 0x2c, 0x99, 0x44, 0x70, 0x92, 0x2a, 0xfa, 0x0e, 0x18, 0xe3, 0xf3, 0x2c, 0x5a, 0xe1, - 0x96, 0x18, 0xef, 0xcb, 0x5f, 0x2f, 0x7a, 0x13, 0x5c, 0x2a, 0xa7, 0x55, 0xc7, 0x06, 0x31, 0xfb, - 0x8f, 0x2d, 0x40, 0xcb, 0xed, 0x1d, 0xd2, 0x22, 0x81, 0xd3, 0x8c, 0xc5, 0xe9, 0x3f, 0x68, 0xc1, - 0x2c, 0x49, 0x15, 0x2f, 0xf9, 0xad, 0x96, 0x78, 0xb4, 0xe4, 0xbc, 0xab, 0x97, 0x73, 0xea, 0x28, - 0x37, 0x88, 0xd9, 0x3c, 0x0c, 0x9c, 0xdb, 0x1e, 0x5a, 0x83, 0x19, 0x7e, 0x4b, 0x2a, 0x80, 0x66, - 0xeb, 0xfd, 0xa8, 0x20, 0x3c, 0xb3, 0x91, 0x46, 0xc1, 0x59, 0xf5, 0xec, 0xef, 0x19, 0x83, 0xdc, - 0x5e, 0xbc, 0xab, 0x47, 0x78, 0x57, 0x8f, 0xf0, 0xae, 0x1e, 0xe1, 0x5d, 0x3d, 0xc2, 0xbb, 0x7a, - 0x84, 0x6f, 0x79, 0x3d, 0xc2, 0x5f, 0xb1, 0xe0, 0xb4, 0xba, 0x06, 0x8c, 0x87, 0xef, 0x67, 0x61, - 0x86, 0x6f, 0xb7, 0xa5, 0xa6, 0xe3, 0xb6, 0x36, 0x48, 0xab, 0xdd, 0x74, 0x22, 0xa9, 0x75, 0xbf, - 0x92, 0xb9, 0x72, 0x13, 0x16, 0xab, 0x46, 0x45, 0x6e, 0xfa, 0x9f, 0x01, 0xc0, 0x59, 0xcd, 0xd8, - 0x3f, 0x3f, 0x02, 0x83, 0xcb, 0x7b, 0xc4, 0x8b, 0x4e, 0xe0, 0x89, 0x50, 0x87, 0x09, 0xd7, 0xdb, - 0xf3, 0x9b, 0x7b, 0xa4, 0xc1, 0xe1, 0x47, 0x79, 0xc9, 0x9e, 0x11, 0xa4, 0x27, 0x56, 0x0d, 0x12, - 0x38, 0x41, 0xf2, 0x61, 0x48, 0x93, 0xaf, 0xc2, 0x10, 0x3f, 0xc4, 0x85, 0x28, 0x39, 0xf3, 0xcc, - 0x66, 0x83, 0x28, 0xae, 0xa6, 0x58, 0xd2, 0xcd, 0x2f, 0x09, 0x51, 0x1d, 0x7d, 0x06, 0x26, 0xb6, - 0xdc, 0x20, 0x8c, 0x36, 0xdc, 0x16, 0x09, 0x23, 0xa7, 0xd5, 0x7e, 0x00, 0xe9, 0xb1, 0x1a, 0x87, - 0x15, 0x83, 0x12, 0x4e, 0x50, 0x46, 0xdb, 0x30, 0xde, 0x74, 0xf4, 0xa6, 0x86, 0x8f, 0xdc, 0x94, - 0xba, 0x1d, 0x6e, 0xe8, 0x84, 0xb0, 0x49, 0x97, 0x6e, 0xa7, 0x3a, 0x13, 0x80, 0x8e, 0x30, 0xb1, - 0x80, 0xda, 0x4e, 0x5c, 0xf2, 0xc9, 0x61, 0x94, 0xd1, 0x61, 0x06, 0xb2, 0x25, 0x93, 0xd1, 0xd1, - 0xcc, 0x60, 0x3f, 0x0d, 0x25, 0x42, 0x87, 0x90, 0x12, 0x16, 0x17, 0xcc, 0xe5, 0xfe, 0xfa, 0xba, - 0xe6, 0xd6, 0x03, 0xdf, 0x94, 0xdb, 0x2f, 0x4b, 0x4a, 0x38, 0x26, 0x8a, 0x96, 0x60, 0x28, 0x24, - 0x81, 0x4b, 0x42, 0x71, 0xd5, 0x74, 0x99, 0x46, 0x86, 0xc6, 0x7d, 0x4b, 0xf8, 0x6f, 0x2c, 0xaa, - 0xd2, 0xe5, 0xe5, 0x30, 0x91, 0x26, 0xbb, 0x0c, 0xb4, 0xe5, 0xb5, 0xc0, 0x4a, 0xb1, 0x80, 0xa2, - 0xd7, 0x60, 0x38, 0x20, 0x4d, 0xa6, 0x18, 0x1a, 0xef, 0x7f, 0x91, 0x73, 0x3d, 0x13, 0xaf, 0x87, - 0x25, 0x01, 0x74, 0x1d, 0x50, 0x40, 0x28, 0xa3, 0xe4, 0x7a, 0xdb, 0xca, 0x6c, 0x54, 0x1c, 0xb4, - 0x8a, 0x21, 0xc5, 0x31, 0x86, 0x74, 0x2b, 0xc2, 0x19, 0xd5, 0xd0, 0x55, 0x98, 0x56, 0xa5, 0xab, - 0x5e, 0x18, 0x39, 0xf4, 0x80, 0x9b, 0x64, 0xb4, 0x94, 0x9c, 0x02, 0x27, 0x11, 0x70, 0xba, 0x8e, - 0xfd, 0x25, 0x0b, 0xf8, 0x38, 0x9f, 0xc0, 0xeb, 0xfc, 0x55, 0xf3, 0x75, 0x7e, 0x36, 0x77, 0xe6, - 0x72, 0x5e, 0xe6, 0x5f, 0xb2, 0x60, 0x54, 0x9b, 0xd9, 0x78, 0xcd, 0x5a, 0x5d, 0xd6, 0x6c, 0x07, - 0xa6, 0xe8, 0x4a, 0xbf, 0xb9, 0x19, 0x92, 0x60, 0x8f, 0x34, 0xd8, 0xc2, 0x2c, 0x3c, 0xd8, 0xc2, - 0x54, 0x26, 0x6a, 0x37, 0x12, 0x04, 0x71, 0xaa, 0x09, 0xfb, 0xd3, 0xb2, 0xab, 0xca, 0xa2, 0xaf, - 0xae, 0xe6, 0x3c, 0x61, 0xd1, 0xa7, 0x66, 0x15, 0xc7, 0x38, 0x74, 0xab, 0xed, 0xf8, 0x61, 0x94, - 0xb4, 0xe8, 0xbb, 0xe6, 0x87, 0x11, 0x66, 0x10, 0xfb, 0x79, 0x80, 0xe5, 0x7b, 0xa4, 0xce, 0x57, - 0xac, 0xfe, 0x78, 0xb0, 0xf2, 0x1f, 0x0f, 0xf6, 0x6f, 0x5a, 0x30, 0xb1, 0xb2, 0x64, 0xdc, 0x5c, - 0xf3, 0x00, 0xfc, 0xc5, 0x73, 0xe7, 0xce, 0xba, 0x54, 0x87, 0x73, 0x8d, 0xa6, 0x2a, 0xc5, 0x1a, - 0x06, 0x3a, 0x0b, 0xc5, 0x66, 0xc7, 0x13, 0xe2, 0xc3, 0x61, 0x7a, 0x3d, 0xde, 0xe8, 0x78, 0x98, - 0x96, 0x69, 0x2e, 0x05, 0xc5, 0xbe, 0x5d, 0x0a, 0x7a, 0x86, 0x12, 0x40, 0x65, 0x18, 0xbc, 0x7b, - 0xd7, 0x6d, 0x70, 0x87, 0x4d, 0xa1, 0xaa, 0xbf, 0x73, 0x67, 0xb5, 0x12, 0x62, 0x5e, 0x6e, 0x7f, - 0xa1, 0x08, 0x73, 0x2b, 0x4d, 0x72, 0xef, 0x6d, 0x3a, 0xad, 0xf6, 0xeb, 0x10, 0x71, 0x34, 0x41, - 0xcc, 0x51, 0x9d, 0x5e, 0x7a, 0x8f, 0xc7, 0x16, 0x0c, 0x73, 0x83, 0x36, 0xe9, 0xc2, 0xfa, 0x4a, - 0x56, 0xeb, 0xf9, 0x03, 0x32, 0xcf, 0x0d, 0xe3, 0x84, 0x47, 0x9c, 0xba, 0x30, 0x45, 0x29, 0x96, - 0xc4, 0xe7, 0x5e, 0x86, 0x31, 0x1d, 0xf3, 0x48, 0xee, 0x67, 0x7f, 0xa1, 0x08, 0x53, 0xb4, 0x07, - 0x0f, 0x75, 0x22, 0x6e, 0xa5, 0x27, 0xe2, 0xb8, 0x5d, 0x90, 0x7a, 0xcf, 0xc6, 0x1b, 0xc9, 0xd9, - 0xb8, 0x92, 0x37, 0x1b, 0x27, 0x3d, 0x07, 0xdf, 0x6d, 0xc1, 0xcc, 0x4a, 0xd3, 0xaf, 0xef, 0x26, - 0xdc, 0x84, 0x5e, 0x84, 0x51, 0x7a, 0x1c, 0x87, 0x86, 0xc7, 0xbc, 0x11, 0x43, 0x41, 0x80, 0xb0, - 0x8e, 0xa7, 0x55, 0xbb, 0x75, 0x6b, 0xb5, 0x92, 0x15, 0x7a, 0x41, 0x80, 0xb0, 0x8e, 0x67, 0xff, - 0x9a, 0x05, 0xe7, 0xae, 0x2e, 0x2d, 0xc7, 0x4b, 0x31, 0x15, 0xfd, 0xe1, 0x22, 0x0c, 0xb5, 0x1b, - 0x5a, 0x57, 0x62, 0xf1, 0x6a, 0x85, 0xf5, 0x42, 0x40, 0xdf, 0x29, 0x91, 0x4d, 0x6e, 0x01, 0x5c, - 0xc5, 0xd5, 0x25, 0x71, 0xee, 0x4a, 0x6d, 0x8a, 0x95, 0xab, 0x4d, 0x79, 0x1f, 0x0c, 0xd3, 0x7b, - 0xc1, 0xad, 0xcb, 0x7e, 0x73, 0x05, 0x2d, 0x2f, 0xc2, 0x12, 0x66, 0xff, 0xb4, 0x05, 0x33, 0x57, - 0xdd, 0x88, 0x5e, 0xda, 0xc9, 0xf0, 0x06, 0xf4, 0xd6, 0x0e, 0xdd, 0xc8, 0x0f, 0xf6, 0x93, 0xe1, - 0x0d, 0xb0, 0x82, 0x60, 0x0d, 0x8b, 0x7f, 0xd0, 0x9e, 0xcb, 0x2c, 0xb4, 0x0b, 0xa6, 0xfe, 0x0a, - 0x8b, 0x72, 0xac, 0x30, 0xe8, 0x78, 0x35, 0xdc, 0x80, 0x89, 0xfe, 0xf6, 0xc5, 0xc1, 0xad, 0xc6, - 0xab, 0x22, 0x01, 0x38, 0xc6, 0xb1, 0xff, 0xd0, 0x82, 0xf2, 0xd5, 0x66, 0x27, 0x8c, 0x48, 0xb0, - 0x15, 0xe6, 0x1c, 0xba, 0xcf, 0x43, 0x89, 0x48, 0x41, 0xbb, 0xe8, 0xb5, 0x62, 0x44, 0x95, 0x04, - 0x9e, 0x47, 0x59, 0x50, 0x78, 0x7d, 0xf8, 0x32, 0x1e, 0xcd, 0x19, 0x6d, 0x05, 0x10, 0xd1, 0xdb, - 0xd2, 0xc3, 0x4e, 0x30, 0xff, 0xf5, 0xe5, 0x14, 0x14, 0x67, 0xd4, 0xb0, 0x7f, 0xcc, 0x82, 0xd3, - 0xea, 0x83, 0xdf, 0x71, 0x9f, 0x69, 0x7f, 0xa5, 0x00, 0xe3, 0xd7, 0x36, 0x36, 0xaa, 0x57, 0x49, - 0xa4, 0xad, 0xca, 0xee, 0xea, 0x73, 0xac, 0x69, 0x01, 0xbb, 0xbd, 0x11, 0x3b, 0x91, 0xdb, 0x9c, - 0xe7, 0xd1, 0x8b, 0xe6, 0x57, 0xbd, 0xe8, 0x66, 0x50, 0x8b, 0x02, 0xd7, 0xdb, 0xce, 0x5c, 0xe9, - 0x92, 0x67, 0x29, 0xe6, 0xf1, 0x2c, 0xe8, 0x79, 0x18, 0x62, 0xe1, 0x93, 0xe4, 0x24, 0x3c, 0xaa, - 0x9e, 0x58, 0xac, 0xf4, 0xf0, 0xa0, 0x5c, 0xba, 0x85, 0x57, 0xf9, 0x1f, 0x2c, 0x50, 0xd1, 0x2d, - 0x18, 0xdd, 0x89, 0xa2, 0xf6, 0x35, 0xe2, 0x34, 0x48, 0x20, 0x4f, 0xd9, 0xf3, 0x59, 0xa7, 0x2c, - 0x1d, 0x04, 0x8e, 0x16, 0x1f, 0x4c, 0x71, 0x59, 0x88, 0x75, 0x3a, 0x76, 0x0d, 0x20, 0x86, 0x1d, - 0x93, 0x02, 0xc4, 0xde, 0x80, 0x12, 0xfd, 0xdc, 0x85, 0xa6, 0xeb, 0x74, 0x57, 0x31, 0x3f, 0x0d, - 0x25, 0xa9, 0x40, 0x0e, 0x85, 0xaf, 0x35, 0xbb, 0x91, 0xa4, 0x7e, 0x39, 0xc4, 0x31, 0xdc, 0xde, - 0x82, 0x53, 0xcc, 0x1c, 0xd0, 0x89, 0x76, 0x8c, 0xd5, 0xd7, 0x7b, 0x9a, 0x9f, 0x11, 0x2f, 0x36, - 0xde, 0xe7, 0x59, 0xcd, 0x9d, 0x71, 0x4c, 0x52, 0x8c, 0x5f, 0x6f, 0xf6, 0xd7, 0x07, 0xe0, 0xd1, - 0xd5, 0x5a, 0x7e, 0xf8, 0x8f, 0x97, 0x60, 0x8c, 0x33, 0x82, 0x74, 0xd2, 0x9d, 0xa6, 0x68, 0x57, - 0xc9, 0x36, 0x37, 0x34, 0x18, 0x36, 0x30, 0xd1, 0x39, 0x28, 0xba, 0x6f, 0x7a, 0x49, 0x67, 0x9f, - 0xd5, 0xd7, 0xd7, 0x31, 0x2d, 0xa7, 0x60, 0xca, 0x53, 0xf2, 0xc3, 0x5a, 0x81, 0x15, 0x5f, 0xf9, - 0x2a, 0x4c, 0xb8, 0x61, 0x3d, 0x74, 0x57, 0x3d, 0xba, 0x03, 0xb5, 0x3d, 0xac, 0xa4, 0x09, 0xb4, - 0xd3, 0x0a, 0x8a, 0x13, 0xd8, 0xda, 0xcd, 0x31, 0xd8, 0x37, 0x5f, 0xda, 0xd3, 0xf9, 0x98, 0x1e, - 0xec, 0x6d, 0xf6, 0x75, 0x21, 0x13, 0x52, 0x8b, 0x83, 0x9d, 0x7f, 0x70, 0x88, 0x25, 0x8c, 0x3e, - 0xd5, 0xea, 0x3b, 0x4e, 0x7b, 0xa1, 0x13, 0xed, 0x54, 0xdc, 0xb0, 0xee, 0xef, 0x91, 0x60, 0x9f, - 0xbd, 0xb2, 0x47, 0xe2, 0xa7, 0x9a, 0x02, 0x2c, 0x5d, 0x5b, 0xa8, 0x52, 0x4c, 0x9c, 0xae, 0x83, - 0x16, 0x60, 0x52, 0x16, 0xd6, 0x48, 0xc8, 0x0e, 0xf7, 0x51, 0x46, 0x46, 0xb9, 0xdf, 0x88, 0x62, - 0x45, 0x24, 0x89, 0x6f, 0xb2, 0xae, 0x70, 0x1c, 0xac, 0xeb, 0x87, 0x60, 0xdc, 0xf5, 0xdc, 0xc8, - 0x75, 0x22, 0x9f, 0x6b, 0x58, 0xf8, 0x83, 0x9a, 0x89, 0x8e, 0x57, 0x75, 0x00, 0x36, 0xf1, 0xec, - 0xff, 0x32, 0x00, 0xd3, 0x6c, 0xda, 0xde, 0x5d, 0x61, 0xdf, 0x4a, 0x2b, 0xec, 0x56, 0x7a, 0x85, - 0x1d, 0x07, 0x4f, 0xfe, 0xc0, 0xcb, 0xec, 0x33, 0x50, 0x52, 0x1e, 0x47, 0xd2, 0xe5, 0xd0, 0xca, - 0x71, 0x39, 0xec, 0x7d, 0x2f, 0x4b, 0xa3, 0xad, 0x62, 0xa6, 0xd1, 0xd6, 0x97, 0x2d, 0x88, 0x55, - 0x06, 0xe8, 0x75, 0x28, 0xb5, 0x7d, 0x66, 0x8b, 0x18, 0x48, 0x03, 0xdf, 0xf7, 0x76, 0xd5, 0x39, - 0xf0, 0x08, 0x48, 0x01, 0x1f, 0x85, 0xaa, 0xac, 0x8a, 0x63, 0x2a, 0xe8, 0x3a, 0x0c, 0xb7, 0x03, - 0x52, 0x8b, 0x58, 0x78, 0x8e, 0xfe, 0x09, 0xf2, 0x55, 0xc3, 0x2b, 0x62, 0x49, 0xc1, 0xfe, 0xaf, - 0x16, 0x4c, 0x25, 0x51, 0xd1, 0x87, 0x61, 0x80, 0xdc, 0x23, 0x75, 0xd1, 0xdf, 0xcc, 0x4b, 0x36, - 0x16, 0x3a, 0xf0, 0x01, 0xa0, 0xff, 0x31, 0xab, 0x85, 0xae, 0xc1, 0x30, 0xbd, 0x61, 0xaf, 0xaa, - 0x50, 0x54, 0x8f, 0xe7, 0xdd, 0xd2, 0x8a, 0x55, 0xe1, 0x9d, 0x13, 0x45, 0x58, 0x56, 0x67, 0x96, - 0x52, 0xf5, 0x76, 0x8d, 0x3e, 0x5e, 0xa2, 0x6e, 0x6f, 0xec, 0x8d, 0xa5, 0x2a, 0x47, 0x12, 0xd4, - 0xb8, 0xa5, 0x94, 0x2c, 0xc4, 0x31, 0x11, 0xfb, 0x67, 0x2d, 0x00, 0x6e, 0x18, 0xe6, 0x78, 0xdb, - 0xe4, 0x04, 0xe4, 0xe4, 0x15, 0x18, 0x08, 0xdb, 0xa4, 0xde, 0xcd, 0x4c, 0x36, 0xee, 0x4f, 0xad, - 0x4d, 0xea, 0xf1, 0x8a, 0xa3, 0xff, 0x30, 0xab, 0x6d, 0x7f, 0x2f, 0xc0, 0x44, 0x8c, 0xb6, 0x1a, - 0x91, 0x16, 0x7a, 0xd6, 0x08, 0x53, 0x70, 0x36, 0x11, 0xa6, 0xa0, 0xc4, 0xb0, 0x35, 0x91, 0xec, - 0x67, 0xa0, 0xd8, 0x72, 0xee, 0x09, 0x99, 0xdb, 0xd3, 0xdd, 0xbb, 0x41, 0xe9, 0xcf, 0xaf, 0x39, - 0xf7, 0xf8, 0xb3, 0xf4, 0x69, 0xb9, 0x43, 0xd6, 0x9c, 0x7b, 0x87, 0xdc, 0x18, 0x96, 0x9d, 0xd2, - 0x37, 0xdc, 0x30, 0xfa, 0xdc, 0x7f, 0x8e, 0xff, 0xb3, 0x7d, 0x47, 0x1b, 0x61, 0x6d, 0xb9, 0x9e, - 0xb0, 0x79, 0xea, 0xab, 0x2d, 0xd7, 0x4b, 0xb6, 0xe5, 0x7a, 0x7d, 0xb4, 0xe5, 0x7a, 0xe8, 0x2d, - 0x18, 0x16, 0x26, 0x89, 0x22, 0x2c, 0xd0, 0xe5, 0x3e, 0xda, 0x13, 0x16, 0x8d, 0xbc, 0xcd, 0xcb, - 0xf2, 0xd9, 0x2d, 0x4a, 0x7b, 0xb6, 0x2b, 0x1b, 0x44, 0x7f, 0xd5, 0x82, 0x09, 0xf1, 0x1b, 0x93, - 0x37, 0x3b, 0x24, 0x8c, 0x04, 0x5b, 0xfa, 0xc1, 0xfe, 0xfb, 0x20, 0x2a, 0xf2, 0xae, 0x7c, 0x50, - 0xde, 0x33, 0x26, 0xb0, 0x67, 0x8f, 0x12, 0xbd, 0x40, 0x7f, 0xdf, 0x82, 0x53, 0x2d, 0xe7, 0x1e, - 0x6f, 0x91, 0x97, 0x61, 0x27, 0x72, 0x7d, 0xa1, 0xda, 0xff, 0x70, 0x7f, 0xd3, 0x9f, 0xaa, 0xce, - 0x3b, 0x29, 0xf5, 0x8f, 0xa7, 0xb2, 0x50, 0x7a, 0x76, 0x35, 0xb3, 0x5f, 0x73, 0x5b, 0x30, 0x22, - 0xd7, 0x5b, 0x86, 0x70, 0xa3, 0xa2, 0xf3, 0xdc, 0x47, 0xb6, 0x08, 0xd5, 0xdd, 0xff, 0x69, 0x3b, - 0x62, 0xad, 0x3d, 0xd4, 0x76, 0x3e, 0x03, 0x63, 0xfa, 0x1a, 0x7b, 0xa8, 0x6d, 0xbd, 0x09, 0x33, - 0x19, 0x6b, 0xe9, 0xa1, 0x36, 0x79, 0x17, 0xce, 0xe6, 0xae, 0x8f, 0x87, 0xd9, 0xb0, 0xfd, 0x15, - 0x4b, 0x3f, 0x07, 0x4f, 0x40, 0x59, 0xb1, 0x64, 0x2a, 0x2b, 0xce, 0x77, 0xdf, 0x39, 0x39, 0x1a, - 0x8b, 0x37, 0xf4, 0x4e, 0xd3, 0x53, 0x1d, 0xbd, 0x06, 0x43, 0x4d, 0x5a, 0x22, 0x0d, 0x5b, 0xed, - 0xde, 0x3b, 0x32, 0x66, 0x26, 0x59, 0x79, 0x88, 0x05, 0x05, 0xfb, 0x17, 0x2c, 0x18, 0x38, 0x81, - 0x91, 0xc0, 0xe6, 0x48, 0x3c, 0x9b, 0x4b, 0x5a, 0x44, 0x48, 0x9e, 0xc7, 0xce, 0xdd, 0xe5, 0x7b, - 0x11, 0xf1, 0x42, 0x76, 0x23, 0x67, 0x0e, 0xcc, 0x4f, 0x5a, 0x30, 0x73, 0xc3, 0x77, 0x1a, 0x8b, - 0x4e, 0xd3, 0xf1, 0xea, 0x24, 0x58, 0xf5, 0xb6, 0x8f, 0x64, 0x95, 0x5d, 0xe8, 0x69, 0x95, 0xbd, - 0x24, 0x8d, 0x9a, 0x06, 0xf2, 0xe7, 0x8f, 0x72, 0xd2, 0xc9, 0xc0, 0x2d, 0x86, 0xf9, 0xed, 0x0e, - 0x20, 0xbd, 0x97, 0xc2, 0x47, 0x06, 0xc3, 0xb0, 0xcb, 0xfb, 0x2b, 0x26, 0xf1, 0xc9, 0x6c, 0x0e, - 0x37, 0xf5, 0x79, 0x9a, 0xf7, 0x07, 0x2f, 0xc0, 0x92, 0x90, 0xfd, 0x12, 0x64, 0x3a, 0xda, 0xf7, - 0x96, 0x4b, 0xd8, 0x1f, 0x87, 0x69, 0x56, 0xf3, 0x88, 0x92, 0x01, 0x3b, 0x21, 0x4d, 0xcd, 0x08, - 0xc1, 0x67, 0x7f, 0xde, 0x82, 0xc9, 0xf5, 0x44, 0x64, 0xb2, 0x8b, 0x4c, 0xff, 0x9a, 0x21, 0xc4, - 0xaf, 0xb1, 0x52, 0x2c, 0xa0, 0xc7, 0x2e, 0xe4, 0xfa, 0x33, 0x0b, 0xe2, 0xd8, 0x17, 0x27, 0xc0, - 0xbe, 0x2d, 0x19, 0xec, 0x5b, 0x26, 0x23, 0xab, 0xba, 0x93, 0xc7, 0xbd, 0xa1, 0xeb, 0x2a, 0x2a, - 0x54, 0x17, 0x1e, 0x36, 0x26, 0xc3, 0x97, 0xe2, 0x84, 0x19, 0x3a, 0x4a, 0xc6, 0x89, 0xb2, 0x7f, - 0xab, 0x00, 0x48, 0xe1, 0xf6, 0x1d, 0xb5, 0x2a, 0x5d, 0xe3, 0x78, 0xa2, 0x56, 0xed, 0x01, 0x62, - 0x16, 0x04, 0x81, 0xe3, 0x85, 0x9c, 0xac, 0x2b, 0xc4, 0x7a, 0x47, 0x33, 0x4f, 0x98, 0x13, 0x4d, - 0xa2, 0x1b, 0x29, 0x6a, 0x38, 0xa3, 0x05, 0xcd, 0x32, 0x64, 0xb0, 0x5f, 0xcb, 0x90, 0xa1, 0x1e, - 0x7e, 0x70, 0x3f, 0x63, 0xc1, 0xb8, 0x1a, 0xa6, 0x77, 0x88, 0x95, 0xba, 0xea, 0x4f, 0xce, 0x01, - 0x5a, 0xd5, 0xba, 0xcc, 0x2e, 0x96, 0x6f, 0x67, 0xfe, 0x8c, 0x4e, 0xd3, 0x7d, 0x8b, 0xa8, 0x98, - 0x81, 0x65, 0xe1, 0x9f, 0x28, 0x4a, 0x0f, 0x0f, 0xca, 0xe3, 0xea, 0x1f, 0x8f, 0x89, 0x1c, 0x57, - 0xa1, 0x47, 0xf2, 0x64, 0x62, 0x29, 0xa2, 0x17, 0x61, 0xb0, 0xbd, 0xe3, 0x84, 0x24, 0xe1, 0xcd, - 0x33, 0x58, 0xa5, 0x85, 0x87, 0x07, 0xe5, 0x09, 0x55, 0x81, 0x95, 0x60, 0x8e, 0xdd, 0x7f, 0x2c, - 0xb0, 0xf4, 0xe2, 0xec, 0x19, 0x0b, 0xec, 0x8f, 0x2d, 0x18, 0x58, 0xf7, 0x1b, 0x27, 0x71, 0x04, - 0xbc, 0x6a, 0x1c, 0x01, 0x8f, 0xe5, 0x85, 0xab, 0xcf, 0xdd, 0xfd, 0x2b, 0x89, 0xdd, 0x7f, 0x3e, - 0x97, 0x42, 0xf7, 0x8d, 0xdf, 0x82, 0x51, 0x16, 0x04, 0x5f, 0x78, 0x2e, 0x3d, 0x6f, 0x6c, 0xf8, - 0x72, 0x62, 0xc3, 0x4f, 0x6a, 0xa8, 0xda, 0x4e, 0x7f, 0x0a, 0x86, 0x85, 0x2b, 0x4c, 0xd2, 0x2d, - 0x54, 0xe0, 0x62, 0x09, 0xb7, 0x7f, 0xbc, 0x08, 0x46, 0xd0, 0x7d, 0xf4, 0x4b, 0x16, 0xcc, 0x07, - 0xdc, 0x44, 0xb6, 0x51, 0xe9, 0x04, 0xae, 0xb7, 0x5d, 0xab, 0xef, 0x90, 0x46, 0xa7, 0xe9, 0x7a, - 0xdb, 0xab, 0xdb, 0x9e, 0xaf, 0x8a, 0x97, 0xef, 0x91, 0x7a, 0x87, 0xa9, 0xdd, 0x7a, 0x44, 0xf8, - 0x57, 0xa6, 0xe6, 0xcf, 0xdd, 0x3f, 0x28, 0xcf, 0xe3, 0x23, 0xd1, 0xc6, 0x47, 0xec, 0x0b, 0xfa, - 0x35, 0x0b, 0x2e, 0xf3, 0x58, 0xf4, 0xfd, 0xf7, 0xbf, 0xcb, 0x6b, 0xb9, 0x2a, 0x49, 0xc5, 0x44, - 0x36, 0x48, 0xd0, 0x5a, 0xfc, 0x90, 0x18, 0xd0, 0xcb, 0xd5, 0xa3, 0xb5, 0x85, 0x8f, 0xda, 0x39, - 0xfb, 0x9f, 0x17, 0x61, 0x5c, 0xc4, 0x8c, 0x12, 0x77, 0xc0, 0x8b, 0xc6, 0x92, 0x78, 0x3c, 0xb1, - 0x24, 0xa6, 0x0d, 0xe4, 0xe3, 0x39, 0xfe, 0x43, 0x98, 0xa6, 0x87, 0xf3, 0x35, 0xe2, 0x04, 0xd1, - 0x26, 0x71, 0xb8, 0xc1, 0x57, 0xf1, 0xc8, 0xa7, 0xbf, 0x92, 0x4f, 0xde, 0x48, 0x12, 0xc3, 0x69, - 0xfa, 0xdf, 0x4a, 0x77, 0x8e, 0x07, 0x53, 0xa9, 0xb0, 0x5f, 0x9f, 0x80, 0x92, 0xf2, 0xe3, 0x10, - 0x87, 0x4e, 0xf7, 0xe8, 0x79, 0x49, 0x0a, 0x5c, 0xfc, 0x15, 0xfb, 0x10, 0xc5, 0xe4, 0xec, 0x7f, - 0x58, 0x30, 0x1a, 0xe4, 0x93, 0xb8, 0x0e, 0x23, 0x4e, 0x18, 0xba, 0xdb, 0x1e, 0x69, 0x74, 0x93, - 0x50, 0xa6, 0x9a, 0x61, 0xbe, 0x34, 0x0b, 0xa2, 0x26, 0x56, 0x34, 0xd0, 0x35, 0x6e, 0x56, 0xb7, - 0x47, 0xba, 0x89, 0x27, 0x53, 0xd4, 0x40, 0x1a, 0xde, 0xed, 0x11, 0x2c, 0xea, 0xa3, 0x4f, 0x72, - 0xbb, 0xc7, 0xeb, 0x9e, 0x7f, 0xd7, 0xbb, 0xea, 0xfb, 0x32, 0x2e, 0x43, 0x7f, 0x04, 0xa7, 0xa5, - 0xb5, 0xa3, 0xaa, 0x8e, 0x4d, 0x6a, 0xfd, 0xc5, 0xd1, 0xfc, 0x2c, 0xb0, 0xd8, 0xdb, 0xa6, 0xdb, - 0x74, 0x88, 0x08, 0x4c, 0x8a, 0x80, 0x64, 0xb2, 0x4c, 0x8c, 0x5d, 0xe6, 0x53, 0xce, 0xac, 0x1d, - 0x0b, 0xd2, 0xaf, 0x9b, 0x24, 0x70, 0x92, 0xa6, 0xfd, 0x53, 0x16, 0x30, 0x17, 0xd2, 0x13, 0xe0, - 0x47, 0x3e, 0x62, 0xf2, 0x23, 0xb3, 0x79, 0x83, 0x9c, 0xc3, 0x8a, 0xbc, 0xc0, 0x57, 0x56, 0x35, - 0xf0, 0xef, 0xed, 0x0b, 0x63, 0x95, 0xde, 0xef, 0x0f, 0xfb, 0xff, 0x58, 0xfc, 0x10, 0x53, 0x5e, - 0x16, 0xe8, 0x3b, 0x61, 0xa4, 0xee, 0xb4, 0x9d, 0x3a, 0xcf, 0x10, 0x93, 0x2b, 0xd1, 0x33, 0x2a, - 0xcd, 0x2f, 0x89, 0x1a, 0x5c, 0x42, 0x25, 0x03, 0xdb, 0x8d, 0xc8, 0xe2, 0x9e, 0x52, 0x29, 0xd5, - 0xe4, 0xdc, 0x2e, 0x8c, 0x1b, 0xc4, 0x1e, 0xaa, 0x38, 0xe3, 0x3b, 0xf9, 0x15, 0xab, 0x02, 0x31, - 0xb6, 0x60, 0xda, 0xd3, 0xfe, 0xd3, 0x0b, 0x45, 0x3e, 0x2e, 0xdf, 0xdb, 0xeb, 0x12, 0x65, 0xb7, - 0x8f, 0xe6, 0x9d, 0x9a, 0x20, 0x83, 0xd3, 0x94, 0xed, 0x9f, 0xb0, 0xe0, 0x11, 0x1d, 0x51, 0x73, - 0x80, 0xe9, 0xa5, 0x24, 0xa9, 0xc0, 0x88, 0xdf, 0x26, 0x81, 0x13, 0xf9, 0x81, 0xb8, 0x35, 0x2e, - 0xc9, 0x41, 0xbf, 0x29, 0xca, 0x0f, 0x45, 0xbc, 0x73, 0x49, 0x5d, 0x96, 0x63, 0x55, 0x93, 0xbe, - 0x3e, 0xd9, 0x60, 0x84, 0xc2, 0xd5, 0x89, 0x9d, 0x01, 0x4c, 0x93, 0x1e, 0x62, 0x01, 0xb1, 0xbf, - 0x6e, 0xf1, 0x85, 0xa5, 0x77, 0x1d, 0xbd, 0x09, 0x53, 0x2d, 0x27, 0xaa, 0xef, 0x2c, 0xdf, 0x6b, - 0x07, 0x5c, 0xe5, 0x24, 0xc7, 0xe9, 0xe9, 0x5e, 0xe3, 0xa4, 0x7d, 0x64, 0x6c, 0xca, 0xb9, 0x96, - 0x20, 0x86, 0x53, 0xe4, 0xd1, 0x26, 0x8c, 0xb2, 0x32, 0xe6, 0xc5, 0x17, 0x76, 0x63, 0x0d, 0xf2, - 0x5a, 0x53, 0xc6, 0x08, 0x6b, 0x31, 0x1d, 0xac, 0x13, 0xb5, 0xbf, 0x5c, 0xe4, 0xbb, 0x9d, 0xb1, - 0xf2, 0x4f, 0xc1, 0x70, 0xdb, 0x6f, 0x2c, 0xad, 0x56, 0xb0, 0x98, 0x05, 0x75, 0x8d, 0x54, 0x79, - 0x31, 0x96, 0x70, 0x74, 0x09, 0x46, 0xc4, 0x4f, 0xa9, 0x22, 0x64, 0x67, 0xb3, 0xc0, 0x0b, 0xb1, - 0x82, 0xa2, 0xe7, 0x00, 0xda, 0x81, 0xbf, 0xe7, 0x36, 0x58, 0x74, 0x89, 0xa2, 0x69, 0x47, 0x54, - 0x55, 0x10, 0xac, 0x61, 0xa1, 0x57, 0x60, 0xbc, 0xe3, 0x85, 0x9c, 0x1d, 0xd1, 0x62, 0xc9, 0x2a, - 0x0b, 0x97, 0x5b, 0x3a, 0x10, 0x9b, 0xb8, 0x68, 0x01, 0x86, 0x22, 0x87, 0xd9, 0xc5, 0x0c, 0xe6, - 0x9b, 0xfb, 0x6e, 0x50, 0x0c, 0x3d, 0x19, 0x09, 0xad, 0x80, 0x45, 0x45, 0xf4, 0x09, 0xe9, 0x50, - 0xcb, 0x0f, 0x76, 0x61, 0x67, 0xdf, 0xdf, 0x25, 0xa0, 0xb9, 0xd3, 0x0a, 0xfb, 0x7d, 0x83, 0x16, - 0x7a, 0x19, 0x80, 0xdc, 0x8b, 0x48, 0xe0, 0x39, 0x4d, 0x65, 0xcd, 0xa6, 0xf8, 0x82, 0x8a, 0xbf, - 0xee, 0x47, 0xb7, 0x42, 0xb2, 0xac, 0x30, 0xb0, 0x86, 0x6d, 0xff, 0x5a, 0x09, 0x20, 0xe6, 0xdb, - 0xd1, 0x5b, 0xa9, 0x83, 0xeb, 0x99, 0xee, 0x9c, 0xfe, 0xf1, 0x9d, 0x5a, 0xe8, 0xfb, 0x2c, 0x18, - 0x75, 0x9a, 0x4d, 0xbf, 0xee, 0xf0, 0x68, 0xbf, 0x85, 0xee, 0x07, 0xa7, 0x68, 0x7f, 0x21, 0xae, - 0xc1, 0xbb, 0xf0, 0xbc, 0x5c, 0xa1, 0x1a, 0xa4, 0x67, 0x2f, 0xf4, 0x86, 0xd1, 0x07, 0xe4, 0x53, - 0xb1, 0x68, 0x0c, 0xa5, 0x7a, 0x2a, 0x96, 0xd8, 0x1d, 0xa1, 0xbf, 0x12, 0x6f, 0x19, 0xaf, 0xc4, - 0x81, 0x7c, 0x8f, 0x41, 0x83, 0x7d, 0xed, 0xf5, 0x40, 0x44, 0x55, 0x3d, 0x7a, 0xc0, 0x60, 0xbe, - 0x7b, 0x9e, 0xf6, 0x4e, 0xea, 0x11, 0x39, 0xe0, 0x33, 0x30, 0xd9, 0x30, 0x99, 0x00, 0xb1, 0x12, - 0x9f, 0xcc, 0xa3, 0x9b, 0xe0, 0x19, 0xe2, 0x6b, 0x3f, 0x01, 0xc0, 0x49, 0xc2, 0xa8, 0xca, 0x83, - 0x49, 0xac, 0x7a, 0x5b, 0xbe, 0xf0, 0xf5, 0xb0, 0x73, 0xe7, 0x72, 0x3f, 0x8c, 0x48, 0x8b, 0x62, - 0xc6, 0xb7, 0xfb, 0xba, 0xa8, 0x8b, 0x15, 0x15, 0xf4, 0x1a, 0x0c, 0x31, 0xff, 0xac, 0x70, 0x76, - 0x24, 0x5f, 0xe2, 0x6c, 0x46, 0x47, 0x8b, 0x37, 0x24, 0xfb, 0x1b, 0x62, 0x41, 0x01, 0x5d, 0x93, - 0xde, 0x8f, 0xe1, 0xaa, 0x77, 0x2b, 0x24, 0xcc, 0xfb, 0xb1, 0xb4, 0xf8, 0xde, 0xd8, 0xb1, 0x91, - 0x97, 0x67, 0xa6, 0x2c, 0x33, 0x6a, 0x52, 0x2e, 0x4a, 0xfc, 0x97, 0x99, 0xd0, 0x66, 0x21, 0xbf, - 0x7b, 0x66, 0xb6, 0xb4, 0x78, 0x38, 0x6f, 0x9b, 0x24, 0x70, 0x92, 0x26, 0xe5, 0x48, 0xf9, 0xae, - 0x17, 0xde, 0x22, 0xbd, 0xce, 0x0e, 0xfe, 0x10, 0x67, 0xb7, 0x11, 0x2f, 0xc1, 0xa2, 0xfe, 0x89, - 0xb2, 0x07, 0x73, 0x1e, 0x4c, 0x25, 0xb7, 0xe8, 0x43, 0x65, 0x47, 0x7e, 0x7f, 0x00, 0x26, 0xcc, - 0x25, 0x85, 0x2e, 0x43, 0x49, 0x10, 0x51, 0xd9, 0x04, 0xd4, 0x2e, 0x59, 0x93, 0x00, 0x1c, 0xe3, - 0xb0, 0x24, 0x12, 0xac, 0xba, 0x66, 0x1e, 0x1c, 0x27, 0x91, 0x50, 0x10, 0xac, 0x61, 0xd1, 0x87, - 0xd5, 0xa6, 0xef, 0x47, 0xea, 0x42, 0x52, 0xeb, 0x6e, 0x91, 0x95, 0x62, 0x01, 0xa5, 0x17, 0xd1, - 0x2e, 0x09, 0x3c, 0xd2, 0x34, 0xe3, 0x0e, 0xab, 0x8b, 0xe8, 0xba, 0x0e, 0xc4, 0x26, 0x2e, 0xbd, - 0x4e, 0xfd, 0x90, 0x2d, 0x64, 0xf1, 0x7c, 0x8b, 0xcd, 0xad, 0x6b, 0xdc, 0x01, 0x5b, 0xc2, 0xd1, - 0xc7, 0xe1, 0x11, 0x15, 0x5b, 0x09, 0x73, 0x6d, 0x86, 0x6c, 0x71, 0xc8, 0x90, 0xb6, 0x3c, 0xb2, - 0x94, 0x8d, 0x86, 0xf3, 0xea, 0xa3, 0x57, 0x61, 0x42, 0xb0, 0xf8, 0x92, 0xe2, 0xb0, 0x69, 0x61, - 0x74, 0xdd, 0x80, 0xe2, 0x04, 0xb6, 0x8c, 0x9c, 0xcc, 0xb8, 0x6c, 0x49, 0x61, 0x24, 0x1d, 0x39, - 0x59, 0x87, 0xe3, 0x54, 0x0d, 0xb4, 0x00, 0x93, 0x9c, 0x07, 0x73, 0xbd, 0x6d, 0x3e, 0x27, 0xc2, - 0x99, 0x4b, 0x6d, 0xa9, 0x9b, 0x26, 0x18, 0x27, 0xf1, 0xd1, 0x4b, 0x30, 0xe6, 0x04, 0xf5, 0x1d, - 0x37, 0x22, 0xf5, 0xa8, 0x13, 0x70, 0x2f, 0x2f, 0xcd, 0x44, 0x6b, 0x41, 0x83, 0x61, 0x03, 0xd3, - 0x7e, 0x0b, 0x66, 0x32, 0x22, 0x33, 0xd0, 0x85, 0xe3, 0xb4, 0x5d, 0xf9, 0x4d, 0x09, 0x0b, 0xe7, - 0x85, 0xea, 0xaa, 0xfc, 0x1a, 0x0d, 0x8b, 0xae, 0x4e, 0x16, 0xc1, 0x41, 0x4b, 0x7c, 0xa8, 0x56, - 0xe7, 0x8a, 0x04, 0xe0, 0x18, 0xc7, 0xfe, 0x1f, 0x05, 0x98, 0xcc, 0xd0, 0xad, 0xb0, 0xe4, 0x7b, - 0x89, 0x47, 0x4a, 0x9c, 0x6b, 0xcf, 0x0c, 0xc4, 0x5d, 0x38, 0x42, 0x20, 0xee, 0x62, 0xaf, 0x40, - 0xdc, 0x03, 0x6f, 0x27, 0x10, 0xb7, 0x39, 0x62, 0x83, 0x7d, 0x8d, 0x58, 0x46, 0xf0, 0xee, 0xa1, - 0x23, 0x06, 0xef, 0x36, 0x06, 0x7d, 0xb8, 0x8f, 0x41, 0xff, 0x91, 0x02, 0x4c, 0x25, 0x4d, 0x49, - 0x4f, 0x40, 0x6e, 0xfb, 0x9a, 0x21, 0xb7, 0xbd, 0xd4, 0x8f, 0xf3, 0x6d, 0xae, 0x0c, 0x17, 0x27, - 0x64, 0xb8, 0xef, 0xef, 0x8b, 0x5a, 0x77, 0x79, 0xee, 0xdf, 0x2c, 0xc0, 0xe9, 0x4c, 0xef, 0xdf, - 0x13, 0x18, 0x9b, 0x9b, 0xc6, 0xd8, 0x3c, 0xdb, 0xb7, 0x63, 0x72, 0xee, 0x00, 0xdd, 0x49, 0x0c, - 0xd0, 0xe5, 0xfe, 0x49, 0x76, 0x1f, 0xa5, 0xaf, 0x15, 0xe1, 0x7c, 0x66, 0xbd, 0x58, 0xec, 0xb9, - 0x62, 0x88, 0x3d, 0x9f, 0x4b, 0x88, 0x3d, 0xed, 0xee, 0xb5, 0x8f, 0x47, 0x0e, 0x2a, 0x1c, 0x74, - 0x59, 0x98, 0x81, 0x07, 0x94, 0x81, 0x1a, 0x0e, 0xba, 0x8a, 0x10, 0x36, 0xe9, 0x7e, 0x2b, 0xc9, - 0x3e, 0xff, 0x9d, 0x05, 0x67, 0x33, 0xe7, 0xe6, 0x04, 0x64, 0x5d, 0xeb, 0xa6, 0xac, 0xeb, 0xa9, - 0xbe, 0x57, 0x6b, 0x8e, 0xf0, 0xeb, 0xcb, 0x83, 0x39, 0xdf, 0xc2, 0x5e, 0xf2, 0x37, 0x61, 0xd4, - 0xa9, 0xd7, 0x49, 0x18, 0xae, 0xf9, 0x0d, 0x15, 0x6b, 0xf8, 0x59, 0xf6, 0xce, 0x8a, 0x8b, 0x0f, - 0x0f, 0xca, 0x73, 0x49, 0x12, 0x31, 0x18, 0xeb, 0x14, 0xd0, 0x27, 0x61, 0x24, 0x14, 0xf7, 0xa6, - 0x98, 0xfb, 0xe7, 0xfb, 0x1c, 0x1c, 0x67, 0x93, 0x34, 0xcd, 0x60, 0x48, 0x4a, 0x52, 0xa1, 0x48, - 0x9a, 0x81, 0x53, 0x0a, 0xc7, 0x1a, 0x38, 0xe5, 0x39, 0x80, 0x3d, 0xf5, 0x18, 0x48, 0xca, 0x1f, - 0xb4, 0x67, 0x82, 0x86, 0x85, 0x3e, 0x0a, 0x53, 0x21, 0x8f, 0x16, 0xb8, 0xd4, 0x74, 0x42, 0xe6, - 0x47, 0x23, 0x56, 0x21, 0x0b, 0xb8, 0x54, 0x4b, 0xc0, 0x70, 0x0a, 0x1b, 0xad, 0xc8, 0x56, 0x59, - 0x68, 0x43, 0xbe, 0x30, 0x2f, 0xc6, 0x2d, 0x8a, 0xd4, 0xbf, 0xa7, 0x92, 0xc3, 0xcf, 0x06, 0x5e, - 0xab, 0x89, 0x3e, 0x09, 0x40, 0x97, 0x8f, 0x90, 0x43, 0x0c, 0xe7, 0x1f, 0x9e, 0xf4, 0x54, 0x69, - 0x64, 0x1a, 0x37, 0x33, 0x9f, 0xda, 0x8a, 0x22, 0x82, 0x35, 0x82, 0x68, 0x0b, 0xc6, 0xe3, 0x7f, - 0x71, 0x66, 0xcc, 0x23, 0xb6, 0xc0, 0xe4, 0xde, 0x15, 0x9d, 0x0e, 0x36, 0xc9, 0xda, 0x3f, 0x36, - 0x0c, 0x8f, 0x76, 0x39, 0x8b, 0xd1, 0x82, 0xa9, 0xef, 0x7d, 0x3a, 0xf9, 0x88, 0x9f, 0xcb, 0xac, - 0x6c, 0xbc, 0xea, 0x13, 0x4b, 0xbe, 0xf0, 0xb6, 0x97, 0xfc, 0x0f, 0x59, 0x9a, 0x78, 0x85, 0x5b, - 0x96, 0x7e, 0xe4, 0x88, 0x77, 0xcc, 0x31, 0xca, 0x5b, 0xb6, 0x32, 0x84, 0x16, 0xcf, 0xf5, 0xdd, - 0x9d, 0xfe, 0xa5, 0x18, 0x5f, 0xb1, 0x00, 0x09, 0xf1, 0x0a, 0x69, 0xa8, 0x0d, 0x25, 0xe4, 0x19, - 0x57, 0x8f, 0xfa, 0xfd, 0x0b, 0x29, 0x4a, 0x7c, 0x24, 0x5e, 0x96, 0x97, 0x41, 0x1a, 0xa1, 0xe7, - 0x98, 0x64, 0x74, 0x0f, 0x7d, 0x9c, 0x45, 0xd3, 0x75, 0xdf, 0x12, 0x1c, 0x90, 0xd8, 0x70, 0x2f, - 0x8a, 0x48, 0xba, 0xaa, 0x9c, 0xb2, 0xba, 0x99, 0xdd, 0xd5, 0x91, 0xb0, 0x41, 0xea, 0x64, 0xdf, - 0xdf, 0x1d, 0x78, 0x24, 0x67, 0xc8, 0x1e, 0xea, 0x33, 0xfc, 0x37, 0x2d, 0x38, 0xd7, 0x35, 0x2c, - 0xcc, 0x37, 0x21, 0x83, 0x68, 0x7f, 0xce, 0x82, 0xec, 0xc9, 0x36, 0xcc, 0xca, 0x2e, 0x43, 0xa9, - 0x4e, 0x0b, 0x35, 0x3f, 0xe0, 0x38, 0x40, 0x82, 0x04, 0xe0, 0x18, 0xc7, 0xb0, 0x1e, 0x2b, 0xf4, - 0xb4, 0x1e, 0xfb, 0x65, 0x0b, 0x52, 0x87, 0xfc, 0x09, 0x70, 0x1b, 0xab, 0x26, 0xb7, 0xf1, 0xde, - 0x7e, 0x46, 0x33, 0x87, 0xd1, 0xf8, 0xa3, 0x49, 0x38, 0x93, 0xe3, 0x96, 0xb7, 0x07, 0xd3, 0xdb, - 0x75, 0x62, 0x7a, 0x58, 0x77, 0x8b, 0x3c, 0xd4, 0xd5, 0x1d, 0x9b, 0x25, 0x87, 0x9d, 0x4e, 0xa1, - 0xe0, 0x74, 0x13, 0xe8, 0x73, 0x16, 0x9c, 0x72, 0xee, 0x86, 0xcb, 0x94, 0x6b, 0x74, 0xeb, 0x8b, - 0x4d, 0xbf, 0xbe, 0x4b, 0xaf, 0x64, 0xb9, 0x11, 0x5e, 0xc8, 0x94, 0xe4, 0xdd, 0xa9, 0xa5, 0xf0, - 0x8d, 0xe6, 0x59, 0xb6, 0xdc, 0x2c, 0x2c, 0x9c, 0xd9, 0x16, 0xc2, 0x22, 0x85, 0x02, 0x7d, 0x93, - 0x76, 0x89, 0x01, 0x90, 0xe5, 0x3f, 0xc9, 0xd9, 0x20, 0x09, 0xc1, 0x8a, 0x0e, 0xfa, 0x34, 0x94, - 0xb6, 0xa5, 0xbb, 0x6f, 0x06, 0x9b, 0x15, 0x0f, 0x64, 0x77, 0x27, 0x68, 0xae, 0x8e, 0x57, 0x48, - 0x38, 0x26, 0x8a, 0x5e, 0x85, 0xa2, 0xb7, 0x15, 0x76, 0x4b, 0x38, 0x9b, 0xb0, 0xbb, 0xe4, 0x91, - 0x36, 0xd6, 0x57, 0x6a, 0x98, 0x56, 0x44, 0xd7, 0xa0, 0x18, 0x6c, 0x36, 0x84, 0x18, 0x3a, 0x73, - 0x93, 0xe2, 0xc5, 0x4a, 0x4e, 0xaf, 0x18, 0x25, 0xbc, 0x58, 0xc1, 0x94, 0x04, 0xaa, 0xc2, 0x20, - 0xf3, 0x65, 0x13, 0x4c, 0x4d, 0xe6, 0xf3, 0xad, 0x8b, 0x4f, 0x28, 0x0f, 0xc7, 0xc1, 0x10, 0x30, - 0x27, 0x84, 0x36, 0x60, 0xa8, 0xce, 0x92, 0x93, 0x0a, 0x2e, 0xe6, 0x03, 0x99, 0x02, 0xe7, 0x2e, - 0x59, 0x5b, 0x85, 0xfc, 0x95, 0x61, 0x60, 0x41, 0x8b, 0x51, 0x25, 0xed, 0x9d, 0xad, 0x50, 0x24, - 0xef, 0xce, 0xa6, 0xda, 0x25, 0x19, 0xb1, 0xa0, 0xca, 0x30, 0xb0, 0xa0, 0x85, 0x5e, 0x86, 0xc2, - 0x56, 0x5d, 0xf8, 0xa9, 0x65, 0x4a, 0x9e, 0xcd, 0x60, 0x29, 0x8b, 0x43, 0xf7, 0x0f, 0xca, 0x85, - 0x95, 0x25, 0x5c, 0xd8, 0xaa, 0xa3, 0x75, 0x18, 0xde, 0xe2, 0xe1, 0x15, 0x84, 0x70, 0xf9, 0xc9, - 0xec, 0xc8, 0x0f, 0xa9, 0x08, 0x0c, 0xdc, 0xe7, 0x49, 0x00, 0xb0, 0x24, 0xc2, 0x32, 0x12, 0xa8, - 0x30, 0x11, 0x22, 0x4a, 0xdd, 0xfc, 0xd1, 0x42, 0x7b, 0x70, 0x26, 0x33, 0x0e, 0x36, 0x81, 0x35, - 0x8a, 0x74, 0x55, 0x3b, 0x6f, 0x75, 0x02, 0x16, 0x0a, 0x5c, 0x84, 0x33, 0xca, 0x5c, 0xd5, 0x0b, - 0x12, 0xa9, 0xdb, 0xaa, 0x56, 0x48, 0x38, 0x26, 0x8a, 0x76, 0x61, 0x7c, 0x2f, 0x6c, 0xef, 0x10, - 0xb9, 0xa5, 0x59, 0x74, 0xa3, 0x1c, 0xfe, 0xe8, 0xb6, 0x40, 0x74, 0x83, 0xa8, 0xe3, 0x34, 0x53, - 0xa7, 0x10, 0xe3, 0x65, 0x6f, 0xeb, 0xc4, 0xb0, 0x49, 0x9b, 0x0e, 0xff, 0x9b, 0x1d, 0x7f, 0x73, - 0x3f, 0x22, 0x22, 0xb8, 0x5c, 0xe6, 0xf0, 0xbf, 0xce, 0x51, 0xd2, 0xc3, 0x2f, 0x00, 0x58, 0x12, - 0x41, 0xb7, 0xc5, 0xf0, 0xb0, 0xd3, 0x73, 0x2a, 0x3f, 0x02, 0xec, 0x82, 0x44, 0xca, 0x19, 0x14, - 0x76, 0x5a, 0xc6, 0xa4, 0xd8, 0x29, 0xd9, 0xde, 0xf1, 0x23, 0xdf, 0x4b, 0x9c, 0xd0, 0xd3, 0xf9, - 0xa7, 0x64, 0x35, 0x03, 0x3f, 0x7d, 0x4a, 0x66, 0x61, 0xe1, 0xcc, 0xb6, 0x50, 0x03, 0x26, 0xda, - 0x7e, 0x10, 0xdd, 0xf5, 0x03, 0xb9, 0xbe, 0x50, 0x17, 0xe1, 0x98, 0x81, 0x29, 0x5a, 0x64, 0x71, - 0x1b, 0x4d, 0x08, 0x4e, 0xd0, 0x44, 0x1f, 0x83, 0xe1, 0xb0, 0xee, 0x34, 0xc9, 0xea, 0xcd, 0xd9, - 0x99, 0xfc, 0xeb, 0xa7, 0xc6, 0x51, 0x72, 0x56, 0x17, 0x8f, 0x8e, 0xc1, 0x51, 0xb0, 0x24, 0x87, - 0x56, 0x60, 0x90, 0x65, 0x9c, 0x63, 0x91, 0x10, 0x73, 0x02, 0xd9, 0xa6, 0xac, 0xe0, 0xf9, 0xd9, - 0xc4, 0x8a, 0x31, 0xaf, 0x4e, 0xf7, 0x80, 0x78, 0x23, 0xfa, 0xe1, 0xec, 0xe9, 0xfc, 0x3d, 0x20, - 0x9e, 0x96, 0x37, 0x6b, 0xdd, 0xf6, 0x80, 0x42, 0xc2, 0x31, 0x51, 0x7a, 0x32, 0xd3, 0xd3, 0xf4, - 0x4c, 0x17, 0xf3, 0xad, 0xdc, 0xb3, 0x94, 0x9d, 0xcc, 0xf4, 0x24, 0xa5, 0x24, 0xec, 0xdf, 0x1d, - 0x4e, 0xf3, 0x2c, 0x4c, 0xaa, 0xf0, 0x3d, 0x56, 0x4a, 0xe1, 0xfc, 0xc1, 0x7e, 0x85, 0x9c, 0xc7, - 0xf8, 0x14, 0xfa, 0x9c, 0x05, 0x67, 0xda, 0x99, 0x1f, 0x22, 0x18, 0x80, 0xfe, 0x64, 0xa5, 0xfc, - 0xd3, 0x55, 0xd4, 0xcc, 0x6c, 0x38, 0xce, 0x69, 0x29, 0xf9, 0xdc, 0x2c, 0xbe, 0xed, 0xe7, 0xe6, - 0x1a, 0x8c, 0xd4, 0xf9, 0x53, 0xa4, 0x6b, 0xb2, 0xee, 0xe4, 0xdb, 0x9b, 0xb1, 0x12, 0xe2, 0x0d, - 0xb3, 0x85, 0x15, 0x09, 0xf4, 0xc3, 0x16, 0x9c, 0x4b, 0x76, 0x1d, 0x13, 0x06, 0x16, 0xa1, 0x36, - 0xb9, 0x40, 0x63, 0x45, 0x7c, 0x7f, 0x8a, 0xff, 0x37, 0x90, 0x0f, 0x7b, 0x21, 0xe0, 0xee, 0x8d, - 0xa1, 0x4a, 0x86, 0x44, 0x65, 0xc8, 0xd4, 0x22, 0xf5, 0x21, 0x55, 0x79, 0x01, 0xc6, 0x5a, 0x7e, - 0xc7, 0x8b, 0x84, 0xb5, 0x97, 0xb0, 0x3c, 0x61, 0x16, 0x17, 0x6b, 0x5a, 0x39, 0x36, 0xb0, 0x12, - 0xb2, 0x98, 0x91, 0x07, 0x96, 0xc5, 0xbc, 0x01, 0x63, 0x9e, 0x66, 0x9e, 0x2c, 0xf8, 0x81, 0x8b, - 0xf9, 0x61, 0x72, 0x75, 0x63, 0x66, 0xde, 0x4b, 0xbd, 0x04, 0x1b, 0xd4, 0x4e, 0xd6, 0x0c, 0xec, - 0x4b, 0x56, 0x06, 0x53, 0xcf, 0x45, 0x31, 0x1f, 0x36, 0x45, 0x31, 0x17, 0x93, 0xa2, 0x98, 0x94, - 0x06, 0xc1, 0x90, 0xc2, 0xf4, 0x9f, 0x05, 0xa8, 0xdf, 0x50, 0x9b, 0x76, 0x13, 0x2e, 0xf4, 0xba, - 0x96, 0x98, 0xd9, 0x5f, 0x43, 0xe9, 0x8b, 0x63, 0xb3, 0xbf, 0xc6, 0x6a, 0x05, 0x33, 0x48, 0xbf, - 0x41, 0x9c, 0xec, 0xff, 0x66, 0x41, 0xb1, 0xea, 0x37, 0x4e, 0xe0, 0xc1, 0xfb, 0x11, 0xe3, 0xc1, - 0xfb, 0x68, 0xf6, 0x85, 0xd8, 0xc8, 0xd5, 0x7f, 0x2c, 0x27, 0xf4, 0x1f, 0xe7, 0xf2, 0x08, 0x74, - 0xd7, 0x76, 0xfc, 0x64, 0x11, 0x46, 0xab, 0x7e, 0x43, 0xd9, 0xdc, 0xff, 0xcb, 0x07, 0xb1, 0xb9, - 0xcf, 0xcd, 0x65, 0xa1, 0x51, 0x66, 0xd6, 0x82, 0xd2, 0xdd, 0xf8, 0x9b, 0xcc, 0xf4, 0xfe, 0x0e, - 0x71, 0xb7, 0x77, 0x22, 0xd2, 0x48, 0x7e, 0xce, 0xc9, 0x99, 0xde, 0xff, 0x6e, 0x01, 0x26, 0x13, - 0xad, 0xa3, 0x26, 0x8c, 0x37, 0x75, 0xe9, 0xba, 0x58, 0xa7, 0x0f, 0x24, 0x98, 0x17, 0xa6, 0xcb, - 0x5a, 0x11, 0x36, 0x89, 0xa3, 0x79, 0x00, 0xa5, 0x6e, 0x96, 0xe2, 0x55, 0xc6, 0xf5, 0x2b, 0x7d, - 0x74, 0x88, 0x35, 0x0c, 0xf4, 0x22, 0x8c, 0x46, 0x7e, 0xdb, 0x6f, 0xfa, 0xdb, 0xfb, 0xd7, 0x89, - 0x8c, 0xef, 0xa5, 0x0c, 0x12, 0x37, 0x62, 0x10, 0xd6, 0xf1, 0xd0, 0x3d, 0x98, 0x56, 0x44, 0x6a, - 0xc7, 0xa0, 0x71, 0x60, 0x52, 0x85, 0xf5, 0x24, 0x45, 0x9c, 0x6e, 0xc4, 0xfe, 0xe9, 0x22, 0x1f, - 0x62, 0x2f, 0x72, 0xdf, 0xdd, 0x0d, 0xef, 0xec, 0xdd, 0xf0, 0x35, 0x0b, 0xa6, 0x68, 0xeb, 0xcc, - 0xda, 0x4a, 0x5e, 0xf3, 0x2a, 0x30, 0xb7, 0xd5, 0x25, 0x30, 0xf7, 0x45, 0x7a, 0x6a, 0x36, 0xfc, - 0x4e, 0x24, 0x64, 0x77, 0xda, 0xb1, 0x48, 0x4b, 0xb1, 0x80, 0x0a, 0x3c, 0x12, 0x04, 0xc2, 0x43, - 0x54, 0xc7, 0x23, 0x41, 0x80, 0x05, 0x54, 0xc6, 0xed, 0x1e, 0xc8, 0x8e, 0xdb, 0xcd, 0xc3, 0xaf, - 0x0a, 0xbb, 0x1c, 0xc1, 0x70, 0x69, 0xe1, 0x57, 0xa5, 0xc1, 0x4e, 0x8c, 0x63, 0x7f, 0xa5, 0x08, - 0x63, 0x55, 0xbf, 0x11, 0xab, 0x9a, 0x5f, 0x30, 0x54, 0xcd, 0x17, 0x12, 0xaa, 0xe6, 0x29, 0x1d, - 0xf7, 0x5d, 0xc5, 0xf2, 0x37, 0x4a, 0xb1, 0xfc, 0xcf, 0x2c, 0x36, 0x6b, 0x95, 0xf5, 0x1a, 0x37, - 0xde, 0x43, 0x57, 0x60, 0x94, 0x1d, 0x30, 0xcc, 0x25, 0x59, 0xea, 0x5f, 0x59, 0x3e, 0xaa, 0xf5, - 0xb8, 0x18, 0xeb, 0x38, 0xe8, 0x12, 0x8c, 0x84, 0xc4, 0x09, 0xea, 0x3b, 0xea, 0x74, 0x15, 0xca, - 0x52, 0x5e, 0x86, 0x15, 0x14, 0xbd, 0x1e, 0x47, 0xfe, 0x2c, 0xe6, 0xbb, 0x38, 0xea, 0xfd, 0xe1, - 0x5b, 0x24, 0x3f, 0xdc, 0xa7, 0x7d, 0x07, 0x50, 0x1a, 0xbf, 0x8f, 0xd8, 0x74, 0x65, 0x33, 0x36, - 0x5d, 0x29, 0x15, 0x97, 0xee, 0x4f, 0x2d, 0x98, 0xa8, 0xfa, 0x0d, 0xba, 0x75, 0xbf, 0x95, 0xf6, - 0xa9, 0x1e, 0xf6, 0x78, 0xa8, 0x4b, 0xd8, 0xe3, 0x27, 0x60, 0xb0, 0xea, 0x37, 0x56, 0xab, 0xdd, - 0xe2, 0x0b, 0xd8, 0x7f, 0xcb, 0x82, 0xe1, 0xaa, 0xdf, 0x38, 0x01, 0xb5, 0xc0, 0x87, 0x4d, 0xb5, - 0xc0, 0x23, 0x39, 0xeb, 0x26, 0x47, 0x13, 0xf0, 0x37, 0x06, 0x60, 0x9c, 0xf6, 0xd3, 0xdf, 0x96, - 0x53, 0x69, 0x0c, 0x9b, 0xd5, 0xc7, 0xb0, 0x51, 0x2e, 0xdc, 0x6f, 0x36, 0xfd, 0xbb, 0xc9, 0x69, - 0x5d, 0x61, 0xa5, 0x58, 0x40, 0xd1, 0x33, 0x30, 0xd2, 0x0e, 0xc8, 0x9e, 0xeb, 0x0b, 0xf6, 0x56, - 0x53, 0xb2, 0x54, 0x45, 0x39, 0x56, 0x18, 0xf4, 0x59, 0x18, 0xba, 0x1e, 0xbd, 0xca, 0xeb, 0xbe, - 0xd7, 0xe0, 0x92, 0xf3, 0xa2, 0xc8, 0xcd, 0xa1, 0x95, 0x63, 0x03, 0x0b, 0xdd, 0x81, 0x12, 0xfb, - 0xcf, 0x8e, 0x9d, 0xa3, 0x67, 0x79, 0x15, 0x59, 0xff, 0x04, 0x01, 0x1c, 0xd3, 0x42, 0xcf, 0x01, - 0x44, 0x32, 0xbe, 0x7d, 0x28, 0xa2, 0xad, 0xa9, 0xa7, 0x80, 0x8a, 0x7c, 0x1f, 0x62, 0x0d, 0x0b, - 0x3d, 0x0d, 0xa5, 0xc8, 0x71, 0x9b, 0x37, 0x5c, 0x8f, 0x84, 0x4c, 0x22, 0x5e, 0x94, 0xc9, 0xf7, - 0x44, 0x21, 0x8e, 0xe1, 0x94, 0x15, 0x63, 0x91, 0x38, 0x78, 0x8e, 0xe8, 0x11, 0x86, 0xcd, 0x58, - 0xb1, 0x1b, 0xaa, 0x14, 0x6b, 0x18, 0x68, 0x07, 0x1e, 0x73, 0x3d, 0x96, 0xc7, 0x82, 0xd4, 0x76, - 0xdd, 0xf6, 0xc6, 0x8d, 0xda, 0x6d, 0x12, 0xb8, 0x5b, 0xfb, 0x8b, 0x4e, 0x7d, 0x97, 0x78, 0x32, - 0x7f, 0xe7, 0x7b, 0x45, 0x17, 0x1f, 0x5b, 0xed, 0x82, 0x8b, 0xbb, 0x52, 0xb2, 0x9f, 0x67, 0xeb, - 0xfd, 0x66, 0x0d, 0xbd, 0xdf, 0x38, 0x3a, 0xce, 0xe8, 0x47, 0xc7, 0xe1, 0x41, 0x79, 0xe8, 0x66, - 0x4d, 0x0b, 0x24, 0xf1, 0x12, 0x9c, 0xae, 0xfa, 0x8d, 0xaa, 0x1f, 0x44, 0x2b, 0x7e, 0x70, 0xd7, - 0x09, 0x1a, 0x72, 0x79, 0x95, 0x65, 0x28, 0x0d, 0x7a, 0x7e, 0x0e, 0xf2, 0xd3, 0xc5, 0x08, 0x93, - 0xf1, 0x3c, 0xe3, 0xd8, 0x8e, 0xe8, 0x00, 0x56, 0x67, 0xbc, 0x83, 0xca, 0x04, 0x73, 0xd5, 0x89, - 0x08, 0xba, 0xc9, 0x32, 0x5c, 0xc7, 0xd7, 0xa8, 0xa8, 0xfe, 0x94, 0x96, 0xe1, 0x3a, 0x06, 0x66, - 0xde, 0xbb, 0x66, 0x7d, 0xfb, 0xbf, 0x0f, 0xb2, 0x13, 0x35, 0x91, 0x4d, 0x04, 0x7d, 0x0a, 0x26, - 0x42, 0x72, 0xc3, 0xf5, 0x3a, 0xf7, 0xa4, 0x08, 0xa3, 0x8b, 0x0b, 0x5f, 0x6d, 0x59, 0xc7, 0xe4, - 0x82, 0x50, 0xb3, 0x0c, 0x27, 0xa8, 0xa1, 0x16, 0x4c, 0xdc, 0x75, 0xbd, 0x86, 0x7f, 0x37, 0x94, - 0xf4, 0x47, 0xf2, 0xe5, 0xa1, 0x77, 0x38, 0x66, 0xa2, 0x8f, 0x46, 0x73, 0x77, 0x0c, 0x62, 0x38, - 0x41, 0x9c, 0xae, 0xda, 0xa0, 0xe3, 0x2d, 0x84, 0xb7, 0x42, 0x12, 0x88, 0x5c, 0xe5, 0x6c, 0xd5, - 0x62, 0x59, 0x88, 0x63, 0x38, 0x5d, 0xb5, 0xec, 0xcf, 0xd5, 0xc0, 0xef, 0xf0, 0xd4, 0x15, 0x62, - 0xd5, 0x62, 0x55, 0x8a, 0x35, 0x0c, 0xba, 0xab, 0xd9, 0xbf, 0x75, 0xdf, 0xc3, 0xbe, 0x1f, 0xc9, - 0x73, 0x80, 0xe9, 0xf4, 0xb5, 0x72, 0x6c, 0x60, 0xa1, 0x15, 0x40, 0x61, 0xa7, 0xdd, 0x6e, 0x32, - 0xdb, 0x20, 0xa7, 0xc9, 0x48, 0x71, 0x7b, 0x89, 0x22, 0x0f, 0xbd, 0x5b, 0x4b, 0x41, 0x71, 0x46, - 0x0d, 0x7a, 0xc0, 0x6f, 0x89, 0xae, 0x0e, 0xb2, 0xae, 0x72, 0xdd, 0x49, 0x8d, 0xf7, 0x53, 0xc2, - 0xd0, 0x32, 0x0c, 0x87, 0xfb, 0x61, 0x3d, 0x12, 0x91, 0x12, 0x73, 0x12, 0x46, 0xd5, 0x18, 0x8a, - 0x96, 0xaf, 0x90, 0x57, 0xc1, 0xb2, 0x2e, 0xaa, 0xc3, 0x8c, 0xa0, 0xb8, 0xb4, 0xe3, 0x78, 0x2a, - 0xfd, 0x0e, 0x37, 0x91, 0xbe, 0x72, 0xff, 0xa0, 0x3c, 0x23, 0x5a, 0xd6, 0xc1, 0x87, 0x07, 0xe5, - 0x33, 0x55, 0xbf, 0x91, 0x01, 0xc1, 0x59, 0xd4, 0xf8, 0xe2, 0xab, 0xd7, 0xfd, 0x56, 0xbb, 0x1a, - 0xf8, 0x5b, 0x6e, 0x93, 0x74, 0xd3, 0x3f, 0xd5, 0x0c, 0x4c, 0xb1, 0xf8, 0x8c, 0x32, 0x9c, 0xa0, - 0x66, 0x7f, 0x27, 0x63, 0x82, 0x58, 0x7a, 0xee, 0xa8, 0x13, 0x10, 0xd4, 0x82, 0xf1, 0x36, 0xdb, - 0x26, 0x22, 0xa1, 0x84, 0x58, 0xeb, 0x2f, 0xf4, 0x29, 0x47, 0xb9, 0x4b, 0xef, 0x0e, 0xd3, 0xc6, - 0xa8, 0xaa, 0x93, 0xc3, 0x26, 0x75, 0xfb, 0xd7, 0x1f, 0x61, 0xd7, 0x68, 0x8d, 0x0b, 0x47, 0x86, - 0x85, 0x47, 0x86, 0x78, 0x8f, 0xcd, 0xe5, 0x4b, 0xe9, 0xe2, 0x69, 0x11, 0x5e, 0x1d, 0x58, 0xd6, - 0x45, 0x9f, 0x84, 0x09, 0xfa, 0xbc, 0x51, 0x57, 0x59, 0x38, 0x7b, 0x2a, 0x3f, 0x72, 0x86, 0xc2, - 0xd2, 0x93, 0xcd, 0xe8, 0x95, 0x71, 0x82, 0x18, 0x7a, 0x9d, 0xd9, 0xf4, 0x48, 0xd2, 0x85, 0x7e, - 0x48, 0xeb, 0xe6, 0x3b, 0x92, 0xac, 0x46, 0x04, 0x75, 0x60, 0x26, 0x9d, 0x9a, 0x2e, 0x9c, 0xb5, - 0xf3, 0xf9, 0xc4, 0x74, 0x76, 0xb9, 0x38, 0x2b, 0x48, 0x1a, 0x16, 0xe2, 0x2c, 0xfa, 0xe8, 0x06, - 0x8c, 0x8b, 0x1c, 0xd5, 0x62, 0xe5, 0x16, 0x0d, 0xe1, 0xe1, 0x38, 0xd6, 0x81, 0x87, 0xc9, 0x02, - 0x6c, 0x56, 0x46, 0xdb, 0x70, 0x4e, 0xcb, 0x19, 0x75, 0x35, 0x70, 0x98, 0x05, 0x80, 0xcb, 0x8e, - 0x53, 0xed, 0x82, 0x7f, 0xfc, 0xfe, 0x41, 0xf9, 0xdc, 0x46, 0x37, 0x44, 0xdc, 0x9d, 0x0e, 0xba, - 0x09, 0xa7, 0xb9, 0xdf, 0x77, 0x85, 0x38, 0x8d, 0xa6, 0xeb, 0x29, 0x0e, 0x82, 0x6f, 0xf9, 0xb3, - 0xf7, 0x0f, 0xca, 0xa7, 0x17, 0xb2, 0x10, 0x70, 0x76, 0x3d, 0xf4, 0x61, 0x28, 0x35, 0xbc, 0x50, - 0x8c, 0xc1, 0x90, 0x91, 0x96, 0xab, 0x54, 0x59, 0xaf, 0xa9, 0xef, 0x8f, 0xff, 0xe0, 0xb8, 0x02, - 0xda, 0xe6, 0x02, 0x66, 0x25, 0xf6, 0x18, 0x4e, 0xc5, 0xbd, 0x4a, 0x4a, 0x06, 0x0d, 0xcf, 0x4f, - 0xae, 0x59, 0x51, 0x0e, 0x11, 0x86, 0x53, 0xa8, 0x41, 0x18, 0xbd, 0x06, 0x48, 0x84, 0x7f, 0x5f, - 0xa8, 0xb3, 0x6c, 0x25, 0x4c, 0x1e, 0x3f, 0x62, 0xfa, 0x22, 0xd6, 0x52, 0x18, 0x38, 0xa3, 0x16, - 0xba, 0x46, 0x4f, 0x15, 0xbd, 0x54, 0x9c, 0x5a, 0x2a, 0x89, 0x62, 0x85, 0xb4, 0x03, 0xc2, 0x2c, - 0x9a, 0x4c, 0x8a, 0x38, 0x51, 0x0f, 0x35, 0xe0, 0x31, 0xa7, 0x13, 0xf9, 0x4c, 0x76, 0x6f, 0xa2, - 0x6e, 0xf8, 0xbb, 0xc4, 0x63, 0x6a, 0xb3, 0x91, 0xc5, 0x0b, 0x94, 0x45, 0x59, 0xe8, 0x82, 0x87, - 0xbb, 0x52, 0xa1, 0xac, 0xa5, 0xca, 0x9a, 0x0c, 0x66, 0x34, 0xaf, 0x8c, 0xcc, 0xc9, 0x2f, 0xc2, - 0xe8, 0x8e, 0x1f, 0x46, 0xeb, 0x24, 0xba, 0xeb, 0x07, 0xbb, 0x22, 0x2a, 0x6d, 0x1c, 0xe3, 0x3b, - 0x06, 0x61, 0x1d, 0x8f, 0xbe, 0x1d, 0x99, 0x51, 0xc7, 0x6a, 0x85, 0xe9, 0xd3, 0x47, 0xe2, 0x33, - 0xe6, 0x1a, 0x2f, 0xc6, 0x12, 0x2e, 0x51, 0x57, 0xab, 0x4b, 0x4c, 0x37, 0x9e, 0x40, 0x5d, 0xad, - 0x2e, 0x61, 0x09, 0xa7, 0xcb, 0x35, 0xdc, 0x71, 0x02, 0x52, 0x0d, 0xfc, 0x3a, 0x09, 0xb5, 0xc8, - 0xf2, 0x8f, 0xf2, 0x98, 0xbb, 0x74, 0xb9, 0xd6, 0xb2, 0x10, 0x70, 0x76, 0x3d, 0x44, 0xd2, 0xf9, - 0xd2, 0x26, 0xf2, 0x95, 0x1a, 0x69, 0x7e, 0xa6, 0xcf, 0x94, 0x69, 0x1e, 0x4c, 0xa9, 0x4c, 0x6d, - 0x3c, 0xca, 0x6e, 0x38, 0x3b, 0xc9, 0xd6, 0x76, 0xff, 0x21, 0x7a, 0x95, 0x9a, 0x68, 0x35, 0x41, - 0x09, 0xa7, 0x68, 0x1b, 0x01, 0xdb, 0xa6, 0x7a, 0x06, 0x6c, 0xbb, 0x0c, 0xa5, 0xb0, 0xb3, 0xd9, - 0xf0, 0x5b, 0x8e, 0xeb, 0x31, 0xdd, 0xb8, 0xf6, 0x88, 0xa9, 0x49, 0x00, 0x8e, 0x71, 0xd0, 0x0a, - 0x8c, 0x38, 0x52, 0x07, 0x84, 0xf2, 0x43, 0xf4, 0x28, 0xcd, 0x0f, 0x8f, 0x5a, 0x21, 0xb5, 0x3e, - 0xaa, 0x2e, 0x7a, 0x05, 0xc6, 0x85, 0xdf, 0xb2, 0x48, 0x12, 0x3a, 0x63, 0x3a, 0x97, 0xd5, 0x74, - 0x20, 0x36, 0x71, 0xd1, 0x2d, 0x18, 0x8d, 0xfc, 0x26, 0xf3, 0x90, 0xa2, 0x6c, 0xde, 0x99, 0xfc, - 0x60, 0x73, 0x1b, 0x0a, 0x4d, 0x17, 0xbf, 0xaa, 0xaa, 0x58, 0xa7, 0x83, 0x36, 0xf8, 0x7a, 0x67, - 0x71, 0xe4, 0x49, 0x38, 0xfb, 0x48, 0xfe, 0x9d, 0xa4, 0xc2, 0xcd, 0x9b, 0xdb, 0x41, 0xd4, 0xc4, - 0x3a, 0x19, 0x74, 0x15, 0xa6, 0xdb, 0x81, 0xeb, 0xb3, 0x35, 0xa1, 0xd4, 0x7f, 0xb3, 0x66, 0xd6, - 0xa8, 0x6a, 0x12, 0x01, 0xa7, 0xeb, 0x30, 0xb7, 0x73, 0x51, 0x38, 0x7b, 0x96, 0x67, 0xbe, 0xe0, - 0x6f, 0x42, 0x5e, 0x86, 0x15, 0x14, 0xad, 0xb1, 0x93, 0x98, 0x8b, 0x33, 0x66, 0xe7, 0xf2, 0xa3, - 0x02, 0xe9, 0x62, 0x0f, 0xce, 0xbc, 0xaa, 0xbf, 0x38, 0xa6, 0x80, 0x1a, 0x5a, 0xc2, 0x49, 0xfa, - 0x62, 0x08, 0x67, 0x1f, 0xeb, 0x62, 0x59, 0x97, 0x78, 0x5e, 0xc4, 0x0c, 0x81, 0x51, 0x1c, 0xe2, - 0x04, 0x4d, 0xf4, 0x51, 0x98, 0x12, 0xb1, 0x0c, 0xe3, 0x61, 0x3a, 0x17, 0xdb, 0x9d, 0xe3, 0x04, - 0x0c, 0xa7, 0xb0, 0x79, 0xe6, 0x09, 0x67, 0xb3, 0x49, 0xc4, 0xd1, 0x77, 0xc3, 0xf5, 0x76, 0xc3, - 0xd9, 0xf3, 0xec, 0x7c, 0x10, 0x99, 0x27, 0x92, 0x50, 0x9c, 0x51, 0x03, 0x6d, 0xc0, 0x54, 0x3b, - 0x20, 0xa4, 0xc5, 0x18, 0x7d, 0x71, 0x9f, 0x95, 0x79, 0xd4, 0x05, 0xda, 0x93, 0x6a, 0x02, 0x76, - 0x98, 0x51, 0x86, 0x53, 0x14, 0xd0, 0x5d, 0x18, 0xf1, 0xf7, 0x48, 0xb0, 0x43, 0x9c, 0xc6, 0xec, - 0x85, 0x2e, 0x7e, 0x10, 0xe2, 0x72, 0xbb, 0x29, 0x70, 0x13, 0x26, 0x03, 0xb2, 0xb8, 0xb7, 0xc9, - 0x80, 0x6c, 0x0c, 0xfd, 0x45, 0x0b, 0xce, 0x4a, 0x2d, 0x43, 0xad, 0x4d, 0x47, 0x7d, 0xc9, 0xf7, - 0xc2, 0x28, 0xe0, 0x71, 0x02, 0x1e, 0xcf, 0xf7, 0x9d, 0xdf, 0xc8, 0xa9, 0xa4, 0x24, 0xaa, 0x67, - 0xf3, 0x30, 0x42, 0x9c, 0xdf, 0x22, 0x5a, 0x82, 0xe9, 0x90, 0x44, 0xf2, 0x30, 0x5a, 0x08, 0x57, - 0x5e, 0xaf, 0xac, 0xcf, 0x3e, 0xc1, 0x83, 0x1c, 0xd0, 0xcd, 0x50, 0x4b, 0x02, 0x71, 0x1a, 0x1f, - 0x5d, 0x81, 0x82, 0x1f, 0xce, 0xbe, 0xb7, 0x4b, 0x8e, 0x52, 0xfa, 0x14, 0xe7, 0xa6, 0x63, 0x37, - 0x6b, 0xb8, 0xe0, 0x87, 0x73, 0xdf, 0x0e, 0xd3, 0x29, 0x8e, 0xe1, 0x28, 0xb9, 0x7d, 0xe6, 0x76, - 0x61, 0xdc, 0x98, 0x95, 0x87, 0xaa, 0xa5, 0xfe, 0x37, 0xc3, 0x50, 0x52, 0x1a, 0x4c, 0x74, 0xd9, - 0x54, 0x4c, 0x9f, 0x4d, 0x2a, 0xa6, 0x47, 0xaa, 0x7e, 0xc3, 0xd0, 0x45, 0x6f, 0x64, 0x44, 0x83, - 0xcb, 0x3b, 0x03, 0xfa, 0x37, 0x90, 0xd7, 0xc4, 0xc2, 0xc5, 0xbe, 0x35, 0xdc, 0x03, 0x5d, 0x25, - 0xcd, 0x57, 0x61, 0xda, 0xf3, 0x19, 0x9b, 0x4a, 0x1a, 0x92, 0x07, 0x61, 0xac, 0x46, 0x49, 0x0f, - 0xaf, 0x92, 0x40, 0xc0, 0xe9, 0x3a, 0xb4, 0x41, 0xce, 0x2b, 0x24, 0x45, 0xdb, 0x9c, 0x95, 0xc0, - 0x02, 0x8a, 0x9e, 0x80, 0xc1, 0xb6, 0xdf, 0x58, 0xad, 0x0a, 0x16, 0x55, 0x8b, 0x41, 0xda, 0x58, - 0xad, 0x62, 0x0e, 0x43, 0x0b, 0x30, 0xc4, 0x7e, 0x84, 0xb3, 0x63, 0xf9, 0x71, 0x34, 0x58, 0x0d, - 0x2d, 0x73, 0x12, 0xab, 0x80, 0x45, 0x45, 0x26, 0x62, 0xa3, 0x7c, 0x3d, 0x13, 0xb1, 0x0d, 0x3f, - 0xa0, 0x88, 0x4d, 0x12, 0xc0, 0x31, 0x2d, 0x74, 0x0f, 0x4e, 0x1b, 0x6f, 0x29, 0xbe, 0x44, 0x48, - 0x28, 0x7c, 0xf9, 0x9f, 0xe8, 0xfa, 0x88, 0x12, 0x1a, 0xf1, 0x73, 0xa2, 0xd3, 0xa7, 0x57, 0xb3, - 0x28, 0xe1, 0xec, 0x06, 0x50, 0x13, 0xa6, 0xeb, 0xa9, 0x56, 0x47, 0xfa, 0x6f, 0x55, 0x4d, 0x68, - 0xba, 0xc5, 0x34, 0x61, 0xf4, 0x0a, 0x8c, 0xbc, 0xe9, 0x87, 0xec, 0x78, 0x17, 0x6c, 0xb5, 0x74, - 0x04, 0x1f, 0x79, 0xfd, 0x66, 0x8d, 0x95, 0x1f, 0x1e, 0x94, 0x47, 0xab, 0x7e, 0x43, 0xfe, 0xc5, - 0xaa, 0x02, 0xfa, 0x7e, 0x0b, 0xe6, 0xd2, 0x8f, 0x35, 0xd5, 0xe9, 0xf1, 0xfe, 0x3b, 0x6d, 0x8b, - 0x46, 0xe7, 0x96, 0x73, 0xc9, 0xe1, 0x2e, 0x4d, 0xd9, 0xbf, 0x68, 0x31, 0x41, 0x9d, 0xd0, 0x34, - 0x91, 0xb0, 0xd3, 0x3c, 0x89, 0x84, 0xb1, 0xcb, 0x86, 0x12, 0xec, 0x81, 0x2d, 0x24, 0xfe, 0x85, - 0xc5, 0x2c, 0x24, 0x4e, 0xd0, 0x15, 0xe2, 0x75, 0x18, 0x89, 0x64, 0x22, 0xdf, 0x2e, 0x39, 0x6e, - 0xb5, 0x4e, 0x31, 0x2b, 0x11, 0xc5, 0xe4, 0xaa, 0x9c, 0xbd, 0x8a, 0x8c, 0xfd, 0x8f, 0xf9, 0x0c, - 0x48, 0xc8, 0x09, 0xe8, 0x1a, 0x2a, 0xa6, 0xae, 0xa1, 0xdc, 0xe3, 0x0b, 0x72, 0x74, 0x0e, 0xff, - 0xc8, 0xec, 0x37, 0x13, 0xee, 0xbc, 0xd3, 0x4d, 0x73, 0xec, 0xcf, 0x5b, 0x00, 0x71, 0x88, 0xe7, - 0x3e, 0x52, 0xb5, 0xbd, 0x44, 0xd9, 0x5a, 0x3f, 0xf2, 0xeb, 0x7e, 0x53, 0x68, 0xd2, 0x1e, 0x8b, - 0xd5, 0x1d, 0xbc, 0xfc, 0x50, 0xfb, 0x8d, 0x15, 0x36, 0x2a, 0xcb, 0x80, 0x72, 0xc5, 0x58, 0x01, - 0x67, 0x04, 0x93, 0xfb, 0xa2, 0x05, 0xa7, 0xb2, 0xec, 0x6a, 0xe9, 0x23, 0x89, 0x8b, 0xb9, 0x94, - 0xd9, 0x94, 0x9a, 0xcd, 0xdb, 0xa2, 0x1c, 0x2b, 0x8c, 0xbe, 0x73, 0xe0, 0x1d, 0x2d, 0xb6, 0xf2, - 0x4d, 0x18, 0xaf, 0x06, 0x44, 0xbb, 0x5c, 0x5f, 0xe5, 0x41, 0x0a, 0x78, 0x7f, 0x9e, 0x39, 0x72, - 0x80, 0x02, 0xfb, 0xcb, 0x05, 0x38, 0xc5, 0xad, 0x0f, 0x16, 0xf6, 0x7c, 0xb7, 0x51, 0xf5, 0x1b, - 0xc2, 0x7b, 0xea, 0x13, 0x30, 0xd6, 0xd6, 0x64, 0x93, 0xdd, 0xe2, 0x84, 0xea, 0x32, 0xcc, 0x58, - 0x9a, 0xa2, 0x97, 0x62, 0x83, 0x16, 0x6a, 0xc0, 0x18, 0xd9, 0x73, 0xeb, 0x4a, 0x85, 0x5d, 0x38, - 0xf2, 0x45, 0xa7, 0x5a, 0x59, 0xd6, 0xe8, 0x60, 0x83, 0xea, 0x43, 0xc8, 0x4c, 0x6d, 0xff, 0xa8, - 0x05, 0x8f, 0xe4, 0x44, 0x15, 0xa5, 0xcd, 0xdd, 0x65, 0x76, 0x1e, 0x62, 0xd9, 0xaa, 0xe6, 0xb8, - 0xf5, 0x07, 0x16, 0x50, 0xf4, 0x31, 0x00, 0x6e, 0xbd, 0x41, 0x5f, 0xe9, 0xbd, 0xc2, 0x2f, 0x1a, - 0x91, 0xe3, 0xb4, 0x20, 0x60, 0xb2, 0x3e, 0xd6, 0x68, 0xd9, 0x5f, 0x1c, 0x80, 0x41, 0x9e, 0x45, - 0xbf, 0x0a, 0xc3, 0x3b, 0x3c, 0x4f, 0x4c, 0xd7, 0x79, 0xa3, 0xb8, 0x32, 0xf5, 0x4c, 0x3c, 0x6f, - 0x5a, 0x29, 0x96, 0x64, 0xd0, 0x1a, 0xcc, 0xf0, 0x74, 0x3d, 0xcd, 0x0a, 0x69, 0x3a, 0xfb, 0x52, - 0xec, 0xc7, 0x73, 0xcb, 0x2a, 0xf1, 0xe7, 0x6a, 0x1a, 0x05, 0x67, 0xd5, 0x43, 0xaf, 0xc2, 0x04, - 0x7d, 0x86, 0xf9, 0x9d, 0x48, 0x52, 0xe2, 0x89, 0x7a, 0xd4, 0xbb, 0x6f, 0xc3, 0x80, 0xe2, 0x04, - 0x36, 0x7a, 0x05, 0xc6, 0xdb, 0x29, 0x01, 0xe7, 0x60, 0x2c, 0x09, 0x30, 0x85, 0x9a, 0x26, 0x2e, - 0x33, 0xad, 0xed, 0x30, 0x43, 0xe2, 0x8d, 0x9d, 0x80, 0x84, 0x3b, 0x7e, 0xb3, 0xc1, 0xd8, 0xbf, - 0x41, 0xcd, 0xb4, 0x36, 0x01, 0xc7, 0xa9, 0x1a, 0x94, 0xca, 0x96, 0xe3, 0x36, 0x3b, 0x01, 0x89, - 0xa9, 0x0c, 0x99, 0x54, 0x56, 0x12, 0x70, 0x9c, 0xaa, 0xd1, 0x5b, 0x72, 0x3b, 0x7c, 0x3c, 0x92, - 0x5b, 0xfb, 0x6f, 0x17, 0xc0, 0x98, 0xda, 0x6f, 0xdd, 0x04, 0x42, 0xf4, 0xcb, 0xb6, 0x83, 0x76, - 0x5d, 0x58, 0xc6, 0x64, 0x7e, 0x59, 0x9c, 0x17, 0x94, 0x7f, 0x19, 0xfd, 0x8f, 0x59, 0x2d, 0xba, - 0xc7, 0x4f, 0x57, 0x03, 0x9f, 0x5e, 0x72, 0x32, 0x8c, 0x95, 0xb2, 0x60, 0x1f, 0x96, 0xde, 0xbd, - 0x5d, 0x02, 0x3e, 0x0a, 0x1b, 0x5f, 0x4e, 0xc1, 0x30, 0x22, 0xa9, 0x09, 0x5f, 0x7b, 0x49, 0x05, - 0x5d, 0x81, 0x51, 0x91, 0x15, 0x86, 0x19, 0x5a, 0xf3, 0xcd, 0xc4, 0x8c, 0x5e, 0x2a, 0x71, 0x31, - 0xd6, 0x71, 0xec, 0x1f, 0x28, 0xc0, 0x4c, 0x86, 0xa7, 0x0c, 0xbf, 0x46, 0xb6, 0xdd, 0x30, 0x52, - 0xa9, 0x47, 0xb5, 0x6b, 0x84, 0x97, 0x63, 0x85, 0x41, 0xcf, 0x2a, 0x7e, 0x51, 0x25, 0x2f, 0x27, - 0x61, 0x89, 0x2e, 0xa0, 0x47, 0x4c, 0xe2, 0x79, 0x01, 0x06, 0x3a, 0x21, 0x91, 0xa1, 0x5a, 0xd5, - 0xb5, 0xcd, 0xd4, 0x9a, 0x0c, 0x42, 0x9f, 0x51, 0xdb, 0x4a, 0x43, 0xa8, 0x3d, 0xa3, 0xb8, 0x8e, - 0x90, 0xc3, 0x68, 0xe7, 0x22, 0xe2, 0x39, 0x5e, 0x24, 0x1e, 0x5b, 0x71, 0xcc, 0x41, 0x56, 0x8a, - 0x05, 0xd4, 0xfe, 0x42, 0x11, 0xce, 0xe6, 0xfa, 0xce, 0xd1, 0xae, 0xb7, 0x7c, 0xcf, 0x8d, 0x7c, - 0x65, 0x4d, 0xc4, 0xe3, 0x0c, 0x92, 0xf6, 0xce, 0x9a, 0x28, 0xc7, 0x0a, 0x03, 0x5d, 0x84, 0x41, - 0x26, 0x14, 0x4d, 0x25, 0x61, 0x5d, 0xac, 0xf0, 0xc0, 0x53, 0x1c, 0xdc, 0x77, 0xde, 0xec, 0x27, - 0x28, 0x07, 0xe3, 0x37, 0x93, 0x17, 0x0a, 0xed, 0xae, 0xef, 0x37, 0x31, 0x03, 0xa2, 0xf7, 0x89, - 0xf1, 0x4a, 0x98, 0xcf, 0x60, 0xa7, 0xe1, 0x87, 0xda, 0xa0, 0x3d, 0x05, 0xc3, 0xbb, 0x64, 0x3f, - 0x70, 0xbd, 0xed, 0xa4, 0x59, 0xd5, 0x75, 0x5e, 0x8c, 0x25, 0xdc, 0xcc, 0x1a, 0x38, 0x7c, 0xdc, - 0x09, 0xaf, 0x47, 0x7a, 0xb2, 0x27, 0x3f, 0x54, 0x84, 0x49, 0xbc, 0x58, 0x79, 0x77, 0x22, 0x6e, - 0xa5, 0x27, 0xe2, 0xb8, 0x13, 0x5e, 0xf7, 0x9e, 0x8d, 0x9f, 0xb3, 0x60, 0x92, 0xe5, 0xa6, 0x11, - 0x1e, 0xf2, 0xae, 0xef, 0x9d, 0xc0, 0x53, 0xe0, 0x09, 0x18, 0x0c, 0x68, 0xa3, 0xc9, 0xec, 0xab, - 0xac, 0x27, 0x98, 0xc3, 0xd0, 0x63, 0x30, 0xc0, 0xba, 0x40, 0x27, 0x6f, 0x8c, 0x1f, 0xc1, 0x15, - 0x27, 0x72, 0x30, 0x2b, 0x65, 0x61, 0x97, 0x30, 0x69, 0x37, 0x5d, 0xde, 0xe9, 0x58, 0x65, 0xfd, - 0xce, 0xf0, 0xaa, 0xcf, 0xec, 0xda, 0xdb, 0x0b, 0xbb, 0x94, 0x4d, 0xb2, 0xfb, 0x33, 0xfb, 0x0f, - 0x0b, 0x70, 0x3e, 0xb3, 0x5e, 0xdf, 0x61, 0x97, 0xba, 0xd7, 0x7e, 0x98, 0xd9, 0x47, 0x8a, 0x27, - 0x68, 0xb4, 0x3a, 0xd0, 0x2f, 0xf7, 0x3f, 0xd8, 0x47, 0x34, 0xa4, 0xcc, 0x21, 0x7b, 0x87, 0x44, - 0x43, 0xca, 0xec, 0x5b, 0x8e, 0x98, 0xe0, 0xcf, 0x0a, 0x39, 0xdf, 0xc2, 0x04, 0x06, 0x97, 0xe8, - 0x39, 0xc3, 0x80, 0xa1, 0x7c, 0x84, 0xf3, 0x33, 0x86, 0x97, 0x61, 0x05, 0x45, 0x0b, 0x30, 0xd9, - 0x72, 0x3d, 0x7a, 0xf8, 0xec, 0x9b, 0xac, 0xb8, 0x0a, 0x56, 0xb7, 0x66, 0x82, 0x71, 0x12, 0x1f, - 0xb9, 0x5a, 0xa4, 0x24, 0xfe, 0x75, 0xaf, 0x1c, 0x69, 0xd7, 0xcd, 0x9b, 0xea, 0x7c, 0x35, 0x8a, - 0x19, 0x51, 0x93, 0xd6, 0x34, 0x39, 0x51, 0xb1, 0x7f, 0x39, 0xd1, 0x58, 0xb6, 0x8c, 0x68, 0xee, - 0x15, 0x18, 0x7f, 0x60, 0xc5, 0x80, 0xfd, 0xb5, 0x22, 0x3c, 0xda, 0x65, 0xdb, 0xf3, 0xb3, 0xde, - 0x98, 0x03, 0xed, 0xac, 0x4f, 0xcd, 0x43, 0x15, 0x4e, 0x6d, 0x75, 0x9a, 0xcd, 0x7d, 0xe6, 0xcb, - 0x41, 0x1a, 0x12, 0x43, 0xf0, 0x94, 0x52, 0x38, 0x72, 0x6a, 0x25, 0x03, 0x07, 0x67, 0xd6, 0xa4, - 0x4f, 0x2c, 0x7a, 0x93, 0xec, 0x2b, 0x52, 0x89, 0x27, 0x16, 0xd6, 0x81, 0xd8, 0xc4, 0x45, 0x57, - 0x61, 0xda, 0xd9, 0x73, 0x5c, 0x1e, 0x6e, 0x5a, 0x12, 0xe0, 0x6f, 0x2c, 0x25, 0xcf, 0x5d, 0x48, - 0x22, 0xe0, 0x74, 0x1d, 0xf4, 0x1a, 0x20, 0x7f, 0x93, 0x59, 0x7c, 0x37, 0xae, 0x12, 0x4f, 0x68, - 0x5d, 0xd9, 0xdc, 0x15, 0xe3, 0x23, 0xe1, 0x66, 0x0a, 0x03, 0x67, 0xd4, 0x4a, 0x44, 0x04, 0x1a, - 0xca, 0x8f, 0x08, 0xd4, 0xfd, 0x5c, 0xec, 0x99, 0xf8, 0xe6, 0x3f, 0x59, 0xf4, 0xfa, 0xe2, 0x4c, - 0xbe, 0x19, 0x40, 0xf3, 0x15, 0x66, 0x35, 0xc9, 0x65, 0xbd, 0x5a, 0xfc, 0x94, 0xd3, 0x9a, 0xd5, - 0x64, 0x0c, 0xc4, 0x26, 0x2e, 0x5f, 0x10, 0x61, 0xec, 0xb6, 0x6b, 0xb0, 0xf8, 0x22, 0xca, 0x97, - 0xc2, 0x40, 0x1f, 0x87, 0xe1, 0x86, 0xbb, 0xe7, 0x86, 0x42, 0xd2, 0x75, 0x64, 0xb5, 0x52, 0x7c, - 0x0e, 0x56, 0x38, 0x19, 0x2c, 0xe9, 0xd9, 0x3f, 0x54, 0x80, 0x71, 0xd9, 0xe2, 0xeb, 0x1d, 0x3f, - 0x72, 0x4e, 0xe0, 0x5a, 0xbe, 0x6a, 0x5c, 0xcb, 0xef, 0xeb, 0x16, 0xea, 0x8c, 0x75, 0x29, 0xf7, - 0x3a, 0xbe, 0x99, 0xb8, 0x8e, 0x9f, 0xec, 0x4d, 0xaa, 0xfb, 0x35, 0xfc, 0x4f, 0x2c, 0x98, 0x36, - 0xf0, 0x4f, 0xe0, 0x36, 0x58, 0x31, 0x6f, 0x83, 0xc7, 0x7b, 0x7e, 0x43, 0xce, 0x2d, 0xf0, 0xbd, - 0xc5, 0x44, 0xdf, 0xd9, 0xe9, 0xff, 0x26, 0x0c, 0xec, 0x38, 0x41, 0xa3, 0x5b, 0x6a, 0x87, 0x54, - 0xa5, 0xf9, 0x6b, 0x4e, 0x20, 0xd4, 0xce, 0xcf, 0xc8, 0x51, 0xa7, 0x45, 0x3d, 0x55, 0xce, 0xac, - 0x29, 0xf4, 0x12, 0x0c, 0x85, 0x75, 0xbf, 0xad, 0x3c, 0x39, 0x2e, 0xb0, 0x81, 0x66, 0x25, 0x87, - 0x07, 0x65, 0x64, 0x36, 0x47, 0x8b, 0xb1, 0xc0, 0x47, 0x9f, 0x80, 0x71, 0xf6, 0x4b, 0xd9, 0x80, - 0x15, 0xf3, 0xc5, 0x11, 0x35, 0x1d, 0x91, 0x1b, 0x48, 0x1a, 0x45, 0xd8, 0x24, 0x35, 0xb7, 0x0d, - 0x25, 0xf5, 0x59, 0x0f, 0x55, 0x6f, 0xfb, 0x1f, 0x8a, 0x30, 0x93, 0xb1, 0xe6, 0x50, 0x68, 0xcc, - 0xc4, 0x95, 0x3e, 0x97, 0xea, 0xdb, 0x9c, 0x8b, 0x90, 0xbd, 0x86, 0x1a, 0x62, 0x6d, 0xf5, 0xdd, - 0xe8, 0xad, 0x90, 0x24, 0x1b, 0xa5, 0x45, 0xbd, 0x1b, 0xa5, 0x8d, 0x9d, 0xd8, 0x50, 0xd3, 0x86, - 0x54, 0x4f, 0x1f, 0xea, 0x9c, 0xfe, 0x49, 0x11, 0x4e, 0x65, 0x45, 0x5f, 0x44, 0x9f, 0x4d, 0x24, - 0x16, 0x7d, 0xa1, 0xdf, 0xb8, 0x8d, 0x3c, 0xdb, 0xa8, 0x08, 0x08, 0x37, 0x6f, 0xa6, 0x1a, 0xed, - 0x39, 0xcc, 0xa2, 0x4d, 0x16, 0x92, 0x22, 0xe0, 0x09, 0x61, 0xe5, 0xf1, 0xf1, 0xc1, 0xbe, 0x3b, - 0x20, 0x32, 0xc9, 0x86, 0x09, 0xfb, 0x12, 0x59, 0xdc, 0xdb, 0xbe, 0x44, 0xb6, 0x3c, 0xe7, 0xc2, - 0xa8, 0xf6, 0x35, 0x0f, 0x75, 0xc6, 0x77, 0xe9, 0x6d, 0xa5, 0xf5, 0xfb, 0xa1, 0xce, 0xfa, 0x8f, - 0x5a, 0x90, 0x70, 0x39, 0x50, 0x62, 0x31, 0x2b, 0x57, 0x2c, 0x76, 0x01, 0x06, 0x02, 0xbf, 0x49, - 0x92, 0x19, 0x38, 0xb1, 0xdf, 0x24, 0x98, 0x41, 0x28, 0x46, 0x14, 0x0b, 0x3b, 0xc6, 0xf4, 0x87, - 0x9c, 0x78, 0xa2, 0x3d, 0x01, 0x83, 0x4d, 0xb2, 0x47, 0x9a, 0xc9, 0x44, 0x49, 0x37, 0x68, 0x21, - 0xe6, 0x30, 0xfb, 0xe7, 0x06, 0xe0, 0x5c, 0xd7, 0xa0, 0x2e, 0xf4, 0x39, 0xb4, 0xed, 0x44, 0xe4, - 0xae, 0xb3, 0x9f, 0xcc, 0x68, 0x72, 0x95, 0x17, 0x63, 0x09, 0x67, 0x9e, 0x64, 0x3c, 0x30, 0x79, - 0x42, 0x88, 0x28, 0xe2, 0x91, 0x0b, 0xa8, 0x29, 0x94, 0x2a, 0x1e, 0x87, 0x50, 0xea, 0x39, 0x80, - 0x30, 0x6c, 0x72, 0xc3, 0xac, 0x86, 0x70, 0x51, 0x8b, 0x03, 0xd8, 0xd7, 0x6e, 0x08, 0x08, 0xd6, - 0xb0, 0x50, 0x05, 0xa6, 0xda, 0x81, 0x1f, 0x71, 0x99, 0x6c, 0x85, 0xdb, 0x2e, 0x0e, 0x9a, 0xf1, - 0x34, 0xaa, 0x09, 0x38, 0x4e, 0xd5, 0x40, 0x2f, 0xc2, 0xa8, 0x88, 0xb1, 0x51, 0xf5, 0xfd, 0xa6, - 0x10, 0x03, 0x29, 0x73, 0xbe, 0x5a, 0x0c, 0xc2, 0x3a, 0x9e, 0x56, 0x8d, 0x09, 0x7a, 0x87, 0x33, - 0xab, 0x71, 0x61, 0xaf, 0x86, 0x97, 0x88, 0xc4, 0x3a, 0xd2, 0x57, 0x24, 0xd6, 0x58, 0x30, 0x56, - 0xea, 0x5b, 0xef, 0x08, 0x3d, 0x45, 0x49, 0x3f, 0x33, 0x00, 0x33, 0x62, 0xe1, 0x3c, 0xec, 0xe5, - 0x72, 0x2b, 0xbd, 0x5c, 0x8e, 0x43, 0x74, 0xf6, 0xee, 0x9a, 0x39, 0xe9, 0x35, 0xf3, 0xc3, 0x16, - 0x98, 0xec, 0x15, 0xfa, 0x73, 0xb9, 0x29, 0xa1, 0x5e, 0xcc, 0x65, 0xd7, 0x54, 0x54, 0xcf, 0xb7, - 0x99, 0x1c, 0xca, 0xfe, 0x8f, 0x16, 0x3c, 0xde, 0x93, 0x22, 0x5a, 0x86, 0x12, 0xe3, 0x01, 0xb5, - 0xd7, 0xd9, 0x93, 0xca, 0xb6, 0x59, 0x02, 0x72, 0x58, 0xd2, 0xb8, 0x26, 0x5a, 0x4e, 0xe5, 0xde, - 0x7a, 0x2a, 0x23, 0xf7, 0xd6, 0x69, 0x63, 0x78, 0x1e, 0x30, 0xf9, 0xd6, 0x0f, 0xd2, 0x1b, 0xc7, - 0xf0, 0x2b, 0x42, 0x1f, 0x34, 0xc4, 0x7e, 0x76, 0x42, 0xec, 0x87, 0x4c, 0x6c, 0xed, 0x0e, 0xf9, - 0x28, 0x4c, 0xb1, 0xe0, 0x5b, 0xcc, 0xd2, 0x5e, 0x78, 0x3c, 0x15, 0x62, 0x6b, 0xda, 0x1b, 0x09, - 0x18, 0x4e, 0x61, 0xdb, 0x7f, 0x50, 0x84, 0x21, 0xbe, 0xfd, 0x4e, 0xe0, 0x4d, 0xf8, 0x34, 0x94, - 0xdc, 0x56, 0xab, 0xc3, 0xd3, 0x29, 0x0d, 0x72, 0xdf, 0x68, 0x3a, 0x4f, 0xab, 0xb2, 0x10, 0xc7, - 0x70, 0xb4, 0x22, 0x24, 0xce, 0x5d, 0xe2, 0x7b, 0xf2, 0x8e, 0xcf, 0x57, 0x9c, 0xc8, 0xe1, 0x0c, - 0x8e, 0xba, 0x67, 0x63, 0xd9, 0x34, 0xfa, 0x14, 0x40, 0x18, 0x05, 0xae, 0xb7, 0x4d, 0xcb, 0x44, - 0x58, 0xe1, 0xf7, 0x77, 0xa1, 0x56, 0x53, 0xc8, 0x9c, 0x66, 0x7c, 0xe6, 0x28, 0x00, 0xd6, 0x28, - 0xa2, 0x79, 0xe3, 0xa6, 0x9f, 0x4b, 0xcc, 0x1d, 0x70, 0xaa, 0xf1, 0x9c, 0xcd, 0x7d, 0x08, 0x4a, - 0x8a, 0x78, 0x2f, 0xf9, 0xd3, 0x98, 0xce, 0x16, 0x7d, 0x04, 0x26, 0x13, 0x7d, 0x3b, 0x92, 0xf8, - 0xea, 0xe7, 0x2d, 0x98, 0xe4, 0x9d, 0x59, 0xf6, 0xf6, 0xc4, 0x6d, 0xf0, 0x16, 0x9c, 0x6a, 0x66, - 0x9c, 0xca, 0x62, 0xfa, 0xfb, 0x3f, 0xc5, 0x95, 0xb8, 0x2a, 0x0b, 0x8a, 0x33, 0xdb, 0x40, 0x97, - 0xe8, 0x8e, 0xa3, 0xa7, 0xae, 0xd3, 0x14, 0xae, 0xd2, 0x63, 0x7c, 0xb7, 0xf1, 0x32, 0xac, 0xa0, - 0xf6, 0x6f, 0x5b, 0x30, 0xcd, 0x7b, 0x7e, 0x9d, 0xec, 0xab, 0xb3, 0xe9, 0x1b, 0xd9, 0x77, 0x91, - 0xc8, 0xaf, 0x90, 0x93, 0xc8, 0x4f, 0xff, 0xb4, 0x62, 0xd7, 0x4f, 0xfb, 0xb2, 0x05, 0x62, 0x85, - 0x9c, 0x80, 0x10, 0xe2, 0xdb, 0x4d, 0x21, 0xc4, 0x5c, 0xfe, 0x26, 0xc8, 0x91, 0x3e, 0xfc, 0xa9, - 0x05, 0x53, 0x1c, 0x21, 0xd6, 0x96, 0x7f, 0x43, 0xe7, 0xa1, 0x9f, 0x74, 0xdf, 0xd7, 0xc9, 0xfe, - 0x86, 0x5f, 0x75, 0xa2, 0x9d, 0xec, 0x8f, 0x32, 0x26, 0x6b, 0xa0, 0xeb, 0x64, 0x35, 0xe4, 0x06, - 0x32, 0xf2, 0xdc, 0xf4, 0x88, 0x1f, 0x71, 0xd4, 0x3c, 0x37, 0xf6, 0xd7, 0x2d, 0x40, 0xbc, 0x19, - 0x83, 0x71, 0xa3, 0xec, 0x10, 0x2b, 0xd5, 0x2e, 0xba, 0xf8, 0x68, 0x52, 0x10, 0xac, 0x61, 0x1d, - 0xcb, 0xf0, 0x24, 0x4c, 0x1e, 0x8a, 0xbd, 0x4d, 0x1e, 0x8e, 0x30, 0xa2, 0xff, 0x76, 0x08, 0x92, - 0xbe, 0x55, 0xe8, 0x36, 0x8c, 0xd5, 0x9d, 0xb6, 0xb3, 0xe9, 0x36, 0xdd, 0xc8, 0x25, 0x61, 0x37, - 0x7b, 0xa8, 0x25, 0x0d, 0x4f, 0x28, 0xa9, 0xb5, 0x12, 0x6c, 0xd0, 0x41, 0xf3, 0x00, 0xed, 0xc0, - 0xdd, 0x73, 0x9b, 0x64, 0x9b, 0xc9, 0x4a, 0x58, 0x70, 0x06, 0x6e, 0x9c, 0x25, 0x4b, 0xb1, 0x86, - 0x91, 0xe1, 0xc8, 0x5e, 0x7c, 0xc8, 0x8e, 0xec, 0x70, 0x62, 0x8e, 0xec, 0x03, 0x47, 0x72, 0x64, - 0x1f, 0x39, 0xb2, 0x23, 0xfb, 0x60, 0x5f, 0x8e, 0xec, 0x18, 0xce, 0x48, 0xde, 0x93, 0xfe, 0x5f, - 0x71, 0x9b, 0x44, 0x3c, 0x38, 0x78, 0x44, 0x89, 0xb9, 0xfb, 0x07, 0xe5, 0x33, 0x38, 0x13, 0x03, - 0xe7, 0xd4, 0x44, 0x1f, 0x83, 0x59, 0xa7, 0xd9, 0xf4, 0xef, 0xaa, 0x49, 0x5d, 0x0e, 0xeb, 0x4e, - 0x93, 0x2b, 0x21, 0x86, 0x19, 0xd5, 0xc7, 0xee, 0x1f, 0x94, 0x67, 0x17, 0x72, 0x70, 0x70, 0x6e, - 0x6d, 0xf4, 0x61, 0x28, 0xb5, 0x03, 0xbf, 0xbe, 0xa6, 0x39, 0x80, 0x9e, 0xa7, 0x03, 0x58, 0x95, - 0x85, 0x87, 0x07, 0xe5, 0x71, 0xf5, 0x87, 0x5d, 0xf8, 0x71, 0x85, 0x0c, 0xcf, 0xf4, 0xd1, 0x63, - 0xf5, 0x4c, 0xdf, 0x85, 0x99, 0x1a, 0x09, 0x5c, 0xa7, 0xe9, 0xbe, 0x45, 0xf9, 0x65, 0x79, 0x3e, - 0x6d, 0x40, 0x29, 0x48, 0x9c, 0xc8, 0x7d, 0xc5, 0xdc, 0xd4, 0x12, 0x8e, 0xc8, 0x13, 0x38, 0x26, - 0x64, 0xff, 0x6f, 0x0b, 0x86, 0x85, 0x2f, 0xd5, 0x09, 0x70, 0x8d, 0x0b, 0x86, 0x26, 0xa1, 0x9c, - 0x3d, 0x60, 0xac, 0x33, 0xb9, 0x3a, 0x84, 0xd5, 0x84, 0x0e, 0xe1, 0xf1, 0x6e, 0x44, 0xba, 0x6b, - 0x0f, 0xfe, 0x7a, 0x91, 0x72, 0xef, 0x86, 0x57, 0xef, 0xc3, 0x1f, 0x82, 0x75, 0x18, 0x0e, 0x85, - 0x57, 0x69, 0x21, 0xdf, 0xa7, 0x21, 0x39, 0x89, 0xb1, 0x1d, 0x9b, 0xf0, 0x23, 0x95, 0x44, 0x32, - 0xdd, 0x55, 0x8b, 0x0f, 0xd1, 0x5d, 0xb5, 0x97, 0xdf, 0xf3, 0xc0, 0x71, 0xf8, 0x3d, 0xdb, 0x5f, - 0x65, 0x37, 0xa7, 0x5e, 0x7e, 0x02, 0x4c, 0xd5, 0x55, 0xf3, 0x8e, 0xb5, 0xbb, 0xac, 0x2c, 0xd1, - 0xa9, 0x1c, 0xe6, 0xea, 0x67, 0x2d, 0x38, 0x97, 0xf1, 0x55, 0x1a, 0xa7, 0xf5, 0x0c, 0x8c, 0x38, - 0x9d, 0x86, 0xab, 0xf6, 0xb2, 0xa6, 0x4f, 0x5c, 0x10, 0xe5, 0x58, 0x61, 0xa0, 0x25, 0x98, 0x26, - 0xf7, 0xda, 0x2e, 0x57, 0xa5, 0xea, 0xe6, 0xbf, 0x45, 0xee, 0x80, 0xb7, 0x9c, 0x04, 0xe2, 0x34, - 0xbe, 0x8a, 0x35, 0x53, 0xcc, 0x8d, 0x35, 0xf3, 0xf7, 0x2c, 0x18, 0x55, 0x7e, 0x95, 0x0f, 0x7d, - 0xb4, 0x3f, 0x6a, 0x8e, 0xf6, 0xa3, 0x5d, 0x46, 0x3b, 0x67, 0x98, 0x7f, 0xb3, 0xa0, 0xfa, 0x5b, - 0xf5, 0x83, 0xa8, 0x0f, 0x0e, 0xee, 0xc1, 0x5d, 0x17, 0xae, 0xc0, 0xa8, 0xd3, 0x6e, 0x4b, 0x80, - 0xb4, 0x41, 0x63, 0x11, 0x94, 0xe3, 0x62, 0xac, 0xe3, 0x28, 0x4f, 0x8a, 0x62, 0xae, 0x27, 0x45, - 0x03, 0x20, 0x72, 0x82, 0x6d, 0x12, 0xd1, 0x32, 0x61, 0x32, 0x9b, 0x7f, 0xde, 0x74, 0x22, 0xb7, - 0x39, 0xef, 0x7a, 0x51, 0x18, 0x05, 0xf3, 0xab, 0x5e, 0x74, 0x33, 0xe0, 0x4f, 0x48, 0x2d, 0x5a, - 0x93, 0xa2, 0x85, 0x35, 0xba, 0x32, 0x86, 0x00, 0x6b, 0x63, 0xd0, 0x34, 0x66, 0x58, 0x17, 0xe5, - 0x58, 0x61, 0xd8, 0x1f, 0x62, 0xb7, 0x0f, 0x1b, 0xd3, 0xa3, 0x45, 0x2a, 0xfa, 0x07, 0x63, 0x6a, - 0x36, 0x98, 0x26, 0xb3, 0xa2, 0xc7, 0x43, 0xea, 0x7e, 0xd8, 0xd3, 0x86, 0x75, 0xbf, 0xbe, 0x38, - 0x68, 0x12, 0xfa, 0x8e, 0x94, 0x81, 0xca, 0xb3, 0x3d, 0x6e, 0x8d, 0x23, 0x98, 0xa4, 0xb0, 0x74, - 0x2a, 0x2c, 0xd9, 0xc4, 0x6a, 0x55, 0xec, 0x0b, 0x2d, 0x9d, 0x8a, 0x00, 0xe0, 0x18, 0x87, 0x32, - 0x53, 0xea, 0x4f, 0x38, 0x8b, 0xe2, 0xb0, 0xa2, 0x0a, 0x3b, 0xc4, 0x1a, 0x06, 0xba, 0x2c, 0x04, - 0x0a, 0x5c, 0x2f, 0xf0, 0x68, 0x42, 0xa0, 0x20, 0x87, 0x4b, 0x93, 0x02, 0x5d, 0x81, 0x51, 0x95, - 0x41, 0xbb, 0xca, 0x13, 0x19, 0x89, 0x65, 0xb6, 0x1c, 0x17, 0x63, 0x1d, 0x07, 0x6d, 0xc0, 0x64, - 0xc8, 0xe5, 0x6c, 0x2a, 0xd6, 0x33, 0x97, 0x57, 0xbe, 0x5f, 0x5a, 0x01, 0xd5, 0x4c, 0xf0, 0x21, - 0x2b, 0xe2, 0xa7, 0x93, 0xf4, 0xf3, 0x4f, 0x92, 0x40, 0xaf, 0xc2, 0x44, 0xd3, 0x77, 0x1a, 0x8b, - 0x4e, 0xd3, 0xf1, 0xea, 0x6c, 0x7c, 0x46, 0xcc, 0x44, 0xac, 0x37, 0x0c, 0x28, 0x4e, 0x60, 0x53, - 0xe6, 0x4d, 0x2f, 0x11, 0xf1, 0xc9, 0x1d, 0x6f, 0x9b, 0x84, 0x22, 0x1f, 0x32, 0x63, 0xde, 0x6e, - 0xe4, 0xe0, 0xe0, 0xdc, 0xda, 0xe8, 0x25, 0x18, 0x93, 0x9f, 0xaf, 0x85, 0xc5, 0x88, 0x9d, 0x52, - 0x34, 0x18, 0x36, 0x30, 0xd1, 0x5d, 0x38, 0x2d, 0xff, 0x6f, 0x04, 0xce, 0xd6, 0x96, 0x5b, 0x17, - 0xbe, 0xe2, 0xdc, 0x7b, 0x75, 0x41, 0xba, 0x58, 0x2e, 0x67, 0x21, 0x1d, 0x1e, 0x94, 0x2f, 0x88, - 0x51, 0xcb, 0x84, 0xb3, 0x49, 0xcc, 0xa6, 0x8f, 0xd6, 0x60, 0x66, 0x87, 0x38, 0xcd, 0x68, 0x67, - 0x69, 0x87, 0xd4, 0x77, 0xe5, 0xa6, 0x63, 0xc1, 0x36, 0x34, 0x07, 0x8e, 0x6b, 0x69, 0x14, 0x9c, - 0x55, 0x0f, 0xbd, 0x01, 0xb3, 0xed, 0xce, 0x66, 0xd3, 0x0d, 0x77, 0xd6, 0xfd, 0x88, 0x99, 0x02, - 0xa9, 0x84, 0xdc, 0x22, 0x2a, 0x87, 0x0a, 0x67, 0x52, 0xcd, 0xc1, 0xc3, 0xb9, 0x14, 0xd0, 0x5b, - 0x70, 0x3a, 0xb1, 0x18, 0x44, 0x5c, 0x82, 0x89, 0xfc, 0x6c, 0x0f, 0xb5, 0xac, 0x0a, 0x22, 0xc4, - 0x47, 0x16, 0x08, 0x67, 0x37, 0x81, 0x5e, 0x06, 0x70, 0xdb, 0x2b, 0x4e, 0xcb, 0x6d, 0xd2, 0xe7, - 0xe2, 0x0c, 0x5b, 0x27, 0xf4, 0xe9, 0x00, 0xab, 0x55, 0x59, 0x4a, 0xcf, 0x67, 0xf1, 0x6f, 0x1f, - 0x6b, 0xd8, 0xa8, 0x0a, 0x13, 0xe2, 0xdf, 0xbe, 0x98, 0xd6, 0x69, 0x15, 0x02, 0x60, 0x42, 0xd6, - 0x50, 0x73, 0x89, 0xcc, 0x12, 0x36, 0x7b, 0x89, 0xfa, 0x68, 0x1b, 0xce, 0xc9, 0xec, 0x5d, 0xfa, - 0x3a, 0x95, 0xf3, 0x10, 0xb2, 0x34, 0x0b, 0x23, 0xdc, 0x3f, 0x64, 0xa1, 0x1b, 0x22, 0xee, 0x4e, - 0x87, 0xde, 0xef, 0xfa, 0x72, 0xe7, 0x1e, 0xb4, 0xa7, 0xb9, 0x79, 0x12, 0xbd, 0xdf, 0x6f, 0x24, - 0x81, 0x38, 0x8d, 0x8f, 0x42, 0x38, 0xed, 0x7a, 0x59, 0xab, 0xfb, 0x0c, 0x23, 0xf4, 0x11, 0xee, - 0x3c, 0xdc, 0x7d, 0x65, 0x67, 0xc2, 0xf9, 0xca, 0xce, 0xa4, 0xfd, 0xf6, 0xac, 0xf0, 0x7e, 0xcb, - 0xa2, 0xb5, 0x35, 0x4e, 0x1d, 0x7d, 0x1a, 0xc6, 0xf4, 0x0f, 0x13, 0x5c, 0xc7, 0xc5, 0x6c, 0x46, - 0x56, 0x3b, 0x1f, 0x38, 0x9f, 0xaf, 0xce, 0x00, 0x1d, 0x86, 0x0d, 0x8a, 0xa8, 0x9e, 0xe1, 0x66, - 0x7f, 0xb9, 0x3f, 0xae, 0xa6, 0x7f, 0x23, 0x34, 0x02, 0xd9, 0xcb, 0x1e, 0xdd, 0x80, 0x91, 0x7a, - 0xd3, 0x25, 0x5e, 0xb4, 0x5a, 0xed, 0x16, 0x4b, 0x6f, 0x49, 0xe0, 0x88, 0x7d, 0x24, 0xb2, 0x26, - 0xf0, 0x32, 0xac, 0x28, 0xd8, 0xbf, 0x52, 0x80, 0x72, 0x8f, 0x14, 0x1c, 0x09, 0x95, 0x94, 0xd5, - 0x97, 0x4a, 0x6a, 0x41, 0x66, 0x9d, 0x5f, 0x4f, 0x48, 0xbb, 0x12, 0x19, 0xe5, 0x63, 0x99, 0x57, - 0x12, 0xbf, 0x6f, 0x17, 0x01, 0x5d, 0xab, 0x35, 0xd0, 0xd3, 0xc9, 0xc5, 0xd0, 0x66, 0x0f, 0xf6, - 0xff, 0x04, 0xce, 0xd5, 0x4c, 0xda, 0x5f, 0x2d, 0xc0, 0x69, 0x35, 0x84, 0xdf, 0xba, 0x03, 0x77, - 0x2b, 0x3d, 0x70, 0xc7, 0xa0, 0xd7, 0xb5, 0x6f, 0xc2, 0x10, 0x0f, 0x0e, 0xd8, 0x07, 0xeb, 0xfd, - 0x84, 0x19, 0x7c, 0x57, 0x71, 0x7b, 0x46, 0x00, 0xde, 0xef, 0xb7, 0x60, 0x32, 0xe1, 0x6b, 0x86, - 0xb0, 0xe6, 0x90, 0xfc, 0x20, 0xec, 0x71, 0x16, 0xe3, 0x7d, 0x01, 0x06, 0x76, 0xfc, 0x30, 0x4a, - 0x1a, 0x7d, 0x5c, 0xf3, 0xc3, 0x08, 0x33, 0x88, 0xfd, 0x3b, 0x16, 0x0c, 0x6e, 0x38, 0xae, 0x17, - 0x49, 0x05, 0x81, 0x95, 0xa3, 0x20, 0xe8, 0xe7, 0xbb, 0xd0, 0x8b, 0x30, 0x44, 0xb6, 0xb6, 0x48, - 0x3d, 0x12, 0xb3, 0x2a, 0xa3, 0x39, 0x0c, 0x2d, 0xb3, 0x52, 0xca, 0x0b, 0xb2, 0xc6, 0xf8, 0x5f, - 0x2c, 0x90, 0xd1, 0x1d, 0x28, 0x45, 0x6e, 0x8b, 0x2c, 0x34, 0x1a, 0x42, 0x6d, 0xfe, 0x00, 0x11, - 0x29, 0x36, 0x24, 0x01, 0x1c, 0xd3, 0xb2, 0xbf, 0x50, 0x00, 0x88, 0xa3, 0x2a, 0xf5, 0xfa, 0xc4, - 0xc5, 0x94, 0x42, 0xf5, 0x62, 0x86, 0x42, 0x15, 0xc5, 0x04, 0x33, 0xb4, 0xa9, 0x6a, 0x98, 0x8a, - 0x7d, 0x0d, 0xd3, 0xc0, 0x51, 0x86, 0x69, 0x09, 0xa6, 0xe3, 0xa8, 0x50, 0x66, 0x50, 0x3c, 0x76, - 0x7d, 0x6e, 0x24, 0x81, 0x38, 0x8d, 0x6f, 0x13, 0xb8, 0xa0, 0x82, 0xe3, 0x88, 0x1b, 0x8d, 0x59, - 0x65, 0xeb, 0x0a, 0xea, 0x1e, 0xe3, 0x14, 0x6b, 0x8c, 0x0b, 0xb9, 0x1a, 0xe3, 0x9f, 0xb0, 0xe0, - 0x54, 0xb2, 0x1d, 0xe6, 0xc2, 0xfc, 0x79, 0x0b, 0x4e, 0x33, 0xbd, 0x39, 0x6b, 0x35, 0xad, 0xa5, - 0x7f, 0xa1, 0x6b, 0xc0, 0x9f, 0x9c, 0x1e, 0xc7, 0x61, 0x43, 0xd6, 0xb2, 0x48, 0xe3, 0xec, 0x16, - 0xed, 0x5f, 0x1a, 0x80, 0xd9, 0xbc, 0x48, 0x41, 0xcc, 0x69, 0xc3, 0xb9, 0x57, 0xdb, 0x25, 0x77, - 0x85, 0x69, 0x7c, 0xec, 0xb4, 0xc1, 0x8b, 0xb1, 0x84, 0x27, 0xb3, 0x2a, 0x14, 0xfa, 0xcc, 0xaa, - 0xb0, 0x03, 0xd3, 0x77, 0x77, 0x88, 0x77, 0xcb, 0x0b, 0x9d, 0xc8, 0x0d, 0xb7, 0x5c, 0xa6, 0x63, - 0xe6, 0xeb, 0x46, 0xa6, 0x62, 0x9d, 0xbe, 0x93, 0x44, 0x38, 0x3c, 0x28, 0x9f, 0x33, 0x0a, 0xe2, - 0x2e, 0xf3, 0x83, 0x04, 0xa7, 0x89, 0xa6, 0x93, 0x52, 0x0c, 0x3c, 0xe4, 0xa4, 0x14, 0x2d, 0x57, - 0x58, 0xa6, 0x48, 0x8b, 0x7c, 0xf6, 0x7a, 0x5c, 0x53, 0xa5, 0x58, 0xc3, 0x40, 0x9f, 0x04, 0xa4, - 0x27, 0xdd, 0x31, 0x02, 0x35, 0x3e, 0x7b, 0xff, 0xa0, 0x8c, 0xd6, 0x53, 0xd0, 0xc3, 0x83, 0xf2, - 0x0c, 0x2d, 0x5d, 0xf5, 0xe8, 0x2b, 0x34, 0x8e, 0x6e, 0x95, 0x41, 0x08, 0xdd, 0x81, 0x29, 0x5a, - 0xca, 0x76, 0x94, 0x8c, 0x02, 0xc9, 0x5f, 0x8e, 0x4f, 0xdf, 0x3f, 0x28, 0x4f, 0xad, 0x27, 0x60, - 0x79, 0xa4, 0x53, 0x44, 0xec, 0xcf, 0x5b, 0x70, 0x36, 0x37, 0xff, 0x32, 0xba, 0x04, 0x23, 0x4e, - 0xdb, 0xe5, 0xea, 0x08, 0x71, 0x5d, 0x30, 0xb1, 0x57, 0x75, 0x95, 0x2b, 0x23, 0x14, 0x94, 0x9e, - 0xd2, 0xbb, 0xae, 0xd7, 0x48, 0x9e, 0xd2, 0xd7, 0x5d, 0xaf, 0x81, 0x19, 0x44, 0x5d, 0x3b, 0xc5, - 0xbc, 0x6b, 0xc7, 0xfe, 0x3e, 0x0b, 0x84, 0x63, 0x6d, 0x1f, 0x77, 0xd4, 0x27, 0x60, 0x6c, 0x2f, - 0x9d, 0xa0, 0xeb, 0x42, 0xbe, 0xa7, 0xb1, 0x48, 0xcb, 0xa5, 0x18, 0x4f, 0x23, 0x19, 0x97, 0x41, - 0xcb, 0x6e, 0x80, 0x80, 0x56, 0x08, 0x13, 0xb6, 0xf7, 0xee, 0xcd, 0x73, 0x00, 0x0d, 0x86, 0xcb, - 0xb2, 0x76, 0x16, 0x4c, 0x0e, 0xa4, 0xa2, 0x20, 0x58, 0xc3, 0xb2, 0xff, 0x7d, 0x01, 0x46, 0x65, - 0x42, 0xa8, 0x8e, 0xd7, 0x8f, 0x48, 0xec, 0x48, 0x19, 0x62, 0xd1, 0x65, 0x28, 0x31, 0x99, 0x6d, - 0x35, 0x96, 0x24, 0x2a, 0x89, 0xc9, 0x9a, 0x04, 0xe0, 0x18, 0x87, 0x9e, 0x16, 0x61, 0x67, 0x93, - 0xa1, 0x27, 0xdc, 0x40, 0x6b, 0xbc, 0x18, 0x4b, 0x38, 0xfa, 0x18, 0x4c, 0xf1, 0x7a, 0x81, 0xdf, - 0x76, 0xb6, 0xb9, 0x9e, 0x67, 0x50, 0xc5, 0xd6, 0x98, 0x5a, 0x4b, 0xc0, 0x0e, 0x0f, 0xca, 0xa7, - 0x92, 0x65, 0x4c, 0x81, 0x99, 0xa2, 0xc2, 0xcc, 0xb9, 0x78, 0x23, 0xf4, 0x94, 0x4b, 0x59, 0x81, - 0xc5, 0x20, 0xac, 0xe3, 0xd9, 0x9f, 0x06, 0x94, 0x4e, 0x8d, 0x85, 0x5e, 0xe3, 0x36, 0xbc, 0x6e, - 0x40, 0x1a, 0xdd, 0x14, 0x9a, 0x7a, 0x04, 0x09, 0xe9, 0xc1, 0xc5, 0x6b, 0x61, 0x55, 0xdf, 0xfe, - 0x4b, 0x45, 0x98, 0x4a, 0xfa, 0xac, 0xa3, 0x6b, 0x30, 0xc4, 0x59, 0x2c, 0x41, 0xbe, 0x8b, 0xbd, - 0x8c, 0xe6, 0xe9, 0xce, 0x2e, 0x1b, 0xc1, 0xa5, 0x89, 0xfa, 0xe8, 0x0d, 0x18, 0x6d, 0xf8, 0x77, - 0xbd, 0xbb, 0x4e, 0xd0, 0x58, 0xa8, 0xae, 0x8a, 0xe5, 0x9c, 0xf9, 0x80, 0xaf, 0xc4, 0x68, 0xba, - 0xf7, 0x3c, 0xd3, 0x0d, 0xc7, 0x20, 0xac, 0x93, 0x43, 0x1b, 0x2c, 0x9e, 0xfe, 0x96, 0xbb, 0xbd, - 0xe6, 0xb4, 0xbb, 0x39, 0x74, 0x2c, 0x49, 0x24, 0x8d, 0xf2, 0xb8, 0x08, 0xba, 0xcf, 0x01, 0x38, - 0x26, 0x84, 0x3e, 0x0b, 0x33, 0x61, 0x8e, 0x5a, 0x21, 0x2f, 0x53, 0x62, 0x37, 0x49, 0xfb, 0xe2, - 0x23, 0xf7, 0x0f, 0xca, 0x33, 0x59, 0x0a, 0x88, 0xac, 0x66, 0xec, 0x2f, 0x9e, 0x02, 0x63, 0x13, - 0x1b, 0x89, 0x73, 0xad, 0x63, 0x4a, 0x9c, 0x8b, 0x61, 0x84, 0xb4, 0xda, 0xd1, 0x7e, 0xc5, 0x0d, - 0xc4, 0x9c, 0x64, 0xd2, 0x5c, 0x16, 0x38, 0x69, 0x9a, 0x12, 0x82, 0x15, 0x9d, 0xec, 0xec, 0xc6, - 0xc5, 0x6f, 0x60, 0x76, 0xe3, 0x81, 0x13, 0xcc, 0x6e, 0xbc, 0x0e, 0xc3, 0xdb, 0x6e, 0x84, 0x49, - 0xdb, 0x17, 0x8f, 0x9b, 0xcc, 0x75, 0x78, 0x95, 0xa3, 0xa4, 0xf3, 0x68, 0x0a, 0x00, 0x96, 0x44, - 0xd0, 0x6b, 0x6a, 0x07, 0x0e, 0xe5, 0x0b, 0x20, 0xd2, 0x86, 0x1d, 0x99, 0x7b, 0x50, 0xe4, 0x30, - 0x1e, 0x7e, 0xd0, 0x1c, 0xc6, 0x2b, 0x32, 0xf3, 0xf0, 0x48, 0xbe, 0xf7, 0x15, 0x4b, 0x2c, 0xdc, - 0x23, 0xdf, 0xf0, 0x6d, 0x3d, 0x5b, 0x73, 0x29, 0xff, 0x24, 0x50, 0x89, 0x98, 0xfb, 0xcc, 0xd1, - 0xfc, 0x7d, 0x16, 0x9c, 0x6e, 0x67, 0x25, 0x2e, 0x17, 0x36, 0x10, 0x2f, 0xf6, 0x9d, 0x1b, 0xdd, - 0x68, 0x90, 0xc9, 0x0e, 0xb3, 0xb3, 0xdf, 0x67, 0x37, 0x47, 0x07, 0x3a, 0xd8, 0x6c, 0x08, 0x5d, - 0xfc, 0x13, 0x39, 0xc9, 0x9e, 0xbb, 0xa4, 0x78, 0xde, 0xc8, 0x48, 0x2c, 0xfc, 0xde, 0xbc, 0xc4, - 0xc2, 0x7d, 0xa7, 0x13, 0x7e, 0x4d, 0xa5, 0x79, 0x1e, 0xcf, 0x5f, 0x4a, 0x3c, 0x89, 0x73, 0xcf, - 0xe4, 0xce, 0xaf, 0xa9, 0xe4, 0xce, 0x5d, 0xe2, 0x1e, 0xf3, 0xd4, 0xcd, 0x3d, 0x53, 0x3a, 0x6b, - 0x69, 0x99, 0x27, 0x8f, 0x27, 0x2d, 0xb3, 0x71, 0xd5, 0xf0, 0xcc, 0xc0, 0x4f, 0xf7, 0xb8, 0x6a, - 0x0c, 0xba, 0xdd, 0x2f, 0x1b, 0x9e, 0x82, 0x7a, 0xfa, 0x81, 0x52, 0x50, 0xdf, 0xd6, 0x53, 0x3a, - 0xa3, 0x1e, 0x39, 0x8b, 0x29, 0x52, 0x9f, 0x89, 0x9c, 0x6f, 0xeb, 0x17, 0xe0, 0x4c, 0x3e, 0x5d, - 0x75, 0xcf, 0xa5, 0xe9, 0x66, 0x5e, 0x81, 0xa9, 0x04, 0xd1, 0xa7, 0x4e, 0x26, 0x41, 0xf4, 0xe9, - 0x63, 0x4f, 0x10, 0x7d, 0xe6, 0x04, 0x12, 0x44, 0x3f, 0x72, 0x82, 0x09, 0xa2, 0x6f, 0x33, 0xc3, - 0x21, 0x1e, 0x9e, 0x48, 0xc4, 0x69, 0x7e, 0x2a, 0x27, 0xba, 0x57, 0x3a, 0x86, 0x11, 0xff, 0x38, - 0x05, 0xc2, 0x31, 0xa9, 0x8c, 0xc4, 0xd3, 0xb3, 0x0f, 0x21, 0xf1, 0xf4, 0x7a, 0x9c, 0x78, 0xfa, - 0x6c, 0xfe, 0x54, 0x67, 0xb8, 0x9a, 0xe4, 0xa4, 0x9b, 0xbe, 0xad, 0xa7, 0x89, 0x7e, 0xb4, 0x8b, - 0x76, 0x28, 0x4b, 0xc0, 0xda, 0x25, 0x39, 0xf4, 0xab, 0x3c, 0x39, 0xf4, 0x63, 0xf9, 0x27, 0x79, - 0xf2, 0xba, 0x33, 0x52, 0x42, 0xd3, 0x7e, 0xa9, 0xf0, 0x9e, 0x2c, 0x22, 0x75, 0x4e, 0xbf, 0x54, - 0x7c, 0xd0, 0x74, 0xbf, 0x14, 0x08, 0xc7, 0xa4, 0xec, 0x1f, 0x28, 0xc0, 0xf9, 0xee, 0xfb, 0x2d, - 0x96, 0x1a, 0x57, 0x63, 0x65, 0x79, 0x42, 0x6a, 0xcc, 0xdf, 0x6c, 0x31, 0x56, 0xdf, 0xd1, 0x0a, - 0xaf, 0xc2, 0xb4, 0xf2, 0x51, 0xa1, 0xef, 0xec, 0xf5, 0xf8, 0xe5, 0xab, 0xfc, 0xfa, 0x6b, 0x49, - 0x04, 0x9c, 0xae, 0x83, 0x16, 0x60, 0xd2, 0x28, 0x5c, 0xad, 0x88, 0xb7, 0x99, 0x12, 0x53, 0xd7, - 0x4c, 0x30, 0x4e, 0xe2, 0xdb, 0x5f, 0xb2, 0xe0, 0x91, 0x9c, 0xcc, 0x8a, 0x7d, 0x07, 0xe3, 0xdb, - 0x82, 0xc9, 0xb6, 0x59, 0xb5, 0x47, 0xfc, 0x50, 0x23, 0x7f, 0xa3, 0xea, 0x6b, 0x02, 0x80, 0x93, - 0x44, 0xed, 0x9f, 0x2a, 0xc0, 0xb9, 0xae, 0x46, 0x97, 0x08, 0xc3, 0x99, 0xed, 0x56, 0xe8, 0x2c, - 0x05, 0xa4, 0x41, 0xbc, 0xc8, 0x75, 0x9a, 0xb5, 0x36, 0xa9, 0x6b, 0x72, 0x7f, 0x66, 0xbd, 0x78, - 0x75, 0xad, 0xb6, 0x90, 0xc6, 0xc0, 0x39, 0x35, 0xd1, 0x0a, 0xa0, 0x34, 0x44, 0xcc, 0x30, 0x8b, - 0x6d, 0x9e, 0xa6, 0x87, 0x33, 0x6a, 0xa0, 0x0f, 0xc1, 0xb8, 0x32, 0xe6, 0xd4, 0x66, 0x9c, 0x1d, - 0xec, 0x58, 0x07, 0x60, 0x13, 0x0f, 0x5d, 0xe1, 0xc1, 0xf1, 0x45, 0x1a, 0x05, 0xa1, 0x24, 0x98, - 0x94, 0x91, 0xef, 0x45, 0x31, 0xd6, 0x71, 0x16, 0x5f, 0xfa, 0xd5, 0xdf, 0x3b, 0xff, 0x9e, 0xdf, - 0xf8, 0xbd, 0xf3, 0xef, 0xf9, 0xed, 0xdf, 0x3b, 0xff, 0x9e, 0xef, 0xba, 0x7f, 0xde, 0xfa, 0xd5, - 0xfb, 0xe7, 0xad, 0xdf, 0xb8, 0x7f, 0xde, 0xfa, 0xed, 0xfb, 0xe7, 0xad, 0xdf, 0xbd, 0x7f, 0xde, - 0xfa, 0xc2, 0xef, 0x9f, 0x7f, 0xcf, 0x27, 0x50, 0x1c, 0xde, 0xf2, 0x32, 0x9d, 0x9d, 0xcb, 0x7b, - 0x57, 0xfe, 0x7f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x5d, 0xff, 0x28, 0xc3, 0x2d, 0x09, 0x01, 0x00, + // 14376 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xbd, 0x6b, 0x70, 0x24, 0xd7, + 0x79, 0x18, 0xaa, 0x9e, 0xc1, 0x6b, 0x3e, 0xbc, 0x0f, 0x76, 0x97, 0x58, 0x90, 0xbb, 0xb3, 0x6c, + 0x52, 0xcb, 0xa5, 0x48, 0x62, 0xb5, 0x7c, 0x48, 0x34, 0x29, 0xd1, 0x02, 0x30, 0xc0, 0x2e, 0xb8, + 0x0b, 0xec, 0xf0, 0x0c, 0x76, 0x57, 0x92, 0x29, 0x95, 0x1a, 0x33, 0x07, 0x40, 0x0b, 0x33, 0xdd, + 0xc3, 0xee, 0x1e, 0xec, 0x82, 0x57, 0xae, 0xeb, 0x2b, 0x3f, 0x65, 0xfb, 0xde, 0x52, 0xdd, 0x72, + 0x1e, 0x25, 0xbb, 0x5c, 0x29, 0xc7, 0x89, 0xad, 0x28, 0x49, 0xc5, 0x91, 0x63, 0x3b, 0x96, 0x13, + 0x3b, 0x6f, 0x27, 0x3f, 0x1c, 0xc7, 0x55, 0xb1, 0x5c, 0xe5, 0x0a, 0x62, 0xaf, 0x53, 0xe5, 0x52, + 0x55, 0x62, 0x3b, 0x71, 0x52, 0x95, 0x20, 0x4e, 0x9c, 0x3a, 0xcf, 0x3e, 0xa7, 0x1f, 0x33, 0x83, + 0x25, 0x16, 0xa2, 0x54, 0xfc, 0x37, 0x73, 0xbe, 0xef, 0x7c, 0xe7, 0xf4, 0x79, 0x7e, 0xe7, 0x7b, + 0xc2, 0xab, 0xbb, 0x2f, 0x87, 0xf3, 0xae, 0x7f, 0x79, 0xb7, 0xb3, 0x49, 0x02, 0x8f, 0x44, 0x24, + 0xbc, 0xbc, 0x47, 0xbc, 0x86, 0x1f, 0x5c, 0x16, 0x00, 0xa7, 0xed, 0x5e, 0xae, 0xfb, 0x01, 0xb9, + 0xbc, 0x77, 0xe5, 0xf2, 0x36, 0xf1, 0x48, 0xe0, 0x44, 0xa4, 0x31, 0xdf, 0x0e, 0xfc, 0xc8, 0x47, + 0x88, 0xe3, 0xcc, 0x3b, 0x6d, 0x77, 0x9e, 0xe2, 0xcc, 0xef, 0x5d, 0x99, 0x7b, 0x6e, 0xdb, 0x8d, + 0x76, 0x3a, 0x9b, 0xf3, 0x75, 0xbf, 0x75, 0x79, 0xdb, 0xdf, 0xf6, 0x2f, 0x33, 0xd4, 0xcd, 0xce, + 0x16, 0xfb, 0xc7, 0xfe, 0xb0, 0x5f, 0x9c, 0xc4, 0xdc, 0x8b, 0x71, 0x33, 0x2d, 0xa7, 0xbe, 0xe3, + 0x7a, 0x24, 0xd8, 0xbf, 0xdc, 0xde, 0xdd, 0x66, 0xed, 0x06, 0x24, 0xf4, 0x3b, 0x41, 0x9d, 0x24, + 0x1b, 0xee, 0x5a, 0x2b, 0xbc, 0xdc, 0x22, 0x91, 0x93, 0xd1, 0xdd, 0xb9, 0xcb, 0x79, 0xb5, 0x82, + 0x8e, 0x17, 0xb9, 0xad, 0x74, 0x33, 0x1f, 0xea, 0x55, 0x21, 0xac, 0xef, 0x90, 0x96, 0x93, 0xaa, + 0xf7, 0x42, 0x5e, 0xbd, 0x4e, 0xe4, 0x36, 0x2f, 0xbb, 0x5e, 0x14, 0x46, 0x41, 0xb2, 0x92, 0xfd, + 0x75, 0x0b, 0x2e, 0x2c, 0xdc, 0xa9, 0x2d, 0x37, 0x9d, 0x30, 0x72, 0xeb, 0x8b, 0x4d, 0xbf, 0xbe, + 0x5b, 0x8b, 0xfc, 0x80, 0xdc, 0xf6, 0x9b, 0x9d, 0x16, 0xa9, 0xb1, 0x81, 0x40, 0xcf, 0xc2, 0xc8, + 0x1e, 0xfb, 0xbf, 0x5a, 0x99, 0xb5, 0x2e, 0x58, 0x97, 0x4a, 0x8b, 0x53, 0xbf, 0x7e, 0x50, 0x7e, + 0xdf, 0xfd, 0x83, 0xf2, 0xc8, 0x6d, 0x51, 0x8e, 0x15, 0x06, 0xba, 0x08, 0x43, 0x5b, 0xe1, 0xc6, + 0x7e, 0x9b, 0xcc, 0x16, 0x18, 0xee, 0x84, 0xc0, 0x1d, 0x5a, 0xa9, 0xd1, 0x52, 0x2c, 0xa0, 0xe8, + 0x32, 0x94, 0xda, 0x4e, 0x10, 0xb9, 0x91, 0xeb, 0x7b, 0xb3, 0xc5, 0x0b, 0xd6, 0xa5, 0xc1, 0xc5, + 0x69, 0x81, 0x5a, 0xaa, 0x4a, 0x00, 0x8e, 0x71, 0x68, 0x37, 0x02, 0xe2, 0x34, 0x6e, 0x7a, 0xcd, + 0xfd, 0xd9, 0x81, 0x0b, 0xd6, 0xa5, 0x91, 0xb8, 0x1b, 0x58, 0x94, 0x63, 0x85, 0x61, 0x7f, 0xa9, + 0x00, 0x23, 0x0b, 0x5b, 0x5b, 0xae, 0xe7, 0x46, 0xfb, 0xe8, 0x36, 0x8c, 0x79, 0x7e, 0x83, 0xc8, + 0xff, 0xec, 0x2b, 0x46, 0x9f, 0xbf, 0x30, 0x9f, 0x5e, 0x4a, 0xf3, 0xeb, 0x1a, 0xde, 0xe2, 0xd4, + 0xfd, 0x83, 0xf2, 0x98, 0x5e, 0x82, 0x0d, 0x3a, 0x08, 0xc3, 0x68, 0xdb, 0x6f, 0x28, 0xb2, 0x05, + 0x46, 0xb6, 0x9c, 0x45, 0xb6, 0x1a, 0xa3, 0x2d, 0x4e, 0xde, 0x3f, 0x28, 0x8f, 0x6a, 0x05, 0x58, + 0x27, 0x82, 0x36, 0x61, 0x92, 0xfe, 0xf5, 0x22, 0x57, 0xd1, 0x2d, 0x32, 0xba, 0x4f, 0xe4, 0xd1, + 0xd5, 0x50, 0x17, 0x67, 0xee, 0x1f, 0x94, 0x27, 0x13, 0x85, 0x38, 0x49, 0xd0, 0x7e, 0x1b, 0x26, + 0x16, 0xa2, 0xc8, 0xa9, 0xef, 0x90, 0x06, 0x9f, 0x41, 0xf4, 0x22, 0x0c, 0x78, 0x4e, 0x8b, 0x88, + 0xf9, 0xbd, 0x20, 0x06, 0x76, 0x60, 0xdd, 0x69, 0x91, 0xc3, 0x83, 0xf2, 0xd4, 0x2d, 0xcf, 0x7d, + 0xab, 0x23, 0x56, 0x05, 0x2d, 0xc3, 0x0c, 0x1b, 0x3d, 0x0f, 0xd0, 0x20, 0x7b, 0x6e, 0x9d, 0x54, + 0x9d, 0x68, 0x47, 0xcc, 0x37, 0x12, 0x75, 0xa1, 0xa2, 0x20, 0x58, 0xc3, 0xb2, 0xef, 0x41, 0x69, + 0x61, 0xcf, 0x77, 0x1b, 0x55, 0xbf, 0x11, 0xa2, 0x5d, 0x98, 0x6c, 0x07, 0x64, 0x8b, 0x04, 0xaa, + 0x68, 0xd6, 0xba, 0x50, 0xbc, 0x34, 0xfa, 0xfc, 0xa5, 0xcc, 0x8f, 0x35, 0x51, 0x97, 0xbd, 0x28, + 0xd8, 0x5f, 0x7c, 0x44, 0xb4, 0x37, 0x99, 0x80, 0xe2, 0x24, 0x65, 0xfb, 0x9f, 0x16, 0xe0, 0xf4, + 0xc2, 0xdb, 0x9d, 0x80, 0x54, 0xdc, 0x70, 0x37, 0xb9, 0xc2, 0x1b, 0x6e, 0xb8, 0xbb, 0x1e, 0x8f, + 0x80, 0x5a, 0x5a, 0x15, 0x51, 0x8e, 0x15, 0x06, 0x7a, 0x0e, 0x86, 0xe9, 0xef, 0x5b, 0x78, 0x55, + 0x7c, 0xf2, 0x8c, 0x40, 0x1e, 0xad, 0x38, 0x91, 0x53, 0xe1, 0x20, 0x2c, 0x71, 0xd0, 0x1a, 0x8c, + 0xd6, 0xd9, 0x86, 0xdc, 0x5e, 0xf3, 0x1b, 0x84, 0x4d, 0x66, 0x69, 0xf1, 0x19, 0x8a, 0xbe, 0x14, + 0x17, 0x1f, 0x1e, 0x94, 0x67, 0x79, 0xdf, 0x04, 0x09, 0x0d, 0x86, 0xf5, 0xfa, 0xc8, 0x56, 0xfb, + 0x6b, 0x80, 0x51, 0x82, 0x8c, 0xbd, 0x75, 0x49, 0xdb, 0x2a, 0x83, 0x6c, 0xab, 0x8c, 0x65, 0x6f, + 0x13, 0x74, 0x05, 0x06, 0x76, 0x5d, 0xaf, 0x31, 0x3b, 0xc4, 0x68, 0x9d, 0xa3, 0x73, 0x7e, 0xdd, + 0xf5, 0x1a, 0x87, 0x07, 0xe5, 0x69, 0xa3, 0x3b, 0xb4, 0x10, 0x33, 0x54, 0xfb, 0x4f, 0x2d, 0x28, + 0x33, 0xd8, 0x8a, 0xdb, 0x24, 0x55, 0x12, 0x84, 0x6e, 0x18, 0x11, 0x2f, 0x32, 0x06, 0xf4, 0x79, + 0x80, 0x90, 0xd4, 0x03, 0x12, 0x69, 0x43, 0xaa, 0x16, 0x46, 0x4d, 0x41, 0xb0, 0x86, 0x45, 0x0f, + 0x84, 0x70, 0xc7, 0x09, 0xd8, 0xfa, 0x12, 0x03, 0xab, 0x0e, 0x84, 0x9a, 0x04, 0xe0, 0x18, 0xc7, + 0x38, 0x10, 0x8a, 0xbd, 0x0e, 0x04, 0xf4, 0x51, 0x98, 0x8c, 0x1b, 0x0b, 0xdb, 0x4e, 0x5d, 0x0e, + 0x20, 0xdb, 0x32, 0x35, 0x13, 0x84, 0x93, 0xb8, 0xf6, 0xdf, 0xb0, 0xc4, 0xe2, 0xa1, 0x5f, 0xfd, + 0x2e, 0xff, 0x56, 0xfb, 0x97, 0x2c, 0x18, 0x5e, 0x74, 0xbd, 0x86, 0xeb, 0x6d, 0xa3, 0xcf, 0xc0, + 0x08, 0xbd, 0x9b, 0x1a, 0x4e, 0xe4, 0x88, 0x73, 0xef, 0x83, 0xda, 0xde, 0x52, 0x57, 0xc5, 0x7c, + 0x7b, 0x77, 0x9b, 0x16, 0x84, 0xf3, 0x14, 0x9b, 0xee, 0xb6, 0x9b, 0x9b, 0x9f, 0x25, 0xf5, 0x68, + 0x8d, 0x44, 0x4e, 0xfc, 0x39, 0x71, 0x19, 0x56, 0x54, 0xd1, 0x75, 0x18, 0x8a, 0x9c, 0x60, 0x9b, + 0x44, 0xe2, 0x00, 0xcc, 0x3c, 0xa8, 0x78, 0x4d, 0x4c, 0x77, 0x24, 0xf1, 0xea, 0x24, 0xbe, 0x16, + 0x36, 0x58, 0x55, 0x2c, 0x48, 0xd8, 0xff, 0x6b, 0x18, 0xce, 0x2e, 0xd5, 0x56, 0x73, 0xd6, 0xd5, + 0x45, 0x18, 0x6a, 0x04, 0xee, 0x1e, 0x09, 0xc4, 0x38, 0x2b, 0x2a, 0x15, 0x56, 0x8a, 0x05, 0x14, + 0xbd, 0x0c, 0x63, 0xfc, 0x42, 0xba, 0xe6, 0x78, 0x8d, 0xa6, 0x1c, 0xe2, 0x53, 0x02, 0x7b, 0xec, + 0xb6, 0x06, 0xc3, 0x06, 0xe6, 0x11, 0x17, 0xd5, 0xc5, 0xc4, 0x66, 0xcc, 0xbb, 0xec, 0xbe, 0x60, + 0xc1, 0x14, 0x6f, 0x66, 0x21, 0x8a, 0x02, 0x77, 0xb3, 0x13, 0x91, 0x70, 0x76, 0x90, 0x9d, 0x74, + 0x4b, 0x59, 0xa3, 0x95, 0x3b, 0x02, 0xf3, 0xb7, 0x13, 0x54, 0xf8, 0x21, 0x38, 0x2b, 0xda, 0x9d, + 0x4a, 0x82, 0x71, 0xaa, 0x59, 0xf4, 0xbd, 0x16, 0xcc, 0xd5, 0x7d, 0x2f, 0x0a, 0xfc, 0x66, 0x93, + 0x04, 0xd5, 0xce, 0x66, 0xd3, 0x0d, 0x77, 0xf8, 0x3a, 0xc5, 0x64, 0x8b, 0x9d, 0x04, 0x39, 0x73, + 0xa8, 0x90, 0xc4, 0x1c, 0x9e, 0xbf, 0x7f, 0x50, 0x9e, 0x5b, 0xca, 0x25, 0x85, 0xbb, 0x34, 0x83, + 0x76, 0x01, 0xd1, 0xab, 0xb4, 0x16, 0x39, 0xdb, 0x24, 0x6e, 0x7c, 0xb8, 0xff, 0xc6, 0xcf, 0xdc, + 0x3f, 0x28, 0xa3, 0xf5, 0x14, 0x09, 0x9c, 0x41, 0x16, 0xbd, 0x05, 0xa7, 0x68, 0x69, 0xea, 0x5b, + 0x47, 0xfa, 0x6f, 0x6e, 0xf6, 0xfe, 0x41, 0xf9, 0xd4, 0x7a, 0x06, 0x11, 0x9c, 0x49, 0x1a, 0x7d, + 0x8f, 0x05, 0x67, 0xe3, 0xcf, 0x5f, 0xbe, 0xd7, 0x76, 0xbc, 0x46, 0xdc, 0x70, 0xa9, 0xff, 0x86, + 0xe9, 0x99, 0x7c, 0x76, 0x29, 0x8f, 0x12, 0xce, 0x6f, 0x04, 0x79, 0x30, 0x43, 0xbb, 0x96, 0x6c, + 0x1b, 0xfa, 0x6f, 0xfb, 0x91, 0xfb, 0x07, 0xe5, 0x99, 0xf5, 0x34, 0x0d, 0x9c, 0x45, 0x78, 0x6e, + 0x09, 0x4e, 0x67, 0xae, 0x4e, 0x34, 0x05, 0xc5, 0x5d, 0xc2, 0xb9, 0xae, 0x12, 0xa6, 0x3f, 0xd1, + 0x29, 0x18, 0xdc, 0x73, 0x9a, 0x1d, 0xb1, 0x31, 0x31, 0xff, 0xf3, 0x4a, 0xe1, 0x65, 0xcb, 0xfe, + 0x67, 0x45, 0x98, 0x5c, 0xaa, 0xad, 0x3e, 0xd0, 0xae, 0xd7, 0xaf, 0xbd, 0x42, 0xd7, 0x6b, 0x2f, + 0xbe, 0x44, 0x8b, 0xb9, 0x97, 0xe8, 0xff, 0x9d, 0xb1, 0x65, 0x07, 0xd8, 0x96, 0xfd, 0x8e, 0x9c, + 0x2d, 0x7b, 0xcc, 0x1b, 0x75, 0x2f, 0x67, 0xd5, 0x0e, 0xb2, 0x09, 0xcc, 0xe4, 0x90, 0x6e, 0xf8, + 0x75, 0xa7, 0x99, 0x3c, 0x6a, 0x8f, 0xb8, 0x74, 0x8f, 0x67, 0x1e, 0xeb, 0x30, 0xb6, 0xe4, 0xb4, + 0x9d, 0x4d, 0xb7, 0xe9, 0x46, 0x2e, 0x09, 0xd1, 0x53, 0x50, 0x74, 0x1a, 0x0d, 0xc6, 0xdd, 0x95, + 0x16, 0x4f, 0xdf, 0x3f, 0x28, 0x17, 0x17, 0x1a, 0x94, 0xcd, 0x00, 0x85, 0xb5, 0x8f, 0x29, 0x06, + 0xfa, 0x00, 0x0c, 0x34, 0x02, 0xbf, 0x3d, 0x5b, 0x60, 0x98, 0x74, 0x97, 0x0f, 0x54, 0x02, 0xbf, + 0x9d, 0x40, 0x65, 0x38, 0xf6, 0xaf, 0x15, 0xe0, 0xb1, 0x25, 0xd2, 0xde, 0x59, 0xa9, 0xe5, 0xdc, + 0x17, 0x97, 0x60, 0xa4, 0xe5, 0x7b, 0x6e, 0xe4, 0x07, 0xa1, 0x68, 0x9a, 0xad, 0x88, 0x35, 0x51, + 0x86, 0x15, 0x14, 0x5d, 0x80, 0x81, 0x76, 0xcc, 0xc4, 0x8e, 0x49, 0x06, 0x98, 0xb1, 0xaf, 0x0c, + 0x42, 0x31, 0x3a, 0x21, 0x09, 0xc4, 0x8a, 0x51, 0x18, 0xb7, 0x42, 0x12, 0x60, 0x06, 0x89, 0x39, + 0x01, 0xca, 0x23, 0x88, 0x1b, 0x21, 0xc1, 0x09, 0x50, 0x08, 0xd6, 0xb0, 0x50, 0x15, 0x4a, 0x61, + 0x62, 0x66, 0xfb, 0xda, 0x9a, 0xe3, 0x8c, 0x55, 0x50, 0x33, 0x19, 0x13, 0x31, 0x6e, 0xb0, 0xa1, + 0x9e, 0xac, 0xc2, 0xd7, 0x0a, 0x80, 0xf8, 0x10, 0x7e, 0x8b, 0x0d, 0xdc, 0xad, 0xf4, 0xc0, 0xf5, + 0xbf, 0x25, 0x8e, 0x6b, 0xf4, 0xfe, 0xab, 0x05, 0x8f, 0x2d, 0xb9, 0x5e, 0x83, 0x04, 0x39, 0x0b, + 0xf0, 0xe1, 0xbc, 0x9d, 0x8f, 0xc6, 0xa4, 0x18, 0x4b, 0x6c, 0xe0, 0x18, 0x96, 0x98, 0xfd, 0xc7, + 0x16, 0x20, 0xfe, 0xd9, 0xef, 0xba, 0x8f, 0xbd, 0x95, 0xfe, 0xd8, 0x63, 0x58, 0x16, 0xf6, 0x0d, + 0x98, 0x58, 0x6a, 0xba, 0xc4, 0x8b, 0x56, 0xab, 0x4b, 0xbe, 0xb7, 0xe5, 0x6e, 0xa3, 0x57, 0x60, + 0x22, 0x72, 0x5b, 0xc4, 0xef, 0x44, 0x35, 0x52, 0xf7, 0x3d, 0xf6, 0x72, 0xb5, 0x2e, 0x0d, 0x2e, + 0xa2, 0xfb, 0x07, 0xe5, 0x89, 0x0d, 0x03, 0x82, 0x13, 0x98, 0xf6, 0xef, 0xd2, 0xf1, 0xf3, 0x5b, + 0x6d, 0xdf, 0x23, 0x5e, 0xb4, 0xe4, 0x7b, 0x0d, 0x2e, 0xe1, 0x78, 0x05, 0x06, 0x22, 0x3a, 0x1e, + 0x7c, 0xec, 0x2e, 0xca, 0x8d, 0x42, 0x47, 0xe1, 0xf0, 0xa0, 0x7c, 0x26, 0x5d, 0x83, 0x8d, 0x13, + 0xab, 0x83, 0xbe, 0x03, 0x86, 0xc2, 0xc8, 0x89, 0x3a, 0xa1, 0x18, 0xcd, 0xc7, 0xe5, 0x68, 0xd6, + 0x58, 0xe9, 0xe1, 0x41, 0x79, 0x52, 0x55, 0xe3, 0x45, 0x58, 0x54, 0x40, 0x4f, 0xc3, 0x70, 0x8b, + 0x84, 0xa1, 0xb3, 0x2d, 0x6f, 0xc3, 0x49, 0x51, 0x77, 0x78, 0x8d, 0x17, 0x63, 0x09, 0x47, 0x4f, + 0xc0, 0x20, 0x09, 0x02, 0x3f, 0x10, 0x7b, 0x74, 0x5c, 0x20, 0x0e, 0x2e, 0xd3, 0x42, 0xcc, 0x61, + 0xf6, 0xbf, 0xb6, 0x60, 0x52, 0xf5, 0x95, 0xb7, 0x75, 0x02, 0xaf, 0x90, 0x4f, 0x02, 0xd4, 0xe5, + 0x07, 0x86, 0xec, 0xf6, 0x18, 0x7d, 0xfe, 0x62, 0xe6, 0x45, 0x9d, 0x1a, 0xc6, 0x98, 0xb2, 0x2a, + 0x0a, 0xb1, 0x46, 0xcd, 0xfe, 0x07, 0x16, 0xcc, 0x24, 0xbe, 0xe8, 0x86, 0x1b, 0x46, 0xe8, 0xcd, + 0xd4, 0x57, 0xcd, 0xf7, 0xf7, 0x55, 0xb4, 0x36, 0xfb, 0x26, 0xb5, 0x94, 0x65, 0x89, 0xf6, 0x45, + 0xd7, 0x60, 0xd0, 0x8d, 0x48, 0x4b, 0x7e, 0xcc, 0x13, 0x5d, 0x3f, 0x86, 0xf7, 0x2a, 0x9e, 0x91, + 0x55, 0x5a, 0x13, 0x73, 0x02, 0xf6, 0xaf, 0x15, 0xa1, 0xc4, 0x97, 0xed, 0x9a, 0xd3, 0x3e, 0x81, + 0xb9, 0x78, 0x06, 0x4a, 0x6e, 0xab, 0xd5, 0x89, 0x9c, 0x4d, 0x71, 0x9c, 0x8f, 0xf0, 0xad, 0xb5, + 0x2a, 0x0b, 0x71, 0x0c, 0x47, 0xab, 0x30, 0xc0, 0xba, 0xc2, 0xbf, 0xf2, 0xa9, 0xec, 0xaf, 0x14, + 0x7d, 0x9f, 0xaf, 0x38, 0x91, 0xc3, 0x39, 0x29, 0x75, 0x8f, 0xd0, 0x22, 0xcc, 0x48, 0x20, 0x07, + 0x60, 0xd3, 0xf5, 0x9c, 0x60, 0x9f, 0x96, 0xcd, 0x16, 0x19, 0xc1, 0xe7, 0xba, 0x13, 0x5c, 0x54, + 0xf8, 0x9c, 0xac, 0xfa, 0xb0, 0x18, 0x80, 0x35, 0xa2, 0x73, 0x1f, 0x86, 0x92, 0x42, 0x3e, 0x0a, + 0x43, 0x34, 0xf7, 0x51, 0x98, 0x4c, 0xb4, 0xd5, 0xab, 0xfa, 0x98, 0xce, 0x4f, 0xfd, 0x32, 0x3b, + 0x32, 0x44, 0xaf, 0x97, 0xbd, 0x3d, 0x71, 0xe4, 0xbe, 0x0d, 0xa7, 0x9a, 0x19, 0x27, 0x99, 0x98, + 0xd7, 0xfe, 0x4f, 0xbe, 0xc7, 0xc4, 0x67, 0x9f, 0xca, 0x82, 0xe2, 0xcc, 0x36, 0x28, 0x8f, 0xe0, + 0xb7, 0xe9, 0x06, 0x71, 0x9a, 0x3a, 0xbb, 0x7d, 0x53, 0x94, 0x61, 0x05, 0xa5, 0xe7, 0xdd, 0x29, + 0xd5, 0xf9, 0xeb, 0x64, 0xbf, 0x46, 0x9a, 0xa4, 0x1e, 0xf9, 0xc1, 0x37, 0xb5, 0xfb, 0xe7, 0xf8, + 0xe8, 0xf3, 0xe3, 0x72, 0x54, 0x10, 0x28, 0x5e, 0x27, 0xfb, 0x7c, 0x2a, 0xf4, 0xaf, 0x2b, 0x76, + 0xfd, 0xba, 0x9f, 0xb3, 0x60, 0x5c, 0x7d, 0xdd, 0x09, 0x9c, 0x0b, 0x8b, 0xe6, 0xb9, 0x70, 0xae, + 0xeb, 0x02, 0xcf, 0x39, 0x11, 0xbe, 0x56, 0x80, 0xb3, 0x0a, 0x87, 0xbe, 0x0d, 0xf8, 0x1f, 0xb1, + 0xaa, 0x2e, 0x43, 0xc9, 0x53, 0x52, 0x32, 0xcb, 0x14, 0x4f, 0xc5, 0x32, 0xb2, 0x18, 0x87, 0xb2, + 0x78, 0x5e, 0x2c, 0xca, 0x1a, 0xd3, 0xc5, 0xc7, 0x42, 0x54, 0xbc, 0x08, 0xc5, 0x8e, 0xdb, 0x10, + 0x17, 0xcc, 0x07, 0xe5, 0x68, 0xdf, 0x5a, 0xad, 0x1c, 0x1e, 0x94, 0x1f, 0xcf, 0x53, 0x5d, 0xd0, + 0x9b, 0x2d, 0x9c, 0xbf, 0xb5, 0x5a, 0xc1, 0xb4, 0x32, 0x5a, 0x80, 0x49, 0xa9, 0x9d, 0xb9, 0x4d, + 0xd9, 0x2d, 0xdf, 0x13, 0xf7, 0x90, 0x92, 0x01, 0x63, 0x13, 0x8c, 0x93, 0xf8, 0xa8, 0x02, 0x53, + 0xbb, 0x9d, 0x4d, 0xd2, 0x24, 0x11, 0xff, 0xe0, 0xeb, 0x84, 0x4b, 0x48, 0x4b, 0xf1, 0xcb, 0xec, + 0x7a, 0x02, 0x8e, 0x53, 0x35, 0xec, 0x3f, 0x67, 0xf7, 0x81, 0x18, 0xbd, 0x6a, 0xe0, 0xd3, 0x85, + 0x45, 0xa9, 0x7f, 0x33, 0x97, 0x73, 0x3f, 0xab, 0xe2, 0x3a, 0xd9, 0xdf, 0xf0, 0x29, 0x67, 0x9e, + 0xbd, 0x2a, 0x8c, 0x35, 0x3f, 0xd0, 0x75, 0xcd, 0xff, 0x7c, 0x01, 0x4e, 0xab, 0x11, 0x30, 0x98, + 0xc0, 0x6f, 0xf5, 0x31, 0xb8, 0x02, 0xa3, 0x0d, 0xb2, 0xe5, 0x74, 0x9a, 0x91, 0x12, 0xd7, 0x0f, + 0x72, 0x95, 0x4d, 0x25, 0x2e, 0xc6, 0x3a, 0xce, 0x11, 0x86, 0xed, 0xbf, 0x8d, 0xb2, 0x8b, 0x38, + 0x72, 0xe8, 0x1a, 0x57, 0xbb, 0xc6, 0xca, 0xdd, 0x35, 0x4f, 0xc0, 0xa0, 0xdb, 0xa2, 0x8c, 0x59, + 0xc1, 0xe4, 0xb7, 0x56, 0x69, 0x21, 0xe6, 0x30, 0xf4, 0x7e, 0x18, 0xae, 0xfb, 0xad, 0x96, 0xe3, + 0x35, 0xd8, 0x95, 0x57, 0x5a, 0x1c, 0xa5, 0xbc, 0xdb, 0x12, 0x2f, 0xc2, 0x12, 0x86, 0x1e, 0x83, + 0x01, 0x27, 0xd8, 0xe6, 0x32, 0x8c, 0xd2, 0xe2, 0x08, 0x6d, 0x69, 0x21, 0xd8, 0x0e, 0x31, 0x2b, + 0xa5, 0x4f, 0xb0, 0xbb, 0x7e, 0xb0, 0xeb, 0x7a, 0xdb, 0x15, 0x37, 0x10, 0x5b, 0x42, 0xdd, 0x85, + 0x77, 0x14, 0x04, 0x6b, 0x58, 0x68, 0x05, 0x06, 0xdb, 0x7e, 0x10, 0x85, 0xb3, 0x43, 0x6c, 0xb8, + 0x1f, 0xcf, 0x39, 0x88, 0xf8, 0xd7, 0x56, 0xfd, 0x20, 0x8a, 0x3f, 0x80, 0xfe, 0x0b, 0x31, 0xaf, + 0x8e, 0x6e, 0xc0, 0x30, 0xf1, 0xf6, 0x56, 0x02, 0xbf, 0x35, 0x3b, 0x93, 0x4f, 0x69, 0x99, 0xa3, + 0xf0, 0x65, 0x16, 0xf3, 0xa8, 0xa2, 0x18, 0x4b, 0x12, 0xe8, 0x3b, 0xa0, 0x48, 0xbc, 0xbd, 0xd9, + 0x61, 0x46, 0x69, 0x2e, 0x87, 0xd2, 0x6d, 0x27, 0x88, 0xcf, 0xfc, 0x65, 0x6f, 0x0f, 0xd3, 0x3a, + 0xe8, 0x13, 0x50, 0x92, 0x07, 0x46, 0x28, 0x84, 0x83, 0x99, 0x0b, 0x56, 0x1e, 0x33, 0x98, 0xbc, + 0xd5, 0x71, 0x03, 0xd2, 0x22, 0x5e, 0x14, 0xc6, 0x27, 0xa4, 0x84, 0x86, 0x38, 0xa6, 0x86, 0x3e, + 0x21, 0x25, 0xd2, 0x6b, 0x7e, 0xc7, 0x8b, 0xc2, 0xd9, 0x12, 0xeb, 0x5e, 0xa6, 0xae, 0xf0, 0x76, + 0x8c, 0x97, 0x14, 0x59, 0xf3, 0xca, 0xd8, 0x20, 0x85, 0x3e, 0x05, 0xe3, 0xfc, 0x3f, 0xd7, 0xb8, + 0x85, 0xb3, 0xa7, 0x19, 0xed, 0x0b, 0xf9, 0xb4, 0x39, 0xe2, 0xe2, 0x69, 0x41, 0x7c, 0x5c, 0x2f, + 0x0d, 0xb1, 0x49, 0x0d, 0x61, 0x18, 0x6f, 0xba, 0x7b, 0xc4, 0x23, 0x61, 0x58, 0x0d, 0xfc, 0x4d, + 0x22, 0x04, 0x88, 0x67, 0xb3, 0x35, 0x74, 0xfe, 0x26, 0x59, 0x9c, 0xa6, 0x34, 0x6f, 0xe8, 0x75, + 0xb0, 0x49, 0x02, 0xdd, 0x82, 0x09, 0xfa, 0x62, 0x73, 0x63, 0xa2, 0xa3, 0xbd, 0x88, 0xb2, 0x77, + 0x15, 0x36, 0x2a, 0xe1, 0x04, 0x11, 0x74, 0x13, 0xc6, 0xc2, 0xc8, 0x09, 0xa2, 0x4e, 0x9b, 0x13, + 0x3d, 0xd3, 0x8b, 0x28, 0x53, 0xf0, 0xd6, 0xb4, 0x2a, 0xd8, 0x20, 0x80, 0x5e, 0x87, 0x52, 0xd3, + 0xdd, 0x22, 0xf5, 0xfd, 0x7a, 0x93, 0xcc, 0x8e, 0x31, 0x6a, 0x99, 0x87, 0xca, 0x0d, 0x89, 0xc4, + 0xf9, 0x5c, 0xf5, 0x17, 0xc7, 0xd5, 0xd1, 0x6d, 0x38, 0x13, 0x91, 0xa0, 0xe5, 0x7a, 0x0e, 0x3d, + 0x0c, 0xc4, 0xd3, 0x8a, 0x29, 0x4e, 0xc7, 0xd9, 0x6e, 0x3b, 0x2f, 0x66, 0xe3, 0xcc, 0x46, 0x26, + 0x16, 0xce, 0xa9, 0x8d, 0xee, 0xc1, 0x6c, 0x06, 0xc4, 0x6f, 0xba, 0xf5, 0xfd, 0xd9, 0x53, 0x8c, + 0xf2, 0x47, 0x04, 0xe5, 0xd9, 0x8d, 0x1c, 0xbc, 0xc3, 0x2e, 0x30, 0x9c, 0x4b, 0x1d, 0xdd, 0x84, + 0x49, 0x76, 0x02, 0x55, 0x3b, 0xcd, 0xa6, 0x68, 0x70, 0x82, 0x35, 0xf8, 0x7e, 0x79, 0x1f, 0xaf, + 0x9a, 0xe0, 0xc3, 0x83, 0x32, 0xc4, 0xff, 0x70, 0xb2, 0x36, 0xda, 0x64, 0x3a, 0xba, 0x4e, 0xe0, + 0x46, 0xfb, 0xf4, 0xdc, 0x20, 0xf7, 0xa2, 0xd9, 0xc9, 0xae, 0xf2, 0x0a, 0x1d, 0x55, 0x29, 0xf2, + 0xf4, 0x42, 0x9c, 0x24, 0x48, 0x8f, 0xd4, 0x30, 0x6a, 0xb8, 0xde, 0xec, 0x14, 0x7f, 0x97, 0xc8, + 0x13, 0xa9, 0x46, 0x0b, 0x31, 0x87, 0x31, 0xfd, 0x1c, 0xfd, 0x71, 0x93, 0xde, 0x5c, 0xd3, 0x0c, + 0x31, 0xd6, 0xcf, 0x49, 0x00, 0x8e, 0x71, 0x28, 0x33, 0x19, 0x45, 0xfb, 0xb3, 0x88, 0xa1, 0xaa, + 0x83, 0x65, 0x63, 0xe3, 0x13, 0x98, 0x96, 0xdb, 0x9b, 0x30, 0xa1, 0x0e, 0x42, 0x36, 0x26, 0xa8, + 0x0c, 0x83, 0x8c, 0x7d, 0x12, 0xd2, 0xb5, 0x12, 0xed, 0x02, 0x63, 0xad, 0x30, 0x2f, 0x67, 0x5d, + 0x70, 0xdf, 0x26, 0x8b, 0xfb, 0x11, 0xe1, 0x6f, 0xfa, 0xa2, 0xd6, 0x05, 0x09, 0xc0, 0x31, 0x8e, + 0xfd, 0xbf, 0x39, 0x1b, 0x1a, 0x9f, 0xb6, 0x7d, 0xdc, 0x2f, 0xcf, 0xc2, 0xc8, 0x8e, 0x1f, 0x46, + 0x14, 0x9b, 0xb5, 0x31, 0x18, 0x33, 0x9e, 0xd7, 0x44, 0x39, 0x56, 0x18, 0xe8, 0x55, 0x18, 0xaf, + 0xeb, 0x0d, 0x88, 0xcb, 0x51, 0x1d, 0x23, 0x46, 0xeb, 0xd8, 0xc4, 0x45, 0x2f, 0xc3, 0x08, 0xb3, + 0x39, 0xa9, 0xfb, 0x4d, 0xc1, 0xb5, 0xc9, 0x1b, 0x7e, 0xa4, 0x2a, 0xca, 0x0f, 0xb5, 0xdf, 0x58, + 0x61, 0xa3, 0x8b, 0x30, 0x44, 0xbb, 0xb0, 0x5a, 0x15, 0xd7, 0x92, 0x12, 0x14, 0x5d, 0x63, 0xa5, + 0x58, 0x40, 0xed, 0xff, 0xbf, 0xa0, 0x8d, 0x32, 0x7d, 0x0f, 0x13, 0x54, 0x85, 0xe1, 0xbb, 0x8e, + 0x1b, 0xb9, 0xde, 0xb6, 0xe0, 0x3f, 0x9e, 0xee, 0x7a, 0x47, 0xb1, 0x4a, 0x77, 0x78, 0x05, 0x7e, + 0x8b, 0x8a, 0x3f, 0x58, 0x92, 0xa1, 0x14, 0x83, 0x8e, 0xe7, 0x51, 0x8a, 0x85, 0x7e, 0x29, 0x62, + 0x5e, 0x81, 0x53, 0x14, 0x7f, 0xb0, 0x24, 0x83, 0xde, 0x04, 0x90, 0x3b, 0x8c, 0x34, 0x84, 0xad, + 0xc7, 0xb3, 0xbd, 0x89, 0x6e, 0xa8, 0x3a, 0x8b, 0x13, 0xf4, 0x8e, 0x8e, 0xff, 0x63, 0x8d, 0x9e, + 0x1d, 0x31, 0x3e, 0x2d, 0xdd, 0x19, 0xf4, 0x5d, 0x74, 0x89, 0x3b, 0x41, 0x44, 0x1a, 0x0b, 0x91, + 0x18, 0x9c, 0x0f, 0xf4, 0xf7, 0x48, 0xd9, 0x70, 0x5b, 0x44, 0xdf, 0x0e, 0x82, 0x08, 0x8e, 0xe9, + 0xd9, 0xbf, 0x58, 0x84, 0xd9, 0xbc, 0xee, 0xd2, 0x45, 0x47, 0xee, 0xb9, 0xd1, 0x12, 0x65, 0xaf, + 0x2c, 0x73, 0xd1, 0x2d, 0x8b, 0x72, 0xac, 0x30, 0xe8, 0xec, 0x87, 0xee, 0xb6, 0x7c, 0x63, 0x0e, + 0xc6, 0xb3, 0x5f, 0x63, 0xa5, 0x58, 0x40, 0x29, 0x5e, 0x40, 0x9c, 0x50, 0x18, 0x13, 0x69, 0xab, + 0x04, 0xb3, 0x52, 0x2c, 0xa0, 0xba, 0xb4, 0x6b, 0xa0, 0x87, 0xb4, 0xcb, 0x18, 0xa2, 0xc1, 0xe3, + 0x1d, 0x22, 0xf4, 0x69, 0x80, 0x2d, 0xd7, 0x73, 0xc3, 0x1d, 0x46, 0x7d, 0xe8, 0xc8, 0xd4, 0x15, + 0x73, 0xb6, 0xa2, 0xa8, 0x60, 0x8d, 0x22, 0x7a, 0x09, 0x46, 0xd5, 0x06, 0x5c, 0xad, 0x30, 0xcd, + 0xaa, 0x66, 0xa9, 0x12, 0x9f, 0x46, 0x15, 0xac, 0xe3, 0xd9, 0x9f, 0x4d, 0xae, 0x17, 0xb1, 0x03, + 0xb4, 0xf1, 0xb5, 0xfa, 0x1d, 0xdf, 0x42, 0xf7, 0xf1, 0xb5, 0xbf, 0x51, 0x84, 0x49, 0xa3, 0xb1, + 0x4e, 0xd8, 0xc7, 0x99, 0x75, 0x95, 0x1e, 0xe0, 0x4e, 0x44, 0xc4, 0xfe, 0xb3, 0x7b, 0x6f, 0x15, + 0xfd, 0x90, 0xa7, 0x3b, 0x80, 0xd7, 0x47, 0x9f, 0x86, 0x52, 0xd3, 0x09, 0x99, 0xe4, 0x8c, 0x88, + 0x7d, 0xd7, 0x0f, 0xb1, 0xf8, 0x61, 0xe2, 0x84, 0x91, 0x76, 0x6b, 0x72, 0xda, 0x31, 0x49, 0x7a, + 0xd3, 0x50, 0xfe, 0x44, 0x5a, 0xab, 0xa9, 0x4e, 0x50, 0x26, 0x66, 0x1f, 0x73, 0x18, 0x7a, 0x19, + 0xc6, 0x02, 0xc2, 0x56, 0xc5, 0x12, 0xe5, 0xe6, 0xd8, 0x32, 0x1b, 0x8c, 0xd9, 0x3e, 0xac, 0xc1, + 0xb0, 0x81, 0x19, 0xbf, 0x0d, 0x86, 0xba, 0xbc, 0x0d, 0x9e, 0x86, 0x61, 0xf6, 0x43, 0xad, 0x00, + 0x35, 0x1b, 0xab, 0xbc, 0x18, 0x4b, 0x78, 0x72, 0xc1, 0x8c, 0xf4, 0xb7, 0x60, 0xe8, 0xeb, 0x43, + 0x2c, 0x6a, 0xa6, 0xd5, 0x1e, 0xe1, 0xa7, 0x9c, 0x58, 0xf2, 0x58, 0xc2, 0xec, 0x0f, 0xc0, 0x44, + 0xc5, 0x21, 0x2d, 0xdf, 0x5b, 0xf6, 0x1a, 0x6d, 0xdf, 0xf5, 0x22, 0x34, 0x0b, 0x03, 0xec, 0x12, + 0xe1, 0x47, 0xc0, 0x00, 0x6d, 0x08, 0xb3, 0x12, 0x7b, 0x1b, 0x4e, 0x57, 0xfc, 0xbb, 0xde, 0x5d, + 0x27, 0x68, 0x2c, 0x54, 0x57, 0xb5, 0xf7, 0xf5, 0xba, 0x7c, 0xdf, 0x71, 0x23, 0xb1, 0xcc, 0xa3, + 0x57, 0xab, 0xc9, 0xd9, 0xda, 0x15, 0xb7, 0x49, 0x72, 0xa4, 0x20, 0x7f, 0xa9, 0x60, 0xb4, 0x14, + 0xe3, 0x2b, 0xad, 0x96, 0x95, 0xab, 0xd5, 0x7a, 0x03, 0x46, 0xb6, 0x5c, 0xd2, 0x6c, 0x60, 0xb2, + 0x25, 0x56, 0xe2, 0x53, 0xf9, 0x76, 0x2f, 0x2b, 0x14, 0x53, 0x4a, 0xbd, 0xf8, 0xeb, 0x70, 0x45, + 0x54, 0xc6, 0x8a, 0x0c, 0xda, 0x85, 0x29, 0xf9, 0x60, 0x90, 0x50, 0xb1, 0x2e, 0x9f, 0xee, 0xf6, + 0x0a, 0x31, 0x89, 0x9f, 0xba, 0x7f, 0x50, 0x9e, 0xc2, 0x09, 0x32, 0x38, 0x45, 0x98, 0x3e, 0x07, + 0x5b, 0xf4, 0x04, 0x1e, 0x60, 0xc3, 0xcf, 0x9e, 0x83, 0xec, 0x65, 0xcb, 0x4a, 0xed, 0x9f, 0xb0, + 0xe0, 0x91, 0xd4, 0xc8, 0x88, 0x17, 0xfe, 0x31, 0xcf, 0x42, 0xf2, 0xc5, 0x5d, 0xe8, 0xfd, 0xe2, + 0xb6, 0xff, 0xa6, 0x05, 0xa7, 0x96, 0x5b, 0xed, 0x68, 0xbf, 0xe2, 0x9a, 0x2a, 0xa8, 0x0f, 0xc3, + 0x50, 0x8b, 0x34, 0xdc, 0x4e, 0x4b, 0xcc, 0x5c, 0x59, 0x9e, 0x52, 0x6b, 0xac, 0xf4, 0xf0, 0xa0, + 0x3c, 0x5e, 0x8b, 0xfc, 0xc0, 0xd9, 0x26, 0xbc, 0x00, 0x0b, 0x74, 0x76, 0xd6, 0xbb, 0x6f, 0x93, + 0x1b, 0x6e, 0xcb, 0x95, 0x76, 0x4c, 0x5d, 0x65, 0x76, 0xf3, 0x72, 0x40, 0xe7, 0xdf, 0xe8, 0x38, + 0x5e, 0xe4, 0x46, 0xfb, 0x42, 0x7b, 0x24, 0x89, 0xe0, 0x98, 0x9e, 0xfd, 0x75, 0x0b, 0x26, 0xe5, + 0xba, 0x5f, 0x68, 0x34, 0x02, 0x12, 0x86, 0x68, 0x0e, 0x0a, 0x6e, 0x5b, 0xf4, 0x12, 0x44, 0x2f, + 0x0b, 0xab, 0x55, 0x5c, 0x70, 0xdb, 0x92, 0x2d, 0x63, 0x07, 0x61, 0xd1, 0x54, 0xa4, 0x5d, 0x13, + 0xe5, 0x58, 0x61, 0xa0, 0x4b, 0x30, 0xe2, 0xf9, 0x0d, 0x6e, 0x4b, 0xc6, 0xaf, 0x34, 0xb6, 0xc0, + 0xd6, 0x45, 0x19, 0x56, 0x50, 0x54, 0x85, 0x12, 0x37, 0xb3, 0x8a, 0x17, 0x6d, 0x5f, 0xc6, 0x5a, + 0xec, 0xcb, 0x36, 0x64, 0x4d, 0x1c, 0x13, 0xb1, 0x7f, 0xd5, 0x82, 0x31, 0xf9, 0x65, 0x7d, 0xf2, + 0x9c, 0x74, 0x6b, 0xc5, 0xfc, 0x66, 0xbc, 0xb5, 0x28, 0xcf, 0xc8, 0x20, 0x06, 0xab, 0x58, 0x3c, + 0x12, 0xab, 0x78, 0x05, 0x46, 0x9d, 0x76, 0xbb, 0x6a, 0xf2, 0x99, 0x6c, 0x29, 0x2d, 0xc4, 0xc5, + 0x58, 0xc7, 0xb1, 0x7f, 0xbc, 0x00, 0x13, 0xf2, 0x0b, 0x6a, 0x9d, 0xcd, 0x90, 0x44, 0x68, 0x03, + 0x4a, 0x0e, 0x9f, 0x25, 0x22, 0x17, 0xf9, 0x13, 0xd9, 0x72, 0x04, 0x63, 0x4a, 0xe3, 0x0b, 0x7f, + 0x41, 0xd6, 0xc6, 0x31, 0x21, 0xd4, 0x84, 0x69, 0xcf, 0x8f, 0xd8, 0xe1, 0xaf, 0xe0, 0xdd, 0x54, + 0x3b, 0x49, 0xea, 0x67, 0x05, 0xf5, 0xe9, 0xf5, 0x24, 0x15, 0x9c, 0x26, 0x8c, 0x96, 0xa5, 0x6c, + 0xa6, 0x98, 0x2f, 0x0c, 0xd0, 0x27, 0x2e, 0x5b, 0x34, 0x63, 0xff, 0x8a, 0x05, 0x25, 0x89, 0x76, + 0x12, 0x5a, 0xbc, 0x35, 0x18, 0x0e, 0xd9, 0x24, 0xc8, 0xa1, 0xb1, 0xbb, 0x75, 0x9c, 0xcf, 0x57, + 0x7c, 0xa7, 0xf1, 0xff, 0x21, 0x96, 0x34, 0x98, 0x68, 0x5e, 0x75, 0xff, 0x5d, 0x22, 0x9a, 0x57, + 0xfd, 0xc9, 0xb9, 0x94, 0xfe, 0x90, 0xf5, 0x59, 0x93, 0x75, 0x51, 0xd6, 0xab, 0x1d, 0x90, 0x2d, + 0xf7, 0x5e, 0x92, 0xf5, 0xaa, 0xb2, 0x52, 0x2c, 0xa0, 0xe8, 0x4d, 0x18, 0xab, 0x4b, 0x99, 0x6c, + 0xbc, 0xc3, 0x2f, 0x76, 0xd5, 0x0f, 0x28, 0x55, 0x12, 0x97, 0x85, 0x2c, 0x69, 0xf5, 0xb1, 0x41, + 0xcd, 0x34, 0x23, 0x28, 0xf6, 0x32, 0x23, 0x88, 0xe9, 0xe6, 0x2b, 0xd5, 0x7f, 0xd2, 0x82, 0x21, + 0x2e, 0x8b, 0xeb, 0x4f, 0x14, 0xaa, 0x69, 0xd6, 0xe2, 0xb1, 0xbb, 0x4d, 0x0b, 0x85, 0xa6, 0x0c, + 0xad, 0x41, 0x89, 0xfd, 0x60, 0xb2, 0xc4, 0x62, 0xbe, 0x95, 0x3f, 0x6f, 0x55, 0xef, 0xe0, 0x6d, + 0x59, 0x0d, 0xc7, 0x14, 0xec, 0x1f, 0x2b, 0xd2, 0xd3, 0x2d, 0x46, 0x35, 0x2e, 0x7d, 0xeb, 0xe1, + 0x5d, 0xfa, 0x85, 0x87, 0x75, 0xe9, 0x6f, 0xc3, 0x64, 0x5d, 0xd3, 0xc3, 0xc5, 0x33, 0x79, 0xa9, + 0xeb, 0x22, 0xd1, 0x54, 0x76, 0x5c, 0xca, 0xb2, 0x64, 0x12, 0xc1, 0x49, 0xaa, 0xe8, 0xbb, 0x60, + 0x8c, 0xcf, 0xb3, 0x68, 0x85, 0x5b, 0x62, 0xbc, 0x3f, 0x7f, 0xbd, 0xe8, 0x4d, 0x70, 0xa9, 0x9c, + 0x56, 0x1d, 0x1b, 0xc4, 0xec, 0x3f, 0xb1, 0x00, 0x2d, 0xb7, 0x77, 0x48, 0x8b, 0x04, 0x4e, 0x33, + 0x16, 0xa7, 0xff, 0xb0, 0x05, 0xb3, 0x24, 0x55, 0xbc, 0xe4, 0xb7, 0x5a, 0xe2, 0xd1, 0x92, 0xf3, + 0xae, 0x5e, 0xce, 0xa9, 0xa3, 0xdc, 0x20, 0x66, 0xf3, 0x30, 0x70, 0x6e, 0x7b, 0x68, 0x0d, 0x66, + 0xf8, 0x2d, 0xa9, 0x00, 0x9a, 0xad, 0xf7, 0xa3, 0x82, 0xf0, 0xcc, 0x46, 0x1a, 0x05, 0x67, 0xd5, + 0xb3, 0xbf, 0x6f, 0x0c, 0x72, 0x7b, 0xf1, 0x9e, 0x1e, 0xe1, 0x3d, 0x3d, 0xc2, 0x7b, 0x7a, 0x84, + 0xf7, 0xf4, 0x08, 0xef, 0xe9, 0x11, 0xbe, 0xed, 0xf5, 0x08, 0x7f, 0xc1, 0x82, 0xd3, 0xea, 0x1a, + 0x30, 0x1e, 0xbe, 0x9f, 0x83, 0x19, 0xbe, 0xdd, 0x96, 0x9a, 0x8e, 0xdb, 0xda, 0x20, 0xad, 0x76, + 0xd3, 0x89, 0xa4, 0xd6, 0xfd, 0x4a, 0xe6, 0xca, 0x4d, 0x58, 0xac, 0x1a, 0x15, 0xb9, 0xe9, 0x7f, + 0x06, 0x00, 0x67, 0x35, 0x63, 0xff, 0xe2, 0x08, 0x0c, 0x2e, 0xef, 0x11, 0x2f, 0x3a, 0x81, 0x27, + 0x42, 0x1d, 0x26, 0x5c, 0x6f, 0xcf, 0x6f, 0xee, 0x91, 0x06, 0x87, 0x1f, 0xe5, 0x25, 0x7b, 0x46, + 0x90, 0x9e, 0x58, 0x35, 0x48, 0xe0, 0x04, 0xc9, 0x87, 0x21, 0x4d, 0xbe, 0x0a, 0x43, 0xfc, 0x10, + 0x17, 0xa2, 0xe4, 0xcc, 0x33, 0x9b, 0x0d, 0xa2, 0xb8, 0x9a, 0x62, 0x49, 0x37, 0xbf, 0x24, 0x44, + 0x75, 0xf4, 0x59, 0x98, 0xd8, 0x72, 0x83, 0x30, 0xda, 0x70, 0x5b, 0x24, 0x8c, 0x9c, 0x56, 0xfb, + 0x01, 0xa4, 0xc7, 0x6a, 0x1c, 0x56, 0x0c, 0x4a, 0x38, 0x41, 0x19, 0x6d, 0xc3, 0x78, 0xd3, 0xd1, + 0x9b, 0x1a, 0x3e, 0x72, 0x53, 0xea, 0x76, 0xb8, 0xa1, 0x13, 0xc2, 0x26, 0x5d, 0xba, 0x9d, 0xea, + 0x4c, 0x00, 0x3a, 0xc2, 0xc4, 0x02, 0x6a, 0x3b, 0x71, 0xc9, 0x27, 0x87, 0x51, 0x46, 0x87, 0x19, + 0xc8, 0x96, 0x4c, 0x46, 0x47, 0x33, 0x83, 0xfd, 0x0c, 0x94, 0x08, 0x1d, 0x42, 0x4a, 0x58, 0x5c, + 0x30, 0x97, 0xfb, 0xeb, 0xeb, 0x9a, 0x5b, 0x0f, 0x7c, 0x53, 0x6e, 0xbf, 0x2c, 0x29, 0xe1, 0x98, + 0x28, 0x5a, 0x82, 0xa1, 0x90, 0x04, 0x2e, 0x09, 0xc5, 0x55, 0xd3, 0x65, 0x1a, 0x19, 0x1a, 0xf7, + 0x2d, 0xe1, 0xbf, 0xb1, 0xa8, 0x4a, 0x97, 0x97, 0xc3, 0x44, 0x9a, 0xec, 0x32, 0xd0, 0x96, 0xd7, + 0x02, 0x2b, 0xc5, 0x02, 0x8a, 0x5e, 0x87, 0xe1, 0x80, 0x34, 0x99, 0x62, 0x68, 0xbc, 0xff, 0x45, + 0xce, 0xf5, 0x4c, 0xbc, 0x1e, 0x96, 0x04, 0xd0, 0x75, 0x40, 0x01, 0xa1, 0x8c, 0x92, 0xeb, 0x6d, + 0x2b, 0xb3, 0x51, 0x71, 0xd0, 0x2a, 0x86, 0x14, 0xc7, 0x18, 0xd2, 0xad, 0x08, 0x67, 0x54, 0x43, + 0x57, 0x61, 0x5a, 0x95, 0xae, 0x7a, 0x61, 0xe4, 0xd0, 0x03, 0x6e, 0x92, 0xd1, 0x52, 0x72, 0x0a, + 0x9c, 0x44, 0xc0, 0xe9, 0x3a, 0xf6, 0x97, 0x2d, 0xe0, 0xe3, 0x7c, 0x02, 0xaf, 0xf3, 0xd7, 0xcc, + 0xd7, 0xf9, 0xd9, 0xdc, 0x99, 0xcb, 0x79, 0x99, 0x7f, 0xd9, 0x82, 0x51, 0x6d, 0x66, 0xe3, 0x35, + 0x6b, 0x75, 0x59, 0xb3, 0x1d, 0x98, 0xa2, 0x2b, 0xfd, 0xe6, 0x66, 0x48, 0x82, 0x3d, 0xd2, 0x60, + 0x0b, 0xb3, 0xf0, 0x60, 0x0b, 0x53, 0x99, 0xa8, 0xdd, 0x48, 0x10, 0xc4, 0xa9, 0x26, 0xec, 0xcf, + 0xc8, 0xae, 0x2a, 0x8b, 0xbe, 0xba, 0x9a, 0xf3, 0x84, 0x45, 0x9f, 0x9a, 0x55, 0x1c, 0xe3, 0xd0, + 0xad, 0xb6, 0xe3, 0x87, 0x51, 0xd2, 0xa2, 0xef, 0x9a, 0x1f, 0x46, 0x98, 0x41, 0xec, 0x17, 0x00, + 0x96, 0xef, 0x91, 0x3a, 0x5f, 0xb1, 0xfa, 0xe3, 0xc1, 0xca, 0x7f, 0x3c, 0xd8, 0xbf, 0x65, 0xc1, + 0xc4, 0xca, 0x92, 0x71, 0x73, 0xcd, 0x03, 0xf0, 0x17, 0xcf, 0x9d, 0x3b, 0xeb, 0x52, 0x1d, 0xce, + 0x35, 0x9a, 0xaa, 0x14, 0x6b, 0x18, 0xe8, 0x2c, 0x14, 0x9b, 0x1d, 0x4f, 0x88, 0x0f, 0x87, 0xe9, + 0xf5, 0x78, 0xa3, 0xe3, 0x61, 0x5a, 0xa6, 0xb9, 0x14, 0x14, 0xfb, 0x76, 0x29, 0xe8, 0x19, 0x4a, + 0x00, 0x95, 0x61, 0xf0, 0xee, 0x5d, 0xb7, 0xc1, 0x1d, 0x36, 0x85, 0xaa, 0xfe, 0xce, 0x9d, 0xd5, + 0x4a, 0x88, 0x79, 0xb9, 0xfd, 0xc5, 0x22, 0xcc, 0xad, 0x34, 0xc9, 0xbd, 0x77, 0xe8, 0xb4, 0xda, + 0xaf, 0x43, 0xc4, 0xd1, 0x04, 0x31, 0x47, 0x75, 0x7a, 0xe9, 0x3d, 0x1e, 0x5b, 0x30, 0xcc, 0x0d, + 0xda, 0xa4, 0x0b, 0xeb, 0xab, 0x59, 0xad, 0xe7, 0x0f, 0xc8, 0x3c, 0x37, 0x8c, 0x13, 0x1e, 0x71, + 0xea, 0xc2, 0x14, 0xa5, 0x58, 0x12, 0x9f, 0x7b, 0x05, 0xc6, 0x74, 0xcc, 0x23, 0xb9, 0x9f, 0xfd, + 0x3f, 0x45, 0x98, 0xa2, 0x3d, 0x78, 0xa8, 0x13, 0x71, 0x2b, 0x3d, 0x11, 0xc7, 0xed, 0x82, 0xd4, + 0x7b, 0x36, 0xde, 0x4c, 0xce, 0xc6, 0x95, 0xbc, 0xd9, 0x38, 0xe9, 0x39, 0xf8, 0x5e, 0x0b, 0x66, + 0x56, 0x9a, 0x7e, 0x7d, 0x37, 0xe1, 0x26, 0xf4, 0x12, 0x8c, 0xd2, 0xe3, 0x38, 0x34, 0x3c, 0xe6, + 0x8d, 0x18, 0x0a, 0x02, 0x84, 0x75, 0x3c, 0xad, 0xda, 0xad, 0x5b, 0xab, 0x95, 0xac, 0xd0, 0x0b, + 0x02, 0x84, 0x75, 0x3c, 0xfb, 0x37, 0x2c, 0x38, 0x77, 0x75, 0x69, 0x39, 0x5e, 0x8a, 0xa9, 0xe8, + 0x0f, 0x17, 0x61, 0xa8, 0xdd, 0xd0, 0xba, 0x12, 0x8b, 0x57, 0x2b, 0xac, 0x17, 0x02, 0xfa, 0x6e, + 0x89, 0x6c, 0x72, 0x0b, 0xe0, 0x2a, 0xae, 0x2e, 0x89, 0x73, 0x57, 0x6a, 0x53, 0xac, 0x5c, 0x6d, + 0xca, 0xfb, 0x61, 0x98, 0xde, 0x0b, 0x6e, 0x5d, 0xf6, 0x9b, 0x2b, 0x68, 0x79, 0x11, 0x96, 0x30, + 0xfb, 0x67, 0x2d, 0x98, 0xb9, 0xea, 0x46, 0xf4, 0xd2, 0x4e, 0x86, 0x37, 0xa0, 0xb7, 0x76, 0xe8, + 0x46, 0x7e, 0xb0, 0x9f, 0x0c, 0x6f, 0x80, 0x15, 0x04, 0x6b, 0x58, 0xfc, 0x83, 0xf6, 0x5c, 0x66, + 0xa1, 0x5d, 0x30, 0xf5, 0x57, 0x58, 0x94, 0x63, 0x85, 0x41, 0xc7, 0xab, 0xe1, 0x06, 0x4c, 0xf4, + 0xb7, 0x2f, 0x0e, 0x6e, 0x35, 0x5e, 0x15, 0x09, 0xc0, 0x31, 0x8e, 0xfd, 0x47, 0x16, 0x94, 0xaf, + 0x36, 0x3b, 0x61, 0x44, 0x82, 0xad, 0x30, 0xe7, 0xd0, 0x7d, 0x01, 0x4a, 0x44, 0x0a, 0xda, 0x45, + 0xaf, 0x15, 0x23, 0xaa, 0x24, 0xf0, 0x3c, 0xca, 0x82, 0xc2, 0xeb, 0xc3, 0x97, 0xf1, 0x68, 0xce, + 0x68, 0x2b, 0x80, 0x88, 0xde, 0x96, 0x1e, 0x76, 0x82, 0xf9, 0xaf, 0x2f, 0xa7, 0xa0, 0x38, 0xa3, + 0x86, 0xfd, 0x13, 0x16, 0x9c, 0x56, 0x1f, 0xfc, 0xae, 0xfb, 0x4c, 0xfb, 0xab, 0x05, 0x18, 0xbf, + 0xb6, 0xb1, 0x51, 0xbd, 0x4a, 0x22, 0x6d, 0x55, 0x76, 0x57, 0x9f, 0x63, 0x4d, 0x0b, 0xd8, 0xed, + 0x8d, 0xd8, 0x89, 0xdc, 0xe6, 0x3c, 0x8f, 0x5e, 0x34, 0xbf, 0xea, 0x45, 0x37, 0x83, 0x5a, 0x14, + 0xb8, 0xde, 0x76, 0xe6, 0x4a, 0x97, 0x3c, 0x4b, 0x31, 0x8f, 0x67, 0x41, 0x2f, 0xc0, 0x10, 0x0b, + 0x9f, 0x24, 0x27, 0xe1, 0x51, 0xf5, 0xc4, 0x62, 0xa5, 0x87, 0x07, 0xe5, 0xd2, 0x2d, 0xbc, 0xca, + 0xff, 0x60, 0x81, 0x8a, 0x6e, 0xc1, 0xe8, 0x4e, 0x14, 0xb5, 0xaf, 0x11, 0xa7, 0x41, 0x02, 0x79, + 0xca, 0x9e, 0xcf, 0x3a, 0x65, 0xe9, 0x20, 0x70, 0xb4, 0xf8, 0x60, 0x8a, 0xcb, 0x42, 0xac, 0xd3, + 0xb1, 0x6b, 0x00, 0x31, 0xec, 0x98, 0x14, 0x20, 0xf6, 0x06, 0x94, 0xe8, 0xe7, 0x2e, 0x34, 0x5d, + 0xa7, 0xbb, 0x8a, 0xf9, 0x19, 0x28, 0x49, 0x05, 0x72, 0x28, 0x7c, 0xad, 0xd9, 0x8d, 0x24, 0xf5, + 0xcb, 0x21, 0x8e, 0xe1, 0xf6, 0x16, 0x9c, 0x62, 0xe6, 0x80, 0x4e, 0xb4, 0x63, 0xac, 0xbe, 0xde, + 0xd3, 0xfc, 0xac, 0x78, 0xb1, 0xf1, 0x3e, 0xcf, 0x6a, 0xee, 0x8c, 0x63, 0x92, 0x62, 0xfc, 0x7a, + 0xb3, 0xbf, 0x31, 0x00, 0x8f, 0xae, 0xd6, 0xf2, 0xc3, 0x7f, 0xbc, 0x0c, 0x63, 0x9c, 0x11, 0xa4, + 0x93, 0xee, 0x34, 0x45, 0xbb, 0x4a, 0xb6, 0xb9, 0xa1, 0xc1, 0xb0, 0x81, 0x89, 0xce, 0x41, 0xd1, + 0x7d, 0xcb, 0x4b, 0x3a, 0xfb, 0xac, 0xbe, 0xb1, 0x8e, 0x69, 0x39, 0x05, 0x53, 0x9e, 0x92, 0x1f, + 0xd6, 0x0a, 0xac, 0xf8, 0xca, 0xd7, 0x60, 0xc2, 0x0d, 0xeb, 0xa1, 0xbb, 0xea, 0xd1, 0x1d, 0xa8, + 0xed, 0x61, 0x25, 0x4d, 0xa0, 0x9d, 0x56, 0x50, 0x9c, 0xc0, 0xd6, 0x6e, 0x8e, 0xc1, 0xbe, 0xf9, + 0xd2, 0x9e, 0xce, 0xc7, 0xf4, 0x60, 0x6f, 0xb3, 0xaf, 0x0b, 0x99, 0x90, 0x5a, 0x1c, 0xec, 0xfc, + 0x83, 0x43, 0x2c, 0x61, 0xf4, 0xa9, 0x56, 0xdf, 0x71, 0xda, 0x0b, 0x9d, 0x68, 0xa7, 0xe2, 0x86, + 0x75, 0x7f, 0x8f, 0x04, 0xfb, 0xec, 0x95, 0x3d, 0x12, 0x3f, 0xd5, 0x14, 0x60, 0xe9, 0xda, 0x42, + 0x95, 0x62, 0xe2, 0x74, 0x1d, 0xb4, 0x00, 0x93, 0xb2, 0xb0, 0x46, 0x42, 0x76, 0xb8, 0x8f, 0x32, + 0x32, 0xca, 0xfd, 0x46, 0x14, 0x2b, 0x22, 0x49, 0x7c, 0x93, 0x75, 0x85, 0xe3, 0x60, 0x5d, 0x3f, + 0x0c, 0xe3, 0xae, 0xe7, 0x46, 0xae, 0x13, 0xf9, 0x5c, 0xc3, 0xc2, 0x1f, 0xd4, 0x4c, 0x74, 0xbc, + 0xaa, 0x03, 0xb0, 0x89, 0x67, 0xff, 0x87, 0x01, 0x98, 0x66, 0xd3, 0xf6, 0xde, 0x0a, 0xfb, 0x76, + 0x5a, 0x61, 0xb7, 0xd2, 0x2b, 0xec, 0x38, 0x78, 0xf2, 0x07, 0x5e, 0x66, 0x9f, 0x85, 0x92, 0xf2, + 0x38, 0x92, 0x2e, 0x87, 0x56, 0x8e, 0xcb, 0x61, 0xef, 0x7b, 0x59, 0x1a, 0x6d, 0x15, 0x33, 0x8d, + 0xb6, 0xbe, 0x62, 0x41, 0xac, 0x32, 0x40, 0x6f, 0x40, 0xa9, 0xed, 0x33, 0x5b, 0xc4, 0x40, 0x1a, + 0xf8, 0x3e, 0xd9, 0x55, 0xe7, 0xc0, 0x23, 0x20, 0x05, 0x7c, 0x14, 0xaa, 0xb2, 0x2a, 0x8e, 0xa9, + 0xa0, 0xeb, 0x30, 0xdc, 0x0e, 0x48, 0x2d, 0x62, 0xe1, 0x39, 0xfa, 0x27, 0xc8, 0x57, 0x0d, 0xaf, + 0x88, 0x25, 0x05, 0xfb, 0x3f, 0x5a, 0x30, 0x95, 0x44, 0x45, 0x1f, 0x81, 0x01, 0x72, 0x8f, 0xd4, + 0x45, 0x7f, 0x33, 0x2f, 0xd9, 0x58, 0xe8, 0xc0, 0x07, 0x80, 0xfe, 0xc7, 0xac, 0x16, 0xba, 0x06, + 0xc3, 0xf4, 0x86, 0xbd, 0xaa, 0x42, 0x51, 0x3d, 0x9e, 0x77, 0x4b, 0x2b, 0x56, 0x85, 0x77, 0x4e, + 0x14, 0x61, 0x59, 0x9d, 0x59, 0x4a, 0xd5, 0xdb, 0x35, 0xfa, 0x78, 0x89, 0xba, 0xbd, 0xb1, 0x37, + 0x96, 0xaa, 0x1c, 0x49, 0x50, 0xe3, 0x96, 0x52, 0xb2, 0x10, 0xc7, 0x44, 0xec, 0x9f, 0xb7, 0x00, + 0xb8, 0x61, 0x98, 0xe3, 0x6d, 0x93, 0x13, 0x90, 0x93, 0x57, 0x60, 0x20, 0x6c, 0x93, 0x7a, 0x37, + 0x33, 0xd9, 0xb8, 0x3f, 0xb5, 0x36, 0xa9, 0xc7, 0x2b, 0x8e, 0xfe, 0xc3, 0xac, 0xb6, 0xfd, 0xfd, + 0x00, 0x13, 0x31, 0xda, 0x6a, 0x44, 0x5a, 0xe8, 0x39, 0x23, 0x4c, 0xc1, 0xd9, 0x44, 0x98, 0x82, + 0x12, 0xc3, 0xd6, 0x44, 0xb2, 0x9f, 0x85, 0x62, 0xcb, 0xb9, 0x27, 0x64, 0x6e, 0xcf, 0x74, 0xef, + 0x06, 0xa5, 0x3f, 0xbf, 0xe6, 0xdc, 0xe3, 0xcf, 0xd2, 0x67, 0xe4, 0x0e, 0x59, 0x73, 0xee, 0x1d, + 0x72, 0x63, 0x58, 0x76, 0x4a, 0xdf, 0x70, 0xc3, 0xe8, 0xf3, 0xff, 0x3e, 0xfe, 0xcf, 0xf6, 0x1d, + 0x6d, 0x84, 0xb5, 0xe5, 0x7a, 0xc2, 0xe6, 0xa9, 0xaf, 0xb6, 0x5c, 0x2f, 0xd9, 0x96, 0xeb, 0xf5, + 0xd1, 0x96, 0xeb, 0xa1, 0xb7, 0x61, 0x58, 0x98, 0x24, 0x8a, 0xb0, 0x40, 0x97, 0xfb, 0x68, 0x4f, + 0x58, 0x34, 0xf2, 0x36, 0x2f, 0xcb, 0x67, 0xb7, 0x28, 0xed, 0xd9, 0xae, 0x6c, 0x10, 0xfd, 0x45, + 0x0b, 0x26, 0xc4, 0x6f, 0x4c, 0xde, 0xea, 0x90, 0x30, 0x12, 0x6c, 0xe9, 0x87, 0xfa, 0xef, 0x83, + 0xa8, 0xc8, 0xbb, 0xf2, 0x21, 0x79, 0xcf, 0x98, 0xc0, 0x9e, 0x3d, 0x4a, 0xf4, 0x02, 0xfd, 0x6d, + 0x0b, 0x4e, 0xb5, 0x9c, 0x7b, 0xbc, 0x45, 0x5e, 0x86, 0x9d, 0xc8, 0xf5, 0x85, 0x6a, 0xff, 0x23, + 0xfd, 0x4d, 0x7f, 0xaa, 0x3a, 0xef, 0xa4, 0xd4, 0x3f, 0x9e, 0xca, 0x42, 0xe9, 0xd9, 0xd5, 0xcc, + 0x7e, 0xcd, 0x6d, 0xc1, 0x88, 0x5c, 0x6f, 0x19, 0xc2, 0x8d, 0x8a, 0xce, 0x73, 0x1f, 0xd9, 0x22, + 0x54, 0x77, 0xff, 0xa7, 0xed, 0x88, 0xb5, 0xf6, 0x50, 0xdb, 0xf9, 0x2c, 0x8c, 0xe9, 0x6b, 0xec, + 0xa1, 0xb6, 0xf5, 0x16, 0xcc, 0x64, 0xac, 0xa5, 0x87, 0xda, 0xe4, 0x5d, 0x38, 0x9b, 0xbb, 0x3e, + 0x1e, 0x66, 0xc3, 0xf6, 0x57, 0x2d, 0xfd, 0x1c, 0x3c, 0x01, 0x65, 0xc5, 0x92, 0xa9, 0xac, 0x38, + 0xdf, 0x7d, 0xe7, 0xe4, 0x68, 0x2c, 0xde, 0xd4, 0x3b, 0x4d, 0x4f, 0x75, 0xf4, 0x3a, 0x0c, 0x35, + 0x69, 0x89, 0x34, 0x6c, 0xb5, 0x7b, 0xef, 0xc8, 0x98, 0x99, 0x64, 0xe5, 0x21, 0x16, 0x14, 0xec, + 0x5f, 0xb2, 0x60, 0xe0, 0x04, 0x46, 0x02, 0x9b, 0x23, 0xf1, 0x5c, 0x2e, 0x69, 0x11, 0x21, 0x79, + 0x1e, 0x3b, 0x77, 0x97, 0xef, 0x45, 0xc4, 0x0b, 0xd9, 0x8d, 0x9c, 0x39, 0x30, 0x3f, 0x6d, 0xc1, + 0xcc, 0x0d, 0xdf, 0x69, 0x2c, 0x3a, 0x4d, 0xc7, 0xab, 0x93, 0x60, 0xd5, 0xdb, 0x3e, 0x92, 0x55, + 0x76, 0xa1, 0xa7, 0x55, 0xf6, 0x92, 0x34, 0x6a, 0x1a, 0xc8, 0x9f, 0x3f, 0xca, 0x49, 0x27, 0x03, + 0xb7, 0x18, 0xe6, 0xb7, 0x3b, 0x80, 0xf4, 0x5e, 0x0a, 0x1f, 0x19, 0x0c, 0xc3, 0x2e, 0xef, 0xaf, + 0x98, 0xc4, 0xa7, 0xb2, 0x39, 0xdc, 0xd4, 0xe7, 0x69, 0xde, 0x1f, 0xbc, 0x00, 0x4b, 0x42, 0xf6, + 0xcb, 0x90, 0xe9, 0x68, 0xdf, 0x5b, 0x2e, 0x61, 0x7f, 0x02, 0xa6, 0x59, 0xcd, 0x23, 0x4a, 0x06, + 0xec, 0x84, 0x34, 0x35, 0x23, 0x04, 0x9f, 0xfd, 0x05, 0x0b, 0x26, 0xd7, 0x13, 0x91, 0xc9, 0x2e, + 0x32, 0xfd, 0x6b, 0x86, 0x10, 0xbf, 0xc6, 0x4a, 0xb1, 0x80, 0x1e, 0xbb, 0x90, 0xeb, 0xcf, 0x2d, + 0x88, 0x63, 0x5f, 0x9c, 0x00, 0xfb, 0xb6, 0x64, 0xb0, 0x6f, 0x99, 0x8c, 0xac, 0xea, 0x4e, 0x1e, + 0xf7, 0x86, 0xae, 0xab, 0xa8, 0x50, 0x5d, 0x78, 0xd8, 0x98, 0x0c, 0x5f, 0x8a, 0x13, 0x66, 0xe8, + 0x28, 0x19, 0x27, 0xca, 0xfe, 0xed, 0x02, 0x20, 0x85, 0xdb, 0x77, 0xd4, 0xaa, 0x74, 0x8d, 0xe3, + 0x89, 0x5a, 0xb5, 0x07, 0x88, 0x59, 0x10, 0x04, 0x8e, 0x17, 0x72, 0xb2, 0xae, 0x10, 0xeb, 0x1d, + 0xcd, 0x3c, 0x61, 0x4e, 0x34, 0x89, 0x6e, 0xa4, 0xa8, 0xe1, 0x8c, 0x16, 0x34, 0xcb, 0x90, 0xc1, + 0x7e, 0x2d, 0x43, 0x86, 0x7a, 0xf8, 0xc1, 0xfd, 0x9c, 0x05, 0xe3, 0x6a, 0x98, 0xde, 0x25, 0x56, + 0xea, 0xaa, 0x3f, 0x39, 0x07, 0x68, 0x55, 0xeb, 0x32, 0xbb, 0x58, 0xbe, 0x93, 0xf9, 0x33, 0x3a, + 0x4d, 0xf7, 0x6d, 0xa2, 0x62, 0x06, 0x96, 0x85, 0x7f, 0xa2, 0x28, 0x3d, 0x3c, 0x28, 0x8f, 0xab, + 0x7f, 0x3c, 0x26, 0x72, 0x5c, 0x85, 0x1e, 0xc9, 0x93, 0x89, 0xa5, 0x88, 0x5e, 0x82, 0xc1, 0xf6, + 0x8e, 0x13, 0x92, 0x84, 0x37, 0xcf, 0x60, 0x95, 0x16, 0x1e, 0x1e, 0x94, 0x27, 0x54, 0x05, 0x56, + 0x82, 0x39, 0x76, 0xff, 0xb1, 0xc0, 0xd2, 0x8b, 0xb3, 0x67, 0x2c, 0xb0, 0x3f, 0xb1, 0x60, 0x60, + 0xdd, 0x6f, 0x9c, 0xc4, 0x11, 0xf0, 0x9a, 0x71, 0x04, 0x3c, 0x96, 0x17, 0xae, 0x3e, 0x77, 0xf7, + 0xaf, 0x24, 0x76, 0xff, 0xf9, 0x5c, 0x0a, 0xdd, 0x37, 0x7e, 0x0b, 0x46, 0x59, 0x10, 0x7c, 0xe1, + 0xb9, 0xf4, 0x82, 0xb1, 0xe1, 0xcb, 0x89, 0x0d, 0x3f, 0xa9, 0xa1, 0x6a, 0x3b, 0xfd, 0x69, 0x18, + 0x16, 0xae, 0x30, 0x49, 0xb7, 0x50, 0x81, 0x8b, 0x25, 0xdc, 0xfe, 0xc9, 0x22, 0x18, 0x41, 0xf7, + 0xd1, 0xaf, 0x58, 0x30, 0x1f, 0x70, 0x13, 0xd9, 0x46, 0xa5, 0x13, 0xb8, 0xde, 0x76, 0xad, 0xbe, + 0x43, 0x1a, 0x9d, 0xa6, 0xeb, 0x6d, 0xaf, 0x6e, 0x7b, 0xbe, 0x2a, 0x5e, 0xbe, 0x47, 0xea, 0x1d, + 0xa6, 0x76, 0xeb, 0x11, 0xe1, 0x5f, 0x99, 0x9a, 0x3f, 0x7f, 0xff, 0xa0, 0x3c, 0x8f, 0x8f, 0x44, + 0x1b, 0x1f, 0xb1, 0x2f, 0xe8, 0x37, 0x2c, 0xb8, 0xcc, 0x63, 0xd1, 0xf7, 0xdf, 0xff, 0x2e, 0xaf, + 0xe5, 0xaa, 0x24, 0x15, 0x13, 0xd9, 0x20, 0x41, 0x6b, 0xf1, 0xc3, 0x62, 0x40, 0x2f, 0x57, 0x8f, + 0xd6, 0x16, 0x3e, 0x6a, 0xe7, 0xec, 0x7f, 0x54, 0x84, 0x71, 0x11, 0x33, 0x4a, 0xdc, 0x01, 0x2f, + 0x19, 0x4b, 0xe2, 0xf1, 0xc4, 0x92, 0x98, 0x36, 0x90, 0x8f, 0xe7, 0xf8, 0x0f, 0x61, 0x9a, 0x1e, + 0xce, 0xd7, 0x88, 0x13, 0x44, 0x9b, 0xc4, 0xe1, 0x06, 0x5f, 0xc5, 0x23, 0x9f, 0xfe, 0x4a, 0x3e, + 0x79, 0x23, 0x49, 0x0c, 0xa7, 0xe9, 0x7f, 0x3b, 0xdd, 0x39, 0x1e, 0x4c, 0xa5, 0xc2, 0x7e, 0x7d, + 0x12, 0x4a, 0xca, 0x8f, 0x43, 0x1c, 0x3a, 0xdd, 0xa3, 0xe7, 0x25, 0x29, 0x70, 0xf1, 0x57, 0xec, + 0x43, 0x14, 0x93, 0xb3, 0xff, 0x4e, 0xc1, 0x68, 0x90, 0x4f, 0xe2, 0x3a, 0x8c, 0x38, 0x61, 0xe8, + 0x6e, 0x7b, 0xa4, 0xd1, 0x4d, 0x42, 0x99, 0x6a, 0x86, 0xf9, 0xd2, 0x2c, 0x88, 0x9a, 0x58, 0xd1, + 0x40, 0xd7, 0xb8, 0x59, 0xdd, 0x1e, 0xe9, 0x26, 0x9e, 0x4c, 0x51, 0x03, 0x69, 0x78, 0xb7, 0x47, + 0xb0, 0xa8, 0x8f, 0x3e, 0xc5, 0xed, 0x1e, 0xaf, 0x7b, 0xfe, 0x5d, 0xef, 0xaa, 0xef, 0xcb, 0xb8, + 0x0c, 0xfd, 0x11, 0x9c, 0x96, 0xd6, 0x8e, 0xaa, 0x3a, 0x36, 0xa9, 0xf5, 0x17, 0x47, 0xf3, 0x73, + 0xc0, 0x62, 0x6f, 0x9b, 0x6e, 0xd3, 0x21, 0x22, 0x30, 0x29, 0x02, 0x92, 0xc9, 0x32, 0x31, 0x76, + 0x99, 0x4f, 0x39, 0xb3, 0x76, 0x2c, 0x48, 0xbf, 0x6e, 0x92, 0xc0, 0x49, 0x9a, 0xf6, 0xcf, 0x58, + 0xc0, 0x5c, 0x48, 0x4f, 0x80, 0x1f, 0xf9, 0xa8, 0xc9, 0x8f, 0xcc, 0xe6, 0x0d, 0x72, 0x0e, 0x2b, + 0xf2, 0x22, 0x5f, 0x59, 0xd5, 0xc0, 0xbf, 0xb7, 0x2f, 0x8c, 0x55, 0x7a, 0xbf, 0x3f, 0xec, 0xff, + 0x69, 0xf1, 0x43, 0x4c, 0x79, 0x59, 0xa0, 0xef, 0x86, 0x91, 0xba, 0xd3, 0x76, 0xea, 0x3c, 0x43, + 0x4c, 0xae, 0x44, 0xcf, 0xa8, 0x34, 0xbf, 0x24, 0x6a, 0x70, 0x09, 0x95, 0x0c, 0x6c, 0x37, 0x22, + 0x8b, 0x7b, 0x4a, 0xa5, 0x54, 0x93, 0x73, 0xbb, 0x30, 0x6e, 0x10, 0x7b, 0xa8, 0xe2, 0x8c, 0xef, + 0xe6, 0x57, 0xac, 0x0a, 0xc4, 0xd8, 0x82, 0x69, 0x4f, 0xfb, 0x4f, 0x2f, 0x14, 0xf9, 0xb8, 0x7c, + 0xb2, 0xd7, 0x25, 0xca, 0x6e, 0x1f, 0xcd, 0x3b, 0x35, 0x41, 0x06, 0xa7, 0x29, 0xdb, 0x3f, 0x65, + 0xc1, 0x23, 0x3a, 0xa2, 0xe6, 0x00, 0xd3, 0x4b, 0x49, 0x52, 0x81, 0x11, 0xbf, 0x4d, 0x02, 0x27, + 0xf2, 0x03, 0x71, 0x6b, 0x5c, 0x92, 0x83, 0x7e, 0x53, 0x94, 0x1f, 0x8a, 0x78, 0xe7, 0x92, 0xba, + 0x2c, 0xc7, 0xaa, 0x26, 0x7d, 0x7d, 0xb2, 0xc1, 0x08, 0x85, 0xab, 0x13, 0x3b, 0x03, 0x98, 0x26, + 0x3d, 0xc4, 0x02, 0x62, 0x7f, 0xc3, 0xe2, 0x0b, 0x4b, 0xef, 0x3a, 0x7a, 0x0b, 0xa6, 0x5a, 0x4e, + 0x54, 0xdf, 0x59, 0xbe, 0xd7, 0x0e, 0xb8, 0xca, 0x49, 0x8e, 0xd3, 0x33, 0xbd, 0xc6, 0x49, 0xfb, + 0xc8, 0xd8, 0x94, 0x73, 0x2d, 0x41, 0x0c, 0xa7, 0xc8, 0xa3, 0x4d, 0x18, 0x65, 0x65, 0xcc, 0x8b, + 0x2f, 0xec, 0xc6, 0x1a, 0xe4, 0xb5, 0xa6, 0x8c, 0x11, 0xd6, 0x62, 0x3a, 0x58, 0x27, 0x6a, 0x7f, + 0xa5, 0xc8, 0x77, 0x3b, 0x63, 0xe5, 0x9f, 0x86, 0xe1, 0xb6, 0xdf, 0x58, 0x5a, 0xad, 0x60, 0x31, + 0x0b, 0xea, 0x1a, 0xa9, 0xf2, 0x62, 0x2c, 0xe1, 0xe8, 0x12, 0x8c, 0x88, 0x9f, 0x52, 0x45, 0xc8, + 0xce, 0x66, 0x81, 0x17, 0x62, 0x05, 0x45, 0xcf, 0x03, 0xb4, 0x03, 0x7f, 0xcf, 0x6d, 0xb0, 0xe8, + 0x12, 0x45, 0xd3, 0x8e, 0xa8, 0xaa, 0x20, 0x58, 0xc3, 0x42, 0xaf, 0xc2, 0x78, 0xc7, 0x0b, 0x39, + 0x3b, 0xa2, 0xc5, 0x92, 0x55, 0x16, 0x2e, 0xb7, 0x74, 0x20, 0x36, 0x71, 0xd1, 0x02, 0x0c, 0x45, + 0x0e, 0xb3, 0x8b, 0x19, 0xcc, 0x37, 0xf7, 0xdd, 0xa0, 0x18, 0x7a, 0x32, 0x12, 0x5a, 0x01, 0x8b, + 0x8a, 0xe8, 0x93, 0xd2, 0xa1, 0x96, 0x1f, 0xec, 0xc2, 0xce, 0xbe, 0xbf, 0x4b, 0x40, 0x73, 0xa7, + 0x15, 0xf6, 0xfb, 0x06, 0x2d, 0xf4, 0x0a, 0x00, 0xb9, 0x17, 0x91, 0xc0, 0x73, 0x9a, 0xca, 0x9a, + 0x4d, 0xf1, 0x05, 0x15, 0x7f, 0xdd, 0x8f, 0x6e, 0x85, 0x64, 0x59, 0x61, 0x60, 0x0d, 0xdb, 0xfe, + 0x8d, 0x12, 0x40, 0xcc, 0xb7, 0xa3, 0xb7, 0x53, 0x07, 0xd7, 0xb3, 0xdd, 0x39, 0xfd, 0xe3, 0x3b, + 0xb5, 0xd0, 0x0f, 0x58, 0x30, 0xea, 0x34, 0x9b, 0x7e, 0xdd, 0xe1, 0xd1, 0x7e, 0x0b, 0xdd, 0x0f, + 0x4e, 0xd1, 0xfe, 0x42, 0x5c, 0x83, 0x77, 0xe1, 0x05, 0xb9, 0x42, 0x35, 0x48, 0xcf, 0x5e, 0xe8, + 0x0d, 0xa3, 0x0f, 0xca, 0xa7, 0x62, 0xd1, 0x18, 0x4a, 0xf5, 0x54, 0x2c, 0xb1, 0x3b, 0x42, 0x7f, + 0x25, 0xde, 0x32, 0x5e, 0x89, 0x03, 0xf9, 0x1e, 0x83, 0x06, 0xfb, 0xda, 0xeb, 0x81, 0x88, 0xaa, + 0x7a, 0xf4, 0x80, 0xc1, 0x7c, 0xf7, 0x3c, 0xed, 0x9d, 0xd4, 0x23, 0x72, 0xc0, 0x67, 0x61, 0xb2, + 0x61, 0x32, 0x01, 0x62, 0x25, 0x3e, 0x95, 0x47, 0x37, 0xc1, 0x33, 0xc4, 0xd7, 0x7e, 0x02, 0x80, + 0x93, 0x84, 0x51, 0x95, 0x07, 0x93, 0x58, 0xf5, 0xb6, 0x7c, 0xe1, 0xeb, 0x61, 0xe7, 0xce, 0xe5, + 0x7e, 0x18, 0x91, 0x16, 0xc5, 0x8c, 0x6f, 0xf7, 0x75, 0x51, 0x17, 0x2b, 0x2a, 0xe8, 0x75, 0x18, + 0x62, 0xfe, 0x59, 0xe1, 0xec, 0x48, 0xbe, 0xc4, 0xd9, 0x8c, 0x8e, 0x16, 0x6f, 0x48, 0xf6, 0x37, + 0xc4, 0x82, 0x02, 0xba, 0x26, 0xbd, 0x1f, 0xc3, 0x55, 0xef, 0x56, 0x48, 0x98, 0xf7, 0x63, 0x69, + 0xf1, 0xc9, 0xd8, 0xb1, 0x91, 0x97, 0x67, 0xa6, 0x2c, 0x33, 0x6a, 0x52, 0x2e, 0x4a, 0xfc, 0x97, + 0x99, 0xd0, 0x66, 0x21, 0xbf, 0x7b, 0x66, 0xb6, 0xb4, 0x78, 0x38, 0x6f, 0x9b, 0x24, 0x70, 0x92, + 0x26, 0xe5, 0x48, 0xf9, 0xae, 0x17, 0xde, 0x22, 0xbd, 0xce, 0x0e, 0xfe, 0x10, 0x67, 0xb7, 0x11, + 0x2f, 0xc1, 0xa2, 0xfe, 0x89, 0xb2, 0x07, 0x73, 0x1e, 0x4c, 0x25, 0xb7, 0xe8, 0x43, 0x65, 0x47, + 0xfe, 0x60, 0x00, 0x26, 0xcc, 0x25, 0x85, 0x2e, 0x43, 0x49, 0x10, 0x51, 0xd9, 0x04, 0xd4, 0x2e, + 0x59, 0x93, 0x00, 0x1c, 0xe3, 0xb0, 0x24, 0x12, 0xac, 0xba, 0x66, 0x1e, 0x1c, 0x27, 0x91, 0x50, + 0x10, 0xac, 0x61, 0xd1, 0x87, 0xd5, 0xa6, 0xef, 0x47, 0xea, 0x42, 0x52, 0xeb, 0x6e, 0x91, 0x95, + 0x62, 0x01, 0xa5, 0x17, 0xd1, 0x2e, 0x09, 0x3c, 0xd2, 0x34, 0xe3, 0x0e, 0xab, 0x8b, 0xe8, 0xba, + 0x0e, 0xc4, 0x26, 0x2e, 0xbd, 0x4e, 0xfd, 0x90, 0x2d, 0x64, 0xf1, 0x7c, 0x8b, 0xcd, 0xad, 0x6b, + 0xdc, 0x01, 0x5b, 0xc2, 0xd1, 0x27, 0xe0, 0x11, 0x15, 0x5b, 0x09, 0x73, 0x6d, 0x86, 0x6c, 0x71, + 0xc8, 0x90, 0xb6, 0x3c, 0xb2, 0x94, 0x8d, 0x86, 0xf3, 0xea, 0xa3, 0xd7, 0x60, 0x42, 0xb0, 0xf8, + 0x92, 0xe2, 0xb0, 0x69, 0x61, 0x74, 0xdd, 0x80, 0xe2, 0x04, 0xb6, 0x8c, 0x9c, 0xcc, 0xb8, 0x6c, + 0x49, 0x61, 0x24, 0x1d, 0x39, 0x59, 0x87, 0xe3, 0x54, 0x0d, 0xb4, 0x00, 0x93, 0x9c, 0x07, 0x73, + 0xbd, 0x6d, 0x3e, 0x27, 0xc2, 0x99, 0x4b, 0x6d, 0xa9, 0x9b, 0x26, 0x18, 0x27, 0xf1, 0xd1, 0xcb, + 0x30, 0xe6, 0x04, 0xf5, 0x1d, 0x37, 0x22, 0xf5, 0xa8, 0x13, 0x70, 0x2f, 0x2f, 0xcd, 0x44, 0x6b, + 0x41, 0x83, 0x61, 0x03, 0xd3, 0x7e, 0x1b, 0x66, 0x32, 0x22, 0x33, 0xd0, 0x85, 0xe3, 0xb4, 0x5d, + 0xf9, 0x4d, 0x09, 0x0b, 0xe7, 0x85, 0xea, 0xaa, 0xfc, 0x1a, 0x0d, 0x8b, 0xae, 0x4e, 0x16, 0xc1, + 0x41, 0x4b, 0x7c, 0xa8, 0x56, 0xe7, 0x8a, 0x04, 0xe0, 0x18, 0xc7, 0xfe, 0x2f, 0x05, 0x98, 0xcc, + 0xd0, 0xad, 0xb0, 0xe4, 0x7b, 0x89, 0x47, 0x4a, 0x9c, 0x6b, 0xcf, 0x0c, 0xc4, 0x5d, 0x38, 0x42, + 0x20, 0xee, 0x62, 0xaf, 0x40, 0xdc, 0x03, 0xef, 0x24, 0x10, 0xb7, 0x39, 0x62, 0x83, 0x7d, 0x8d, + 0x58, 0x46, 0xf0, 0xee, 0xa1, 0x23, 0x06, 0xef, 0x36, 0x06, 0x7d, 0xb8, 0x8f, 0x41, 0xff, 0xb1, + 0x02, 0x4c, 0x25, 0x4d, 0x49, 0x4f, 0x40, 0x6e, 0xfb, 0xba, 0x21, 0xb7, 0xbd, 0xd4, 0x8f, 0xf3, + 0x6d, 0xae, 0x0c, 0x17, 0x27, 0x64, 0xb8, 0x1f, 0xe8, 0x8b, 0x5a, 0x77, 0x79, 0xee, 0x5f, 0x2d, + 0xc0, 0xe9, 0x4c, 0xef, 0xdf, 0x13, 0x18, 0x9b, 0x9b, 0xc6, 0xd8, 0x3c, 0xd7, 0xb7, 0x63, 0x72, + 0xee, 0x00, 0xdd, 0x49, 0x0c, 0xd0, 0xe5, 0xfe, 0x49, 0x76, 0x1f, 0xa5, 0xaf, 0x17, 0xe1, 0x7c, + 0x66, 0xbd, 0x58, 0xec, 0xb9, 0x62, 0x88, 0x3d, 0x9f, 0x4f, 0x88, 0x3d, 0xed, 0xee, 0xb5, 0x8f, + 0x47, 0x0e, 0x2a, 0x1c, 0x74, 0x59, 0x98, 0x81, 0x07, 0x94, 0x81, 0x1a, 0x0e, 0xba, 0x8a, 0x10, + 0x36, 0xe9, 0x7e, 0x3b, 0xc9, 0x3e, 0xff, 0xa5, 0x05, 0x67, 0x33, 0xe7, 0xe6, 0x04, 0x64, 0x5d, + 0xeb, 0xa6, 0xac, 0xeb, 0xe9, 0xbe, 0x57, 0x6b, 0x8e, 0xf0, 0xeb, 0x2b, 0x83, 0x39, 0xdf, 0xc2, + 0x5e, 0xf2, 0x37, 0x61, 0xd4, 0xa9, 0xd7, 0x49, 0x18, 0xae, 0xf9, 0x0d, 0x15, 0x6b, 0xf8, 0x39, + 0xf6, 0xce, 0x8a, 0x8b, 0x0f, 0x0f, 0xca, 0x73, 0x49, 0x12, 0x31, 0x18, 0xeb, 0x14, 0xd0, 0xa7, + 0x60, 0x24, 0x14, 0xf7, 0xa6, 0x98, 0xfb, 0x17, 0xfa, 0x1c, 0x1c, 0x67, 0x93, 0x34, 0xcd, 0x60, + 0x48, 0x4a, 0x52, 0xa1, 0x48, 0x9a, 0x81, 0x53, 0x0a, 0xc7, 0x1a, 0x38, 0xe5, 0x79, 0x80, 0x3d, + 0xf5, 0x18, 0x48, 0xca, 0x1f, 0xb4, 0x67, 0x82, 0x86, 0x85, 0x3e, 0x06, 0x53, 0x21, 0x8f, 0x16, + 0xb8, 0xd4, 0x74, 0x42, 0xe6, 0x47, 0x23, 0x56, 0x21, 0x0b, 0xb8, 0x54, 0x4b, 0xc0, 0x70, 0x0a, + 0x1b, 0xad, 0xc8, 0x56, 0x59, 0x68, 0x43, 0xbe, 0x30, 0x2f, 0xc6, 0x2d, 0x8a, 0xd4, 0xbf, 0xa7, + 0x92, 0xc3, 0xcf, 0x06, 0x5e, 0xab, 0x89, 0x3e, 0x05, 0x40, 0x97, 0x8f, 0x90, 0x43, 0x0c, 0xe7, + 0x1f, 0x9e, 0xf4, 0x54, 0x69, 0x64, 0x1a, 0x37, 0x33, 0x9f, 0xda, 0x8a, 0x22, 0x82, 0x35, 0x82, + 0x68, 0x0b, 0xc6, 0xe3, 0x7f, 0x71, 0x66, 0xcc, 0x23, 0xb6, 0xc0, 0xe4, 0xde, 0x15, 0x9d, 0x0e, + 0x36, 0xc9, 0xda, 0x3f, 0x31, 0x0c, 0x8f, 0x76, 0x39, 0x8b, 0xd1, 0x82, 0xa9, 0xef, 0x7d, 0x26, + 0xf9, 0x88, 0x9f, 0xcb, 0xac, 0x6c, 0xbc, 0xea, 0x13, 0x4b, 0xbe, 0xf0, 0x8e, 0x97, 0xfc, 0x8f, + 0x58, 0x9a, 0x78, 0x85, 0x5b, 0x96, 0x7e, 0xf4, 0x88, 0x77, 0xcc, 0x31, 0xca, 0x5b, 0xb6, 0x32, + 0x84, 0x16, 0xcf, 0xf7, 0xdd, 0x9d, 0xfe, 0xa5, 0x18, 0x5f, 0xb5, 0x00, 0x09, 0xf1, 0x0a, 0x69, + 0xa8, 0x0d, 0x25, 0xe4, 0x19, 0x57, 0x8f, 0xfa, 0xfd, 0x0b, 0x29, 0x4a, 0x7c, 0x24, 0x5e, 0x91, + 0x97, 0x41, 0x1a, 0xa1, 0xe7, 0x98, 0x64, 0x74, 0x0f, 0x7d, 0x82, 0x45, 0xd3, 0x75, 0xdf, 0x16, + 0x1c, 0x90, 0xd8, 0x70, 0x2f, 0x89, 0x48, 0xba, 0xaa, 0x9c, 0xb2, 0xba, 0x99, 0xdd, 0xd5, 0x91, + 0xb0, 0x41, 0xea, 0x64, 0xdf, 0xdf, 0x1d, 0x78, 0x24, 0x67, 0xc8, 0x1e, 0xea, 0x33, 0xfc, 0xb7, + 0x2c, 0x38, 0xd7, 0x35, 0x2c, 0xcc, 0xb7, 0x20, 0x83, 0x68, 0x7f, 0xde, 0x82, 0xec, 0xc9, 0x36, + 0xcc, 0xca, 0x2e, 0x43, 0xa9, 0x4e, 0x0b, 0x35, 0x3f, 0xe0, 0x38, 0x40, 0x82, 0x04, 0xe0, 0x18, + 0xc7, 0xb0, 0x1e, 0x2b, 0xf4, 0xb4, 0x1e, 0xfb, 0x55, 0x0b, 0x52, 0x87, 0xfc, 0x09, 0x70, 0x1b, + 0xab, 0x26, 0xb7, 0xf1, 0x64, 0x3f, 0xa3, 0x99, 0xc3, 0x68, 0xfc, 0xf1, 0x24, 0x9c, 0xc9, 0x71, + 0xcb, 0xdb, 0x83, 0xe9, 0xed, 0x3a, 0x31, 0x3d, 0xac, 0xbb, 0x45, 0x1e, 0xea, 0xea, 0x8e, 0xcd, + 0x92, 0xc3, 0x4e, 0xa7, 0x50, 0x70, 0xba, 0x09, 0xf4, 0x79, 0x0b, 0x4e, 0x39, 0x77, 0xc3, 0x65, + 0xca, 0x35, 0xba, 0xf5, 0xc5, 0xa6, 0x5f, 0xdf, 0xa5, 0x57, 0xb2, 0xdc, 0x08, 0x2f, 0x66, 0x4a, + 0xf2, 0xee, 0xd4, 0x52, 0xf8, 0x46, 0xf3, 0x2c, 0x5b, 0x6e, 0x16, 0x16, 0xce, 0x6c, 0x0b, 0x61, + 0x91, 0x42, 0x81, 0xbe, 0x49, 0xbb, 0xc4, 0x00, 0xc8, 0xf2, 0x9f, 0xe4, 0x6c, 0x90, 0x84, 0x60, + 0x45, 0x07, 0x7d, 0x06, 0x4a, 0xdb, 0xd2, 0xdd, 0x37, 0x83, 0xcd, 0x8a, 0x07, 0xb2, 0xbb, 0x13, + 0x34, 0x57, 0xc7, 0x2b, 0x24, 0x1c, 0x13, 0x45, 0xaf, 0x41, 0xd1, 0xdb, 0x0a, 0xbb, 0x25, 0x9c, + 0x4d, 0xd8, 0x5d, 0xf2, 0x48, 0x1b, 0xeb, 0x2b, 0x35, 0x4c, 0x2b, 0xa2, 0x6b, 0x50, 0x0c, 0x36, + 0x1b, 0x42, 0x0c, 0x9d, 0xb9, 0x49, 0xf1, 0x62, 0x25, 0xa7, 0x57, 0x8c, 0x12, 0x5e, 0xac, 0x60, + 0x4a, 0x02, 0x55, 0x61, 0x90, 0xf9, 0xb2, 0x09, 0xa6, 0x26, 0xf3, 0xf9, 0xd6, 0xc5, 0x27, 0x94, + 0x87, 0xe3, 0x60, 0x08, 0x98, 0x13, 0x42, 0x1b, 0x30, 0x54, 0x67, 0xc9, 0x49, 0x05, 0x17, 0xf3, + 0xc1, 0x4c, 0x81, 0x73, 0x97, 0xac, 0xad, 0x42, 0xfe, 0xca, 0x30, 0xb0, 0xa0, 0xc5, 0xa8, 0x92, + 0xf6, 0xce, 0x56, 0x28, 0x92, 0x77, 0x67, 0x53, 0xed, 0x92, 0x8c, 0x58, 0x50, 0x65, 0x18, 0x58, + 0xd0, 0x42, 0xaf, 0x40, 0x61, 0xab, 0x2e, 0xfc, 0xd4, 0x32, 0x25, 0xcf, 0x66, 0xb0, 0x94, 0xc5, + 0xa1, 0xfb, 0x07, 0xe5, 0xc2, 0xca, 0x12, 0x2e, 0x6c, 0xd5, 0xd1, 0x3a, 0x0c, 0x6f, 0xf1, 0xf0, + 0x0a, 0x42, 0xb8, 0xfc, 0x54, 0x76, 0xe4, 0x87, 0x54, 0x04, 0x06, 0xee, 0xf3, 0x24, 0x00, 0x58, + 0x12, 0x61, 0x19, 0x09, 0x54, 0x98, 0x08, 0x11, 0xa5, 0x6e, 0xfe, 0x68, 0xa1, 0x3d, 0x38, 0x93, + 0x19, 0x07, 0x9b, 0xc0, 0x1a, 0x45, 0xba, 0xaa, 0x9d, 0xb7, 0x3b, 0x01, 0x0b, 0x05, 0x2e, 0xc2, + 0x19, 0x65, 0xae, 0xea, 0x05, 0x89, 0xd4, 0x6d, 0x55, 0x2b, 0x24, 0x1c, 0x13, 0x45, 0xbb, 0x30, + 0xbe, 0x17, 0xb6, 0x77, 0x88, 0xdc, 0xd2, 0x2c, 0xba, 0x51, 0x0e, 0x7f, 0x74, 0x5b, 0x20, 0xba, + 0x41, 0xd4, 0x71, 0x9a, 0xa9, 0x53, 0x88, 0xf1, 0xb2, 0xb7, 0x75, 0x62, 0xd8, 0xa4, 0x4d, 0x87, + 0xff, 0xad, 0x8e, 0xbf, 0xb9, 0x1f, 0x11, 0x11, 0x5c, 0x2e, 0x73, 0xf8, 0xdf, 0xe0, 0x28, 0xe9, + 0xe1, 0x17, 0x00, 0x2c, 0x89, 0xa0, 0xdb, 0x62, 0x78, 0xd8, 0xe9, 0x39, 0x95, 0x1f, 0x01, 0x76, + 0x41, 0x22, 0xe5, 0x0c, 0x0a, 0x3b, 0x2d, 0x63, 0x52, 0xec, 0x94, 0x6c, 0xef, 0xf8, 0x91, 0xef, + 0x25, 0x4e, 0xe8, 0xe9, 0xfc, 0x53, 0xb2, 0x9a, 0x81, 0x9f, 0x3e, 0x25, 0xb3, 0xb0, 0x70, 0x66, + 0x5b, 0xa8, 0x01, 0x13, 0x6d, 0x3f, 0x88, 0xee, 0xfa, 0x81, 0x5c, 0x5f, 0xa8, 0x8b, 0x70, 0xcc, + 0xc0, 0x14, 0x2d, 0xb2, 0xb8, 0x8d, 0x26, 0x04, 0x27, 0x68, 0xa2, 0x8f, 0xc3, 0x70, 0x58, 0x77, + 0x9a, 0x64, 0xf5, 0xe6, 0xec, 0x4c, 0xfe, 0xf5, 0x53, 0xe3, 0x28, 0x39, 0xab, 0x8b, 0x47, 0xc7, + 0xe0, 0x28, 0x58, 0x92, 0x43, 0x2b, 0x30, 0xc8, 0x32, 0xce, 0xb1, 0x48, 0x88, 0x39, 0x81, 0x6c, + 0x53, 0x56, 0xf0, 0xfc, 0x6c, 0x62, 0xc5, 0x98, 0x57, 0xa7, 0x7b, 0x40, 0xbc, 0x11, 0xfd, 0x70, + 0xf6, 0x74, 0xfe, 0x1e, 0x10, 0x4f, 0xcb, 0x9b, 0xb5, 0x6e, 0x7b, 0x40, 0x21, 0xe1, 0x98, 0x28, + 0x3d, 0x99, 0xe9, 0x69, 0x7a, 0xa6, 0x8b, 0xf9, 0x56, 0xee, 0x59, 0xca, 0x4e, 0x66, 0x7a, 0x92, + 0x52, 0x12, 0xf6, 0xef, 0x0d, 0xa7, 0x79, 0x16, 0x26, 0x55, 0xf8, 0x3e, 0x2b, 0xa5, 0x70, 0xfe, + 0x50, 0xbf, 0x42, 0xce, 0x63, 0x7c, 0x0a, 0x7d, 0xde, 0x82, 0x33, 0xed, 0xcc, 0x0f, 0x11, 0x0c, + 0x40, 0x7f, 0xb2, 0x52, 0xfe, 0xe9, 0x2a, 0x6a, 0x66, 0x36, 0x1c, 0xe7, 0xb4, 0x94, 0x7c, 0x6e, + 0x16, 0xdf, 0xf1, 0x73, 0x73, 0x0d, 0x46, 0xea, 0xfc, 0x29, 0xd2, 0x35, 0x59, 0x77, 0xf2, 0xed, + 0xcd, 0x58, 0x09, 0xf1, 0x86, 0xd9, 0xc2, 0x8a, 0x04, 0xfa, 0x51, 0x0b, 0xce, 0x25, 0xbb, 0x8e, + 0x09, 0x03, 0x8b, 0x50, 0x9b, 0x5c, 0xa0, 0xb1, 0x22, 0xbe, 0x3f, 0xc5, 0xff, 0x1b, 0xc8, 0x87, + 0xbd, 0x10, 0x70, 0xf7, 0xc6, 0x50, 0x25, 0x43, 0xa2, 0x32, 0x64, 0x6a, 0x91, 0xfa, 0x90, 0xaa, + 0xbc, 0x08, 0x63, 0x2d, 0xbf, 0xe3, 0x45, 0xc2, 0xda, 0x4b, 0x58, 0x9e, 0x30, 0x8b, 0x8b, 0x35, + 0xad, 0x1c, 0x1b, 0x58, 0x09, 0x59, 0xcc, 0xc8, 0x03, 0xcb, 0x62, 0xde, 0x84, 0x31, 0x4f, 0x33, + 0x4f, 0x16, 0xfc, 0xc0, 0xc5, 0xfc, 0x30, 0xb9, 0xba, 0x31, 0x33, 0xef, 0xa5, 0x5e, 0x82, 0x0d, + 0x6a, 0x27, 0x6b, 0x06, 0xf6, 0x65, 0x2b, 0x83, 0xa9, 0xe7, 0xa2, 0x98, 0x8f, 0x98, 0xa2, 0x98, + 0x8b, 0x49, 0x51, 0x4c, 0x4a, 0x83, 0x60, 0x48, 0x61, 0xfa, 0xcf, 0x02, 0xd4, 0x6f, 0xa8, 0x4d, + 0xbb, 0x09, 0x17, 0x7a, 0x5d, 0x4b, 0xcc, 0xec, 0xaf, 0xa1, 0xf4, 0xc5, 0xb1, 0xd9, 0x5f, 0x63, + 0xb5, 0x82, 0x19, 0xa4, 0xdf, 0x20, 0x4e, 0xf6, 0x7f, 0xb2, 0xa0, 0x58, 0xf5, 0x1b, 0x27, 0xf0, + 0xe0, 0xfd, 0xa8, 0xf1, 0xe0, 0x7d, 0x34, 0xfb, 0x42, 0x6c, 0xe4, 0xea, 0x3f, 0x96, 0x13, 0xfa, + 0x8f, 0x73, 0x79, 0x04, 0xba, 0x6b, 0x3b, 0x7e, 0xba, 0x08, 0xa3, 0x55, 0xbf, 0xa1, 0x6c, 0xee, + 0xff, 0xc9, 0x83, 0xd8, 0xdc, 0xe7, 0xe6, 0xb2, 0xd0, 0x28, 0x33, 0x6b, 0x41, 0xe9, 0x6e, 0xfc, + 0x2d, 0x66, 0x7a, 0x7f, 0x87, 0xb8, 0xdb, 0x3b, 0x11, 0x69, 0x24, 0x3f, 0xe7, 0xe4, 0x4c, 0xef, + 0x7f, 0xaf, 0x00, 0x93, 0x89, 0xd6, 0x51, 0x13, 0xc6, 0x9b, 0xba, 0x74, 0x5d, 0xac, 0xd3, 0x07, + 0x12, 0xcc, 0x0b, 0xd3, 0x65, 0xad, 0x08, 0x9b, 0xc4, 0xd1, 0x3c, 0x80, 0x52, 0x37, 0x4b, 0xf1, + 0x2a, 0xe3, 0xfa, 0x95, 0x3e, 0x3a, 0xc4, 0x1a, 0x06, 0x7a, 0x09, 0x46, 0x23, 0xbf, 0xed, 0x37, + 0xfd, 0xed, 0xfd, 0xeb, 0x44, 0xc6, 0xf7, 0x52, 0x06, 0x89, 0x1b, 0x31, 0x08, 0xeb, 0x78, 0xe8, + 0x1e, 0x4c, 0x2b, 0x22, 0xb5, 0x63, 0xd0, 0x38, 0x30, 0xa9, 0xc2, 0x7a, 0x92, 0x22, 0x4e, 0x37, + 0x62, 0xff, 0x6c, 0x91, 0x0f, 0xb1, 0x17, 0xb9, 0xef, 0xed, 0x86, 0x77, 0xf7, 0x6e, 0xf8, 0xba, + 0x05, 0x53, 0xb4, 0x75, 0x66, 0x6d, 0x25, 0xaf, 0x79, 0x15, 0x98, 0xdb, 0xea, 0x12, 0x98, 0xfb, + 0x22, 0x3d, 0x35, 0x1b, 0x7e, 0x27, 0x12, 0xb2, 0x3b, 0xed, 0x58, 0xa4, 0xa5, 0x58, 0x40, 0x05, + 0x1e, 0x09, 0x02, 0xe1, 0x21, 0xaa, 0xe3, 0x91, 0x20, 0xc0, 0x02, 0x2a, 0xe3, 0x76, 0x0f, 0x64, + 0xc7, 0xed, 0xe6, 0xe1, 0x57, 0x85, 0x5d, 0x8e, 0x60, 0xb8, 0xb4, 0xf0, 0xab, 0xd2, 0x60, 0x27, + 0xc6, 0xb1, 0xbf, 0x5a, 0x84, 0xb1, 0xaa, 0xdf, 0x88, 0x55, 0xcd, 0x2f, 0x1a, 0xaa, 0xe6, 0x0b, + 0x09, 0x55, 0xf3, 0x94, 0x8e, 0xfb, 0x9e, 0x62, 0xf9, 0x9b, 0xa5, 0x58, 0xfe, 0x87, 0x16, 0x9b, + 0xb5, 0xca, 0x7a, 0x8d, 0x1b, 0xef, 0xa1, 0x2b, 0x30, 0xca, 0x0e, 0x18, 0xe6, 0x92, 0x2c, 0xf5, + 0xaf, 0x2c, 0x1f, 0xd5, 0x7a, 0x5c, 0x8c, 0x75, 0x1c, 0x74, 0x09, 0x46, 0x42, 0xe2, 0x04, 0xf5, + 0x1d, 0x75, 0xba, 0x0a, 0x65, 0x29, 0x2f, 0xc3, 0x0a, 0x8a, 0xde, 0x88, 0x23, 0x7f, 0x16, 0xf3, + 0x5d, 0x1c, 0xf5, 0xfe, 0xf0, 0x2d, 0x92, 0x1f, 0xee, 0xd3, 0xbe, 0x03, 0x28, 0x8d, 0xdf, 0x47, + 0x6c, 0xba, 0xb2, 0x19, 0x9b, 0xae, 0x94, 0x8a, 0x4b, 0xf7, 0x67, 0x16, 0x4c, 0x54, 0xfd, 0x06, + 0xdd, 0xba, 0xdf, 0x4e, 0xfb, 0x54, 0x0f, 0x7b, 0x3c, 0xd4, 0x25, 0xec, 0xf1, 0x13, 0x30, 0x58, + 0xf5, 0x1b, 0xab, 0xd5, 0x6e, 0xf1, 0x05, 0xec, 0xbf, 0x66, 0xc1, 0x70, 0xd5, 0x6f, 0x9c, 0x80, + 0x5a, 0xe0, 0x23, 0xa6, 0x5a, 0xe0, 0x91, 0x9c, 0x75, 0x93, 0xa3, 0x09, 0xf8, 0x2b, 0x03, 0x30, + 0x4e, 0xfb, 0xe9, 0x6f, 0xcb, 0xa9, 0x34, 0x86, 0xcd, 0xea, 0x63, 0xd8, 0x28, 0x17, 0xee, 0x37, + 0x9b, 0xfe, 0xdd, 0xe4, 0xb4, 0xae, 0xb0, 0x52, 0x2c, 0xa0, 0xe8, 0x59, 0x18, 0x69, 0x07, 0x64, + 0xcf, 0xf5, 0x05, 0x7b, 0xab, 0x29, 0x59, 0xaa, 0xa2, 0x1c, 0x2b, 0x0c, 0xfa, 0x2c, 0x0c, 0x5d, + 0x8f, 0x5e, 0xe5, 0x75, 0xdf, 0x6b, 0x70, 0xc9, 0x79, 0x51, 0xe4, 0xe6, 0xd0, 0xca, 0xb1, 0x81, + 0x85, 0xee, 0x40, 0x89, 0xfd, 0x67, 0xc7, 0xce, 0xd1, 0xb3, 0xbc, 0x8a, 0xac, 0x7f, 0x82, 0x00, + 0x8e, 0x69, 0xa1, 0xe7, 0x01, 0x22, 0x19, 0xdf, 0x3e, 0x14, 0xd1, 0xd6, 0xd4, 0x53, 0x40, 0x45, + 0xbe, 0x0f, 0xb1, 0x86, 0x85, 0x9e, 0x81, 0x52, 0xe4, 0xb8, 0xcd, 0x1b, 0xae, 0x47, 0x42, 0x26, + 0x11, 0x2f, 0xca, 0xe4, 0x7b, 0xa2, 0x10, 0xc7, 0x70, 0xca, 0x8a, 0xb1, 0x48, 0x1c, 0x3c, 0x47, + 0xf4, 0x08, 0xc3, 0x66, 0xac, 0xd8, 0x0d, 0x55, 0x8a, 0x35, 0x0c, 0xb4, 0x03, 0x8f, 0xb9, 0x1e, + 0xcb, 0x63, 0x41, 0x6a, 0xbb, 0x6e, 0x7b, 0xe3, 0x46, 0xed, 0x36, 0x09, 0xdc, 0xad, 0xfd, 0x45, + 0xa7, 0xbe, 0x4b, 0x3c, 0x99, 0xbf, 0xf3, 0x49, 0xd1, 0xc5, 0xc7, 0x56, 0xbb, 0xe0, 0xe2, 0xae, + 0x94, 0xec, 0x17, 0xd8, 0x7a, 0xbf, 0x59, 0x43, 0x1f, 0x30, 0x8e, 0x8e, 0x33, 0xfa, 0xd1, 0x71, + 0x78, 0x50, 0x1e, 0xba, 0x59, 0xd3, 0x02, 0x49, 0xbc, 0x0c, 0xa7, 0xab, 0x7e, 0xa3, 0xea, 0x07, + 0xd1, 0x8a, 0x1f, 0xdc, 0x75, 0x82, 0x86, 0x5c, 0x5e, 0x65, 0x19, 0x4a, 0x83, 0x9e, 0x9f, 0x83, + 0xfc, 0x74, 0x31, 0xc2, 0x64, 0xbc, 0xc0, 0x38, 0xb6, 0x23, 0x3a, 0x80, 0xd5, 0x19, 0xef, 0xa0, + 0x32, 0xc1, 0x5c, 0x75, 0x22, 0x82, 0x6e, 0xb2, 0x0c, 0xd7, 0xf1, 0x35, 0x2a, 0xaa, 0x3f, 0xad, + 0x65, 0xb8, 0x8e, 0x81, 0x99, 0xf7, 0xae, 0x59, 0xdf, 0xfe, 0xcf, 0x83, 0xec, 0x44, 0x4d, 0x64, + 0x13, 0x41, 0x9f, 0x86, 0x89, 0x90, 0xdc, 0x70, 0xbd, 0xce, 0x3d, 0x29, 0xc2, 0xe8, 0xe2, 0xc2, + 0x57, 0x5b, 0xd6, 0x31, 0xb9, 0x20, 0xd4, 0x2c, 0xc3, 0x09, 0x6a, 0xa8, 0x05, 0x13, 0x77, 0x5d, + 0xaf, 0xe1, 0xdf, 0x0d, 0x25, 0xfd, 0x91, 0x7c, 0x79, 0xe8, 0x1d, 0x8e, 0x99, 0xe8, 0xa3, 0xd1, + 0xdc, 0x1d, 0x83, 0x18, 0x4e, 0x10, 0xa7, 0xab, 0x36, 0xe8, 0x78, 0x0b, 0xe1, 0xad, 0x90, 0x04, + 0x22, 0x57, 0x39, 0x5b, 0xb5, 0x58, 0x16, 0xe2, 0x18, 0x4e, 0x57, 0x2d, 0xfb, 0x73, 0x35, 0xf0, + 0x3b, 0x3c, 0x75, 0x85, 0x58, 0xb5, 0x58, 0x95, 0x62, 0x0d, 0x83, 0xee, 0x6a, 0xf6, 0x6f, 0xdd, + 0xf7, 0xb0, 0xef, 0x47, 0xf2, 0x1c, 0x60, 0x3a, 0x7d, 0xad, 0x1c, 0x1b, 0x58, 0x68, 0x05, 0x50, + 0xd8, 0x69, 0xb7, 0x9b, 0xcc, 0x36, 0xc8, 0x69, 0x32, 0x52, 0xdc, 0x5e, 0xa2, 0xc8, 0x43, 0xef, + 0xd6, 0x52, 0x50, 0x9c, 0x51, 0x83, 0x1e, 0xf0, 0x5b, 0xa2, 0xab, 0x83, 0xac, 0xab, 0x5c, 0x77, + 0x52, 0xe3, 0xfd, 0x94, 0x30, 0xb4, 0x0c, 0xc3, 0xe1, 0x7e, 0x58, 0x8f, 0x44, 0xa4, 0xc4, 0x9c, + 0x84, 0x51, 0x35, 0x86, 0xa2, 0xe5, 0x2b, 0xe4, 0x55, 0xb0, 0xac, 0x8b, 0xea, 0x30, 0x23, 0x28, + 0x2e, 0xed, 0x38, 0x9e, 0x4a, 0xbf, 0xc3, 0x4d, 0xa4, 0xaf, 0xdc, 0x3f, 0x28, 0xcf, 0x88, 0x96, + 0x75, 0xf0, 0xe1, 0x41, 0xf9, 0x4c, 0xd5, 0x6f, 0x64, 0x40, 0x70, 0x16, 0x35, 0xbe, 0xf8, 0xea, + 0x75, 0xbf, 0xd5, 0xae, 0x06, 0xfe, 0x96, 0xdb, 0x24, 0xdd, 0xf4, 0x4f, 0x35, 0x03, 0x53, 0x2c, + 0x3e, 0xa3, 0x0c, 0x27, 0xa8, 0xd9, 0xdf, 0xcd, 0x98, 0x20, 0x96, 0x9e, 0x3b, 0xea, 0x04, 0x04, + 0xb5, 0x60, 0xbc, 0xcd, 0xb6, 0x89, 0x48, 0x28, 0x21, 0xd6, 0xfa, 0x8b, 0x7d, 0xca, 0x51, 0xee, + 0xd2, 0xbb, 0xc3, 0xb4, 0x31, 0xaa, 0xea, 0xe4, 0xb0, 0x49, 0xdd, 0xfe, 0xb3, 0x47, 0xd8, 0x35, + 0x5a, 0xe3, 0xc2, 0x91, 0x61, 0xe1, 0x91, 0x21, 0xde, 0x63, 0x73, 0xf9, 0x52, 0xba, 0x78, 0x5a, + 0x84, 0x57, 0x07, 0x96, 0x75, 0xd1, 0xa7, 0x60, 0x82, 0x3e, 0x6f, 0xd4, 0x55, 0x16, 0xce, 0x9e, + 0xca, 0x8f, 0x9c, 0xa1, 0xb0, 0xf4, 0x64, 0x33, 0x7a, 0x65, 0x9c, 0x20, 0x86, 0xde, 0x60, 0x36, + 0x3d, 0x92, 0x74, 0xa1, 0x1f, 0xd2, 0xba, 0xf9, 0x8e, 0x24, 0xab, 0x11, 0x41, 0x1d, 0x98, 0x49, + 0xa7, 0xa6, 0x0b, 0x67, 0xed, 0x7c, 0x3e, 0x31, 0x9d, 0x5d, 0x2e, 0xce, 0x0a, 0x92, 0x86, 0x85, + 0x38, 0x8b, 0x3e, 0xba, 0x01, 0xe3, 0x22, 0x47, 0xb5, 0x58, 0xb9, 0x45, 0x43, 0x78, 0x38, 0x8e, + 0x75, 0xe0, 0x61, 0xb2, 0x00, 0x9b, 0x95, 0xd1, 0x36, 0x9c, 0xd3, 0x72, 0x46, 0x5d, 0x0d, 0x1c, + 0x66, 0x01, 0xe0, 0xb2, 0xe3, 0x54, 0xbb, 0xe0, 0x1f, 0xbf, 0x7f, 0x50, 0x3e, 0xb7, 0xd1, 0x0d, + 0x11, 0x77, 0xa7, 0x83, 0x6e, 0xc2, 0x69, 0xee, 0xf7, 0x5d, 0x21, 0x4e, 0xa3, 0xe9, 0x7a, 0x8a, + 0x83, 0xe0, 0x5b, 0xfe, 0xec, 0xfd, 0x83, 0xf2, 0xe9, 0x85, 0x2c, 0x04, 0x9c, 0x5d, 0x0f, 0x7d, + 0x04, 0x4a, 0x0d, 0x2f, 0x14, 0x63, 0x30, 0x64, 0xa4, 0xe5, 0x2a, 0x55, 0xd6, 0x6b, 0xea, 0xfb, + 0xe3, 0x3f, 0x38, 0xae, 0x80, 0xb6, 0xb9, 0x80, 0x59, 0x89, 0x3d, 0x86, 0x53, 0x71, 0xaf, 0x92, + 0x92, 0x41, 0xc3, 0xf3, 0x93, 0x6b, 0x56, 0x94, 0x43, 0x84, 0xe1, 0x14, 0x6a, 0x10, 0x46, 0xaf, + 0x03, 0x12, 0xe1, 0xdf, 0x17, 0xea, 0x2c, 0x5b, 0x09, 0x93, 0xc7, 0x8f, 0x98, 0xbe, 0x88, 0xb5, + 0x14, 0x06, 0xce, 0xa8, 0x85, 0xae, 0xd1, 0x53, 0x45, 0x2f, 0x15, 0xa7, 0x96, 0x4a, 0xa2, 0x58, + 0x21, 0xed, 0x80, 0x30, 0x8b, 0x26, 0x93, 0x22, 0x4e, 0xd4, 0x43, 0x0d, 0x78, 0xcc, 0xe9, 0x44, + 0x3e, 0x93, 0xdd, 0x9b, 0xa8, 0x1b, 0xfe, 0x2e, 0xf1, 0x98, 0xda, 0x6c, 0x64, 0xf1, 0x02, 0x65, + 0x51, 0x16, 0xba, 0xe0, 0xe1, 0xae, 0x54, 0x28, 0x6b, 0xa9, 0xb2, 0x26, 0x83, 0x19, 0xcd, 0x2b, + 0x23, 0x73, 0xf2, 0x4b, 0x30, 0xba, 0xe3, 0x87, 0xd1, 0x3a, 0x89, 0xee, 0xfa, 0xc1, 0xae, 0x88, + 0x4a, 0x1b, 0xc7, 0xf8, 0x8e, 0x41, 0x58, 0xc7, 0xa3, 0x6f, 0x47, 0x66, 0xd4, 0xb1, 0x5a, 0x61, + 0xfa, 0xf4, 0x91, 0xf8, 0x8c, 0xb9, 0xc6, 0x8b, 0xb1, 0x84, 0x4b, 0xd4, 0xd5, 0xea, 0x12, 0xd3, + 0x8d, 0x27, 0x50, 0x57, 0xab, 0x4b, 0x58, 0xc2, 0xe9, 0x72, 0x0d, 0x77, 0x9c, 0x80, 0x54, 0x03, + 0xbf, 0x4e, 0x42, 0x2d, 0xb2, 0xfc, 0xa3, 0x3c, 0xe6, 0x2e, 0x5d, 0xae, 0xb5, 0x2c, 0x04, 0x9c, + 0x5d, 0x0f, 0x91, 0x74, 0xbe, 0xb4, 0x89, 0x7c, 0xa5, 0x46, 0x9a, 0x9f, 0xe9, 0x33, 0x65, 0x9a, + 0x07, 0x53, 0x2a, 0x53, 0x1b, 0x8f, 0xb2, 0x1b, 0xce, 0x4e, 0xb2, 0xb5, 0xdd, 0x7f, 0x88, 0x5e, + 0xa5, 0x26, 0x5a, 0x4d, 0x50, 0xc2, 0x29, 0xda, 0x46, 0xc0, 0xb6, 0xa9, 0x9e, 0x01, 0xdb, 0x2e, + 0x43, 0x29, 0xec, 0x6c, 0x36, 0xfc, 0x96, 0xe3, 0x7a, 0x4c, 0x37, 0xae, 0x3d, 0x62, 0x6a, 0x12, + 0x80, 0x63, 0x1c, 0xb4, 0x02, 0x23, 0x8e, 0xd4, 0x01, 0xa1, 0xfc, 0x10, 0x3d, 0x4a, 0xf3, 0xc3, + 0xa3, 0x56, 0x48, 0xad, 0x8f, 0xaa, 0x8b, 0x5e, 0x85, 0x71, 0xe1, 0xb7, 0x2c, 0x92, 0x84, 0xce, + 0x98, 0xce, 0x65, 0x35, 0x1d, 0x88, 0x4d, 0x5c, 0x74, 0x0b, 0x46, 0x23, 0xbf, 0xc9, 0x3c, 0xa4, + 0x28, 0x9b, 0x77, 0x26, 0x3f, 0xd8, 0xdc, 0x86, 0x42, 0xd3, 0xc5, 0xaf, 0xaa, 0x2a, 0xd6, 0xe9, + 0xa0, 0x0d, 0xbe, 0xde, 0x59, 0x1c, 0x79, 0x12, 0xce, 0x3e, 0x92, 0x7f, 0x27, 0xa9, 0x70, 0xf3, + 0xe6, 0x76, 0x10, 0x35, 0xb1, 0x4e, 0x06, 0x5d, 0x85, 0xe9, 0x76, 0xe0, 0xfa, 0x6c, 0x4d, 0x28, + 0xf5, 0xdf, 0xac, 0x99, 0x35, 0xaa, 0x9a, 0x44, 0xc0, 0xe9, 0x3a, 0xcc, 0xed, 0x5c, 0x14, 0xce, + 0x9e, 0xe5, 0x99, 0x2f, 0xf8, 0x9b, 0x90, 0x97, 0x61, 0x05, 0x45, 0x6b, 0xec, 0x24, 0xe6, 0xe2, + 0x8c, 0xd9, 0xb9, 0xfc, 0xa8, 0x40, 0xba, 0xd8, 0x83, 0x33, 0xaf, 0xea, 0x2f, 0x8e, 0x29, 0xa0, + 0x86, 0x96, 0x70, 0x92, 0xbe, 0x18, 0xc2, 0xd9, 0xc7, 0xba, 0x58, 0xd6, 0x25, 0x9e, 0x17, 0x31, + 0x43, 0x60, 0x14, 0x87, 0x38, 0x41, 0x13, 0x7d, 0x0c, 0xa6, 0x44, 0x2c, 0xc3, 0x78, 0x98, 0xce, + 0xc5, 0x76, 0xe7, 0x38, 0x01, 0xc3, 0x29, 0x6c, 0x9e, 0x79, 0xc2, 0xd9, 0x6c, 0x12, 0x71, 0xf4, + 0xdd, 0x70, 0xbd, 0xdd, 0x70, 0xf6, 0x3c, 0x3b, 0x1f, 0x44, 0xe6, 0x89, 0x24, 0x14, 0x67, 0xd4, + 0x40, 0x1b, 0x30, 0xd5, 0x0e, 0x08, 0x69, 0x31, 0x46, 0x5f, 0xdc, 0x67, 0x65, 0x1e, 0x75, 0x81, + 0xf6, 0xa4, 0x9a, 0x80, 0x1d, 0x66, 0x94, 0xe1, 0x14, 0x05, 0x74, 0x17, 0x46, 0xfc, 0x3d, 0x12, + 0xec, 0x10, 0xa7, 0x31, 0x7b, 0xa1, 0x8b, 0x1f, 0x84, 0xb8, 0xdc, 0x6e, 0x0a, 0xdc, 0x84, 0xc9, + 0x80, 0x2c, 0xee, 0x6d, 0x32, 0x20, 0x1b, 0x43, 0xff, 0xaf, 0x05, 0x67, 0xa5, 0x96, 0xa1, 0xd6, + 0xa6, 0xa3, 0xbe, 0xe4, 0x7b, 0x61, 0x14, 0xf0, 0x38, 0x01, 0x8f, 0xe7, 0xfb, 0xce, 0x6f, 0xe4, + 0x54, 0x52, 0x12, 0xd5, 0xb3, 0x79, 0x18, 0x21, 0xce, 0x6f, 0x11, 0x2d, 0xc1, 0x74, 0x48, 0x22, + 0x79, 0x18, 0x2d, 0x84, 0x2b, 0x6f, 0x54, 0xd6, 0x67, 0x9f, 0xe0, 0x41, 0x0e, 0xe8, 0x66, 0xa8, + 0x25, 0x81, 0x38, 0x8d, 0x8f, 0xae, 0x40, 0xc1, 0x0f, 0x67, 0x9f, 0xec, 0x92, 0xa3, 0x94, 0x3e, + 0xc5, 0xb9, 0xe9, 0xd8, 0xcd, 0x1a, 0x2e, 0xf8, 0xa1, 0xcc, 0xfe, 0x40, 0xdf, 0x63, 0xe1, 0xec, + 0xfb, 0xb9, 0xfc, 0x4d, 0x66, 0x7f, 0x60, 0x85, 0x38, 0x86, 0xcf, 0x7d, 0x27, 0x4c, 0xa7, 0xd8, + 0x8b, 0xa3, 0x24, 0x02, 0x9a, 0xdb, 0x85, 0x71, 0x63, 0x0a, 0x1f, 0xaa, 0x4a, 0xfb, 0x9f, 0x0f, + 0x43, 0x49, 0xa9, 0x3b, 0xd1, 0x65, 0x53, 0x8b, 0x7d, 0x36, 0xa9, 0xc5, 0x1e, 0xa9, 0xfa, 0x0d, + 0x43, 0x71, 0xbd, 0x91, 0x11, 0x3a, 0x2e, 0xef, 0xc0, 0xe8, 0xdf, 0x9a, 0x5e, 0x93, 0x21, 0x17, + 0xfb, 0x56, 0x87, 0x0f, 0x74, 0x15, 0x4b, 0x5f, 0x85, 0x69, 0xcf, 0x67, 0x3c, 0x2d, 0x69, 0x48, + 0x86, 0x85, 0xf1, 0x25, 0x25, 0x3d, 0x16, 0x4b, 0x02, 0x01, 0xa7, 0xeb, 0xd0, 0x06, 0x39, 0x63, + 0x91, 0x94, 0x83, 0x73, 0xbe, 0x03, 0x0b, 0x28, 0x7a, 0x02, 0x06, 0xdb, 0x7e, 0x63, 0xb5, 0x2a, + 0xf8, 0x59, 0x2d, 0x60, 0x69, 0x63, 0xb5, 0x8a, 0x39, 0x0c, 0x2d, 0xc0, 0x10, 0xfb, 0x11, 0xce, + 0x8e, 0xe5, 0x07, 0xdd, 0x60, 0x35, 0xb4, 0x34, 0x4b, 0xac, 0x02, 0x16, 0x15, 0x99, 0x3c, 0x8e, + 0x3e, 0x02, 0x98, 0x3c, 0x6e, 0xf8, 0x01, 0xe5, 0x71, 0x92, 0x00, 0x8e, 0x69, 0xa1, 0x7b, 0x70, + 0xda, 0x78, 0x78, 0xf1, 0x25, 0x42, 0x42, 0xe1, 0xf8, 0xff, 0x44, 0xd7, 0x17, 0x97, 0x50, 0x9f, + 0x9f, 0x13, 0x9d, 0x3e, 0xbd, 0x9a, 0x45, 0x09, 0x67, 0x37, 0x80, 0x9a, 0x30, 0x5d, 0x4f, 0xb5, + 0x3a, 0xd2, 0x7f, 0xab, 0x6a, 0x42, 0xd3, 0x2d, 0xa6, 0x09, 0xa3, 0x57, 0x61, 0xe4, 0x2d, 0x3f, + 0x64, 0x77, 0x81, 0xe0, 0xc1, 0xa5, 0xd7, 0xf8, 0xc8, 0x1b, 0x37, 0x6b, 0xac, 0xfc, 0xf0, 0xa0, + 0x3c, 0x5a, 0xf5, 0x1b, 0xf2, 0x2f, 0x56, 0x15, 0xd0, 0x0f, 0x5a, 0x30, 0x97, 0x7e, 0xd9, 0xa9, + 0x4e, 0x8f, 0xf7, 0xdf, 0x69, 0x5b, 0x34, 0x3a, 0xb7, 0x9c, 0x4b, 0x0e, 0x77, 0x69, 0xca, 0xfe, + 0x65, 0x8b, 0x49, 0xf5, 0x84, 0x5a, 0x8a, 0x84, 0x9d, 0xe6, 0x49, 0x64, 0x97, 0x5d, 0x36, 0x34, + 0x66, 0x0f, 0x6c, 0x4e, 0xf1, 0x8f, 0x2d, 0x66, 0x4e, 0x71, 0x82, 0x7e, 0x13, 0x6f, 0xc0, 0x48, + 0x24, 0xb3, 0xfe, 0x76, 0x49, 0x88, 0xab, 0x75, 0x8a, 0x99, 0x94, 0x28, 0x8e, 0x58, 0x25, 0xf8, + 0x55, 0x64, 0xec, 0xbf, 0xc7, 0x67, 0x40, 0x42, 0x4e, 0x40, 0x31, 0x51, 0x31, 0x15, 0x13, 0xe5, + 0x1e, 0x5f, 0x90, 0xa3, 0xa0, 0xf8, 0xbb, 0x66, 0xbf, 0x99, 0x24, 0xe8, 0xdd, 0x6e, 0xc7, 0x63, + 0x7f, 0xc1, 0x02, 0x88, 0xe3, 0x41, 0xf7, 0x91, 0xd7, 0xed, 0x65, 0xca, 0x03, 0xfb, 0x91, 0x5f, + 0xf7, 0x9b, 0x42, 0xed, 0xf6, 0x58, 0xac, 0x1b, 0xe1, 0xe5, 0x87, 0xda, 0x6f, 0xac, 0xb0, 0x51, + 0x59, 0x46, 0x9f, 0x2b, 0xc6, 0xda, 0x3a, 0x23, 0xf2, 0xdc, 0x97, 0x2c, 0x38, 0x95, 0x65, 0x84, + 0x4b, 0x5f, 0x54, 0x5c, 0x26, 0xa6, 0x6c, 0xac, 0xd4, 0x6c, 0xde, 0x16, 0xe5, 0x58, 0x61, 0xf4, + 0x9d, 0x30, 0xef, 0x68, 0x81, 0x98, 0x6f, 0xc2, 0x78, 0x35, 0x20, 0xda, 0xe5, 0xfa, 0x1a, 0x8f, + 0x68, 0xc0, 0xfb, 0xf3, 0xec, 0x91, 0xa3, 0x19, 0xd8, 0x5f, 0x29, 0xc0, 0x29, 0x6e, 0xaa, 0xb0, + 0xb0, 0xe7, 0xbb, 0x8d, 0xaa, 0xdf, 0x10, 0xae, 0x56, 0x9f, 0x84, 0xb1, 0xb6, 0x26, 0xc8, 0xec, + 0x16, 0x54, 0x54, 0x17, 0x78, 0xc6, 0xa2, 0x17, 0xbd, 0x14, 0x1b, 0xb4, 0x50, 0x03, 0xc6, 0xc8, + 0x9e, 0x5b, 0x57, 0xfa, 0xee, 0xc2, 0x91, 0x2f, 0x3a, 0xd5, 0xca, 0xb2, 0x46, 0x07, 0x1b, 0x54, + 0x1f, 0x42, 0x1a, 0x6b, 0xfb, 0xc7, 0x2d, 0x78, 0x24, 0x27, 0x04, 0x29, 0x6d, 0xee, 0x2e, 0x33, + 0x0a, 0x11, 0xcb, 0x56, 0x35, 0xc7, 0x4d, 0x45, 0xb0, 0x80, 0xa2, 0x8f, 0x03, 0x70, 0x53, 0x0f, + 0xfa, 0xa4, 0xef, 0x15, 0xab, 0xd1, 0x08, 0x33, 0xa7, 0x45, 0x0c, 0x93, 0xf5, 0xb1, 0x46, 0xcb, + 0xfe, 0xd2, 0x00, 0x0c, 0xf2, 0x94, 0xfb, 0x55, 0x18, 0xde, 0xe1, 0x49, 0x65, 0xba, 0xce, 0x1b, + 0xc5, 0x95, 0x79, 0x6a, 0xe2, 0x79, 0xd3, 0x4a, 0xb1, 0x24, 0x83, 0xd6, 0x60, 0x86, 0xe7, 0xf6, + 0x69, 0x56, 0x48, 0xd3, 0xd9, 0x97, 0x32, 0x42, 0x9e, 0x88, 0x56, 0xc9, 0x4a, 0x57, 0xd3, 0x28, + 0x38, 0xab, 0x1e, 0x7a, 0x0d, 0x26, 0xe8, 0x9b, 0xcd, 0xef, 0x44, 0x92, 0x12, 0xcf, 0xea, 0xa3, + 0x1e, 0x89, 0x1b, 0x06, 0x14, 0x27, 0xb0, 0xd1, 0xab, 0x30, 0xde, 0x4e, 0x49, 0x43, 0x07, 0x63, + 0xb1, 0x81, 0x29, 0x01, 0x35, 0x71, 0x99, 0x1d, 0x6e, 0x87, 0x59, 0x1d, 0x6f, 0xec, 0x04, 0x24, + 0xdc, 0xf1, 0x9b, 0x0d, 0xc6, 0xfe, 0x0d, 0x6a, 0x76, 0xb8, 0x09, 0x38, 0x4e, 0xd5, 0xa0, 0x54, + 0xb6, 0x1c, 0xb7, 0xd9, 0x09, 0x48, 0x4c, 0x65, 0xc8, 0xa4, 0xb2, 0x92, 0x80, 0xe3, 0x54, 0x8d, + 0xde, 0x62, 0xde, 0xe1, 0xe3, 0x11, 0xf3, 0xda, 0x7f, 0xbd, 0x00, 0xc6, 0xd4, 0x7e, 0xfb, 0x66, + 0x1b, 0xa2, 0x5f, 0xb6, 0x1d, 0xb4, 0xeb, 0xc2, 0x8c, 0x26, 0xf3, 0xcb, 0xe2, 0x24, 0xa2, 0xfc, + 0xcb, 0xe8, 0x7f, 0xcc, 0x6a, 0xd1, 0x3d, 0x7e, 0xba, 0x1a, 0xf8, 0xf4, 0x92, 0x93, 0x31, 0xaf, + 0x94, 0xb9, 0xfb, 0xb0, 0x74, 0x05, 0xee, 0x12, 0x1d, 0x52, 0x18, 0x04, 0x73, 0x0a, 0x86, 0xc5, + 0x49, 0x4d, 0x38, 0xe6, 0x4b, 0x2a, 0xe8, 0x0a, 0x8c, 0x8a, 0x14, 0x32, 0xcc, 0x2a, 0x9b, 0x6f, + 0x26, 0x66, 0x21, 0x53, 0x89, 0x8b, 0xb1, 0x8e, 0x63, 0xff, 0x50, 0x01, 0x66, 0x32, 0xdc, 0x6a, + 0xf8, 0x35, 0xb2, 0xed, 0x86, 0x91, 0xca, 0x53, 0xaa, 0x5d, 0x23, 0xbc, 0x1c, 0x2b, 0x0c, 0x7a, + 0x56, 0xf1, 0x8b, 0x2a, 0x79, 0x39, 0x09, 0xb3, 0x75, 0x01, 0x3d, 0x62, 0xc6, 0xcf, 0x0b, 0x30, + 0xd0, 0x09, 0x89, 0x8c, 0xeb, 0xaa, 0xae, 0x6d, 0xa6, 0x03, 0x65, 0x10, 0xfa, 0x8c, 0xda, 0x56, + 0xea, 0x44, 0xed, 0x19, 0xc5, 0x15, 0x8a, 0x1c, 0x46, 0x3b, 0x17, 0x11, 0xcf, 0xf1, 0x22, 0xf1, + 0xd8, 0x8a, 0x03, 0x14, 0xb2, 0x52, 0x2c, 0xa0, 0xf6, 0x17, 0x8b, 0x70, 0x36, 0xd7, 0xd1, 0x8e, + 0x76, 0xbd, 0xe5, 0x7b, 0x6e, 0xe4, 0x2b, 0xd3, 0x23, 0x1e, 0x94, 0x90, 0xb4, 0x77, 0xd6, 0x44, + 0x39, 0x56, 0x18, 0xe8, 0x22, 0x0c, 0x32, 0x09, 0x6a, 0x2a, 0x63, 0xeb, 0x62, 0x85, 0x47, 0xa9, + 0xe2, 0xe0, 0xbe, 0x93, 0x6c, 0x3f, 0x41, 0x39, 0x18, 0xbf, 0x99, 0xbc, 0x50, 0x68, 0x77, 0x7d, + 0xbf, 0x89, 0x19, 0x10, 0xbd, 0x5f, 0x8c, 0x57, 0xc2, 0xd6, 0x06, 0x3b, 0x0d, 0x3f, 0xd4, 0x06, + 0xed, 0x69, 0x18, 0xde, 0x25, 0xfb, 0x81, 0xeb, 0x6d, 0x27, 0x6d, 0xb0, 0xae, 0xf3, 0x62, 0x2c, + 0xe1, 0x66, 0x8a, 0xc1, 0xe1, 0xe3, 0xce, 0x8e, 0x3d, 0xd2, 0x93, 0x3d, 0xf9, 0x91, 0x22, 0x4c, + 0xe2, 0xc5, 0xca, 0x7b, 0x13, 0x71, 0x2b, 0x3d, 0x11, 0xc7, 0x9d, 0x1d, 0xbb, 0xf7, 0x6c, 0xfc, + 0x82, 0x05, 0x93, 0x2c, 0x91, 0x8d, 0x70, 0xa7, 0x77, 0x7d, 0xef, 0x04, 0x9e, 0x02, 0x4f, 0xc0, + 0x60, 0x40, 0x1b, 0x4d, 0xa6, 0x6a, 0x65, 0x3d, 0xc1, 0x1c, 0x86, 0x1e, 0x83, 0x01, 0xd6, 0x05, + 0x3a, 0x79, 0x63, 0xfc, 0x08, 0xae, 0x38, 0x91, 0x83, 0x59, 0x29, 0x8b, 0xd1, 0x84, 0x49, 0xbb, + 0xe9, 0xf2, 0x4e, 0xc7, 0xfa, 0xed, 0x77, 0x87, 0x0b, 0x7e, 0x66, 0xd7, 0xde, 0x59, 0x8c, 0xa6, + 0x6c, 0x92, 0xdd, 0x9f, 0xd9, 0x7f, 0x54, 0x80, 0xf3, 0x99, 0xf5, 0xfa, 0x8e, 0xd1, 0xd4, 0xbd, + 0xf6, 0xc3, 0x4c, 0x55, 0x52, 0x3c, 0x41, 0x0b, 0xd7, 0x81, 0x7e, 0xb9, 0xff, 0xc1, 0x3e, 0x42, + 0x27, 0x65, 0x0e, 0xd9, 0xbb, 0x24, 0x74, 0x52, 0x66, 0xdf, 0x72, 0xc4, 0x04, 0x7f, 0x5e, 0xc8, + 0xf9, 0x16, 0x26, 0x30, 0xb8, 0x44, 0xcf, 0x19, 0x06, 0x0c, 0xe5, 0x23, 0x9c, 0x9f, 0x31, 0xbc, + 0x0c, 0x2b, 0x28, 0x5a, 0x80, 0xc9, 0x96, 0xeb, 0xd1, 0xc3, 0x67, 0xdf, 0x64, 0xc5, 0x55, 0x64, + 0xbb, 0x35, 0x13, 0x8c, 0x93, 0xf8, 0xc8, 0xd5, 0xc2, 0x2a, 0xf1, 0xaf, 0x7b, 0xf5, 0x48, 0xbb, + 0x6e, 0xde, 0xd4, 0xfd, 0xab, 0x51, 0xcc, 0x08, 0xb1, 0xb4, 0xa6, 0xc9, 0x89, 0x8a, 0xfd, 0xcb, + 0x89, 0xc6, 0xb2, 0x65, 0x44, 0x73, 0xaf, 0xc2, 0xf8, 0x03, 0x2b, 0x06, 0xec, 0xaf, 0x17, 0xe1, + 0xd1, 0x2e, 0xdb, 0x9e, 0x9f, 0xf5, 0xc6, 0x1c, 0x68, 0x67, 0x7d, 0x6a, 0x1e, 0xaa, 0x70, 0x6a, + 0xab, 0xd3, 0x6c, 0xee, 0x33, 0xc7, 0x0f, 0xd2, 0x90, 0x18, 0x82, 0xa7, 0x94, 0xc2, 0x91, 0x53, + 0x2b, 0x19, 0x38, 0x38, 0xb3, 0x26, 0x7d, 0x62, 0xd1, 0x9b, 0x64, 0x5f, 0x91, 0x4a, 0x3c, 0xb1, + 0xb0, 0x0e, 0xc4, 0x26, 0x2e, 0xba, 0x0a, 0xd3, 0xce, 0x9e, 0xe3, 0xf2, 0xd8, 0xd4, 0x92, 0x00, + 0x7f, 0x63, 0x29, 0x79, 0xee, 0x42, 0x12, 0x01, 0xa7, 0xeb, 0xa0, 0xd7, 0x01, 0xf9, 0x9b, 0xcc, + 0x3c, 0xbc, 0x71, 0x95, 0x78, 0x42, 0x45, 0xcb, 0xe6, 0xae, 0x18, 0x1f, 0x09, 0x37, 0x53, 0x18, + 0x38, 0xa3, 0x56, 0x22, 0x7c, 0xd0, 0x50, 0x7e, 0xf8, 0xa0, 0xee, 0xe7, 0x62, 0xcf, 0x2c, 0x39, + 0xff, 0xce, 0xa2, 0xd7, 0x17, 0x67, 0xf2, 0xcd, 0x68, 0x9b, 0xaf, 0x32, 0x13, 0x4b, 0x2e, 0xeb, + 0xd5, 0x82, 0xad, 0x9c, 0xd6, 0x4c, 0x2c, 0x63, 0x20, 0x36, 0x71, 0xf9, 0x82, 0x08, 0x63, 0x1f, + 0x5f, 0x83, 0xc5, 0x17, 0x21, 0xc1, 0x14, 0x06, 0xfa, 0x04, 0x0c, 0x37, 0xdc, 0x3d, 0x37, 0x14, + 0x92, 0xae, 0x23, 0xab, 0x95, 0xe2, 0x73, 0xb0, 0xc2, 0xc9, 0x60, 0x49, 0xcf, 0xfe, 0x91, 0x02, + 0x8c, 0xcb, 0x16, 0xdf, 0xe8, 0xf8, 0x91, 0x73, 0x02, 0xd7, 0xf2, 0x55, 0xe3, 0x5a, 0x7e, 0x7f, + 0xb7, 0xb8, 0x68, 0xac, 0x4b, 0xb9, 0xd7, 0xf1, 0xcd, 0xc4, 0x75, 0xfc, 0x54, 0x6f, 0x52, 0xdd, + 0xaf, 0xe1, 0xbf, 0x6f, 0xc1, 0xb4, 0x81, 0x7f, 0x02, 0xb7, 0xc1, 0x8a, 0x79, 0x1b, 0x3c, 0xde, + 0xf3, 0x1b, 0x72, 0x6e, 0x81, 0xef, 0x2f, 0x26, 0xfa, 0xce, 0x4e, 0xff, 0xb7, 0x60, 0x60, 0xc7, + 0x09, 0x1a, 0xdd, 0xf2, 0x40, 0xa4, 0x2a, 0xcd, 0x5f, 0x73, 0x02, 0xa1, 0xa3, 0x7e, 0x56, 0x8e, + 0x3a, 0x2d, 0xea, 0xa9, 0x9f, 0x66, 0x4d, 0xa1, 0x97, 0x61, 0x28, 0xac, 0xfb, 0x6d, 0xe5, 0xf6, + 0x71, 0x81, 0x0d, 0x34, 0x2b, 0x39, 0x3c, 0x28, 0x23, 0xb3, 0x39, 0x5a, 0x8c, 0x05, 0x3e, 0xfa, + 0x24, 0x8c, 0xb3, 0x5f, 0xca, 0x60, 0xac, 0x98, 0x2f, 0x8e, 0xa8, 0xe9, 0x88, 0xdc, 0x9a, 0xd2, + 0x28, 0xc2, 0x26, 0xa9, 0xb9, 0x6d, 0x28, 0xa9, 0xcf, 0x7a, 0xa8, 0x7a, 0xdb, 0x7f, 0x53, 0x84, + 0x99, 0x8c, 0x35, 0x87, 0x42, 0x63, 0x26, 0xae, 0xf4, 0xb9, 0x54, 0xdf, 0xe1, 0x5c, 0x84, 0xec, + 0x35, 0xd4, 0x10, 0x6b, 0xab, 0xef, 0x46, 0x6f, 0x85, 0x24, 0xd9, 0x28, 0x2d, 0xea, 0xdd, 0x28, + 0x6d, 0xec, 0xc4, 0x86, 0x9a, 0x36, 0xa4, 0x7a, 0xfa, 0x50, 0xe7, 0xf4, 0x4f, 0x8b, 0x70, 0x2a, + 0x2b, 0x54, 0x23, 0xfa, 0x5c, 0x22, 0x0b, 0xe9, 0x8b, 0xfd, 0x06, 0x79, 0xe4, 0xa9, 0x49, 0x45, + 0xf4, 0xb8, 0x79, 0x33, 0x2f, 0x69, 0xcf, 0x61, 0x16, 0x6d, 0xb2, 0xf8, 0x15, 0x01, 0xcf, 0x1e, + 0x2b, 0x8f, 0x8f, 0x0f, 0xf5, 0xdd, 0x01, 0x91, 0x76, 0x36, 0x4c, 0x18, 0xa3, 0xc8, 0xe2, 0xde, + 0xc6, 0x28, 0xb2, 0xe5, 0x39, 0x17, 0x46, 0xb5, 0xaf, 0x79, 0xa8, 0x33, 0xbe, 0x4b, 0x6f, 0x2b, + 0xad, 0xdf, 0x0f, 0x75, 0xd6, 0x7f, 0xdc, 0x82, 0x84, 0x7f, 0x82, 0x12, 0x8b, 0x59, 0xb9, 0x62, + 0xb1, 0x0b, 0x30, 0x10, 0xf8, 0x4d, 0x92, 0x4c, 0xd7, 0x89, 0xfd, 0x26, 0xc1, 0x0c, 0x42, 0x31, + 0xa2, 0x58, 0xd8, 0x31, 0xa6, 0x3f, 0xe4, 0xc4, 0x13, 0xed, 0x09, 0x18, 0x6c, 0x92, 0x3d, 0xd2, + 0x4c, 0x66, 0x55, 0xba, 0x41, 0x0b, 0x31, 0x87, 0xd9, 0xbf, 0x30, 0x00, 0xe7, 0xba, 0x46, 0x80, + 0xa1, 0xcf, 0xa1, 0x6d, 0x27, 0x22, 0x77, 0x9d, 0xfd, 0x64, 0xfa, 0x93, 0xab, 0xbc, 0x18, 0x4b, + 0x38, 0x73, 0x3b, 0xe3, 0x51, 0xcc, 0x13, 0x42, 0x44, 0x11, 0xbc, 0x5c, 0x40, 0x4d, 0xa1, 0x54, + 0xf1, 0x38, 0x84, 0x52, 0xcf, 0x03, 0x84, 0x61, 0x93, 0x5b, 0x71, 0x35, 0x84, 0x3f, 0x5b, 0x1c, + 0xed, 0xbe, 0x76, 0x43, 0x40, 0xb0, 0x86, 0x85, 0x2a, 0x30, 0xd5, 0x0e, 0xfc, 0x88, 0xcb, 0x64, + 0x2b, 0xdc, 0xd0, 0x71, 0xd0, 0x0c, 0xbe, 0x51, 0x4d, 0xc0, 0x71, 0xaa, 0x06, 0x7a, 0x09, 0x46, + 0x45, 0x40, 0x8e, 0xaa, 0xef, 0x37, 0x85, 0x18, 0x48, 0xd9, 0xfe, 0xd5, 0x62, 0x10, 0xd6, 0xf1, + 0xb4, 0x6a, 0x4c, 0xd0, 0x3b, 0x9c, 0x59, 0x8d, 0x0b, 0x7b, 0x35, 0xbc, 0x44, 0xd8, 0xd6, 0x91, + 0xbe, 0xc2, 0xb6, 0xc6, 0x82, 0xb1, 0x52, 0xdf, 0x7a, 0x47, 0xe8, 0x29, 0x4a, 0xfa, 0xb9, 0x01, + 0x98, 0x11, 0x0b, 0xe7, 0x61, 0x2f, 0x97, 0x5b, 0xe9, 0xe5, 0x72, 0x1c, 0xa2, 0xb3, 0xf7, 0xd6, + 0xcc, 0x49, 0xaf, 0x99, 0x1f, 0xb5, 0xc0, 0x64, 0xaf, 0xd0, 0xff, 0x95, 0x9b, 0x3f, 0xea, 0xa5, + 0x5c, 0x76, 0x4d, 0x85, 0x00, 0x7d, 0x87, 0x99, 0xa4, 0xec, 0x7f, 0x6b, 0xc1, 0xe3, 0x3d, 0x29, + 0xa2, 0x65, 0x28, 0x31, 0x1e, 0x50, 0x7b, 0x9d, 0x3d, 0xa5, 0x0c, 0xa1, 0x25, 0x20, 0x87, 0x25, + 0x8d, 0x6b, 0xa2, 0xe5, 0x54, 0xa2, 0xae, 0xa7, 0x33, 0x12, 0x75, 0x9d, 0x36, 0x86, 0xe7, 0x01, + 0x33, 0x75, 0xfd, 0x30, 0xbd, 0x71, 0x0c, 0x27, 0x24, 0xf4, 0x21, 0x43, 0xec, 0x67, 0x27, 0xc4, + 0x7e, 0xc8, 0xc4, 0xd6, 0xee, 0x90, 0x8f, 0xc1, 0x14, 0x8b, 0xd4, 0xc5, 0xcc, 0xf2, 0x85, 0x7b, + 0x54, 0x21, 0x36, 0xbd, 0xbd, 0x91, 0x80, 0xe1, 0x14, 0xb6, 0xfd, 0x87, 0x45, 0x18, 0xe2, 0xdb, + 0xef, 0x04, 0xde, 0x84, 0xcf, 0x40, 0xc9, 0x6d, 0xb5, 0x3a, 0x3c, 0xf7, 0xd2, 0x60, 0x6c, 0xc8, + 0xb9, 0x2a, 0x0b, 0x71, 0x0c, 0x47, 0x2b, 0x42, 0xe2, 0xdc, 0x25, 0x18, 0x28, 0xef, 0xf8, 0x7c, + 0xc5, 0x89, 0x1c, 0xce, 0xe0, 0xa8, 0x7b, 0x36, 0x96, 0x4d, 0xa3, 0x4f, 0x03, 0x84, 0x51, 0xe0, + 0x7a, 0xdb, 0xb4, 0x4c, 0xc4, 0x20, 0xfe, 0x40, 0x17, 0x6a, 0x35, 0x85, 0xcc, 0x69, 0xc6, 0x67, + 0x8e, 0x02, 0x60, 0x8d, 0x22, 0x9a, 0x37, 0x6e, 0xfa, 0xb9, 0xc4, 0xdc, 0x01, 0xa7, 0x1a, 0xcf, + 0xd9, 0xdc, 0x87, 0xa1, 0xa4, 0x88, 0xf7, 0x92, 0x3f, 0x8d, 0xe9, 0x6c, 0xd1, 0x47, 0x61, 0x32, + 0xd1, 0xb7, 0x23, 0x89, 0xaf, 0x7e, 0xd1, 0x82, 0x49, 0xde, 0x99, 0x65, 0x6f, 0x4f, 0xdc, 0x06, + 0x6f, 0xc3, 0xa9, 0x66, 0xc6, 0xa9, 0x2c, 0xa6, 0xbf, 0xff, 0x53, 0x5c, 0x89, 0xab, 0xb2, 0xa0, + 0x38, 0xb3, 0x0d, 0x74, 0x89, 0xee, 0x38, 0x7a, 0xea, 0x3a, 0x4d, 0xe1, 0x57, 0x3d, 0xc6, 0x77, + 0x1b, 0x2f, 0xc3, 0x0a, 0x6a, 0xff, 0x8e, 0x05, 0xd3, 0xbc, 0xe7, 0xd7, 0xc9, 0xbe, 0x3a, 0x9b, + 0xbe, 0x99, 0x7d, 0x17, 0x59, 0xff, 0x0a, 0x39, 0x59, 0xff, 0xf4, 0x4f, 0x2b, 0x76, 0xfd, 0xb4, + 0xaf, 0x58, 0x20, 0x56, 0xc8, 0x09, 0x08, 0x21, 0xbe, 0xd3, 0x14, 0x42, 0xcc, 0xe5, 0x6f, 0x82, + 0x1c, 0xe9, 0xc3, 0x9f, 0x59, 0x30, 0xc5, 0x11, 0x62, 0x6d, 0xf9, 0x37, 0x75, 0x1e, 0xfa, 0xc9, + 0x0d, 0x7e, 0x9d, 0xec, 0x6f, 0xf8, 0x55, 0x27, 0xda, 0xc9, 0xfe, 0x28, 0x63, 0xb2, 0x06, 0xba, + 0x4e, 0x56, 0x43, 0x6e, 0x20, 0x23, 0x29, 0x4e, 0x8f, 0x60, 0x13, 0x47, 0x4d, 0x8a, 0x63, 0x7f, + 0xc3, 0x02, 0xc4, 0x9b, 0x31, 0x18, 0x37, 0xca, 0x0e, 0xb1, 0x52, 0xed, 0xa2, 0x8b, 0x8f, 0x26, + 0x05, 0xc1, 0x1a, 0xd6, 0xb1, 0x0c, 0x4f, 0xc2, 0xe4, 0xa1, 0xd8, 0xdb, 0xe4, 0xe1, 0x08, 0x23, + 0xfa, 0x2f, 0x86, 0x20, 0xe9, 0x88, 0x85, 0x6e, 0xc3, 0x58, 0xdd, 0x69, 0x3b, 0x9b, 0x6e, 0xd3, + 0x8d, 0x5c, 0x12, 0x76, 0xb3, 0x87, 0x5a, 0xd2, 0xf0, 0x84, 0x92, 0x5a, 0x2b, 0xc1, 0x06, 0x1d, + 0x34, 0x0f, 0xd0, 0x0e, 0xdc, 0x3d, 0xb7, 0x49, 0xb6, 0x99, 0xac, 0x84, 0x45, 0x72, 0xe0, 0xc6, + 0x59, 0xb2, 0x14, 0x6b, 0x18, 0x19, 0x5e, 0xef, 0xc5, 0x87, 0xec, 0xf5, 0x0e, 0x27, 0xe6, 0xf5, + 0x3e, 0x70, 0x24, 0xaf, 0xf7, 0x91, 0x23, 0x7b, 0xbd, 0x0f, 0xf6, 0xe5, 0xf5, 0x8e, 0xe1, 0x8c, + 0xe4, 0x3d, 0xe9, 0xff, 0x15, 0xb7, 0x49, 0xc4, 0x83, 0x83, 0x87, 0x9f, 0x98, 0xbb, 0x7f, 0x50, + 0x3e, 0x83, 0x33, 0x31, 0x70, 0x4e, 0x4d, 0xf4, 0x71, 0x98, 0x75, 0x9a, 0x4d, 0xff, 0xae, 0x9a, + 0xd4, 0xe5, 0xb0, 0xee, 0x34, 0xb9, 0x12, 0x62, 0x98, 0x51, 0x7d, 0xec, 0xfe, 0x41, 0x79, 0x76, + 0x21, 0x07, 0x07, 0xe7, 0xd6, 0x46, 0x1f, 0x81, 0x52, 0x3b, 0xf0, 0xeb, 0x6b, 0x9a, 0xb7, 0xe8, + 0x79, 0x3a, 0x80, 0x55, 0x59, 0x78, 0x78, 0x50, 0x1e, 0x57, 0x7f, 0xd8, 0x85, 0x1f, 0x57, 0xc8, + 0x70, 0x63, 0x1f, 0x3d, 0x56, 0x37, 0xf6, 0x5d, 0x98, 0xa9, 0x91, 0xc0, 0x75, 0x9a, 0xee, 0xdb, + 0x94, 0x5f, 0x96, 0xe7, 0xd3, 0x06, 0x94, 0x82, 0xc4, 0x89, 0xdc, 0x57, 0x80, 0x4e, 0x2d, 0x3b, + 0x89, 0x3c, 0x81, 0x63, 0x42, 0xf6, 0xff, 0xb0, 0x60, 0x58, 0x38, 0x5e, 0x9d, 0x00, 0xd7, 0xb8, + 0x60, 0x68, 0x12, 0xca, 0xd9, 0x03, 0xc6, 0x3a, 0x93, 0xab, 0x43, 0x58, 0x4d, 0xe8, 0x10, 0x1e, + 0xef, 0x46, 0xa4, 0xbb, 0xf6, 0xe0, 0x2f, 0x17, 0x29, 0xf7, 0x6e, 0xb8, 0x00, 0x3f, 0xfc, 0x21, + 0x58, 0x87, 0xe1, 0x50, 0xb8, 0xa0, 0x16, 0xf2, 0x7d, 0x1a, 0x92, 0x93, 0x18, 0xdb, 0xb1, 0x09, + 0xa7, 0x53, 0x49, 0x24, 0xd3, 0xb7, 0xb5, 0xf8, 0x10, 0x7d, 0x5b, 0x7b, 0x39, 0x49, 0x0f, 0x1c, + 0x87, 0x93, 0xb4, 0xfd, 0x35, 0x76, 0x73, 0xea, 0xe5, 0x27, 0xc0, 0x54, 0x5d, 0x35, 0xef, 0x58, + 0xbb, 0xcb, 0xca, 0x12, 0x9d, 0xca, 0x61, 0xae, 0x7e, 0xde, 0x82, 0x73, 0x19, 0x5f, 0xa5, 0x71, + 0x5a, 0xcf, 0xc2, 0x88, 0xd3, 0x69, 0xb8, 0x6a, 0x2f, 0x6b, 0xfa, 0xc4, 0x05, 0x51, 0x8e, 0x15, + 0x06, 0x5a, 0x82, 0x69, 0x72, 0xaf, 0xed, 0x72, 0x55, 0xaa, 0x6e, 0xfe, 0x5b, 0xe4, 0xde, 0x7a, + 0xcb, 0x49, 0x20, 0x4e, 0xe3, 0xab, 0xc0, 0x34, 0xc5, 0xdc, 0xc0, 0x34, 0x7f, 0xcb, 0x82, 0x51, + 0xe5, 0x84, 0xf9, 0xd0, 0x47, 0xfb, 0x63, 0xe6, 0x68, 0x3f, 0xda, 0x65, 0xb4, 0x73, 0x86, 0xf9, + 0xb7, 0x0a, 0xaa, 0xbf, 0x55, 0x3f, 0x88, 0xfa, 0xe0, 0xe0, 0x1e, 0xdc, 0x75, 0xe1, 0x0a, 0x8c, + 0x3a, 0xed, 0xb6, 0x04, 0x48, 0x1b, 0x34, 0x16, 0x6e, 0x39, 0x2e, 0xc6, 0x3a, 0x8e, 0xf2, 0xa4, + 0x28, 0xe6, 0x7a, 0x52, 0x34, 0x00, 0x22, 0x27, 0xd8, 0x26, 0x11, 0x2d, 0x13, 0x26, 0xb3, 0xf9, + 0xe7, 0x4d, 0x27, 0x72, 0x9b, 0xf3, 0xae, 0x17, 0x85, 0x51, 0x30, 0xbf, 0xea, 0x45, 0x37, 0x03, + 0xfe, 0x84, 0xd4, 0x42, 0x3b, 0x29, 0x5a, 0x58, 0xa3, 0x2b, 0x03, 0x0e, 0xb0, 0x36, 0x06, 0x4d, + 0x63, 0x86, 0x75, 0x51, 0x8e, 0x15, 0x86, 0xfd, 0x61, 0x76, 0xfb, 0xb0, 0x31, 0x3d, 0x5a, 0x58, + 0xa3, 0xaf, 0x8c, 0xa9, 0xd9, 0x60, 0x9a, 0xcc, 0x8a, 0x1e, 0x3c, 0xa9, 0xfb, 0x61, 0x4f, 0x1b, + 0xd6, 0xfd, 0xfa, 0xe2, 0x08, 0x4b, 0xe8, 0xbb, 0x52, 0x06, 0x2a, 0xcf, 0xf5, 0xb8, 0x35, 0x8e, + 0x60, 0x92, 0xc2, 0x72, 0xaf, 0xb0, 0xcc, 0x14, 0xab, 0x55, 0xb1, 0x2f, 0xb4, 0xdc, 0x2b, 0x02, + 0x80, 0x63, 0x1c, 0xca, 0x4c, 0xa9, 0x3f, 0xe1, 0x2c, 0x8a, 0x63, 0x90, 0x2a, 0xec, 0x10, 0x6b, + 0x18, 0xe8, 0xb2, 0x10, 0x28, 0x70, 0xbd, 0xc0, 0xa3, 0x09, 0x81, 0x82, 0x1c, 0x2e, 0x4d, 0x0a, + 0x74, 0x05, 0x46, 0x55, 0xba, 0xed, 0x2a, 0xcf, 0x7a, 0x24, 0x96, 0xd9, 0x72, 0x5c, 0x8c, 0x75, + 0x1c, 0xb4, 0x01, 0x93, 0x21, 0x97, 0xb3, 0xa9, 0xc0, 0xd0, 0x5c, 0x5e, 0xf9, 0x01, 0x69, 0x05, + 0x54, 0x33, 0xc1, 0x87, 0xac, 0x88, 0x9f, 0x4e, 0x32, 0x28, 0x40, 0x92, 0x04, 0x7a, 0x0d, 0x26, + 0x9a, 0xbe, 0xd3, 0x58, 0x74, 0x9a, 0x8e, 0x57, 0x67, 0xe3, 0x33, 0x62, 0x66, 0x6d, 0xbd, 0x61, + 0x40, 0x71, 0x02, 0x9b, 0x32, 0x6f, 0x7a, 0x89, 0x08, 0x66, 0xee, 0x78, 0xdb, 0x24, 0x14, 0xc9, + 0x93, 0x19, 0xf3, 0x76, 0x23, 0x07, 0x07, 0xe7, 0xd6, 0x46, 0x2f, 0xc3, 0x98, 0xfc, 0x7c, 0x2d, + 0x86, 0x46, 0xec, 0x94, 0xa2, 0xc1, 0xb0, 0x81, 0x89, 0xee, 0xc2, 0x69, 0xf9, 0x7f, 0x23, 0x70, + 0xb6, 0xb6, 0xdc, 0xba, 0x70, 0x2c, 0xe7, 0xde, 0xab, 0x0b, 0xd2, 0xc5, 0x72, 0x39, 0x0b, 0xe9, + 0xf0, 0xa0, 0x7c, 0x41, 0x8c, 0x5a, 0x26, 0x9c, 0x4d, 0x62, 0x36, 0x7d, 0xb4, 0x06, 0x33, 0x3b, + 0xc4, 0x69, 0x46, 0x3b, 0x4b, 0x3b, 0xa4, 0xbe, 0x2b, 0x37, 0x1d, 0x8b, 0xcc, 0xa1, 0x39, 0x70, + 0x5c, 0x4b, 0xa3, 0xe0, 0xac, 0x7a, 0xe8, 0x4d, 0x98, 0x6d, 0x77, 0x36, 0x9b, 0x6e, 0xb8, 0xb3, + 0xee, 0x47, 0xcc, 0x14, 0x48, 0x65, 0xef, 0x16, 0x21, 0x3c, 0x54, 0xec, 0x93, 0x6a, 0x0e, 0x1e, + 0xce, 0xa5, 0x80, 0xde, 0x86, 0xd3, 0x89, 0xc5, 0x20, 0x82, 0x18, 0x4c, 0xe4, 0xa7, 0x86, 0xa8, + 0x65, 0x55, 0x10, 0xf1, 0x40, 0xb2, 0x40, 0x38, 0xbb, 0x09, 0xf4, 0x0a, 0x80, 0xdb, 0x5e, 0x71, + 0x5a, 0x6e, 0x93, 0x3e, 0x17, 0x67, 0xd8, 0x3a, 0xa1, 0x4f, 0x07, 0x58, 0xad, 0xca, 0x52, 0x7a, + 0x3e, 0x8b, 0x7f, 0xfb, 0x58, 0xc3, 0x46, 0x37, 0x60, 0x42, 0xfc, 0xdb, 0x17, 0xd3, 0xca, 0x63, + 0x69, 0x3c, 0xc9, 0x02, 0x21, 0x55, 0x75, 0xc8, 0x61, 0xaa, 0x04, 0x27, 0xea, 0xa2, 0x6d, 0x38, + 0x27, 0xd3, 0x7c, 0xe9, 0x6b, 0x54, 0xce, 0x41, 0xc8, 0xf2, 0x31, 0x8c, 0x70, 0xdf, 0x90, 0x85, + 0x6e, 0x88, 0xb8, 0x3b, 0x1d, 0x7a, 0xb7, 0xeb, 0x4b, 0x9d, 0x7b, 0xcf, 0x9e, 0xe6, 0xa6, 0x49, + 0xf4, 0x6e, 0xbf, 0x91, 0x04, 0xe2, 0x34, 0x3e, 0x0a, 0xe1, 0xb4, 0xeb, 0x65, 0xad, 0xec, 0x33, + 0x8c, 0xd0, 0x47, 0xb9, 0xe3, 0x70, 0xf7, 0x55, 0x9d, 0x09, 0xe7, 0xab, 0x3a, 0x93, 0xf6, 0x3b, + 0xb3, 0xc0, 0xfb, 0x6d, 0x8b, 0xd6, 0xd6, 0xb8, 0x74, 0xf4, 0x19, 0x18, 0xd3, 0x3f, 0x4c, 0x70, + 0x1c, 0x17, 0xb3, 0x99, 0x58, 0xed, 0x6c, 0xe0, 0x3c, 0xbe, 0xda, 0xff, 0x3a, 0x0c, 0x1b, 0x14, + 0x51, 0x3d, 0xc3, 0xc5, 0xfe, 0x72, 0x7f, 0x1c, 0x4d, 0xff, 0x06, 0x68, 0x04, 0xb2, 0x97, 0x3c, + 0xba, 0x01, 0x23, 0xf5, 0xa6, 0x4b, 0xbc, 0x68, 0xb5, 0xda, 0x2d, 0xe8, 0xde, 0x92, 0xc0, 0x11, + 0x7b, 0x48, 0xa4, 0x57, 0xe0, 0x65, 0x58, 0x51, 0xb0, 0x7f, 0xad, 0x00, 0xe5, 0x1e, 0xb9, 0x3a, + 0x12, 0xea, 0x28, 0xab, 0x2f, 0x75, 0xd4, 0x82, 0x4c, 0x4f, 0xbf, 0x9e, 0x90, 0x74, 0x25, 0x52, + 0xcf, 0xc7, 0xf2, 0xae, 0x24, 0x7e, 0xdf, 0xee, 0x01, 0xba, 0x46, 0x6b, 0xa0, 0xa7, 0x83, 0x8b, + 0xa1, 0xc9, 0x1e, 0xec, 0xff, 0xf9, 0x9b, 0xab, 0x95, 0xb4, 0xbf, 0x56, 0x80, 0xd3, 0x6a, 0x08, + 0xbf, 0x7d, 0x07, 0xee, 0x56, 0x7a, 0xe0, 0x8e, 0x41, 0xa7, 0x6b, 0xdf, 0x84, 0x21, 0x1e, 0x45, + 0xb0, 0x0f, 0xb6, 0xfb, 0x09, 0x33, 0x4a, 0xaf, 0xe2, 0xf4, 0x8c, 0x48, 0xbd, 0x3f, 0x68, 0xc1, + 0x64, 0xc2, 0xcf, 0x0c, 0x61, 0xcd, 0x19, 0xf9, 0x41, 0x58, 0xe3, 0x2c, 0xa6, 0xfb, 0x02, 0x0c, + 0xec, 0xf8, 0x61, 0x94, 0x34, 0xf8, 0xb8, 0xe6, 0x87, 0x11, 0x66, 0x10, 0xfb, 0x77, 0x2d, 0x18, + 0xdc, 0x70, 0x5c, 0x2f, 0x92, 0xca, 0x01, 0x2b, 0x47, 0x39, 0xd0, 0xcf, 0x77, 0xa1, 0x97, 0x60, + 0x88, 0x6c, 0x6d, 0x91, 0x7a, 0x24, 0x66, 0x55, 0x46, 0x72, 0x18, 0x5a, 0x66, 0xa5, 0x94, 0x0f, + 0x64, 0x8d, 0xf1, 0xbf, 0x58, 0x20, 0xa3, 0x3b, 0x50, 0x8a, 0xdc, 0x16, 0x59, 0x68, 0x34, 0x84, + 0xca, 0xfc, 0x01, 0xa2, 0x51, 0x6c, 0x48, 0x02, 0x38, 0xa6, 0x65, 0x7f, 0xb1, 0x00, 0x10, 0x87, + 0x5f, 0xea, 0xf5, 0x89, 0x8b, 0x29, 0x65, 0xea, 0xc5, 0x0c, 0x65, 0x2a, 0x8a, 0x09, 0x66, 0x68, + 0x52, 0xd5, 0x30, 0x15, 0xfb, 0x1a, 0xa6, 0x81, 0xa3, 0x0c, 0xd3, 0x12, 0x4c, 0xc7, 0xe1, 0xa3, + 0xcc, 0xe8, 0x79, 0xec, 0xfa, 0xdc, 0x48, 0x02, 0x71, 0x1a, 0xdf, 0x26, 0x70, 0x41, 0x45, 0xd1, + 0x11, 0x37, 0x1a, 0xb3, 0xc8, 0xd6, 0x95, 0xd3, 0x3d, 0xc6, 0x29, 0xd6, 0x16, 0x17, 0x72, 0xb5, + 0xc5, 0x3f, 0x65, 0xc1, 0xa9, 0x64, 0x3b, 0xcc, 0x7d, 0xf9, 0x0b, 0x16, 0x9c, 0x66, 0x3a, 0x73, + 0xd6, 0x6a, 0x5a, 0x43, 0xff, 0x62, 0xd7, 0xc8, 0x40, 0x39, 0x3d, 0x8e, 0x43, 0x86, 0xac, 0x65, + 0x91, 0xc6, 0xd9, 0x2d, 0xda, 0xff, 0x7d, 0x00, 0x66, 0xf3, 0x42, 0x0a, 0x31, 0x87, 0x0d, 0xe7, + 0x5e, 0x6d, 0x97, 0xdc, 0x15, 0x66, 0xf1, 0xb1, 0xc3, 0x06, 0x2f, 0xc6, 0x12, 0x9e, 0x4c, 0xbf, + 0x50, 0xe8, 0x33, 0xfd, 0xc2, 0x0e, 0x4c, 0xdf, 0xdd, 0x21, 0xde, 0x2d, 0x2f, 0x74, 0x22, 0x37, + 0xdc, 0x72, 0x99, 0x7e, 0x99, 0xaf, 0x1b, 0x99, 0xb3, 0x75, 0xfa, 0x4e, 0x12, 0xe1, 0xf0, 0xa0, + 0x7c, 0xce, 0x28, 0x88, 0xbb, 0xcc, 0x0f, 0x12, 0x9c, 0x26, 0x9a, 0xce, 0x5e, 0x31, 0xf0, 0x90, + 0xb3, 0x57, 0xb4, 0x5c, 0x61, 0x95, 0x22, 0xad, 0xf1, 0xd9, 0xcb, 0x71, 0x4d, 0x95, 0x62, 0x0d, + 0x03, 0x7d, 0x0a, 0x90, 0x9e, 0x9d, 0xc7, 0x88, 0xe8, 0xf8, 0xdc, 0xfd, 0x83, 0x32, 0x5a, 0x4f, + 0x41, 0x0f, 0x0f, 0xca, 0x33, 0xb4, 0x74, 0xd5, 0xa3, 0x2f, 0xd0, 0x38, 0x0c, 0x56, 0x06, 0x21, + 0x74, 0x07, 0xa6, 0x68, 0x29, 0xdb, 0x51, 0x32, 0x5c, 0x24, 0x7f, 0x35, 0x3e, 0x73, 0xff, 0xa0, + 0x3c, 0xb5, 0x9e, 0x80, 0xe5, 0x91, 0x4e, 0x11, 0x41, 0xaf, 0xc0, 0x44, 0xbc, 0xae, 0xae, 0x93, + 0x7d, 0x1e, 0x6e, 0xa6, 0xc4, 0x05, 0xdf, 0x6b, 0x06, 0x04, 0x27, 0x30, 0xed, 0x2f, 0x58, 0x70, + 0x36, 0x37, 0xc9, 0x33, 0xba, 0x04, 0x23, 0x4e, 0xdb, 0xe5, 0x6a, 0x0c, 0x71, 0xd5, 0x30, 0x71, + 0x59, 0x75, 0x95, 0x2b, 0x31, 0x14, 0x94, 0x9e, 0xf0, 0xbb, 0xae, 0xd7, 0x48, 0x9e, 0xf0, 0xd7, + 0x5d, 0xaf, 0x81, 0x19, 0x44, 0x5d, 0x59, 0xc5, 0xbc, 0x2b, 0xcb, 0xfe, 0x01, 0x0b, 0x84, 0x43, + 0x6e, 0x1f, 0xf7, 0xdb, 0x27, 0x61, 0x6c, 0x2f, 0x9d, 0x05, 0xec, 0x42, 0xbe, 0x87, 0xb2, 0xc8, + 0xfd, 0xa5, 0x98, 0x56, 0x23, 0xe3, 0x97, 0x41, 0xcb, 0x6e, 0x80, 0x80, 0x56, 0x08, 0x13, 0xd2, + 0xf7, 0xee, 0xcd, 0xf3, 0x00, 0x0d, 0x86, 0xcb, 0x52, 0x83, 0x16, 0x4c, 0xee, 0xa5, 0xa2, 0x20, + 0x58, 0xc3, 0xb2, 0xff, 0x55, 0x01, 0x46, 0x65, 0xd6, 0xa9, 0x8e, 0xd7, 0x8f, 0x28, 0xed, 0x48, + 0x69, 0x68, 0xd1, 0x65, 0x28, 0x31, 0x59, 0x6f, 0x35, 0x96, 0x40, 0x2a, 0x49, 0xcb, 0x9a, 0x04, + 0xe0, 0x18, 0x87, 0x9e, 0x34, 0x61, 0x67, 0x93, 0xa1, 0x27, 0xdc, 0x47, 0x6b, 0xbc, 0x18, 0x4b, + 0x38, 0xfa, 0x38, 0x4c, 0xf1, 0x7a, 0x81, 0xdf, 0x76, 0xb6, 0xb9, 0x7e, 0x68, 0x50, 0xc5, 0xe4, + 0x98, 0x5a, 0x4b, 0xc0, 0x0e, 0x0f, 0xca, 0xa7, 0x92, 0x65, 0x4c, 0xf1, 0x99, 0xa2, 0xc2, 0xcc, + 0xc0, 0x78, 0x23, 0xf4, 0x84, 0x4c, 0x59, 0x8f, 0xc5, 0x20, 0xac, 0xe3, 0xd9, 0x9f, 0x01, 0x94, + 0xce, 0xbf, 0x85, 0x5e, 0xe7, 0xb6, 0xbf, 0x6e, 0x40, 0x1a, 0xdd, 0x14, 0xa1, 0x7a, 0xe4, 0x09, + 0xe9, 0xf9, 0xc5, 0x6b, 0x61, 0x55, 0xdf, 0xfe, 0xff, 0x8a, 0x30, 0x95, 0xf4, 0x75, 0x47, 0xd7, + 0x60, 0x88, 0xb3, 0x67, 0x82, 0x7c, 0x17, 0x3b, 0x1b, 0xcd, 0x43, 0x9e, 0x5d, 0x54, 0x82, 0xc3, + 0x13, 0xf5, 0xd1, 0x9b, 0x30, 0xda, 0xf0, 0xef, 0x7a, 0x77, 0x9d, 0xa0, 0xb1, 0x50, 0x5d, 0x15, + 0xcb, 0x39, 0xf3, 0xe1, 0x5f, 0x89, 0xd1, 0x74, 0xaf, 0x7b, 0xa6, 0x53, 0x8e, 0x41, 0x58, 0x27, + 0x87, 0x36, 0x58, 0xd0, 0xfe, 0x2d, 0x77, 0x7b, 0xcd, 0x69, 0x77, 0x73, 0x04, 0x59, 0x92, 0x48, + 0x1a, 0xe5, 0x71, 0x11, 0xd9, 0x9f, 0x03, 0x70, 0x4c, 0x08, 0x7d, 0x0e, 0x66, 0xc2, 0x1c, 0x75, + 0x44, 0x5e, 0x3a, 0xc6, 0x6e, 0x12, 0xfa, 0xc5, 0x47, 0xee, 0x1f, 0x94, 0x67, 0xb2, 0x14, 0x17, + 0x59, 0xcd, 0xd8, 0x5f, 0x3a, 0x05, 0xc6, 0x26, 0x36, 0xb2, 0xf3, 0x5a, 0xc7, 0x94, 0x9d, 0x17, + 0xc3, 0x08, 0x69, 0xb5, 0xa3, 0xfd, 0x8a, 0x1b, 0x88, 0x39, 0xc9, 0xa4, 0xb9, 0x2c, 0x70, 0xd2, + 0x34, 0x25, 0x04, 0x2b, 0x3a, 0xd9, 0x29, 0x94, 0x8b, 0xdf, 0xc4, 0x14, 0xca, 0x03, 0x27, 0x98, + 0x42, 0x79, 0x1d, 0x86, 0xb7, 0xdd, 0x08, 0x93, 0xb6, 0x2f, 0x1e, 0x46, 0x99, 0xeb, 0xf0, 0x2a, + 0x47, 0x49, 0x27, 0xeb, 0x14, 0x00, 0x2c, 0x89, 0xa0, 0xd7, 0xd5, 0x0e, 0x1c, 0xca, 0x17, 0x5e, + 0xa4, 0x0d, 0x42, 0x32, 0xf7, 0xa0, 0x48, 0x94, 0x3c, 0xfc, 0xa0, 0x89, 0x92, 0x57, 0x64, 0x7a, + 0xe3, 0x91, 0x7c, 0xaf, 0x2d, 0x96, 0xbd, 0xb8, 0x47, 0x52, 0xe3, 0xdb, 0x7a, 0x4a, 0xe8, 0x52, + 0xfe, 0x49, 0xa0, 0xb2, 0x3d, 0xf7, 0x99, 0x08, 0xfa, 0x07, 0x2c, 0x38, 0xdd, 0xce, 0xca, 0x8e, + 0x2e, 0x6c, 0x27, 0x5e, 0xea, 0x3b, 0x01, 0xbb, 0xd1, 0x20, 0x93, 0x39, 0x66, 0xa7, 0xd8, 0xcf, + 0x6e, 0x8e, 0x0e, 0x74, 0xb0, 0xd9, 0x10, 0x3a, 0xfc, 0x27, 0x72, 0x32, 0x4a, 0x77, 0xc9, 0x23, + 0xbd, 0x91, 0x91, 0xbd, 0xf8, 0xc9, 0xbc, 0xec, 0xc5, 0x7d, 0xe7, 0x2c, 0x7e, 0x5d, 0xe5, 0x92, + 0x1e, 0xcf, 0x5f, 0x4a, 0x3c, 0x53, 0x74, 0xcf, 0x0c, 0xd2, 0xaf, 0xab, 0x0c, 0xd2, 0x5d, 0x82, + 0x2b, 0xf3, 0xfc, 0xd0, 0x3d, 0xf3, 0x46, 0x6b, 0xb9, 0x9f, 0x27, 0x8f, 0x27, 0xf7, 0xb3, 0x71, + 0xd5, 0xf0, 0xf4, 0xc3, 0xcf, 0xf4, 0xb8, 0x6a, 0x0c, 0xba, 0xdd, 0x2f, 0x1b, 0x9e, 0xe7, 0x7a, + 0xfa, 0x81, 0xf2, 0x5c, 0xdf, 0xd6, 0xf3, 0x46, 0xa3, 0x1e, 0x89, 0x91, 0x29, 0x52, 0x9f, 0xd9, + 0xa2, 0x6f, 0xeb, 0x17, 0xe0, 0x4c, 0x3e, 0x5d, 0x75, 0xcf, 0xa5, 0xe9, 0x66, 0x5e, 0x81, 0xa9, + 0x2c, 0xd4, 0xa7, 0x4e, 0x26, 0x0b, 0xf5, 0xe9, 0x63, 0xcf, 0x42, 0x7d, 0xe6, 0x04, 0xb2, 0x50, + 0x3f, 0x72, 0x82, 0x59, 0xa8, 0x6f, 0x33, 0x83, 0x23, 0x1e, 0xd6, 0x48, 0x04, 0x83, 0x7e, 0x3a, + 0x27, 0x2a, 0x58, 0x3a, 0xf6, 0x11, 0xff, 0x38, 0x05, 0xc2, 0x31, 0xa9, 0x8c, 0xec, 0xd6, 0xb3, + 0x0f, 0x21, 0xbb, 0xf5, 0x7a, 0x9c, 0xdd, 0xfa, 0x6c, 0xfe, 0x54, 0x67, 0xb8, 0xa8, 0xe4, 0xe4, + 0xb4, 0xbe, 0xad, 0xe7, 0xa2, 0x7e, 0xb4, 0x8b, 0x56, 0x29, 0x4b, 0x38, 0xdb, 0x25, 0x03, 0xf5, + 0x6b, 0x3c, 0x03, 0xf5, 0x63, 0xf9, 0x27, 0x79, 0xf2, 0xba, 0x33, 0xf2, 0x4e, 0xd3, 0x7e, 0xa9, + 0xb0, 0xa0, 0x2c, 0xec, 0x75, 0x4e, 0xbf, 0x54, 0x5c, 0xd1, 0x74, 0xbf, 0x14, 0x08, 0xc7, 0xa4, + 0xec, 0x1f, 0x2a, 0xc0, 0xf9, 0xee, 0xfb, 0x2d, 0x96, 0x38, 0x57, 0x63, 0x25, 0x7b, 0x42, 0xe2, + 0xcc, 0xdf, 0x6c, 0x31, 0x56, 0xdf, 0x51, 0x0e, 0xaf, 0xc2, 0xb4, 0xf2, 0x6d, 0xa1, 0x6f, 0xf4, + 0xf5, 0xf8, 0xe5, 0xab, 0xe2, 0x01, 0xd4, 0x92, 0x08, 0x38, 0x5d, 0x07, 0x2d, 0xc0, 0xa4, 0x51, + 0xb8, 0x5a, 0x11, 0x6f, 0x33, 0x25, 0xe2, 0xae, 0x99, 0x60, 0x9c, 0xc4, 0xb7, 0xbf, 0x6c, 0xc1, + 0x23, 0x39, 0xe9, 0x1b, 0xfb, 0x0e, 0xe2, 0xb7, 0x05, 0x93, 0x6d, 0xb3, 0x6a, 0x8f, 0xb8, 0xa3, + 0x46, 0x92, 0x48, 0xd5, 0xd7, 0x04, 0x00, 0x27, 0x89, 0xda, 0x3f, 0x53, 0x80, 0x73, 0x5d, 0x8d, + 0x35, 0x11, 0x86, 0x33, 0xdb, 0xad, 0xd0, 0x59, 0x0a, 0x48, 0x83, 0x78, 0x91, 0xeb, 0x34, 0x6b, + 0x6d, 0x52, 0xd7, 0x74, 0x06, 0xcc, 0xea, 0xf1, 0xea, 0x5a, 0x6d, 0x21, 0x8d, 0x81, 0x73, 0x6a, + 0xa2, 0x15, 0x40, 0x69, 0x88, 0x98, 0x61, 0x16, 0x40, 0x3d, 0x4d, 0x0f, 0x67, 0xd4, 0x40, 0x1f, + 0x86, 0x71, 0x65, 0x04, 0xaa, 0xcd, 0x38, 0x3b, 0xd8, 0xb1, 0x0e, 0xc0, 0x26, 0x1e, 0xba, 0xc2, + 0x23, 0xf0, 0x8b, 0x5c, 0x0d, 0x42, 0xc1, 0x30, 0x29, 0xc3, 0xeb, 0x8b, 0x62, 0xac, 0xe3, 0x2c, + 0xbe, 0xfc, 0xeb, 0xbf, 0x7f, 0xfe, 0x7d, 0xbf, 0xf9, 0xfb, 0xe7, 0xdf, 0xf7, 0x3b, 0xbf, 0x7f, + 0xfe, 0x7d, 0xdf, 0x73, 0xff, 0xbc, 0xf5, 0xeb, 0xf7, 0xcf, 0x5b, 0xbf, 0x79, 0xff, 0xbc, 0xf5, + 0x3b, 0xf7, 0xcf, 0x5b, 0xbf, 0x77, 0xff, 0xbc, 0xf5, 0xc5, 0x3f, 0x38, 0xff, 0xbe, 0x4f, 0xa2, + 0x38, 0x2c, 0xe6, 0x65, 0x3a, 0x3b, 0x97, 0xf7, 0xae, 0xfc, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x04, 0xa7, 0x88, 0x7f, 0x92, 0x09, 0x01, 0x00, } func (m *AWSElasticBlockStoreVolumeSource) Marshal() (dAtA []byte, err error) { @@ -15056,6 +15059,18 @@ func (m *PodSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.HostUsers != nil { + i-- + if *m.HostUsers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x2 + i-- + dAtA[i] = 0xa8 + } if m.OS != nil { { size, err := m.OS.MarshalToSizedBuffer(dAtA[:i]) @@ -18918,6 +18933,15 @@ func (m *TopologySpreadConstraint) MarshalToSizedBuffer(dAtA []byte) (int, error _ = i var l int _ = l + if len(m.MatchLabelKeys) > 0 { + for iNdEx := len(m.MatchLabelKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.MatchLabelKeys[iNdEx]) + copy(dAtA[i:], m.MatchLabelKeys[iNdEx]) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.MatchLabelKeys[iNdEx]))) + i-- + dAtA[i] = 0x42 + } + } if m.NodeTaintsPolicy != nil { i -= len(*m.NodeTaintsPolicy) copy(dAtA[i:], *m.NodeTaintsPolicy) @@ -22846,6 +22870,9 @@ func (m *PodSpec) Size() (n int) { l = m.OS.Size() n += 2 + l + sovGenerated(uint64(l)) } + if m.HostUsers != nil { + n += 3 + } return n } @@ -24135,6 +24162,12 @@ func (m *TopologySpreadConstraint) Size() (n int) { l = len(*m.NodeTaintsPolicy) n += 1 + l + sovGenerated(uint64(l)) } + if len(m.MatchLabelKeys) > 0 { + for _, s := range m.MatchLabelKeys { + l = len(s) + n += 1 + l + sovGenerated(uint64(l)) + } + } return n } @@ -26727,6 +26760,7 @@ func (this *PodSpec) String() string { `EphemeralContainers:` + repeatedStringForEphemeralContainers + `,`, `SetHostnameAsFQDN:` + valueToStringGenerated(this.SetHostnameAsFQDN) + `,`, `OS:` + strings.Replace(this.OS.String(), "PodOS", "PodOS", 1) + `,`, + `HostUsers:` + valueToStringGenerated(this.HostUsers) + `,`, `}`, }, "") return s @@ -27726,6 +27760,7 @@ func (this *TopologySpreadConstraint) String() string { `MinDomains:` + valueToStringGenerated(this.MinDomains) + `,`, `NodeAffinityPolicy:` + valueToStringGenerated(this.NodeAffinityPolicy) + `,`, `NodeTaintsPolicy:` + valueToStringGenerated(this.NodeTaintsPolicy) + `,`, + `MatchLabelKeys:` + fmt.Sprintf("%v", this.MatchLabelKeys) + `,`, `}`, }, "") return s @@ -54418,6 +54453,27 @@ func (m *PodSpec) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 37: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field HostUsers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.HostUsers = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) @@ -64026,7 +64082,7 @@ func (m *ServiceSpec) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - s := IPFamilyPolicyType(dAtA[iNdEx:postIndex]) + s := IPFamilyPolicy(dAtA[iNdEx:postIndex]) m.IPFamilyPolicy = &s iNdEx = postIndex case 18: @@ -65849,6 +65905,38 @@ func (m *TopologySpreadConstraint) Unmarshal(dAtA []byte) error { s := NodeInclusionPolicy(dAtA[iNdEx:postIndex]) m.NodeTaintsPolicy = &s iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MatchLabelKeys", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MatchLabelKeys = append(m.MatchLabelKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto index bb6f8b17c51..256f5da32f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/generated.proto @@ -656,12 +656,12 @@ message Container { // +optional optional string workingDir = 5; - // List of ports to expose from the container. Exposing a port here gives - // the system additional information about the network connections a - // container uses, but is primarily informational. Not specifying a port here + // List of ports to expose from the container. Not specifying a port here // DOES NOT prevent that port from being exposed. Any port which is // listening on the default "0.0.0.0" address inside a container will be // accessible from the network. + // Modifying this array with strategic merge patch may corrupt the data. + // For more information See https://github.com/kubernetes/kubernetes/issues/108255. // Cannot be updated. // +optional // +patchMergeKey=containerPort @@ -1071,13 +1071,16 @@ message EndpointPort { // EndpointSubset is a group of addresses with a common set of ports. The // expanded set of endpoints is the Cartesian product of Addresses x Ports. // For example, given: -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// } +// +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// // The resulting set of endpoints can be viewed as: -// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], -// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +// +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] message EndpointSubset { // IP addresses which offer the related ports that are marked as ready. These endpoints // should be considered safe for load balancers and clients to utilize. @@ -1096,17 +1099,18 @@ message EndpointSubset { } // Endpoints is a collection of endpoints that implement the actual service. Example: -// Name: "mysvc", -// Subsets: [ -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// ] +// +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] message Endpoints { // Standard object's metadata. // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata @@ -1201,8 +1205,6 @@ message EnvVarSource { // // To add an ephemeral container, use the ephemeralcontainers subresource of an existing // Pod. Ephemeral containers may not be removed or restarted. -// -// This is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate. message EphemeralContainer { // Ephemeral containers have all of the fields of Container, plus additional fields // specific to ephemeral containers. Fields in common with Container are in the @@ -2544,6 +2546,7 @@ message ObjectFieldSelector { // and the version of the actual struct is irrelevant. // 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type // will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. +// // Instead of using this type, create a locally provided and used type that is well-focused on your reference. // For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object @@ -2948,6 +2951,7 @@ message PersistentVolumeSpec { // claim.VolumeName is the authoritative bind between PV and PVC. // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding // +optional + // +structType=granular optional ObjectReference claimRef = 4; // persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. @@ -3241,7 +3245,8 @@ message PodExecOptions { // IP address information for entries in the (plural) PodIPs field. // Each entry includes: -// IP: An IP address allocated to the pod. Routable at least within the cluster. +// +// IP: An IP address allocated to the pod. Routable at least within the cluster. message PodIP { // ip is an IP address (IPv4 or IPv6) assigned to the pod optional string ip = 1; @@ -3483,7 +3488,6 @@ message PodSpec { // pod to perform user-initiated actions such as debugging. This list cannot be specified when // creating a pod, and it cannot be modified by updating the pod spec. In order to add an // ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. - // This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate. // +optional // +patchMergeKey=name // +patchStrategy=merge @@ -3709,6 +3713,7 @@ message PodSpec { // If the OS field is set to windows, following fields must be unset: // - spec.hostPID // - spec.hostIPC + // - spec.hostUsers // - spec.securityContext.seLinuxOptions // - spec.securityContext.seccompProfile // - spec.securityContext.fsGroup @@ -3728,8 +3733,20 @@ message PodSpec { // - spec.containers[*].securityContext.runAsUser // - spec.containers[*].securityContext.runAsGroup // +optional - // This is a beta field and requires the IdentifyPodOS feature optional PodOS os = 36; + + // Use the host's user namespace. + // Optional: Default to true. + // If set to true or not present, the pod will be run in the host user namespace, useful + // for when the pod needs a feature only available to the host user namespace, such as + // loading a kernel module with CAP_SYS_MODULE. + // When set to false, a new userns is created for the pod. Setting false is useful for + // mitigating container breakout vulnerabilities even allowing users to run their + // containers as root without actually having root privileges on the host. + // This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. + // +k8s:conversion-gen=false + // +optional + optional bool hostUsers = 37; } // PodStatus represents information about the status of a pod. Status may trail the actual @@ -3823,7 +3840,6 @@ message PodStatus { optional string qosClass = 9; // Status for any ephemeral containers that have run in this pod. - // This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate. // +optional repeated ContainerStatus ephemeralContainerStatuses = 13; } @@ -5117,6 +5133,7 @@ message ServiceSpec { // service or not. If this field is specified when creating a Service // which does not need it, creation will fail. This field will be wiped // when updating a Service to no longer need it (e.g. changing type). + // This field cannot be updated once set. // +optional optional int32 healthCheckNodePort = 12; @@ -5474,7 +5491,7 @@ message TopologySpreadConstraint { // because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, // it will violate MaxSkew. // - // This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate. + // This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). // +optional optional int32 minDomains = 5; @@ -5498,6 +5515,16 @@ message TopologySpreadConstraint { // This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. // +optional optional string nodeTaintsPolicy = 7; + + // MatchLabelKeys is a set of pod label keys to select the pods over which + // spreading will be calculated. The keys are used to lookup values from the + // incoming pod labels, those key-value labels are ANDed with labelSelector + // to select the group of existing pods over which spreading will be calculated + // for the incoming pod. Keys that don't exist in the incoming pod labels will + // be ignored. A null or empty list means only match against labelSelector. + // +listType=atomic + // +optional + repeated string matchLabelKeys = 8; } // TypedLocalObjectReference contains enough information to let you locate the diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/toleration.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/toleration.go index b203d335b6b..9341abf8919 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/toleration.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/toleration.go @@ -29,11 +29,14 @@ func (t *Toleration) MatchToleration(tolerationToMatch *Toleration) bool { // ToleratesTaint checks if the toleration tolerates the taint. // The matching follows the rules below: // (1) Empty toleration.effect means to match all taint effects, -// otherwise taint effect must equal to toleration.effect. +// +// otherwise taint effect must equal to toleration.effect. +// // (2) If toleration.operator is 'Exists', it means to match all taint values. // (3) Empty toleration.key means to match all taint keys. -// If toleration.key is empty, toleration.operator must be 'Exists'; -// this combination means to match all taint values and all taint keys. +// +// If toleration.key is empty, toleration.operator must be 'Exists'; +// this combination means to match all taint values and all taint keys. func (t *Toleration) ToleratesTaint(taint *Taint) bool { if len(t.Effect) > 0 && t.Effect != taint.Effect { return false diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go index 73c605fb5bf..754a23613db 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types.go @@ -337,6 +337,7 @@ type PersistentVolumeSpec struct { // claim.VolumeName is the authoritative bind between PV and PVC. // More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding // +optional + // +structType=granular ClaimRef *ObjectReference `json:"claimRef,omitempty" protobuf:"bytes,4,opt,name=claimRef"` // persistentVolumeReclaimPolicy defines what happens to a persistent volume when released from its claim. // Valid options are Retain (default for manually created PersistentVolumes), Delete (default @@ -2333,12 +2334,12 @@ type Container struct { // Cannot be updated. // +optional WorkingDir string `json:"workingDir,omitempty" protobuf:"bytes,5,opt,name=workingDir"` - // List of ports to expose from the container. Exposing a port here gives - // the system additional information about the network connections a - // container uses, but is primarily informational. Not specifying a port here + // List of ports to expose from the container. Not specifying a port here // DOES NOT prevent that port from being exposed. Any port which is // listening on the default "0.0.0.0" address inside a container will be // accessible from the network. + // Modifying this array with strategic merge patch may corrupt the data. + // For more information See https://github.com/kubernetes/kubernetes/issues/108255. // Cannot be updated. // +optional // +patchMergeKey=containerPort @@ -2653,6 +2654,10 @@ const ( PodReady PodConditionType = "Ready" // PodScheduled represents status of the scheduling process for this pod. PodScheduled PodConditionType = "PodScheduled" + // AlphaNoCompatGuaranteeDisruptionTarget indicates the pod is about to be deleted due to a + // disruption (such as preemption, eviction API or garbage-collection). + // The constant is to be renamed once the name is accepted within the KEP-3329. + AlphaNoCompatGuaranteeDisruptionTarget PodConditionType = "DisruptionTarget" ) // These are reasons for a pod's transition to a condition. @@ -3090,7 +3095,6 @@ type PodSpec struct { // pod to perform user-initiated actions such as debugging. This list cannot be specified when // creating a pod, and it cannot be modified by updating the pod spec. In order to add an // ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. - // This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate. // +optional // +patchMergeKey=name // +patchStrategy=merge @@ -3286,6 +3290,7 @@ type PodSpec struct { // If the OS field is set to windows, following fields must be unset: // - spec.hostPID // - spec.hostIPC + // - spec.hostUsers // - spec.securityContext.seLinuxOptions // - spec.securityContext.seccompProfile // - spec.securityContext.fsGroup @@ -3305,8 +3310,19 @@ type PodSpec struct { // - spec.containers[*].securityContext.runAsUser // - spec.containers[*].securityContext.runAsGroup // +optional - // This is a beta field and requires the IdentifyPodOS feature OS *PodOS `json:"os,omitempty" protobuf:"bytes,36,opt,name=os"` + // Use the host's user namespace. + // Optional: Default to true. + // If set to true or not present, the pod will be run in the host user namespace, useful + // for when the pod needs a feature only available to the host user namespace, such as + // loading a kernel module with CAP_SYS_MODULE. + // When set to false, a new userns is created for the pod. Setting false is useful for + // mitigating container breakout vulnerabilities even allowing users to run their + // containers as root without actually having root privileges on the host. + // This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature. + // +k8s:conversion-gen=false + // +optional + HostUsers *bool `json:"hostUsers,omitempty" protobuf:"bytes,37,opt,name=hostUsers"` } // OSName is the set of OS'es that can be used in OS. @@ -3434,7 +3450,7 @@ type TopologySpreadConstraint struct { // because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, // it will violate MaxSkew. // - // This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate. + // This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). // +optional MinDomains *int32 `json:"minDomains,omitempty" protobuf:"varint,5,opt,name=minDomains"` // NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector @@ -3456,6 +3472,15 @@ type TopologySpreadConstraint struct { // This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. // +optional NodeTaintsPolicy *NodeInclusionPolicy `json:"nodeTaintsPolicy,omitempty" protobuf:"bytes,7,opt,name=nodeTaintsPolicy"` + // MatchLabelKeys is a set of pod label keys to select the pods over which + // spreading will be calculated. The keys are used to lookup values from the + // incoming pod labels, those key-value labels are ANDed with labelSelector + // to select the group of existing pods over which spreading will be calculated + // for the incoming pod. Keys that don't exist in the incoming pod labels will + // be ignored. A null or empty list means only match against labelSelector. + // +listType=atomic + // +optional + MatchLabelKeys []string `json:"matchLabelKeys,omitempty" protobuf:"bytes,8,opt,name=matchLabelKeys"` } const ( @@ -3647,7 +3672,8 @@ type PodDNSConfigOption struct { // IP address information for entries in the (plural) PodIPs field. // Each entry includes: -// IP: An IP address allocated to the pod. Routable at least within the cluster. +// +// IP: An IP address allocated to the pod. Routable at least within the cluster. type PodIP struct { // ip is an IP address (IPv4 or IPv6) assigned to the pod IP string `json:"ip,omitempty" protobuf:"bytes,1,opt,name=ip"` @@ -3804,8 +3830,6 @@ var _ = Container(EphemeralContainerCommon{}) // // To add an ephemeral container, use the ephemeralcontainers subresource of an existing // Pod. Ephemeral containers may not be removed or restarted. -// -// This is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate. type EphemeralContainer struct { // Ephemeral containers have all of the fields of Container, plus additional fields // specific to ephemeral containers. Fields in common with Container are in the @@ -3907,7 +3931,6 @@ type PodStatus struct { // +optional QOSClass PodQOSClass `json:"qosClass,omitempty" protobuf:"bytes,9,rep,name=qosClass"` // Status for any ephemeral containers that have run in this pod. - // This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate. // +optional EphemeralContainerStatuses []ContainerStatus `json:"ephemeralContainerStatuses,omitempty" protobuf:"bytes,13,rep,name=ephemeralContainerStatuses"` } @@ -4300,30 +4323,34 @@ const ( IPv6Protocol IPFamily = "IPv6" ) -// IPFamilyPolicyType represents the dual-stack-ness requested or required by a Service +// IPFamilyPolicy represents the dual-stack-ness requested or required by a Service // +enum -type IPFamilyPolicyType string +type IPFamilyPolicy string const ( // IPFamilyPolicySingleStack indicates that this service is required to have a single IPFamily. // The IPFamily assigned is based on the default IPFamily used by the cluster // or as identified by service.spec.ipFamilies field - IPFamilyPolicySingleStack IPFamilyPolicyType = "SingleStack" + IPFamilyPolicySingleStack IPFamilyPolicy = "SingleStack" // IPFamilyPolicyPreferDualStack indicates that this service prefers dual-stack when // the cluster is configured for dual-stack. If the cluster is not configured // for dual-stack the service will be assigned a single IPFamily. If the IPFamily is not // set in service.spec.ipFamilies then the service will be assigned the default IPFamily // configured on the cluster - IPFamilyPolicyPreferDualStack IPFamilyPolicyType = "PreferDualStack" + IPFamilyPolicyPreferDualStack IPFamilyPolicy = "PreferDualStack" // IPFamilyPolicyRequireDualStack indicates that this service requires dual-stack. Using // IPFamilyPolicyRequireDualStack on a single stack cluster will result in validation errors. The // IPFamilies (and their order) assigned to this service is based on service.spec.ipFamilies. If // service.spec.ipFamilies was not provided then it will be assigned according to how they are // configured on the cluster. If service.spec.ipFamilies has only one entry then the alternative // IPFamily will be added by apiserver - IPFamilyPolicyRequireDualStack IPFamilyPolicyType = "RequireDualStack" + IPFamilyPolicyRequireDualStack IPFamilyPolicy = "RequireDualStack" ) +// for backwards compat +// +enum +type IPFamilyPolicyType = IPFamilyPolicy + // ServiceSpec describes the attributes that a user creates on a service. type ServiceSpec struct { // The list of ports that are exposed by this service. @@ -4475,6 +4502,7 @@ type ServiceSpec struct { // service or not. If this field is specified when creating a Service // which does not need it, creation will fail. This field will be wiped // when updating a Service to no longer need it (e.g. changing type). + // This field cannot be updated once set. // +optional HealthCheckNodePort int32 `json:"healthCheckNodePort,omitempty" protobuf:"bytes,12,opt,name=healthCheckNodePort"` @@ -4528,7 +4556,7 @@ type ServiceSpec struct { // ipFamilies and clusterIPs fields depend on the value of this field. This // field will be wiped when updating a service to type ExternalName. // +optional - IPFamilyPolicy *IPFamilyPolicyType `json:"ipFamilyPolicy,omitempty" protobuf:"bytes,17,opt,name=ipFamilyPolicy,casttype=IPFamilyPolicyType"` + IPFamilyPolicy *IPFamilyPolicy `json:"ipFamilyPolicy,omitempty" protobuf:"bytes,17,opt,name=ipFamilyPolicy,casttype=IPFamilyPolicy"` // allocateLoadBalancerNodePorts defines if NodePorts will be automatically // allocated for services with type LoadBalancer. Default is "true". It @@ -4721,17 +4749,18 @@ type ServiceAccountList struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Endpoints is a collection of endpoints that implement the actual service. Example: -// Name: "mysvc", -// Subsets: [ -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// ] +// +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] type Endpoints struct { metav1.TypeMeta `json:",inline"` // Standard object's metadata. @@ -4753,13 +4782,16 @@ type Endpoints struct { // EndpointSubset is a group of addresses with a common set of ports. The // expanded set of endpoints is the Cartesian product of Addresses x Ports. // For example, given: -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// } +// +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// // The resulting set of endpoints can be viewed as: -// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], -// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +// +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] type EndpointSubset struct { // IP addresses which offer the related ports that are marked as ready. These endpoints // should be considered safe for load balancers and clients to utilize. @@ -5632,6 +5664,7 @@ type ServiceProxyOptions struct { // and the version of the actual struct is irrelevant. // 5. We cannot easily change it. Because this type is embedded in many locations, updates to this type // will affect numerous schemas. Don't make new APIs embed an underspecified API type they do not control. +// // Instead of using this type, create a locally provided and used type that is well-focused on your reference. // For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 . // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go index cb898881f24..6bae4bb76fb 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/types_swagger_doc_generated.go @@ -332,7 +332,7 @@ var map_Container = map[string]string{ "command": "Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", "args": "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell", "workingDir": "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated.", - "ports": "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated.", + "ports": "List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated.", "envFrom": "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.", "env": "List of environment variables to set in the container. Cannot be updated.", "resources": "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/", @@ -515,7 +515,7 @@ func (EndpointPort) SwaggerDoc() map[string]string { } var map_EndpointSubset = map[string]string{ - "": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n }\nThe resulting set of endpoints can be viewed as:\n a: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n b: [ 10.10.1.1:309, 10.10.2.2:309 ]", + "": "EndpointSubset is a group of addresses with a common set of ports. The expanded set of endpoints is the Cartesian product of Addresses x Ports. For example, given:\n\n\t{\n\t Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n\t Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n\t}\n\nThe resulting set of endpoints can be viewed as:\n\n\ta: [ 10.10.1.1:8675, 10.10.2.2:8675 ],\n\tb: [ 10.10.1.1:309, 10.10.2.2:309 ]", "addresses": "IP addresses which offer the related ports that are marked as ready. These endpoints should be considered safe for load balancers and clients to utilize.", "notReadyAddresses": "IP addresses which offer the related ports but are not currently marked as ready because they have not yet finished starting, have recently failed a readiness check, or have recently failed a liveness check.", "ports": "Port numbers available on the related IP addresses.", @@ -526,7 +526,7 @@ func (EndpointSubset) SwaggerDoc() map[string]string { } var map_Endpoints = map[string]string{ - "": "Endpoints is a collection of endpoints that implement the actual service. Example:\n Name: \"mysvc\",\n Subsets: [\n {\n Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n },\n {\n Addresses: [{\"ip\": \"10.10.3.3\"}],\n Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n },\n ]", + "": "Endpoints is a collection of endpoints that implement the actual service. Example:\n\n\t Name: \"mysvc\",\n\t Subsets: [\n\t {\n\t Addresses: [{\"ip\": \"10.10.1.1\"}, {\"ip\": \"10.10.2.2\"}],\n\t Ports: [{\"name\": \"a\", \"port\": 8675}, {\"name\": \"b\", \"port\": 309}]\n\t },\n\t {\n\t Addresses: [{\"ip\": \"10.10.3.3\"}],\n\t Ports: [{\"name\": \"a\", \"port\": 93}, {\"name\": \"b\", \"port\": 76}]\n\t },\n\t]", "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", "subsets": "The set of all endpoints is the union of all subsets. Addresses are placed into subsets according to the IPs they share. A single address with multiple ports, some of which are ready and some of which are not (because they come from different containers) will result in the address being displayed in different subsets for the different ports. No address will appear in both Addresses and NotReadyAddresses in the same subset. Sets of addresses and ports that comprise a service.", } @@ -580,7 +580,7 @@ func (EnvVarSource) SwaggerDoc() map[string]string { } var map_EphemeralContainer = map[string]string{ - "": "An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation.\n\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted.\n\nThis is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate.", + "": "An EphemeralContainer is a temporary container that you may add to an existing Pod for user-initiated activities such as debugging. Ephemeral containers have no resource or scheduling guarantees, and they will not be restarted when they exit or when a Pod is removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the Pod to exceed its resource allocation.\n\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing Pod. Ephemeral containers may not be removed or restarted.", "targetContainerName": "If set, the name of the container from PodSpec that this ephemeral container targets. The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. If not set then the ephemeral container uses the namespaces configured in the Pod spec.\n\nThe container runtime must implement support for this feature. If the runtime does not support namespace targeting then the result of setting this field is undefined.", } @@ -1535,7 +1535,7 @@ func (PodExecOptions) SwaggerDoc() map[string]string { } var map_PodIP = map[string]string{ - "": "IP address information for entries in the (plural) PodIPs field. Each entry includes:\n IP: An IP address allocated to the pod. Routable at least within the cluster.", + "": "IP address information for entries in the (plural) PodIPs field. Each entry includes:\n\n\tIP: An IP address allocated to the pod. Routable at least within the cluster.", "ip": "ip is an IP address (IPv4 or IPv6) assigned to the pod", } @@ -1638,7 +1638,7 @@ var map_PodSpec = map[string]string{ "volumes": "List of volumes that can be mounted by containers belonging to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes", "initContainers": "List of initialization containers belonging to the pod. Init containers are executed in order prior to containers being started. If any init container fails, the pod is considered to have failed and is handled according to its restartPolicy. The name for an init container or normal container must be unique among all containers. Init containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes. The resourceRequirements of an init container are taken into account during scheduling by finding the highest request/limit for each resource type, and then using the max of of that value or the sum of the normal containers. Limits are applied to init containers in a similar fashion. Init containers cannot currently be added or removed. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/", "containers": "List of containers belonging to the pod. Containers cannot currently be added or removed. There must be at least one container in a Pod. Cannot be updated.", - "ephemeralContainers": "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.", + "ephemeralContainers": "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing pod to perform user-initiated actions such as debugging. This list cannot be specified when creating a pod, and it cannot be modified by updating the pod spec. In order to add an ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource.", "restartPolicy": "Restart policy for all containers within the pod. One of Always, OnFailure, Never. Default to Always. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy", "terminationGracePeriodSeconds": "Optional duration in seconds the pod needs to terminate gracefully. May be decreased in delete request. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). If this value is nil, the default grace period will be used instead. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Defaults to 30 seconds.", "activeDeadlineSeconds": "Optional duration in seconds the pod may be active on the node relative to StartTime before the system will actively try to mark it failed and kill associated containers. Value must be a positive integer.", @@ -1670,7 +1670,8 @@ var map_PodSpec = map[string]string{ "overhead": "Overhead represents the resource overhead associated with running a pod for a given RuntimeClass. This field will be autopopulated at admission time by the RuntimeClass admission controller. If the RuntimeClass admission controller is enabled, overhead must not be set in Pod create requests. The RuntimeClass admission controller will reject Pod create requests which have the overhead already set. If RuntimeClass is configured and selected in the PodSpec, Overhead will be set to the value defined in the corresponding RuntimeClass, otherwise it will remain unset and treated as zero. More info: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md", "topologySpreadConstraints": "TopologySpreadConstraints describes how a group of pods ought to spread across topology domains. Scheduler will schedule pods in a way which abides by the constraints. All topologySpreadConstraints are ANDed.", "setHostnameAsFQDN": "If true the pod's hostname will be configured as the pod's FQDN, rather than the leaf name (the default). In Linux containers, this means setting the FQDN in the hostname field of the kernel (the nodename field of struct utsname). In Windows containers, this means setting the registry value of hostname for the registry key HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters to FQDN. If a pod does not have FQDN, this has no effect. Default to false.", - "os": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup This is a beta field and requires the IdentifyPodOS feature", + "os": "Specifies the OS of the containers in the pod. Some pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset: -securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset: - spec.hostPID - spec.hostIPC - spec.hostUsers - spec.securityContext.seLinuxOptions - spec.securityContext.seccompProfile - spec.securityContext.fsGroup - spec.securityContext.fsGroupChangePolicy - spec.securityContext.sysctls - spec.shareProcessNamespace - spec.securityContext.runAsUser - spec.securityContext.runAsGroup - spec.securityContext.supplementalGroups - spec.containers[*].securityContext.seLinuxOptions - spec.containers[*].securityContext.seccompProfile - spec.containers[*].securityContext.capabilities - spec.containers[*].securityContext.readOnlyRootFilesystem - spec.containers[*].securityContext.privileged - spec.containers[*].securityContext.allowPrivilegeEscalation - spec.containers[*].securityContext.procMount - spec.containers[*].securityContext.runAsUser - spec.containers[*].securityContext.runAsGroup", + "hostUsers": "Use the host's user namespace. Optional: Default to true. If set to true or not present, the pod will be run in the host user namespace, useful for when the pod needs a feature only available to the host user namespace, such as loading a kernel module with CAP_SYS_MODULE. When set to false, a new userns is created for the pod. Setting false is useful for mitigating container breakout vulnerabilities even allowing users to run their containers as root without actually having root privileges on the host. This field is alpha-level and is only honored by servers that enable the UserNamespacesSupport feature.", } func (PodSpec) SwaggerDoc() map[string]string { @@ -1691,7 +1692,7 @@ var map_PodStatus = map[string]string{ "initContainerStatuses": "The list has one entry per init container in the manifest. The most recent successful init container will have ready = true, the most recently started container will have startTime set. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", "containerStatuses": "The list has one entry per container in the manifest. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#pod-and-container-status", "qosClass": "The Quality of Service (QOS) classification assigned to the pod based on resource requirements See PodQOSClass type for available QOS classes More info: https://git.k8s.io/community/contributors/design-proposals/node/resource-qos.md", - "ephemeralContainerStatuses": "Status for any ephemeral containers that have run in this pod. This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate.", + "ephemeralContainerStatuses": "Status for any ephemeral containers that have run in this pod.", } func (PodStatus) SwaggerDoc() map[string]string { @@ -2276,7 +2277,7 @@ var map_ServiceSpec = map[string]string{ "loadBalancerSourceRanges": "If specified and supported by the platform, this will restrict traffic through the cloud-provider load-balancer will be restricted to the specified client IPs. This field will be ignored if the cloud-provider does not support the feature.\" More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/", "externalName": "externalName is the external reference that discovery mechanisms will return as an alias for this service (e.g. a DNS CNAME record). No proxying will be involved. Must be a lowercase RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) and requires `type` to be \"ExternalName\".", "externalTrafficPolicy": "externalTrafficPolicy describes how nodes distribute service traffic they receive on one of the Service's \"externally-facing\" addresses (NodePorts, ExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure the service in a way that assumes that external load balancers will take care of balancing the service traffic between nodes, and so each node will deliver traffic only to the node-local endpoints of the service, without masquerading the client source IP. (Traffic mistakenly sent to a node with no endpoints will be dropped.) The default value, \"Cluster\", uses the standard behavior of routing to all endpoints evenly (possibly modified by topology and other features). Note that traffic sent to an External IP or LoadBalancer IP from within the cluster will always get \"Cluster\" semantics, but clients sending to a NodePort from within the cluster may need to take traffic policy into account when picking a node.", - "healthCheckNodePort": "healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type).", + "healthCheckNodePort": "healthCheckNodePort specifies the healthcheck nodePort for the service. This only applies when type is set to LoadBalancer and externalTrafficPolicy is set to Local. If a value is specified, is in-range, and is not in use, it will be used. If not specified, a value will be automatically allocated. External systems (e.g. load-balancers) can use this port to determine if a given node holds endpoints for this service or not. If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type). This field cannot be updated once set.", "publishNotReadyAddresses": "publishNotReadyAddresses indicates that any agent which deals with endpoints for this Service should disregard any indications of ready/not-ready. The primary use case for setting this field is for a StatefulSet's Headless Service to propagate SRV DNS records for its Pods for the purpose of peer discovery. The Kubernetes controllers that generate Endpoints and EndpointSlice resources for Services interpret this to mean that all endpoints are considered \"ready\" even if the Pods themselves are not. Agents which consume only Kubernetes generated endpoints through the Endpoints or EndpointSlice resources can safely assume this behavior.", "sessionAffinityConfig": "sessionAffinityConfig contains the configurations of session affinity.", "ipFamilies": "IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this service. This field is usually assigned automatically based on cluster configuration and the ipFamilyPolicy field. If this field is specified manually, the requested family is available in the cluster, and ipFamilyPolicy allows it, it will be used; otherwise creation of the service will fail. This field is conditionally mutable: it allows for adding or removing a secondary IP family, but it does not allow changing the primary IP family of the Service. Valid values are \"IPv4\" and \"IPv6\". This field only applies to Services of types ClusterIP, NodePort, and LoadBalancer, and does apply to \"headless\" services. This field will be wiped when updating a Service to type ExternalName.\n\nThis field may hold a maximum of two entries (dual-stack families, in either order). These families must correspond to the values of the clusterIPs field, if specified. Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy field.", @@ -2408,6 +2409,7 @@ var map_TopologySpreadConstraint = map[string]string{ "minDomains": "MinDomains indicates a minimum number of eligible domains. When the number of eligible domains with matching topology keys is less than minDomains, Pod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed. And when the number of eligible domains with matching topology keys equals or greater than minDomains, this value has no effect on scheduling. As a result, when the number of eligible domains is less than minDomains, scheduler won't schedule more than maxSkew Pods to those domains. If value is nil, the constraint behaves as if MinDomains is equal to 1. Valid values are integers greater than 0. When value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same labelSelector spread as 2/2/2: ", "nodeAffinityPolicy": "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector when calculating pod topology spread skew. Options are: - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\nIf this value is nil, the behavior is equivalent to the Honor policy. This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.", "nodeTaintsPolicy": "NodeTaintsPolicy indicates how we will treat node taints when calculating pod topology spread skew. Options are: - Honor: nodes without taints, along with tainted nodes for which the incoming pod has a toleration, are included. - Ignore: node taints are ignored. All nodes are included.\n\nIf this value is nil, the behavior is equivalent to the Ignore policy. This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread feature flag.", + "matchLabelKeys": "MatchLabelKeys is a set of pod label keys to select the pods over which spreading will be calculated. The keys are used to lookup values from the incoming pod labels, those key-value labels are ANDed with labelSelector to select the group of existing pods over which spreading will be calculated for the incoming pod. Keys that don't exist in the incoming pod labels will be ignored. A null or empty list means only match against labelSelector.", } func (TopologySpreadConstraint) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go index 5c83e5b89df..e5a644ead94 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/core/v1/zz_generated.deepcopy.go @@ -3954,6 +3954,11 @@ func (in *PodSpec) DeepCopyInto(out *PodSpec) { *out = new(PodOS) **out = **in } + if in.HostUsers != nil { + in, out := &in.HostUsers, &out.HostUsers + *out = new(bool) + **out = **in + } return } @@ -5405,7 +5410,7 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { } if in.IPFamilyPolicy != nil { in, out := &in.IPFamilyPolicy, &out.IPFamilyPolicy - *out = new(IPFamilyPolicyType) + *out = new(IPFamilyPolicy) **out = **in } if in.AllocateLoadBalancerNodePorts != nil { @@ -5664,6 +5669,11 @@ func (in *TopologySpreadConstraint) DeepCopyInto(out *TopologySpreadConstraint) *out = new(NodeInclusionPolicy) **out = **in } + if in.MatchLabelKeys != nil { + in, out := &in.MatchLabelKeys, &out.MatchLabelKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/generated.proto index 44d9d19e26e..7ef2a871ebe 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/generated.proto @@ -66,8 +66,7 @@ message Endpoint { map deprecatedTopology = 5; // nodeName represents the name of the Node hosting this endpoint. This can - // be used to determine endpoints local to a Node. This field can be enabled - // with the EndpointSliceNodeName feature gate. + // be used to determine endpoints local to a Node. // +optional optional string nodeName = 6; diff --git a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types.go index 13591436d14..0757a6b8423 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types.go @@ -101,8 +101,7 @@ type Endpoint struct { DeprecatedTopology map[string]string `json:"deprecatedTopology,omitempty" protobuf:"bytes,5,opt,name=deprecatedTopology"` // nodeName represents the name of the Node hosting this endpoint. This can - // be used to determine endpoints local to a Node. This field can be enabled - // with the EndpointSliceNodeName feature gate. + // be used to determine endpoints local to a Node. // +optional NodeName *string `json:"nodeName,omitempty" protobuf:"bytes,6,opt,name=nodeName"` // zone is the name of the Zone this endpoint exists in. diff --git a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types_swagger_doc_generated.go index bb3c8769fd6..c83bb014ce6 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1/types_swagger_doc_generated.go @@ -34,7 +34,7 @@ var map_Endpoint = map[string]string{ "hostname": "hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.", "targetRef": "targetRef is a reference to a Kubernetes object that represents this endpoint.", "deprecatedTopology": "deprecatedTopology contains topology information part of the v1beta1 API. This field is deprecated, and will be removed when the v1beta1 API is removed (no sooner than kubernetes v1.24). While this field can hold values, it is not writable through the v1 API, and any attempts to write to it will be silently ignored. Topology information can be found in the zone and nodeName fields instead.", - "nodeName": "nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node. This field can be enabled with the EndpointSliceNodeName feature gate.", + "nodeName": "nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node.", "zone": "zone is the name of the Zone this endpoint exists in.", "hints": "hints contains information associated with how an endpoint should be consumed.", } diff --git a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/generated.proto index 84bdf075af2..6f76bb2c626 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/generated.proto @@ -73,8 +73,7 @@ message Endpoint { map topology = 5; // nodeName represents the name of the Node hosting this endpoint. This can - // be used to determine endpoints local to a Node. This field can be enabled - // with the EndpointSliceNodeName feature gate. + // be used to determine endpoints local to a Node. // +optional optional string nodeName = 6; diff --git a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types.go index 8620004f44f..3bc780fadcc 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types.go @@ -109,8 +109,7 @@ type Endpoint struct { // +optional Topology map[string]string `json:"topology,omitempty" protobuf:"bytes,5,opt,name=topology"` // nodeName represents the name of the Node hosting this endpoint. This can - // be used to determine endpoints local to a Node. This field can be enabled - // with the EndpointSliceNodeName feature gate. + // be used to determine endpoints local to a Node. // +optional NodeName *string `json:"nodeName,omitempty" protobuf:"bytes,6,opt,name=nodeName"` // hints contains information associated with how an endpoint should be diff --git a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go index 96e6d13ef7f..122da0620c7 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/discovery/v1beta1/types_swagger_doc_generated.go @@ -34,7 +34,7 @@ var map_Endpoint = map[string]string{ "hostname": "hostname of this endpoint. This field may be used by consumers of endpoints to distinguish endpoints from each other (e.g. in DNS names). Multiple endpoints which use the same hostname should be considered fungible (e.g. multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) validation.", "targetRef": "targetRef is a reference to a Kubernetes object that represents this endpoint.", "topology": "topology contains arbitrary topology information associated with the endpoint. These key/value pairs must conform with the label format. https://kubernetes.io/docs/concepts/overview/working-with-objects/labels Topology may include a maximum of 16 key/value pairs. This includes, but is not limited to the following well known keys: * kubernetes.io/hostname: the value indicates the hostname of the node\n where the endpoint is located. This should match the corresponding\n node label.\n* topology.kubernetes.io/zone: the value indicates the zone where the\n endpoint is located. This should match the corresponding node label.\n* topology.kubernetes.io/region: the value indicates the region where the\n endpoint is located. This should match the corresponding node label.\nThis field is deprecated and will be removed in future api versions.", - "nodeName": "nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node. This field can be enabled with the EndpointSliceNodeName feature gate.", + "nodeName": "nodeName represents the name of the Node hosting this endpoint. This can be used to determine endpoints local to a Node.", "hints": "hints contains information associated with how an endpoint should be consumed.", } diff --git a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/generated.proto index eaa63b59fa4..8923b18602b 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/generated.proto @@ -769,8 +769,6 @@ message NetworkPolicyPort { // should be allowed by the policy. This field cannot be defined if the port field // is not defined or if the port field is defined as a named (string) port. // The endPort must be equal or greater than port. - // This feature is in Beta state and is enabled by default. - // It can be disabled using the Feature Gate "NetworkPolicyEndPort". // +optional optional int32 endPort = 3; } diff --git a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types.go index c63cf0d6713..0674dae8b33 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types.go @@ -1498,8 +1498,6 @@ type NetworkPolicyPort struct { // should be allowed by the policy. This field cannot be defined if the port field // is not defined or if the port field is defined as a named (string) port. // The endPort must be equal or greater than port. - // This feature is in Beta state and is enabled by default. - // It can be disabled using the Feature Gate "NetworkPolicyEndPort". // +optional EndPort *int32 `json:"endPort,omitempty" protobuf:"bytes,3,opt,name=endPort"` } diff --git a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go index cf924b5897c..a3457813ad5 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/extensions/v1beta1/types_swagger_doc_generated.go @@ -417,7 +417,7 @@ var map_NetworkPolicyPort = map[string]string{ "": "DEPRECATED 1.9 - This group version of NetworkPolicyPort is deprecated by networking/v1/NetworkPolicyPort.", "protocol": "Optional. The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.", "port": "The port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.", - "endPort": "If set, indicates that the range of ports from port to endPort, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. This feature is in Beta state and is enabled by default. It can be disabled using the Feature Gate \"NetworkPolicyEndPort\".", + "endPort": "If set, indicates that the range of ports from port to endPort, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port.", } func (NetworkPolicyPort) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto index 347c9d3fa01..455a0fcaf92 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/generated.proto @@ -153,8 +153,8 @@ message LimitResponse { // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // It addresses two issues: -// * How are requests for this priority level limited? -// * What should be done with requests that exceed the limit? +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? message LimitedPriorityLevelConfiguration { // `assuredConcurrencyShares` (ACS) configures the execution // limit, which is a limit on the number of requests of this diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types.go index 5af677e2f53..c52c9aa7b9c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types.go @@ -415,8 +415,8 @@ const ( // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // It addresses two issues: -// * How are requests for this priority level limited? -// * What should be done with requests that exceed the limit? +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? type LimitedPriorityLevelConfiguration struct { // `assuredConcurrencyShares` (ACS) configures the execution // limit, which is a limit on the number of requests of this diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go index 1827be02d7e..aebb7f64cc1 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1alpha1/types_swagger_doc_generated.go @@ -111,7 +111,7 @@ func (LimitResponse) SwaggerDoc() map[string]string { } var map_LimitedPriorityLevelConfiguration = map[string]string{ - "": "LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n * How are requests for this priority level limited?\n * What should be done with requests that exceed the limit?", + "": "LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n - How are requests for this priority level limited?\n - What should be done with requests that exceed the limit?", "assuredConcurrencyShares": "`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) ", "limitResponse": "`limitResponse` indicates what to do with requests that can not be executed right now", } diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto index 474d520df74..74327452517 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/generated.proto @@ -153,8 +153,8 @@ message LimitResponse { // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // It addresses two issues: -// * How are requests for this priority level limited? -// * What should be done with requests that exceed the limit? +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? message LimitedPriorityLevelConfiguration { // `assuredConcurrencyShares` (ACS) configures the execution // limit, which is a limit on the number of requests of this diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types.go index b4573264298..d6744f6f692 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types.go @@ -451,8 +451,8 @@ const ( // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // It addresses two issues: -// * How are requests for this priority level limited? -// * What should be done with requests that exceed the limit? +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? type LimitedPriorityLevelConfiguration struct { // `assuredConcurrencyShares` (ACS) configures the execution // limit, which is a limit on the number of requests of this diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go index b3752b6fb7d..9f8eacead06 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta1/types_swagger_doc_generated.go @@ -111,7 +111,7 @@ func (LimitResponse) SwaggerDoc() map[string]string { } var map_LimitedPriorityLevelConfiguration = map[string]string{ - "": "LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n * How are requests for this priority level limited?\n * What should be done with requests that exceed the limit?", + "": "LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n - How are requests for this priority level limited?\n - What should be done with requests that exceed the limit?", "assuredConcurrencyShares": "`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) ", "limitResponse": "`limitResponse` indicates what to do with requests that can not be executed right now", } diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto index 80bbaedea2f..ed57cda8ec6 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/generated.proto @@ -153,8 +153,8 @@ message LimitResponse { // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // It addresses two issues: -// * How are requests for this priority level limited? -// * What should be done with requests that exceed the limit? +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? message LimitedPriorityLevelConfiguration { // `assuredConcurrencyShares` (ACS) configures the execution // limit, which is a limit on the number of requests of this diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types.go b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types.go index 408681e998c..3ee00f29355 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types.go @@ -447,8 +447,8 @@ const ( // LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. // It addresses two issues: -// * How are requests for this priority level limited? -// * What should be done with requests that exceed the limit? +// - How are requests for this priority level limited? +// - What should be done with requests that exceed the limit? type LimitedPriorityLevelConfiguration struct { // `assuredConcurrencyShares` (ACS) configures the execution // limit, which is a limit on the number of requests of this diff --git a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types_swagger_doc_generated.go index 4775a8e993c..7efe477d26e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/flowcontrol/v1beta2/types_swagger_doc_generated.go @@ -111,7 +111,7 @@ func (LimitResponse) SwaggerDoc() map[string]string { } var map_LimitedPriorityLevelConfiguration = map[string]string{ - "": "LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n * How are requests for this priority level limited?\n * What should be done with requests that exceed the limit?", + "": "LimitedPriorityLevelConfiguration specifies how to handle requests that are subject to limits. It addresses two issues:\n - How are requests for this priority level limited?\n - What should be done with requests that exceed the limit?", "assuredConcurrencyShares": "`assuredConcurrencyShares` (ACS) configures the execution limit, which is a limit on the number of requests of this priority level that may be exeucting at a given time. ACS must be a positive number. The server's concurrency limit (SCL) is divided among the concurrency-controlled priority levels in proportion to their assured concurrency shares. This produces the assured concurrency value (ACV) ", "limitResponse": "`limitResponse` indicates what to do with requests that can not be executed right now", } diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/generated.proto index c46a81a4e91..a0926dbb2ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/generated.proto @@ -441,8 +441,6 @@ message NetworkPolicyPort { // should be allowed by the policy. This field cannot be defined if the port field // is not defined or if the port field is defined as a named (string) port. // The endPort must be equal or greater than port. - // This feature is in Beta state and is enabled by default. - // It can be disabled using the Feature Gate "NetworkPolicyEndPort". // +optional optional int32 endPort = 3; } diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types.go index 1177df98fda..0c67aa2fd16 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types.go @@ -158,8 +158,6 @@ type NetworkPolicyPort struct { // should be allowed by the policy. This field cannot be defined if the port field // is not defined or if the port field is defined as a named (string) port. // The endPort must be equal or greater than port. - // This feature is in Beta state and is enabled by default. - // It can be disabled using the Feature Gate "NetworkPolicyEndPort". // +optional EndPort *int32 `json:"endPort,omitempty" protobuf:"bytes,3,opt,name=endPort"` } diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go index c501715b562..a3105ae513e 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1/types_swagger_doc_generated.go @@ -245,7 +245,7 @@ var map_NetworkPolicyPort = map[string]string{ "": "NetworkPolicyPort describes a port to allow traffic on", "protocol": "The protocol (TCP, UDP, or SCTP) which traffic must match. If not specified, this field defaults to TCP.", "port": "The port on the given protocol. This can either be a numerical or named port on a pod. If this field is not provided, this matches all port names and numbers. If present, only traffic on the specified protocol AND port will be matched.", - "endPort": "If set, indicates that the range of ports from port to endPort, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port. This feature is in Beta state and is enabled by default. It can be disabled using the Feature Gate \"NetworkPolicyEndPort\".", + "endPort": "If set, indicates that the range of ports from port to endPort, inclusive, should be allowed by the policy. This field cannot be defined if the port field is not defined or if the port field is defined as a named (string) port. The endPort must be equal or greater than port.", } func (NetworkPolicyPort) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/doc.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/doc.go new file mode 100644 index 00000000000..3827b0418f9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/doc.go @@ -0,0 +1,23 @@ +/* +Copyright 2022 The Kubernetes 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. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:protobuf-gen=package +// +k8s:openapi-gen=true +// +k8s:prerelease-lifecycle-gen=true +// +groupName=networking.k8s.io + +package v1alpha1 // import "k8s.io/api/networking/v1alpha1" diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go new file mode 100644 index 00000000000..48d401db883 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/generated.pb.go @@ -0,0 +1,913 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: k8s.io/kubernetes/vendor/k8s.io/api/networking/v1alpha1/generated.proto + +package v1alpha1 + +import ( + fmt "fmt" + + io "io" + + proto "github.com/gogo/protobuf/proto" + v11 "k8s.io/api/core/v1" + + math "math" + math_bits "math/bits" + reflect "reflect" + strings "strings" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +func (m *ClusterCIDR) Reset() { *m = ClusterCIDR{} } +func (*ClusterCIDR) ProtoMessage() {} +func (*ClusterCIDR) Descriptor() ([]byte, []int) { + return fileDescriptor_c1b7ac8d7d97acec, []int{0} +} +func (m *ClusterCIDR) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ClusterCIDR) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ClusterCIDR) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterCIDR.Merge(m, src) +} +func (m *ClusterCIDR) XXX_Size() int { + return m.Size() +} +func (m *ClusterCIDR) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterCIDR.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterCIDR proto.InternalMessageInfo + +func (m *ClusterCIDRList) Reset() { *m = ClusterCIDRList{} } +func (*ClusterCIDRList) ProtoMessage() {} +func (*ClusterCIDRList) Descriptor() ([]byte, []int) { + return fileDescriptor_c1b7ac8d7d97acec, []int{1} +} +func (m *ClusterCIDRList) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ClusterCIDRList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ClusterCIDRList) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterCIDRList.Merge(m, src) +} +func (m *ClusterCIDRList) XXX_Size() int { + return m.Size() +} +func (m *ClusterCIDRList) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterCIDRList.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterCIDRList proto.InternalMessageInfo + +func (m *ClusterCIDRSpec) Reset() { *m = ClusterCIDRSpec{} } +func (*ClusterCIDRSpec) ProtoMessage() {} +func (*ClusterCIDRSpec) Descriptor() ([]byte, []int) { + return fileDescriptor_c1b7ac8d7d97acec, []int{2} +} +func (m *ClusterCIDRSpec) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ClusterCIDRSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil +} +func (m *ClusterCIDRSpec) XXX_Merge(src proto.Message) { + xxx_messageInfo_ClusterCIDRSpec.Merge(m, src) +} +func (m *ClusterCIDRSpec) XXX_Size() int { + return m.Size() +} +func (m *ClusterCIDRSpec) XXX_DiscardUnknown() { + xxx_messageInfo_ClusterCIDRSpec.DiscardUnknown(m) +} + +var xxx_messageInfo_ClusterCIDRSpec proto.InternalMessageInfo + +func init() { + proto.RegisterType((*ClusterCIDR)(nil), "k8s.io.api.networking.v1alpha1.ClusterCIDR") + proto.RegisterType((*ClusterCIDRList)(nil), "k8s.io.api.networking.v1alpha1.ClusterCIDRList") + proto.RegisterType((*ClusterCIDRSpec)(nil), "k8s.io.api.networking.v1alpha1.ClusterCIDRSpec") +} + +func init() { + proto.RegisterFile("k8s.io/kubernetes/vendor/k8s.io/api/networking/v1alpha1/generated.proto", fileDescriptor_c1b7ac8d7d97acec) +} + +var fileDescriptor_c1b7ac8d7d97acec = []byte{ + // 506 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x4f, 0x8f, 0xd2, 0x40, + 0x18, 0xc6, 0xe9, 0x2e, 0x24, 0x6b, 0xc1, 0xb0, 0xe9, 0x45, 0xc2, 0x61, 0x20, 0x9c, 0x48, 0x8c, + 0x33, 0xb2, 0x21, 0xc4, 0xab, 0xdd, 0x4d, 0x94, 0xc4, 0x3f, 0xd8, 0x4d, 0x3c, 0x18, 0x0f, 0x0e, + 0xe5, 0xb5, 0x8c, 0xd0, 0xce, 0x64, 0x66, 0xa8, 0xf1, 0xe6, 0x47, 0xf0, 0x2b, 0xe9, 0x89, 0xe3, + 0x1e, 0xf7, 0x44, 0xa4, 0x7e, 0x01, 0x3f, 0x82, 0x99, 0xa1, 0xbb, 0x94, 0x45, 0x57, 0xbd, 0x75, + 0xde, 0xf9, 0x3d, 0xcf, 0xfb, 0x3e, 0x7d, 0x5b, 0xf7, 0xc9, 0xec, 0x91, 0xc2, 0x8c, 0x93, 0xd9, + 0x62, 0x0c, 0x32, 0x01, 0x0d, 0x8a, 0xa4, 0x90, 0x4c, 0xb8, 0x24, 0xf9, 0x05, 0x15, 0x8c, 0x24, + 0xa0, 0x3f, 0x72, 0x39, 0x63, 0x49, 0x44, 0xd2, 0x1e, 0x9d, 0x8b, 0x29, 0xed, 0x91, 0x08, 0x12, + 0x90, 0x54, 0xc3, 0x04, 0x0b, 0xc9, 0x35, 0xf7, 0xd0, 0x86, 0xc7, 0x54, 0x30, 0xbc, 0xe5, 0xf1, + 0x15, 0xdf, 0x7c, 0x10, 0x31, 0x3d, 0x5d, 0x8c, 0x71, 0xc8, 0x63, 0x12, 0xf1, 0x88, 0x13, 0x2b, + 0x1b, 0x2f, 0xde, 0xdb, 0x93, 0x3d, 0xd8, 0xa7, 0x8d, 0x5d, 0xb3, 0x53, 0x68, 0x1f, 0x72, 0x09, + 0x24, 0xdd, 0x6b, 0xd9, 0xec, 0x6f, 0x99, 0x98, 0x86, 0x53, 0x96, 0x80, 0xfc, 0x44, 0xc4, 0x2c, + 0x32, 0x05, 0x45, 0x62, 0xd0, 0xf4, 0x77, 0x2a, 0xf2, 0x27, 0x95, 0x5c, 0x24, 0x9a, 0xc5, 0xb0, + 0x27, 0x18, 0xfc, 0x4d, 0xa0, 0xc2, 0x29, 0xc4, 0xf4, 0xa6, 0xae, 0xf3, 0xcd, 0x71, 0xab, 0xa7, + 0xf3, 0x85, 0xd2, 0x20, 0x4f, 0x87, 0x67, 0x81, 0xf7, 0xce, 0x3d, 0x32, 0x33, 0x4d, 0xa8, 0xa6, + 0x0d, 0xa7, 0xed, 0x74, 0xab, 0x27, 0x0f, 0xf1, 0xf6, 0xa5, 0x5d, 0x5b, 0x63, 0x31, 0x8b, 0x4c, + 0x41, 0x61, 0x43, 0xe3, 0xb4, 0x87, 0x5f, 0x8e, 0x3f, 0x40, 0xa8, 0x9f, 0x83, 0xa6, 0xbe, 0xb7, + 0x5c, 0xb5, 0x4a, 0xd9, 0xaa, 0xe5, 0x6e, 0x6b, 0xc1, 0xb5, 0xab, 0xf7, 0xca, 0x2d, 0x2b, 0x01, + 0x61, 0xe3, 0xc0, 0xba, 0x13, 0x7c, 0xfb, 0x4a, 0x70, 0x61, 0xb8, 0x73, 0x01, 0xa1, 0x5f, 0xcb, + 0xcd, 0xcb, 0xe6, 0x14, 0x58, 0xab, 0xce, 0x57, 0xc7, 0xad, 0x17, 0xb8, 0x67, 0x4c, 0x69, 0xef, + 0xed, 0x5e, 0x10, 0xfc, 0x6f, 0x41, 0x8c, 0xda, 0xc6, 0x38, 0xce, 0x3b, 0x1d, 0x5d, 0x55, 0x0a, + 0x21, 0x46, 0x6e, 0x85, 0x69, 0x88, 0x55, 0xe3, 0xa0, 0x7d, 0xd8, 0xad, 0x9e, 0xdc, 0xff, 0x8f, + 0x14, 0xfe, 0xdd, 0xdc, 0xb7, 0x32, 0x34, 0x0e, 0xc1, 0xc6, 0xa8, 0xf3, 0x73, 0x37, 0x83, 0x49, + 0xe7, 0xbd, 0x76, 0x6b, 0x09, 0x9f, 0xc0, 0x39, 0xcc, 0x21, 0xd4, 0x5c, 0xe6, 0x39, 0xda, 0xc5, + 0x66, 0xe6, 0xb3, 0x33, 0x53, 0xbf, 0x28, 0x70, 0xfe, 0x71, 0xb6, 0x6a, 0xd5, 0x8a, 0x95, 0x60, + 0xc7, 0xc7, 0x7b, 0xec, 0xd6, 0x05, 0x48, 0x03, 0x3c, 0xe5, 0x4a, 0xfb, 0x4c, 0x2b, 0xbb, 0x8d, + 0x8a, 0x7f, 0x2f, 0x1f, 0xad, 0x3e, 0xda, 0xbd, 0x0e, 0x6e, 0xf2, 0x5e, 0xdb, 0x2d, 0x33, 0x91, + 0xf6, 0x1b, 0x87, 0x6d, 0xa7, 0x7b, 0x67, 0xbb, 0x94, 0xe1, 0x28, 0xed, 0x07, 0xf6, 0x26, 0x27, + 0x06, 0x8d, 0xf2, 0x1e, 0x31, 0xb0, 0xc4, 0xc0, 0x3f, 0x5b, 0xae, 0x51, 0xe9, 0x62, 0x8d, 0x4a, + 0x97, 0x6b, 0x54, 0xfa, 0x9c, 0x21, 0x67, 0x99, 0x21, 0xe7, 0x22, 0x43, 0xce, 0x65, 0x86, 0x9c, + 0xef, 0x19, 0x72, 0xbe, 0xfc, 0x40, 0xa5, 0x37, 0xe8, 0xf6, 0x7f, 0xfc, 0x57, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xdf, 0x1d, 0xe9, 0x86, 0x1d, 0x04, 0x00, 0x00, +} + +func (m *ClusterCIDR) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterCIDR) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ClusterCIDR) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Spec.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size, err := m.ObjectMeta.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *ClusterCIDRList) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterCIDRList) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ClusterCIDRList) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Items) > 0 { + for iNdEx := len(m.Items) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Items[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size, err := m.ListMeta.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *ClusterCIDRSpec) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ClusterCIDRSpec) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ClusterCIDRSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + i -= len(m.IPv6) + copy(dAtA[i:], m.IPv6) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IPv6))) + i-- + dAtA[i] = 0x22 + i -= len(m.IPv4) + copy(dAtA[i:], m.IPv4) + i = encodeVarintGenerated(dAtA, i, uint64(len(m.IPv4))) + i-- + dAtA[i] = 0x1a + i = encodeVarintGenerated(dAtA, i, uint64(m.PerNodeHostBits)) + i-- + dAtA[i] = 0x10 + if m.NodeSelector != nil { + { + size, err := m.NodeSelector.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenerated(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int { + offset -= sovGenerated(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ClusterCIDR) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ObjectMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + l = m.Spec.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func (m *ClusterCIDRList) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.ListMeta.Size() + n += 1 + l + sovGenerated(uint64(l)) + if len(m.Items) > 0 { + for _, e := range m.Items { + l = e.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + } + return n +} + +func (m *ClusterCIDRSpec) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.NodeSelector != nil { + l = m.NodeSelector.Size() + n += 1 + l + sovGenerated(uint64(l)) + } + n += 1 + sovGenerated(uint64(m.PerNodeHostBits)) + l = len(m.IPv4) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.IPv6) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + +func sovGenerated(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozGenerated(x uint64) (n int) { + return sovGenerated(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (this *ClusterCIDR) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterCIDR{`, + `ObjectMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ObjectMeta), "ObjectMeta", "v1.ObjectMeta", 1), `&`, ``, 1) + `,`, + `Spec:` + strings.Replace(strings.Replace(this.Spec.String(), "ClusterCIDRSpec", "ClusterCIDRSpec", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} +func (this *ClusterCIDRList) String() string { + if this == nil { + return "nil" + } + repeatedStringForItems := "[]ClusterCIDR{" + for _, f := range this.Items { + repeatedStringForItems += strings.Replace(strings.Replace(f.String(), "ClusterCIDR", "ClusterCIDR", 1), `&`, ``, 1) + "," + } + repeatedStringForItems += "}" + s := strings.Join([]string{`&ClusterCIDRList{`, + `ListMeta:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.ListMeta), "ListMeta", "v1.ListMeta", 1), `&`, ``, 1) + `,`, + `Items:` + repeatedStringForItems + `,`, + `}`, + }, "") + return s +} +func (this *ClusterCIDRSpec) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterCIDRSpec{`, + `NodeSelector:` + strings.Replace(fmt.Sprintf("%v", this.NodeSelector), "NodeSelector", "v11.NodeSelector", 1) + `,`, + `PerNodeHostBits:` + fmt.Sprintf("%v", this.PerNodeHostBits) + `,`, + `IPv4:` + fmt.Sprintf("%v", this.IPv4) + `,`, + `IPv6:` + fmt.Sprintf("%v", this.IPv6) + `,`, + `}`, + }, "") + return s +} +func valueToStringGenerated(v interface{}) string { + rv := reflect.ValueOf(v) + if rv.IsNil() { + return "nil" + } + pv := reflect.Indirect(rv).Interface() + return fmt.Sprintf("*%v", pv) +} +func (m *ClusterCIDR) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterCIDR: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterCIDR: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ObjectMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ObjectMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Spec", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Spec.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterCIDRList) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterCIDRList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterCIDRList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListMeta", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ListMeta.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Items", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Items = append(m.Items, ClusterCIDR{}) + if err := m.Items[len(m.Items)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ClusterCIDRSpec) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterCIDRSpec: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterCIDRSpec: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NodeSelector", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.NodeSelector == nil { + m.NodeSelector = &v11.NodeSelector{} + } + if err := m.NodeSelector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PerNodeHostBits", wireType) + } + m.PerNodeHostBits = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PerNodeHostBits |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPv4", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IPv4 = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IPv6", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGenerated + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IPv6 = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipGenerated(dAtA []byte) (n int, err error) { + l := len(dAtA) + iNdEx := 0 + depth := 0 + for iNdEx < l { + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + wireType := int(wire & 0x7) + switch wireType { + case 0: + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + iNdEx++ + if dAtA[iNdEx-1] < 0x80 { + break + } + } + case 1: + iNdEx += 8 + case 2: + var length int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return 0, ErrIntOverflowGenerated + } + if iNdEx >= l { + return 0, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + length |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if length < 0 { + return 0, ErrInvalidLengthGenerated + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupGenerated + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthGenerated + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthGenerated = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowGenerated = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupGenerated = fmt.Errorf("proto: unexpected end of group") +) diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/generated.proto new file mode 100644 index 00000000000..51779369bed --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/generated.proto @@ -0,0 +1,94 @@ +/* +Copyright The Kubernetes 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. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = "proto2"; + +package k8s.io.api.networking.v1alpha1; + +import "k8s.io/api/core/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/generated.proto"; +import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "k8s.io/api/networking/v1alpha1"; + +// ClusterCIDR represents a single configuration for per-Node Pod CIDR +// allocations when the MultiCIDRRangeAllocator is enabled (see the config for +// kube-controller-manager). A cluster may have any number of ClusterCIDR +// resources, all of which will be considered when allocating a CIDR for a +// Node. A ClusterCIDR is eligible to be used for a given Node when the node +// selector matches the node in question and has free CIDRs to allocate. In +// case of multiple matching ClusterCIDR resources, the allocator will attempt +// to break ties using internal heuristics, but any ClusterCIDR whose node +// selector matches the Node may be used. +message ClusterCIDR { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1; + + // Spec is the desired state of the ClusterCIDR. + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + // +optional + optional ClusterCIDRSpec spec = 2; +} + +// ClusterCIDRList contains a list of ClusterCIDR. +message ClusterCIDRList { + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + // +optional + optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1; + + // Items is the list of ClusterCIDRs. + repeated ClusterCIDR items = 2; +} + +// ClusterCIDRSpec defines the desired state of ClusterCIDR. +message ClusterCIDRSpec { + // NodeSelector defines which nodes the config is applicable to. + // An empty or nil NodeSelector selects all nodes. + // This field is immutable. + // +optional + optional k8s.io.api.core.v1.NodeSelector nodeSelector = 1; + + // PerNodeHostBits defines the number of host bits to be configured per node. + // A subnet mask determines how much of the address is used for network bits + // and host bits. For example an IPv4 address of 192.168.0.0/24, splits the + // address into 24 bits for the network portion and 8 bits for the host portion. + // To allocate 256 IPs, set this field to 8 (a /24 mask for IPv4 or a /120 for IPv6). + // Minimum value is 4 (16 IPs). + // This field is immutable. + // +required + optional int32 perNodeHostBits = 2; + + // IPv4 defines an IPv4 IP block in CIDR notation(e.g. "10.0.0.0/8"). + // At least one of IPv4 and IPv6 must be specified. + // This field is immutable. + // +optional + optional string ipv4 = 3; + + // IPv6 defines an IPv6 IP block in CIDR notation(e.g. "fd12:3456:789a:1::/64"). + // At least one of IPv4 and IPv6 must be specified. + // This field is immutable. + // +optional + optional string ipv6 = 4; +} + diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/register.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/register.go new file mode 100644 index 00000000000..12c0cf7bd46 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/register.go @@ -0,0 +1,56 @@ +/* +Copyright 2022 The Kubernetes 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 v1alpha1 + +import ( + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name use in this package. +const GroupName = "networking.k8s.io" + +// SchemeGroupVersion is group version used to register these objects. +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} + +// Resource takes an unqualified resource and returns a Group qualified GroupResource. +func Resource(resource string) schema.GroupResource { + return SchemeGroupVersion.WithResource(resource).GroupResource() +} + +var ( + // SchemeBuilder holds functions that add things to a scheme. + // TODO: move SchemeBuilder with zz_generated.deepcopy.go to k8s.io/api. + // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + localSchemeBuilder = &SchemeBuilder + + // AddToScheme adds the types of this group into the given scheme. + AddToScheme = localSchemeBuilder.AddToScheme +) + +// Adds the list of known types to the given scheme. +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &ClusterCIDR{}, + &ClusterCIDRList{}, + ) + // Add the watch version that applies. + metav1.AddToGroupVersion(scheme, SchemeGroupVersion) + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/types.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/types.go new file mode 100644 index 00000000000..645b0890329 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/types.go @@ -0,0 +1,95 @@ +/* +Copyright 2022 The Kubernetes 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 v1alpha1 + +import ( + v1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:prerelease-lifecycle-gen:introduced=1.25 + +// ClusterCIDR represents a single configuration for per-Node Pod CIDR +// allocations when the MultiCIDRRangeAllocator is enabled (see the config for +// kube-controller-manager). A cluster may have any number of ClusterCIDR +// resources, all of which will be considered when allocating a CIDR for a +// Node. A ClusterCIDR is eligible to be used for a given Node when the node +// selector matches the node in question and has free CIDRs to allocate. In +// case of multiple matching ClusterCIDR resources, the allocator will attempt +// to break ties using internal heuristics, but any ClusterCIDR whose node +// selector matches the Node may be used. +type ClusterCIDR struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + // +optional + metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Spec is the desired state of the ClusterCIDR. + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status + // +optional + Spec ClusterCIDRSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` +} + +// ClusterCIDRSpec defines the desired state of ClusterCIDR. +type ClusterCIDRSpec struct { + // NodeSelector defines which nodes the config is applicable to. + // An empty or nil NodeSelector selects all nodes. + // This field is immutable. + // +optional + NodeSelector *v1.NodeSelector `json:"nodeSelector,omitempty" protobuf:"bytes,1,opt,name=nodeSelector"` + + // PerNodeHostBits defines the number of host bits to be configured per node. + // A subnet mask determines how much of the address is used for network bits + // and host bits. For example an IPv4 address of 192.168.0.0/24, splits the + // address into 24 bits for the network portion and 8 bits for the host portion. + // To allocate 256 IPs, set this field to 8 (a /24 mask for IPv4 or a /120 for IPv6). + // Minimum value is 4 (16 IPs). + // This field is immutable. + // +required + PerNodeHostBits int32 `json:"perNodeHostBits" protobuf:"varint,2,opt,name=perNodeHostBits"` + + // IPv4 defines an IPv4 IP block in CIDR notation(e.g. "10.0.0.0/8"). + // At least one of IPv4 and IPv6 must be specified. + // This field is immutable. + // +optional + IPv4 string `json:"ipv4" protobuf:"bytes,3,opt,name=ipv4"` + + // IPv6 defines an IPv6 IP block in CIDR notation(e.g. "fd12:3456:789a:1::/64"). + // At least one of IPv4 and IPv6 must be specified. + // This field is immutable. + // +optional + IPv6 string `json:"ipv6" protobuf:"bytes,4,opt,name=ipv6"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:prerelease-lifecycle-gen:introduced=1.25 + +// ClusterCIDRList contains a list of ClusterCIDR. +type ClusterCIDRList struct { + metav1.TypeMeta `json:",inline"` + // Standard object's metadata. + // More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata + // +optional + metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` + + // Items is the list of ClusterCIDRs. + Items []ClusterCIDR `json:"items" protobuf:"bytes,2,rep,name=items"` +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go new file mode 100644 index 00000000000..0e2213d9eda --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/types_swagger_doc_generated.go @@ -0,0 +1,62 @@ +/* +Copyright The Kubernetes 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 v1alpha1 + +// This file contains a collection of methods that can be used from go-restful to +// generate Swagger API documentation for its models. Please read this PR for more +// information on the implementation: https://github.com/emicklei/go-restful/pull/215 +// +// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if +// they are on one line! For multiple line or blocks that you want to ignore use ---. +// Any context after a --- is ignored. +// +// Those methods can be generated by using hack/update-generated-swagger-docs.sh + +// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT. +var map_ClusterCIDR = map[string]string{ + "": "ClusterCIDR represents a single configuration for per-Node Pod CIDR allocations when the MultiCIDRRangeAllocator is enabled (see the config for kube-controller-manager). A cluster may have any number of ClusterCIDR resources, all of which will be considered when allocating a CIDR for a Node. A ClusterCIDR is eligible to be used for a given Node when the node selector matches the node in question and has free CIDRs to allocate. In case of multiple matching ClusterCIDR resources, the allocator will attempt to break ties using internal heuristics, but any ClusterCIDR whose node selector matches the Node may be used.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "spec": "Spec is the desired state of the ClusterCIDR. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status", +} + +func (ClusterCIDR) SwaggerDoc() map[string]string { + return map_ClusterCIDR +} + +var map_ClusterCIDRList = map[string]string{ + "": "ClusterCIDRList contains a list of ClusterCIDR.", + "metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata", + "items": "Items is the list of ClusterCIDRs.", +} + +func (ClusterCIDRList) SwaggerDoc() map[string]string { + return map_ClusterCIDRList +} + +var map_ClusterCIDRSpec = map[string]string{ + "": "ClusterCIDRSpec defines the desired state of ClusterCIDR.", + "nodeSelector": "NodeSelector defines which nodes the config is applicable to. An empty or nil NodeSelector selects all nodes. This field is immutable.", + "perNodeHostBits": "PerNodeHostBits defines the number of host bits to be configured per node. A subnet mask determines how much of the address is used for network bits and host bits. For example an IPv4 address of 192.168.0.0/24, splits the address into 24 bits for the network portion and 8 bits for the host portion. To allocate 256 IPs, set this field to 8 (a /24 mask for IPv4 or a /120 for IPv6). Minimum value is 4 (16 IPs). This field is immutable.", + "ipv4": "IPv4 defines an IPv4 IP block in CIDR notation(e.g. \"10.0.0.0/8\"). At least one of IPv4 and IPv6 must be specified. This field is immutable.", + "ipv6": "IPv6 defines an IPv6 IP block in CIDR notation(e.g. \"fd12:3456:789a:1::/64\"). At least one of IPv4 and IPv6 must be specified. This field is immutable.", +} + +func (ClusterCIDRSpec) SwaggerDoc() map[string]string { + return map_ClusterCIDRSpec +} + +// AUTO-GENERATED FUNCTIONS END HERE diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go new file mode 100644 index 00000000000..e549f316634 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/zz_generated.deepcopy.go @@ -0,0 +1,108 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + v1 "k8s.io/api/core/v1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterCIDR) DeepCopyInto(out *ClusterCIDR) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCIDR. +func (in *ClusterCIDR) DeepCopy() *ClusterCIDR { + if in == nil { + return nil + } + out := new(ClusterCIDR) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterCIDR) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterCIDRList) DeepCopyInto(out *ClusterCIDRList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterCIDR, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCIDRList. +func (in *ClusterCIDRList) DeepCopy() *ClusterCIDRList { + if in == nil { + return nil + } + out := new(ClusterCIDRList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterCIDRList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterCIDRSpec) DeepCopyInto(out *ClusterCIDRSpec) { + *out = *in + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = new(v1.NodeSelector) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCIDRSpec. +func (in *ClusterCIDRSpec) DeepCopy() *ClusterCIDRSpec { + if in == nil { + return nil + } + out := new(ClusterCIDRSpec) + in.DeepCopyInto(out) + return out +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go new file mode 100644 index 00000000000..dd6e3b26cb2 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/api/networking/v1alpha1/zz_generated.prerelease-lifecycle.go @@ -0,0 +1,58 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by prerelease-lifecycle-gen. DO NOT EDIT. + +package v1alpha1 + +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison. +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go. +func (in *ClusterCIDR) APILifecycleIntroduced() (major, minor int) { + return 1, 25 +} + +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison. +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or "k8s:prerelease-lifecycle-gen:introduced" plus three minor. +func (in *ClusterCIDR) APILifecycleDeprecated() (major, minor int) { + return 1, 28 +} + +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison. +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or "k8s:prerelease-lifecycle-gen:deprecated" plus three minor. +func (in *ClusterCIDR) APILifecycleRemoved() (major, minor int) { + return 1, 31 +} + +// APILifecycleIntroduced is an autogenerated function, returning the release in which the API struct was introduced as int versions of major and minor for comparison. +// It is controlled by "k8s:prerelease-lifecycle-gen:introduced" tags in types.go. +func (in *ClusterCIDRList) APILifecycleIntroduced() (major, minor int) { + return 1, 25 +} + +// APILifecycleDeprecated is an autogenerated function, returning the release in which the API struct was or will be deprecated as int versions of major and minor for comparison. +// It is controlled by "k8s:prerelease-lifecycle-gen:deprecated" tags in types.go or "k8s:prerelease-lifecycle-gen:introduced" plus three minor. +func (in *ClusterCIDRList) APILifecycleDeprecated() (major, minor int) { + return 1, 28 +} + +// APILifecycleRemoved is an autogenerated function, returning the release in which the API is no longer served as int versions of major and minor for comparison. +// It is controlled by "k8s:prerelease-lifecycle-gen:removed" tags in types.go or "k8s:prerelease-lifecycle-gen:deprecated" plus three minor. +func (in *ClusterCIDRList) APILifecycleRemoved() (major, minor int) { + return 1, 31 +} diff --git a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/generated.proto index 09dbdde9817..f54a87e0d8a 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/generated.proto @@ -329,7 +329,6 @@ message PodSecurityPolicySpec { // AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. // An empty value indicates that any CSI driver can be used for inline ephemeral volumes. - // This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate. // +optional repeated AllowedCSIDriver allowedCSIDrivers = 23; diff --git a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types.go index 486f93461af..222b4664b4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types.go @@ -278,7 +278,6 @@ type PodSecurityPolicySpec struct { AllowedFlexVolumes []AllowedFlexVolume `json:"allowedFlexVolumes,omitempty" protobuf:"bytes,18,rep,name=allowedFlexVolumes"` // AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. // An empty value indicates that any CSI driver can be used for inline ephemeral volumes. - // This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate. // +optional AllowedCSIDrivers []AllowedCSIDriver `json:"allowedCSIDrivers,omitempty" protobuf:"bytes,23,rep,name=allowedCSIDrivers"` // allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. diff --git a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go index ef81d43af36..916951d4b8c 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/policy/v1beta1/types_swagger_doc_generated.go @@ -183,7 +183,7 @@ var map_PodSecurityPolicySpec = map[string]string{ "allowPrivilegeEscalation": "allowPrivilegeEscalation determines if a pod can request to allow privilege escalation. If unspecified, defaults to true.", "allowedHostPaths": "allowedHostPaths is an allowlist of host paths. Empty indicates that all host paths may be used.", "allowedFlexVolumes": "allowedFlexVolumes is an allowlist of Flexvolumes. Empty or nil indicates that all Flexvolumes may be used. This parameter is effective only when the usage of the Flexvolumes is allowed in the \"volumes\" field.", - "allowedCSIDrivers": "AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value indicates that any CSI driver can be used for inline ephemeral volumes. This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate.", + "allowedCSIDrivers": "AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. An empty value indicates that any CSI driver can be used for inline ephemeral volumes.", "allowedUnsafeSysctls": "allowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. Each entry is either a plain sysctl name or ends in \"*\" in which case it is considered as a prefix of allowed sysctls. Single * means all unsafe sysctls are allowed. Kubelet has to allowlist all allowed unsafe sysctls explicitly to avoid rejection.\n\nExamples: e.g. \"foo/*\" allows \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" allows \"foo.bar\", \"foo.baz\", etc.", "forbiddenSysctls": "forbiddenSysctls is a list of explicitly forbidden sysctls, defaults to none. Each entry is either a plain sysctl name or ends in \"*\" in which case it is considered as a prefix of forbidden sysctls. Single * means all sysctls are forbidden.\n\nExamples: e.g. \"foo/*\" forbids \"foo/bar\", \"foo/baz\", etc. e.g. \"foo.*\" forbids \"foo.bar\", \"foo.baz\", etc.", "allowedProcMountTypes": "AllowedProcMountTypes is an allowlist of allowed ProcMountTypes. Empty or nil indicates that only the DefaultProcMountType may be used. This requires the ProcMountType feature flag to be enabled.", diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.pb.go index a648c426aab..d36497432de 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.pb.go @@ -609,111 +609,112 @@ func init() { } var fileDescriptor_3b530c1983504d8d = []byte{ - // 1651 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xbd, 0x6f, 0x1b, 0xcb, - 0x11, 0xd7, 0x89, 0xd4, 0xd7, 0x52, 0xb2, 0xa4, 0x95, 0xe4, 0x30, 0x2a, 0x48, 0xe1, 0x6c, 0x24, - 0xb2, 0x13, 0x1f, 0x6d, 0xd9, 0x31, 0x0c, 0x07, 0x0e, 0xa0, 0x93, 0xe8, 0x58, 0x88, 0x28, 0x29, - 0x4b, 0xc5, 0x30, 0x82, 0x24, 0xf0, 0xea, 0x6e, 0x45, 0xad, 0xc5, 0xfb, 0xf0, 0xed, 0x92, 0x31, - 0x53, 0x25, 0x4d, 0xba, 0x00, 0x49, 0x1b, 0xe4, 0x8f, 0x48, 0x80, 0xa4, 0x49, 0x99, 0x22, 0x70, - 0x3a, 0x23, 0x95, 0x2b, 0xe2, 0x99, 0xaf, 0x7e, 0xaf, 0x7c, 0x85, 0xaa, 0x87, 0xdd, 0x5b, 0xf2, - 0x3e, 0x78, 0x94, 0xa5, 0x86, 0x1d, 0x77, 0x67, 0xe6, 0x37, 0xb3, 0x3b, 0xbf, 0x99, 0x9d, 0x23, - 0xf8, 0xc9, 0xf9, 0x13, 0x66, 0x50, 0xaf, 0x72, 0xde, 0x3a, 0x21, 0x81, 0x4b, 0x38, 0x61, 0x95, - 0x36, 0x71, 0x6d, 0x2f, 0xa8, 0x28, 0x01, 0xf6, 0x69, 0x85, 0x71, 0x2f, 0xc0, 0x0d, 0x52, 0x69, - 0x3f, 0xa8, 0x34, 0x88, 0x4b, 0x02, 0xcc, 0x89, 0x6d, 0xf8, 0x81, 0xc7, 0x3d, 0xb8, 0x16, 0xaa, - 0x19, 0xd8, 0xa7, 0x86, 0x52, 0x33, 0xda, 0x0f, 0xd6, 0xef, 0x35, 0x28, 0x3f, 0x6b, 0x9d, 0x18, - 0x96, 0xe7, 0x54, 0x1a, 0x5e, 0xc3, 0xab, 0x48, 0xed, 0x93, 0xd6, 0xa9, 0x5c, 0xc9, 0x85, 0xfc, - 0x15, 0xa2, 0xac, 0xeb, 0x31, 0x67, 0x96, 0x17, 0x64, 0x79, 0x5a, 0x7f, 0x14, 0xe9, 0x38, 0xd8, - 0x3a, 0xa3, 0x2e, 0x09, 0x3a, 0x15, 0xff, 0xbc, 0x21, 0x8d, 0x02, 0xc2, 0xbc, 0x56, 0x60, 0x91, - 0x6b, 0x59, 0xb1, 0x8a, 0x43, 0x38, 0xce, 0xf2, 0x55, 0x19, 0x65, 0x15, 0xb4, 0x5c, 0x4e, 0x9d, - 0x61, 0x37, 0x8f, 0x3f, 0x67, 0xc0, 0xac, 0x33, 0xe2, 0xe0, 0xb4, 0x9d, 0xfe, 0x2f, 0x0d, 0xcc, - 0xed, 0xd4, 0xf7, 0x76, 0x03, 0xda, 0x26, 0x01, 0x7c, 0x0d, 0x66, 0x45, 0x44, 0x36, 0xe6, 0xb8, - 0xa8, 0x6d, 0x68, 0x9b, 0x85, 0xad, 0xfb, 0x46, 0x74, 0xbf, 0x03, 0x60, 0xc3, 0x3f, 0x6f, 0x88, - 0x0d, 0x66, 0x08, 0x6d, 0xa3, 0xfd, 0xc0, 0x38, 0x3c, 0x79, 0x43, 0x2c, 0x5e, 0x23, 0x1c, 0x9b, - 0xf0, 0x7d, 0xb7, 0x3c, 0xd1, 0xeb, 0x96, 0x41, 0xb4, 0x87, 0x06, 0xa8, 0xf0, 0x39, 0xc8, 0x33, - 0x9f, 0x58, 0xc5, 0x49, 0x89, 0x7e, 0xdb, 0xc8, 0xcc, 0x9e, 0x31, 0x88, 0xa8, 0xee, 0x13, 0xcb, - 0x9c, 0x57, 0x88, 0x79, 0xb1, 0x42, 0xd2, 0x5e, 0xff, 0xa7, 0x06, 0x16, 0x06, 0x5a, 0xfb, 0x94, - 0x71, 0xf8, 0xab, 0xa1, 0xd8, 0x8d, 0xab, 0xc5, 0x2e, 0xac, 0x65, 0xe4, 0x4b, 0xca, 0xcf, 0x6c, - 0x7f, 0x27, 0x16, 0x77, 0x15, 0x4c, 0x51, 0x4e, 0x1c, 0x56, 0x9c, 0xdc, 0xc8, 0x6d, 0x16, 0xb6, - 0x36, 0x3e, 0x17, 0xb8, 0xb9, 0xa0, 0xc0, 0xa6, 0xf6, 0x84, 0x19, 0x0a, 0xad, 0xf5, 0xbf, 0xe5, - 0x63, 0x61, 0x8b, 0xe3, 0xc0, 0xa7, 0xe0, 0x06, 0xe6, 0x1c, 0x5b, 0x67, 0x88, 0xbc, 0x6d, 0xd1, - 0x80, 0xd8, 0x32, 0xf8, 0x59, 0x13, 0xf6, 0xba, 0xe5, 0x1b, 0xdb, 0x09, 0x09, 0x4a, 0x69, 0x0a, - 0x5b, 0xdf, 0xb3, 0xf7, 0xdc, 0x53, 0xef, 0xd0, 0xad, 0x79, 0x2d, 0x97, 0xcb, 0x6b, 0x55, 0xb6, - 0x47, 0x09, 0x09, 0x4a, 0x69, 0x42, 0x0b, 0xac, 0xb6, 0xbd, 0x66, 0xcb, 0x21, 0xfb, 0xf4, 0x94, - 0x58, 0x1d, 0xab, 0x49, 0x6a, 0x9e, 0x4d, 0x58, 0x31, 0xb7, 0x91, 0xdb, 0x9c, 0x33, 0x2b, 0xbd, - 0x6e, 0x79, 0xf5, 0x65, 0x86, 0xfc, 0xa2, 0x5b, 0x5e, 0xc9, 0xd8, 0x47, 0x99, 0x60, 0xf0, 0x19, - 0x58, 0x54, 0x97, 0xb3, 0x83, 0x7d, 0x6c, 0x51, 0xde, 0x29, 0xe6, 0x65, 0x84, 0x2b, 0xbd, 0x6e, - 0x79, 0xb1, 0x9e, 0x14, 0xa1, 0xb4, 0x2e, 0x7c, 0x01, 0x16, 0x4e, 0xd9, 0x4f, 0x03, 0xaf, 0xe5, - 0x1f, 0x79, 0x4d, 0x6a, 0x75, 0x8a, 0x53, 0x1b, 0xda, 0xe6, 0x9c, 0xa9, 0xf7, 0xba, 0xe5, 0x85, - 0xe7, 0xf5, 0x98, 0xe0, 0x22, 0xbd, 0x81, 0x92, 0x86, 0xf0, 0x35, 0x58, 0xe0, 0xde, 0x39, 0x71, - 0xc5, 0xd5, 0x11, 0xc6, 0x59, 0x71, 0x5a, 0xa6, 0xf1, 0xd6, 0x88, 0x34, 0x1e, 0xc7, 0x74, 0xcd, - 0x35, 0x95, 0xc9, 0x85, 0xf8, 0x2e, 0x43, 0x49, 0x40, 0xb8, 0x03, 0x96, 0x83, 0x30, 0x2f, 0x0c, - 0x11, 0xbf, 0x75, 0xd2, 0xa4, 0xec, 0xac, 0x38, 0x23, 0x0f, 0xbb, 0xd6, 0xeb, 0x96, 0x97, 0x51, - 0x5a, 0x88, 0x86, 0xf5, 0xf5, 0x7f, 0x68, 0x60, 0x66, 0xa7, 0xbe, 0x77, 0xe0, 0xd9, 0x64, 0x0c, - 0xb5, 0xb8, 0x9b, 0xa8, 0x45, 0x7d, 0x34, 0xa5, 0x45, 0x3c, 0x23, 0x2b, 0xf1, 0xeb, 0xb0, 0x12, - 0x85, 0x8e, 0xea, 0x22, 0x1b, 0x20, 0xef, 0x62, 0x87, 0xc8, 0xa8, 0xe7, 0x22, 0x9b, 0x03, 0xec, - 0x10, 0x24, 0x25, 0xf0, 0x7b, 0x60, 0xda, 0xf5, 0x6c, 0xb2, 0xb7, 0x2b, 0x7d, 0xcf, 0x99, 0x37, - 0x94, 0xce, 0xf4, 0x81, 0xdc, 0x45, 0x4a, 0x0a, 0x1f, 0x81, 0x79, 0xee, 0xf9, 0x5e, 0xd3, 0x6b, - 0x74, 0x7e, 0x46, 0x3a, 0x7d, 0x72, 0x2e, 0xf5, 0xba, 0xe5, 0xf9, 0xe3, 0xd8, 0x3e, 0x4a, 0x68, - 0xc1, 0x5f, 0x83, 0x02, 0x6e, 0x36, 0x3d, 0x0b, 0x73, 0x7c, 0xd2, 0x24, 0x92, 0x71, 0x85, 0xad, - 0xbb, 0x23, 0x8e, 0x17, 0x92, 0x59, 0xf8, 0x45, 0xaa, 0x85, 0x33, 0x73, 0xb1, 0xd7, 0x2d, 0x17, - 0xb6, 0x23, 0x08, 0x14, 0xc7, 0xd3, 0xff, 0xae, 0x81, 0x82, 0x3a, 0xf0, 0x18, 0x1a, 0xcf, 0x4e, - 0xb2, 0xf1, 0x94, 0x2e, 0xcf, 0xd2, 0x88, 0xb6, 0xf3, 0x9b, 0x41, 0xc4, 0xb2, 0xe7, 0x1c, 0x82, - 0x19, 0x5b, 0xa6, 0x8a, 0x15, 0x35, 0x89, 0x7a, 0xfb, 0x72, 0x54, 0xd5, 0xd2, 0x16, 0x15, 0xf6, - 0x4c, 0xb8, 0x66, 0xa8, 0x8f, 0xa2, 0x7f, 0x93, 0x03, 0x70, 0xa7, 0xbe, 0x97, 0x2a, 0xe8, 0x31, - 0x50, 0x98, 0x82, 0x79, 0x41, 0x95, 0x3e, 0x19, 0x14, 0x95, 0x1f, 0x5e, 0xf1, 0xfe, 0xf1, 0x09, - 0x69, 0xd6, 0x49, 0x93, 0x58, 0xdc, 0x0b, 0x42, 0x56, 0x1d, 0xc4, 0xc0, 0x50, 0x02, 0x1a, 0xee, - 0x82, 0xa5, 0x7e, 0x7f, 0x6a, 0x62, 0xc6, 0x04, 0x9b, 0x8b, 0x39, 0xc9, 0xde, 0xa2, 0x0a, 0x71, - 0xa9, 0x9e, 0x92, 0xa3, 0x21, 0x0b, 0xf8, 0x0a, 0xcc, 0x5a, 0xf1, 0x56, 0xf8, 0x19, 0xb2, 0x18, - 0xfd, 0xb9, 0xc2, 0xf8, 0x79, 0x0b, 0xbb, 0x9c, 0xf2, 0x8e, 0x39, 0x2f, 0x88, 0x32, 0xe8, 0x99, - 0x03, 0x34, 0xc8, 0xc0, 0xb2, 0x83, 0xdf, 0x51, 0xa7, 0xe5, 0x84, 0x94, 0xae, 0xd3, 0xdf, 0x11, - 0xd9, 0x30, 0xaf, 0xef, 0x42, 0x36, 0xac, 0x5a, 0x1a, 0x0c, 0x0d, 0xe3, 0xeb, 0xff, 0xd5, 0xc0, - 0xcd, 0xe1, 0xc4, 0x8f, 0xa1, 0x2c, 0x0e, 0x92, 0x65, 0x71, 0x67, 0x34, 0x81, 0x53, 0xb1, 0x8d, - 0xa8, 0x90, 0x3f, 0x4d, 0x83, 0xf9, 0x78, 0xfa, 0xc6, 0xc0, 0xdd, 0x1f, 0x81, 0x82, 0x1f, 0x78, - 0x6d, 0xca, 0xa8, 0xe7, 0x92, 0x40, 0x75, 0xc2, 0x15, 0x65, 0x52, 0x38, 0x8a, 0x44, 0x28, 0xae, - 0x07, 0x1b, 0x00, 0xf8, 0x38, 0xc0, 0x0e, 0xe1, 0xa2, 0x7e, 0x73, 0xf2, 0xf8, 0x0f, 0x47, 0x1c, - 0x3f, 0x7e, 0x22, 0xe3, 0x68, 0x60, 0x55, 0x75, 0x79, 0xd0, 0x89, 0xa2, 0x8b, 0x04, 0x28, 0x06, - 0x0d, 0xcf, 0xc1, 0x42, 0x40, 0xac, 0x26, 0xa6, 0x8e, 0x7a, 0x7d, 0xf3, 0x32, 0xc2, 0xaa, 0x78, - 0x0a, 0x51, 0x5c, 0x70, 0xd1, 0x2d, 0xdf, 0x1f, 0x9e, 0x9f, 0x8d, 0x23, 0x12, 0x30, 0xca, 0x38, - 0x71, 0x79, 0x48, 0x98, 0x84, 0x0d, 0x4a, 0x62, 0x8b, 0x4e, 0xef, 0x88, 0xb9, 0xe4, 0xd0, 0xe7, - 0xd4, 0x73, 0x59, 0x71, 0x2a, 0xea, 0xf4, 0xb5, 0xd8, 0x3e, 0x4a, 0x68, 0xc1, 0x7d, 0xb0, 0x2a, - 0x3a, 0xf3, 0x6f, 0x43, 0x07, 0xd5, 0x77, 0x3e, 0x76, 0xc5, 0x2d, 0x15, 0xa7, 0xe5, 0xbb, 0x5b, - 0x14, 0x43, 0xcc, 0x76, 0x86, 0x1c, 0x65, 0x5a, 0xc1, 0x57, 0x60, 0x39, 0x9c, 0x62, 0x4c, 0xea, - 0xda, 0xd4, 0x6d, 0x88, 0x19, 0x46, 0x3e, 0xe1, 0x73, 0xe6, 0x5d, 0x51, 0x11, 0x2f, 0xd3, 0xc2, - 0x8b, 0xac, 0x4d, 0x34, 0x0c, 0x02, 0xdf, 0x82, 0x65, 0xe9, 0x91, 0xd8, 0xaa, 0x9d, 0x50, 0xc2, - 0x8a, 0xb3, 0x32, 0x75, 0x9b, 0xf1, 0xd4, 0x89, 0xab, 0x0b, 0xe7, 0x8f, 0xb0, 0xe9, 0xf4, 0x9b, - 0xd3, 0x31, 0x09, 0x1c, 0xf3, 0xbb, 0x2a, 0x5f, 0xcb, 0xdb, 0x69, 0x28, 0x34, 0x8c, 0xbe, 0xfe, - 0x0c, 0x2c, 0xa6, 0x12, 0x0e, 0x97, 0x40, 0xee, 0x9c, 0x74, 0xc2, 0x67, 0x19, 0x89, 0x9f, 0x70, - 0x15, 0x4c, 0xb5, 0x71, 0xb3, 0x45, 0x42, 0xf2, 0xa1, 0x70, 0xf1, 0x74, 0xf2, 0x89, 0xa6, 0xff, - 0x5b, 0x03, 0x89, 0x76, 0x36, 0x86, 0x92, 0x7e, 0x91, 0x2c, 0xe9, 0x5b, 0x57, 0xe0, 0xf4, 0x88, - 0x62, 0xfe, 0x83, 0x06, 0xe6, 0xe3, 0xc3, 0x1a, 0xfc, 0x21, 0x98, 0xc5, 0x2d, 0x9b, 0x12, 0xd7, - 0xea, 0x4f, 0x25, 0x83, 0x40, 0xb6, 0xd5, 0x3e, 0x1a, 0x68, 0x88, 0x51, 0x8e, 0xbc, 0xf3, 0x69, - 0x80, 0x05, 0xc9, 0xea, 0xc4, 0xf2, 0x5c, 0x9b, 0xc9, 0x1b, 0xca, 0x85, 0x9d, 0xb1, 0x9a, 0x16, - 0xa2, 0x61, 0x7d, 0xfd, 0xaf, 0x93, 0x60, 0x29, 0xe4, 0x46, 0x38, 0xc4, 0x3b, 0xc4, 0xe5, 0x63, - 0x68, 0x2a, 0xb5, 0xc4, 0x4c, 0xf7, 0x83, 0x4b, 0x87, 0x9e, 0x28, 0xb0, 0x51, 0xc3, 0x1d, 0xfc, - 0x05, 0x98, 0x66, 0x1c, 0xf3, 0x16, 0x93, 0x4f, 0x5d, 0x61, 0xeb, 0xde, 0x55, 0x01, 0xa5, 0x51, - 0x34, 0xd7, 0x85, 0x6b, 0xa4, 0xc0, 0xf4, 0xff, 0x68, 0x60, 0x35, 0x6d, 0x32, 0x06, 0x86, 0xed, - 0x27, 0x19, 0xf6, 0xfd, 0x2b, 0x1e, 0x66, 0x04, 0xcb, 0xfe, 0xaf, 0x81, 0x9b, 0x43, 0xe7, 0x96, - 0x2f, 0xa9, 0xe8, 0x4b, 0x7e, 0xaa, 0xfb, 0x1d, 0x44, 0x13, 0xb1, 0xec, 0x4b, 0x47, 0x19, 0x72, - 0x94, 0x69, 0x05, 0xdf, 0x80, 0x25, 0xea, 0x36, 0xa9, 0x4b, 0xd4, 0xc3, 0x1b, 0xe5, 0x37, 0xb3, - 0x79, 0xa4, 0x91, 0x65, 0x72, 0x57, 0xc5, 0x7c, 0xb2, 0x97, 0x42, 0x41, 0x43, 0xb8, 0xfa, 0xff, - 0x32, 0x32, 0x23, 0x67, 0x46, 0x51, 0x42, 0x72, 0x87, 0x04, 0x43, 0x25, 0xa4, 0xf6, 0xd1, 0x40, - 0x43, 0xf2, 0x46, 0x5e, 0x85, 0x0a, 0xf4, 0xca, 0xbc, 0x91, 0x46, 0x31, 0xde, 0xc8, 0x35, 0x52, - 0x60, 0x22, 0x08, 0x31, 0x93, 0xc5, 0x66, 0xaf, 0x41, 0x10, 0x07, 0x6a, 0x1f, 0x0d, 0x34, 0xf4, - 0xaf, 0x72, 0x19, 0x09, 0x92, 0x04, 0x8c, 0x9d, 0xa6, 0xff, 0xbd, 0x9d, 0x3e, 0x8d, 0x3d, 0x38, - 0x8d, 0x0d, 0xff, 0xa2, 0x01, 0x88, 0x07, 0x10, 0xb5, 0x3e, 0x41, 0x43, 0x16, 0x55, 0xaf, 0x55, - 0x12, 0xc6, 0xf6, 0x10, 0x4e, 0xf8, 0x1a, 0xaf, 0x2b, 0xff, 0x70, 0x58, 0x01, 0x65, 0x38, 0x87, - 0x36, 0x28, 0x84, 0xbb, 0xd5, 0x20, 0xf0, 0x02, 0x55, 0x9e, 0xfa, 0xa5, 0xb1, 0x48, 0x4d, 0xb3, - 0x24, 0x3f, 0x6e, 0x22, 0xd3, 0x8b, 0x6e, 0xb9, 0x10, 0x93, 0xa3, 0x38, 0xac, 0xf0, 0x62, 0x93, - 0xc8, 0x4b, 0xfe, 0x7a, 0x5e, 0x76, 0xc9, 0x68, 0x2f, 0x31, 0xd8, 0xf5, 0x2a, 0xf8, 0xce, 0x88, - 0x6b, 0xb9, 0xd6, 0x9b, 0xf5, 0x47, 0x0d, 0xc4, 0x7d, 0xc0, 0x7d, 0x90, 0xe7, 0x54, 0x55, 0x5d, - 0xf2, 0x03, 0xf0, 0x92, 0x46, 0x72, 0x4c, 0x1d, 0x12, 0xb5, 0x42, 0xb1, 0x42, 0x12, 0x05, 0xde, - 0x01, 0x33, 0x0e, 0x61, 0x0c, 0x37, 0x94, 0xe7, 0xe8, 0x73, 0xa8, 0x16, 0x6e, 0xa3, 0xbe, 0x5c, - 0x7f, 0x0c, 0x56, 0x32, 0x3e, 0x2b, 0x61, 0x19, 0x4c, 0x59, 0xf2, 0x5f, 0x1a, 0x11, 0xd0, 0x94, - 0x39, 0x27, 0x3a, 0xca, 0x8e, 0xfc, 0x73, 0x26, 0xdc, 0x37, 0x7f, 0xfc, 0xfe, 0x53, 0x69, 0xe2, - 0xc3, 0xa7, 0xd2, 0xc4, 0xc7, 0x4f, 0xa5, 0x89, 0xdf, 0xf7, 0x4a, 0xda, 0xfb, 0x5e, 0x49, 0xfb, - 0xd0, 0x2b, 0x69, 0x1f, 0x7b, 0x25, 0xed, 0x8b, 0x5e, 0x49, 0xfb, 0xf3, 0x97, 0xa5, 0x89, 0x5f, - 0xae, 0x65, 0xfe, 0x31, 0xfa, 0x6d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x6e, 0x72, 0x7b, 0x49, - 0x15, 0x00, 0x00, + // 1670 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x73, 0x1b, 0x4b, + 0x11, 0xf7, 0x5a, 0xf2, 0xd7, 0xc8, 0x8e, 0xed, 0xb1, 0xfd, 0x10, 0x3e, 0x48, 0xae, 0x7d, 0xaf, + 0xc0, 0xef, 0xc1, 0x5b, 0xbd, 0x38, 0x21, 0x95, 0x0a, 0x15, 0xaa, 0xbc, 0xb6, 0x42, 0x5c, 0x58, + 0xb6, 0x19, 0x99, 0x54, 0x8a, 0x02, 0x2a, 0xe3, 0xdd, 0xb1, 0x3c, 0xb1, 0xf6, 0x23, 0x3b, 0xb3, + 0xc2, 0xe2, 0x04, 0x17, 0x6e, 0x54, 0xc1, 0x95, 0xbf, 0x02, 0xaa, 0xe0, 0xc2, 0x91, 0x03, 0x15, + 0x6e, 0x29, 0x4e, 0x39, 0xa9, 0x88, 0x38, 0xc3, 0x91, 0x83, 0x4f, 0xaf, 0x66, 0x76, 0xa4, 0xfd, + 0xd0, 0xca, 0xb1, 0x2f, 0xba, 0x69, 0xa6, 0xbb, 0x7f, 0xdd, 0x33, 0xdd, 0xfd, 0x9b, 0x5e, 0x81, + 0x1f, 0x5c, 0x3e, 0x66, 0x06, 0xf5, 0x6a, 0x97, 0xe1, 0x19, 0x09, 0x5c, 0xc2, 0x09, 0xab, 0x75, + 0x88, 0x6b, 0x7b, 0x41, 0x4d, 0x09, 0xb0, 0x4f, 0x6b, 0x8c, 0x7b, 0x01, 0x6e, 0x91, 0x5a, 0xe7, + 0x7e, 0xad, 0x45, 0x5c, 0x12, 0x60, 0x4e, 0x6c, 0xc3, 0x0f, 0x3c, 0xee, 0xc1, 0x8d, 0x48, 0xcd, + 0xc0, 0x3e, 0x35, 0x94, 0x9a, 0xd1, 0xb9, 0xbf, 0xf9, 0x65, 0x8b, 0xf2, 0x8b, 0xf0, 0xcc, 0xb0, + 0x3c, 0xa7, 0xd6, 0xf2, 0x5a, 0x5e, 0x4d, 0x6a, 0x9f, 0x85, 0xe7, 0x72, 0x25, 0x17, 0xf2, 0x57, + 0x84, 0xb2, 0xa9, 0x27, 0x9c, 0x59, 0x5e, 0x90, 0xe7, 0x69, 0xf3, 0x61, 0xac, 0xe3, 0x60, 0xeb, + 0x82, 0xba, 0x24, 0xe8, 0xd6, 0xfc, 0xcb, 0x96, 0x34, 0x0a, 0x08, 0xf3, 0xc2, 0xc0, 0x22, 0x77, + 0xb2, 0x62, 0x35, 0x87, 0x70, 0x9c, 0xe7, 0xab, 0x36, 0xce, 0x2a, 0x08, 0x5d, 0x4e, 0x9d, 0x51, + 0x37, 0x8f, 0x3e, 0x66, 0xc0, 0xac, 0x0b, 0xe2, 0xe0, 0xac, 0x9d, 0xfe, 0x57, 0x0d, 0x2c, 0xec, + 0x35, 0x0f, 0xf6, 0x03, 0xda, 0x21, 0x01, 0x7c, 0x05, 0xe6, 0x45, 0x44, 0x36, 0xe6, 0xb8, 0xac, + 0x6d, 0x69, 0xdb, 0xa5, 0x9d, 0xaf, 0x8c, 0xf8, 0x7e, 0x87, 0xc0, 0x86, 0x7f, 0xd9, 0x12, 0x1b, + 0xcc, 0x10, 0xda, 0x46, 0xe7, 0xbe, 0x71, 0x7c, 0xf6, 0x9a, 0x58, 0xbc, 0x41, 0x38, 0x36, 0xe1, + 0xdb, 0x5e, 0x75, 0xaa, 0xdf, 0xab, 0x82, 0x78, 0x0f, 0x0d, 0x51, 0xe1, 0x33, 0x50, 0x64, 0x3e, + 0xb1, 0xca, 0xd3, 0x12, 0xfd, 0x33, 0x23, 0x37, 0x7b, 0xc6, 0x30, 0xa2, 0xa6, 0x4f, 0x2c, 0x73, + 0x51, 0x21, 0x16, 0xc5, 0x0a, 0x49, 0x7b, 0xfd, 0x2f, 0x1a, 0x58, 0x1a, 0x6a, 0x1d, 0x52, 0xc6, + 0xe1, 0xcf, 0x46, 0x62, 0x37, 0x6e, 0x17, 0xbb, 0xb0, 0x96, 0x91, 0xaf, 0x28, 0x3f, 0xf3, 0x83, + 0x9d, 0x44, 0xdc, 0x75, 0x30, 0x43, 0x39, 0x71, 0x58, 0x79, 0x7a, 0xab, 0xb0, 0x5d, 0xda, 0xd9, + 0xfa, 0x58, 0xe0, 0xe6, 0x92, 0x02, 0x9b, 0x39, 0x10, 0x66, 0x28, 0xb2, 0xd6, 0xff, 0x55, 0x4c, + 0x84, 0x2d, 0x8e, 0x03, 0x9f, 0x80, 0x7b, 0x98, 0x73, 0x6c, 0x5d, 0x20, 0xf2, 0x26, 0xa4, 0x01, + 0xb1, 0x65, 0xf0, 0xf3, 0x26, 0xec, 0xf7, 0xaa, 0xf7, 0x76, 0x53, 0x12, 0x94, 0xd1, 0x14, 0xb6, + 0xbe, 0x67, 0x1f, 0xb8, 0xe7, 0xde, 0xb1, 0xdb, 0xf0, 0x42, 0x97, 0xcb, 0x6b, 0x55, 0xb6, 0x27, + 0x29, 0x09, 0xca, 0x68, 0x42, 0x0b, 0xac, 0x77, 0xbc, 0x76, 0xe8, 0x90, 0x43, 0x7a, 0x4e, 0xac, + 0xae, 0xd5, 0x26, 0x0d, 0xcf, 0x26, 0xac, 0x5c, 0xd8, 0x2a, 0x6c, 0x2f, 0x98, 0xb5, 0x7e, 0xaf, + 0xba, 0xfe, 0x22, 0x47, 0x7e, 0xdd, 0xab, 0xae, 0xe5, 0xec, 0xa3, 0x5c, 0x30, 0xf8, 0x14, 0x2c, + 0xab, 0xcb, 0xd9, 0xc3, 0x3e, 0xb6, 0x28, 0xef, 0x96, 0x8b, 0x32, 0xc2, 0xb5, 0x7e, 0xaf, 0xba, + 0xdc, 0x4c, 0x8b, 0x50, 0x56, 0x17, 0x3e, 0x07, 0x4b, 0xe7, 0xec, 0x87, 0x81, 0x17, 0xfa, 0x27, + 0x5e, 0x9b, 0x5a, 0xdd, 0xf2, 0xcc, 0x96, 0xb6, 0xbd, 0x60, 0xea, 0xfd, 0x5e, 0x75, 0xe9, 0x59, + 0x33, 0x21, 0xb8, 0xce, 0x6e, 0xa0, 0xb4, 0x21, 0x7c, 0x05, 0x96, 0xb8, 0x77, 0x49, 0x5c, 0x71, + 0x75, 0x84, 0x71, 0x56, 0x9e, 0x95, 0x69, 0xfc, 0x74, 0x4c, 0x1a, 0x4f, 0x13, 0xba, 0xe6, 0x86, + 0xca, 0xe4, 0x52, 0x72, 0x97, 0xa1, 0x34, 0x20, 0xdc, 0x03, 0xab, 0x41, 0x94, 0x17, 0x86, 0x88, + 0x1f, 0x9e, 0xb5, 0x29, 0xbb, 0x28, 0xcf, 0xc9, 0xc3, 0x6e, 0xf4, 0x7b, 0xd5, 0x55, 0x94, 0x15, + 0xa2, 0x51, 0x7d, 0xf8, 0x10, 0x2c, 0x32, 0x72, 0x48, 0xdd, 0xf0, 0x2a, 0x4a, 0xe7, 0xbc, 0xb4, + 0x5f, 0xe9, 0xf7, 0xaa, 0x8b, 0xcd, 0x7a, 0xbc, 0x8f, 0x52, 0x5a, 0xfa, 0x9f, 0x35, 0x30, 0xb7, + 0xd7, 0x3c, 0x38, 0xf2, 0x6c, 0x32, 0x81, 0x0e, 0xde, 0x4f, 0x75, 0xb0, 0x3e, 0xbe, 0x11, 0x44, + 0x3c, 0x63, 0xfb, 0xf7, 0x7f, 0x51, 0xff, 0x0a, 0x1d, 0xc5, 0x3d, 0x5b, 0xa0, 0xe8, 0x62, 0x87, + 0xc8, 0xa8, 0x17, 0x62, 0x9b, 0x23, 0xec, 0x10, 0x24, 0x25, 0xf0, 0x5b, 0x60, 0xd6, 0xf5, 0x6c, + 0x72, 0xb0, 0x2f, 0x7d, 0x2f, 0x98, 0xf7, 0x94, 0xce, 0xec, 0x91, 0xdc, 0x45, 0x4a, 0x2a, 0x6e, + 0x91, 0x7b, 0xbe, 0xd7, 0xf6, 0x5a, 0xdd, 0x1f, 0x91, 0xee, 0xa0, 0xa4, 0xe5, 0x2d, 0x9e, 0x26, + 0xf6, 0x51, 0x4a, 0x0b, 0xfe, 0x1c, 0x94, 0x70, 0xbb, 0xed, 0x59, 0x98, 0xe3, 0xb3, 0x36, 0x91, + 0x75, 0x5a, 0xda, 0xf9, 0x62, 0xcc, 0xf1, 0xa2, 0x16, 0x10, 0x7e, 0x91, 0x22, 0x7e, 0x66, 0x2e, + 0xf7, 0x7b, 0xd5, 0xd2, 0x6e, 0x0c, 0x81, 0x92, 0x78, 0xfa, 0x9f, 0x34, 0x50, 0x52, 0x07, 0x9e, + 0x00, 0x5d, 0xed, 0xa5, 0xe9, 0xaa, 0x72, 0x73, 0x96, 0xc6, 0x90, 0xd5, 0x2f, 0x86, 0x11, 0x4b, + 0xa6, 0x3a, 0x06, 0x73, 0xb6, 0x4c, 0x15, 0x2b, 0x6b, 0x12, 0xf5, 0xb3, 0x9b, 0x51, 0x15, 0x11, + 0x2e, 0x2b, 0xec, 0xb9, 0x68, 0xcd, 0xd0, 0x00, 0x45, 0xff, 0x7f, 0x01, 0xc0, 0xbd, 0xe6, 0x41, + 0x86, 0x06, 0x26, 0x50, 0xc2, 0x14, 0x2c, 0x8a, 0x52, 0x19, 0x14, 0x83, 0x2a, 0xe5, 0x07, 0xb7, + 0xbc, 0x7f, 0x7c, 0x46, 0xda, 0x4d, 0xd2, 0x26, 0x16, 0xf7, 0x82, 0xa8, 0xaa, 0x8e, 0x12, 0x60, + 0x28, 0x05, 0x0d, 0xf7, 0xc1, 0xca, 0x80, 0xd5, 0xda, 0x98, 0x31, 0x51, 0xcd, 0xe5, 0x82, 0xac, + 0xde, 0xb2, 0x0a, 0x71, 0xa5, 0x99, 0x91, 0xa3, 0x11, 0x0b, 0xf8, 0x12, 0xcc, 0x5b, 0x49, 0x02, + 0xfd, 0x48, 0xb1, 0x18, 0x83, 0x69, 0xc4, 0xf8, 0x71, 0x88, 0x5d, 0x4e, 0x79, 0xd7, 0x5c, 0x14, + 0x85, 0x32, 0x64, 0xda, 0x21, 0x1a, 0x64, 0x60, 0xd5, 0xc1, 0x57, 0xd4, 0x09, 0x9d, 0xa8, 0xa4, + 0x9b, 0xf4, 0x57, 0x44, 0xd2, 0xec, 0xdd, 0x5d, 0x48, 0x9a, 0x6b, 0x64, 0xc1, 0xd0, 0x28, 0xbe, + 0xfe, 0x0f, 0x0d, 0x7c, 0x32, 0x9a, 0xf8, 0x09, 0xb4, 0xc5, 0x51, 0xba, 0x2d, 0x3e, 0x1f, 0x5f, + 0xc0, 0x99, 0xd8, 0xc6, 0x74, 0xc8, 0xef, 0x66, 0xc1, 0x62, 0x32, 0x7d, 0x13, 0xa8, 0xdd, 0xef, + 0x81, 0x92, 0x1f, 0x78, 0x1d, 0xca, 0xa8, 0xe7, 0x92, 0x40, 0x31, 0xe1, 0x9a, 0x32, 0x29, 0x9d, + 0xc4, 0x22, 0x94, 0xd4, 0x83, 0x2d, 0x00, 0x7c, 0x1c, 0x60, 0x87, 0x70, 0xd1, 0xbf, 0x05, 0x79, + 0xfc, 0x07, 0x63, 0x8e, 0x9f, 0x3c, 0x91, 0x71, 0x32, 0xb4, 0xaa, 0xbb, 0x3c, 0xe8, 0xc6, 0xd1, + 0xc5, 0x02, 0x94, 0x80, 0x86, 0x97, 0x60, 0x29, 0x20, 0x56, 0x1b, 0x53, 0x47, 0xbd, 0xd9, 0x45, + 0x19, 0x61, 0x5d, 0x3c, 0xa0, 0x28, 0x29, 0xb8, 0xee, 0x55, 0xbf, 0x1a, 0x9d, 0xba, 0x8d, 0x13, + 0x12, 0x30, 0xca, 0x38, 0x71, 0x79, 0x54, 0x30, 0x29, 0x1b, 0x94, 0xc6, 0x16, 0x4c, 0xef, 0x88, + 0x27, 0xf0, 0xd8, 0xe7, 0xd4, 0x73, 0x59, 0x79, 0x26, 0x66, 0xfa, 0x46, 0x62, 0x1f, 0xa5, 0xb4, + 0xe0, 0x21, 0x58, 0x17, 0xcc, 0xfc, 0xcb, 0xc8, 0x41, 0xfd, 0xca, 0xc7, 0xae, 0xb8, 0xa5, 0xf2, + 0xac, 0x7c, 0x6d, 0xcb, 0x62, 0xf4, 0xd9, 0xcd, 0x91, 0xa3, 0x5c, 0x2b, 0xf8, 0x12, 0xac, 0x46, + 0xb3, 0x8f, 0x49, 0x5d, 0x9b, 0xba, 0x2d, 0x31, 0xf9, 0xc8, 0x87, 0x7f, 0xc1, 0xfc, 0x42, 0x74, + 0xc4, 0x8b, 0xac, 0xf0, 0x3a, 0x6f, 0x13, 0x8d, 0x82, 0xc0, 0x37, 0x60, 0x55, 0x7a, 0x24, 0xb6, + 0xa2, 0x13, 0x4a, 0x58, 0x79, 0x5e, 0xa6, 0x6e, 0x3b, 0x99, 0x3a, 0x71, 0x75, 0xd1, 0xd4, 0x12, + 0x91, 0xce, 0x80, 0x9c, 0x4e, 0x49, 0xe0, 0x98, 0xdf, 0x54, 0xf9, 0x5a, 0xdd, 0xcd, 0x42, 0xa1, + 0x51, 0xf4, 0xcd, 0xa7, 0x60, 0x39, 0x93, 0x70, 0xb8, 0x02, 0x0a, 0x97, 0xa4, 0x1b, 0x3d, 0xcb, + 0x48, 0xfc, 0x84, 0xeb, 0x60, 0xa6, 0x83, 0xdb, 0x21, 0x89, 0x8a, 0x0f, 0x45, 0x8b, 0x27, 0xd3, + 0x8f, 0x35, 0xfd, 0x6f, 0x1a, 0x48, 0xd1, 0xd9, 0x04, 0x5a, 0xfa, 0x79, 0xba, 0xa5, 0x3f, 0xbd, + 0x45, 0x4d, 0x8f, 0x69, 0xe6, 0xdf, 0x68, 0x60, 0x31, 0x39, 0xe2, 0xc1, 0xef, 0x82, 0x79, 0x1c, + 0xda, 0x94, 0xb8, 0xd6, 0x60, 0x2a, 0x19, 0x06, 0xb2, 0xab, 0xf6, 0xd1, 0x50, 0x43, 0x0c, 0x80, + 0xe4, 0xca, 0xa7, 0x01, 0x16, 0x45, 0xd6, 0x24, 0x96, 0xe7, 0xda, 0x4c, 0xde, 0x50, 0x21, 0x62, + 0xc6, 0x7a, 0x56, 0x88, 0x46, 0xf5, 0xf5, 0x3f, 0x4e, 0x83, 0x95, 0xa8, 0x36, 0xa2, 0xd1, 0xdf, + 0x21, 0x2e, 0x9f, 0x00, 0xa9, 0x34, 0x52, 0x33, 0xdd, 0x77, 0x6e, 0x1c, 0x7a, 0xe2, 0xc0, 0xc6, + 0x0d, 0x77, 0xf0, 0x27, 0x60, 0x96, 0x71, 0xcc, 0x43, 0x26, 0x9f, 0xba, 0xd2, 0xce, 0x97, 0xb7, + 0x05, 0x94, 0x46, 0xf1, 0x5c, 0x17, 0xad, 0x91, 0x02, 0xd3, 0xff, 0xae, 0x81, 0xf5, 0xac, 0xc9, + 0x04, 0x2a, 0xec, 0x30, 0x5d, 0x61, 0xdf, 0xbe, 0xe5, 0x61, 0xc6, 0x7d, 0x01, 0x6a, 0xe0, 0x93, + 0x91, 0x73, 0xcb, 0x97, 0x54, 0xf0, 0x92, 0x9f, 0x61, 0xbf, 0xa3, 0x78, 0x22, 0x96, 0xbc, 0x74, + 0x92, 0x23, 0x47, 0xb9, 0x56, 0xf0, 0x35, 0x58, 0xa1, 0x6e, 0x9b, 0xba, 0x44, 0x3d, 0xbc, 0x71, + 0x7e, 0x73, 0xc9, 0x23, 0x8b, 0x2c, 0x93, 0xbb, 0x2e, 0xe6, 0x93, 0x83, 0x0c, 0x0a, 0x1a, 0xc1, + 0xd5, 0xff, 0x99, 0x93, 0x19, 0x39, 0x33, 0x8a, 0x16, 0x92, 0x3b, 0x24, 0x18, 0x69, 0x21, 0xb5, + 0x8f, 0x86, 0x1a, 0xb2, 0x6e, 0xe4, 0x55, 0xa8, 0x40, 0x6f, 0x5d, 0x37, 0xd2, 0x28, 0x51, 0x37, + 0x72, 0x8d, 0x14, 0x98, 0x08, 0x42, 0xcc, 0x64, 0x89, 0xd9, 0x6b, 0x18, 0xc4, 0x91, 0xda, 0x47, + 0x43, 0x0d, 0xfd, 0xbf, 0x85, 0x9c, 0x04, 0xc9, 0x02, 0x4c, 0x9c, 0x66, 0xf0, 0x95, 0x9e, 0x3d, + 0x8d, 0x3d, 0x3c, 0x8d, 0x0d, 0xff, 0xa0, 0x01, 0x88, 0x87, 0x10, 0x8d, 0x41, 0x81, 0x46, 0x55, + 0x54, 0xbf, 0x53, 0x4b, 0x18, 0xbb, 0x23, 0x38, 0xd1, 0x6b, 0xbc, 0xa9, 0xfc, 0xc3, 0x51, 0x05, + 0x94, 0xe3, 0x1c, 0xda, 0xa0, 0x14, 0xed, 0xd6, 0x83, 0xc0, 0x0b, 0x54, 0x7b, 0xea, 0x37, 0xc6, + 0x22, 0x35, 0xcd, 0x8a, 0xfc, 0xb8, 0x89, 0x4d, 0xaf, 0x7b, 0xd5, 0x52, 0x42, 0x8e, 0x92, 0xb0, + 0xc2, 0x8b, 0x4d, 0x62, 0x2f, 0xc5, 0xbb, 0x79, 0xd9, 0x27, 0xe3, 0xbd, 0x24, 0x60, 0x37, 0xeb, + 0xe0, 0x1b, 0x63, 0xae, 0xe5, 0x4e, 0x6f, 0xd6, 0x6f, 0x35, 0x90, 0xf4, 0x01, 0x0f, 0x41, 0x91, + 0x53, 0xd5, 0x75, 0xe9, 0x0f, 0xc0, 0x1b, 0x88, 0xe4, 0x94, 0x3a, 0x24, 0xa6, 0x42, 0xb1, 0x42, + 0x12, 0x05, 0x7e, 0x0e, 0xe6, 0x1c, 0xc2, 0x18, 0x6e, 0x29, 0xcf, 0xf1, 0xe7, 0x50, 0x23, 0xda, + 0x46, 0x03, 0xb9, 0xfe, 0x08, 0xac, 0xe5, 0x7c, 0x56, 0xc2, 0x2a, 0x98, 0xb1, 0xe4, 0x9f, 0x01, + 0x22, 0xa0, 0x19, 0x73, 0x41, 0x30, 0xca, 0x9e, 0xfc, 0x17, 0x20, 0xda, 0x37, 0xbf, 0xff, 0xf6, + 0x43, 0x65, 0xea, 0xdd, 0x87, 0xca, 0xd4, 0xfb, 0x0f, 0x95, 0xa9, 0x5f, 0xf7, 0x2b, 0xda, 0xdb, + 0x7e, 0x45, 0x7b, 0xd7, 0xaf, 0x68, 0xef, 0xfb, 0x15, 0xed, 0xdf, 0xfd, 0x8a, 0xf6, 0xfb, 0xff, + 0x54, 0xa6, 0x7e, 0xba, 0x91, 0xfb, 0x77, 0xea, 0xd7, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0d, 0xf9, + 0xe3, 0xd5, 0x7f, 0x15, 0x00, 0x00, } func (m *CSIDriver) Marshal() (dAtA []byte, err error) { @@ -826,6 +827,16 @@ func (m *CSIDriverSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.SELinuxMount != nil { + i-- + if *m.SELinuxMount { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } if m.RequiresRepublish != nil { i-- if *m.RequiresRepublish { @@ -1795,6 +1806,9 @@ func (m *CSIDriverSpec) Size() (n int) { if m.RequiresRepublish != nil { n += 2 } + if m.SELinuxMount != nil { + n += 2 + } return n } @@ -2148,6 +2162,7 @@ func (this *CSIDriverSpec) String() string { `FSGroupPolicy:` + valueToStringGenerated(this.FSGroupPolicy) + `,`, `TokenRequests:` + repeatedStringForTokenRequests + `,`, `RequiresRepublish:` + valueToStringGenerated(this.RequiresRepublish) + `,`, + `SELinuxMount:` + valueToStringGenerated(this.SELinuxMount) + `,`, `}`, }, "") return s @@ -2844,6 +2859,27 @@ func (m *CSIDriverSpec) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.RequiresRepublish = &b + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxMount", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.SELinuxMount = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.proto index 45417116a1f..d3c425c0419 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/generated.proto @@ -192,6 +192,27 @@ message CSIDriverSpec { // // +optional optional bool requiresRepublish = 7; + + // SELinuxMount specifies if the CSI driver supports "-o context" + // mount option. + // + // When "true", the CSI driver must ensure that all volumes provided by this CSI + // driver can be mounted separately with different `-o context` options. This is + // typical for storage backends that provide volumes as filesystems on block + // devices or as independent shared volumes. + // Kubernetes will call NodeStage / NodePublish with "-o context=xyz" mount + // option when mounting a ReadWriteOncePod volume used in Pod that has + // explicitly set SELinux context. In the future, it may be expanded to other + // volume AccessModes. In any case, Kubernetes will ensure that the volume is + // mounted only with a single SELinux context. + // + // When "false", Kubernetes won't pass any special SELinux mount options to the driver. + // This is typical for volumes that represent subdirectories of a bigger shared filesystem. + // + // Default is "false". + // + // +optional + optional bool seLinuxMount = 8; } // CSINode holds information about all CSI drivers installed on a node. diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types.go index 4812287abf6..f57099df6dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types.go @@ -392,6 +392,27 @@ type CSIDriverSpec struct { // // +optional RequiresRepublish *bool `json:"requiresRepublish,omitempty" protobuf:"varint,7,opt,name=requiresRepublish"` + + // SELinuxMount specifies if the CSI driver supports "-o context" + // mount option. + // + // When "true", the CSI driver must ensure that all volumes provided by this CSI + // driver can be mounted separately with different `-o context` options. This is + // typical for storage backends that provide volumes as filesystems on block + // devices or as independent shared volumes. + // Kubernetes will call NodeStage / NodePublish with "-o context=xyz" mount + // option when mounting a ReadWriteOncePod volume used in Pod that has + // explicitly set SELinux context. In the future, it may be expanded to other + // volume AccessModes. In any case, Kubernetes will ensure that the volume is + // mounted only with a single SELinux context. + // + // When "false", Kubernetes won't pass any special SELinux mount options to the driver. + // This is typical for volumes that represent subdirectories of a bigger shared filesystem. + // + // Default is "false". + // + // +optional + SELinuxMount *bool `json:"seLinuxMount,omitempty" protobuf:"varint,8,opt,name=seLinuxMount"` } // FSGroupPolicy specifies if a CSI Driver supports modifying diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go index 7a407db46b2..1a069bb4037 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/types_swagger_doc_generated.go @@ -56,6 +56,7 @@ var map_CSIDriverSpec = map[string]string{ "fsGroupPolicy": "Defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details.\n\nThis field is immutable.\n\nDefaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce.", "tokenRequests": "TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \"csi.storage.k8s.io/serviceAccount.tokens\": {\n \"\": {\n \"token\": ,\n \"expirationTimestamp\": ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.", "requiresRepublish": "RequiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.", + "seLinuxMount": "SELinuxMount specifies if the CSI driver supports \"-o context\" mount option.\n\nWhen \"true\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \"-o context=xyz\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context.\n\nWhen \"false\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem.\n\nDefault is \"false\".", } func (CSIDriverSpec) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go index b14b7fbcd87..74ae83bca82 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1/zz_generated.deepcopy.go @@ -127,6 +127,11 @@ func (in *CSIDriverSpec) DeepCopyInto(out *CSIDriverSpec) { *out = new(bool) **out = **in } + if in.SELinuxMount != nil { + in, out := &in.SELinuxMount, &out.SELinuxMount + *out = new(bool) + **out = **in + } return } diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.pb.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.pb.go index 379ce8f1836..42ef65ca0fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.pb.go @@ -609,111 +609,112 @@ func init() { } var fileDescriptor_7d2980599fd0de80 = []byte{ - // 1654 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6f, 0x1b, 0x37, - 0x16, 0xf7, 0x58, 0xf2, 0x17, 0x65, 0xc7, 0x36, 0xed, 0x64, 0xb5, 0x3a, 0x48, 0x86, 0x16, 0xbb, - 0x71, 0x82, 0xec, 0x28, 0xf1, 0x66, 0x83, 0x20, 0x40, 0x80, 0xf5, 0xd8, 0xde, 0x8d, 0x12, 0xcb, - 0x71, 0x28, 0x23, 0x08, 0x82, 0x3d, 0x2c, 0x35, 0x43, 0xcb, 0x8c, 0x35, 0x1f, 0x19, 0x52, 0xde, - 0xa8, 0xa7, 0xf6, 0xd2, 0x73, 0xd1, 0x43, 0xef, 0x05, 0xfa, 0x2f, 0xb4, 0x40, 0x7b, 0xe9, 0xb1, - 0x01, 0x0a, 0x14, 0x41, 0x4f, 0x39, 0x09, 0x8d, 0xfa, 0x27, 0x14, 0xe8, 0xc1, 0xe8, 0xa1, 0x20, - 0x87, 0xd2, 0x7c, 0x49, 0xb1, 0xdd, 0x83, 0x6e, 0xe2, 0xfb, 0xf8, 0xbd, 0x47, 0xf2, 0xf7, 0x1e, - 0xdf, 0x08, 0x6c, 0x1d, 0xdf, 0x65, 0x3a, 0x75, 0x2b, 0xc7, 0xed, 0x06, 0xf1, 0x1d, 0xc2, 0x09, - 0xab, 0x9c, 0x10, 0xc7, 0x72, 0xfd, 0x8a, 0x52, 0x60, 0x8f, 0x56, 0x18, 0x77, 0x7d, 0xdc, 0x24, - 0x95, 0x93, 0x5b, 0x0d, 0xc2, 0xf1, 0xad, 0x4a, 0x93, 0x38, 0xc4, 0xc7, 0x9c, 0x58, 0xba, 0xe7, - 0xbb, 0xdc, 0x85, 0x85, 0xc0, 0x56, 0xc7, 0x1e, 0xd5, 0x95, 0xad, 0xae, 0x6c, 0x0b, 0x7f, 0x6f, - 0x52, 0x7e, 0xd4, 0x6e, 0xe8, 0xa6, 0x6b, 0x57, 0x9a, 0x6e, 0xd3, 0xad, 0x48, 0x97, 0x46, 0xfb, - 0x50, 0xae, 0xe4, 0x42, 0xfe, 0x0a, 0xa0, 0x0a, 0xe5, 0x48, 0x58, 0xd3, 0xf5, 0x45, 0xcc, 0x64, - 0xb8, 0xc2, 0xed, 0xd0, 0xc6, 0xc6, 0xe6, 0x11, 0x75, 0x88, 0xdf, 0xa9, 0x78, 0xc7, 0x4d, 0xe9, - 0xe4, 0x13, 0xe6, 0xb6, 0x7d, 0x93, 0x5c, 0xc8, 0x8b, 0x55, 0x6c, 0xc2, 0xf1, 0xb0, 0x58, 0x95, - 0x51, 0x5e, 0x7e, 0xdb, 0xe1, 0xd4, 0x4e, 0x87, 0xb9, 0x73, 0x96, 0x03, 0x33, 0x8f, 0x88, 0x8d, - 0x93, 0x7e, 0xe5, 0x6f, 0x34, 0x30, 0xb7, 0x55, 0xaf, 0x6e, 0xfb, 0xf4, 0x84, 0xf8, 0xf0, 0x7f, - 0x60, 0x56, 0x64, 0x64, 0x61, 0x8e, 0xf3, 0xda, 0x9a, 0xb6, 0x9e, 0xdb, 0xb8, 0xa9, 0x87, 0x87, - 0x3c, 0x00, 0xd6, 0xbd, 0xe3, 0xa6, 0x10, 0x30, 0x5d, 0x58, 0xeb, 0x27, 0xb7, 0xf4, 0xc7, 0x8d, - 0x17, 0xc4, 0xe4, 0x35, 0xc2, 0xb1, 0x01, 0x5f, 0x77, 0x4b, 0x13, 0xbd, 0x6e, 0x09, 0x84, 0x32, - 0x34, 0x40, 0x85, 0x8f, 0x40, 0x96, 0x79, 0xc4, 0xcc, 0x4f, 0x4a, 0xf4, 0x6b, 0xfa, 0xe8, 0x2b, - 0xd4, 0x07, 0x69, 0xd5, 0x3d, 0x62, 0x1a, 0xf3, 0x0a, 0x36, 0x2b, 0x56, 0x48, 0x82, 0x94, 0xbf, - 0xd6, 0xc0, 0xc2, 0xc0, 0x6a, 0x97, 0x32, 0x0e, 0xff, 0x9b, 0xda, 0x80, 0x7e, 0xbe, 0x0d, 0x08, - 0x6f, 0x99, 0xfe, 0x92, 0x8a, 0x33, 0xdb, 0x97, 0x44, 0x92, 0x7f, 0x08, 0xa6, 0x28, 0x27, 0x36, - 0xcb, 0x4f, 0xae, 0x65, 0xd6, 0x73, 0x1b, 0x7f, 0x3d, 0x57, 0xf6, 0xc6, 0x82, 0x42, 0x9c, 0xaa, - 0x0a, 0x5f, 0x14, 0x40, 0x94, 0x3f, 0xcf, 0x46, 0x72, 0x17, 0x7b, 0x82, 0xf7, 0xc0, 0x25, 0xcc, - 0x39, 0x36, 0x8f, 0x10, 0x79, 0xd9, 0xa6, 0x3e, 0xb1, 0xe4, 0x0e, 0x66, 0x0d, 0xd8, 0xeb, 0x96, - 0x2e, 0x6d, 0xc6, 0x34, 0x28, 0x61, 0x29, 0x7c, 0x3d, 0xd7, 0xaa, 0x3a, 0x87, 0xee, 0x63, 0xa7, - 0xe6, 0xb6, 0x1d, 0x2e, 0x0f, 0x58, 0xf9, 0xee, 0xc7, 0x34, 0x28, 0x61, 0x09, 0x4d, 0xb0, 0x7a, - 0xe2, 0xb6, 0xda, 0x36, 0xd9, 0xa5, 0x87, 0xc4, 0xec, 0x98, 0x2d, 0x52, 0x73, 0x2d, 0xc2, 0xf2, - 0x99, 0xb5, 0xcc, 0xfa, 0x9c, 0x51, 0xe9, 0x75, 0x4b, 0xab, 0x4f, 0x87, 0xe8, 0x4f, 0xbb, 0xa5, - 0x95, 0x21, 0x72, 0x34, 0x14, 0x0c, 0xde, 0x07, 0x8b, 0xea, 0x84, 0xb6, 0xb0, 0x87, 0x4d, 0xca, - 0x3b, 0xf9, 0xac, 0xcc, 0x70, 0xa5, 0xd7, 0x2d, 0x2d, 0xd6, 0xe3, 0x2a, 0x94, 0xb4, 0x85, 0x0f, - 0xc0, 0xc2, 0x21, 0xfb, 0x8f, 0xef, 0xb6, 0xbd, 0x7d, 0xb7, 0x45, 0xcd, 0x4e, 0x7e, 0x6a, 0x4d, - 0x5b, 0x9f, 0x33, 0xca, 0xbd, 0x6e, 0x69, 0xe1, 0xdf, 0xf5, 0x88, 0xe2, 0x34, 0x29, 0x40, 0x71, - 0x47, 0x48, 0xc0, 0x02, 0x77, 0x8f, 0x89, 0x23, 0x8e, 0x8e, 0x30, 0xce, 0xf2, 0xd3, 0xf2, 0x2e, - 0xd7, 0xdf, 0x77, 0x97, 0x07, 0x11, 0x07, 0xe3, 0xb2, 0xba, 0xce, 0x85, 0xa8, 0x94, 0xa1, 0x38, - 0x2a, 0xdc, 0x02, 0xcb, 0x7e, 0x70, 0x39, 0x0c, 0x11, 0xaf, 0xdd, 0x68, 0x51, 0x76, 0x94, 0x9f, - 0x91, 0x3b, 0xbe, 0xdc, 0xeb, 0x96, 0x96, 0x51, 0x52, 0x89, 0xd2, 0xf6, 0xe5, 0xaf, 0x34, 0x30, - 0xb3, 0x55, 0xaf, 0xee, 0xb9, 0x16, 0x19, 0x43, 0x69, 0x56, 0x63, 0xa5, 0x79, 0xf5, 0x0c, 0x72, - 0x8b, 0xa4, 0x46, 0x16, 0xe6, 0x2f, 0x41, 0x61, 0x0a, 0x1b, 0xd5, 0x59, 0xd6, 0x40, 0xd6, 0xc1, - 0x36, 0x91, 0xa9, 0xcf, 0x85, 0x3e, 0x7b, 0xd8, 0x26, 0x48, 0x6a, 0xe0, 0xdf, 0xc0, 0xb4, 0xe3, - 0x5a, 0xa4, 0xba, 0x2d, 0x13, 0x98, 0x33, 0x2e, 0x29, 0x9b, 0xe9, 0x3d, 0x29, 0x45, 0x4a, 0x0b, - 0x6f, 0x83, 0x79, 0xee, 0x7a, 0x6e, 0xcb, 0x6d, 0x76, 0x1e, 0x91, 0x4e, 0x9f, 0xa6, 0x4b, 0xbd, - 0x6e, 0x69, 0xfe, 0x20, 0x22, 0x47, 0x31, 0x2b, 0xd8, 0x00, 0x39, 0xdc, 0x6a, 0xb9, 0x26, 0xe6, - 0xb8, 0xd1, 0x22, 0x92, 0x7b, 0xb9, 0x8d, 0xca, 0xfb, 0xf6, 0x18, 0x70, 0x5b, 0x04, 0x47, 0xaa, - 0xb7, 0x33, 0x63, 0xb1, 0xd7, 0x2d, 0xe5, 0x36, 0x43, 0x1c, 0x14, 0x05, 0x2d, 0x7f, 0xa9, 0x81, - 0x9c, 0xda, 0xf5, 0x18, 0x9a, 0xd1, 0x83, 0x78, 0x33, 0xfa, 0xcb, 0x39, 0xee, 0x6b, 0x44, 0x2b, - 0x32, 0x07, 0x69, 0xcb, 0x3e, 0x74, 0x00, 0x66, 0x2c, 0x79, 0x69, 0x2c, 0xaf, 0x49, 0xe8, 0x6b, - 0xe7, 0x80, 0x56, 0xbd, 0x6e, 0x51, 0x05, 0x98, 0x09, 0xd6, 0x0c, 0xf5, 0xa1, 0xca, 0xbf, 0x66, - 0x00, 0xdc, 0xaa, 0x57, 0x13, 0x95, 0x3e, 0x06, 0x5a, 0x53, 0x30, 0x2f, 0x98, 0xd3, 0xe7, 0x86, - 0xa2, 0xf7, 0x3f, 0xce, 0x79, 0x13, 0xb8, 0x41, 0x5a, 0x75, 0xd2, 0x22, 0x26, 0x77, 0xfd, 0x80, - 0x64, 0x7b, 0x11, 0x30, 0x14, 0x83, 0x86, 0xdb, 0x60, 0xa9, 0xdf, 0xb8, 0x5a, 0x98, 0x31, 0x41, - 0xee, 0x7c, 0x46, 0x92, 0x39, 0xaf, 0x52, 0x5c, 0xaa, 0x27, 0xf4, 0x28, 0xe5, 0x01, 0x9f, 0x81, - 0x59, 0x33, 0xda, 0x23, 0xcf, 0xa0, 0x8d, 0xde, 0x1f, 0x3d, 0xf4, 0x27, 0x6d, 0xec, 0x70, 0xca, - 0x3b, 0xc6, 0xbc, 0xa0, 0xcc, 0xa0, 0x99, 0x0e, 0xd0, 0x20, 0x03, 0xcb, 0x36, 0x7e, 0x45, 0xed, - 0xb6, 0x1d, 0x90, 0xbb, 0x4e, 0x3f, 0x20, 0xb2, 0x93, 0x5e, 0x3c, 0x84, 0x6c, 0x62, 0xb5, 0x24, - 0x18, 0x4a, 0xe3, 0x97, 0xbf, 0xd7, 0xc0, 0x95, 0xf4, 0xc5, 0x8f, 0xa1, 0x40, 0xea, 0xf1, 0x02, - 0xd1, 0xcf, 0x60, 0x71, 0x22, 0xc1, 0x11, 0xb5, 0xf2, 0xe9, 0x34, 0x98, 0x8f, 0xde, 0xe1, 0x18, - 0x08, 0xfc, 0x4f, 0x90, 0xf3, 0x7c, 0xf7, 0x84, 0x32, 0xea, 0x3a, 0xc4, 0x57, 0xdd, 0x71, 0x45, - 0xb9, 0xe4, 0xf6, 0x43, 0x15, 0x8a, 0xda, 0xc1, 0x16, 0x00, 0x1e, 0xf6, 0xb1, 0x4d, 0xb8, 0xa8, - 0xe4, 0x8c, 0x3c, 0x83, 0xbb, 0xef, 0x3b, 0x83, 0xe8, 0xb6, 0xf4, 0xfd, 0x81, 0xeb, 0x8e, 0xc3, - 0xfd, 0x4e, 0x98, 0x62, 0xa8, 0x40, 0x11, 0x7c, 0x78, 0x0c, 0x16, 0x7c, 0x62, 0xb6, 0x30, 0xb5, - 0xd5, 0x03, 0x9d, 0x95, 0x69, 0xee, 0x88, 0x87, 0x12, 0x45, 0x15, 0xa7, 0xdd, 0xd2, 0xcd, 0xf4, - 0xb0, 0xad, 0xef, 0x13, 0x9f, 0x51, 0xc6, 0x89, 0xc3, 0x03, 0xea, 0xc4, 0x7c, 0x50, 0x1c, 0x5b, - 0x3c, 0x01, 0xb6, 0x18, 0x5d, 0x1e, 0x7b, 0x9c, 0xba, 0x0e, 0xcb, 0x4f, 0x85, 0x4f, 0x40, 0x2d, - 0x22, 0x47, 0x31, 0x2b, 0xb8, 0x0b, 0x56, 0x45, 0xb7, 0xfe, 0x7f, 0x10, 0x60, 0xe7, 0x95, 0x87, - 0x1d, 0x71, 0x54, 0xf9, 0x69, 0xf9, 0x2a, 0xe7, 0xc5, 0x9c, 0xb3, 0x39, 0x44, 0x8f, 0x86, 0x7a, - 0xc1, 0x67, 0x60, 0x39, 0x18, 0x74, 0x0c, 0xea, 0x58, 0xd4, 0x69, 0x8a, 0x31, 0x47, 0x3e, 0xf0, - 0x73, 0xc6, 0x75, 0x51, 0x1b, 0x4f, 0x93, 0xca, 0xd3, 0x61, 0x42, 0x94, 0x06, 0x81, 0x2f, 0xc1, - 0xb2, 0x8c, 0x48, 0x2c, 0xd5, 0x58, 0x28, 0x61, 0xf9, 0xd9, 0xf4, 0x94, 0x22, 0x8e, 0x4e, 0x10, - 0xa9, 0xdf, 0x7e, 0xfa, 0x6d, 0xea, 0x80, 0xf8, 0xb6, 0xf1, 0x67, 0x75, 0x5f, 0xcb, 0x9b, 0x49, - 0x28, 0x94, 0x46, 0x2f, 0xdc, 0x07, 0x8b, 0x89, 0x0b, 0x87, 0x4b, 0x20, 0x73, 0x4c, 0x3a, 0xc1, - 0x7b, 0x8d, 0xc4, 0x4f, 0xb8, 0x0a, 0xa6, 0x4e, 0x70, 0xab, 0x4d, 0x02, 0x06, 0xa2, 0x60, 0x71, - 0x6f, 0xf2, 0xae, 0x56, 0xfe, 0x56, 0x03, 0xb1, 0xc6, 0x36, 0x86, 0xe2, 0xae, 0xc5, 0x8b, 0x7b, - 0xfd, 0xbc, 0xc4, 0x1e, 0x51, 0xd6, 0x1f, 0x69, 0x60, 0x3e, 0x3a, 0xcf, 0xc1, 0x1b, 0x60, 0x16, - 0xb7, 0x2d, 0x4a, 0x1c, 0xb3, 0x3f, 0xb3, 0x0c, 0xb2, 0xd9, 0x54, 0x72, 0x34, 0xb0, 0x10, 0xd3, - 0x1e, 0x79, 0xe5, 0x51, 0x1f, 0x0b, 0xa6, 0xd5, 0x89, 0xe9, 0x3a, 0x16, 0x93, 0xc7, 0x94, 0x09, - 0x1a, 0xe5, 0x4e, 0x52, 0x89, 0xd2, 0xf6, 0xe5, 0x2f, 0x26, 0xc1, 0x52, 0x40, 0x90, 0x60, 0xd8, - 0xb7, 0x89, 0xc3, 0xc7, 0xd0, 0x5e, 0x50, 0x6c, 0xec, 0xbb, 0x79, 0xf6, 0x48, 0x14, 0x66, 0x37, - 0x6a, 0xfe, 0x83, 0xcf, 0xc1, 0x34, 0xe3, 0x98, 0xb7, 0x99, 0x7c, 0xfe, 0x72, 0x1b, 0x1b, 0x17, - 0x42, 0x95, 0x9e, 0xe1, 0xfc, 0x17, 0xac, 0x91, 0x42, 0x2c, 0x7f, 0xa7, 0x81, 0xd5, 0xa4, 0xcb, - 0x18, 0x08, 0xf7, 0x24, 0x4e, 0xb8, 0x1b, 0x17, 0xd9, 0xd1, 0x08, 0xd2, 0xfd, 0xa8, 0x81, 0x2b, - 0xa9, 0xcd, 0xcb, 0x77, 0x56, 0xf4, 0x2a, 0x2f, 0xd1, 0x11, 0xf7, 0xc2, 0xf1, 0x59, 0xf6, 0xaa, - 0xfd, 0x21, 0x7a, 0x34, 0xd4, 0x0b, 0xbe, 0x00, 0x4b, 0xd4, 0x69, 0x51, 0x87, 0xa8, 0x67, 0x39, - 0xbc, 0xee, 0xa1, 0x0d, 0x25, 0x89, 0x2c, 0xaf, 0x79, 0x55, 0x4c, 0x2f, 0xd5, 0x04, 0x0a, 0x4a, - 0xe1, 0x96, 0x7f, 0x18, 0x72, 0x3d, 0x72, 0xac, 0x14, 0x15, 0x25, 0x25, 0xc4, 0x4f, 0x55, 0x94, - 0x92, 0xa3, 0x81, 0x85, 0x64, 0x90, 0x3c, 0x0a, 0x95, 0xe8, 0xc5, 0x18, 0x24, 0x3d, 0x23, 0x0c, - 0x92, 0x6b, 0xa4, 0x10, 0x45, 0x26, 0x62, 0x6c, 0x8b, 0x8c, 0x67, 0x83, 0x4c, 0xf6, 0x94, 0x1c, - 0x0d, 0x2c, 0xca, 0xbf, 0x65, 0x86, 0xdc, 0x92, 0xa4, 0x62, 0x64, 0x4b, 0xfd, 0x6f, 0xf5, 0xe4, - 0x96, 0xac, 0xc1, 0x96, 0x2c, 0xf8, 0x99, 0x06, 0x20, 0x1e, 0x40, 0xd4, 0xfa, 0x54, 0x0d, 0xf8, - 0xf4, 0xf0, 0xe2, 0x15, 0xa2, 0x6f, 0xa6, 0xc0, 0x82, 0xb7, 0xba, 0xa0, 0x92, 0x80, 0x69, 0x03, - 0x34, 0x24, 0x03, 0x48, 0x41, 0x2e, 0x90, 0xee, 0xf8, 0xbe, 0xeb, 0xab, 0x92, 0xbd, 0x7a, 0x76, - 0x42, 0xd2, 0xdc, 0x28, 0xca, 0x6f, 0xa2, 0xd0, 0xff, 0xb4, 0x5b, 0xca, 0x45, 0xf4, 0x28, 0x8a, - 0x2d, 0x42, 0x59, 0x24, 0x0c, 0x95, 0xfd, 0x03, 0xa1, 0xb6, 0xc9, 0xe8, 0x50, 0x11, 0xec, 0xc2, - 0x0e, 0xf8, 0xd3, 0x88, 0x03, 0xba, 0xd0, 0xdb, 0xf6, 0xb1, 0x06, 0xa2, 0x31, 0xe0, 0x2e, 0xc8, - 0x72, 0xaa, 0x2a, 0x31, 0xb7, 0x71, 0xfd, 0x7c, 0x1d, 0xe6, 0x80, 0xda, 0x24, 0x6c, 0x94, 0x62, - 0x85, 0x24, 0x0a, 0xbc, 0x06, 0x66, 0x6c, 0xc2, 0x18, 0x6e, 0xaa, 0xc8, 0xe1, 0x07, 0x54, 0x2d, - 0x10, 0xa3, 0xbe, 0xbe, 0x7c, 0x07, 0xac, 0x0c, 0xf9, 0x24, 0x85, 0x25, 0x30, 0x65, 0xca, 0x3f, - 0x7c, 0x44, 0x42, 0x53, 0xc6, 0x9c, 0xe8, 0x32, 0x5b, 0xf2, 0x7f, 0x9e, 0x40, 0x6e, 0xfc, 0xeb, - 0xf5, 0xbb, 0xe2, 0xc4, 0x9b, 0x77, 0xc5, 0x89, 0xb7, 0xef, 0x8a, 0x13, 0x1f, 0xf6, 0x8a, 0xda, - 0xeb, 0x5e, 0x51, 0x7b, 0xd3, 0x2b, 0x6a, 0x6f, 0x7b, 0x45, 0xed, 0xa7, 0x5e, 0x51, 0xfb, 0xe4, - 0xe7, 0xe2, 0xc4, 0xf3, 0xc2, 0xe8, 0xff, 0x5d, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x91, 0x4f, - 0x2f, 0xc0, 0xad, 0x15, 0x00, 0x00, + // 1672 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0xcd, 0x6f, 0x1b, 0x4d, + 0x19, 0xcf, 0xc6, 0xce, 0xd7, 0x38, 0x69, 0x92, 0x49, 0x5a, 0x8c, 0x0f, 0x76, 0x64, 0x04, 0x4d, + 0xab, 0xb2, 0x6e, 0x43, 0xa9, 0xaa, 0x4a, 0x95, 0xc8, 0x26, 0x81, 0xba, 0x8d, 0xd3, 0x74, 0x1c, + 0x55, 0x55, 0xc5, 0x81, 0xf1, 0xee, 0xc4, 0x99, 0xc6, 0xfb, 0xd1, 0x9d, 0xd9, 0x10, 0x73, 0x82, + 0x0b, 0x67, 0xc4, 0x81, 0xbf, 0x80, 0x7f, 0x01, 0x24, 0xb8, 0x70, 0xa4, 0x12, 0x12, 0xaa, 0xb8, + 0xd0, 0x93, 0x45, 0xcd, 0x9f, 0xf0, 0x4a, 0xef, 0x21, 0x7a, 0x0f, 0xaf, 0x66, 0x76, 0xec, 0xfd, + 0xb2, 0x9b, 0xe4, 0x3d, 0xf8, 0xe6, 0x79, 0x3e, 0x7e, 0xcf, 0x33, 0xf3, 0x7c, 0xae, 0xc1, 0xce, + 0xe9, 0x63, 0xa6, 0x53, 0xb7, 0x76, 0x1a, 0xb4, 0x88, 0xef, 0x10, 0x4e, 0x58, 0xed, 0x8c, 0x38, + 0x96, 0xeb, 0xd7, 0x14, 0x03, 0x7b, 0xb4, 0xc6, 0xb8, 0xeb, 0xe3, 0x36, 0xa9, 0x9d, 0x3d, 0x68, + 0x11, 0x8e, 0x1f, 0xd4, 0xda, 0xc4, 0x21, 0x3e, 0xe6, 0xc4, 0xd2, 0x3d, 0xdf, 0xe5, 0x2e, 0x2c, + 0x85, 0xb2, 0x3a, 0xf6, 0xa8, 0xae, 0x64, 0x75, 0x25, 0x5b, 0xfa, 0x71, 0x9b, 0xf2, 0x93, 0xa0, + 0xa5, 0x9b, 0xae, 0x5d, 0x6b, 0xbb, 0x6d, 0xb7, 0x26, 0x55, 0x5a, 0xc1, 0xb1, 0x3c, 0xc9, 0x83, + 0xfc, 0x15, 0x42, 0x95, 0xaa, 0x31, 0xb3, 0xa6, 0xeb, 0x0b, 0x9b, 0x69, 0x73, 0xa5, 0x87, 0x91, + 0x8c, 0x8d, 0xcd, 0x13, 0xea, 0x10, 0xbf, 0x5b, 0xf3, 0x4e, 0xdb, 0x52, 0xc9, 0x27, 0xcc, 0x0d, + 0x7c, 0x93, 0x5c, 0x4b, 0x8b, 0xd5, 0x6c, 0xc2, 0xf1, 0x28, 0x5b, 0xb5, 0x71, 0x5a, 0x7e, 0xe0, + 0x70, 0x6a, 0x67, 0xcd, 0x3c, 0xba, 0x4c, 0x81, 0x99, 0x27, 0xc4, 0xc6, 0x69, 0xbd, 0xea, 0xdf, + 0x35, 0xb0, 0xb0, 0xd3, 0xac, 0xef, 0xfa, 0xf4, 0x8c, 0xf8, 0xf0, 0x57, 0x60, 0x5e, 0x78, 0x64, + 0x61, 0x8e, 0x8b, 0xda, 0x86, 0xb6, 0x59, 0xd8, 0xba, 0xaf, 0x47, 0x8f, 0x3c, 0x04, 0xd6, 0xbd, + 0xd3, 0xb6, 0x20, 0x30, 0x5d, 0x48, 0xeb, 0x67, 0x0f, 0xf4, 0x97, 0xad, 0x77, 0xc4, 0xe4, 0x0d, + 0xc2, 0xb1, 0x01, 0x3f, 0xf4, 0x2a, 0x53, 0xfd, 0x5e, 0x05, 0x44, 0x34, 0x34, 0x44, 0x85, 0x2f, + 0x40, 0x9e, 0x79, 0xc4, 0x2c, 0x4e, 0x4b, 0xf4, 0x3b, 0xfa, 0xf8, 0x10, 0xea, 0x43, 0xb7, 0x9a, + 0x1e, 0x31, 0x8d, 0x45, 0x05, 0x9b, 0x17, 0x27, 0x24, 0x41, 0xaa, 0x7f, 0xd3, 0xc0, 0xd2, 0x50, + 0x6a, 0x9f, 0x32, 0x0e, 0x7f, 0x99, 0xb9, 0x80, 0x7e, 0xb5, 0x0b, 0x08, 0x6d, 0xe9, 0xfe, 0x8a, + 0xb2, 0x33, 0x3f, 0xa0, 0xc4, 0x9c, 0x7f, 0x0e, 0x66, 0x28, 0x27, 0x36, 0x2b, 0x4e, 0x6f, 0xe4, + 0x36, 0x0b, 0x5b, 0x3f, 0xbc, 0x92, 0xf7, 0xc6, 0x92, 0x42, 0x9c, 0xa9, 0x0b, 0x5d, 0x14, 0x42, + 0x54, 0xff, 0x9b, 0x8f, 0xf9, 0x2e, 0xee, 0x04, 0x9f, 0x80, 0x1b, 0x98, 0x73, 0x6c, 0x9e, 0x20, + 0xf2, 0x3e, 0xa0, 0x3e, 0xb1, 0xe4, 0x0d, 0xe6, 0x0d, 0xd8, 0xef, 0x55, 0x6e, 0x6c, 0x27, 0x38, + 0x28, 0x25, 0x29, 0x74, 0x3d, 0xd7, 0xaa, 0x3b, 0xc7, 0xee, 0x4b, 0xa7, 0xe1, 0x06, 0x0e, 0x97, + 0x0f, 0xac, 0x74, 0x0f, 0x13, 0x1c, 0x94, 0x92, 0x84, 0x26, 0x58, 0x3f, 0x73, 0x3b, 0x81, 0x4d, + 0xf6, 0xe9, 0x31, 0x31, 0xbb, 0x66, 0x87, 0x34, 0x5c, 0x8b, 0xb0, 0x62, 0x6e, 0x23, 0xb7, 0xb9, + 0x60, 0xd4, 0xfa, 0xbd, 0xca, 0xfa, 0xeb, 0x11, 0xfc, 0x8b, 0x5e, 0x65, 0x6d, 0x04, 0x1d, 0x8d, + 0x04, 0x83, 0x4f, 0xc1, 0xb2, 0x7a, 0xa1, 0x1d, 0xec, 0x61, 0x93, 0xf2, 0x6e, 0x31, 0x2f, 0x3d, + 0x5c, 0xeb, 0xf7, 0x2a, 0xcb, 0xcd, 0x24, 0x0b, 0xa5, 0x65, 0xe1, 0x33, 0xb0, 0x74, 0xcc, 0x7e, + 0xe1, 0xbb, 0x81, 0x77, 0xe8, 0x76, 0xa8, 0xd9, 0x2d, 0xce, 0x6c, 0x68, 0x9b, 0x0b, 0x46, 0xb5, + 0xdf, 0xab, 0x2c, 0xfd, 0xbc, 0x19, 0x63, 0x5c, 0xa4, 0x09, 0x28, 0xa9, 0x08, 0x09, 0x58, 0xe2, + 0xee, 0x29, 0x71, 0xc4, 0xd3, 0x11, 0xc6, 0x59, 0x71, 0x56, 0xc6, 0x72, 0xf3, 0x4b, 0xb1, 0x3c, + 0x8a, 0x29, 0x18, 0x37, 0x55, 0x38, 0x97, 0xe2, 0x54, 0x86, 0x92, 0xa8, 0x70, 0x07, 0xac, 0xfa, + 0x61, 0x70, 0x18, 0x22, 0x5e, 0xd0, 0xea, 0x50, 0x76, 0x52, 0x9c, 0x93, 0x37, 0xbe, 0xd9, 0xef, + 0x55, 0x56, 0x51, 0x9a, 0x89, 0xb2, 0xf2, 0xf0, 0x21, 0x58, 0x64, 0x64, 0x9f, 0x3a, 0xc1, 0x79, + 0x18, 0xd3, 0x79, 0xa9, 0xbf, 0xd2, 0xef, 0x55, 0x16, 0x9b, 0x7b, 0x11, 0x1d, 0x25, 0xa4, 0xaa, + 0x7f, 0xd5, 0xc0, 0xdc, 0x4e, 0xb3, 0x7e, 0xe0, 0x5a, 0x64, 0x02, 0x05, 0x5d, 0x4f, 0x14, 0xf4, + 0xed, 0x4b, 0x4a, 0x42, 0x38, 0x35, 0xb6, 0x9c, 0xbf, 0x0a, 0xcb, 0x59, 0xc8, 0xa8, 0x7e, 0xb4, + 0x01, 0xf2, 0x0e, 0xb6, 0x89, 0x74, 0x7d, 0x21, 0xd2, 0x39, 0xc0, 0x36, 0x41, 0x92, 0x03, 0x7f, + 0x04, 0x66, 0x1d, 0xd7, 0x22, 0xf5, 0x5d, 0xe9, 0xc0, 0x82, 0x71, 0x43, 0xc9, 0xcc, 0x1e, 0x48, + 0x2a, 0x52, 0x5c, 0xf1, 0x94, 0xdc, 0xf5, 0xdc, 0x8e, 0xdb, 0xee, 0xbe, 0x20, 0xdd, 0x41, 0x72, + 0xcb, 0xa7, 0x3c, 0x8a, 0xd1, 0x51, 0x42, 0x0a, 0xb6, 0x40, 0x01, 0x77, 0x3a, 0xae, 0x89, 0x39, + 0x6e, 0x75, 0x88, 0xcc, 0xd8, 0xc2, 0x56, 0xed, 0x4b, 0x77, 0x0c, 0x2b, 0x42, 0x18, 0x47, 0x6a, + 0x22, 0x30, 0x63, 0xb9, 0xdf, 0xab, 0x14, 0xb6, 0x23, 0x1c, 0x14, 0x07, 0xad, 0xfe, 0x45, 0x03, + 0x05, 0x75, 0xeb, 0x09, 0xb4, 0xb0, 0x67, 0xc9, 0x16, 0xf6, 0x83, 0x2b, 0xc4, 0x6b, 0x4c, 0x03, + 0x33, 0x87, 0x6e, 0xcb, 0xee, 0x75, 0x04, 0xe6, 0x2c, 0x19, 0x34, 0x56, 0xd4, 0x24, 0xf4, 0x9d, + 0x2b, 0x40, 0xab, 0x0e, 0xb9, 0xac, 0x0c, 0xcc, 0x85, 0x67, 0x86, 0x06, 0x50, 0xd5, 0xaf, 0x73, + 0x00, 0xee, 0x34, 0xeb, 0xa9, 0xfe, 0x30, 0x81, 0xb4, 0xa6, 0x60, 0x51, 0x64, 0xce, 0x20, 0x37, + 0x54, 0x7a, 0xff, 0xe4, 0x8a, 0x91, 0xc0, 0x2d, 0xd2, 0x69, 0x92, 0x0e, 0x31, 0xb9, 0xeb, 0x87, + 0x49, 0x76, 0x10, 0x03, 0x43, 0x09, 0x68, 0xb8, 0x0b, 0x56, 0x06, 0xed, 0xae, 0x83, 0x19, 0x13, + 0xc9, 0x5d, 0xcc, 0xc9, 0x64, 0x2e, 0x2a, 0x17, 0x57, 0x9a, 0x29, 0x3e, 0xca, 0x68, 0xc0, 0x37, + 0x60, 0xde, 0x8c, 0x77, 0xd6, 0x4b, 0xd2, 0x46, 0x1f, 0x2c, 0x2c, 0xfa, 0xab, 0x00, 0x3b, 0x9c, + 0xf2, 0xae, 0xb1, 0x28, 0x52, 0x66, 0xd8, 0x82, 0x87, 0x68, 0x90, 0x81, 0x55, 0x1b, 0x9f, 0x53, + 0x3b, 0xb0, 0xc3, 0xe4, 0x6e, 0xd2, 0xdf, 0x10, 0xd9, 0x7f, 0xaf, 0x6f, 0x42, 0xb6, 0xbe, 0x46, + 0x1a, 0x0c, 0x65, 0xf1, 0xab, 0xff, 0xd2, 0xc0, 0xad, 0x6c, 0xe0, 0x27, 0x50, 0x20, 0xcd, 0x64, + 0x81, 0xe8, 0x97, 0x64, 0x71, 0xca, 0xc1, 0x31, 0xb5, 0xf2, 0xc7, 0x59, 0xb0, 0x18, 0x8f, 0xe1, + 0x04, 0x12, 0xf8, 0xa7, 0xa0, 0xe0, 0xf9, 0xee, 0x19, 0x65, 0xd4, 0x75, 0x88, 0xaf, 0xba, 0xe3, + 0x9a, 0x52, 0x29, 0x1c, 0x46, 0x2c, 0x14, 0x97, 0x83, 0x1d, 0x00, 0x3c, 0xec, 0x63, 0x9b, 0x70, + 0x51, 0xc9, 0x39, 0xf9, 0x06, 0x8f, 0xbf, 0xf4, 0x06, 0xf1, 0x6b, 0xe9, 0x87, 0x43, 0xd5, 0x3d, + 0x87, 0xfb, 0xdd, 0xc8, 0xc5, 0x88, 0x81, 0x62, 0xf8, 0xf0, 0x14, 0x2c, 0xf9, 0xc4, 0xec, 0x60, + 0x6a, 0xab, 0xb1, 0x9e, 0x97, 0x6e, 0xee, 0x89, 0xf1, 0x8a, 0xe2, 0x8c, 0x8b, 0x5e, 0xe5, 0x7e, + 0x76, 0x45, 0xd7, 0x0f, 0x89, 0xcf, 0x28, 0xe3, 0xc4, 0xe1, 0x61, 0xea, 0x24, 0x74, 0x50, 0x12, + 0x5b, 0x8c, 0x00, 0x5b, 0x0c, 0xc8, 0x97, 0x1e, 0xa7, 0xae, 0xc3, 0x8a, 0x33, 0xd1, 0x08, 0x68, + 0xc4, 0xe8, 0x28, 0x21, 0x05, 0xf7, 0xc1, 0xba, 0xe8, 0xd6, 0xbf, 0x0e, 0x0d, 0xec, 0x9d, 0x7b, + 0xd8, 0x11, 0x4f, 0x55, 0x9c, 0x95, 0xb3, 0xb8, 0x28, 0xb6, 0xa3, 0xed, 0x11, 0x7c, 0x34, 0x52, + 0x0b, 0xbe, 0x01, 0xab, 0xe1, 0x7a, 0x64, 0x50, 0xc7, 0xa2, 0x4e, 0x5b, 0x2c, 0x47, 0x72, 0x2d, + 0x58, 0x30, 0xee, 0x8a, 0xda, 0x78, 0x9d, 0x66, 0x5e, 0x8c, 0x22, 0xa2, 0x2c, 0x08, 0x7c, 0x0f, + 0x56, 0xa5, 0x45, 0x62, 0xa9, 0xc6, 0x42, 0x09, 0x2b, 0xce, 0x67, 0x77, 0x1b, 0xf1, 0x74, 0x22, + 0x91, 0x06, 0xed, 0x67, 0xd0, 0xa6, 0x8e, 0x88, 0x6f, 0x1b, 0xdf, 0x57, 0xf1, 0x5a, 0xdd, 0x4e, + 0x43, 0xa1, 0x2c, 0x7a, 0xe9, 0x29, 0x58, 0x4e, 0x05, 0x1c, 0xae, 0x80, 0xdc, 0x29, 0xe9, 0x86, + 0xf3, 0x1a, 0x89, 0x9f, 0x70, 0x1d, 0xcc, 0x9c, 0xe1, 0x4e, 0x40, 0xc2, 0x0c, 0x44, 0xe1, 0xe1, + 0xc9, 0xf4, 0x63, 0xad, 0xfa, 0x0f, 0x0d, 0x24, 0x1a, 0xdb, 0x04, 0x8a, 0xbb, 0x91, 0x2c, 0xee, + 0xcd, 0xab, 0x26, 0xf6, 0x98, 0xb2, 0xfe, 0x9d, 0x06, 0x16, 0xe3, 0x5b, 0x20, 0xbc, 0x07, 0xe6, + 0x71, 0x60, 0x51, 0xe2, 0x98, 0x83, 0x9d, 0x65, 0xe8, 0xcd, 0xb6, 0xa2, 0xa3, 0xa1, 0x84, 0xd8, + 0x11, 0xc9, 0xb9, 0x47, 0x7d, 0x2c, 0x32, 0xad, 0x49, 0x4c, 0xd7, 0xb1, 0x98, 0x7c, 0xa6, 0x5c, + 0xd8, 0x28, 0xf7, 0xd2, 0x4c, 0x94, 0x95, 0xaf, 0xfe, 0x79, 0x1a, 0xac, 0x84, 0x09, 0x12, 0x7e, + 0x22, 0xd8, 0xc4, 0xe1, 0x13, 0x68, 0x2f, 0x28, 0xb1, 0xf6, 0xdd, 0xbf, 0x7c, 0x25, 0x8a, 0xbc, + 0x1b, 0xb7, 0xff, 0xc1, 0xb7, 0x60, 0x96, 0x71, 0xcc, 0x03, 0x26, 0xc7, 0x5f, 0x61, 0x6b, 0xeb, + 0x5a, 0xa8, 0x52, 0x33, 0xda, 0xff, 0xc2, 0x33, 0x52, 0x88, 0xd5, 0x7f, 0x6a, 0x60, 0x3d, 0xad, + 0x32, 0x81, 0x84, 0x7b, 0x95, 0x4c, 0xb8, 0x7b, 0xd7, 0xb9, 0xd1, 0x98, 0xa4, 0xfb, 0x8f, 0x06, + 0x6e, 0x65, 0x2e, 0x2f, 0xe7, 0xac, 0xe8, 0x55, 0x5e, 0xaa, 0x23, 0x1e, 0x44, 0xeb, 0xb3, 0xec, + 0x55, 0x87, 0x23, 0xf8, 0x68, 0xa4, 0x16, 0x7c, 0x07, 0x56, 0xa8, 0xd3, 0xa1, 0x0e, 0x51, 0x63, + 0x39, 0x0a, 0xf7, 0xc8, 0x86, 0x92, 0x46, 0x96, 0x61, 0x5e, 0x17, 0xdb, 0x4b, 0x3d, 0x85, 0x82, + 0x32, 0xb8, 0xd5, 0x7f, 0x8f, 0x08, 0x8f, 0x5c, 0x2b, 0x45, 0x45, 0x49, 0x0a, 0xf1, 0x33, 0x15, + 0xa5, 0xe8, 0x68, 0x28, 0x21, 0x33, 0x48, 0x3e, 0x85, 0x72, 0xf4, 0x7a, 0x19, 0x24, 0x35, 0x63, + 0x19, 0x24, 0xcf, 0x48, 0x21, 0x0a, 0x4f, 0xc4, 0xda, 0x16, 0x5b, 0xcf, 0x86, 0x9e, 0x1c, 0x28, + 0x3a, 0x1a, 0x4a, 0x54, 0xbf, 0xc9, 0x8d, 0x88, 0x92, 0x4c, 0xc5, 0xd8, 0x95, 0x06, 0x5f, 0xf8, + 0xe9, 0x2b, 0x59, 0xc3, 0x2b, 0x59, 0xf0, 0x4f, 0x1a, 0x80, 0x78, 0x08, 0xd1, 0x18, 0xa4, 0x6a, + 0x98, 0x4f, 0xcf, 0xaf, 0x5f, 0x21, 0xfa, 0x76, 0x06, 0x2c, 0x9c, 0xd5, 0x25, 0xe5, 0x04, 0xcc, + 0x0a, 0xa0, 0x11, 0x1e, 0x40, 0x0a, 0x0a, 0x21, 0x75, 0xcf, 0xf7, 0x5d, 0x5f, 0x95, 0xec, 0xed, + 0xcb, 0x1d, 0x92, 0xe2, 0x46, 0x59, 0x7e, 0x13, 0x45, 0xfa, 0x17, 0xbd, 0x4a, 0x21, 0xc6, 0x47, + 0x71, 0x6c, 0x61, 0xca, 0x22, 0x91, 0xa9, 0xfc, 0x77, 0x30, 0xb5, 0x4b, 0xc6, 0x9b, 0x8a, 0x61, + 0x97, 0xf6, 0xc0, 0xf7, 0xc6, 0x3c, 0xd0, 0xb5, 0x66, 0xdb, 0xef, 0x35, 0x10, 0xb7, 0x01, 0xf7, + 0x41, 0x9e, 0x53, 0x55, 0x89, 0x85, 0xad, 0xbb, 0x57, 0xeb, 0x30, 0x47, 0xd4, 0x26, 0x51, 0xa3, + 0x14, 0x27, 0x24, 0x51, 0xe0, 0x1d, 0x30, 0x67, 0x13, 0xc6, 0x70, 0x5b, 0x59, 0x8e, 0x3e, 0xa0, + 0x1a, 0x21, 0x19, 0x0d, 0xf8, 0xd5, 0x47, 0x60, 0x6d, 0xc4, 0x27, 0x29, 0xac, 0x80, 0x19, 0x53, + 0xfe, 0xa5, 0x20, 0x1c, 0x9a, 0x31, 0x16, 0x44, 0x97, 0xd9, 0x91, 0xff, 0x25, 0x84, 0x74, 0xe3, + 0x67, 0x1f, 0x3e, 0x97, 0xa7, 0x3e, 0x7e, 0x2e, 0x4f, 0x7d, 0xfa, 0x5c, 0x9e, 0xfa, 0x6d, 0xbf, + 0xac, 0x7d, 0xe8, 0x97, 0xb5, 0x8f, 0xfd, 0xb2, 0xf6, 0xa9, 0x5f, 0xd6, 0xfe, 0xd7, 0x2f, 0x6b, + 0x7f, 0xf8, 0x7f, 0x79, 0xea, 0x6d, 0x69, 0xfc, 0xbf, 0xb5, 0xdf, 0x06, 0x00, 0x00, 0xff, 0xff, + 0xee, 0x44, 0x0b, 0xed, 0xe3, 0x15, 0x00, 0x00, } func (m *CSIDriver) Marshal() (dAtA []byte, err error) { @@ -826,6 +827,16 @@ func (m *CSIDriverSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.SELinuxMount != nil { + i-- + if *m.SELinuxMount { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } if m.RequiresRepublish != nil { i-- if *m.RequiresRepublish { @@ -1795,6 +1806,9 @@ func (m *CSIDriverSpec) Size() (n int) { if m.RequiresRepublish != nil { n += 2 } + if m.SELinuxMount != nil { + n += 2 + } return n } @@ -2148,6 +2162,7 @@ func (this *CSIDriverSpec) String() string { `FSGroupPolicy:` + valueToStringGenerated(this.FSGroupPolicy) + `,`, `TokenRequests:` + repeatedStringForTokenRequests + `,`, `RequiresRepublish:` + valueToStringGenerated(this.RequiresRepublish) + `,`, + `SELinuxMount:` + valueToStringGenerated(this.SELinuxMount) + `,`, `}`, }, "") return s @@ -2844,6 +2859,27 @@ func (m *CSIDriverSpec) Unmarshal(dAtA []byte) error { } b := bool(v != 0) m.RequiresRepublish = &b + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field SELinuxMount", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + b := bool(v != 0) + m.SELinuxMount = &b default: iNdEx = preIndex skippy, err := skipGenerated(dAtA[iNdEx:]) diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.proto b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.proto index 943900fa690..bedbd318389 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/generated.proto @@ -192,6 +192,27 @@ message CSIDriverSpec { // // +optional optional bool requiresRepublish = 7; + + // SELinuxMount specifies if the CSI driver supports "-o context" + // mount option. + // + // When "true", the CSI driver must ensure that all volumes provided by this CSI + // driver can be mounted separately with different `-o context` options. This is + // typical for storage backends that provide volumes as filesystems on block + // devices or as independent shared volumes. + // Kubernetes will call NodeStage / NodePublish with "-o context=xyz" mount + // option when mounting a ReadWriteOncePod volume used in Pod that has + // explicitly set SELinux context. In the future, it may be expanded to other + // volume AccessModes. In any case, Kubernetes will ensure that the volume is + // mounted only with a single SELinux context. + // + // When "false", Kubernetes won't pass any special SELinux mount options to the driver. + // This is typical for volumes that represent subdirectories of a bigger shared filesystem. + // + // Default is "false". + // + // +optional + optional bool seLinuxMount = 8; } // DEPRECATED - This group version of CSINode is deprecated by storage/v1/CSINode. diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types.go index b39414b9605..f4d09b641a9 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types.go @@ -410,6 +410,27 @@ type CSIDriverSpec struct { // // +optional RequiresRepublish *bool `json:"requiresRepublish,omitempty" protobuf:"varint,7,opt,name=requiresRepublish"` + + // SELinuxMount specifies if the CSI driver supports "-o context" + // mount option. + // + // When "true", the CSI driver must ensure that all volumes provided by this CSI + // driver can be mounted separately with different `-o context` options. This is + // typical for storage backends that provide volumes as filesystems on block + // devices or as independent shared volumes. + // Kubernetes will call NodeStage / NodePublish with "-o context=xyz" mount + // option when mounting a ReadWriteOncePod volume used in Pod that has + // explicitly set SELinux context. In the future, it may be expanded to other + // volume AccessModes. In any case, Kubernetes will ensure that the volume is + // mounted only with a single SELinux context. + // + // When "false", Kubernetes won't pass any special SELinux mount options to the driver. + // This is typical for volumes that represent subdirectories of a bigger shared filesystem. + // + // Default is "false". + // + // +optional + SELinuxMount *bool `json:"seLinuxMount,omitempty" protobuf:"varint,8,opt,name=seLinuxMount"` } // FSGroupPolicy specifies if a CSI Driver supports modifying diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go index d810b4e4c8b..ea3c1e4c282 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/types_swagger_doc_generated.go @@ -56,6 +56,7 @@ var map_CSIDriverSpec = map[string]string{ "fsGroupPolicy": "Defines if the underlying volume supports changing ownership and permission of the volume before being mounted. Refer to the specific FSGroupPolicy values for additional details.\n\nThis field is immutable.\n\nDefaults to ReadWriteOnceWithFSType, which will examine each volume to determine if Kubernetes should modify ownership and permissions of the volume. With the default policy the defined fsGroup will only be applied if a fstype is defined and the volume's access mode contains ReadWriteOnce.", "tokenRequests": "TokenRequests indicates the CSI driver needs pods' service account tokens it is mounting volume for to do necessary authentication. Kubelet will pass the tokens in VolumeContext in the CSI NodePublishVolume calls. The CSI driver should parse and validate the following VolumeContext: \"csi.storage.k8s.io/serviceAccount.tokens\": {\n \"\": {\n \"token\": ,\n \"expirationTimestamp\": ,\n },\n ...\n}\n\nNote: Audience in each TokenRequest should be different and at most one token is empty string. To receive a new token after expiry, RequiresRepublish can be used to trigger NodePublishVolume periodically.", "requiresRepublish": "RequiresRepublish indicates the CSI driver wants `NodePublishVolume` being periodically called to reflect any possible change in the mounted volume. This field defaults to false.\n\nNote: After a successful initial NodePublishVolume call, subsequent calls to NodePublishVolume should only update the contents of the volume. New mount points will not be seen by a running container.", + "seLinuxMount": "SELinuxMount specifies if the CSI driver supports \"-o context\" mount option.\n\nWhen \"true\", the CSI driver must ensure that all volumes provided by this CSI driver can be mounted separately with different `-o context` options. This is typical for storage backends that provide volumes as filesystems on block devices or as independent shared volumes. Kubernetes will call NodeStage / NodePublish with \"-o context=xyz\" mount option when mounting a ReadWriteOncePod volume used in Pod that has explicitly set SELinux context. In the future, it may be expanded to other volume AccessModes. In any case, Kubernetes will ensure that the volume is mounted only with a single SELinux context.\n\nWhen \"false\", Kubernetes won't pass any special SELinux mount options to the driver. This is typical for volumes that represent subdirectories of a bigger shared filesystem.\n\nDefault is \"false\".", } func (CSIDriverSpec) SwaggerDoc() map[string]string { diff --git a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go index 5411ed8c00e..f0450182b27 100644 --- a/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/api/storage/v1beta1/zz_generated.deepcopy.go @@ -127,6 +127,11 @@ func (in *CSIDriverSpec) DeepCopyInto(out *CSIDriverSpec) { *out = new(bool) **out = **in } + if in.SELinuxMount != nil { + in, out := &in.SELinuxMount, &out.SELinuxMount + *out = new(bool) + **out = **in + } return } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go index fab187a6a09..57e0e71f672 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/errors/errors.go @@ -87,21 +87,21 @@ func (e *StatusError) DebugError() (string, []interface{}) { // HasStatusCause returns true if the provided error has a details cause // with the provided type name. +// It supports wrapped errors and returns false when the error is nil. func HasStatusCause(err error, name metav1.CauseType) bool { _, ok := StatusCause(err, name) return ok } // StatusCause returns the named cause from the provided error if it exists and -// the error is of the type APIStatus. Otherwise it returns false. +// the error unwraps to the type APIStatus. Otherwise it returns false. func StatusCause(err error, name metav1.CauseType) (metav1.StatusCause, bool) { - apierr, ok := err.(APIStatus) - if !ok || apierr == nil || apierr.Status().Details == nil { - return metav1.StatusCause{}, false - } - for _, cause := range apierr.Status().Details.Causes { - if cause.Type == name { - return cause, true + status, ok := err.(APIStatus) + if (ok || errors.As(err, &status)) && status.Status().Details != nil { + for _, cause := range status.Status().Details.Causes { + if cause.Type == name { + return cause, true + } } } return metav1.StatusCause{}, false @@ -757,7 +757,8 @@ func IsRequestEntityTooLargeError(err error) bool { // and may be the result of another HTTP actor. // It supports wrapped errors and returns false when the error is nil. func IsUnexpectedServerError(err error) bool { - if status := APIStatus(nil); errors.As(err, &status) && status.Status().Details != nil { + status, ok := err.(APIStatus) + if (ok || errors.As(err, &status)) && status.Status().Details != nil { for _, cause := range status.Status().Details.Causes { if cause.Type == metav1.CauseTypeUnexpectedServerResponse { return true @@ -770,8 +771,8 @@ func IsUnexpectedServerError(err error) bool { // IsUnexpectedObjectError determines if err is due to an unexpected object from the master. // It supports wrapped errors and returns false when the error is nil. func IsUnexpectedObjectError(err error) bool { - uoe := &UnexpectedObjectError{} - return err != nil && errors.As(err, &uoe) + uoe, ok := err.(*UnexpectedObjectError) + return err != nil && (ok || errors.As(err, &uoe)) } // SuggestsClientDelay returns true if this error suggests a client delay as well as the @@ -780,7 +781,8 @@ func IsUnexpectedObjectError(err error) bool { // request delay without retry. // It supports wrapped errors and returns false when the error is nil. func SuggestsClientDelay(err error) (int, bool) { - if t := APIStatus(nil); errors.As(err, &t) && t.Status().Details != nil { + t, ok := err.(APIStatus) + if (ok || errors.As(err, &t)) && t.Status().Details != nil { switch t.Status().Reason { // this StatusReason explicitly requests the caller to delay the action case metav1.StatusReasonServerTimeout: @@ -798,14 +800,14 @@ func SuggestsClientDelay(err error) (int, bool) { // It supports wrapped errors and returns StatusReasonUnknown when // the error is nil or doesn't have a status. func ReasonForError(err error) metav1.StatusReason { - if status := APIStatus(nil); errors.As(err, &status) { + if status, ok := err.(APIStatus); ok || errors.As(err, &status) { return status.Status().Reason } return metav1.StatusReasonUnknown } func reasonAndCodeForError(err error) (metav1.StatusReason, int32) { - if status := APIStatus(nil); errors.As(err, &status) { + if status, ok := err.(APIStatus); ok || errors.As(err, &status) { return status.Status().Reason, status.Status().Code } return metav1.StatusReasonUnknown, 0 diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go index 00874f89cc6..60c8209de02 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/conditions.go @@ -24,9 +24,9 @@ import ( // SetStatusCondition sets the corresponding condition in conditions to newCondition. // conditions must be non-nil. -// 1. if the condition of the specified type already exists (all fields of the existing condition are updated to -// newCondition, LastTransitionTime is set to now if the new status differs from the old status) -// 2. if a condition of the specified type does not exist (LastTransitionTime is set to now() if unset, and newCondition is appended) +// 1. if the condition of the specified type already exists (all fields of the existing condition are updated to +// newCondition, LastTransitionTime is set to now if the new status differs from the old status) +// 2. if a condition of the specified type does not exist (LastTransitionTime is set to now() if unset, and newCondition is appended) func SetStatusCondition(conditions *[]metav1.Condition, newCondition metav1.Condition) { if conditions == nil { return diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/help.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/help.go index dcee8f5e948..899d3e8a667 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/help.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/meta/help.go @@ -40,7 +40,8 @@ var ( // IsListType returns true if the provided Object has a slice called Items. // TODO: Replace the code in this check with an interface comparison by -// creating and enforcing that lists implement a list accessor. +// +// creating and enforcing that lists implement a list accessor. func IsListType(obj runtime.Object) bool { switch t := obj.(type) { case runtime.Unstructured: diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto index aa9d7d95e76..ddd0db8fbd1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/generated.proto @@ -32,7 +32,9 @@ option go_package = "k8s.io/apimachinery/pkg/api/resource"; // // ``` // ::= -// (Note that may be empty, from the "" case in .) +// +// (Note that may be empty, from the "" case in .) +// // ::= 0 | 1 | ... | 9 // ::= | // ::= | . | . | . @@ -40,9 +42,13 @@ option go_package = "k8s.io/apimachinery/pkg/api/resource"; // ::= | // ::= | | // ::= Ki | Mi | Gi | Ti | Pi | Ei -// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// +// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// // ::= m | "" | k | M | G | T | P | E -// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// +// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// // ::= "e" | "E" // ``` // diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go index 158b6a6429d..b47d554b3c5 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/quantity.go @@ -36,7 +36,9 @@ import ( // // ``` // ::= -// (Note that may be empty, from the "" case in .) +// +// (Note that may be empty, from the "" case in .) +// // ::= 0 | 1 | ... | 9 // ::= | // ::= | . | . | . @@ -44,9 +46,13 @@ import ( // ::= | // ::= | | // ::= Ki | Mi | Gi | Ti | Pi | Ei -// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// +// (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) +// // ::= m | "" | k | M | G | T | P | E -// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// +// (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.) +// // ::= "e" | "E" // ``` // @@ -409,10 +415,10 @@ func (Quantity) OpenAPIV3OneOfTypes() []string { return []string{"string", "numb // CanonicalizeBytes returns the canonical form of q and its suffix (see comment on Quantity). // // Note about BinarySI: -// * If q.Format is set to BinarySI and q.Amount represents a non-zero value between -// -1 and +1, it will be emitted as if q.Format were DecimalSI. -// * Otherwise, if q.Format is set to BinarySI, fractional parts of q.Amount will be -// rounded up. (1.1i becomes 2i.) +// - If q.Format is set to BinarySI and q.Amount represents a non-zero value between +// -1 and +1, it will be emitted as if q.Format were DecimalSI. +// - Otherwise, if q.Format is set to BinarySI, fractional parts of q.Amount will be +// rounded up. (1.1i becomes 2i.) func (q *Quantity) CanonicalizeBytes(out []byte) (result, suffix []byte) { if q.IsZero() { return zeroBytes, nil @@ -648,7 +654,7 @@ func (q Quantity) MarshalJSON() ([]byte, error) { copy(out[1:], q.s) return out, nil } - result := make([]byte, int64QuantityExpectedBytes, int64QuantityExpectedBytes) + result := make([]byte, int64QuantityExpectedBytes) result[0] = '"' number, suffix := q.CanonicalizeBytes(result[1:1]) // if the same slice was returned to us that we passed in, avoid another allocation by copying number into diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go index 5ed7abe6651..6ec527f9c00 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/api/resource/suffix.go @@ -165,7 +165,7 @@ func (sh *suffixHandler) constructBytes(base, exponent int32, format Format) (s if exponent == 0 { return nil, true } - result := make([]byte, 8, 8) + result := make([]byte, 8) result[0] = 'e' number := strconv.AppendInt(result[1:1], int64(exponent), 10) if &result[1] == &number[0] { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto index b1d314fb958..2be188a6a8e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto @@ -162,17 +162,18 @@ message ApplyOptions { // Condition contains details for one aspect of the current state of this API Resource. // --- // This struct is intended for direct use as an array at the field path .status.conditions. For example, -// type FooStatus struct{ -// // Represents the observations of a foo's current state. -// // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" -// // +patchMergeKey=type -// // +patchStrategy=merge -// // +listType=map -// // +listMapKey=type -// Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` // -// // other fields -// } +// type FooStatus struct{ +// // Represents the observations of a foo's current state. +// // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" +// // +patchMergeKey=type +// // +patchStrategy=merge +// // +listType=map +// // +listMapKey=type +// Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` +// +// // other fields +// } message Condition { // type of condition in CamelCase or in foo.example.com/CamelCase. // --- diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go index 5b1ba1a883b..152f99296ca 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/apis/meta/v1/types.go @@ -17,10 +17,11 @@ limitations under the License. // Package v1 contains API types that are common to all versions. // // The package contains two categories of types: -// - external (serialized) types that lack their own version (e.g TypeMeta) -// - internal (never-serialized) types that are needed by several different -// api groups, and so live here, to avoid duplication and/or import loops -// (e.g. LabelSelector). +// - external (serialized) types that lack their own version (e.g TypeMeta) +// - internal (never-serialized) types that are needed by several different +// api groups, and so live here, to avoid duplication and/or import loops +// (e.g. LabelSelector). +// // In the future, we will probably move these categories of objects into // separate packages. package v1 @@ -1448,17 +1449,18 @@ type PartialObjectMetadataList struct { // Condition contains details for one aspect of the current state of this API Resource. // --- // This struct is intended for direct use as an array at the field path .status.conditions. For example, -// type FooStatus struct{ -// // Represents the observations of a foo's current state. -// // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" -// // +patchMergeKey=type -// // +patchStrategy=merge -// // +listType=map -// // +listMapKey=type -// Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` // -// // other fields -// } +// type FooStatus struct{ +// // Represents the observations of a foo's current state. +// // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" +// // +patchMergeKey=type +// // +patchStrategy=merge +// // +listType=map +// // +listMapKey=type +// Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"` +// +// // other fields +// } type Condition struct { // type of condition in CamelCase or in foo.example.com/CamelCase. // --- diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go index f21abe1e53a..25b2923f223 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/conversion/deep_equal.go @@ -34,3 +34,14 @@ func EqualitiesOrDie(funcs ...interface{}) Equalities { } return e } + +// Performs a shallow copy of the equalities map +func (e Equalities) Copy() Equalities { + result := Equalities{reflect.Equalities{}} + + for key, value := range e.Equalities { + result.Equalities[key] = value + } + + return result +} diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/selector.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/selector.go index 2434429b9f8..6d6f562ad13 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/selector.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/labels/selector.go @@ -149,7 +149,8 @@ type Requirement struct { // (4) If the operator is Exists or DoesNotExist, the value set must be empty. // (5) If the operator is Gt or Lt, the values set must contain only one value, which will be interpreted as an integer. // (6) The key is invalid due to its length, or sequence -// of characters. See validateLabelKey for more details. +// +// of characters. See validateLabelKey for more details. // // The empty string is a valid value in the input values set. // Returned error, if not nil, is guaranteed to be an aggregated field.ErrorList @@ -208,13 +209,20 @@ func (r *Requirement) hasValue(value string) bool { // There is a match in the following cases: // (1) The operator is Exists and Labels has the Requirement's key. // (2) The operator is In, Labels has the Requirement's key and Labels' -// value for that key is in Requirement's value set. +// +// value for that key is in Requirement's value set. +// // (3) The operator is NotIn, Labels has the Requirement's key and -// Labels' value for that key is not in Requirement's value set. +// +// Labels' value for that key is not in Requirement's value set. +// // (4) The operator is DoesNotExist or NotIn and Labels does not have the -// Requirement's key. +// +// Requirement's key. +// // (5) The operator is GreaterThanOperator or LessThanOperator, and Labels has -// the Requirement's key and the corresponding value satisfies mathematical inequality. +// +// the Requirement's key and the corresponding value satisfies mathematical inequality. func (r *Requirement) Matches(ls Labels) bool { switch r.operator { case selection.In, selection.Equals, selection.DoubleEquals: @@ -840,32 +848,33 @@ func (p *Parser) parseExactValue() (sets.String, error) { // as they parse different selectors with different syntaxes. // The input will cause an error if it does not follow this form: // -// ::= | "," -// ::= [!] KEY [ | ] -// ::= "" | -// ::= | -// ::= "notin" -// ::= "in" -// ::= "(" ")" -// ::= VALUE | VALUE "," -// ::= ["="|"=="|"!="] VALUE +// ::= | "," +// ::= [!] KEY [ | ] +// ::= "" | +// ::= | +// ::= "notin" +// ::= "in" +// ::= "(" ")" +// ::= VALUE | VALUE "," +// ::= ["="|"=="|"!="] VALUE // // KEY is a sequence of one or more characters following [ DNS_SUBDOMAIN "/" ] DNS_LABEL. Max length is 63 characters. // VALUE is a sequence of zero or more characters "([A-Za-z0-9_-\.])". Max length is 63 characters. // Delimiter is white space: (' ', '\t') // Example of valid syntax: -// "x in (foo,,baz),y,z notin ()" +// +// "x in (foo,,baz),y,z notin ()" // // Note: -// (1) Inclusion - " in " - denotes that the KEY exists and is equal to any of the -// VALUEs in its requirement -// (2) Exclusion - " notin " - denotes that the KEY is not equal to any -// of the VALUEs in its requirement or does not exist -// (3) The empty string is a valid VALUE -// (4) A requirement with just a KEY - as in "y" above - denotes that -// the KEY exists and can be any VALUE. -// (5) A requirement with just !KEY requires that the KEY not exist. // +// (1) Inclusion - " in " - denotes that the KEY exists and is equal to any of the +// VALUEs in its requirement +// (2) Exclusion - " notin " - denotes that the KEY is not equal to any +// of the VALUEs in its requirement or does not exist +// (3) The empty string is a valid VALUE +// (4) A requirement with just a KEY - as in "y" above - denotes that +// the KEY exists and can be any VALUE. +// (5) A requirement with just !KEY requires that the KEY not exist. func Parse(selector string, opts ...field.PathOption) (Selector, error) { parsedSelector, err := parse(selector, field.ToPath(opts...)) if err == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/allocator.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/allocator.go index 0d00d8c3a3b..8bf22ae8acd 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/allocator.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/allocator.go @@ -24,12 +24,14 @@ import ( // by caching created but unused items for later reuse, relieving pressure on the garbage collector. // // Usage: -// memoryAllocator := runtime.AllocatorPool.Get().(*runtime.Allocator) -// defer runtime.AllocatorPool.Put(memoryAllocator) +// +// memoryAllocator := runtime.AllocatorPool.Get().(*runtime.Allocator) +// defer runtime.AllocatorPool.Put(memoryAllocator) // // A note for future: -// consider introducing multiple pools for storing buffers of different sizes -// perhaps this could allow us to be more efficient. +// +// consider introducing multiple pools for storing buffers of different sizes +// perhaps this could allow us to be more efficient. var AllocatorPool = sync.Pool{ New: func() interface{} { return &Allocator{} @@ -58,7 +60,7 @@ func (a *Allocator) Allocate(n uint64) []byte { } // grow the buffer size := uint64(2*cap(a.buf)) + n - a.buf = make([]byte, size, size) + a.buf = make([]byte, size) a.buf = a.buf[:n] return a.buf } @@ -70,5 +72,5 @@ type SimpleAllocator struct{} var _ MemoryAllocator = &SimpleAllocator{} func (sa *SimpleAllocator) Allocate(n uint64) []byte { - return make([]byte, n, n) + return make([]byte, n) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go index a92863139ed..7fc513dd0e7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec.go @@ -344,14 +344,15 @@ func NewMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKi // Incoming kinds that match the provided groupKinds are preferred. // Kind may be empty in the provided group kind, in which case any kind will match. // Examples: -// gv=mygroup/__internal, groupKinds=mygroup/Foo, anothergroup/Bar -// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group/kind) // -// gv=mygroup/__internal, groupKinds=mygroup, anothergroup -// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group) +// gv=mygroup/__internal, groupKinds=mygroup/Foo, anothergroup/Bar +// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group/kind) // -// gv=mygroup/__internal, groupKinds=mygroup, anothergroup -// KindForGroupVersionKinds(yetanother/v1/Baz, yetanother/v1/Bar) -> mygroup/__internal/Baz (no preferred group/kind match, uses first kind in list) +// gv=mygroup/__internal, groupKinds=mygroup, anothergroup +// KindForGroupVersionKinds(yetanother/v1/Baz, anothergroup/v1/Bar) -> mygroup/__internal/Bar (matched preferred group) +// +// gv=mygroup/__internal, groupKinds=mygroup, anothergroup +// KindForGroupVersionKinds(yetanother/v1/Baz, yetanother/v1/Bar) -> mygroup/__internal/Baz (no preferred group/kind match, uses first kind in list) func NewCoercingMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKind) GroupVersioner { return multiGroupVersioner{target: gv, acceptedGroupKinds: groupKinds, coerce: true} } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go index 00022806171..e884007766b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/codec_check.go @@ -30,7 +30,7 @@ import ( // TODO: verify that the correct external version is chosen on encode... func CheckCodec(c Codec, internalType Object, externalTypes ...schema.GroupVersionKind) error { if _, err := Encode(c, internalType); err != nil { - return fmt.Errorf("Internal type not encodable: %v", err) + return fmt.Errorf("internal type not encodable: %v", err) } for _, et := range externalTypes { typeMeta := TypeMeta{ diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto index de634e2c64e..5f06cc5743d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/generated.proto @@ -31,32 +31,37 @@ option go_package = "k8s.io/apimachinery/pkg/runtime"; // various plugin types. // // // Internal package: -// type MyAPIObject struct { -// runtime.TypeMeta `json:",inline"` -// MyPlugin runtime.Object `json:"myPlugin"` -// } -// type PluginA struct { -// AOption string `json:"aOption"` -// } +// +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.Object `json:"myPlugin"` +// } +// +// type PluginA struct { +// AOption string `json:"aOption"` +// } // // // External package: -// type MyAPIObject struct { -// runtime.TypeMeta `json:",inline"` -// MyPlugin runtime.RawExtension `json:"myPlugin"` -// } -// type PluginA struct { -// AOption string `json:"aOption"` -// } +// +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` +// } +// +// type PluginA struct { +// AOption string `json:"aOption"` +// } // // // On the wire, the JSON will look something like this: -// { -// "kind":"MyAPIObject", -// "apiVersion":"v1", -// "myPlugin": { -// "kind":"PluginA", -// "aOption":"foo", -// }, -// } +// +// { +// "kind":"MyAPIObject", +// "apiVersion":"v1", +// "myPlugin": { +// "kind":"PluginA", +// "aOption":"foo", +// }, +// } // // So what happens? Decode first uses json or yaml to unmarshal the serialized data into // your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. @@ -78,10 +83,12 @@ message RawExtension { // TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, // like this: -// type MyAwesomeAPIObject struct { -// runtime.TypeMeta `json:",inline"` -// ... // other fields -// } +// +// type MyAwesomeAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// ... // other fields +// } +// // func (obj *MyAwesomeAPIObject) SetGroupVersionKind(gvk *metav1.GroupVersionKind) { metav1.UpdateTypeMeta(obj,gvk) }; GroupVersionKind() *GroupVersionKind // // TypeMeta is provided here for convenience. You may use it directly from this package or define diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go index 994a3e3fa81..b21eb664e3f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/schema/group_version.go @@ -191,7 +191,8 @@ func (gv GroupVersion) Identifier() string { // if none of the options match the group. It prefers a match to group and version over just group. // TODO: Move GroupVersion to a package under pkg/runtime, since it's used by scheme. // TODO: Introduce an adapter type between GroupVersion and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) -// in fewer places. +// +// in fewer places. func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) { for _, gvk := range kinds { if gvk.Group == gv.Group && gvk.Version == gv.Version { @@ -239,7 +240,8 @@ func (gv GroupVersion) WithResource(resource string) GroupVersionResource { // GroupVersions can be used to represent a set of desired group versions. // TODO: Move GroupVersions to a package under pkg/runtime, since it's used by scheme. // TODO: Introduce an adapter type between GroupVersions and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) -// in fewer places. +// +// in fewer places. type GroupVersions []GroupVersion // Identifier implements runtime.GroupVersioner interface. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go index ff3a3fe0a8f..18b25a994b8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/scheme.go @@ -118,7 +118,8 @@ func (s *Scheme) Converter() *conversion.Converter { // API group and version that would never be updated. // // TODO: there is discussion about removing unversioned and replacing it with objects that are manifest into -// every version with particular schemas. Resolve this method at that point. +// +// every version with particular schemas. Resolve this method at that point. func (s *Scheme) AddUnversionedTypes(version schema.GroupVersion, types ...Object) { s.addObservedVersion(version) s.AddKnownTypes(version, types...) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go index 9de35e791c0..21944f2d8fd 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/serializer/codec_factory.go @@ -259,7 +259,8 @@ func (f CodecFactory) SupportedMediaTypes() []runtime.SerializerInfo { // invoke CodecForVersions. Callers that need only to read data should use UniversalDecoder(). // // TODO: make this call exist only in pkg/api, and initialize it with the set of default versions. -// All other callers will be forced to request a Codec directly. +// +// All other callers will be forced to request a Codec directly. func (f CodecFactory) LegacyCodec(version ...schema.GroupVersion) runtime.Codec { return versioning.NewDefaultingCodecForScheme(f.scheme, f.legacySerializer, f.universal, schema.GroupVersions(version), runtime.InternalGroupVersioner) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/types.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/types.go index 31359f35f45..3dc9a5a2f2a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/runtime/types.go @@ -21,10 +21,12 @@ package runtime // TypeMeta is shared by all top level objects. The proper way to use it is to inline it in your type, // like this: -// type MyAwesomeAPIObject struct { -// runtime.TypeMeta `json:",inline"` -// ... // other fields -// } +// +// type MyAwesomeAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// ... // other fields +// } +// // func (obj *MyAwesomeAPIObject) SetGroupVersionKind(gvk *metav1.GroupVersionKind) { metav1.UpdateTypeMeta(obj,gvk) }; GroupVersionKind() *GroupVersionKind // // TypeMeta is provided here for convenience. You may use it directly from this package or define @@ -53,32 +55,37 @@ const ( // various plugin types. // // // Internal package: -// type MyAPIObject struct { -// runtime.TypeMeta `json:",inline"` -// MyPlugin runtime.Object `json:"myPlugin"` -// } -// type PluginA struct { -// AOption string `json:"aOption"` -// } +// +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.Object `json:"myPlugin"` +// } +// +// type PluginA struct { +// AOption string `json:"aOption"` +// } // // // External package: -// type MyAPIObject struct { -// runtime.TypeMeta `json:",inline"` -// MyPlugin runtime.RawExtension `json:"myPlugin"` -// } -// type PluginA struct { -// AOption string `json:"aOption"` -// } +// +// type MyAPIObject struct { +// runtime.TypeMeta `json:",inline"` +// MyPlugin runtime.RawExtension `json:"myPlugin"` +// } +// +// type PluginA struct { +// AOption string `json:"aOption"` +// } // // // On the wire, the JSON will look something like this: -// { -// "kind":"MyAPIObject", -// "apiVersion":"v1", -// "myPlugin": { -// "kind":"PluginA", -// "aOption":"foo", -// }, -// } +// +// { +// "kind":"MyAPIObject", +// "apiVersion":"v1", +// "myPlugin": { +// "kind":"PluginA", +// "aOption":"foo", +// }, +// } // // So what happens? Decode first uses json or yaml to unmarshal the serialized data into // your external MyAPIObject. That causes the raw JSON to be stored, but not unpacked. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/nodename.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/nodename.go index fee348d7e76..cff9ca67176 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/nodename.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/types/nodename.go @@ -23,21 +23,21 @@ package types // // To clarify the various types: // -// * Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. -// Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. +// - Node.Name is the Name field of the Node in the API. This should be stored in a NodeName. +// Unfortunately, because Name is part of ObjectMeta, we can't store it as a NodeName at the API level. // -// * Hostname is the hostname of the local machine (from uname -n). -// However, some components allow the user to pass in a --hostname-override flag, -// which will override this in most places. In the absence of anything more meaningful, -// kubelet will use Hostname as the Node.Name when it creates the Node. +// - Hostname is the hostname of the local machine (from uname -n). +// However, some components allow the user to pass in a --hostname-override flag, +// which will override this in most places. In the absence of anything more meaningful, +// kubelet will use Hostname as the Node.Name when it creates the Node. // // * The cloudproviders have the own names: GCE has InstanceName, AWS has InstanceId. // -// For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the -// Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up -// to the cloudprovider how to do this mapping. +// For GCE, InstanceName is the Name of an Instance object in the GCE API. On GCE, Instance.Name becomes the +// Hostname, and thus it makes sense also to use it as the Node.Name. But that is GCE specific, and it is up +// to the cloudprovider how to do this mapping. // -// For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the -// PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if -// we are using a custom DHCP domain it won't be. +// For AWS, the InstanceID is not yet suitable for use as a Node.Name, so we actually use the +// PrivateDnsName for the Node.Name. And this is _not_ always the same as the hostname: if +// we are using a custom DHCP domain it won't be. type NodeName string diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go index 10df0d99cd5..ca08f8561de 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/framer/framer.go @@ -56,10 +56,10 @@ type lengthDelimitedFrameReader struct { // // The protocol is: // -// stream: message ... -// message: prefix body -// prefix: 4 byte uint32 in BigEndian order, denotes length of body -// body: bytes (0..prefix) +// stream: message ... +// message: prefix body +// prefix: 4 byte uint32 in BigEndian order, denotes length of body +// body: bytes (0..prefix) // // If the buffer passed to Read is not long enough to contain an entire frame, io.ErrShortRead // will be returned along with the number of bytes read. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go index f17eb09e960..d30ae2fa3dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/httpstream/spdy/upgrade.go @@ -94,7 +94,7 @@ func (u responseUpgrader) UpgradeResponse(w http.ResponseWriter, req *http.Reque hijacker, ok := w.(http.Hijacker) if !ok { - errorMsg := fmt.Sprintf("unable to upgrade: unable to hijack response") + errorMsg := "unable to upgrade: unable to hijack response" http.Error(w, errorMsg, http.StatusInternalServerError) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go index c27380c19c6..5e800970453 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/intstr/intstr.go @@ -145,7 +145,7 @@ func ValueOrDefault(intOrPercent *IntOrString, defaultValue IntOrString) *IntOrS // GetScaledValueFromIntOrPercent is meant to replace GetValueFromIntOrPercent. // This method returns a scaled value from an IntOrString type. If the IntOrString // is a percentage string value it's treated as a percentage and scaled appropriately -// in accordance to the total, if it's an int value it's treated as a a simple value and +// in accordance to the total, if it's an int value it's treated as a simple value and // if it is a string value which is either non-numeric or numeric but lacking a trailing '%' it returns an error. func GetScaledValueFromIntOrPercent(intOrPercent *IntOrString, total int, roundUp bool) (int, error) { if intOrPercent == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/managedfields/extract.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/managedfields/extract.go index 792badbc3d5..d2ce66c1bda 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/managedfields/extract.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/managedfields/extract.go @@ -45,7 +45,7 @@ import ( // and their field paths and types are exactly the same, then ExtractInto can be // called with the root resource as the object and the subresource as the // applyConfiguration. This works for "status", obviously, because status is -// represented by the exact same object as the root resource. This this does NOT +// represented by the exact same object as the root resource. This does NOT // work, for example, with the "scale" subresources of Deployment, ReplicaSet and // StatefulSet. While the spec.replicas, status.replicas fields are in the same // exact field path locations as they are in autoscaling.Scale, the selector diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go index 990fa0d43a6..e3962756822 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/mergepatch/util.go @@ -88,7 +88,8 @@ func toYAML(v interface{}) (string, error) { // supports JSON merge patch semantics. // // NOTE: Numbers with different types (e.g. int(0) vs int64(0)) will be detected as conflicts. -// Make sure the unmarshaling of left and right are consistent (e.g. use the same library). +// +// Make sure the unmarshaling of left and right are consistent (e.g. use the same library). func HasConflicts(left, right interface{}) (bool, error) { switch typedLeft := left.(type) { case map[string]interface{}: diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/interface.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/interface.go index 82241680648..01d028e727d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/interface.go @@ -339,7 +339,7 @@ func chooseIPFromHostInterfaces(nw networkInterfacer, addressFamilies AddressFam for _, addr := range addrs { ip, _, err := netutils.ParseCIDRSloppy(addr.String()) if err != nil { - return nil, fmt.Errorf("Unable to parse CIDR for interface %q: %s", intf.Name, err) + return nil, fmt.Errorf("unable to parse CIDR for interface %q: %s", intf.Name, err) } if !memberOf(ip, family) { klog.V(4).Infof("Skipping: no address family match for %q on interface %q.", ip, intf.Name) diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go index c0fd4e20fe5..f54bb1e71c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/port_split.go @@ -25,9 +25,9 @@ import ( var validSchemes = sets.NewString("http", "https", "") // SplitSchemeNamePort takes a string of the following forms: -// * "", returns "", "","", true -// * ":", returns "", "","",true -// * "::", returns "","","",true +// - "", returns "", "","", true +// - ":", returns "", "","",true +// - "::", returns "","","",true // // Name must be non-empty or valid will be returned false. // Scheme must be "http" or "https" if specified @@ -57,9 +57,10 @@ func SplitSchemeNamePort(id string) (scheme, name, port string, valid bool) { } // JoinSchemeNamePort returns a string that specifies the scheme, name, and port: -// * "" -// * ":" -// * "::" +// - "" +// - ":" +// - "::" +// // None of the parameters may contain a ':' character // Name is required // Scheme must be "", "http", or "https" diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/util.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/util.go index 5950087e022..1c2aba55f7b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/util.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/net/util.go @@ -25,6 +25,7 @@ import ( // IPNetEqual checks if the two input IPNets are representing the same subnet. // For example, +// // 10.0.0.1/24 and 10.0.0.0/24 are the same subnet. // 10.0.0.1/24 and 10.0.0.0/25 are not the same subnet. func IPNetEqual(ipnet1, ipnet2 *net.IPNet) bool { diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go index b9200993703..489d9b04264 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/proxy/transport.go @@ -39,7 +39,8 @@ import ( // atomsToAttrs states which attributes of which tags require URL substitution. // Sources: http://www.w3.org/TR/REC-html40/index/attributes.html -// http://www.w3.org/html/wg/drafts/html/master/index.html#attributes-1 +// +// http://www.w3.org/html/wg/drafts/html/master/index.html#attributes-1 var atomsToAttrs = map[atom.Atom]sets.String{ atom.A: sets.NewString("href"), atom.Applet: sets.NewString("codebase"), diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go index 9f834fa538d..d738725caf0 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go @@ -142,7 +142,7 @@ func GetCaller() string { runtime.Callers(3, pc[:]) f := runtime.FuncForPC(pc[0]) if f == nil { - return fmt.Sprintf("Unable to find caller") + return "Unable to find caller" } return f.Name() } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go index 9bfa85d43d4..5d280dd3734 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/byte.go @@ -28,7 +28,7 @@ type Byte map[byte]Empty // NewByte creates a Byte from a list of values. func NewByte(items ...byte) Byte { - ss := Byte{} + ss := make(Byte, len(items)) ss.Insert(items...) return ss } @@ -87,6 +87,15 @@ func (s Byte) HasAny(items ...byte) bool { return false } +// Clone returns a new set which is a copy of the current set. +func (s Byte) Clone() Byte { + result := make(Byte, len(s)) + for key := range s { + result.Insert(key) + } + return result +} + // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} @@ -110,10 +119,7 @@ func (s Byte) Difference(s2 Byte) Byte { // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 Byte) Union(s2 Byte) Byte { - result := NewByte() - for key := range s1 { - result.Insert(key) - } + result := s1.Clone() for key := range s2 { result.Insert(key) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int.go index 88bd7096791..f9a79d98164 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int.go @@ -28,7 +28,7 @@ type Int map[int]Empty // NewInt creates a Int from a list of values. func NewInt(items ...int) Int { - ss := Int{} + ss := make(Int, len(items)) ss.Insert(items...) return ss } @@ -87,6 +87,15 @@ func (s Int) HasAny(items ...int) bool { return false } +// Clone returns a new set which is a copy of the current set. +func (s Int) Clone() Int { + result := make(Int, len(s)) + for key := range s { + result.Insert(key) + } + return result +} + // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} @@ -110,10 +119,7 @@ func (s Int) Difference(s2 Int) Int { // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 Int) Union(s2 Int) Int { - result := NewInt() - for key := range s1 { - result.Insert(key) - } + result := s1.Clone() for key := range s2 { result.Insert(key) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int32.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int32.go index 96a48555426..fc416c55a34 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int32.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int32.go @@ -28,7 +28,7 @@ type Int32 map[int32]Empty // NewInt32 creates a Int32 from a list of values. func NewInt32(items ...int32) Int32 { - ss := Int32{} + ss := make(Int32, len(items)) ss.Insert(items...) return ss } @@ -87,6 +87,15 @@ func (s Int32) HasAny(items ...int32) bool { return false } +// Clone returns a new set which is a copy of the current set. +func (s Int32) Clone() Int32 { + result := make(Int32, len(s)) + for key := range s { + result.Insert(key) + } + return result +} + // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} @@ -110,10 +119,7 @@ func (s Int32) Difference(s2 Int32) Int32 { // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 Int32) Union(s2 Int32) Int32 { - result := NewInt32() - for key := range s1 { - result.Insert(key) - } + result := s1.Clone() for key := range s2 { result.Insert(key) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go index b375a1b065c..03ecb5f1faf 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/int64.go @@ -28,7 +28,7 @@ type Int64 map[int64]Empty // NewInt64 creates a Int64 from a list of values. func NewInt64(items ...int64) Int64 { - ss := Int64{} + ss := make(Int64, len(items)) ss.Insert(items...) return ss } @@ -87,6 +87,15 @@ func (s Int64) HasAny(items ...int64) bool { return false } +// Clone returns a new set which is a copy of the current set. +func (s Int64) Clone() Int64 { + result := make(Int64, len(s)) + for key := range s { + result.Insert(key) + } + return result +} + // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} @@ -110,10 +119,7 @@ func (s Int64) Difference(s2 Int64) Int64 { // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 Int64) Union(s2 Int64) Int64 { - result := NewInt64() - for key := range s1 { - result.Insert(key) - } + result := s1.Clone() for key := range s2 { result.Insert(key) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/string.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/string.go index e6f37db8874..99b4cab3257 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/string.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/sets/string.go @@ -28,7 +28,7 @@ type String map[string]Empty // NewString creates a String from a list of values. func NewString(items ...string) String { - ss := String{} + ss := make(String, len(items)) ss.Insert(items...) return ss } @@ -87,6 +87,15 @@ func (s String) HasAny(items ...string) bool { return false } +// Clone returns a new set which is a copy of the current set. +func (s String) Clone() String { + result := make(String, len(s)) + for key := range s { + result.Insert(key) + } + return result +} + // Difference returns a set of objects that are not in s2 // For example: // s1 = {a1, a2, a3} @@ -110,10 +119,7 @@ func (s String) Difference(s2 String) String { // s1.Union(s2) = {a1, a2, a3, a4} // s2.Union(s1) = {a1, a2, a3, a4} func (s1 String) Union(s2 String) String { - result := NewString() - for key := range s1 { - result.Insert(key) - } + result := s1.Clone() for key := range s2 { result.Insert(key) } diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go index b26fbc432bb..ae73bda9666 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/validation/field/errors.go @@ -42,9 +42,9 @@ func (v *Error) Error() string { return fmt.Sprintf("%s: %s", v.Field, v.ErrorBody()) } -type omitValueType struct{} +type OmitValueType struct{} -var omitValue = omitValueType{} +var omitValue = OmitValueType{} // ErrorBody returns the error message without the field name. This is useful // for building nice-looking higher-level error reporting. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go index 7aec1ec27ac..137627b4050 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go @@ -29,9 +29,11 @@ import ( ) // For any test of the style: -// ... -// <- time.After(timeout): -// t.Errorf("Timed out") +// +// ... +// <- time.After(timeout): +// t.Errorf("Timed out") +// // The value for timeout should effectively be "forever." Obviously we don't want our tests to truly lock up forever, but 30s // is long enough that it is effectively forever for the things that can slow down a run on a heavily contended machine // (GC, seeks, etc), but not so long as to make a developer ctrl-c a test run if they do happen to break that test. @@ -566,7 +568,7 @@ func PollImmediateInfiniteWithContext(ctx context.Context, interval time.Duratio return poll(ctx, true, poller(interval, 0), condition) } -// Internally used, each of the the public 'Poll*' function defined in this +// Internally used, each of the public 'Poll*' function defined in this // package should invoke this internal function with appropriate parameters. // ctx: the context specified by the caller, for infinite polling pass // a context that never gets cancelled or expired. @@ -615,7 +617,7 @@ type WaitWithContextFunc func(ctx context.Context) <-chan struct{} // WaitFor continually checks 'fn' as driven by 'wait'. // -// WaitFor gets a channel from 'wait()'', and then invokes 'fn' once for every value +// WaitFor gets a channel from 'wait()”, and then invokes 'fn' once for every value // placed on the channel and once more when the channel is closed. If the channel is closed // and 'fn' returns false without error, WaitFor returns ErrWaitTimeout. // @@ -636,7 +638,7 @@ func WaitFor(wait WaitFunc, fn ConditionFunc, done <-chan struct{}) error { // WaitForWithContext continually checks 'fn' as driven by 'wait'. // -// WaitForWithContext gets a channel from 'wait()'', and then invokes 'fn' +// WaitForWithContext gets a channel from 'wait()”, and then invokes 'fn' // once for every value placed on the channel and once more when the // channel is closed. If the channel is closed and 'fn' // returns false without error, WaitForWithContext returns ErrWaitTimeout. diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/filter.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/filter.go index 22c9449f59c..a5735a0b47a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/filter.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/pkg/watch/filter.go @@ -32,7 +32,6 @@ type FilterFunc func(in Event) (out Event, keep bool) // WARNING: filter has a fatal flaw, in that it can't properly update the // Type field (Add/Modified/Deleted) to reflect items beginning to pass the // filter when they previously didn't. -// func Filter(w Interface, f FilterFunc) Interface { fw := &filteredWatch{ incoming: w, diff --git a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go index fb6b054792b..511e625b63d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go +++ b/cluster-autoscaler/vendor/k8s.io/apimachinery/third_party/forked/golang/reflect/deep_equal.go @@ -100,7 +100,8 @@ func makeUsefulPanic(v reflect.Value) { // Tests for deep equality using reflected types. The map argument tracks // comparisons that have already been seen, which allows short circuiting on // recursive types. -func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool { +// equateNilAndEmpty controls whether empty maps/slices are equivalent to nil +func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, equateNilAndEmpty bool, depth int) bool { defer makeUsefulPanic(v1) if !v1.IsValid() || !v2.IsValid() { @@ -150,17 +151,36 @@ func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, // We don't need to check length here because length is part of // an array's type, which has already been filtered for. for i := 0; i < v1.Len(); i++ { - if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) { + if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, equateNilAndEmpty, depth+1) { return false } } return true case reflect.Slice: - if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { - return false - } - if v1.IsNil() || v1.Len() == 0 { - return true + if equateNilAndEmpty { + if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { + return false + } + + if v1.IsNil() || v1.Len() == 0 { + return true + } + } else { + if v1.IsNil() != v2.IsNil() { + return false + } + + // Optimize nil and empty cases + // Two lists that are BOTH nil are equal + // No need to check v2 is nil since v1.IsNil == v2.IsNil from above + if v1.IsNil() { + return true + } + + // Two lists that are both empty and both non nil are equal + if v1.Len() == 0 || v2.Len() == 0 { + return true + } } if v1.Len() != v2.Len() { return false @@ -169,7 +189,7 @@ func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, return true } for i := 0; i < v1.Len(); i++ { - if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) { + if !e.deepValueEqual(v1.Index(i), v2.Index(i), visited, equateNilAndEmpty, depth+1) { return false } } @@ -178,22 +198,40 @@ func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, if v1.IsNil() || v2.IsNil() { return v1.IsNil() == v2.IsNil() } - return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1) - case reflect.Pointer: - return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1) + return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, equateNilAndEmpty, depth+1) + case reflect.Ptr: + return e.deepValueEqual(v1.Elem(), v2.Elem(), visited, equateNilAndEmpty, depth+1) case reflect.Struct: for i, n := 0, v1.NumField(); i < n; i++ { - if !e.deepValueEqual(v1.Field(i), v2.Field(i), visited, depth+1) { + if !e.deepValueEqual(v1.Field(i), v2.Field(i), visited, equateNilAndEmpty, depth+1) { return false } } return true case reflect.Map: - if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { - return false - } - if v1.IsNil() || v1.Len() == 0 { - return true + if equateNilAndEmpty { + if (v1.IsNil() || v1.Len() == 0) != (v2.IsNil() || v2.Len() == 0) { + return false + } + if v1.IsNil() || v1.Len() == 0 { + return true + } + } else { + if v1.IsNil() != v2.IsNil() { + return false + } + + // Optimize nil and empty cases + // Two maps that are BOTH nil are equal + // No need to check v2 is nil since v1.IsNil == v2.IsNil from above + if v1.IsNil() { + return true + } + + // Two maps that are both empty and both non nil are equal + if v1.Len() == 0 || v2.Len() == 0 { + return true + } } if v1.Len() != v2.Len() { return false @@ -202,7 +240,7 @@ func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, return true } for _, k := range v1.MapKeys() { - if !e.deepValueEqual(v1.MapIndex(k), v2.MapIndex(k), visited, depth+1) { + if !e.deepValueEqual(v1.MapIndex(k), v2.MapIndex(k), visited, equateNilAndEmpty, depth+1) { return false } } @@ -232,6 +270,14 @@ func (e Equalities) deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, // Unexported field members cannot be compared and will cause an informative panic; you must add an Equality // function for these types. func (e Equalities) DeepEqual(a1, a2 interface{}) bool { + return e.deepEqual(a1, a2, true) +} + +func (e Equalities) DeepEqualWithNilDifferentFromEmpty(a1, a2 interface{}) bool { + return e.deepEqual(a1, a2, false) +} + +func (e Equalities) deepEqual(a1, a2 interface{}, equateNilAndEmpty bool) bool { if a1 == nil || a2 == nil { return a1 == a2 } @@ -240,7 +286,7 @@ func (e Equalities) DeepEqual(a1, a2 interface{}) bool { if v1.Type() != v2.Type() { return false } - return e.deepValueEqual(v1, v2, make(map[visit]bool), 0) + return e.deepValueEqual(v1, v2, make(map[visit]bool), equateNilAndEmpty, 0) } func (e Equalities) deepValueDerive(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/initializer/interfaces.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/initializer/interfaces.go index 191c090556d..83d3d48c180 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/initializer/interfaces.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/admission/initializer/interfaces.go @@ -60,9 +60,10 @@ type WantsDrainedNotification interface { // WantsFeatureGate defines a function which passes the featureGates for inspection by an admission plugin. // Admission plugins should not hold a reference to the featureGates. Instead, they should query a particular one // and assign it to a simple bool in the admission plugin struct. -// func (a *admissionPlugin) InspectFeatureGates(features featuregate.FeatureGate){ -// a.myFeatureIsOn = features.Enabled("my-feature") -// } +// +// func (a *admissionPlugin) InspectFeatureGates(features featuregate.FeatureGate){ +// a.myFeatureIsOn = features.Enabled("my-feature") +// } type WantsFeatures interface { InspectFeatureGates(featuregate.FeatureGate) admission.InitializationValidator diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/types.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/types.go index 5dddc97f964..72107fe6634 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/types.go @@ -86,6 +86,9 @@ type IdentityConfiguration struct{} // KMSConfiguration contains the name, cache size and path to configuration file for a KMS based envelope transformer. type KMSConfiguration struct { + // apiVersion of KeyManagementService + // +optional + APIVersion string // name is the name of the KMS plugin to be used. Name string // cachesize is the maximum number of secrets which are cached in memory. The default value is 1000. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/defaults.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/defaults.go index 2d529651a9f..8666022a95a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/defaults.go @@ -24,8 +24,9 @@ import ( ) var ( - defaultTimeout = &metav1.Duration{Duration: 3 * time.Second} - defaultCacheSize int32 = 1000 + defaultTimeout = &metav1.Duration{Duration: 3 * time.Second} + defaultCacheSize int32 = 1000 + defaultAPIVersion = "v1" ) func addDefaultingFuncs(scheme *runtime.Scheme) error { @@ -41,4 +42,8 @@ func SetDefaults_KMSConfiguration(obj *KMSConfiguration) { if obj.CacheSize == nil { obj.CacheSize = &defaultCacheSize } + + if obj.APIVersion == "" { + obj.APIVersion = defaultAPIVersion + } } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/types.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/types.go index d7d68d2584d..23dab942ea3 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/types.go @@ -86,6 +86,9 @@ type IdentityConfiguration struct{} // KMSConfiguration contains the name, cache size and path to configuration file for a KMS based envelope transformer. type KMSConfiguration struct { + // apiVersion of KeyManagementService + // +optional + APIVersion string `json:"apiVersion"` // name is the name of the KMS plugin to be used. Name string `json:"name"` // cachesize is the maximum number of secrets which are cached in memory. The default value is 1000. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/zz_generated.conversion.go index ff2132f7292..8585428632b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/v1/zz_generated.conversion.go @@ -179,6 +179,7 @@ func Convert_config_IdentityConfiguration_To_v1_IdentityConfiguration(in *config } func autoConvert_v1_KMSConfiguration_To_config_KMSConfiguration(in *KMSConfiguration, out *config.KMSConfiguration, s conversion.Scope) error { + out.APIVersion = in.APIVersion out.Name = in.Name out.CacheSize = (*int32)(unsafe.Pointer(in.CacheSize)) out.Endpoint = in.Endpoint @@ -192,6 +193,7 @@ func Convert_v1_KMSConfiguration_To_config_KMSConfiguration(in *KMSConfiguration } func autoConvert_config_KMSConfiguration_To_v1_KMSConfiguration(in *config.KMSConfiguration, out *KMSConfiguration, s conversion.Scope) error { + out.APIVersion = in.APIVersion out.Name = in.Name out.CacheSize = (*int32)(unsafe.Pointer(in.CacheSize)) out.Endpoint = in.Endpoint diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/validation/validation.go index 966ff1f0d15..866e6149614 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/apis/config/validation/validation.go @@ -21,22 +21,25 @@ import ( "encoding/base64" "fmt" "net/url" + "strings" "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apiserver/pkg/apis/config" ) const ( - moreThanOneElementErr = "more than one provider specified in a single element, should split into different list elements" - keyLenErrFmt = "secret is not of the expected length, got %d, expected one of %v" - unsupportedSchemeErrFmt = "unsupported scheme %q for KMS provider, only unix is supported" - atLeastOneRequiredErrFmt = "at least one %s is required" - invalidURLErrFmt = "invalid endpoint for kms provider, error: parse %s: net/url: invalid control character in URL" - mandatoryFieldErrFmt = "%s is a mandatory field for a %s" - base64EncodingErr = "secrets must be base64 encoded" - zeroOrNegativeErrFmt = "%s should be a positive value" - nonZeroErrFmt = "%s should be a positive value, or negative to disable" - encryptionConfigNilErr = "EncryptionConfiguration can't be nil" + moreThanOneElementErr = "more than one provider specified in a single element, should split into different list elements" + keyLenErrFmt = "secret is not of the expected length, got %d, expected one of %v" + unsupportedSchemeErrFmt = "unsupported scheme %q for KMS provider, only unix is supported" + unsupportedKMSAPIVersionErrFmt = "unsupported apiVersion %s for KMS provider, only v1 and v2 are supported" + atLeastOneRequiredErrFmt = "at least one %s is required" + invalidURLErrFmt = "invalid endpoint for kms provider, error: parse %s: net/url: invalid control character in URL" + mandatoryFieldErrFmt = "%s is a mandatory field for a %s" + base64EncodingErr = "secrets must be base64 encoded" + zeroOrNegativeErrFmt = "%s should be a positive value" + nonZeroErrFmt = "%s should be a positive value, or negative to disable" + encryptionConfigNilErr = "EncryptionConfiguration can't be nil" + invalidKMSConfigNameErrFmt = "invalid KMS provider name %s, must not contain ':'" ) var ( @@ -174,12 +177,12 @@ func validateKey(key config.Key, fieldPath *field.Path, expectedLen []int) field func validateKMSConfiguration(c *config.KMSConfiguration, fieldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} - if c.Name == "" { - allErrs = append(allErrs, field.Required(fieldPath.Child("name"), fmt.Sprintf(mandatoryFieldErrFmt, "name", "provider"))) - } + + allErrs = append(allErrs, validateKMSConfigName(c, fieldPath.Child("name"))...) allErrs = append(allErrs, validateKMSTimeout(c, fieldPath.Child("timeout"))...) allErrs = append(allErrs, validateKMSEndpoint(c, fieldPath.Child("endpoint"))...) allErrs = append(allErrs, validateKMSCacheSize(c, fieldPath.Child("cachesize"))...) + allErrs = append(allErrs, validateKMSAPIVersion(c, fieldPath.Child("apiVersion"))...) return allErrs } @@ -218,3 +221,25 @@ func validateKMSEndpoint(c *config.KMSConfiguration, fieldPath *field.Path) fiel return allErrs } + +func validateKMSAPIVersion(c *config.KMSConfiguration, fieldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if c.APIVersion != "v1" && c.APIVersion != "v2" { + allErrs = append(allErrs, field.Invalid(fieldPath, c.APIVersion, fmt.Sprintf(unsupportedKMSAPIVersionErrFmt, "apiVersion"))) + } + + return allErrs +} + +func validateKMSConfigName(c *config.KMSConfiguration, fieldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if c.Name == "" { + allErrs = append(allErrs, field.Required(fieldPath, fmt.Sprintf(mandatoryFieldErrFmt, "name", "provider"))) + } + + if c.APIVersion != "v1" && strings.Contains(c.Name, ":") { + allErrs = append(allErrs, field.Invalid(fieldPath, c.Name, fmt.Sprintf(invalidKMSConfigNameErrFmt, c.Name))) + } + + return allErrs +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/policy/enforce.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/policy/enforce.go deleted file mode 100644 index e2b107b9f1d..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/audit/policy/enforce.go +++ /dev/null @@ -1,53 +0,0 @@ -/* -Copyright 2018 The Kubernetes 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 policy - -import ( - "fmt" - - "k8s.io/apiserver/pkg/apis/audit" -) - -// EnforcePolicy drops any part of the event that doesn't conform to a policy level -// or omitStages and sets the event level accordingly -func EnforcePolicy(event *audit.Event, level audit.Level, omitStages []audit.Stage) (*audit.Event, error) { - for _, stage := range omitStages { - if event.Stage == stage { - return nil, nil - } - } - return enforceLevel(event, level) -} - -func enforceLevel(event *audit.Event, level audit.Level) (*audit.Event, error) { - switch level { - case audit.LevelMetadata: - event.Level = audit.LevelMetadata - event.ResponseObject = nil - event.RequestObject = nil - case audit.LevelRequest: - event.Level = audit.LevelRequest - event.ResponseObject = nil - case audit.LevelRequestResponse: - event.Level = audit.LevelRequestResponse - case audit.LevelNone: - return nil, nil - default: - return nil, fmt.Errorf("level unknown: %s", level) - } - return event, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/deprecation/deprecation.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/deprecation/deprecation.go index 3d0123b23f7..7f8986faeac 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/deprecation/deprecation.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/deprecation/deprecation.go @@ -43,8 +43,9 @@ var leadingDigits = regexp.MustCompile(`^(\d+)`) // MajorMinor parses a numeric major/minor version from the provided version info. // The minor version drops all characters after the first non-digit character: -// version.Info{Major:"1", Minor:"2+"} -> 1,2 -// version.Info{Major:"1", Minor:"2.3-build4"} -> 1,2 +// +// version.Info{Major:"1", Minor:"2+"} -> 1,2 +// version.Info{Major:"1", Minor:"2.3-build4"} -> 1,2 func MajorMinor(v version.Info) (int, int, error) { major, err := strconv.Atoi(v.Major) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/filters/traces.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/filters/traces.go index a3339773e9f..67a1790c56a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/filters/traces.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/filters/traces.go @@ -22,19 +22,17 @@ import ( "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/otel/trace" - "k8s.io/component-base/traces" + tracing "k8s.io/component-base/tracing" ) // WithTracing adds tracing to requests if the incoming request is sampled -func WithTracing(handler http.Handler, tp *trace.TracerProvider) http.Handler { +func WithTracing(handler http.Handler, tp trace.TracerProvider) http.Handler { opts := []otelhttp.Option{ - otelhttp.WithPropagators(traces.Propagators()), + otelhttp.WithPropagators(tracing.Propagators()), otelhttp.WithPublicEndpoint(), + otelhttp.WithTracerProvider(tp), } - if tp != nil { - opts = append(opts, otelhttp.WithTracerProvider(*tp)) - } - // Even if there is no TracerProvider, the otelhttp still handles context propagation. + // With Noop TracerProvider, the otelhttp still handles context propagation. // See https://github.com/open-telemetry/opentelemetry-go/tree/main/example/passthrough return otelhttp.NewHandler(handler, "KubernetesAPI", opts...) } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/equality.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/equality.go new file mode 100644 index 00000000000..366d88fcc50 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/equality.go @@ -0,0 +1,180 @@ +/* +Copyright 2021 The Kubernetes 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 fieldmanager + +import ( + "context" + "fmt" + "os" + "reflect" + "strconv" + "time" + + "k8s.io/apimachinery/pkg/api/equality" + "k8s.io/apimachinery/pkg/api/meta" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apiserver/pkg/endpoints/metrics" + "k8s.io/klog/v2" +) + +func determineAvoidNoopTimestampUpdatesEnabled() bool { + if avoidNoopTimestampUpdatesString, exists := os.LookupEnv("KUBE_APISERVER_AVOID_NOOP_SSA_TIMESTAMP_UPDATES"); exists { + if ret, err := strconv.ParseBool(avoidNoopTimestampUpdatesString); err == nil { + return ret + } else { + klog.Errorf("failed to parse envar KUBE_APISERVER_AVOID_NOOP_SSA_TIMESTAMP_UPDATES: %v", err) + } + } + + // enabled by default + return true +} + +var ( + avoidNoopTimestampUpdatesEnabled = determineAvoidNoopTimestampUpdatesEnabled() +) + +var avoidTimestampEqualities = func() conversion.Equalities { + var eqs = equality.Semantic.Copy() + + err := eqs.AddFunc( + func(a, b metav1.ManagedFieldsEntry) bool { + // Two objects' managed fields are equivalent if, ignoring timestamp, + // the objects are deeply equal. + a.Time = nil + b.Time = nil + return reflect.DeepEqual(a, b) + }, + ) + + if err != nil { + panic(err) + } + + return eqs +}() + +// IgnoreManagedFieldsTimestampsTransformer reverts timestamp updates +// if the non-managed parts of the object are equivalent +func IgnoreManagedFieldsTimestampsTransformer( + _ context.Context, + newObj runtime.Object, + oldObj runtime.Object, +) (res runtime.Object, err error) { + if !avoidNoopTimestampUpdatesEnabled { + return newObj, nil + } + + outcome := "unequal_objects_fast" + start := time.Now() + err = nil + res = nil + + defer func() { + if err != nil { + outcome = "error" + } + + metrics.RecordTimestampComparisonLatency(outcome, time.Since(start)) + }() + + // If managedFields modulo timestamps are unchanged + // and + // rest of object is unchanged + // then + // revert any changes to timestamps in managed fields + // (to prevent spurious ResourceVersion bump) + // + // Procecure: + // Do a quicker check to see if just managed fields modulo timestamps are + // unchanged. If so, then do the full, slower check. + // + // In most cases which actually update the object, the managed fields modulo + // timestamp check will fail, and we will be able to return early. + // + // In other cases, the managed fields may be exactly the same, + // except for timestamp, but the objects are the different. This is the + // slow path which checks the full object. + oldAccessor, err := meta.Accessor(oldObj) + if err != nil { + return nil, fmt.Errorf("failed to acquire accessor for oldObj: %v", err) + } + + accessor, err := meta.Accessor(newObj) + if err != nil { + return nil, fmt.Errorf("failed to acquire accessor for newObj: %v", err) + } + + oldManagedFields := oldAccessor.GetManagedFields() + newManagedFields := accessor.GetManagedFields() + + if len(oldManagedFields) != len(newManagedFields) { + // Return early if any managed fields entry was added/removed. + // We want to retain user expectation that even if they write to a field + // whose value did not change, they will still result as the field + // manager at the end. + return newObj, nil + } else if len(newManagedFields) == 0 { + // This transformation only makes sense when managedFields are + // non-empty + return newObj, nil + } + + // This transformation only makes sense if the managed fields has at least one + // changed timestamp; and are otherwise equal. Return early if there are no + // changed timestamps. + allTimesUnchanged := true + for i, e := range newManagedFields { + if !e.Time.Equal(oldManagedFields[i].Time) { + allTimesUnchanged = false + break + } + } + + if allTimesUnchanged { + return newObj, nil + } + + // This condition ensures the managed fields are always compared first. If + // this check fails, the if statement will short circuit. If the check + // succeeds the slow path is taken which compares entire objects. + if !avoidTimestampEqualities.DeepEqualWithNilDifferentFromEmpty(oldManagedFields, newManagedFields) { + return newObj, nil + } + + if avoidTimestampEqualities.DeepEqualWithNilDifferentFromEmpty(newObj, oldObj) { + // Remove any changed timestamps, so that timestamp is not the only + // change seen by etcd. + // + // newManagedFields is known to be exactly pairwise equal to + // oldManagedFields except for timestamps. + // + // Simply replace possibly changed new timestamps with their old values. + for idx := 0; idx < len(oldManagedFields); idx++ { + newManagedFields[idx].Time = oldManagedFields[idx].Time + } + + accessor.SetManagedFields(newManagedFields) + outcome = "equal_objects" + return newObj, nil + } + + outcome = "unequal_objects_slow" + return newObj, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/scalehandler.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/scalehandler.go index d81383628c7..d9844990c29 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/scalehandler.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/scalehandler.go @@ -56,9 +56,9 @@ func NewScaleHandler(parentEntries []metav1.ManagedFieldsEntry, groupVersion sch // ToSubresource filter the managed fields of the main resource and convert // them so that they can be handled by scale. // For the managed fields that have a replicas path it performs two changes: -// 1. APIVersion is changed to the APIVersion of the scale subresource -// 2. Replicas path of the main resource is transformed to the replicas path of -// the scale subresource +// 1. APIVersion is changed to the APIVersion of the scale subresource +// 2. Replicas path of the main resource is transformed to the replicas path of +// the scale subresource func (h *ScaleHandler) ToSubresource() ([]metav1.ManagedFieldsEntry, error) { managed, err := DecodeManagedFields(h.parentEntries) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/helpers.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/helpers.go index 3fb7beccad1..a0991e1a4c3 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/helpers.go @@ -83,7 +83,7 @@ type lazyAuditID struct { func (lazy *lazyAuditID) String() string { if lazy.req != nil { - return request.GetAuditIDTruncated(lazy.req) + return request.GetAuditIDTruncated(lazy.req.Context()) } return "unknown" diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/patch.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/patch.go index 6ee4904bf4f..a0a8fb6ca77 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/patch.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/patch.go @@ -659,8 +659,13 @@ func (p *patcher) patchResource(ctx context.Context, scope *RequestScope) (runti return obj, nil } + transformers := []rest.TransformFunc{p.applyPatch, p.applyAdmission, dedupOwnerReferencesTransformer} + if scope.FieldManager != nil { + transformers = append(transformers, fieldmanager.IgnoreManagedFieldsTimestampsTransformer) + } + wasCreated := false - p.updatedObjectInfo = rest.DefaultUpdatedObjectInfo(nil, p.applyPatch, p.applyAdmission, dedupOwnerReferencesTransformer) + p.updatedObjectInfo = rest.DefaultUpdatedObjectInfo(nil, transformers...) requestFunc := func() (runtime.Object, error) { // Pass in UpdateOptions to override UpdateStrategy.AllowUpdateOnCreate options := patchToUpdateOptions(p.options) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go index 87ab7b4dfe4..acb08800e11 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/responsewriters/writers.go @@ -36,7 +36,6 @@ import ( "k8s.io/apiserver/pkg/endpoints/handlers/negotiation" "k8s.io/apiserver/pkg/endpoints/metrics" "k8s.io/apiserver/pkg/endpoints/request" - endpointsrequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/registry/rest" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/apiserver/pkg/util/flushwriter" @@ -89,6 +88,7 @@ func StreamObject(statusCode int, gv schema.GroupVersion, s runtime.NegotiatedSe // a client and the feature gate for APIResponseCompression is enabled. func SerializeObject(mediaType string, encoder runtime.Encoder, hw http.ResponseWriter, req *http.Request, statusCode int, object runtime.Object) { trace := utiltrace.New("SerializeObject", + utiltrace.Field{"audit-id", request.GetAuditIDTruncated(req.Context())}, utiltrace.Field{"method", req.Method}, utiltrace.Field{"url", req.URL.Path}, utiltrace.Field{"protocol", req.Proto}, @@ -272,7 +272,7 @@ func WriteObjectNegotiated(s runtime.NegotiatedSerializer, restrictions negotiat audit.LogResponseObject(req.Context(), object, gv, s) encoder := s.EncoderForVersion(serializer.Serializer, gv) - endpointsrequest.TrackSerializeResponseObjectLatency(req.Context(), func() { + request.TrackSerializeResponseObjectLatency(req.Context(), func() { SerializeObject(serializer.MediaType, encoder, w, req, statusCode, object) }) } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/update.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/update.go index 1c8f140175d..cb0ba5d7de8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/update.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/handlers/update.go @@ -191,6 +191,15 @@ func UpdateResource(r rest.Updater, scope *RequestScope, admit admission.Interfa }) } + // Ignore changes that only affect managed fields + // timestamps. FieldManager can't know about changes + // like normalized fields, defaulted fields and other + // mutations. + // Only makes sense when SSA field manager is being used + if scope.FieldManager != nil { + transformers = append(transformers, fieldmanager.IgnoreManagedFieldsTimestampsTransformer) + } + createAuthorizerAttributes := authorizer.AttributesRecord{ User: userInfo, ResourceRequest: true, diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go index 4f851bb4a3b..dd7e82ca0aa 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go @@ -94,7 +94,7 @@ var ( // This metric is used for verifying api call latencies SLO, // as well as tracking regressions in this aspects. // Thus we customize buckets significantly, to empower both usecases. - Buckets: []float64{0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0, 1.25, 1.5, 2, 3, + Buckets: []float64{0.005, 0.025, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0, 1.25, 1.5, 2, 3, 4, 5, 6, 8, 10, 15, 20, 30, 45, 60}, StabilityLevel: compbasemetrics.STABLE, }, @@ -238,6 +238,18 @@ var ( []string{"source", "status"}, ) + requestTimestampComparisonDuration = compbasemetrics.NewHistogramVec( + &compbasemetrics.HistogramOpts{ + Name: "apiserver_request_timestamp_comparison_time", + Help: "Time taken for comparison of old vs new objects in UPDATE or PATCH requests", + Buckets: []float64{0.0001, 0.0003, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1.0, 5.0}, + StabilityLevel: compbasemetrics.ALPHA, + }, + // Path the code takes to reach a conclusion: + // i.e. unequalObjectsFast, unequalObjectsSlow, equalObjectsSlow + []string{"code_path"}, + ) + metrics = []resettableCollector{ deprecatedRequestGauge, requestCounter, @@ -256,6 +268,7 @@ var ( requestFilterDuration, requestAbortsTotal, requestPostTimeoutTotal, + requestTimestampComparisonDuration, } // these are the valid request methods which we report in our metrics. Any other request methods @@ -366,6 +379,10 @@ func RecordFilterLatency(ctx context.Context, name string, elapsed time.Duration requestFilterDuration.WithContext(ctx).WithLabelValues(name).Observe(elapsed.Seconds()) } +func RecordTimestampComparisonLatency(codePath string, elapsed time.Duration) { + requestTimestampComparisonDuration.WithLabelValues(codePath).Observe(elapsed.Seconds()) +} + func RecordRequestPostTimeout(source string, status string) { requestPostTimeoutTotal.WithLabelValues(source, status).Inc() } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/auditid.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/auditid.go index a7b3d84addb..536b25b84b9 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/auditid.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/request/auditid.go @@ -18,7 +18,6 @@ package request import ( "context" - "net/http" "k8s.io/apimachinery/pkg/types" ) @@ -45,12 +44,12 @@ func AuditIDFrom(ctx context.Context) (types.UID, bool) { return auditID, ok } -// GetAuditIDTruncated returns the audit ID (truncated) associated with a request. +// GetAuditIDTruncated returns the audit ID (truncated) from the request context. // If the length of the Audit-ID value exceeds the limit, we truncate it to keep // the first N (maxAuditIDLength) characters. // This is intended to be used in logging only. -func GetAuditIDTruncated(req *http.Request) string { - auditID, ok := AuditIDFrom(req.Context()) +func GetAuditIDTruncated(ctx context.Context) string { + auditID, ok := AuditIDFrom(ctx) if !ok { return "" } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/responsewriter/wrapper.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/responsewriter/wrapper.go index 758e7addd28..893dfa2812b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/responsewriter/wrapper.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/endpoints/responsewriter/wrapper.go @@ -42,19 +42,19 @@ type UserProvidedDecorator interface { // object implements the same subset of those interfaces as the inner http.ResponseWriter. // // This function handles the following three casses. -// - The inner ResponseWriter implements `http.CloseNotifier`, `http.Flusher`, -// and `http.Hijacker` (an HTTP/1.1 sever provides such a ResponseWriter). -// - The inner ResponseWriter implements `http.CloseNotifier` and `http.Flusher` -// but not `http.Hijacker` (an HTTP/2 server provides such a ResponseWriter). -// - All the other cases collapse to this one, in which the given ResponseWriter is returned. +// - The inner ResponseWriter implements `http.CloseNotifier`, `http.Flusher`, +// and `http.Hijacker` (an HTTP/1.1 sever provides such a ResponseWriter). +// - The inner ResponseWriter implements `http.CloseNotifier` and `http.Flusher` +// but not `http.Hijacker` (an HTTP/2 server provides such a ResponseWriter). +// - All the other cases collapse to this one, in which the given ResponseWriter is returned. // // There are three applicable terms: -// - "outer": this is the ResponseWriter object returned by the WrapForHTTP1Or2 function. -// - "user-provided decorator" or "middle": this is the user-provided decorator +// - "outer": this is the ResponseWriter object returned by the WrapForHTTP1Or2 function. +// - "user-provided decorator" or "middle": this is the user-provided decorator // that decorates an inner ResponseWriter object. A user-provided decorator // implements the UserProvidedDecorator interface. A user-provided decorator // may or may not implement http.CloseNotifier, http.Flusher or http.Hijacker. -// - "inner": the ResponseWriter that the user-provided decorator extends. +// - "inner": the ResponseWriter that the user-provided decorator extends. func WrapForHTTP1Or2(decorator UserProvidedDecorator) http.ResponseWriter { // from go net/http documentation: // The default HTTP/1.x and HTTP/2 ResponseWriter implementations support Flusher diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go index 54d1e15bf6e..4debb7bedb8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/features/kube_features.go @@ -84,6 +84,7 @@ const ( // owner: @cici37 // kep: http://kep.k8s.io/2876 // alpha: v1.23 + // beta: v1.25 // // Enables expression validation for Custom Resource CustomResourceValidationExpressions featuregate.Feature = "CustomResourceValidationExpressions" @@ -106,6 +107,13 @@ const ( // Allows for updating watchcache resource version with progress notify events. EfficientWatchResumption featuregate.Feature = "EfficientWatchResumption" + // owner: @aramase + // kep: http://kep.k8s.io/3299 + // alpha: v1.25 + // + // Enables KMS v2 API for encryption at rest. + KMSv2 featuregate.Feature = "KMSv2" + // owner: @jiahuif // kep: http://kep.k8s.io/2887 // alpha: v1.23 @@ -150,6 +158,7 @@ const ( // owner: @kevindelgado // kep: http://kep.k8s.io/2885 // alpha: v1.23 + // beta: v1.24 // // Enables server-side field validation. ServerSideFieldValidation featuregate.Feature = "ServerSideFieldValidation" @@ -197,12 +206,14 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS AdvancedAuditing: {Default: true, PreRelease: featuregate.GA}, - CustomResourceValidationExpressions: {Default: false, PreRelease: featuregate.Alpha}, + CustomResourceValidationExpressions: {Default: true, PreRelease: featuregate.Beta}, DryRun: {Default: true, PreRelease: featuregate.GA}, EfficientWatchResumption: {Default: true, PreRelease: featuregate.GA, LockToDefault: true}, + KMSv2: {Default: false, PreRelease: featuregate.Alpha}, + OpenAPIEnums: {Default: true, PreRelease: featuregate.Beta}, OpenAPIV3: {Default: true, PreRelease: featuregate.Beta}, @@ -213,7 +224,7 @@ var defaultKubernetesFeatureGates = map[featuregate.Feature]featuregate.FeatureS ServerSideApply: {Default: true, PreRelease: featuregate.GA}, - ServerSideFieldValidation: {Default: false, PreRelease: featuregate.Alpha}, + ServerSideFieldValidation: {Default: true, PreRelease: featuregate.Beta}, StorageVersionAPI: {Default: false, PreRelease: featuregate.Alpha}, diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go index 67015bbe35c..03ec793f81f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/registry/generic/registry/store.go @@ -924,13 +924,13 @@ func markAsDeleting(obj runtime.Object, now time.Time) (err error) { // grace period seconds (graceful deletion) and updating the list of // finalizers (finalization); it returns: // -// 1. an error -// 2. a boolean indicating that the object was not found, but it should be -// ignored -// 3. a boolean indicating that the object's grace period is exhausted and it -// should be deleted immediately -// 4. a new output object with the state that was updated -// 5. a copy of the last existing state of the object +// 1. an error +// 2. a boolean indicating that the object was not found, but it should be +// ignored +// 3. a boolean indicating that the object's grace period is exhausted and it +// should be deleted immediately +// 4. a new output object with the state that was updated +// 5. a copy of the last existing state of the object func (e *Store) updateForGracefulDeletionAndFinalizers(ctx context.Context, name, key string, options *metav1.DeleteOptions, preconditions storage.Preconditions, deleteValidation rest.ValidateObjectFunc, in runtime.Object) (err error, ignoreNotFound, deleteImmediately bool, out, lastExisting runtime.Object) { lastGraceful := int64(0) var pendingFinalizers bool diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/config.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/config.go index 60be44a7a21..d21ea2ef000 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/config.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/config.go @@ -30,7 +30,7 @@ import ( jsonpatch "github.com/evanphx/json-patch" "github.com/google/uuid" - "go.opentelemetry.io/otel/trace" + oteltrace "go.opentelemetry.io/otel/trace" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -52,7 +52,6 @@ import ( genericapifilters "k8s.io/apiserver/pkg/endpoints/filters" apiopenapi "k8s.io/apiserver/pkg/endpoints/openapi" apirequest "k8s.io/apiserver/pkg/endpoints/request" - "k8s.io/apiserver/pkg/features" genericfeatures "k8s.io/apiserver/pkg/features" genericregistry "k8s.io/apiserver/pkg/registry/generic" "k8s.io/apiserver/pkg/server/dynamiccertificates" @@ -62,7 +61,6 @@ import ( "k8s.io/apiserver/pkg/server/routes" serverstore "k8s.io/apiserver/pkg/server/storage" "k8s.io/apiserver/pkg/storageversion" - "k8s.io/apiserver/pkg/util/feature" utilfeature "k8s.io/apiserver/pkg/util/feature" utilflowcontrol "k8s.io/apiserver/pkg/util/flowcontrol" flowcontrolrequest "k8s.io/apiserver/pkg/util/flowcontrol/request" @@ -141,7 +139,7 @@ type Config struct { ExternalAddress string // TracerProvider can provide a tracer, which records spans for distributed tracing. - TracerProvider *trace.TracerProvider + TracerProvider oteltrace.TracerProvider //=========================================================================== // Fields you probably don't care about changing @@ -323,7 +321,7 @@ type AuthorizationInfo struct { func NewConfig(codecs serializer.CodecFactory) *Config { defaultHealthChecks := []healthz.HealthChecker{healthz.PingHealthz, healthz.LogHealthz} var id string - if feature.DefaultFeatureGate.Enabled(features.APIServerIdentity) { + if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIServerIdentity) { id = "kube-apiserver-" + uuid.New().String() } lifecycleSignals := newLifecycleSignals() @@ -374,6 +372,7 @@ func NewConfig(codecs serializer.CodecFactory) *Config { APIServerID: id, StorageVersionManager: storageversion.NewDefaultManager(), + TracerProvider: oteltrace.NewNoopTracerProvider(), } } @@ -452,11 +451,15 @@ type CompletedConfig struct { // of our configured apiserver. We should prefer this to adding healthChecks directly to // the config unless we explicitly want to add a healthcheck only to a specific health endpoint. func (c *Config) AddHealthChecks(healthChecks ...healthz.HealthChecker) { - for _, check := range healthChecks { - c.HealthzChecks = append(c.HealthzChecks, check) - c.LivezChecks = append(c.LivezChecks, check) - c.ReadyzChecks = append(c.ReadyzChecks, check) - } + c.HealthzChecks = append(c.HealthzChecks, healthChecks...) + c.LivezChecks = append(c.LivezChecks, healthChecks...) + c.ReadyzChecks = append(c.ReadyzChecks, healthChecks...) +} + +// AddReadyzChecks adds a health check to our config to be exposed by the readyz endpoint +// of our configured apiserver. +func (c *Config) AddReadyzChecks(healthChecks ...healthz.HealthChecker) { + c.ReadyzChecks = append(c.ReadyzChecks, healthChecks...) } // AddPostStartHook allows you to add a PostStartHook that will later be added to the server itself in a New call. @@ -717,7 +720,6 @@ func (c completedConfig) New(name string, delegationTarget DelegationTarget) (*G if s.isPostStartHookRegistered(priorityAndFairnessConfigConsumerHookName) { } else if c.FlowControl != nil { err := s.AddPostStartHook(priorityAndFairnessConfigConsumerHookName, func(context PostStartHookContext) error { - go c.FlowControl.MaintainObservations(context.StopCh) go c.FlowControl.Run(context.StopCh) return nil }) @@ -809,7 +811,9 @@ func DefaultBuildHandlerChain(apiHandler http.Handler, c *Config) http.Handler { handler = filterlatency.TrackStarted(handler, "authorization") if c.FlowControl != nil { - requestWorkEstimator := flowcontrolrequest.NewWorkEstimator(c.StorageObjectCountTracker.Get, c.FlowControl.GetInterestedWatchCount) + workEstimatorCfg := flowcontrolrequest.DefaultWorkEstimatorConfig() + requestWorkEstimator := flowcontrolrequest.NewWorkEstimator( + c.StorageObjectCountTracker.Get, c.FlowControl.GetInterestedWatchCount, workEstimatorCfg) handler = filterlatency.TrackCompleted(handler) handler = genericfilters.WithPriorityAndFairness(handler, c.LongRunningFunc, c.FlowControl, requestWorkEstimator) handler = filterlatency.TrackStarted(handler, "priorityandfairness") @@ -890,7 +894,7 @@ func installAPI(s *GenericAPIServer, c *Config) { if c.EnableDiscovery { s.Handler.GoRestfulContainer.Add(s.DiscoveryGroupManager.WebService()) } - if c.FlowControl != nil && feature.DefaultFeatureGate.Enabled(features.APIPriorityAndFairness) { + if c.FlowControl != nil && utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIPriorityAndFairness) { c.FlowControl.Install(s.Handler.NonGoRestfulMux) } } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/deleted_kinds.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/deleted_kinds.go index d29831022dc..ab10774cbe0 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/deleted_kinds.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/deleted_kinds.go @@ -54,10 +54,7 @@ type ResourceExpirationEvaluator interface { } func NewResourceExpirationEvaluator(currentVersion apimachineryversion.Info) (ResourceExpirationEvaluator, error) { - ret := &resourceExpirationEvaluator{ - // TODO https://github.com/kubernetes/kubernetes/issues/109799 set this back to false after beta is tagged. - strictRemovedHandlingInAlpha: true, - } + ret := &resourceExpirationEvaluator{} if len(currentVersion.Major) > 0 { currentMajor64, err := strconv.ParseInt(currentVersion.Major, 10, 32) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/named_certificates.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/named_certificates.go index e8be133c02e..7b9637bc0e0 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/named_certificates.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/named_certificates.go @@ -83,9 +83,7 @@ func getCertificateNames(cert *x509.Certificate) []string { if !cnIsIP && cnIsValidDomain { names = append(names, cn) } - for _, san := range cert.DNSNames { - names = append(names, san) - } + names = append(names, cert.DNSNames...) // intentionally all IPs in the cert are ignored as SNI forbids passing IPs // to select a cert. Before go 1.6 the tls happily passed IPs as SNI values. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/util.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/util.go index 6906045cd29..4e55a057833 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/util.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/dynamiccertificates/util.go @@ -50,9 +50,7 @@ func GetHumanCertDetail(certificate *x509.Certificate) string { for _, ip := range certificate.IPAddresses { validServingNames = append(validServingNames, ip.String()) } - for _, dnsName := range certificate.DNSNames { - validServingNames = append(validServingNames, dnsName) - } + validServingNames = append(validServingNames, certificate.DNSNames...) servingString := "" if len(validServingNames) > 0 { servingString = fmt.Sprintf(" validServingFor=[%s]", strings.Join(validServingNames, ",")) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/egressselector/egress_selector.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/egressselector/egress_selector.go index 1115c66d701..3f7bd4ad5dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/egressselector/egress_selector.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/egressselector/egress_selector.go @@ -30,6 +30,7 @@ import ( "time" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" utilnet "k8s.io/apimachinery/pkg/util/net" "k8s.io/apiserver/pkg/apis/apiserver" @@ -214,7 +215,8 @@ func (u *udsGRPCConnector) connect(_ context.Context) (proxier, error) { // we cannot use ctx just for dialing and control the connection lifetime separately. // See https://github.com/kubernetes-sigs/apiserver-network-proxy/issues/357. tunnelCtx := context.TODO() - tunnel, err := client.CreateSingleUseGrpcTunnel(tunnelCtx, udsName, dialOption, grpc.WithInsecure()) + tunnel, err := client.CreateSingleUseGrpcTunnel(tunnelCtx, udsName, dialOption, + grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { return nil, err } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/maxinflight.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/maxinflight.go index acfcf78c3f0..5d7b00ec337 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/maxinflight.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/maxinflight.go @@ -41,10 +41,6 @@ const ( // the metrics tracks maximal value over period making this // longer will increase the metric value. inflightUsageMetricUpdatePeriod = time.Second - - // How often to run maintenance on observations to ensure - // that they do not fall too far behind. - observationMaintenancePeriod = 10 * time.Second ) var ( @@ -90,9 +86,7 @@ func (w *requestWatermark) recordReadOnly(readOnlyVal int) { // watermark tracks requests being executed (not waiting in a queue) var watermark = &requestWatermark{ - phase: metrics.ExecutingPhase, - readOnlyObserver: fcmetrics.ReadWriteConcurrencyGaugeVec.NewForLabelValuesSafe(0, 1, []string{fcmetrics.LabelValueExecuting, metrics.ReadOnlyKind}), - mutatingObserver: fcmetrics.ReadWriteConcurrencyGaugeVec.NewForLabelValuesSafe(0, 1, []string{fcmetrics.LabelValueExecuting, metrics.MutatingKind}), + phase: metrics.ExecutingPhase, } // startWatermarkMaintenance starts the goroutines to observe and maintain the specified watermark. @@ -108,14 +102,25 @@ func startWatermarkMaintenance(watermark *requestWatermark, stopCh <-chan struct metrics.UpdateInflightRequestMetrics(watermark.phase, readOnlyWatermark, mutatingWatermark) }, inflightUsageMetricUpdatePeriod, stopCh) +} - // Periodically observe the watermarks. This is done to ensure that they do not fall too far behind. When they do - // fall too far behind, then there is a long delay in responding to the next request received while the observer - // catches back up. - go wait.Until(func() { - watermark.readOnlyObserver.Add(0) - watermark.mutatingObserver.Add(0) - }, observationMaintenancePeriod, stopCh) +var initMaxInFlightOnce sync.Once + +func initMaxInFlight(nonMutatingLimit, mutatingLimit int) { + initMaxInFlightOnce.Do(func() { + // Fetching these gauges is delayed until after their underlying metric has been registered + // so that this latches onto the efficient implementation. + watermark.readOnlyObserver = fcmetrics.GetExecutingReadonlyConcurrency() + watermark.mutatingObserver = fcmetrics.GetExecutingMutatingConcurrency() + if nonMutatingLimit != 0 { + watermark.readOnlyObserver.SetDenominator(float64(nonMutatingLimit)) + klog.V(2).InfoS("Set denominator for readonly requests", "limit", nonMutatingLimit) + } + if mutatingLimit != 0 { + watermark.mutatingObserver.SetDenominator(float64(mutatingLimit)) + klog.V(2).InfoS("Set denominator for mutating requests", "limit", mutatingLimit) + } + }) } // WithMaxInFlightLimit limits the number of in-flight requests to buffer size of the passed in channel. @@ -132,12 +137,17 @@ func WithMaxInFlightLimit( var mutatingChan chan bool if nonMutatingLimit != 0 { nonMutatingChan = make(chan bool, nonMutatingLimit) - watermark.readOnlyObserver.SetDenominator(float64(nonMutatingLimit)) + klog.V(2).InfoS("Initialized nonMutatingChan", "len", nonMutatingLimit) + } else { + klog.V(2).InfoS("Running with nil nonMutatingChan") } if mutatingLimit != 0 { mutatingChan = make(chan bool, mutatingLimit) - watermark.mutatingObserver.SetDenominator(float64(mutatingLimit)) + klog.V(2).InfoS("Initialized mutatingChan", "len", mutatingLimit) + } else { + klog.V(2).InfoS("Running with nil mutatingChan") } + initMaxInFlight(nonMutatingLimit, mutatingLimit) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/priority-and-fairness.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/priority-and-fairness.go index bd3116ed5fe..f62b809ce61 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/priority-and-fairness.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/priority-and-fairness.go @@ -21,6 +21,7 @@ import ( "fmt" "net/http" "runtime" + "sync" "sync/atomic" "time" @@ -46,9 +47,7 @@ type PriorityAndFairnessClassification struct { // waitingMark tracks requests waiting rather than being executed var waitingMark = &requestWatermark{ - phase: epmetrics.WaitingPhase, - readOnlyObserver: fcmetrics.ReadWriteConcurrencyGaugeVec.NewForLabelValuesSafe(0, 1, []string{fcmetrics.LabelValueWaiting, epmetrics.ReadOnlyKind}), - mutatingObserver: fcmetrics.ReadWriteConcurrencyGaugeVec.NewForLabelValuesSafe(0, 1, []string{fcmetrics.LabelValueWaiting, epmetrics.MutatingKind}), + phase: epmetrics.WaitingPhase, } var atomicMutatingExecuting, atomicReadOnlyExecuting int32 @@ -66,6 +65,8 @@ func truncateLogField(s string) string { return s } +var initAPFOnce sync.Once + // WithPriorityAndFairness limits the number of in-flight // requests in a fine-grained way. func WithPriorityAndFairness( @@ -78,6 +79,13 @@ func WithPriorityAndFairness( klog.Warningf("priority and fairness support not found, skipping") return handler } + initAPFOnce.Do(func() { + initMaxInFlight(0, 0) + // Fetching these gauges is delayed until after their underlying metric has been registered + // so that this latches onto the efficient implementation. + waitingMark.readOnlyObserver = fcmetrics.GetWaitingReadonlyConcurrency() + waitingMark.mutatingObserver = fcmetrics.GetWaitingMutatingConcurrency() + }) return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() requestInfo, ok := apirequest.RequestInfoFrom(ctx) @@ -125,14 +133,10 @@ func WithPriorityAndFairness( workEstimate := workEstimator(r, classification.FlowSchemaName, classification.PriorityLevelName) fcmetrics.ObserveWorkEstimatedSeats(classification.PriorityLevelName, classification.FlowSchemaName, workEstimate.MaxSeats()) - // nolint:logcheck // Not using the result of klog.V - // inside the if branch is okay, we just use it to - // determine whether the additional information should - // be added. - if klog.V(4).Enabled() { - httplog.AddKeyValue(ctx, "apf_iseats", workEstimate.InitialSeats) - httplog.AddKeyValue(ctx, "apf_fseats", workEstimate.FinalSeats) - } + httplog.AddKeyValue(ctx, "apf_iseats", workEstimate.InitialSeats) + httplog.AddKeyValue(ctx, "apf_fseats", workEstimate.FinalSeats) + httplog.AddKeyValue(ctx, "apf_additionalLatency", workEstimate.AdditionalLatency) + return workEstimate } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/wrap.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/wrap.go index b31f262edf5..e868deea3c9 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/wrap.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/filters/wrap.go @@ -50,11 +50,11 @@ func WithPanicRecovery(handler http.Handler, resolver request.RequestInfoResolve // This call can have different handlers, but the default chain rate limits. Call it after the metrics are updated // in case the rate limit delays it. If you outrun the rate for this one timed out requests, something has gone // seriously wrong with your server, but generally having a logging signal for timeouts is useful. - runtime.HandleError(fmt.Errorf("timeout or abort while handling: method=%v URI=%q audit-ID=%q", req.Method, req.RequestURI, request.GetAuditIDTruncated(req))) + runtime.HandleError(fmt.Errorf("timeout or abort while handling: method=%v URI=%q audit-ID=%q", req.Method, req.RequestURI, request.GetAuditIDTruncated(req.Context()))) return } http.Error(w, "This request caused apiserver to panic. Look in the logs for details.", http.StatusInternalServerError) - klog.ErrorS(nil, "apiserver panic'd", "method", req.Method, "URI", req.RequestURI, "audit-ID", request.GetAuditIDTruncated(req)) + klog.ErrorS(nil, "apiserver panic'd", "method", req.Method, "URI", req.RequestURI, "audit-ID", request.GetAuditIDTruncated(req.Context())) }) } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go index 7c62b621ccc..dbcbcbd8954 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/genericapiserver.go @@ -418,41 +418,44 @@ func (s *GenericAPIServer) PrepareRun() preparedGenericAPIServer { // or the secure port cannot be listened on initially. // This is the diagram of what channels/signals are dependent on each other: // -// stopCh -// | -// --------------------------------------------------------- -// | | -// ShutdownInitiated (shutdownInitiatedCh) | -// | | +// stopCh +// | +// --------------------------------------------------------- +// | | +// ShutdownInitiated (shutdownInitiatedCh) | +// | | +// // (ShutdownDelayDuration) (PreShutdownHooks) -// | | -// AfterShutdownDelayDuration (delayedStopCh) PreShutdownHooksStopped (preShutdownHooksHasStoppedCh) -// | | -// |-------------------------------------------------------| -// | -// | -// NotAcceptingNewRequest (notAcceptingNewRequestCh) -// | -// | -// |---------------------------------------------------------| -// | | | | -// [without [with | | +// +// | | +// AfterShutdownDelayDuration (delayedStopCh) PreShutdownHooksStopped (preShutdownHooksHasStoppedCh) +// | | +// |-------------------------------------------------------| +// | +// | +// NotAcceptingNewRequest (notAcceptingNewRequestCh) +// | +// | +// |---------------------------------------------------------| +// | | | | +// [without [with | | +// // ShutdownSendRetryAfter] ShutdownSendRetryAfter] | | -// | | | | -// | ---------------| | -// | | | -// | (HandlerChainWaitGroup::Wait) | -// | | | -// | InFlightRequestsDrained (drainedCh) | -// | | | -// ----------------------------------------|-----------------| -// | | -// stopHttpServerCh (AuditBackend::Shutdown()) -// | -// listenerStoppedCh -// | -// HTTPServerStoppedListening (httpServerStoppedListeningCh) // +// | | | | +// | ---------------| | +// | | | +// | (HandlerChainWaitGroup::Wait) | +// | | | +// | InFlightRequestsDrained (drainedCh) | +// | | | +// ----------------------------------------|-----------------| +// | | +// stopHttpServerCh (AuditBackend::Shutdown()) +// | +// listenerStoppedCh +// | +// HTTPServerStoppedListening (httpServerStoppedListeningCh) func (s preparedGenericAPIServer) Run(stopCh <-chan struct{}) error { delayedStopCh := s.lifecycleSignals.AfterShutdownDelayDuration shutdownInitiatedCh := s.lifecycleSignals.ShutdownInitiated diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/handler.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/handler.go index be52f81e027..9f37df1cdff 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/handler.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/handler.go @@ -154,7 +154,7 @@ func (d director) ServeHTTP(w http.ResponseWriter, req *http.Request) { d.nonGoRestfulMux.ServeHTTP(w, req) } -//TODO: Unify with RecoverPanics? +// TODO: Unify with RecoverPanics? func logStackOnRecover(s runtime.NegotiatedSerializer, panicReason interface{}, w http.ResponseWriter) { var buffer bytes.Buffer buffer.WriteString(fmt.Sprintf("recover from panic situation: - %v\r\n", panicReason)) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/doc.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/doc.go index d938caa3713..ad3f0018733 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/healthz/doc.go @@ -16,6 +16,7 @@ limitations under the License. // Package healthz implements basic http server health checking. // Usage: -// import "k8s.io/apiserver/pkg/server/healthz" -// healthz.InstallHandler(mux) +// +// import "k8s.io/apiserver/pkg/server/healthz" +// healthz.InstallHandler(mux) package healthz // import "k8s.io/apiserver/pkg/server/healthz" diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/hooks.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/hooks.go index 999ad36000c..b33ddd04618 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/hooks.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/hooks.go @@ -35,6 +35,7 @@ import ( // 2. conflicts between the different processes all trying to perform the same action // 3. partially complete work (API server crashes while running your hook) // 4. API server access **BEFORE** your hook has completed +// // Think of it like a mini-controller that is super privileged and gets to run in-process // If you use this feature, tag @deads2k on github who has promised to review code for anyone's PostStartHook // until it becomes easier to use. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go index 5a290fb63b1..9256ab4c621 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/httplog/httplog.go @@ -239,7 +239,7 @@ func SetStacktracePredicate(ctx context.Context, pred StacktracePred) { // Log is intended to be called once at the end of your request handler, via defer func (rl *respLogger) Log() { latency := time.Since(rl.startTime) - auditID := request.GetAuditIDTruncated(rl.req) + auditID := request.GetAuditIDTruncated(rl.req.Context()) verb := rl.req.Method if requestInfo, ok := request.RequestInfoFrom(rl.req.Context()); ok { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/lifecycle_signals.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/lifecycle_signals.go index d39efa5be21..ce4c1b4a6ed 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/lifecycle_signals.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/lifecycle_signals.go @@ -107,8 +107,8 @@ type lifecycleSignal interface { // for us to write unit tests that can verify expected graceful termination behavior. // // GenericAPIServer can use these to either: -// - signal that a particular termination event has transpired -// - wait for a designated termination event to transpire and do some action. +// - signal that a particular termination event has transpired +// - wait for a designated termination event to transpire and do some action. type lifecycleSignals struct { // ShutdownInitiated event is signaled when an apiserver shutdown has been initiated. // It is signaled when the `stopCh` provided by the main goroutine diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/admission.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/admission.go index 2d77e68979c..c265677bbbf 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/admission.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/admission.go @@ -70,12 +70,13 @@ type AdmissionOptions struct { // NewAdmissionOptions creates a new instance of AdmissionOptions // Note: -// In addition it calls RegisterAllAdmissionPlugins to register -// all generic admission plugins. // -// Provides the list of RecommendedPluginOrder that holds sane values -// that can be used by servers that don't care about admission chain. -// Servers that do care can overwrite/append that field after creation. +// In addition it calls RegisterAllAdmissionPlugins to register +// all generic admission plugins. +// +// Provides the list of RecommendedPluginOrder that holds sane values +// that can be used by servers that don't care about admission chain. +// Servers that do care can overwrite/append that field after creation. func NewAdmissionOptions() *AdmissionOptions { options := &AdmissionOptions{ Plugins: admission.NewPlugins(), @@ -115,7 +116,8 @@ func (a *AdmissionOptions) AddFlags(fs *pflag.FlagSet) { // In case admission plugin names were not provided by a cluster-admin they will be prepared from the recommended/default values. // In addition the method lazily initializes a generic plugin that is appended to the list of pluginInitializers // note this method uses: -// genericconfig.Authorizer +// +// genericconfig.Authorizer func (a *AdmissionOptions) ApplyTo( c *server.Config, informers informers.SharedInformerFactory, @@ -220,7 +222,7 @@ func (a *AdmissionOptions) enabledPluginNames() []string { return orderedPlugins } -//Return names of plugins which are enabled by default +// Return names of plugins which are enabled by default func (a *AdmissionOptions) defaultEnabledPluginNames() []string { defaultOnPluginNames := []string{} for _, pluginName := range a.RecommendedPluginOrder { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/audit.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/audit.go index 06e7f940862..f3c9adba04f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/audit.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/audit.go @@ -20,6 +20,7 @@ import ( "fmt" "io" "os" + "path/filepath" "strings" "time" @@ -525,6 +526,9 @@ func (o *AuditLogOptions) getWriter() (io.Writer, error) { } func (o *AuditLogOptions) ensureLogFile() error { + if err := os.MkdirAll(filepath.Dir(o.Path), 0700); err != nil { + return err + } mode := os.FileMode(0600) f, err := os.OpenFile(o.Path, os.O_CREATE|os.O_APPEND|os.O_RDWR, mode) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/authorization.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/authorization.go index 6a3f5a4bb55..c31ce47f8ca 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/authorization.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/authorization.go @@ -38,8 +38,9 @@ import ( // DelegatingAuthorizationOptions provides an easy way for composing API servers to delegate their authorization to // the root kube API server. // WARNING: never assume that every authenticated incoming request already does authorization. -// The aggregator in the kube API server does this today, but this behaviour is not -// guaranteed in the future. +// +// The aggregator in the kube API server does this today, but this behaviour is not +// guaranteed in the future. type DelegatingAuthorizationOptions struct { // RemoteKubeConfigFile is the file to use to connect to a "normal" kube API server which hosts the // SubjectAccessReview.authorization.k8s.io endpoint for checking tokens. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/coreapi.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/coreapi.go index c1293980f7d..12a65517e1f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/coreapi.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/coreapi.go @@ -28,7 +28,7 @@ import ( clientgoclientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" - "k8s.io/component-base/traces" + tracing "k8s.io/component-base/tracing" ) // CoreAPIOptions contains options to configure the connection to a core API Kubernetes apiserver. @@ -73,7 +73,7 @@ func (o *CoreAPIOptions) ApplyTo(config *server.RecommendedConfig) error { } } if feature.DefaultFeatureGate.Enabled(features.APIServerTracing) { - kubeconfig.Wrap(traces.WrapperFor(config.TracerProvider)) + kubeconfig.Wrap(tracing.WrapperFor(config.TracerProvider)) } clientgoExternalClient, err := clientgoclientset.NewForConfig(kubeconfig) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/encryptionconfig/config.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/encryptionconfig/config.go index 6b7857e3540..1ce4795c33f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/encryptionconfig/config.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/encryptionconfig/config.go @@ -37,12 +37,15 @@ import ( apiserverconfig "k8s.io/apiserver/pkg/apis/config" apiserverconfigv1 "k8s.io/apiserver/pkg/apis/config/v1" "k8s.io/apiserver/pkg/apis/config/validation" + "k8s.io/apiserver/pkg/features" "k8s.io/apiserver/pkg/server/healthz" "k8s.io/apiserver/pkg/storage/value" aestransformer "k8s.io/apiserver/pkg/storage/value/encrypt/aes" "k8s.io/apiserver/pkg/storage/value/encrypt/envelope" + envelopekmsv2 "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2" "k8s.io/apiserver/pkg/storage/value/encrypt/identity" "k8s.io/apiserver/pkg/storage/value/encrypt/secretbox" + utilfeature "k8s.io/apiserver/pkg/util/feature" ) const ( @@ -50,8 +53,11 @@ const ( aesGCMTransformerPrefixV1 = "k8s:enc:aesgcm:v1:" secretboxTransformerPrefixV1 = "k8s:enc:secretbox:v1:" kmsTransformerPrefixV1 = "k8s:enc:kms:v1:" + kmsTransformerPrefixV2 = "k8s:enc:kms:v2:" kmsPluginHealthzNegativeTTL = 3 * time.Second kmsPluginHealthzPositiveTTL = 20 * time.Second + kmsAPIVersionV1 = "v1" + kmsAPIVersionV2 = "v2" ) type kmsPluginHealthzResponse struct { @@ -67,12 +73,26 @@ type kmsPluginProbe struct { l *sync.Mutex } +type kmsv2PluginProbe struct { + name string + ttl time.Duration + envelopekmsv2.Service + lastResponse *kmsPluginHealthzResponse + l *sync.Mutex +} + func (h *kmsPluginProbe) toHealthzCheck(idx int) healthz.HealthChecker { return healthz.NamedCheck(fmt.Sprintf("kms-provider-%d", idx), func(r *http.Request) error { return h.Check() }) } +func (p *kmsv2PluginProbe) toHealthzCheck(idx int) healthz.HealthChecker { + return healthz.NamedCheck(fmt.Sprintf("kms-provider-%d", idx), func(r *http.Request) error { + return p.Check() + }) +} + // GetKMSPluginHealthzCheckers extracts KMSPluginProbes from the EncryptionConfig. func GetKMSPluginHealthzCheckers(filepath string) ([]healthz.HealthChecker, error) { f, err := os.Open(filepath) @@ -80,47 +100,79 @@ func GetKMSPluginHealthzCheckers(filepath string) ([]healthz.HealthChecker, erro return nil, fmt.Errorf("error opening encryption provider configuration file %q: %v", filepath, err) } defer f.Close() + var result []healthz.HealthChecker probes, err := getKMSPluginProbes(f) if err != nil { return nil, err } - for i, p := range probes { probe := p - result = append(result, probe.toHealthzCheck(i)) + switch t := probe.(type) { + case *kmsPluginProbe: + result = append(result, t.toHealthzCheck(i)) + case *kmsv2PluginProbe: + result = append(result, t.toHealthzCheck(i)) + default: + return nil, fmt.Errorf("unsupported KMS plugin type: %T", t) + } } + return result, nil } -func getKMSPluginProbes(reader io.Reader) ([]*kmsPluginProbe, error) { - var result []*kmsPluginProbe +func getKMSPluginProbes(reader io.Reader) ([]interface{}, error) { + var result []interface{} configFileContents, err := ioutil.ReadAll(reader) if err != nil { - return result, fmt.Errorf("could not read content of encryption provider configuration: %v", err) + return nil, fmt.Errorf("could not read content of encryption provider configuration: %v", err) } config, err := loadConfig(configFileContents) if err != nil { - return result, fmt.Errorf("error while parsing encryption provider configuration: %v", err) + return nil, fmt.Errorf("error while parsing encryption provider configuration: %v", err) } for _, r := range config.Resources { for _, p := range r.Providers { if p.KMS != nil { - s, err := envelope.NewGRPCService(p.KMS.Endpoint, p.KMS.Timeout.Duration) - if err != nil { - return nil, fmt.Errorf("could not configure KMS-Plugin's probe %q, error: %v", p.KMS.Name, err) + switch p.KMS.APIVersion { + case kmsAPIVersionV1: + s, err := envelope.NewGRPCService(p.KMS.Endpoint, p.KMS.Timeout.Duration) + if err != nil { + return nil, fmt.Errorf("could not configure KMSv1-Plugin's probe %q, error: %v", p.KMS.Name, err) + } + + result = append(result, &kmsPluginProbe{ + name: p.KMS.Name, + ttl: kmsPluginHealthzNegativeTTL, + Service: s, + l: &sync.Mutex{}, + lastResponse: &kmsPluginHealthzResponse{}, + }) + + case kmsAPIVersionV2: + if !utilfeature.DefaultFeatureGate.Enabled(features.KMSv2) { + return nil, fmt.Errorf("could not configure KMSv2-Plugin's probe %q, KMSv2 feature is not enabled", p.KMS.Name) + } + + s, err := envelopekmsv2.NewGRPCService(p.KMS.Endpoint, p.KMS.Timeout.Duration) + if err != nil { + return nil, fmt.Errorf("could not configure KMSv2-Plugin's probe %q, error: %v", p.KMS.Name, err) + } + + result = append(result, &kmsv2PluginProbe{ + name: p.KMS.Name, + ttl: kmsPluginHealthzNegativeTTL, + Service: s, + l: &sync.Mutex{}, + lastResponse: &kmsPluginHealthzResponse{}, + }) + + default: + return nil, fmt.Errorf("could not configure KMS Plugin's probe %q, unsupported KMS API version %q", p.KMS.Name, p.KMS.APIVersion) } - - result = append(result, &kmsPluginProbe{ - name: p.KMS.Name, - ttl: kmsPluginHealthzNegativeTTL, - Service: s, - l: &sync.Mutex{}, - lastResponse: &kmsPluginHealthzResponse{}, - }) } } } @@ -155,6 +207,53 @@ func (h *kmsPluginProbe) Check() error { return nil } +// Check gets the healthz status of the KMSv2-Plugin using the Status() method. +func (h *kmsv2PluginProbe) Check() error { + h.l.Lock() + defer h.l.Unlock() + + if (time.Since(h.lastResponse.received)) < h.ttl { + return h.lastResponse.err + } + + ctx := context.Background() + p, err := h.Service.Status(ctx) + if err != nil { + h.lastResponse = &kmsPluginHealthzResponse{err: err, received: time.Now()} + h.ttl = kmsPluginHealthzNegativeTTL + return fmt.Errorf("failed to perform status section of the healthz check for KMS Provider %s, error: %v", h.name, err) + } + + if err := isKMSv2ProviderHealthy(h.name, p); err != nil { + h.lastResponse = &kmsPluginHealthzResponse{err: err, received: time.Now()} + h.ttl = kmsPluginHealthzNegativeTTL + return err + } + + h.lastResponse = &kmsPluginHealthzResponse{err: nil, received: time.Now()} + h.ttl = kmsPluginHealthzPositiveTTL + return nil +} + +// isKMSv2ProviderHealthy checks if the KMSv2-Plugin is healthy. +func isKMSv2ProviderHealthy(name string, response *envelopekmsv2.StatusResponse) error { + var errs []error + if response.Healthz != "ok" { + errs = append(errs, fmt.Errorf("got unexpected healthz status: %s", response.Healthz)) + } + if response.Version != envelopekmsv2.KMSAPIVersion { + errs = append(errs, fmt.Errorf("expected KMSv2 API version %s, got %s", envelopekmsv2.KMSAPIVersion, response.Version)) + } + if len(response.KeyID) == 0 { + errs = append(errs, fmt.Errorf("expected KMSv2 KeyID to be set, got %s", response.KeyID)) + } + + if err := utilerrors.Reduce(utilerrors.NewAggregate(errs)); err != nil { + return fmt.Errorf("kmsv2 Provider %s is not healthy, error: %v", name, err) + } + return nil +} + // GetTransformerOverrides returns the transformer overrides by reading and parsing the encryption provider configuration file func GetTransformerOverrides(filepath string) (map[schema.GroupResource]value.Transformer, error) { f, err := os.Open(filepath) @@ -224,8 +323,13 @@ func loadConfig(data []byte) (*apiserverconfig.EncryptionConfiguration, error) { return config, validation.ValidateEncryptionConfiguration(config).ToAggregate() } -// The factory to create kms service. This is to make writing test easier. -var envelopeServiceFactory = envelope.NewGRPCService +var ( + // The factory to create kms service. This is to make writing test easier. + envelopeServiceFactory = envelope.NewGRPCService + + // The factory to create kmsv2 service. + envelopeKMSv2ServiceFactory = envelopekmsv2.NewGRPCService +) func prefixTransformers(config *apiserverconfig.ResourceConfiguration) ([]value.PrefixTransformer, error) { var result []value.PrefixTransformer @@ -243,13 +347,26 @@ func prefixTransformers(config *apiserverconfig.ResourceConfiguration) ([]value. case provider.Secretbox != nil: transformer, err = secretboxPrefixTransformer(provider.Secretbox) case provider.KMS != nil: - var envelopeService envelope.Service - envelopeService, err = envelopeServiceFactory(provider.KMS.Endpoint, provider.KMS.Timeout.Duration) - if err != nil { - return nil, fmt.Errorf("could not configure KMS plugin %q, error: %v", provider.KMS.Name, err) - } + switch provider.KMS.APIVersion { + case kmsAPIVersionV1: + var envelopeService envelope.Service + if envelopeService, err = envelopeServiceFactory(provider.KMS.Endpoint, provider.KMS.Timeout.Duration); err != nil { + return nil, fmt.Errorf("could not configure KMS plugin %q, error: %v", provider.KMS.Name, err) + } + transformer, err = envelopePrefixTransformer(provider.KMS, envelopeService, kmsTransformerPrefixV1) + case kmsAPIVersionV2: + if !utilfeature.DefaultFeatureGate.Enabled(features.KMSv2) { + return nil, fmt.Errorf("could not configure KMSv2 plugin %q, KMSv2 feature is not enabled", provider.KMS.Name) + } - transformer, err = envelopePrefixTransformer(provider.KMS, envelopeService, kmsTransformerPrefixV1) + var envelopeService envelopekmsv2.Service + if envelopeService, err = envelopeKMSv2ServiceFactory(provider.KMS.Endpoint, provider.KMS.Timeout.Duration); err != nil { + return nil, fmt.Errorf("could not configure KMSv2 plugin %q, error: %v", provider.KMS.Name, err) + } + transformer, err = envelopekmsv2PrefixTransformer(provider.KMS, envelopeService, kmsTransformerPrefixV2) + default: + return nil, fmt.Errorf("could not configure KMS plugin %q, unsupported KMS API version %q", provider.KMS.Name, provider.KMS.APIVersion) + } case provider.Identity != nil: transformer = value.PrefixTransformer{ Transformer: identity.NewEncryptCheckTransformer(), @@ -369,8 +486,10 @@ func secretboxPrefixTransformer(config *apiserverconfig.SecretboxConfiguration) func envelopePrefixTransformer(config *apiserverconfig.KMSConfiguration, envelopeService envelope.Service, prefix string) (value.PrefixTransformer, error) { baseTransformerFunc := func(block cipher.Block) value.Transformer { // v1.24: write using AES-CBC only but support reads via AES-CBC and AES-GCM (so we can move to AES-GCM) - // TODO(aramase): swap this ordering in v1.25 - return unionTransformers{aestransformer.NewCBCTransformer(block), aestransformer.NewGCMTransformer(block)} + // v1.25: write using AES-GCM only but support reads via AES-GCM and fallback to AES-CBC for backwards compatibility + // TODO(aramase): Post v1.25: We cannot drop CBC read support until we automate storage migration. + // We could have a release note that hard requires users to perform storage migration. + return unionTransformers{aestransformer.NewGCMTransformer(block), aestransformer.NewCBCTransformer(block)} } envelopeTransformer, err := envelope.NewEnvelopeTransformer(envelopeService, int(*config.CacheSize), baseTransformerFunc) @@ -383,6 +502,18 @@ func envelopePrefixTransformer(config *apiserverconfig.KMSConfiguration, envelop }, nil } +func envelopekmsv2PrefixTransformer(config *apiserverconfig.KMSConfiguration, envelopeService envelopekmsv2.Service, prefix string) (value.PrefixTransformer, error) { + // using AES-GCM by default for encrypting data with KMSv2 + envelopeTransformer, err := envelopekmsv2.NewEnvelopeTransformer(envelopeService, int(*config.CacheSize), aestransformer.NewGCMTransformer) + if err != nil { + return value.PrefixTransformer{}, err + } + return value.PrefixTransformer{ + Transformer: envelopeTransformer, + Prefix: []byte(prefix + config.Name + ":"), + }, nil +} + type unionTransformers []value.Transformer func (u unionTransformers) TransformFromStorage(ctx context.Context, data []byte, dataCtx value.Context) (out []byte, stale bool, err error) { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/etcd.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/etcd.go index ed108badf5e..00c43324b6f 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/etcd.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/etcd.go @@ -183,6 +183,9 @@ func (s *EtcdOptions) AddFlags(fs *pflag.FlagSet) { fs.DurationVar(&s.StorageConfig.HealthcheckTimeout, "etcd-healthcheck-timeout", s.StorageConfig.HealthcheckTimeout, "The timeout to use when checking etcd health.") + fs.DurationVar(&s.StorageConfig.ReadycheckTimeout, "etcd-readycheck-timeout", s.StorageConfig.ReadycheckTimeout, + "The timeout to use when checking etcd readiness") + fs.Int64Var(&s.StorageConfig.LeaseManagerConfig.ReuseDurationSeconds, "lease-reuse-duration-seconds", s.StorageConfig.LeaseManagerConfig.ReuseDurationSeconds, "The time in seconds that each lease is reused. A lower value could avoid large number of objects reusing the same lease. Notice that a too small value may cause performance problems at storage layer.") } @@ -234,6 +237,14 @@ func (s *EtcdOptions) addEtcdHealthEndpoint(c *server.Config) error { return healthCheck() })) + readyCheck, err := storagefactory.CreateReadyCheck(s.StorageConfig, c.DrainedNotify()) + if err != nil { + return err + } + c.AddReadyzChecks(healthz.NamedCheck("etcd-readiness", func(r *http.Request) error { + return readyCheck() + })) + if s.EncryptionProviderConfigFilepath != "" { kmsPluginHealthzChecks, err := encryptionconfig.GetKMSPluginHealthzCheckers(s.EncryptionProviderConfigFilepath) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/recommended.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/recommended.go index 0d9c6ca9f40..4c8e1e2a3e7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/recommended.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/recommended.go @@ -107,10 +107,8 @@ func (o *RecommendedOptions) ApplyTo(config *server.RecommendedConfig) error { if err := o.EgressSelector.ApplyTo(&config.Config); err != nil { return err } - if feature.DefaultFeatureGate.Enabled(features.APIServerTracing) { - if err := o.Traces.ApplyTo(config.Config.EgressSelector, &config.Config); err != nil { - return err - } + if err := o.Traces.ApplyTo(config.Config.EgressSelector, &config.Config); err != nil { + return err } if err := o.SecureServing.ApplyTo(&config.Config.SecureServing, &config.Config.LoopbackClientConfig); err != nil { return err diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/tracing.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/tracing.go index bea7f363a93..379691a0803 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/tracing.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/server/options/tracing.go @@ -19,24 +19,39 @@ package options import ( "context" "fmt" + "io/ioutil" "net" "github.com/spf13/pflag" "go.opentelemetry.io/otel/exporters/otlp/otlpgrpc" "go.opentelemetry.io/otel/sdk/resource" - sdktrace "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/semconv" "google.golang.org/grpc" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/serializer" + "k8s.io/apiserver/pkg/apis/apiserver" + "k8s.io/apiserver/pkg/apis/apiserver/install" + "k8s.io/apiserver/pkg/features" "k8s.io/apiserver/pkg/server" "k8s.io/apiserver/pkg/server/egressselector" - "k8s.io/apiserver/pkg/tracing" - "k8s.io/component-base/traces" + "k8s.io/apiserver/pkg/util/feature" + tracing "k8s.io/component-base/tracing" + tracingapi "k8s.io/component-base/tracing/api/v1" "k8s.io/utils/path" ) const apiserverService = "apiserver" +var ( + cfgScheme = runtime.NewScheme() + codecs = serializer.NewCodecFactory(cfgScheme) +) + +func init() { + install.Install(cfgScheme) +} + // TracingOptions contain configuration options for tracing // exporters type TracingOptions struct { @@ -64,21 +79,21 @@ func (o *TracingOptions) ApplyTo(es *egressselector.EgressSelector, c *server.Co if o == nil || o.ConfigFile == "" { return nil } + if !feature.DefaultFeatureGate.Enabled(features.APIServerTracing) { + return fmt.Errorf("APIServerTracing feature is not enabled, but tracing config file was provided") + } - npConfig, err := tracing.ReadTracingConfiguration(o.ConfigFile) + traceConfig, err := ReadTracingConfiguration(o.ConfigFile) if err != nil { return fmt.Errorf("failed to read tracing config: %v", err) } - errs := tracing.ValidateTracingConfiguration(npConfig) + errs := tracingapi.ValidateTracingConfiguration(traceConfig, feature.DefaultFeatureGate, nil) if len(errs) > 0 { return fmt.Errorf("failed to validate tracing configuration: %v", errs.ToAggregate()) } opts := []otlpgrpc.Option{} - if npConfig.Endpoint != nil { - opts = append(opts, otlpgrpc.WithEndpoint(*npConfig.Endpoint)) - } if es != nil { // Only use the egressselector dialer if egressselector is enabled. // Endpoint is on the "ControlPlane" network @@ -93,21 +108,19 @@ func (o *TracingOptions) ApplyTo(es *egressselector.EgressSelector, c *server.Co opts = append(opts, otlpgrpc.WithDialOption(grpc.WithContextDialer(otelDialer))) } - sampler := sdktrace.NeverSample() - if npConfig.SamplingRatePerMillion != nil && *npConfig.SamplingRatePerMillion > 0 { - sampler = sdktrace.TraceIDRatioBased(float64(*npConfig.SamplingRatePerMillion) / float64(1000000)) - } - resourceOpts := []resource.Option{ resource.WithAttributes( semconv.ServiceNameKey.String(apiserverService), semconv.ServiceInstanceIDKey.String(c.APIServerID), ), } - tp := traces.NewProvider(context.Background(), sampler, resourceOpts, opts...) - c.TracerProvider = &tp + tp, err := tracing.NewProvider(context.Background(), traceConfig, opts, resourceOpts) + if err != nil { + return err + } + c.TracerProvider = tp if c.LoopbackClientConfig != nil { - c.LoopbackClientConfig.Wrap(traces.WrapperFor(c.TracerProvider)) + c.LoopbackClientConfig.Wrap(tracing.WrapperFor(c.TracerProvider)) } return nil } @@ -125,3 +138,24 @@ func (o *TracingOptions) Validate() (errs []error) { } return } + +// ReadTracingConfiguration reads the tracing configuration from a file +func ReadTracingConfiguration(configFilePath string) (*tracingapi.TracingConfiguration, error) { + if configFilePath == "" { + return nil, fmt.Errorf("tracing config file was empty") + } + data, err := ioutil.ReadFile(configFilePath) + if err != nil { + return nil, fmt.Errorf("unable to read tracing configuration from %q: %v", configFilePath, err) + } + internalConfig := &apiserver.TracingConfiguration{} + // this handles json/yaml/whatever, and decodes all registered version to the internal version + if err := runtime.DecodeInto(codecs.UniversalDecoder(), data, internalConfig); err != nil { + return nil, fmt.Errorf("unable to decode tracing configuration data: %v", err) + } + tc := &tracingapi.TracingConfiguration{ + Endpoint: internalConfig.Endpoint, + SamplingRatePerMillion: internalConfig.SamplingRatePerMillion, + } + return tc, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go index dfd620a3ca1..24dd64d9e66 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/cacher.go @@ -34,6 +34,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" + endpointsrequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/features" "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/cacher/metrics" @@ -46,7 +47,7 @@ import ( ) var ( - emptyFunc = func() {} + emptyFunc = func(bool) {} ) const ( @@ -146,6 +147,10 @@ func (i *indexedWatchers) deleteWatcher(number int, value string, supported bool } func (i *indexedWatchers) terminateAll(objectType reflect.Type, done func(*cacheWatcher)) { + // note that we don't have to call setDrainInputBufferLocked method on the watchers + // because we take advantage of the default value - stop immediately + // also watchers that have had already its draining strategy set + // are no longer available (they were removed from the allWatchers and the valueWatchers maps) if len(i.allWatchers) > 0 || len(i.valueWatchers) > 0 { klog.Warningf("Terminating all watchers from cacher %v", objectType) } @@ -182,6 +187,10 @@ func newTimeBucketWatchers(clock clock.Clock, bookmarkFrequency time.Duration) * // adds a watcher to the bucket, if the deadline is before the start, it will be // added to the first one. func (t *watcherBookmarkTimeBuckets) addWatcher(w *cacheWatcher) bool { + // note that the returned time can be before t.createTime, + // especially in cases when the nextBookmarkTime method + // give us the zero value of type Time + // so buckedID can hold a negative value nextTime, ok := w.nextBookmarkTime(t.clock.Now(), t.bookmarkFrequency) if !ok { return false @@ -296,6 +305,8 @@ type Cacher struct { watchersToStop []*cacheWatcher // Maintain a timeout queue to send the bookmark event before the watcher times out. bookmarkWatchers *watcherBookmarkTimeBuckets + // expiredBookmarkWatchers is a list of watchers that were expired and need to be schedule for a next bookmark event + expiredBookmarkWatchers []*cacheWatcher } // NewCacherFromConfig creates a new Cacher responsible for servicing WATCH and LIST requests from @@ -374,6 +385,10 @@ func NewCacherFromConfig(config Config) (*Cacher, error) { // Configure reflector's pager to for an appropriate pagination chunk size for fetching data from // storage. The pager falls back to full list if paginated list calls fail due to an "Expired" error. reflector.WatchListPageSize = storageWatchListPageSize + // When etcd loses leader for 3 cycles, it returns error "no leader". + // We don't want to terminate all watchers as recreating all watchers puts high load on api-server. + // In most of the cases, leader is reelected within few cycles. + reflector.MaxInternalErrorRetryDuration = time.Second * 30 cacher.watchCache = watchCache cacher.reflector = reflector @@ -477,21 +492,12 @@ func (c *Cacher) Watch(ctx context.Context, key string, opts storage.ListOptions } } - // If there is indexedTrigger defined, but triggerSupported is false, - // we can't narrow the amount of events significantly at this point. - // - // That said, currently indexedTrigger is defined only for couple resources: - // Pods, Nodes, Secrets and ConfigMaps and there is only a constant - // number of watchers for which triggerSupported is false (excluding those - // issued explicitly by users). - // Thus, to reduce the risk of those watchers blocking all watchers of a - // given resource in the system, we increase the sizes of buffers for them. - chanSize := 10 - if c.indexedTrigger != nil && !triggerSupported { - // TODO: We should tune this value and ideally make it dependent on the - // number of objects of a given type and/or their churn. - chanSize = 1000 - } + // It boils down to a tradeoff between: + // - having it as small as possible to reduce memory usage + // - having it large enough to ensure that watchers that need to process + // a bunch of changes have enough buffer to avoid from blocking other + // watchers on our watcher having a processing hiccup + chanSize := c.watchCache.suggestedWatchChannelSize(c.indexedTrigger != nil, triggerSupported) // Determine watch timeout('0' means deadline is not set, ignore checking) deadline, _ := ctx.Deadline() @@ -523,7 +529,7 @@ func (c *Cacher) Watch(ctx context.Context, key string, opts storage.ListOptions c.Lock() defer c.Unlock() // Update watcher.forget function once we can compute it. - watcher.forget = forgetWatcher(c, c.watcherIdx, triggerValue, triggerSupported) + watcher.forget = forgetWatcher(c, watcher, c.watcherIdx, triggerValue, triggerSupported) c.watchers.addWatcher(watcher, c.watcherIdx, triggerValue, triggerSupported) // Add it to the queue only when the client support watch bookmarks. @@ -591,7 +597,8 @@ func (c *Cacher) Get(ctx context.Context, key string, opts storage.GetOptions, o } // NOTICE: Keep in sync with shouldListFromStorage function in -// staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/list_work_estimator.go +// +// staging/src/k8s.io/apiserver/pkg/util/flowcontrol/request/list_work_estimator.go func shouldDelegateList(opts storage.ListOptions) bool { resourceVersion := opts.ResourceVersion pred := opts.Predicate @@ -645,7 +652,9 @@ func (c *Cacher) GetList(ctx context.Context, key string, opts storage.ListOptio return c.storage.GetList(ctx, key, opts, listObj) } - trace := utiltrace.New("cacher list", utiltrace.Field{Key: "type", Value: c.objectType.String()}) + trace := utiltrace.New("cacher list", + utiltrace.Field{"audit-id", endpointsrequest.GetAuditIDTruncated(ctx)}, + utiltrace.Field{Key: "type", Value: c.objectType.String()}) defer trace.LogIfLong(500 * time.Millisecond) if err := c.ready.wait(); err != nil { @@ -905,7 +914,7 @@ func (c *Cacher) dispatchEvent(event *watchCacheEvent) { } } -func (c *Cacher) startDispatchingBookmarkEvents() { +func (c *Cacher) startDispatchingBookmarkEventsLocked() { // Pop already expired watchers. However, explicitly ignore stopped ones, // as we don't delete watcher from bookmarkWatchers when it is stopped. for _, watchers := range c.bookmarkWatchers.popExpiredWatchers() { @@ -916,8 +925,7 @@ func (c *Cacher) startDispatchingBookmarkEvents() { continue } c.watchersBuffer = append(c.watchersBuffer, watcher) - // Requeue the watcher for the next bookmark if needed. - c.bookmarkWatchers.addWatcher(watcher) + c.expiredBookmarkWatchers = append(c.expiredBookmarkWatchers, watcher) } } } @@ -942,7 +950,7 @@ func (c *Cacher) startDispatching(event *watchCacheEvent) { c.watchersBuffer = c.watchersBuffer[:0] if event.Type == watch.Bookmark { - c.startDispatchingBookmarkEvents() + c.startDispatchingBookmarkEventsLocked() // return here to reduce following code indentation and diff return } @@ -986,6 +994,15 @@ func (c *Cacher) finishDispatching() { watcher.stopLocked() } c.watchersToStop = c.watchersToStop[:0] + + for _, watcher := range c.expiredBookmarkWatchers { + if watcher.stopped { + continue + } + // requeue the watcher for the next bookmark if needed. + c.bookmarkWatchers.addWatcher(watcher) + } + c.expiredBookmarkWatchers = c.expiredBookmarkWatchers[:0] } func (c *Cacher) terminateAllWatchers() { @@ -1023,11 +1040,13 @@ func (c *Cacher) Stop() { c.stopWg.Wait() } -func forgetWatcher(c *Cacher, index int, triggerValue string, triggerSupported bool) func() { - return func() { +func forgetWatcher(c *Cacher, w *cacheWatcher, index int, triggerValue string, triggerSupported bool) func(bool) { + return func(drainWatcher bool) { c.Lock() defer c.Unlock() + w.setDrainInputBufferLocked(drainWatcher) + // It's possible that the watcher is already not in the structure (e.g. in case of // simultaneous Stop() and terminateAllWatchers(), but it is safe to call stopLocked() // on a watcher multiple times. @@ -1151,7 +1170,7 @@ type cacheWatcher struct { done chan struct{} filter filterWithAttrsFunc stopped bool - forget func() + forget func(bool) versioner storage.Versioner // The watcher will be closed by server after the deadline, // save it here to send bookmark events before that. @@ -1163,9 +1182,13 @@ type cacheWatcher struct { // human readable identifier that helps assigning cacheWatcher // instance with request identifier string + + // drainInputBuffer indicates whether we should delay closing this watcher + // and send all event in the input buffer. + drainInputBuffer bool } -func newCacheWatcher(chanSize int, filter filterWithAttrsFunc, forget func(), versioner storage.Versioner, deadline time.Time, allowWatchBookmarks bool, objectType reflect.Type, identifier string) *cacheWatcher { +func newCacheWatcher(chanSize int, filter filterWithAttrsFunc, forget func(bool), versioner storage.Versioner, deadline time.Time, allowWatchBookmarks bool, objectType reflect.Type, identifier string) *cacheWatcher { return &cacheWatcher{ input: make(chan *watchCacheEvent, chanSize), result: make(chan watch.Event, chanSize), @@ -1188,16 +1211,29 @@ func (c *cacheWatcher) ResultChan() <-chan watch.Event { // Implements watch.Interface. func (c *cacheWatcher) Stop() { - c.forget() + c.forget(false) } // we rely on the fact that stopLocked is actually protected by Cacher.Lock() func (c *cacheWatcher) stopLocked() { if !c.stopped { c.stopped = true - close(c.done) + // stop without draining the input channel was requested. + if !c.drainInputBuffer { + close(c.done) + } close(c.input) } + + // Even if the watcher was already stopped, if it previously was + // using draining mode and it's not using it now we need to + // close the done channel now. Otherwise we could leak the + // processing goroutine if it will be trying to put more objects + // into result channel, the channel will be full and there will + // already be noone on the processing the events on the receiving end. + if !c.drainInputBuffer && !c.isDoneChannelClosedLocked() { + close(c.done) + } } func (c *cacheWatcher) nonblockingAdd(event *watchCacheEvent) bool { @@ -1222,7 +1258,7 @@ func (c *cacheWatcher) add(event *watchCacheEvent, timer *time.Timer) bool { // we simply terminate it. klog.V(1).Infof("Forcing %v watcher close due to unresponsiveness: %v. len(c.input) = %v, len(c.result) = %v", c.objectType.String(), c.identifier, len(c.input), len(c.result)) metrics.TerminatedWatchersCounter.WithLabelValues(c.objectType.String()).Inc() - c.forget() + c.forget(false) } if timer == nil { @@ -1242,12 +1278,16 @@ func (c *cacheWatcher) add(event *watchCacheEvent, timer *time.Timer) bool { func (c *cacheWatcher) nextBookmarkTime(now time.Time, bookmarkFrequency time.Duration) (time.Time, bool) { // We try to send bookmarks: - // (a) roughly every minute - // (b) right before the watcher timeout - for now we simply set it 2s before + // + // (a) right before the watcher timeout - for now we simply set it 2s before // the deadline - // The former gives us periodicity if the watch breaks due to unexpected - // conditions, the later ensures that on timeout the watcher is as close to + // + // (b) roughly every minute + // + // (b) gives us periodicity if the watch breaks due to unexpected + // conditions, (a) ensures that on timeout the watcher is as close to // now as possible - this covers 99% of cases. + heartbeatTime := now.Add(bookmarkFrequency) if c.deadline.IsZero() { // Timeout is set by our client libraries (e.g. reflector) as well as defaulted by @@ -1264,6 +1304,22 @@ func (c *cacheWatcher) nextBookmarkTime(now time.Time, bookmarkFrequency time.Du return heartbeatTime, true } +// setDrainInputBufferLocked if set to true indicates that we should delay closing this watcher +// until we send all events residing in the input buffer. +func (c *cacheWatcher) setDrainInputBufferLocked(drain bool) { + c.drainInputBuffer = drain +} + +// isDoneChannelClosed checks if c.done channel is closed +func (c *cacheWatcher) isDoneChannelClosedLocked() bool { + select { + case <-c.done: + return true + default: + } + return false +} + func getMutableObject(object runtime.Object) runtime.Object { if _, ok := object.(*cachingObject); ok { // It is safe to return without deep-copy, because the underlying diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/time_budget.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/time_budget.go index da77bd42b02..636c6ef8d6a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/time_budget.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/time_budget.go @@ -30,13 +30,14 @@ const ( // timeBudget implements a budget of time that you can use and is // periodically being refreshed. The pattern to use it is: -// budget := newTimeBudget(...) -// ... -// timeout := budget.takeAvailable() -// // Now you can spend at most timeout on doing stuff -// ... -// // If you didn't use all timeout, return what you didn't use -// budget.returnUnused() +// +// budget := newTimeBudget(...) +// ... +// timeout := budget.takeAvailable() +// // Now you can spend at most timeout on doing stuff +// ... +// // If you didn't use all timeout, return what you didn't use +// budget.returnUnused() // // NOTE: It's not recommended to be used concurrently from multiple threads - // if first user takes the whole timeout, the second one will get 0 timeout diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go index 65e9fde6591..9deff40704e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache.go @@ -18,6 +18,7 @@ package cacher import ( "fmt" + "math" "reflect" "sort" "sync" @@ -579,6 +580,59 @@ func (w *watchCache) Resync() error { return nil } +func (w *watchCache) currentCapacity() int { + w.Lock() + defer w.Unlock() + return w.capacity +} + +const ( + // minWatchChanSize is the min size of channels used by the watch. + // We keep that set to 10 for "backward compatibility" until we + // convince ourselves based on some metrics that decreasing is safe. + minWatchChanSize = 10 + // maxWatchChanSizeWithIndexAndTriger is the max size of the channel + // used by the watch using the index and trigger selector. + maxWatchChanSizeWithIndexAndTrigger = 10 + // maxWatchChanSizeWithIndexWithoutTrigger is the max size of the channel + // used by the watch using the index but without triggering selector. + // We keep that set to 1000 for "backward compatibility", until we + // convinced ourselves based on some metrics that decreasing is safe. + maxWatchChanSizeWithIndexWithoutTrigger = 1000 + // maxWatchChanSizeWithoutIndex is the max size of the channel + // used by the watch not using the index. + // TODO(wojtek-t): Figure out if the value shouldn't be higher. + maxWatchChanSizeWithoutIndex = 100 +) + +func (w *watchCache) suggestedWatchChannelSize(indexExists, triggerUsed bool) int { + // To estimate the channel size we use a heuristic that a channel + // should roughly be able to keep one second of history. + // We don't have an exact data, but given we store updates from + // the last , we approach it by dividing the + // capacity by the length of the history window. + chanSize := int(math.Ceil(float64(w.currentCapacity()) / eventFreshDuration.Seconds())) + + // Finally we adjust the size to avoid ending with too low or + // to large values. + if chanSize < minWatchChanSize { + chanSize = minWatchChanSize + } + var maxChanSize int + switch { + case indexExists && triggerUsed: + maxChanSize = maxWatchChanSizeWithIndexAndTrigger + case indexExists && !triggerUsed: + maxChanSize = maxWatchChanSizeWithIndexWithoutTrigger + case !indexExists: + maxChanSize = maxWatchChanSizeWithoutIndex + } + if chanSize > maxChanSize { + chanSize = maxChanSize + } + return chanSize +} + // isIndexValidLocked checks if a given index is still valid. // This assumes that the lock is held. func (w *watchCache) isIndexValidLocked(index int) bool { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache_interval.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache_interval.go index 833d10e153a..c455357e04d 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache_interval.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/cacher/watch_cache_interval.go @@ -53,7 +53,9 @@ import ( // an interval as invalid iff we need to copy events from the // watchCache and we end up needing events that have already // been popped off. This translates to the following condition: -// watchCacheInterval::startIndex >= watchCache::startIndex. +// +// watchCacheInterval::startIndex >= watchCache::startIndex. +// // When this condition becomes false, the interval is no longer // valid and should not be used to retrieve and serve elements // from the underlying source. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/latency_tracker.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/latency_tracker.go index a387b79cc59..96d592e7907 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/latency_tracker.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/latency_tracker.go @@ -47,7 +47,8 @@ func NewETCDLatencyTracker(delegate clientv3.KV) clientv3.KV { // tracking function TrackStorageLatency is thread safe. // // NOTE: Compact is an asynchronous process and is not associated with -// any request, so we will not be tracking its latency. +// +// any request, so we will not be tracking its latency. type clientV3KVLatencyTracker struct { clientv3.KV } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go index 1fb3ec37323..769cec77193 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/metrics/metrics.go @@ -38,7 +38,11 @@ var ( Name: "etcd_request_duration_seconds", Help: "Etcd request latency in seconds for each operation and object type.", // Etcd request latency in seconds for each operation and object type. - Buckets: []float64{0.005, 0.025, 0.1, 0.25, 0.5, 1.0, 2.0, 4.0, 15.0, 30.0, 60.0}, + // This metric is used for verifying etcd api call latencies SLO + // keep consistent with apiserver metric 'requestLatencies' in + // staging/src/k8s.io/apiserver/pkg/endpoints/metrics/metrics.go + Buckets: []float64{0.005, 0.025, 0.05, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0, 1.25, 1.5, 2, 3, + 4, 5, 6, 8, 10, 15, 20, 30, 45, 60}, StabilityLevel: compbasemetrics.ALPHA, }, []string{"operation", "type"}, diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go index 0fc4b62d2b1..163eb111bcb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/etcd3/store.go @@ -37,6 +37,7 @@ import ( "k8s.io/apimachinery/pkg/conversion" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/watch" + endpointsrequest "k8s.io/apiserver/pkg/endpoints/request" "k8s.io/apiserver/pkg/features" "k8s.io/apiserver/pkg/storage" "k8s.io/apiserver/pkg/storage/etcd3/metrics" @@ -152,6 +153,7 @@ func (s *store) Get(ctx context.Context, key string, opts storage.GetOptions, ou // Create implements storage.Interface.Create. func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object, ttl uint64) error { trace := utiltrace.New("Create etcd3", + utiltrace.Field{"audit-id", endpointsrequest.GetAuditIDTruncated(ctx)}, utiltrace.Field{"key", key}, utiltrace.Field{"type", getTypeName(obj)}, ) @@ -329,6 +331,7 @@ func (s *store) GuaranteedUpdate( ctx context.Context, key string, destination runtime.Object, ignoreNotFound bool, preconditions *storage.Preconditions, tryUpdate storage.UpdateFunc, cachedExistingObject runtime.Object) error { trace := utiltrace.New("GuaranteedUpdate etcd3", + utiltrace.Field{"audit-id", endpointsrequest.GetAuditIDTruncated(ctx)}, utiltrace.Field{"key", key}, utiltrace.Field{"type", getTypeName(destination)}) defer trace.LogIfLong(500 * time.Millisecond) @@ -524,6 +527,7 @@ func (s *store) GetList(ctx context.Context, key string, opts storage.ListOption match := opts.ResourceVersionMatch pred := opts.Predicate trace := utiltrace.New(fmt.Sprintf("List(recursive=%v) etcd3", recursive), + utiltrace.Field{"audit-id", endpointsrequest.GetAuditIDTruncated(ctx)}, utiltrace.Field{"key", key}, utiltrace.Field{"resourceVersion", resourceVersion}, utiltrace.Field{"resourceVersionMatch", match}, diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/config.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/config.go index aa4163877fa..47534c97818 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/config.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/config.go @@ -19,7 +19,8 @@ package storagebackend import ( "time" - "go.opentelemetry.io/otel/trace" + oteltrace "go.opentelemetry.io/otel/trace" + "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apiserver/pkg/server/egressselector" @@ -36,6 +37,7 @@ const ( DefaultCompactInterval = 5 * time.Minute DefaultDBMetricPollInterval = 30 * time.Second DefaultHealthcheckTimeout = 2 * time.Second + DefaultReadinessTimeout = 2 * time.Second ) // TransportConfig holds all connection related info, i.e. equal TransportConfig means equal servers we talk to. @@ -49,7 +51,7 @@ type TransportConfig struct { // function to determine the egress dialer. (i.e. konnectivity server dialer) EgressLookup egressselector.Lookup // The TracerProvider can add tracing the connection - TracerProvider *trace.TracerProvider + TracerProvider oteltrace.TracerProvider } // Config is configuration for creating a storage backend. @@ -84,6 +86,8 @@ type Config struct { DBMetricPollInterval time.Duration // HealthcheckTimeout specifies the timeout used when checking health HealthcheckTimeout time.Duration + // ReadycheckTimeout specifies the timeout used when checking readiness + ReadycheckTimeout time.Duration LeaseManagerConfig etcd3.LeaseManagerConfig @@ -117,6 +121,8 @@ func NewDefaultConfig(prefix string, codec runtime.Codec) *Config { CompactionInterval: DefaultCompactInterval, DBMetricPollInterval: DefaultDBMetricPollInterval, HealthcheckTimeout: DefaultHealthcheckTimeout, + ReadycheckTimeout: DefaultReadinessTimeout, LeaseManagerConfig: etcd3.NewDefaultLeaseManagerConfig(), + Transport: TransportConfig{TracerProvider: oteltrace.NewNoopTracerProvider()}, } } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go index eb95c0facee..55e2cc0b42c 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go @@ -19,17 +19,22 @@ package factory import ( "context" "fmt" + "log" "net" "net/url" + "os" "path" "strings" "sync" "time" grpcprom "github.com/grpc-ecosystem/go-grpc-prometheus" + "go.etcd.io/etcd/client/pkg/v3/logutil" "go.etcd.io/etcd/client/pkg/v3/transport" clientv3 "go.etcd.io/etcd/client/v3" "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" "google.golang.org/grpc" "k8s.io/apimachinery/pkg/runtime" @@ -45,7 +50,7 @@ import ( "k8s.io/apiserver/pkg/storage/value" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/component-base/metrics/legacyregistry" - "k8s.io/component-base/traces" + tracing "k8s.io/component-base/tracing" "k8s.io/klog/v2" ) @@ -63,6 +68,14 @@ const ( dbMetricsMonitorJitter = 0.5 ) +// TODO(negz): Stop using a package scoped logger. At the time of writing we're +// creating an etcd client for each CRD. We need to pass each etcd client a +// logger or each client will create its own, which comes with a significant +// memory cost (around 20% of the API server's memory when hundreds of CRDs are +// present). The correct fix here is to not create a client per CRD. See +// https://github.com/kubernetes/kubernetes/issues/111476 for more. +var etcd3ClientLogger *zap.Logger + func init() { // grpcprom auto-registers (via an init function) their client metrics, since we are opting out of // using the global prometheus registry and using our own wrapped global registry, @@ -70,9 +83,47 @@ func init() { // For reference: https://github.com/kubernetes/kubernetes/pull/81387 legacyregistry.RawMustRegister(grpcprom.DefaultClientMetrics) dbMetricsMonitors = make(map[string]struct{}) + + l, err := logutil.CreateDefaultZapLogger(etcdClientDebugLevel()) + if err != nil { + l = zap.NewNop() + } + etcd3ClientLogger = l.Named("etcd-client") +} + +// etcdClientDebugLevel translates ETCD_CLIENT_DEBUG into zap log level. +// NOTE(negz): This is a copy of a private etcd client function: +// https://github.com/etcd-io/etcd/blob/v3.5.4/client/v3/logger.go#L47 +func etcdClientDebugLevel() zapcore.Level { + envLevel := os.Getenv("ETCD_CLIENT_DEBUG") + if envLevel == "" || envLevel == "true" { + return zapcore.InfoLevel + } + var l zapcore.Level + if err := l.Set(envLevel); err == nil { + log.Printf("Deprecated env ETCD_CLIENT_DEBUG value. Using default level: 'info'") + return zapcore.InfoLevel + } + return l } func newETCD3HealthCheck(c storagebackend.Config, stopCh <-chan struct{}) (func() error, error) { + timeout := storagebackend.DefaultHealthcheckTimeout + if c.HealthcheckTimeout != time.Duration(0) { + timeout = c.HealthcheckTimeout + } + return newETCD3Check(c, timeout, stopCh) +} + +func newETCD3ReadyCheck(c storagebackend.Config, stopCh <-chan struct{}) (func() error, error) { + timeout := storagebackend.DefaultReadinessTimeout + if c.ReadycheckTimeout != time.Duration(0) { + timeout = c.ReadycheckTimeout + } + return newETCD3Check(c, timeout, stopCh) +} + +func newETCD3Check(c storagebackend.Config, timeout time.Duration, stopCh <-chan struct{}) (func() error, error) { // constructing the etcd v3 client blocks and times out if etcd is not available. // retry in a loop in the background until we successfully create the client, storing the client or error encountered @@ -129,23 +180,18 @@ func newETCD3HealthCheck(c storagebackend.Config, stopCh <-chan struct{}) (func( if clientErr != nil { return clientErr } - - healthcheckTimeout := storagebackend.DefaultHealthcheckTimeout - if c.HealthcheckTimeout != time.Duration(0) { - healthcheckTimeout = c.HealthcheckTimeout - } - ctx, cancel := context.WithTimeout(context.Background(), healthcheckTimeout) + ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() // See https://github.com/etcd-io/etcd/blob/c57f8b3af865d1b531b979889c602ba14377420e/etcdctl/ctlv3/command/ep_command.go#L118 _, err := client.Get(ctx, path.Join("/", c.Prefix, "health")) if err == nil { return nil } - return fmt.Errorf("error getting data from etcd: %v", err) + return fmt.Errorf("error getting data from etcd: %w", err) }, nil } -func newETCD3Client(c storagebackend.TransportConfig) (*clientv3.Client, error) { +var newETCD3Client = func(c storagebackend.TransportConfig) (*clientv3.Client, error) { tlsInfo := transport.TLSInfo{ CertFile: c.CertFile, KeyFile: c.KeyFile, @@ -180,12 +226,10 @@ func newETCD3Client(c storagebackend.TransportConfig) (*clientv3.Client, error) } if utilfeature.DefaultFeatureGate.Enabled(genericfeatures.APIServerTracing) { tracingOpts := []otelgrpc.Option{ - otelgrpc.WithPropagators(traces.Propagators()), + otelgrpc.WithPropagators(tracing.Propagators()), + otelgrpc.WithTracerProvider(c.TracerProvider), } - if c.TracerProvider != nil { - tracingOpts = append(tracingOpts, otelgrpc.WithTracerProvider(*c.TracerProvider)) - } - // Even if there is no TracerProvider, the otelgrpc still handles context propagation. + // Even with Noop TracerProvider, the otelgrpc still handles context propagation. // See https://github.com/open-telemetry/opentelemetry-go/tree/main/example/passthrough dialOptions = append(dialOptions, grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor(tracingOpts...)), @@ -205,6 +249,7 @@ func newETCD3Client(c storagebackend.TransportConfig) (*clientv3.Client, error) } dialOptions = append(dialOptions, grpc.WithContextDialer(dialer)) } + cfg := clientv3.Config{ DialTimeout: dialTimeout, DialKeepAliveTime: keepaliveTime, @@ -212,6 +257,7 @@ func newETCD3Client(c storagebackend.TransportConfig) (*clientv3.Client, error) DialOptions: dialOptions, Endpoints: c.ServerList, TLS: tlsConfig, + Logger: etcd3ClientLogger, } return clientv3.New(cfg) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/factory.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/factory.go index d1d3492168f..4c8a409d659 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/factory.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/storagebackend/factory/factory.go @@ -50,3 +50,14 @@ func CreateHealthCheck(c storagebackend.Config, stopCh <-chan struct{}) (func() return nil, fmt.Errorf("unknown storage type: %s", c.Type) } } + +func CreateReadyCheck(c storagebackend.Config, stopCh <-chan struct{}) (func() error, error) { + switch c.Type { + case storagebackend.StorageTypeETCD2: + return nil, fmt.Errorf("%s is no longer a supported storage backend", c.Type) + case storagebackend.StorageTypeUnset, storagebackend.StorageTypeETCD3: + return newETCD3ReadyCheck(c, stopCh) + default: + return nil, fmt.Errorf("unknown storage type: %s", c.Type) + } +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/envelope.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/envelope.go index 9173eb06525..30795d41a87 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/envelope.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/envelope.go @@ -27,6 +27,7 @@ import ( "time" "k8s.io/apiserver/pkg/storage/value" + "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics" "k8s.io/utils/lru" "golang.org/x/crypto/cryptobyte" @@ -34,7 +35,7 @@ import ( func init() { value.RegisterMetrics() - registerMetrics() + metrics.RegisterMetrics() } // Service allows encrypting and decrypting data using an external Key Management Service. @@ -81,7 +82,7 @@ func NewEnvelopeTransformer(envelopeService Service, cacheSize int, baseTransfor // TransformFromStorage decrypts data encrypted by this transformer using envelope encryption. func (t *envelopeTransformer) TransformFromStorage(ctx context.Context, data []byte, dataCtx value.Context) ([]byte, bool, error) { - recordArrival(fromStorageLabel, time.Now()) + metrics.RecordArrival(metrics.FromStorageLabel, time.Now()) // Read the 16 bit length-of-DEK encoded at the start of the encrypted DEK. 16 bits can // represent a maximum key length of 65536 bytes. We are using a 256 bit key, whose @@ -119,7 +120,7 @@ func (t *envelopeTransformer) TransformFromStorage(ctx context.Context, data []b // TransformToStorage encrypts data to be written to disk using envelope encryption. func (t *envelopeTransformer) TransformToStorage(ctx context.Context, data []byte, dataCtx value.Context) ([]byte, error) { - recordArrival(toStorageLabel, time.Now()) + metrics.RecordArrival(metrics.ToStorageLabel, time.Now()) newKey, err := generateKey(32) if err != nil { return nil, err @@ -165,7 +166,7 @@ func (t *envelopeTransformer) addTransformer(encKey []byte, key []byte) (value.T // cannot hash []uint8. if t.cacheEnabled { t.transformers.Add(base64.StdEncoding.EncodeToString(encKey), transformer) - dekCacheFillPercent.Set(float64(t.transformers.Len()) / float64(t.cacheSize)) + metrics.RecordDekCacheFillPercent(float64(t.transformers.Len()) / float64(t.cacheSize)) } return transformer, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/grpc_service.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/grpc_service.go index 7aa5d232f8a..c5304cd09f2 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/grpc_service.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/grpc_service.go @@ -21,22 +21,21 @@ import ( "context" "fmt" "net" - "net/url" - "strings" "sync" "time" "k8s.io/klog/v2" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" + "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/util" kmsapi "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v1beta1" ) const ( - // Now only supported unix domain socket. + // unixProtocol is the only supported protocol for remote KMS provider. unixProtocol = "unix" - // Current version for the protocol interface definition. kmsapiVersion = "v1beta1" @@ -56,7 +55,7 @@ type gRPCService struct { func NewGRPCService(endpoint string, callTimeout time.Duration) (Service, error) { klog.V(4).Infof("Configure KMS provider with endpoint: %s", endpoint) - addr, err := parseEndpoint(endpoint) + addr, err := util.ParseEndpoint(endpoint) if err != nil { return nil, err } @@ -64,7 +63,7 @@ func NewGRPCService(endpoint string, callTimeout time.Duration) (Service, error) s := &gRPCService{callTimeout: callTimeout} s.connection, err = grpc.Dial( addr, - grpc.WithInsecure(), + grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithUnaryInterceptor(s.interceptor), grpc.WithDefaultCallOptions(grpc.WaitForReady(true)), grpc.WithContextDialer( @@ -88,32 +87,6 @@ func NewGRPCService(endpoint string, callTimeout time.Duration) (Service, error) return s, nil } -// Parse the endpoint to extract schema, host or path. -func parseEndpoint(endpoint string) (string, error) { - if len(endpoint) == 0 { - return "", fmt.Errorf("remote KMS provider can't use empty string as endpoint") - } - - u, err := url.Parse(endpoint) - if err != nil { - return "", fmt.Errorf("invalid endpoint %q for remote KMS provider, error: %v", endpoint, err) - } - - if u.Scheme != unixProtocol { - return "", fmt.Errorf("unsupported scheme %q for remote KMS provider", u.Scheme) - } - - // Linux abstract namespace socket - no physical file required - // Warning: Linux Abstract sockets have not concept of ACL (unlike traditional file based sockets). - // However, Linux Abstract sockets are subject to Linux networking namespace, so will only be accessible to - // containers within the same pod (unless host networking is used). - if strings.HasPrefix(u.Path, "/@") { - return strings.TrimPrefix(u.Path, "/"), nil - } - - return u.Path, nil -} - func (g *gRPCService) checkAPIVersion(ctx context.Context) error { g.mux.Lock() defer g.mux.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/envelope.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/envelope.go new file mode 100644 index 00000000000..5b65f12424b --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/envelope.go @@ -0,0 +1,246 @@ +/* +Copyright 2022 The Kubernetes 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 kmsv2 transforms values for storage at rest using a Envelope v2 provider +package kmsv2 + +import ( + "context" + "crypto/aes" + "crypto/cipher" + "crypto/rand" + "encoding/base64" + "fmt" + "time" + + "github.com/gogo/protobuf/proto" + "k8s.io/apimachinery/pkg/util/uuid" + "k8s.io/apiserver/pkg/storage/value" + kmstypes "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1" + "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics" + "k8s.io/utils/lru" +) + +const ( + // KMSAPIVersion is the version of the KMS API. + KMSAPIVersion = "v2alpha1" +) + +// Service allows encrypting and decrypting data using an external Key Management Service. +type Service interface { + // Decrypt a given bytearray to obtain the original data as bytes. + Decrypt(ctx context.Context, uid string, req *DecryptRequest) ([]byte, error) + // Encrypt bytes to a ciphertext. + Encrypt(ctx context.Context, uid string, data []byte) (*EncryptResponse, error) + // Status returns the status of the KMS. + Status(ctx context.Context) (*StatusResponse, error) +} + +type envelopeTransformer struct { + envelopeService Service + + // transformers is a thread-safe LRU cache which caches decrypted DEKs indexed by their encrypted form. + transformers *lru.Cache + + // baseTransformerFunc creates a new transformer for encrypting the data with the DEK. + baseTransformerFunc func(cipher.Block) value.Transformer + + cacheSize int + cacheEnabled bool + + pluginName string +} + +// EncryptResponse is the response from the Envelope service when encrypting data. +type EncryptResponse struct { + Ciphertext []byte + KeyID string + Annotations map[string][]byte +} + +// DecryptRequest is the request to the Envelope service when decrypting data. +type DecryptRequest struct { + Ciphertext []byte + KeyID string + Annotations map[string][]byte +} + +// StatusResponse is the response from the Envelope service when getting the status of the service. +type StatusResponse struct { + Version string + Healthz string + KeyID string +} + +// NewEnvelopeTransformer returns a transformer which implements a KEK-DEK based envelope encryption scheme. +// It uses envelopeService to encrypt and decrypt DEKs. Respective DEKs (in encrypted form) are prepended to +// the data items they encrypt. A cache (of size cacheSize) is maintained to store the most recently +// used decrypted DEKs in memory. +func NewEnvelopeTransformer(envelopeService Service, cacheSize int, baseTransformerFunc func(cipher.Block) value.Transformer) (value.Transformer, error) { + var cache *lru.Cache + + if cacheSize > 0 { + // TODO(aramase): Switch to using expiring cache: kubernetes/kubernetes/staging/src/k8s.io/apimachinery/pkg/util/cache/expiring.go. + // It handles scans a lot better, doesn't have to be right sized, and don't have a global lock on reads. + cache = lru.New(cacheSize) + } + + return &envelopeTransformer{ + envelopeService: envelopeService, + transformers: cache, + baseTransformerFunc: baseTransformerFunc, + cacheEnabled: cacheSize > 0, + cacheSize: cacheSize, + }, nil +} + +// TransformFromStorage decrypts data encrypted by this transformer using envelope encryption. +func (t *envelopeTransformer) TransformFromStorage(ctx context.Context, data []byte, dataCtx value.Context) ([]byte, bool, error) { + metrics.RecordArrival(metrics.FromStorageLabel, time.Now()) + + // Deserialize the EncryptedObject from the data. + encryptedObject, err := t.doDecode(data) + if err != nil { + return nil, false, err + } + + // Look up the decrypted DEK from cache or Envelope. + transformer := t.getTransformer(encryptedObject.EncryptedDEK) + if transformer == nil { + if t.cacheEnabled { + value.RecordCacheMiss() + } + uid := string(uuid.NewUUID()) + key, err := t.envelopeService.Decrypt(ctx, uid, &DecryptRequest{ + Ciphertext: encryptedObject.EncryptedDEK, + KeyID: encryptedObject.KeyID, + Annotations: encryptedObject.Annotations, + }) + if err != nil { + return nil, false, fmt.Errorf("failed to decrypt DEK, error: %w", err) + } + + transformer, err = t.addTransformer(encryptedObject.EncryptedDEK, key) + if err != nil { + return nil, false, err + } + } + + return transformer.TransformFromStorage(ctx, encryptedObject.EncryptedData, dataCtx) +} + +// TransformToStorage encrypts data to be written to disk using envelope encryption. +func (t *envelopeTransformer) TransformToStorage(ctx context.Context, data []byte, dataCtx value.Context) ([]byte, error) { + metrics.RecordArrival(metrics.ToStorageLabel, time.Now()) + newKey, err := generateKey(32) + if err != nil { + return nil, err + } + + uid := string(uuid.NewUUID()) + resp, err := t.envelopeService.Encrypt(ctx, uid, newKey) + if err != nil { + return nil, fmt.Errorf("failed to encrypt DEK, error: %w", err) + } + + transformer, err := t.addTransformer(resp.Ciphertext, newKey) + if err != nil { + return nil, err + } + + result, err := transformer.TransformToStorage(ctx, data, dataCtx) + if err != nil { + return nil, err + } + + encObject := &kmstypes.EncryptedObject{ + KeyID: resp.KeyID, + EncryptedDEK: resp.Ciphertext, + EncryptedData: result, + Annotations: resp.Annotations, + } + + // Serialize the EncryptedObject to a byte array. + return t.doEncode(encObject) +} + +// addTransformer inserts a new transformer to the Envelope cache of DEKs for future reads. +func (t *envelopeTransformer) addTransformer(encKey []byte, key []byte) (value.Transformer, error) { + block, err := aes.NewCipher(key) + if err != nil { + return nil, err + } + transformer := t.baseTransformerFunc(block) + // Use base64 of encKey as the key into the cache because hashicorp/golang-lru + // cannot hash []uint8. + if t.cacheEnabled { + t.transformers.Add(base64.StdEncoding.EncodeToString(encKey), transformer) + metrics.RecordDekCacheFillPercent(float64(t.transformers.Len()) / float64(t.cacheSize)) + } + return transformer, nil +} + +// getTransformer fetches the transformer corresponding to encKey from cache, if it exists. +func (t *envelopeTransformer) getTransformer(encKey []byte) value.Transformer { + if !t.cacheEnabled { + return nil + } + + _transformer, found := t.transformers.Get(base64.StdEncoding.EncodeToString(encKey)) + if found { + return _transformer.(value.Transformer) + } + return nil +} + +// doEncode encodes the EncryptedObject to a byte array. +func (t *envelopeTransformer) doEncode(request *kmstypes.EncryptedObject) ([]byte, error) { + return proto.Marshal(request) +} + +// doDecode decodes the byte array to an EncryptedObject. +func (t *envelopeTransformer) doDecode(originalData []byte) (*kmstypes.EncryptedObject, error) { + o := &kmstypes.EncryptedObject{} + if err := proto.Unmarshal(originalData, o); err != nil { + return nil, err + } + + // validate the EncryptedObject + if o.EncryptedData == nil { + return nil, fmt.Errorf("encrypted data is nil after unmarshal") + } + if o.KeyID == "" { + return nil, fmt.Errorf("keyID is empty after unmarshal") + } + if o.EncryptedDEK == nil { + return nil, fmt.Errorf("encrypted dek is nil after unmarshal") + } + + return o, nil +} + +// generateKey generates a random key using system randomness. +func generateKey(length int) (key []byte, err error) { + defer func(start time.Time) { + value.RecordDataKeyGeneration(start, err) + }(time.Now()) + key = make([]byte, length) + if _, err = rand.Read(key); err != nil { + return nil, err + } + + return key, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/grpc_service.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/grpc_service.go new file mode 100644 index 00000000000..b96fce4aa46 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/grpc_service.go @@ -0,0 +1,130 @@ +/* +Copyright 2022 The Kubernetes 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 kmsv2 transforms values for storage at rest using a Envelope provider +package kmsv2 + +import ( + "context" + "fmt" + "net" + "time" + + "k8s.io/klog/v2" + + "google.golang.org/grpc" + + "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/util" + kmsapi "k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1" +) + +const ( + // unixProtocol is the only supported protocol for remote KMS provider. + unixProtocol = "unix" +) + +// The gRPC implementation for envelope.Service. +type gRPCService struct { + kmsClient kmsapi.KeyManagementServiceClient + connection *grpc.ClientConn + callTimeout time.Duration +} + +// NewGRPCService returns an envelope.Service which use gRPC to communicate the remote KMS provider. +func NewGRPCService(endpoint string, callTimeout time.Duration) (Service, error) { + klog.V(4).Infof("Configure KMS provider with endpoint: %s", endpoint) + + addr, err := util.ParseEndpoint(endpoint) + if err != nil { + return nil, err + } + + s := &gRPCService{callTimeout: callTimeout} + s.connection, err = grpc.Dial( + addr, + grpc.WithInsecure(), + grpc.WithDefaultCallOptions(grpc.WaitForReady(true)), + grpc.WithContextDialer( + func(context.Context, string) (net.Conn, error) { + // Ignoring addr and timeout arguments: + // addr - comes from the closure + c, err := net.DialUnix(unixProtocol, nil, &net.UnixAddr{Name: addr}) + if err != nil { + klog.Errorf("failed to create connection to unix socket: %s, error: %v", addr, err) + } else { + klog.V(4).Infof("Successfully dialed Unix socket %v", addr) + } + return c, err + })) + + if err != nil { + return nil, fmt.Errorf("failed to create connection to %s, error: %v", endpoint, err) + } + + s.kmsClient = kmsapi.NewKeyManagementServiceClient(s.connection) + return s, nil +} + +// Decrypt a given data string to obtain the original byte data. +func (g *gRPCService) Decrypt(ctx context.Context, uid string, req *DecryptRequest) ([]byte, error) { + ctx, cancel := context.WithTimeout(ctx, g.callTimeout) + defer cancel() + + request := &kmsapi.DecryptRequest{ + Ciphertext: req.Ciphertext, + Uid: uid, + KeyId: req.KeyID, + Annotations: req.Annotations, + } + response, err := g.kmsClient.Decrypt(ctx, request) + if err != nil { + return nil, err + } + return response.Plaintext, nil +} + +// Encrypt bytes to a string ciphertext. +func (g *gRPCService) Encrypt(ctx context.Context, uid string, plaintext []byte) (*EncryptResponse, error) { + ctx, cancel := context.WithTimeout(ctx, g.callTimeout) + defer cancel() + + request := &kmsapi.EncryptRequest{ + Plaintext: plaintext, + Uid: uid, + } + response, err := g.kmsClient.Encrypt(ctx, request) + if err != nil { + return nil, err + } + return &EncryptResponse{ + Ciphertext: response.Ciphertext, + KeyID: response.KeyId, + Annotations: response.Annotations, + }, nil +} + +// Status returns the status of the KMSv2 provider. +func (g *gRPCService) Status(ctx context.Context) (*StatusResponse, error) { + ctx, cancel := context.WithTimeout(ctx, g.callTimeout) + defer cancel() + + request := &kmsapi.StatusRequest{} + response, err := g.kmsClient.Status(ctx, request) + if err != nil { + return nil, err + } + return &StatusResponse{Version: response.Version, Healthz: response.Healthz, KeyID: response.KeyId}, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/OWNERS b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/OWNERS new file mode 100644 index 00000000000..fa20d4cbeba --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/OWNERS @@ -0,0 +1,9 @@ +# See the OWNERS docs at https://go.k8s.io/owners + +# Disable inheritance as this is an api owners file +options: + no_parent_owners: true +approvers: + - api-approvers +reviewers: + - sig-auth-api-reviewers diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/api.pb.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/api.pb.go new file mode 100644 index 00000000000..307b0b248c9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/api.pb.go @@ -0,0 +1,128 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: api.proto + +package v2alpha1 + +import ( + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +// EncryptedObject is the representation of data stored in etcd after envelope encryption. +type EncryptedObject struct { + // EncryptedData is the encrypted data. + EncryptedData []byte `protobuf:"bytes,1,opt,name=encryptedData,proto3" json:"encryptedData,omitempty"` + // KeyID is the KMS key ID used for encryption operations. + KeyID string `protobuf:"bytes,2,opt,name=keyID,proto3" json:"keyID,omitempty"` + // EncryptedDEK is the encrypted DEK. + EncryptedDEK []byte `protobuf:"bytes,3,opt,name=encryptedDEK,proto3" json:"encryptedDEK,omitempty"` + // Annotations is additional metadata that was provided by the KMS plugin. + Annotations map[string][]byte `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EncryptedObject) Reset() { *m = EncryptedObject{} } +func (m *EncryptedObject) String() string { return proto.CompactTextString(m) } +func (*EncryptedObject) ProtoMessage() {} +func (*EncryptedObject) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{0} +} +func (m *EncryptedObject) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EncryptedObject.Unmarshal(m, b) +} +func (m *EncryptedObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EncryptedObject.Marshal(b, m, deterministic) +} +func (m *EncryptedObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_EncryptedObject.Merge(m, src) +} +func (m *EncryptedObject) XXX_Size() int { + return xxx_messageInfo_EncryptedObject.Size(m) +} +func (m *EncryptedObject) XXX_DiscardUnknown() { + xxx_messageInfo_EncryptedObject.DiscardUnknown(m) +} + +var xxx_messageInfo_EncryptedObject proto.InternalMessageInfo + +func (m *EncryptedObject) GetEncryptedData() []byte { + if m != nil { + return m.EncryptedData + } + return nil +} + +func (m *EncryptedObject) GetKeyID() string { + if m != nil { + return m.KeyID + } + return "" +} + +func (m *EncryptedObject) GetEncryptedDEK() []byte { + if m != nil { + return m.EncryptedDEK + } + return nil +} + +func (m *EncryptedObject) GetAnnotations() map[string][]byte { + if m != nil { + return m.Annotations + } + return nil +} + +func init() { + proto.RegisterType((*EncryptedObject)(nil), "v2alpha1.EncryptedObject") + proto.RegisterMapType((map[string][]byte)(nil), "v2alpha1.EncryptedObject.AnnotationsEntry") +} + +func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } + +var fileDescriptor_00212fb1f9d3bf1c = []byte{ + // 200 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x4c, 0x2c, 0xc8, 0xd4, + 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x28, 0x33, 0x4a, 0xcc, 0x29, 0xc8, 0x48, 0x34, 0x54, + 0xfa, 0xcf, 0xc8, 0xc5, 0xef, 0x9a, 0x97, 0x5c, 0x54, 0x59, 0x50, 0x92, 0x9a, 0xe2, 0x9f, 0x94, + 0x95, 0x9a, 0x5c, 0x22, 0xa4, 0xc2, 0xc5, 0x9b, 0x0a, 0x13, 0x72, 0x49, 0x2c, 0x49, 0x94, 0x60, + 0x54, 0x60, 0xd4, 0xe0, 0x09, 0x42, 0x15, 0x14, 0x12, 0xe1, 0x62, 0xcd, 0x4e, 0xad, 0xf4, 0x74, + 0x91, 0x60, 0x52, 0x60, 0xd4, 0xe0, 0x0c, 0x82, 0x70, 0x84, 0x94, 0xb8, 0x78, 0x10, 0xca, 0x5c, + 0xbd, 0x25, 0x98, 0xc1, 0x5a, 0x51, 0xc4, 0x84, 0x7c, 0xb8, 0xb8, 0x13, 0xf3, 0xf2, 0xf2, 0x4b, + 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0x25, 0x58, 0x14, 0x98, 0x35, 0xb8, 0x8d, 0xb4, 0xf4, 0x60, + 0x6e, 0xd2, 0x43, 0x73, 0x8f, 0x9e, 0x23, 0x42, 0xb1, 0x6b, 0x5e, 0x49, 0x51, 0x65, 0x10, 0xb2, + 0x76, 0x29, 0x3b, 0x2e, 0x01, 0x74, 0x05, 0x42, 0x02, 0x5c, 0xcc, 0xd9, 0xa9, 0x95, 0x60, 0x77, + 0x73, 0x06, 0x81, 0x98, 0x20, 0xd7, 0x96, 0x25, 0xe6, 0x94, 0xa6, 0x82, 0x5d, 0xcb, 0x13, 0x04, + 0xe1, 0x58, 0x31, 0x59, 0x30, 0x26, 0xb1, 0x81, 0x83, 0xc4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, + 0x88, 0x8c, 0xbb, 0x4e, 0x1f, 0x01, 0x00, 0x00, +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/api.proto b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/api.proto new file mode 100644 index 00000000000..e3b978b05ed --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/api.proto @@ -0,0 +1,35 @@ +/* +Copyright 2022 The Kubernetes 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. +*/ + +// To regenerate api.pb.go run hack/update-generated-kms.sh +syntax = "proto3"; + +package v2alpha1; + +// EncryptedObject is the representation of data stored in etcd after envelope encryption. +message EncryptedObject { + // EncryptedData is the encrypted data. + bytes encryptedData = 1; + + // KeyID is the KMS key ID used for encryption operations. + string keyID = 2; + + // EncryptedDEK is the encrypted DEK. + bytes encryptedDEK = 3; + + // Annotations is additional metadata that was provided by the KMS plugin. + map annotations = 4; +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/doc.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/v2alpha1.go similarity index 79% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/doc.go rename to cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/v2alpha1.go index ca09dd73890..b8bed64e8cf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1/v2alpha1.go @@ -1,5 +1,5 @@ /* -Copyright 2016 The Kubernetes Authors. +Copyright 2022 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,6 +14,5 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package quobyte contains the internal representation of Quobyte -// volumes. -package quobyte +// Package v2alpha1 contains definition of kms-plugin's serialized types. +package v2alpha1 diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics/metrics.go similarity index 90% rename from cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics.go rename to cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics/metrics.go index e5499f1e186..ca0e0ad0f69 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics/metrics.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package envelope +package metrics import ( "sync" @@ -27,8 +27,8 @@ import ( const ( namespace = "apiserver" subsystem = "envelope_encryption" - fromStorageLabel = "from_storage" - toStorageLabel = "to_storage" + FromStorageLabel = "from_storage" + ToStorageLabel = "to_storage" ) /* @@ -71,16 +71,16 @@ var ( var registerMetricsFunc sync.Once -func registerMetrics() { +func RegisterMetrics() { registerMetricsFunc.Do(func() { legacyregistry.MustRegister(dekCacheFillPercent) legacyregistry.MustRegister(dekCacheInterArrivals) }) } -func recordArrival(transformationType string, start time.Time) { +func RecordArrival(transformationType string, start time.Time) { switch transformationType { - case fromStorageLabel: + case FromStorageLabel: lockLastFromStorage.Lock() defer lockLastFromStorage.Unlock() @@ -89,7 +89,7 @@ func recordArrival(transformationType string, start time.Time) { } dekCacheInterArrivals.WithLabelValues(transformationType).Observe(start.Sub(lastFromStorage).Seconds()) lastFromStorage = start - case toStorageLabel: + case ToStorageLabel: lockLastToStorage.Lock() defer lockLastToStorage.Unlock() @@ -100,3 +100,7 @@ func recordArrival(transformationType string, start time.Time) { lastToStorage = start } } + +func RecordDekCacheFillPercent(percent float64) { + dekCacheFillPercent.Set(percent) +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/util/util.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/util/util.go new file mode 100644 index 00000000000..f062370aba2 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/util/util.go @@ -0,0 +1,54 @@ +/* +Copyright 2022 The Kubernetes 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 util + +import ( + "fmt" + "net/url" + "strings" +) + +const ( + // unixProtocol is the only supported protocol for remote KMS provider. + unixProtocol = "unix" +) + +// Parse the endpoint to extract schema, host or path. +func ParseEndpoint(endpoint string) (string, error) { + if len(endpoint) == 0 { + return "", fmt.Errorf("remote KMS provider can't use empty string as endpoint") + } + + u, err := url.Parse(endpoint) + if err != nil { + return "", fmt.Errorf("invalid endpoint %q for remote KMS provider, error: %v", endpoint, err) + } + + if u.Scheme != unixProtocol { + return "", fmt.Errorf("unsupported scheme %q for remote KMS provider", u.Scheme) + } + + // Linux abstract namespace socket - no physical file required + // Warning: Linux Abstract sockets have not concept of ACL (unlike traditional file based sockets). + // However, Linux Abstract sockets are subject to Linux networking namespace, so will only be accessible to + // containers within the same pod (unless host networking is used). + if strings.HasPrefix(u.Path, "/@") { + return strings.TrimPrefix(u.Path, "/"), nil + } + + return u.Path, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/api.pb.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/api.pb.go new file mode 100644 index 00000000000..ab55bd1b3e6 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/api.pb.go @@ -0,0 +1,542 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: api.proto + +package v2alpha1 + +import ( + context "context" + fmt "fmt" + proto "github.com/gogo/protobuf/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package + +type StatusRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *StatusRequest) Reset() { *m = StatusRequest{} } +func (m *StatusRequest) String() string { return proto.CompactTextString(m) } +func (*StatusRequest) ProtoMessage() {} +func (*StatusRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{0} +} +func (m *StatusRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StatusRequest.Unmarshal(m, b) +} +func (m *StatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StatusRequest.Marshal(b, m, deterministic) +} +func (m *StatusRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_StatusRequest.Merge(m, src) +} +func (m *StatusRequest) XXX_Size() int { + return xxx_messageInfo_StatusRequest.Size(m) +} +func (m *StatusRequest) XXX_DiscardUnknown() { + xxx_messageInfo_StatusRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_StatusRequest proto.InternalMessageInfo + +type StatusResponse struct { + // Version of the KMS plugin API. Must match the configured .resources[].providers[].kms.apiVersion + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + // Any value other than "ok" is failing healthz. On failure, the associated API server healthz endpoint will contain this value as part of the error message. + Healthz string `protobuf:"bytes,2,opt,name=healthz,proto3" json:"healthz,omitempty"` + // the current write key, used to determine staleness of data updated via value.Transformer.TransformFromStorage. + KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *StatusResponse) Reset() { *m = StatusResponse{} } +func (m *StatusResponse) String() string { return proto.CompactTextString(m) } +func (*StatusResponse) ProtoMessage() {} +func (*StatusResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{1} +} +func (m *StatusResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_StatusResponse.Unmarshal(m, b) +} +func (m *StatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_StatusResponse.Marshal(b, m, deterministic) +} +func (m *StatusResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_StatusResponse.Merge(m, src) +} +func (m *StatusResponse) XXX_Size() int { + return xxx_messageInfo_StatusResponse.Size(m) +} +func (m *StatusResponse) XXX_DiscardUnknown() { + xxx_messageInfo_StatusResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_StatusResponse proto.InternalMessageInfo + +func (m *StatusResponse) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *StatusResponse) GetHealthz() string { + if m != nil { + return m.Healthz + } + return "" +} + +func (m *StatusResponse) GetKeyId() string { + if m != nil { + return m.KeyId + } + return "" +} + +type DecryptRequest struct { + // The data to be decrypted. + Ciphertext []byte `protobuf:"bytes,1,opt,name=ciphertext,proto3" json:"ciphertext,omitempty"` + // UID is a unique identifier for the request. + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` + // The keyID that was provided to the apiserver during encryption. + // This represents the KMS KEK that was used to encrypt the data. + KeyId string `protobuf:"bytes,3,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + // Additional metadata that was sent by the KMS plugin during encryption. + Annotations map[string][]byte `protobuf:"bytes,4,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DecryptRequest) Reset() { *m = DecryptRequest{} } +func (m *DecryptRequest) String() string { return proto.CompactTextString(m) } +func (*DecryptRequest) ProtoMessage() {} +func (*DecryptRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{2} +} +func (m *DecryptRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DecryptRequest.Unmarshal(m, b) +} +func (m *DecryptRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DecryptRequest.Marshal(b, m, deterministic) +} +func (m *DecryptRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DecryptRequest.Merge(m, src) +} +func (m *DecryptRequest) XXX_Size() int { + return xxx_messageInfo_DecryptRequest.Size(m) +} +func (m *DecryptRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DecryptRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DecryptRequest proto.InternalMessageInfo + +func (m *DecryptRequest) GetCiphertext() []byte { + if m != nil { + return m.Ciphertext + } + return nil +} + +func (m *DecryptRequest) GetUid() string { + if m != nil { + return m.Uid + } + return "" +} + +func (m *DecryptRequest) GetKeyId() string { + if m != nil { + return m.KeyId + } + return "" +} + +func (m *DecryptRequest) GetAnnotations() map[string][]byte { + if m != nil { + return m.Annotations + } + return nil +} + +type DecryptResponse struct { + // The decrypted data. + Plaintext []byte `protobuf:"bytes,1,opt,name=plaintext,proto3" json:"plaintext,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *DecryptResponse) Reset() { *m = DecryptResponse{} } +func (m *DecryptResponse) String() string { return proto.CompactTextString(m) } +func (*DecryptResponse) ProtoMessage() {} +func (*DecryptResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{3} +} +func (m *DecryptResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DecryptResponse.Unmarshal(m, b) +} +func (m *DecryptResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DecryptResponse.Marshal(b, m, deterministic) +} +func (m *DecryptResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_DecryptResponse.Merge(m, src) +} +func (m *DecryptResponse) XXX_Size() int { + return xxx_messageInfo_DecryptResponse.Size(m) +} +func (m *DecryptResponse) XXX_DiscardUnknown() { + xxx_messageInfo_DecryptResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_DecryptResponse proto.InternalMessageInfo + +func (m *DecryptResponse) GetPlaintext() []byte { + if m != nil { + return m.Plaintext + } + return nil +} + +type EncryptRequest struct { + // The data to be encrypted. + Plaintext []byte `protobuf:"bytes,1,opt,name=plaintext,proto3" json:"plaintext,omitempty"` + // UID is a unique identifier for the request. + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EncryptRequest) Reset() { *m = EncryptRequest{} } +func (m *EncryptRequest) String() string { return proto.CompactTextString(m) } +func (*EncryptRequest) ProtoMessage() {} +func (*EncryptRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{4} +} +func (m *EncryptRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EncryptRequest.Unmarshal(m, b) +} +func (m *EncryptRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EncryptRequest.Marshal(b, m, deterministic) +} +func (m *EncryptRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_EncryptRequest.Merge(m, src) +} +func (m *EncryptRequest) XXX_Size() int { + return xxx_messageInfo_EncryptRequest.Size(m) +} +func (m *EncryptRequest) XXX_DiscardUnknown() { + xxx_messageInfo_EncryptRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_EncryptRequest proto.InternalMessageInfo + +func (m *EncryptRequest) GetPlaintext() []byte { + if m != nil { + return m.Plaintext + } + return nil +} + +func (m *EncryptRequest) GetUid() string { + if m != nil { + return m.Uid + } + return "" +} + +type EncryptResponse struct { + // The encrypted data. + Ciphertext []byte `protobuf:"bytes,1,opt,name=ciphertext,proto3" json:"ciphertext,omitempty"` + // The KMS key ID used to encrypt the data. This must always refer to the KMS KEK and not any local KEKs that may be in use. + // This can be used to inform staleness of data updated via value.Transformer.TransformFromStorage. + KeyId string `protobuf:"bytes,2,opt,name=key_id,json=keyId,proto3" json:"key_id,omitempty"` + // Additional metadata to be stored with the encrypted data. + // This metadata can contain the encrypted local KEK that was used to encrypt the DEK. + // This data is stored in plaintext in etcd. KMS plugin implementations are responsible for pre-encrypting any sensitive data. + Annotations map[string][]byte `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *EncryptResponse) Reset() { *m = EncryptResponse{} } +func (m *EncryptResponse) String() string { return proto.CompactTextString(m) } +func (*EncryptResponse) ProtoMessage() {} +func (*EncryptResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{5} +} +func (m *EncryptResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EncryptResponse.Unmarshal(m, b) +} +func (m *EncryptResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EncryptResponse.Marshal(b, m, deterministic) +} +func (m *EncryptResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_EncryptResponse.Merge(m, src) +} +func (m *EncryptResponse) XXX_Size() int { + return xxx_messageInfo_EncryptResponse.Size(m) +} +func (m *EncryptResponse) XXX_DiscardUnknown() { + xxx_messageInfo_EncryptResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_EncryptResponse proto.InternalMessageInfo + +func (m *EncryptResponse) GetCiphertext() []byte { + if m != nil { + return m.Ciphertext + } + return nil +} + +func (m *EncryptResponse) GetKeyId() string { + if m != nil { + return m.KeyId + } + return "" +} + +func (m *EncryptResponse) GetAnnotations() map[string][]byte { + if m != nil { + return m.Annotations + } + return nil +} + +func init() { + proto.RegisterType((*StatusRequest)(nil), "v2alpha1.StatusRequest") + proto.RegisterType((*StatusResponse)(nil), "v2alpha1.StatusResponse") + proto.RegisterType((*DecryptRequest)(nil), "v2alpha1.DecryptRequest") + proto.RegisterMapType((map[string][]byte)(nil), "v2alpha1.DecryptRequest.AnnotationsEntry") + proto.RegisterType((*DecryptResponse)(nil), "v2alpha1.DecryptResponse") + proto.RegisterType((*EncryptRequest)(nil), "v2alpha1.EncryptRequest") + proto.RegisterType((*EncryptResponse)(nil), "v2alpha1.EncryptResponse") + proto.RegisterMapType((map[string][]byte)(nil), "v2alpha1.EncryptResponse.AnnotationsEntry") +} + +func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } + +var fileDescriptor_00212fb1f9d3bf1c = []byte{ + // 391 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x93, 0xcf, 0x4f, 0xe2, 0x40, + 0x14, 0xc7, 0x29, 0x5d, 0x60, 0x79, 0xb0, 0x40, 0x26, 0x6c, 0xb6, 0x4b, 0x36, 0x1b, 0x32, 0x27, + 0x76, 0x0f, 0xdd, 0x2c, 0x5e, 0x8c, 0x89, 0x06, 0x13, 0x39, 0x18, 0xf4, 0x52, 0x8e, 0x1e, 0xcc, + 0x08, 0x2f, 0x76, 0x42, 0x9d, 0xd6, 0x76, 0xda, 0x58, 0xff, 0x50, 0x13, 0xff, 0x01, 0xff, 0x0e, + 0xd3, 0x76, 0xa0, 0x2d, 0x88, 0x9e, 0xbc, 0xcd, 0xfb, 0xd1, 0xef, 0xf7, 0xcd, 0x67, 0x5e, 0xa1, + 0xc9, 0x3c, 0x6e, 0x7a, 0xbe, 0x2b, 0x5d, 0xf2, 0x35, 0x1a, 0x33, 0xc7, 0xb3, 0xd9, 0x7f, 0xda, + 0x85, 0x6f, 0x73, 0xc9, 0x64, 0x18, 0x58, 0x78, 0x1f, 0x62, 0x20, 0xe9, 0x15, 0x74, 0xd6, 0x89, + 0xc0, 0x73, 0x45, 0x80, 0xc4, 0x80, 0x46, 0x84, 0x7e, 0xc0, 0x5d, 0x61, 0x68, 0x43, 0x6d, 0xd4, + 0xb4, 0xd6, 0x61, 0x52, 0xb1, 0x91, 0x39, 0xd2, 0x7e, 0x34, 0xaa, 0x59, 0x45, 0x85, 0xe4, 0x3b, + 0xd4, 0x57, 0x18, 0x5f, 0xf3, 0xa5, 0xa1, 0xa7, 0x85, 0xda, 0x0a, 0xe3, 0xf3, 0x25, 0x7d, 0xd1, + 0xa0, 0x73, 0x86, 0x0b, 0x3f, 0xf6, 0xa4, 0xf2, 0x23, 0xbf, 0x01, 0x16, 0xdc, 0xb3, 0xd1, 0x97, + 0xf8, 0x20, 0x53, 0x83, 0xb6, 0x55, 0xc8, 0x90, 0x1e, 0xe8, 0x21, 0x5f, 0x2a, 0xfd, 0xe4, 0xb8, + 0x47, 0x9b, 0xcc, 0xa0, 0xc5, 0x84, 0x70, 0x25, 0x93, 0xdc, 0x15, 0x81, 0xf1, 0x65, 0xa8, 0x8f, + 0x5a, 0xe3, 0x3f, 0xe6, 0xfa, 0xa6, 0x66, 0xd9, 0xd7, 0x3c, 0xcd, 0x7b, 0xa7, 0x42, 0xfa, 0xb1, + 0x55, 0xfc, 0x7a, 0x70, 0x02, 0xbd, 0xed, 0x86, 0x64, 0x92, 0x15, 0xc6, 0x8a, 0x41, 0x72, 0x24, + 0x7d, 0xa8, 0x45, 0xcc, 0x09, 0x31, 0x9d, 0xae, 0x6d, 0x65, 0xc1, 0x51, 0xf5, 0x50, 0xa3, 0xff, + 0xa0, 0xbb, 0xf1, 0x53, 0x18, 0x7f, 0x41, 0xd3, 0x73, 0x18, 0x17, 0x85, 0x7b, 0xe6, 0x09, 0x3a, + 0x81, 0xce, 0x54, 0x94, 0xc0, 0xbc, 0xdb, 0xbf, 0x8b, 0x85, 0x3e, 0x69, 0xd0, 0xdd, 0x48, 0x28, + 0xcf, 0x8f, 0xe0, 0xe6, 0x28, 0xab, 0x45, 0x94, 0x17, 0x65, 0x94, 0x7a, 0x8a, 0xf2, 0x6f, 0x8e, + 0x72, 0xcb, 0xe6, 0x73, 0x59, 0x8e, 0x9f, 0x35, 0xe8, 0xcf, 0x30, 0xbe, 0x64, 0x82, 0xdd, 0xe2, + 0x1d, 0x0a, 0x39, 0x47, 0x3f, 0xe2, 0x0b, 0x24, 0xc7, 0x50, 0xcf, 0x56, 0x95, 0xfc, 0xc8, 0x67, + 0x2b, 0x6d, 0xf3, 0xc0, 0xd8, 0x2d, 0x64, 0x33, 0xd3, 0x0a, 0x99, 0x40, 0x43, 0xbd, 0x11, 0x31, + 0xf6, 0xad, 0xc9, 0xe0, 0xe7, 0x1b, 0x95, 0xa2, 0x82, 0x42, 0x51, 0x54, 0x28, 0xbf, 0x63, 0x51, + 0x61, 0x8b, 0x1b, 0xad, 0xdc, 0xd4, 0xd3, 0xff, 0xf1, 0xe0, 0x35, 0x00, 0x00, 0xff, 0xff, 0xa7, + 0xdd, 0xa1, 0x79, 0x9c, 0x03, 0x00, 0x00, +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConn + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion4 + +// KeyManagementServiceClient is the client API for KeyManagementService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type KeyManagementServiceClient interface { + // this API is meant to be polled + Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) + // Execute decryption operation in KMS provider. + Decrypt(ctx context.Context, in *DecryptRequest, opts ...grpc.CallOption) (*DecryptResponse, error) + // Execute encryption operation in KMS provider. + Encrypt(ctx context.Context, in *EncryptRequest, opts ...grpc.CallOption) (*EncryptResponse, error) +} + +type keyManagementServiceClient struct { + cc *grpc.ClientConn +} + +func NewKeyManagementServiceClient(cc *grpc.ClientConn) KeyManagementServiceClient { + return &keyManagementServiceClient{cc} +} + +func (c *keyManagementServiceClient) Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) { + out := new(StatusResponse) + err := c.cc.Invoke(ctx, "/v2alpha1.KeyManagementService/Status", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *keyManagementServiceClient) Decrypt(ctx context.Context, in *DecryptRequest, opts ...grpc.CallOption) (*DecryptResponse, error) { + out := new(DecryptResponse) + err := c.cc.Invoke(ctx, "/v2alpha1.KeyManagementService/Decrypt", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *keyManagementServiceClient) Encrypt(ctx context.Context, in *EncryptRequest, opts ...grpc.CallOption) (*EncryptResponse, error) { + out := new(EncryptResponse) + err := c.cc.Invoke(ctx, "/v2alpha1.KeyManagementService/Encrypt", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// KeyManagementServiceServer is the server API for KeyManagementService service. +type KeyManagementServiceServer interface { + // this API is meant to be polled + Status(context.Context, *StatusRequest) (*StatusResponse, error) + // Execute decryption operation in KMS provider. + Decrypt(context.Context, *DecryptRequest) (*DecryptResponse, error) + // Execute encryption operation in KMS provider. + Encrypt(context.Context, *EncryptRequest) (*EncryptResponse, error) +} + +// UnimplementedKeyManagementServiceServer can be embedded to have forward compatible implementations. +type UnimplementedKeyManagementServiceServer struct { +} + +func (*UnimplementedKeyManagementServiceServer) Status(ctx context.Context, req *StatusRequest) (*StatusResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") +} +func (*UnimplementedKeyManagementServiceServer) Decrypt(ctx context.Context, req *DecryptRequest) (*DecryptResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Decrypt not implemented") +} +func (*UnimplementedKeyManagementServiceServer) Encrypt(ctx context.Context, req *EncryptRequest) (*EncryptResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Encrypt not implemented") +} + +func RegisterKeyManagementServiceServer(s *grpc.Server, srv KeyManagementServiceServer) { + s.RegisterService(&_KeyManagementService_serviceDesc, srv) +} + +func _KeyManagementService_Status_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatusRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KeyManagementServiceServer).Status(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v2alpha1.KeyManagementService/Status", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KeyManagementServiceServer).Status(ctx, req.(*StatusRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _KeyManagementService_Decrypt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DecryptRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KeyManagementServiceServer).Decrypt(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v2alpha1.KeyManagementService/Decrypt", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KeyManagementServiceServer).Decrypt(ctx, req.(*DecryptRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _KeyManagementService_Encrypt_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(EncryptRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(KeyManagementServiceServer).Encrypt(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/v2alpha1.KeyManagementService/Encrypt", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(KeyManagementServiceServer).Encrypt(ctx, req.(*EncryptRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _KeyManagementService_serviceDesc = grpc.ServiceDesc{ + ServiceName: "v2alpha1.KeyManagementService", + HandlerType: (*KeyManagementServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Status", + Handler: _KeyManagementService_Status_Handler, + }, + { + MethodName: "Decrypt", + Handler: _KeyManagementService_Decrypt_Handler, + }, + { + MethodName: "Encrypt", + Handler: _KeyManagementService_Encrypt_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "api.proto", +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/api.proto b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/api.proto new file mode 100644 index 00000000000..9b960b2acc4 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/api.proto @@ -0,0 +1,78 @@ +/* +Copyright 2022 The Kubernetes 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. +*/ + +// To regenerate api.pb.go run hack/update-generated-kms.sh +syntax = "proto3"; + +package v2alpha1; + +// This service defines the public APIs for remote KMS provider. +service KeyManagementService { + // this API is meant to be polled + rpc Status(StatusRequest) returns (StatusResponse) {} + + // Execute decryption operation in KMS provider. + rpc Decrypt(DecryptRequest) returns (DecryptResponse) {} + // Execute encryption operation in KMS provider. + rpc Encrypt(EncryptRequest) returns (EncryptResponse) {} +} + +message StatusRequest {} + +message StatusResponse { + // Version of the KMS plugin API. Must match the configured .resources[].providers[].kms.apiVersion + string version = 1; + // Any value other than "ok" is failing healthz. On failure, the associated API server healthz endpoint will contain this value as part of the error message. + string healthz = 2; + // the current write key, used to determine staleness of data updated via value.Transformer.TransformFromStorage. + string key_id = 3; +} + +message DecryptRequest { + // The data to be decrypted. + bytes ciphertext = 1; + // UID is a unique identifier for the request. + string uid = 2; + // The keyID that was provided to the apiserver during encryption. + // This represents the KMS KEK that was used to encrypt the data. + string key_id = 3; + // Additional metadata that was sent by the KMS plugin during encryption. + map annotations = 4; +} + +message DecryptResponse { + // The decrypted data. + bytes plaintext = 1; +} + +message EncryptRequest { + // The data to be encrypted. + bytes plaintext = 1; + // UID is a unique identifier for the request. + string uid = 2; +} + +message EncryptResponse { + // The encrypted data. + bytes ciphertext = 1; + // The KMS key ID used to encrypt the data. This must always refer to the KMS KEK and not any local KEKs that may be in use. + // This can be used to inform staleness of data updated via value.Transformer.TransformFromStorage. + string key_id = 2; + // Additional metadata to be stored with the encrypted data. + // This metadata can contain the encrypted local KEK that was used to encrypt the DEK. + // This data is stored in plaintext in etcd. KMS plugin implementations are responsible for pre-encrypting any sensitive data. + map annotations = 3; +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/v2alpha1.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/v2alpha1.go new file mode 100644 index 00000000000..546c4074ef7 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1/v2alpha1.go @@ -0,0 +1,18 @@ +/* +Copyright 2022 The Kubernetes 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 v2alpha1 contains definition of kms-plugin's gRPC service. +package v2alpha1 diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storageversion/updater.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storageversion/updater.go index ddd8dfbe632..ce4d87e91c4 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storageversion/updater.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/storageversion/updater.go @@ -91,10 +91,11 @@ func findStatusCondition(conditions []v1alpha1.StorageVersionCondition, // setStatusCondition sets the corresponding condition in conditions to newCondition. // conditions must be non-nil. -// 1. if the condition of the specified type already exists: all fields of the existing condition are updated to -// newCondition, LastTransitionTime is set to now if the new status differs from the old status -// 2. if a condition of the specified type does not exist: LastTransitionTime is set to now() if unset, -// and newCondition is appended +// 1. if the condition of the specified type already exists: all fields of the existing condition are updated to +// newCondition, LastTransitionTime is set to now if the new status differs from the old status +// 2. if a condition of the specified type does not exist: LastTransitionTime is set to now() if unset, +// and newCondition is appended +// // NOTE: forceTransition allows overwriting LastTransitionTime even when the status doesn't change. func setStatusCondition(conditions *[]v1alpha1.StorageVersionCondition, newCondition v1alpha1.StorageVersionCondition, forceTransition bool) { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller.go index fa18875e9de..cd4eff7beff 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_controller.go @@ -143,8 +143,8 @@ type configController struct { // This may only be accessed from the one and only worker goroutine. mostRecentUpdates []updateAttempt - // This must be locked while accessing flowSchemas or - // priorityLevelStates. A lock for writing is needed + // This must be locked while accessing the later fields. + // A lock for writing is needed // for writing to any of the following: // - the flowSchemas field // - the slice held in the flowSchemas field @@ -291,23 +291,6 @@ func newTestableController(config TestableConfig) *configController { return cfgCtlr } -// MaintainObservations keeps the observers from -// metrics.PriorityLevelConcurrencyPairVec from falling -// too far behind -func (cfgCtlr *configController) MaintainObservations(stopCh <-chan struct{}) { - wait.Until(cfgCtlr.updateObservations, 10*time.Second, stopCh) -} - -func (cfgCtlr *configController) updateObservations() { - cfgCtlr.lock.RLock() - defer cfgCtlr.lock.RUnlock() - for _, plc := range cfgCtlr.priorityLevelStates { - if plc.queues != nil { - plc.queues.UpdateObservations() - } - } -} - func (cfgCtlr *configController) Run(stopCh <-chan struct{}) error { defer utilruntime.HandleCrash() @@ -404,6 +387,8 @@ type cfgMeal struct { // provoking a call into this controller while the lock held // waiting on that request to complete. fsStatusUpdates []fsStatusUpdate + + maxWaitingRequests, maxExecutingRequests int } // A buffered set of status updates for FlowSchemas @@ -528,7 +513,13 @@ func (cfgCtlr *configController) lockAndDigestConfigObjects(newPLs []*flowcontro // The new config has been constructed cfgCtlr.priorityLevelStates = meal.newPLStates - klog.V(5).Infof("Switched to new API Priority and Fairness configuration") + klog.V(5).InfoS("Switched to new API Priority and Fairness configuration", "maxWaitingRequests", meal.maxWaitingRequests, "maxExecutinRequests", meal.maxExecutingRequests) + + metrics.GetWaitingReadonlyConcurrency().SetDenominator(float64(meal.maxWaitingRequests)) + metrics.GetWaitingMutatingConcurrency().SetDenominator(float64(meal.maxWaitingRequests)) + metrics.GetExecutingReadonlyConcurrency().SetDenominator(float64(meal.maxExecutingRequests)) + metrics.GetExecutingMutatingConcurrency().SetDenominator(float64(meal.maxExecutingRequests)) + return meal.fsStatusUpdates } @@ -680,6 +671,12 @@ func (meal *cfgMeal) finishQueueSetReconfigsLocked() { // difference will be negligible. concurrencyLimit := int(math.Ceil(float64(meal.cfgCtlr.serverConcurrencyLimit) * float64(plState.pl.Spec.Limited.AssuredConcurrencyShares) / meal.shareSum)) metrics.UpdateSharedConcurrencyLimit(plName, concurrencyLimit) + meal.maxExecutingRequests += concurrencyLimit + var waitLimit int + if qCfg := plState.pl.Spec.Limited.LimitResponse.Queuing; qCfg != nil { + waitLimit = int(qCfg.Queues * qCfg.QueueLengthLimit) + } + meal.maxWaitingRequests += waitLimit if plState.queues == nil { klog.V(5).Infof("Introducing queues for priority level %q: config=%s, concurrencyLimit=%d, quiescing=%v (shares=%v, shareSum=%v)", plName, fcfmt.Fmt(plState.pl.Spec), concurrencyLimit, plState.quiescing, plState.pl.Spec.Limited.AssuredConcurrencyShares, meal.shareSum) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_filter.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_filter.go index 554eb383d87..71f147867f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_filter.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/apf_filter.go @@ -66,9 +66,6 @@ type Interface interface { execFn func(), ) - // MaintainObservations is a helper for maintaining statistics. - MaintainObservations(stopCh <-chan struct{}) - // Run monitors config objects from the main apiservers and causes // any needed changes to local behavior. This method ceases // activity and returns after the given channel is closed. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/interface.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/interface.go index 165bfb9f385..4a6d91fa91a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/interface.go @@ -86,10 +86,6 @@ type QueueSet interface { // exactly once. StartRequest(ctx context.Context, width *request.WorkEstimate, hashValue uint64, flowDistinguisher, fsName string, descr1, descr2 interface{}, queueNoteFn QueueNoteFn) (req Request, idle bool) - // UpdateObservations makes sure any time-based statistics have - // caught up with the current clock reading - UpdateObservations() - // Dump saves and returns the instant internal state of the queue-set. // Note that dumping process will stop the queue-set from proceeding // any requests. diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/doc.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/doc.go index 840d78ea181..fc30ebfd5bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/doc.go @@ -52,12 +52,12 @@ limitations under the License. // limit. In the original paper, the partial derivative of R(t) with // respect to t is // -// 1 / NEQ(t) . +// 1 / NEQ(t) . // // To generalize from transmitting one packet at a time to executing C // requests at a time, that derivative becomes // -// C / NEQ(t) . +// C / NEQ(t) . // // However, sometimes there are fewer than C requests available to // execute. For a given queue "q", let us also write "reqs(q, t)" for @@ -70,7 +70,7 @@ limitations under the License. // for server requests: at a particular time t, the partial derivative // of R(t) with respect to t is // -// min( C, sum[over q] reqs(q, t) ) / NEQ(t) . +// min( C, sum[over q] reqs(q, t) ) / NEQ(t) . // // In terms of the implementation outline, this is the rate at which // virtual time is advancing at time t (in virtual nanoseconds per @@ -116,5 +116,4 @@ limitations under the License. // queue’s virtual start time is advanced by G. When a request // finishes being served, and the actual service time was S, the // queue’s virtual start time is decremented by G - S. -// package queueset diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go index 171382a7c4a..faa670bf173 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/fairqueuing/queueset/queueset.go @@ -243,6 +243,9 @@ func (qs *queueSet) setConfiguration(ctx context.Context, qCfg fq.QueuingConfig, if qll < 1 { qll = 1 } + if qCfg.DesiredNumQueues > 0 { + qll *= qCfg.DesiredNumQueues + } qs.reqsGaugePair.RequestsWaiting.SetDenominator(float64(qll)) qs.reqsGaugePair.RequestsExecuting.SetDenominator(float64(dCfg.ConcurrencyLimit)) qs.execSeatsGauge.SetDenominator(float64(dCfg.ConcurrencyLimit)) @@ -808,8 +811,8 @@ func (qs *queueSet) findDispatchQueueLocked() (*queue, *request) { // If the requested final seats exceed capacity of that queue, // we reduce them to current capacity and adjust additional latency // to preserve the total amount of work. - if oldestReqFromMinQueue.workEstimate.FinalSeats > uint(qs.dCfg.ConcurrencyLimit) { - finalSeats := uint(qs.dCfg.ConcurrencyLimit) + if oldestReqFromMinQueue.workEstimate.FinalSeats > uint64(qs.dCfg.ConcurrencyLimit) { + finalSeats := uint64(qs.dCfg.ConcurrencyLimit) additionalLatency := oldestReqFromMinQueue.workEstimate.finalWork.DurationPerSeat(float64(finalSeats)) oldestReqFromMinQueue.workEstimate.FinalSeats = finalSeats oldestReqFromMinQueue.workEstimate.AdditionalLatency = additionalLatency @@ -988,12 +991,6 @@ func removeQueueAndUpdateIndexes(queues []*queue, index int) []*queue { return keptQueues } -func (qs *queueSet) UpdateObservations() { - qs.reqsGaugePair.RequestsWaiting.Add(0) - qs.reqsGaugePair.RequestsExecuting.Add(0) - qs.execSeatsGauge.Add(0) -} - func (qs *queueSet) Dump(includeRequestDetails bool) debug.QueueSetDump { qs.lock.Lock() defer qs.lock.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/metrics.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/metrics.go index b72d549cddf..3ef66292eb3 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/metrics.go @@ -23,11 +23,11 @@ import ( "sync" "time" + epmetrics "k8s.io/apiserver/pkg/endpoints/metrics" apirequest "k8s.io/apiserver/pkg/endpoints/request" compbasemetrics "k8s.io/component-base/metrics" "k8s.io/component-base/metrics/legacyregistry" basemetricstestutil "k8s.io/component-base/metrics/testutil" - "k8s.io/utils/clock" ) const ( @@ -36,11 +36,13 @@ const ( ) const ( - requestKind = "request_kind" - priorityLevel = "priority_level" - flowSchema = "flow_schema" - phase = "phase" - mark = "mark" + requestKind = "request_kind" + priorityLevel = "priority_level" + flowSchema = "flow_schema" + phase = "phase" + LabelNamePhase = "phase" + LabelValueWaiting = "waiting" + LabelValueExecuting = "executing" ) var ( @@ -106,66 +108,46 @@ var ( []string{priorityLevel, flowSchema}, ) // PriorityLevelExecutionSeatsGaugeVec creates observers of seats occupied throughout execution for priority levels - PriorityLevelExecutionSeatsGaugeVec = NewSampleAndWaterMarkHistogramsVec(clock.RealClock{}, time.Millisecond, - &compbasemetrics.HistogramOpts{ - Namespace: namespace, - Subsystem: subsystem, - Name: "priority_level_seat_count_samples", - Help: "Periodic observations of number of seats occupied for any stage of execution (but only initial stage for WATCHes)", - Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, - ConstLabels: map[string]string{phase: "executing"}, - StabilityLevel: compbasemetrics.ALPHA, - }, - &compbasemetrics.HistogramOpts{ - Namespace: namespace, - Subsystem: subsystem, - Name: "priority_level_seat_count_watermarks", - Help: "Watermarks of the number of seats occupied for any stage of execution (but only initial stage for WATCHes)", - Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, + PriorityLevelExecutionSeatsGaugeVec = NewTimingRatioHistogramVec( + &compbasemetrics.TimingHistogramOpts{ + Namespace: namespace, + Subsystem: subsystem, + Name: "priority_level_seat_utilization", + Help: "Observations, at the end of every nanosecond, of utilization of seats for any stage of execution (but only initial stage for WATCHes)", + // Buckets for both 0.99 and 1.0 mean PromQL's histogram_quantile will reveal saturation + Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99, 1}, ConstLabels: map[string]string{phase: "executing"}, StabilityLevel: compbasemetrics.ALPHA, }, - []string{priorityLevel}, + priorityLevel, ) // PriorityLevelConcurrencyGaugeVec creates gauges of concurrency broken down by phase, priority level - PriorityLevelConcurrencyGaugeVec = NewSampleAndWaterMarkHistogramsVec(clock.RealClock{}, time.Millisecond, - &compbasemetrics.HistogramOpts{ - Namespace: namespace, - Subsystem: subsystem, - Name: "priority_level_request_count_samples", - Help: "Periodic observations of the number of requests waiting or in any stage of execution (but only initial stage for WATCHes)", - Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, - StabilityLevel: compbasemetrics.ALPHA, - }, - &compbasemetrics.HistogramOpts{ - Namespace: namespace, - Subsystem: subsystem, - Name: "priority_level_request_count_watermarks", - Help: "Watermarks of the number of requests waiting or in any stage of execution (but only initial stage for WATCHes)", - Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, + PriorityLevelConcurrencyGaugeVec = NewTimingRatioHistogramVec( + &compbasemetrics.TimingHistogramOpts{ + Namespace: namespace, + Subsystem: subsystem, + Name: "priority_level_request_utilization", + Help: "Observations, at the end of every nanosecond, of number of requests (as a fraction of the relevant limit) waiting or in any stage of execution (but only initial stage for WATCHes)", + // For executing: the denominator will be seats, so this metric will skew low. + // For waiting: total queue capacity is generally quite generous, so this metric will skew low. + Buckets: []float64{0, 0.001, 0.003, 0.01, 0.03, 0.1, 0.25, 0.5, 0.75, 1}, StabilityLevel: compbasemetrics.ALPHA, }, - []string{LabelNamePhase, priorityLevel}, + LabelNamePhase, priorityLevel, ) - // ReadWriteConcurrencyGaugeVec creates gauges of number of requests broken down by phase and mutating vs readonly - ReadWriteConcurrencyGaugeVec = NewSampleAndWaterMarkHistogramsVec(clock.RealClock{}, time.Millisecond, - &compbasemetrics.HistogramOpts{ - Namespace: namespace, - Subsystem: subsystem, - Name: "read_vs_write_request_count_samples", - Help: "Periodic observations of the number of requests waiting or in regular stage of execution", - Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, - StabilityLevel: compbasemetrics.ALPHA, - }, - &compbasemetrics.HistogramOpts{ - Namespace: namespace, - Subsystem: subsystem, - Name: "read_vs_write_request_count_watermarks", - Help: "Watermarks of the number of requests waiting or in regular stage of execution", - Buckets: []float64{0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1}, + // readWriteConcurrencyGaugeVec creates ratioed gauges of requests/limit broken down by phase and mutating vs readonly + readWriteConcurrencyGaugeVec = NewTimingRatioHistogramVec( + &compbasemetrics.TimingHistogramOpts{ + Namespace: namespace, + Subsystem: subsystem, + Name: "read_vs_write_current_requests", + Help: "Observations, at the end of every nanosecond, of the number of requests (as a fraction of the relevant limit) waiting or in regular stage of execution", + // This metric will skew low for the same reason as the priority level metrics + // and also because APF has a combined limit for mutating and readonly. + Buckets: []float64{0, 0.001, 0.01, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99, 1}, StabilityLevel: compbasemetrics.ALPHA, }, - []string{LabelNamePhase, requestKind}, + LabelNamePhase, requestKind, ) apiserverCurrentR = compbasemetrics.NewGaugeVec( &compbasemetrics.GaugeOpts{ @@ -357,9 +339,39 @@ var ( }. Append(PriorityLevelExecutionSeatsGaugeVec.metrics()...). Append(PriorityLevelConcurrencyGaugeVec.metrics()...). - Append(ReadWriteConcurrencyGaugeVec.metrics()...) + Append(readWriteConcurrencyGaugeVec.metrics()...) ) +type indexOnce struct { + labelValues []string + once sync.Once + gauge RatioedGauge +} + +func (io *indexOnce) getGauge() RatioedGauge { + io.once.Do(func() { + io.gauge = readWriteConcurrencyGaugeVec.NewForLabelValuesSafe(0, 1, io.labelValues) + }) + return io.gauge +} + +var waitingReadonly = indexOnce{labelValues: []string{LabelValueWaiting, epmetrics.ReadOnlyKind}} +var executingReadonly = indexOnce{labelValues: []string{LabelValueExecuting, epmetrics.ReadOnlyKind}} +var waitingMutating = indexOnce{labelValues: []string{LabelValueWaiting, epmetrics.MutatingKind}} +var executingMutating = indexOnce{labelValues: []string{LabelValueExecuting, epmetrics.MutatingKind}} + +// GetWaitingReadonlyConcurrency returns the gauge of number of readonly requests waiting / limit on those. +var GetWaitingReadonlyConcurrency = waitingReadonly.getGauge + +// GetExecutingReadonlyConcurrency returns the gauge of number of executing readonly requests / limit on those. +var GetExecutingReadonlyConcurrency = executingReadonly.getGauge + +// GetWaitingMutatingConcurrency returns the gauge of number of mutating requests waiting / limit on those. +var GetWaitingMutatingConcurrency = waitingMutating.getGauge + +// GetExecutingMutatingConcurrency returns the gauge of number of executing mutating requests / limit on those. +var GetExecutingMutatingConcurrency = executingMutating.getGauge + // AddRequestsInQueues adds the given delta to the gauge of the # of requests in the queues of the specified flowSchema and priorityLevel func AddRequestsInQueues(ctx context.Context, priorityLevel, flowSchema string, delta int) { apiserverCurrentInqueueRequests.WithLabelValues(priorityLevel, flowSchema).Add(float64(delta)) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/sample_and_watermark.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/sample_and_watermark.go deleted file mode 100644 index b1f83e628ce..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/sample_and_watermark.go +++ /dev/null @@ -1,204 +0,0 @@ -/* -Copyright 2019 The Kubernetes 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 metrics - -import ( - "sync" - "time" - - compbasemetrics "k8s.io/component-base/metrics" - "k8s.io/klog/v2" - "k8s.io/utils/clock" -) - -const ( - labelNameMark = "mark" - labelValueLo = "low" - labelValueHi = "high" - LabelNamePhase = "phase" - LabelValueWaiting = "waiting" - LabelValueExecuting = "executing" -) - -// SampleAndWaterMarkObserverVec creates RatioedGauges that -// populate histograms of samples and low- and high-water-marks. The -// generator has a samplePeriod, and the histograms get an observation -// every samplePeriod. The sampling windows are quantized based on -// the monotonic rather than wall-clock times. The `t0` field is -// there so to provide a baseline for monotonic clock differences. -type SampleAndWaterMarkObserverVec struct { - *sampleAndWaterMarkObserverVec -} - -type sampleAndWaterMarkObserverVec struct { - clock clock.PassiveClock - t0 time.Time - samplePeriod time.Duration - samples *compbasemetrics.HistogramVec - waterMarks *compbasemetrics.HistogramVec -} - -var _ RatioedGaugeVec = SampleAndWaterMarkObserverVec{} - -// NewSampleAndWaterMarkHistogramsVec makes a new one -func NewSampleAndWaterMarkHistogramsVec(clock clock.PassiveClock, samplePeriod time.Duration, sampleOpts, waterMarkOpts *compbasemetrics.HistogramOpts, labelNames []string) SampleAndWaterMarkObserverVec { - return SampleAndWaterMarkObserverVec{ - &sampleAndWaterMarkObserverVec{ - clock: clock, - t0: clock.Now(), - samplePeriod: samplePeriod, - samples: compbasemetrics.NewHistogramVec(sampleOpts, labelNames), - waterMarks: compbasemetrics.NewHistogramVec(waterMarkOpts, append([]string{labelNameMark}, labelNames...)), - }} -} - -func (swg *sampleAndWaterMarkObserverVec) quantize(when time.Time) int64 { - return int64(when.Sub(swg.t0) / swg.samplePeriod) -} - -// NewForLabelValuesSafe makes a new RatioedGauge -func (swg *sampleAndWaterMarkObserverVec) NewForLabelValuesSafe(initialNumerator, initialDenominator float64, labelValues []string) RatioedGauge { - ratio := initialNumerator / initialDenominator - when := swg.clock.Now() - return &sampleAndWaterMarkHistograms{ - sampleAndWaterMarkObserverVec: swg, - labelValues: labelValues, - loLabelValues: append([]string{labelValueLo}, labelValues...), - hiLabelValues: append([]string{labelValueHi}, labelValues...), - denominator: initialDenominator, - sampleAndWaterMarkAccumulator: sampleAndWaterMarkAccumulator{ - lastSet: when, - lastSetInt: swg.quantize(when), - numerator: initialNumerator, - ratio: ratio, - loRatio: ratio, - hiRatio: ratio, - }} -} - -func (swg *sampleAndWaterMarkObserverVec) metrics() Registerables { - return Registerables{swg.samples, swg.waterMarks} -} - -type sampleAndWaterMarkHistograms struct { - *sampleAndWaterMarkObserverVec - labelValues []string - loLabelValues, hiLabelValues []string - - sync.Mutex - denominator float64 - sampleAndWaterMarkAccumulator -} - -type sampleAndWaterMarkAccumulator struct { - lastSet time.Time - lastSetInt int64 // lastSet / samplePeriod - numerator float64 - ratio float64 // numerator/denominator - loRatio, hiRatio float64 -} - -var _ RatioedGauge = (*sampleAndWaterMarkHistograms)(nil) - -func (saw *sampleAndWaterMarkHistograms) Set(numerator float64) { - saw.innerSet(func() { - saw.numerator = numerator - }) -} - -func (saw *sampleAndWaterMarkHistograms) Add(deltaNumerator float64) { - saw.innerSet(func() { - saw.numerator += deltaNumerator - }) -} -func (saw *sampleAndWaterMarkHistograms) Sub(deltaNumerator float64) { - saw.innerSet(func() { - saw.numerator -= deltaNumerator - }) -} - -func (saw *sampleAndWaterMarkHistograms) Inc() { - saw.innerSet(func() { - saw.numerator += 1 - }) -} -func (saw *sampleAndWaterMarkHistograms) Dec() { - saw.innerSet(func() { - saw.numerator -= 1 - }) -} - -func (saw *sampleAndWaterMarkHistograms) SetToCurrentTime() { - saw.innerSet(func() { - saw.numerator = float64(saw.clock.Now().Sub(time.Unix(0, 0))) - }) -} - -func (saw *sampleAndWaterMarkHistograms) SetDenominator(denominator float64) { - saw.innerSet(func() { - saw.denominator = denominator - }) -} - -func (saw *sampleAndWaterMarkHistograms) innerSet(updateNumeratorOrDenominator func()) { - when, whenInt, acc, wellOrdered := func() (time.Time, int64, sampleAndWaterMarkAccumulator, bool) { - saw.Lock() - defer saw.Unlock() - // Moved these variables here to tiptoe around https://github.com/golang/go/issues/43570 for #97685 - when := saw.clock.Now() - whenInt := saw.quantize(when) - acc := saw.sampleAndWaterMarkAccumulator - wellOrdered := !when.Before(acc.lastSet) - updateNumeratorOrDenominator() - saw.ratio = saw.numerator / saw.denominator - if wellOrdered { - if acc.lastSetInt < whenInt { - saw.loRatio, saw.hiRatio = acc.ratio, acc.ratio - saw.lastSetInt = whenInt - } - saw.lastSet = when - } - // `wellOrdered` should always be true because we are using - // monotonic clock readings and they never go backwards. Yet - // very small backwards steps (under 1 microsecond) have been - // observed - // (https://github.com/kubernetes/kubernetes/issues/96459). - // In the backwards case, treat the current reading as if it - // had occurred at time `saw.lastSet` and log an error. It - // would be wrong to update `saw.lastSet` in this case because - // that plants a time bomb for future updates to - // `saw.lastSetInt`. - if saw.ratio < saw.loRatio { - saw.loRatio = saw.ratio - } else if saw.ratio > saw.hiRatio { - saw.hiRatio = saw.ratio - } - return when, whenInt, acc, wellOrdered - }() - if !wellOrdered { - lastSetS := acc.lastSet.String() - whenS := when.String() - klog.Errorf("Time went backwards from %s to %s for labelValues=%#+v", lastSetS, whenS, saw.labelValues) - } - for acc.lastSetInt < whenInt { - saw.samples.WithLabelValues(saw.labelValues...).Observe(acc.ratio) - saw.waterMarks.WithLabelValues(saw.loLabelValues...).Observe(acc.loRatio) - saw.waterMarks.WithLabelValues(saw.hiLabelValues...).Observe(acc.hiRatio) - acc.lastSetInt++ - acc.loRatio, acc.hiRatio = acc.ratio, acc.ratio - } -} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/timing_ratio_histogram.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/timing_ratio_histogram.go new file mode 100644 index 00000000000..cd32782a49c --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/metrics/timing_ratio_histogram.go @@ -0,0 +1,225 @@ +/* +Copyright 2022 The Kubernetes 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 metrics + +import ( + "context" + "sync" + "time" + + compbasemetrics "k8s.io/component-base/metrics" + "k8s.io/klog/v2" +) + +// TimingRatioHistogram is essentially a gauge for a ratio where the client +// independently controls the numerator and denominator. +// When scraped it produces a histogram of samples of the ratio +// taken at the end of every nanosecond. +// `*TimingRatioHistogram` implements both Registerable and RatioedGauge. +type TimingRatioHistogram struct { + // The implementation is layered on TimingHistogram, + // adding the division by an occasionally adjusted denominator. + + // Registerable is the registerable aspect. + // That is the registerable aspect of the underlying TimingHistogram. + compbasemetrics.Registerable + + // timingRatioHistogramInner implements the RatioedGauge aspect. + timingRatioHistogramInner +} + +// TimingRatioHistogramOpts is the constructor parameters of a TimingRatioHistogram. +// The `TimingHistogramOpts.InitialValue` is the initial numerator. +type TimingRatioHistogramOpts struct { + compbasemetrics.TimingHistogramOpts + InitialDenominator float64 +} + +// timingRatioHistogramInner implements the instrumentation aspect +type timingRatioHistogramInner struct { + nowFunc func() time.Time + getGaugeOfRatio func() Gauge + sync.Mutex + // access only with mutex locked + numerator, denominator float64 +} + +var _ RatioedGauge = &timingRatioHistogramInner{} +var _ RatioedGauge = &TimingRatioHistogram{} +var _ compbasemetrics.Registerable = &TimingRatioHistogram{} + +// NewTimingHistogram returns an object which is TimingHistogram-like. However, nothing +// will be measured until the histogram is registered in at least one registry. +func NewTimingRatioHistogram(opts *TimingRatioHistogramOpts) *TimingRatioHistogram { + return NewTestableTimingRatioHistogram(time.Now, opts) +} + +// NewTestableTimingHistogram adds injection of the clock +func NewTestableTimingRatioHistogram(nowFunc func() time.Time, opts *TimingRatioHistogramOpts) *TimingRatioHistogram { + ratioedOpts := opts.TimingHistogramOpts + ratioedOpts.InitialValue /= opts.InitialDenominator + th := compbasemetrics.NewTestableTimingHistogram(nowFunc, &ratioedOpts) + return &TimingRatioHistogram{ + Registerable: th, + timingRatioHistogramInner: timingRatioHistogramInner{ + nowFunc: nowFunc, + getGaugeOfRatio: func() Gauge { return th }, + numerator: opts.InitialValue, + denominator: opts.InitialDenominator, + }} +} + +func (trh *timingRatioHistogramInner) Set(numerator float64) { + trh.Lock() + defer trh.Unlock() + trh.numerator = numerator + ratio := numerator / trh.denominator + trh.getGaugeOfRatio().Set(ratio) +} + +func (trh *timingRatioHistogramInner) Add(deltaNumerator float64) { + trh.Lock() + defer trh.Unlock() + numerator := trh.numerator + deltaNumerator + trh.numerator = numerator + ratio := numerator / trh.denominator + trh.getGaugeOfRatio().Set(ratio) +} + +func (trh *timingRatioHistogramInner) Sub(deltaNumerator float64) { + trh.Add(-deltaNumerator) +} + +func (trh *timingRatioHistogramInner) Inc() { + trh.Add(1) +} + +func (trh *timingRatioHistogramInner) Dec() { + trh.Add(-1) +} + +func (trh *timingRatioHistogramInner) SetToCurrentTime() { + trh.Set(float64(trh.nowFunc().Sub(time.Unix(0, 0)))) +} + +func (trh *timingRatioHistogramInner) SetDenominator(denominator float64) { + trh.Lock() + defer trh.Unlock() + trh.denominator = denominator + ratio := trh.numerator / denominator + trh.getGaugeOfRatio().Set(ratio) +} + +// WithContext allows the normal TimingHistogram metric to pass in context. +// The context is no-op at the current level of development. +func (trh *timingRatioHistogramInner) WithContext(ctx context.Context) RatioedGauge { + return trh +} + +// TimingRatioHistogramVec is a collection of TimingRatioHistograms that differ +// only in label values. +// `*TimingRatioHistogramVec` implements both Registerable and RatioedGaugeVec. +type TimingRatioHistogramVec struct { + // promote only the Registerable methods + compbasemetrics.Registerable + // delegate is TimingHistograms of the ratio + delegate compbasemetrics.GaugeVecMetric +} + +var _ RatioedGaugeVec = &TimingRatioHistogramVec{} +var _ compbasemetrics.Registerable = &TimingRatioHistogramVec{} + +// NewTimingHistogramVec constructs a new vector. +// `opts.InitialValue` is the initial ratio, but this applies +// only for the tiny period of time until NewForLabelValuesSafe sets +// the ratio based on the given initial numerator and denominator. +// Thus there is a tiny splinter of time during member construction when +// its underlying TimingHistogram is given the initial numerator rather than +// the initial ratio (which is obviously a non-issue when both are zero). +// Note the difficulties associated with extracting a member +// before registering the vector. +func NewTimingRatioHistogramVec(opts *compbasemetrics.TimingHistogramOpts, labelNames ...string) *TimingRatioHistogramVec { + return NewTestableTimingRatioHistogramVec(time.Now, opts, labelNames...) +} + +// NewTestableTimingHistogramVec adds injection of the clock. +func NewTestableTimingRatioHistogramVec(nowFunc func() time.Time, opts *compbasemetrics.TimingHistogramOpts, labelNames ...string) *TimingRatioHistogramVec { + delegate := compbasemetrics.NewTestableTimingHistogramVec(nowFunc, opts, labelNames) + return &TimingRatioHistogramVec{ + Registerable: delegate, + delegate: delegate, + } +} + +func (v *TimingRatioHistogramVec) metrics() Registerables { + return Registerables{v} +} + +// NewForLabelValuesChecked will return an error if this vec is not hidden and not yet registered +// or there is a syntactic problem with the labelValues. +func (v *TimingRatioHistogramVec) NewForLabelValuesChecked(initialNumerator, initialDenominator float64, labelValues []string) (RatioedGauge, error) { + underMember, err := v.delegate.WithLabelValuesChecked(labelValues...) + if err != nil { + return noopRatioed{}, err + } + underMember.Set(initialNumerator / initialDenominator) + return &timingRatioHistogramInner{ + getGaugeOfRatio: func() Gauge { return underMember }, + numerator: initialNumerator, + denominator: initialDenominator, + }, nil +} + +// NewForLabelValuesSafe is the same as NewForLabelValuesChecked in cases where that does not +// return an error. When the unsafe version returns an error due to the vector not being +// registered yet, the safe version returns an object that implements its methods +// by looking up the relevant vector member in each call (thus getting a non-noop after registration). +// In the other error cases the object returned here is a noop. +func (v *TimingRatioHistogramVec) NewForLabelValuesSafe(initialNumerator, initialDenominator float64, labelValues []string) RatioedGauge { + tro, err := v.NewForLabelValuesChecked(initialNumerator, initialDenominator, labelValues) + if err == nil { + klog.V(3).InfoS("TimingRatioHistogramVec.NewForLabelValuesSafe hit the efficient case", "fqName", v.FQName(), "labelValues", labelValues) + return tro + } + if !compbasemetrics.ErrIsNotRegistered(err) { + klog.ErrorS(err, "Failed to extract TimingRatioHistogramVec member, using noop instead", "vectorname", v.FQName(), "labelValues", labelValues) + return tro + } + klog.V(3).InfoS("TimingRatioHistogramVec.NewForLabelValuesSafe hit the inefficient case", "fqName", v.FQName(), "labelValues", labelValues) + // At this point we know v.NewForLabelValuesChecked(..) returns a permanent noop, + // which we precisely want to avoid using. Instead, make our own gauge that + // fetches the element on every Set. + return &timingRatioHistogramInner{ + getGaugeOfRatio: func() Gauge { return v.delegate.WithLabelValues(labelValues...) }, + numerator: initialNumerator, + denominator: initialDenominator, + } +} + +type noopRatioed struct{} + +func (noopRatioed) Set(float64) {} +func (noopRatioed) Add(float64) {} +func (noopRatioed) Sub(float64) {} +func (noopRatioed) Inc() {} +func (noopRatioed) Dec() {} +func (noopRatioed) SetToCurrentTime() {} +func (noopRatioed) SetDenominator(float64) {} + +func (v *TimingRatioHistogramVec) Reset() { + v.delegate.Reset() +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/config.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/config.go new file mode 100644 index 00000000000..b6db19209b5 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/config.go @@ -0,0 +1,92 @@ +/* +Copyright 2022 The Kubernetes 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 request + +import ( + "time" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +const ( + minimumSeats = 1 + maximumSeats = 10 + objectsPerSeat = 100.0 + watchesPerSeat = 10.0 + enableMutatingWorkEstimator = true +) + +var eventAdditionalDuration = 5 * time.Millisecond + +// WorkEstimatorConfig holds work estimator parameters. +type WorkEstimatorConfig struct { + *ListWorkEstimatorConfig `json:"listWorkEstimatorConfig,omitempty"` + *MutatingWorkEstimatorConfig `json:"mutatingWorkEstimatorConfig,omitempty"` + + // MinimumSeats is the minimum number of seats a request must occupy. + MinimumSeats uint64 `json:"minimumSeats,omitempty"` + // MaximumSeats is the maximum number of seats a request can occupy + // + // NOTE: work_estimate_seats_samples metric uses the value of maximumSeats + // as the upper bound, so when we change maximumSeats we should also + // update the buckets of the metric. + MaximumSeats uint64 `json:"maximumSeats,omitempty"` +} + +// ListWorkEstimatorConfig holds work estimator parameters related to list requests. +type ListWorkEstimatorConfig struct { + ObjectsPerSeat float64 `json:"objectsPerSeat,omitempty"` +} + +// MutatingWorkEstimatorConfig holds work estimator +// parameters related to watches of mutating objects. +type MutatingWorkEstimatorConfig struct { + // TODO(wojtekt): Remove it once we tune the algorithm to not fail + // scalability tests. + Enabled bool `json:"enable,omitempty"` + EventAdditionalDuration metav1.Duration `json:"eventAdditionalDurationMs,omitempty"` + WatchesPerSeat float64 `json:"watchesPerSeat,omitempty"` +} + +// DefaultWorkEstimatorConfig creates a new WorkEstimatorConfig with default values. +func DefaultWorkEstimatorConfig() *WorkEstimatorConfig { + return &WorkEstimatorConfig{ + MinimumSeats: minimumSeats, + MaximumSeats: maximumSeats, + ListWorkEstimatorConfig: defaultListWorkEstimatorConfig(), + MutatingWorkEstimatorConfig: defaultMutatingWorkEstimatorConfig(), + } +} + +// defaultListWorkEstimatorConfig creates a new ListWorkEstimatorConfig with default values. +func defaultListWorkEstimatorConfig() *ListWorkEstimatorConfig { + return &ListWorkEstimatorConfig{ObjectsPerSeat: objectsPerSeat} +} + +// defaultMutatingWorkEstimatorConfig creates a new MutatingWorkEstimatorConfig with default values. +func defaultMutatingWorkEstimatorConfig() *MutatingWorkEstimatorConfig { + return &MutatingWorkEstimatorConfig{ + Enabled: enableMutatingWorkEstimator, + EventAdditionalDuration: metav1.Duration{Duration: eventAdditionalDuration}, + WatchesPerSeat: watchesPerSeat, + } +} + +// eventAdditionalDuration converts eventAdditionalDurationMs to a time.Duration type. +func (c *MutatingWorkEstimatorConfig) eventAdditionalDuration() time.Duration { + return c.EventAdditionalDuration.Duration +} diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/list_work_estimator.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/list_work_estimator.go index 50125715c8a..4771fcdecfe 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/list_work_estimator.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/list_work_estimator.go @@ -29,14 +29,16 @@ import ( "k8s.io/klog/v2" ) -func newListWorkEstimator(countFn objectCountGetterFunc) WorkEstimatorFunc { +func newListWorkEstimator(countFn objectCountGetterFunc, config *WorkEstimatorConfig) WorkEstimatorFunc { estimator := &listWorkEstimator{ + config: config, countGetterFn: countFn, } return estimator.estimate } type listWorkEstimator struct { + config *WorkEstimatorConfig countGetterFn objectCountGetterFunc } @@ -45,7 +47,7 @@ func (e *listWorkEstimator) estimate(r *http.Request, flowSchemaName, priorityLe if !ok { // no RequestInfo should never happen, but to be on the safe side // let's return maximumSeats - return WorkEstimate{InitialSeats: maximumSeats} + return WorkEstimate{InitialSeats: e.config.MaximumSeats} } query := r.URL.Query() @@ -55,7 +57,7 @@ func (e *listWorkEstimator) estimate(r *http.Request, flowSchemaName, priorityLe // This request is destined to fail in the validation layer, // return maximumSeats for this request to be consistent. - return WorkEstimate{InitialSeats: maximumSeats} + return WorkEstimate{InitialSeats: e.config.MaximumSeats} } isListFromCache := !shouldListFromStorage(query, &listOptions) @@ -66,7 +68,7 @@ func (e *listWorkEstimator) estimate(r *http.Request, flowSchemaName, priorityLe // be conservative here and allocate maximum seats to this list request. // NOTE: if a CRD is removed, its count will go stale first and then the // pruner will eventually remove the CRD from the cache. - return WorkEstimate{InitialSeats: maximumSeats} + return WorkEstimate{InitialSeats: e.config.MaximumSeats} case err == ObjectCountNotFoundErr: // there are multiple scenarios in which we can see this error: // a. the type is truly unknown, a typo on the caller's part. @@ -80,12 +82,12 @@ func (e *listWorkEstimator) estimate(r *http.Request, flowSchemaName, priorityLe // when aggregated API calls are overestimated, we allocate the minimum // possible seats (see #109106 as an example when being more conservative // led to problems). - return WorkEstimate{InitialSeats: minimumSeats} + return WorkEstimate{InitialSeats: e.config.MinimumSeats} case err != nil: // we should never be here since Get returns either ObjectCountStaleErr or // ObjectCountNotFoundErr, return maximumSeats to be on the safe side. klog.ErrorS(err, "Unexpected error from object count tracker") - return WorkEstimate{InitialSeats: maximumSeats} + return WorkEstimate{InitialSeats: e.config.MaximumSeats} } limit := numStored @@ -111,14 +113,14 @@ func (e *listWorkEstimator) estimate(r *http.Request, flowSchemaName, priorityLe // will be processed by the list request. // we will come up with a different formula for the transformation function and/or // fine tune this number in future iteratons. - seats := uint(math.Ceil(float64(estimatedObjectsToBeProcessed) / float64(100))) + seats := uint64(math.Ceil(float64(estimatedObjectsToBeProcessed) / e.config.ObjectsPerSeat)) // make sure we never return a seat of zero - if seats < minimumSeats { - seats = minimumSeats + if seats < e.config.MinimumSeats { + seats = e.config.MinimumSeats } - if seats > maximumSeats { - seats = maximumSeats + if seats > e.config.MaximumSeats { + seats = e.config.MaximumSeats } return WorkEstimate{InitialSeats: seats} } @@ -132,7 +134,8 @@ func key(requestInfo *apirequest.RequestInfo) string { } // NOTICE: Keep in sync with shouldDelegateList function in -// staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go +// +// staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go func shouldListFromStorage(query url.Values, opts *metav1.ListOptions) bool { resourceVersion := opts.ResourceVersion pagingEnabled := utilfeature.DefaultFeatureGate.Enabled(features.APIListChunking) diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go index 45f47686a60..990aa63241a 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/mutating_work_estimator.go @@ -25,35 +25,23 @@ import ( "k8s.io/apiserver/pkg/util/flowcontrol/metrics" ) -const ( - watchesPerSeat = 10.0 - eventAdditionalDuration = 5 * time.Millisecond - // TODO(wojtekt): Remove it once we tune the algorithm to not fail - // scalability tests. - enableMutatingWorkEstimator = true -) - -func newMutatingWorkEstimator(countFn watchCountGetterFunc) WorkEstimatorFunc { - return newTestMutatingWorkEstimator(countFn, enableMutatingWorkEstimator) -} - -func newTestMutatingWorkEstimator(countFn watchCountGetterFunc, enabled bool) WorkEstimatorFunc { +func newMutatingWorkEstimator(countFn watchCountGetterFunc, config *WorkEstimatorConfig) WorkEstimatorFunc { estimator := &mutatingWorkEstimator{ + config: config, countFn: countFn, - enabled: enabled, } return estimator.estimate } type mutatingWorkEstimator struct { + config *WorkEstimatorConfig countFn watchCountGetterFunc - enabled bool } func (e *mutatingWorkEstimator) estimate(r *http.Request, flowSchemaName, priorityLevelName string) WorkEstimate { // TODO(wojtekt): Remove once we tune the algorithm to not fail // scalability tests. - if !e.enabled { + if !e.config.Enabled { return WorkEstimate{ InitialSeats: 1, } @@ -65,8 +53,8 @@ func (e *mutatingWorkEstimator) estimate(r *http.Request, flowSchemaName, priori // let's return a large value. return WorkEstimate{ InitialSeats: 1, - FinalSeats: maximumSeats, - AdditionalLatency: eventAdditionalDuration, + FinalSeats: e.config.MaximumSeats, + AdditionalLatency: e.config.eventAdditionalDuration(), } } watchCount := e.countFn(requestInfo) @@ -86,7 +74,7 @@ func (e *mutatingWorkEstimator) estimate(r *http.Request, flowSchemaName, priori // is taking 1/Nth of a seat for M milliseconds. // We allow the accounting of that work in P&F to be reshaped into another // rectangle of equal area for practical reasons. - var finalSeats uint + var finalSeats uint64 var additionalLatency time.Duration // TODO: Make this unconditional after we tune the algorithm better. @@ -94,12 +82,12 @@ func (e *mutatingWorkEstimator) estimate(r *http.Request, flowSchemaName, priori // the request finishes even if there is a small number of watches. // However, until we tune the estimation we want to stay on the safe side // an avoid introducing additional latency for almost every single request. - if watchCount >= watchesPerSeat { + if watchCount >= int(e.config.WatchesPerSeat) { // TODO: As described in the KEP, we should take into account that not all // events are equal and try to estimate the cost of a single event based on // some historical data about size of events. - finalSeats = uint(math.Ceil(float64(watchCount) / watchesPerSeat)) - finalWork := SeatsTimesDuration(float64(finalSeats), eventAdditionalDuration) + finalSeats = uint64(math.Ceil(float64(watchCount) / e.config.WatchesPerSeat)) + finalWork := SeatsTimesDuration(float64(finalSeats), e.config.eventAdditionalDuration()) // While processing individual events is highly parallel, // the design/implementation of P&F has a couple limitations that @@ -129,8 +117,8 @@ func (e *mutatingWorkEstimator) estimate(r *http.Request, flowSchemaName, priori // // TODO: Confirm that the current cap of maximumSeats allow us to // achieve the above. - if finalSeats > maximumSeats { - finalSeats = maximumSeats + if finalSeats > e.config.MaximumSeats { + finalSeats = e.config.MaximumSeats } additionalLatency = finalWork.DurationPerSeat(float64(finalSeats)) } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/width.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/width.go index c9f1d155c4a..86f0425843b 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/width.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/request/width.go @@ -25,28 +25,16 @@ import ( "k8s.io/klog/v2" ) -const ( - // the minimum number of seats a request must occupy - minimumSeats = 1 - - // the maximum number of seats a request can occupy - // - // NOTE: work_estimate_seats_samples metric uses the value of maximumSeats - // as the upper bound, so when we change maximumSeats we should also - // update the buckets of the metric. - maximumSeats = 10 -) - // WorkEstimate carries three of the four parameters that determine the work in a request. // The fourth parameter is the duration of the initial phase of execution. type WorkEstimate struct { // InitialSeats is the number of seats occupied while the server is // executing this request. - InitialSeats uint + InitialSeats uint64 // FinalSeats is the number of seats occupied at the end, // during the AdditionalLatency. - FinalSeats uint + FinalSeats uint64 // AdditionalLatency specifies the additional duration the seats allocated // to this request must be reserved after the given request had finished. @@ -76,10 +64,12 @@ type watchCountGetterFunc func(*apirequest.RequestInfo) int // NewWorkEstimator estimates the work that will be done by a given request, // if no WorkEstimatorFunc matches the given request then the default // work estimate of 1 seat is allocated to the request. -func NewWorkEstimator(objectCountFn objectCountGetterFunc, watchCountFn watchCountGetterFunc) WorkEstimatorFunc { +func NewWorkEstimator(objectCountFn objectCountGetterFunc, watchCountFn watchCountGetterFunc, config *WorkEstimatorConfig) WorkEstimatorFunc { estimator := &workEstimator{ - listWorkEstimator: newListWorkEstimator(objectCountFn), - mutatingWorkEstimator: newMutatingWorkEstimator(watchCountFn), + minimumSeats: config.MinimumSeats, + maximumSeats: config.MaximumSeats, + listWorkEstimator: newListWorkEstimator(objectCountFn, config), + mutatingWorkEstimator: newMutatingWorkEstimator(watchCountFn, config), } return estimator.estimate } @@ -94,6 +84,10 @@ func (e WorkEstimatorFunc) EstimateWork(r *http.Request, flowSchemaName, priorit } type workEstimator struct { + // the minimum number of seats a request must occupy + minimumSeats uint64 + // the maximum number of seats a request can occupy + maximumSeats uint64 // listWorkEstimator estimates work for list request(s) listWorkEstimator WorkEstimatorFunc // mutatingWorkEstimator calculates the width of mutating request(s) @@ -105,7 +99,7 @@ func (e *workEstimator) estimate(r *http.Request, flowSchemaName, priorityLevelN if !ok { klog.ErrorS(fmt.Errorf("no RequestInfo found in context"), "Failed to estimate work for the request", "URI", r.RequestURI) // no RequestInfo should never happen, but to be on the safe side let's return maximumSeats - return WorkEstimate{InitialSeats: maximumSeats} + return WorkEstimate{InitialSeats: e.maximumSeats} } switch requestInfo.Verb { @@ -115,5 +109,5 @@ func (e *workEstimator) estimate(r *http.Request, flowSchemaName, priorityLevelN return e.mutatingWorkEstimator.EstimateWork(r, flowSchemaName, priorityLevelName) } - return WorkEstimate{InitialSeats: minimumSeats} + return WorkEstimate{InitialSeats: e.minimumSeats} } diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/watch_tracker.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/watch_tracker.go index e4ebb21459b..287b100cfd8 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/watch_tracker.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/flowcontrol/watch_tracker.go @@ -195,8 +195,9 @@ func (w *watchTracker) forgetWatch(identifier *watchIdentifier, index *indexValu // GetInterestedWatchCount implements WatchTracker interface. // // TODO(wojtek-t): As of now, requestInfo for object creation (POST) doesn't -// contain the Name field set. Figure out if we can somehow get it for the -// more accurate cost estimation. +// +// contain the Name field set. Figure out if we can somehow get it for the +// more accurate cost estimation. // // TODO(wojtek-t): Figure out how to approach DELETECOLLECTION calls. func (w *watchTracker) GetInterestedWatchCount(requestInfo *request.RequestInfo) int { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/authentication.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/authentication.go index d61e46aaf76..a69506de690 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/authentication.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/authentication.go @@ -35,7 +35,7 @@ import ( "k8s.io/client-go/rest" "k8s.io/client-go/tools/clientcmd" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" - "k8s.io/component-base/traces" + tracing "k8s.io/component-base/tracing" ) // AuthenticationInfoResolverWrapper can be used to inject Dial function to the @@ -47,7 +47,7 @@ func NewDefaultAuthenticationInfoResolverWrapper( proxyTransport *http.Transport, egressSelector *egressselector.EgressSelector, kubeapiserverClientConfig *rest.Config, - tp *trace.TracerProvider) AuthenticationInfoResolverWrapper { + tp trace.TracerProvider) AuthenticationInfoResolverWrapper { webhookAuthResolverWrapper := func(delegate AuthenticationInfoResolver) AuthenticationInfoResolver { return &AuthenticationInfoResolverDelegator{ @@ -60,7 +60,7 @@ func NewDefaultAuthenticationInfoResolverWrapper( return nil, err } if feature.DefaultFeatureGate.Enabled(features.APIServerTracing) { - ret.Wrap(traces.WrapperFor(tp)) + ret.Wrap(tracing.WrapperFor(tp)) } if egressSelector != nil { @@ -85,7 +85,7 @@ func NewDefaultAuthenticationInfoResolverWrapper( return nil, err } if feature.DefaultFeatureGate.Enabled(features.APIServerTracing) { - ret.Wrap(traces.WrapperFor(tp)) + ret.Wrap(tracing.WrapperFor(tp)) } if egressSelector != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/serviceresolver.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/serviceresolver.go index da140b1f0db..fcd953da3cd 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/serviceresolver.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/webhook/serviceresolver.go @@ -38,7 +38,8 @@ func NewDefaultServiceResolver() ServiceResolver { // note that the name, namespace, and port are required and by default all // created addresses use HTTPS scheme. // for example: -// name=ross namespace=andromeda resolves to https://ross.andromeda.svc:443 +// +// name=ross namespace=andromeda resolves to https://ross.andromeda.svc:443 func (sr defaultServiceResolver) ResolveEndpoint(namespace, name string, port int32) (*url.URL, error) { if len(name) == 0 || len(namespace) == 0 || port == 0 { return nil, errors.New("cannot resolve an empty service name or namespace or port") diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/conn.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/conn.go index 11474bfffde..09f54a49c74 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/conn.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/wsstream/conn.go @@ -40,11 +40,10 @@ import ( // // Example client session: // -// CONNECT http://server.com with subprotocol "channel.k8s.io" -// WRITE []byte{0, 102, 111, 111, 10} # send "foo\n" on channel 0 (STDIN) -// READ []byte{1, 10} # receive "\n" on channel 1 (STDOUT) -// CLOSE -// +// CONNECT http://server.com with subprotocol "channel.k8s.io" +// WRITE []byte{0, 102, 111, 111, 10} # send "foo\n" on channel 0 (STDIN) +// READ []byte{1, 10} # receive "\n" on channel 1 (STDOUT) +// CLOSE const ChannelWebSocketProtocol = "channel.k8s.io" // The Websocket subprotocol "base64.channel.k8s.io" base64 encodes each message with a character @@ -56,11 +55,10 @@ const ChannelWebSocketProtocol = "channel.k8s.io" // // Example client session: // -// CONNECT http://server.com with subprotocol "base64.channel.k8s.io" -// WRITE []byte{48, 90, 109, 57, 118, 67, 103, 111, 61} # send "foo\n" (base64: "Zm9vCgo=") on channel '0' (STDIN) -// READ []byte{49, 67, 103, 61, 61} # receive "\n" (base64: "Cg==") on channel '1' (STDOUT) -// CLOSE -// +// CONNECT http://server.com with subprotocol "base64.channel.k8s.io" +// WRITE []byte{48, 90, 109, 57, 118, 67, 103, 111, 61} # send "foo\n" (base64: "Zm9vCgo=") on channel '0' (STDIN) +// READ []byte{49, 67, 103, 61, 61} # receive "\n" (base64: "Cg==") on channel '1' (STDOUT) +// CLOSE const Base64ChannelWebSocketProtocol = "base64.channel.k8s.io" type codecType int diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/x509metrics/server_cert_deprecations.go b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/x509metrics/server_cert_deprecations.go index 9f1e34c4d44..464510ea8f1 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/x509metrics/server_cert_deprecations.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/util/x509metrics/server_cert_deprecations.go @@ -75,17 +75,17 @@ func (c *counterRaiser) IncreaseMetricsCounter(req *http.Request) { // NewDeprecatedCertificateRoundTripperWrapperConstructor returns a RoundTripper wrapper that's usable within ClientConfig.Wrap. // // It increases the `missingSAN` counter whenever: -// 1. we get a x509.HostnameError with string `x509: certificate relies on legacy Common Name field` -// which indicates an error caused by the deprecation of Common Name field when veryfing remote -// hostname -// 2. the server certificate in response contains no SAN. This indicates that this binary run -// with the GODEBUG=x509ignoreCN=0 in env +// 1. we get a x509.HostnameError with string `x509: certificate relies on legacy Common Name field` +// which indicates an error caused by the deprecation of Common Name field when veryfing remote +// hostname +// 2. the server certificate in response contains no SAN. This indicates that this binary run +// with the GODEBUG=x509ignoreCN=0 in env // // It increases the `sha1` counter whenever: -// 1. we get a x509.InsecureAlgorithmError with string `SHA1` -// which indicates an error caused by an insecure SHA1 signature -// 2. the server certificate in response contains a SHA1WithRSA or ECDSAWithSHA1 signature. -// This indicates that this binary run with the GODEBUG=x509sha1=1 in env +// 1. we get a x509.InsecureAlgorithmError with string `SHA1` +// which indicates an error caused by an insecure SHA1 signature +// 2. the server certificate in response contains a SHA1WithRSA or ECDSAWithSHA1 signature. +// This indicates that this binary run with the GODEBUG=x509sha1=1 in env func NewDeprecatedCertificateRoundTripperWrapperConstructor(missingSAN, sha1 *metrics.Counter) func(rt http.RoundTripper) http.RoundTripper { return func(rt http.RoundTripper) http.RoundTripper { return &x509DeprecatedCertificateMetricsRTWrapper{ diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/audit/buffered/buffered.go b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/audit/buffered/buffered.go index a96d9bea30f..07f263b2e3e 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/audit/buffered/buffered.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/audit/buffered/buffered.go @@ -190,10 +190,10 @@ func (b *bufferedBackend) processIncomingEvents(stopCh <-chan struct{}) { // The following things can cause collectEvents to stop and return the list // of events: // -// * Maximum number of events for a batch. -// * Timer has passed. -// * Buffer channel is closed and empty. -// * stopCh is closed. +// - Maximum number of events for a batch. +// - Timer has passed. +// - Buffer channel is closed and empty. +// - stopCh is closed. func (b *bufferedBackend) collectEvents(timer <-chan time.Time, stopCh <-chan struct{}) []*auditinternal.Event { var events []*auditinternal.Event diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go index bae5f0e4019..191b3731850 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go +++ b/cluster-autoscaler/vendor/k8s.io/apiserver/plugin/pkg/authorizer/webhook/webhook.go @@ -76,19 +76,19 @@ func NewFromInterface(subjectAccessReview authorizationv1client.AuthorizationV1I // New creates a new WebhookAuthorizer from the provided kubeconfig file. // The config's cluster field is used to refer to the remote service, user refers to the returned authorizer. // -// # clusters refers to the remote service. -// clusters: -// - name: name-of-remote-authz-service -// cluster: -// certificate-authority: /path/to/ca.pem # CA for verifying the remote service. -// server: https://authz.example.com/authorize # URL of remote service to query. Must use 'https'. +// # clusters refers to the remote service. +// clusters: +// - name: name-of-remote-authz-service +// cluster: +// certificate-authority: /path/to/ca.pem # CA for verifying the remote service. +// server: https://authz.example.com/authorize # URL of remote service to query. Must use 'https'. // -// # users refers to the API server's webhook configuration. -// users: -// - name: name-of-api-server -// user: -// client-certificate: /path/to/cert.pem # cert for the webhook plugin to use -// client-key: /path/to/key.pem # key matching the cert +// # users refers to the API server's webhook configuration. +// users: +// - name: name-of-api-server +// user: +// client-certificate: /path/to/cert.pem # cert for the webhook plugin to use +// client-key: /path/to/key.pem # key matching the cert // // For additional HTTP configuration, refer to the kubeconfig documentation // https://kubernetes.io/docs/user-guide/kubeconfig-file/. @@ -120,45 +120,45 @@ func newWithBackoff(subjectAccessReview subjectAccessReviewer, authorizedTTL, un // serialized api.authorization.v1beta1.SubjectAccessReview object. An example request body is // provided below. // -// { -// "apiVersion": "authorization.k8s.io/v1beta1", -// "kind": "SubjectAccessReview", -// "spec": { -// "resourceAttributes": { -// "namespace": "kittensandponies", -// "verb": "GET", -// "group": "group3", -// "resource": "pods" -// }, -// "user": "jane", -// "group": [ -// "group1", -// "group2" -// ] -// } -// } +// { +// "apiVersion": "authorization.k8s.io/v1beta1", +// "kind": "SubjectAccessReview", +// "spec": { +// "resourceAttributes": { +// "namespace": "kittensandponies", +// "verb": "GET", +// "group": "group3", +// "resource": "pods" +// }, +// "user": "jane", +// "group": [ +// "group1", +// "group2" +// ] +// } +// } // // The remote service is expected to fill the SubjectAccessReviewStatus field to either allow or // disallow access. A permissive response would return: // -// { -// "apiVersion": "authorization.k8s.io/v1beta1", -// "kind": "SubjectAccessReview", -// "status": { -// "allowed": true -// } -// } +// { +// "apiVersion": "authorization.k8s.io/v1beta1", +// "kind": "SubjectAccessReview", +// "status": { +// "allowed": true +// } +// } // // To disallow access, the remote service would return: // -// { -// "apiVersion": "authorization.k8s.io/v1beta1", -// "kind": "SubjectAccessReview", -// "status": { -// "allowed": false, -// "reason": "user does not have read access to the namespace" -// } -// } +// { +// "apiVersion": "authorization.k8s.io/v1beta1", +// "kind": "SubjectAccessReview", +// "status": { +// "allowed": false, +// "reason": "user does not have read access to the namespace" +// } +// } // // TODO(mikedanese): We should eventually support failing closed when we // encounter an error. We are failing open now to preserve backwards compatible @@ -246,7 +246,7 @@ func (w *WebhookAuthorizer) Authorize(ctx context.Context, attr authorizer.Attri } -//TODO: need to finish the method to get the rules when using webhook mode +// TODO: need to finish the method to get the rules when using webhook mode func (w *WebhookAuthorizer) RulesFor(user user.Info, namespace string) ([]authorizer.ResourceRuleInfo, []authorizer.NonResourceRuleInfo, bool, error) { var ( resourceRules []authorizer.ResourceRuleInfo diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go index e1424488947..839d88b64ec 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/jobspec.go @@ -21,7 +21,7 @@ package v1 import ( batchv1 "k8s.io/api/batch/v1" corev1 "k8s.io/client-go/applyconfigurations/core/v1" - v1 "k8s.io/client-go/applyconfigurations/meta/v1" + metav1 "k8s.io/client-go/applyconfigurations/meta/v1" ) // JobSpecApplyConfiguration represents an declarative configuration of the JobSpec type for use @@ -30,8 +30,9 @@ type JobSpecApplyConfiguration struct { Parallelism *int32 `json:"parallelism,omitempty"` Completions *int32 `json:"completions,omitempty"` ActiveDeadlineSeconds *int64 `json:"activeDeadlineSeconds,omitempty"` + PodFailurePolicy *PodFailurePolicyApplyConfiguration `json:"podFailurePolicy,omitempty"` BackoffLimit *int32 `json:"backoffLimit,omitempty"` - Selector *v1.LabelSelectorApplyConfiguration `json:"selector,omitempty"` + Selector *metav1.LabelSelectorApplyConfiguration `json:"selector,omitempty"` ManualSelector *bool `json:"manualSelector,omitempty"` Template *corev1.PodTemplateSpecApplyConfiguration `json:"template,omitempty"` TTLSecondsAfterFinished *int32 `json:"ttlSecondsAfterFinished,omitempty"` @@ -69,6 +70,14 @@ func (b *JobSpecApplyConfiguration) WithActiveDeadlineSeconds(value int64) *JobS return b } +// WithPodFailurePolicy sets the PodFailurePolicy field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the PodFailurePolicy field is set to the value of the last call. +func (b *JobSpecApplyConfiguration) WithPodFailurePolicy(value *PodFailurePolicyApplyConfiguration) *JobSpecApplyConfiguration { + b.PodFailurePolicy = value + return b +} + // WithBackoffLimit sets the BackoffLimit field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the BackoffLimit field is set to the value of the last call. @@ -80,7 +89,7 @@ func (b *JobSpecApplyConfiguration) WithBackoffLimit(value int32) *JobSpecApplyC // WithSelector sets the Selector field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the Selector field is set to the value of the last call. -func (b *JobSpecApplyConfiguration) WithSelector(value *v1.LabelSelectorApplyConfiguration) *JobSpecApplyConfiguration { +func (b *JobSpecApplyConfiguration) WithSelector(value *metav1.LabelSelectorApplyConfiguration) *JobSpecApplyConfiguration { b.Selector = value return b } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go new file mode 100644 index 00000000000..6da98386c9b --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicy.go @@ -0,0 +1,44 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +// PodFailurePolicyApplyConfiguration represents an declarative configuration of the PodFailurePolicy type for use +// with apply. +type PodFailurePolicyApplyConfiguration struct { + Rules []PodFailurePolicyRuleApplyConfiguration `json:"rules,omitempty"` +} + +// PodFailurePolicyApplyConfiguration constructs an declarative configuration of the PodFailurePolicy type for use with +// apply. +func PodFailurePolicy() *PodFailurePolicyApplyConfiguration { + return &PodFailurePolicyApplyConfiguration{} +} + +// WithRules adds the given value to the Rules field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the Rules field. +func (b *PodFailurePolicyApplyConfiguration) WithRules(values ...*PodFailurePolicyRuleApplyConfiguration) *PodFailurePolicyApplyConfiguration { + for i := range values { + if values[i] == nil { + panic("nil value passed to WithRules") + } + b.Rules = append(b.Rules, *values[i]) + } + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go new file mode 100644 index 00000000000..65f6251810e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonexitcodesrequirement.go @@ -0,0 +1,63 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "k8s.io/api/batch/v1" +) + +// PodFailurePolicyOnExitCodesRequirementApplyConfiguration represents an declarative configuration of the PodFailurePolicyOnExitCodesRequirement type for use +// with apply. +type PodFailurePolicyOnExitCodesRequirementApplyConfiguration struct { + ContainerName *string `json:"containerName,omitempty"` + Operator *v1.PodFailurePolicyOnExitCodesOperator `json:"operator,omitempty"` + Values []int32 `json:"values,omitempty"` +} + +// PodFailurePolicyOnExitCodesRequirementApplyConfiguration constructs an declarative configuration of the PodFailurePolicyOnExitCodesRequirement type for use with +// apply. +func PodFailurePolicyOnExitCodesRequirement() *PodFailurePolicyOnExitCodesRequirementApplyConfiguration { + return &PodFailurePolicyOnExitCodesRequirementApplyConfiguration{} +} + +// WithContainerName sets the ContainerName field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the ContainerName field is set to the value of the last call. +func (b *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) WithContainerName(value string) *PodFailurePolicyOnExitCodesRequirementApplyConfiguration { + b.ContainerName = &value + return b +} + +// WithOperator sets the Operator field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Operator field is set to the value of the last call. +func (b *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) WithOperator(value v1.PodFailurePolicyOnExitCodesOperator) *PodFailurePolicyOnExitCodesRequirementApplyConfiguration { + b.Operator = &value + return b +} + +// WithValues adds the given value to the Values field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the Values field. +func (b *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) WithValues(values ...int32) *PodFailurePolicyOnExitCodesRequirementApplyConfiguration { + for i := range values { + b.Values = append(b.Values, values[i]) + } + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go new file mode 100644 index 00000000000..da1556ff8bf --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyonpodconditionspattern.go @@ -0,0 +1,52 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "k8s.io/api/core/v1" +) + +// PodFailurePolicyOnPodConditionsPatternApplyConfiguration represents an declarative configuration of the PodFailurePolicyOnPodConditionsPattern type for use +// with apply. +type PodFailurePolicyOnPodConditionsPatternApplyConfiguration struct { + Type *v1.PodConditionType `json:"type,omitempty"` + Status *v1.ConditionStatus `json:"status,omitempty"` +} + +// PodFailurePolicyOnPodConditionsPatternApplyConfiguration constructs an declarative configuration of the PodFailurePolicyOnPodConditionsPattern type for use with +// apply. +func PodFailurePolicyOnPodConditionsPattern() *PodFailurePolicyOnPodConditionsPatternApplyConfiguration { + return &PodFailurePolicyOnPodConditionsPatternApplyConfiguration{} +} + +// WithType sets the Type field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Type field is set to the value of the last call. +func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithType(value v1.PodConditionType) *PodFailurePolicyOnPodConditionsPatternApplyConfiguration { + b.Type = &value + return b +} + +// WithStatus sets the Status field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Status field is set to the value of the last call. +func (b *PodFailurePolicyOnPodConditionsPatternApplyConfiguration) WithStatus(value v1.ConditionStatus) *PodFailurePolicyOnPodConditionsPatternApplyConfiguration { + b.Status = &value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go new file mode 100644 index 00000000000..d435243531f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/batch/v1/podfailurepolicyrule.go @@ -0,0 +1,66 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +import ( + v1 "k8s.io/api/batch/v1" +) + +// PodFailurePolicyRuleApplyConfiguration represents an declarative configuration of the PodFailurePolicyRule type for use +// with apply. +type PodFailurePolicyRuleApplyConfiguration struct { + Action *v1.PodFailurePolicyAction `json:"action,omitempty"` + OnExitCodes *PodFailurePolicyOnExitCodesRequirementApplyConfiguration `json:"onExitCodes,omitempty"` + OnPodConditions []PodFailurePolicyOnPodConditionsPatternApplyConfiguration `json:"onPodConditions,omitempty"` +} + +// PodFailurePolicyRuleApplyConfiguration constructs an declarative configuration of the PodFailurePolicyRule type for use with +// apply. +func PodFailurePolicyRule() *PodFailurePolicyRuleApplyConfiguration { + return &PodFailurePolicyRuleApplyConfiguration{} +} + +// WithAction sets the Action field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Action field is set to the value of the last call. +func (b *PodFailurePolicyRuleApplyConfiguration) WithAction(value v1.PodFailurePolicyAction) *PodFailurePolicyRuleApplyConfiguration { + b.Action = &value + return b +} + +// WithOnExitCodes sets the OnExitCodes field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the OnExitCodes field is set to the value of the last call. +func (b *PodFailurePolicyRuleApplyConfiguration) WithOnExitCodes(value *PodFailurePolicyOnExitCodesRequirementApplyConfiguration) *PodFailurePolicyRuleApplyConfiguration { + b.OnExitCodes = value + return b +} + +// WithOnPodConditions adds the given value to the OnPodConditions field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the OnPodConditions field. +func (b *PodFailurePolicyRuleApplyConfiguration) WithOnPodConditions(values ...*PodFailurePolicyOnPodConditionsPatternApplyConfiguration) *PodFailurePolicyRuleApplyConfiguration { + for i := range values { + if values[i] == nil { + panic("nil value passed to WithOnPodConditions") + } + b.OnPodConditions = append(b.OnPodConditions, *values[i]) + } + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go index 015859e9a38..f638b5d9123 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/podspec.go @@ -61,6 +61,7 @@ type PodSpecApplyConfiguration struct { TopologySpreadConstraints []TopologySpreadConstraintApplyConfiguration `json:"topologySpreadConstraints,omitempty"` SetHostnameAsFQDN *bool `json:"setHostnameAsFQDN,omitempty"` OS *PodOSApplyConfiguration `json:"os,omitempty"` + HostUsers *bool `json:"hostUsers,omitempty"` } // PodSpecApplyConfiguration constructs an declarative configuration of the PodSpec type for use with @@ -407,3 +408,11 @@ func (b *PodSpecApplyConfiguration) WithOS(value *PodOSApplyConfiguration) *PodS b.OS = value return b } + +// WithHostUsers sets the HostUsers field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the HostUsers field is set to the value of the last call. +func (b *PodSpecApplyConfiguration) WithHostUsers(value bool) *PodSpecApplyConfiguration { + b.HostUsers = &value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go index 856cd4f9d82..db376b941bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/servicespec.go @@ -40,7 +40,7 @@ type ServiceSpecApplyConfiguration struct { PublishNotReadyAddresses *bool `json:"publishNotReadyAddresses,omitempty"` SessionAffinityConfig *SessionAffinityConfigApplyConfiguration `json:"sessionAffinityConfig,omitempty"` IPFamilies []corev1.IPFamily `json:"ipFamilies,omitempty"` - IPFamilyPolicy *corev1.IPFamilyPolicyType `json:"ipFamilyPolicy,omitempty"` + IPFamilyPolicy *corev1.IPFamilyPolicy `json:"ipFamilyPolicy,omitempty"` AllocateLoadBalancerNodePorts *bool `json:"allocateLoadBalancerNodePorts,omitempty"` LoadBalancerClass *string `json:"loadBalancerClass,omitempty"` InternalTrafficPolicy *corev1.ServiceInternalTrafficPolicyType `json:"internalTrafficPolicy,omitempty"` @@ -194,7 +194,7 @@ func (b *ServiceSpecApplyConfiguration) WithIPFamilies(values ...corev1.IPFamily // WithIPFamilyPolicy sets the IPFamilyPolicy field in the declarative configuration to the given value // and returns the receiver, so that objects can be built by chaining "With" function invocations. // If called multiple times, the IPFamilyPolicy field is set to the value of the last call. -func (b *ServiceSpecApplyConfiguration) WithIPFamilyPolicy(value corev1.IPFamilyPolicyType) *ServiceSpecApplyConfiguration { +func (b *ServiceSpecApplyConfiguration) WithIPFamilyPolicy(value corev1.IPFamilyPolicy) *ServiceSpecApplyConfiguration { b.IPFamilyPolicy = &value return b } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go index aad73888563..fbfa8fa886c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/core/v1/topologyspreadconstraint.go @@ -33,6 +33,7 @@ type TopologySpreadConstraintApplyConfiguration struct { MinDomains *int32 `json:"minDomains,omitempty"` NodeAffinityPolicy *v1.NodeInclusionPolicy `json:"nodeAffinityPolicy,omitempty"` NodeTaintsPolicy *v1.NodeInclusionPolicy `json:"nodeTaintsPolicy,omitempty"` + MatchLabelKeys []string `json:"matchLabelKeys,omitempty"` } // TopologySpreadConstraintApplyConfiguration constructs an declarative configuration of the TopologySpreadConstraint type for use with @@ -96,3 +97,13 @@ func (b *TopologySpreadConstraintApplyConfiguration) WithNodeTaintsPolicy(value b.NodeTaintsPolicy = &value return b } + +// WithMatchLabelKeys adds the given value to the MatchLabelKeys field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the MatchLabelKeys field. +func (b *TopologySpreadConstraintApplyConfiguration) WithMatchLabelKeys(values ...string) *TopologySpreadConstraintApplyConfiguration { + for i := range values { + b.MatchLabelKeys = append(b.MatchLabelKeys, values[i]) + } + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go index 0ba6a6f4d81..6fa25411cfd 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/internal/internal.go @@ -3041,6 +3041,9 @@ var schemaYAML = typed.YAMLObject(`types: - name: parallelism type: scalar: numeric + - name: podFailurePolicy + type: + namedType: io.k8s.api.batch.v1.PodFailurePolicy - name: selector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector @@ -3098,6 +3101,58 @@ var schemaYAML = typed.YAMLObject(`types: type: namedType: io.k8s.api.batch.v1.JobSpec default: {} +- name: io.k8s.api.batch.v1.PodFailurePolicy + map: + fields: + - name: rules + type: + list: + elementType: + namedType: io.k8s.api.batch.v1.PodFailurePolicyRule + elementRelationship: atomic +- name: io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement + map: + fields: + - name: containerName + type: + scalar: string + - name: operator + type: + scalar: string + default: "" + - name: values + type: + list: + elementType: + scalar: numeric + elementRelationship: associative +- name: io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern + map: + fields: + - name: status + type: + scalar: string + default: "" + - name: type + type: + scalar: string + default: "" +- name: io.k8s.api.batch.v1.PodFailurePolicyRule + map: + fields: + - name: action + type: + scalar: string + default: "" + - name: onExitCodes + type: + namedType: io.k8s.api.batch.v1.PodFailurePolicyOnExitCodesRequirement + - name: onPodConditions + type: + list: + elementType: + namedType: io.k8s.api.batch.v1.PodFailurePolicyOnPodConditionsPattern + elementRelationship: atomic - name: io.k8s.api.batch.v1.UncountedTerminatedPods map: fields: @@ -5433,6 +5488,7 @@ var schemaYAML = typed.YAMLObject(`types: - name: claimRef type: namedType: io.k8s.api.core.v1.ObjectReference + elementRelationship: separable - name: csi type: namedType: io.k8s.api.core.v1.CSIPersistentVolumeSource @@ -5762,6 +5818,9 @@ var schemaYAML = typed.YAMLObject(`types: - name: hostPID type: scalar: boolean + - name: hostUsers + type: + scalar: boolean - name: hostname type: scalar: string @@ -6858,6 +6917,12 @@ var schemaYAML = typed.YAMLObject(`types: - name: labelSelector type: namedType: io.k8s.apimachinery.pkg.apis.meta.v1.LabelSelector + - name: matchLabelKeys + type: + list: + elementType: + scalar: string + elementRelationship: atomic - name: maxSkew type: scalar: numeric @@ -9528,6 +9593,41 @@ var schemaYAML = typed.YAMLObject(`types: - name: number type: scalar: numeric +- name: io.k8s.api.networking.v1alpha1.ClusterCIDR + map: + fields: + - name: apiVersion + type: + scalar: string + - name: kind + type: + scalar: string + - name: metadata + type: + namedType: io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta + default: {} + - name: spec + type: + namedType: io.k8s.api.networking.v1alpha1.ClusterCIDRSpec + default: {} +- name: io.k8s.api.networking.v1alpha1.ClusterCIDRSpec + map: + fields: + - name: ipv4 + type: + scalar: string + default: "" + - name: ipv6 + type: + scalar: string + default: "" + - name: nodeSelector + type: + namedType: io.k8s.api.core.v1.NodeSelector + - name: perNodeHostBits + type: + scalar: numeric + default: 0 - name: io.k8s.api.networking.v1beta1.HTTPIngressPath map: fields: @@ -10833,6 +10933,9 @@ var schemaYAML = typed.YAMLObject(`types: - name: requiresRepublish type: scalar: boolean + - name: seLinuxMount + type: + scalar: boolean - name: storageCapacity type: scalar: boolean @@ -11185,6 +11288,9 @@ var schemaYAML = typed.YAMLObject(`types: - name: requiresRepublish type: scalar: boolean + - name: seLinuxMount + type: + scalar: boolean - name: storageCapacity type: scalar: boolean diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/meta/v1/listmeta.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/meta/v1/listmeta.go new file mode 100644 index 00000000000..5cadee3353f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/meta/v1/listmeta.go @@ -0,0 +1,66 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1 + +// ListMetaApplyConfiguration represents an declarative configuration of the ListMeta type for use +// with apply. +type ListMetaApplyConfiguration struct { + SelfLink *string `json:"selfLink,omitempty"` + ResourceVersion *string `json:"resourceVersion,omitempty"` + Continue *string `json:"continue,omitempty"` + RemainingItemCount *int64 `json:"remainingItemCount,omitempty"` +} + +// ListMetaApplyConfiguration constructs an declarative configuration of the ListMeta type for use with +// apply. +func ListMeta() *ListMetaApplyConfiguration { + return &ListMetaApplyConfiguration{} +} + +// WithSelfLink sets the SelfLink field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the SelfLink field is set to the value of the last call. +func (b *ListMetaApplyConfiguration) WithSelfLink(value string) *ListMetaApplyConfiguration { + b.SelfLink = &value + return b +} + +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the ResourceVersion field is set to the value of the last call. +func (b *ListMetaApplyConfiguration) WithResourceVersion(value string) *ListMetaApplyConfiguration { + b.ResourceVersion = &value + return b +} + +// WithContinue sets the Continue field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Continue field is set to the value of the last call. +func (b *ListMetaApplyConfiguration) WithContinue(value string) *ListMetaApplyConfiguration { + b.Continue = &value + return b +} + +// WithRemainingItemCount sets the RemainingItemCount field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the RemainingItemCount field is set to the value of the last call. +func (b *ListMetaApplyConfiguration) WithRemainingItemCount(value int64) *ListMetaApplyConfiguration { + b.RemainingItemCount = &value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidr.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidr.go new file mode 100644 index 00000000000..ad0eae9198e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidr.go @@ -0,0 +1,247 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + networkingv1alpha1 "k8s.io/api/networking/v1alpha1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + managedfields "k8s.io/apimachinery/pkg/util/managedfields" + internal "k8s.io/client-go/applyconfigurations/internal" + v1 "k8s.io/client-go/applyconfigurations/meta/v1" +) + +// ClusterCIDRApplyConfiguration represents an declarative configuration of the ClusterCIDR type for use +// with apply. +type ClusterCIDRApplyConfiguration struct { + v1.TypeMetaApplyConfiguration `json:",inline"` + *v1.ObjectMetaApplyConfiguration `json:"metadata,omitempty"` + Spec *ClusterCIDRSpecApplyConfiguration `json:"spec,omitempty"` +} + +// ClusterCIDR constructs an declarative configuration of the ClusterCIDR type for use with +// apply. +func ClusterCIDR(name string) *ClusterCIDRApplyConfiguration { + b := &ClusterCIDRApplyConfiguration{} + b.WithName(name) + b.WithKind("ClusterCIDR") + b.WithAPIVersion("networking.k8s.io/v1alpha1") + return b +} + +// ExtractClusterCIDR extracts the applied configuration owned by fieldManager from +// clusterCIDR. If no managedFields are found in clusterCIDR for fieldManager, a +// ClusterCIDRApplyConfiguration is returned with only the Name, Namespace (if applicable), +// APIVersion and Kind populated. It is possible that no managed fields were found for because other +// field managers have taken ownership of all the fields previously owned by fieldManager, or because +// the fieldManager never owned fields any fields. +// clusterCIDR must be a unmodified ClusterCIDR API object that was retrieved from the Kubernetes API. +// ExtractClusterCIDR provides a way to perform a extract/modify-in-place/apply workflow. +// Note that an extracted apply configuration will contain fewer fields than what the fieldManager previously +// applied if another fieldManager has updated or force applied any of the previously applied fields. +// Experimental! +func ExtractClusterCIDR(clusterCIDR *networkingv1alpha1.ClusterCIDR, fieldManager string) (*ClusterCIDRApplyConfiguration, error) { + return extractClusterCIDR(clusterCIDR, fieldManager, "") +} + +// ExtractClusterCIDRStatus is the same as ExtractClusterCIDR except +// that it extracts the status subresource applied configuration. +// Experimental! +func ExtractClusterCIDRStatus(clusterCIDR *networkingv1alpha1.ClusterCIDR, fieldManager string) (*ClusterCIDRApplyConfiguration, error) { + return extractClusterCIDR(clusterCIDR, fieldManager, "status") +} + +func extractClusterCIDR(clusterCIDR *networkingv1alpha1.ClusterCIDR, fieldManager string, subresource string) (*ClusterCIDRApplyConfiguration, error) { + b := &ClusterCIDRApplyConfiguration{} + err := managedfields.ExtractInto(clusterCIDR, internal.Parser().Type("io.k8s.api.networking.v1alpha1.ClusterCIDR"), fieldManager, b, subresource) + if err != nil { + return nil, err + } + b.WithName(clusterCIDR.Name) + + b.WithKind("ClusterCIDR") + b.WithAPIVersion("networking.k8s.io/v1alpha1") + return b, nil +} + +// WithKind sets the Kind field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Kind field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithKind(value string) *ClusterCIDRApplyConfiguration { + b.Kind = &value + return b +} + +// WithAPIVersion sets the APIVersion field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the APIVersion field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithAPIVersion(value string) *ClusterCIDRApplyConfiguration { + b.APIVersion = &value + return b +} + +// WithName sets the Name field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Name field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithName(value string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.Name = &value + return b +} + +// WithGenerateName sets the GenerateName field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the GenerateName field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithGenerateName(value string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.GenerateName = &value + return b +} + +// WithNamespace sets the Namespace field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Namespace field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithNamespace(value string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.Namespace = &value + return b +} + +// WithUID sets the UID field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the UID field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithUID(value types.UID) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.UID = &value + return b +} + +// WithResourceVersion sets the ResourceVersion field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the ResourceVersion field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithResourceVersion(value string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.ResourceVersion = &value + return b +} + +// WithGeneration sets the Generation field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Generation field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithGeneration(value int64) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.Generation = &value + return b +} + +// WithCreationTimestamp sets the CreationTimestamp field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the CreationTimestamp field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithCreationTimestamp(value metav1.Time) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.CreationTimestamp = &value + return b +} + +// WithDeletionTimestamp sets the DeletionTimestamp field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the DeletionTimestamp field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithDeletionTimestamp(value metav1.Time) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.DeletionTimestamp = &value + return b +} + +// WithDeletionGracePeriodSeconds sets the DeletionGracePeriodSeconds field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the DeletionGracePeriodSeconds field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithDeletionGracePeriodSeconds(value int64) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + b.DeletionGracePeriodSeconds = &value + return b +} + +// WithLabels puts the entries into the Labels field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, the entries provided by each call will be put on the Labels field, +// overwriting an existing map entries in Labels field with the same key. +func (b *ClusterCIDRApplyConfiguration) WithLabels(entries map[string]string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + if b.Labels == nil && len(entries) > 0 { + b.Labels = make(map[string]string, len(entries)) + } + for k, v := range entries { + b.Labels[k] = v + } + return b +} + +// WithAnnotations puts the entries into the Annotations field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, the entries provided by each call will be put on the Annotations field, +// overwriting an existing map entries in Annotations field with the same key. +func (b *ClusterCIDRApplyConfiguration) WithAnnotations(entries map[string]string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + if b.Annotations == nil && len(entries) > 0 { + b.Annotations = make(map[string]string, len(entries)) + } + for k, v := range entries { + b.Annotations[k] = v + } + return b +} + +// WithOwnerReferences adds the given value to the OwnerReferences field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the OwnerReferences field. +func (b *ClusterCIDRApplyConfiguration) WithOwnerReferences(values ...*v1.OwnerReferenceApplyConfiguration) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + for i := range values { + if values[i] == nil { + panic("nil value passed to WithOwnerReferences") + } + b.OwnerReferences = append(b.OwnerReferences, *values[i]) + } + return b +} + +// WithFinalizers adds the given value to the Finalizers field in the declarative configuration +// and returns the receiver, so that objects can be build by chaining "With" function invocations. +// If called multiple times, values provided by each call will be appended to the Finalizers field. +func (b *ClusterCIDRApplyConfiguration) WithFinalizers(values ...string) *ClusterCIDRApplyConfiguration { + b.ensureObjectMetaApplyConfigurationExists() + for i := range values { + b.Finalizers = append(b.Finalizers, values[i]) + } + return b +} + +func (b *ClusterCIDRApplyConfiguration) ensureObjectMetaApplyConfigurationExists() { + if b.ObjectMetaApplyConfiguration == nil { + b.ObjectMetaApplyConfiguration = &v1.ObjectMetaApplyConfiguration{} + } +} + +// WithSpec sets the Spec field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the Spec field is set to the value of the last call. +func (b *ClusterCIDRApplyConfiguration) WithSpec(value *ClusterCIDRSpecApplyConfiguration) *ClusterCIDRApplyConfiguration { + b.Spec = value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidrspec.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidrspec.go new file mode 100644 index 00000000000..8d5fa406b09 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/networking/v1alpha1/clustercidrspec.go @@ -0,0 +1,70 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by applyconfiguration-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + v1 "k8s.io/client-go/applyconfigurations/core/v1" +) + +// ClusterCIDRSpecApplyConfiguration represents an declarative configuration of the ClusterCIDRSpec type for use +// with apply. +type ClusterCIDRSpecApplyConfiguration struct { + NodeSelector *v1.NodeSelectorApplyConfiguration `json:"nodeSelector,omitempty"` + PerNodeHostBits *int32 `json:"perNodeHostBits,omitempty"` + IPv4 *string `json:"ipv4,omitempty"` + IPv6 *string `json:"ipv6,omitempty"` +} + +// ClusterCIDRSpecApplyConfiguration constructs an declarative configuration of the ClusterCIDRSpec type for use with +// apply. +func ClusterCIDRSpec() *ClusterCIDRSpecApplyConfiguration { + return &ClusterCIDRSpecApplyConfiguration{} +} + +// WithNodeSelector sets the NodeSelector field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the NodeSelector field is set to the value of the last call. +func (b *ClusterCIDRSpecApplyConfiguration) WithNodeSelector(value *v1.NodeSelectorApplyConfiguration) *ClusterCIDRSpecApplyConfiguration { + b.NodeSelector = value + return b +} + +// WithPerNodeHostBits sets the PerNodeHostBits field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the PerNodeHostBits field is set to the value of the last call. +func (b *ClusterCIDRSpecApplyConfiguration) WithPerNodeHostBits(value int32) *ClusterCIDRSpecApplyConfiguration { + b.PerNodeHostBits = &value + return b +} + +// WithIPv4 sets the IPv4 field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the IPv4 field is set to the value of the last call. +func (b *ClusterCIDRSpecApplyConfiguration) WithIPv4(value string) *ClusterCIDRSpecApplyConfiguration { + b.IPv4 = &value + return b +} + +// WithIPv6 sets the IPv6 field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the IPv6 field is set to the value of the last call. +func (b *ClusterCIDRSpecApplyConfiguration) WithIPv6(value string) *ClusterCIDRSpecApplyConfiguration { + b.IPv6 = &value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go index 1dc17ce96a8..a1ef00656bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1/csidriverspec.go @@ -32,6 +32,7 @@ type CSIDriverSpecApplyConfiguration struct { FSGroupPolicy *v1.FSGroupPolicy `json:"fsGroupPolicy,omitempty"` TokenRequests []TokenRequestApplyConfiguration `json:"tokenRequests,omitempty"` RequiresRepublish *bool `json:"requiresRepublish,omitempty"` + SELinuxMount *bool `json:"seLinuxMount,omitempty"` } // CSIDriverSpecApplyConfiguration constructs an declarative configuration of the CSIDriverSpec type for use with @@ -102,3 +103,11 @@ func (b *CSIDriverSpecApplyConfiguration) WithRequiresRepublish(value bool) *CSI b.RequiresRepublish = &value return b } + +// WithSELinuxMount sets the SELinuxMount field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the SELinuxMount field is set to the value of the last call. +func (b *CSIDriverSpecApplyConfiguration) WithSELinuxMount(value bool) *CSIDriverSpecApplyConfiguration { + b.SELinuxMount = &value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go index 1d943cbfffe..6097a615be2 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/applyconfigurations/storage/v1beta1/csidriverspec.go @@ -32,6 +32,7 @@ type CSIDriverSpecApplyConfiguration struct { FSGroupPolicy *v1beta1.FSGroupPolicy `json:"fsGroupPolicy,omitempty"` TokenRequests []TokenRequestApplyConfiguration `json:"tokenRequests,omitempty"` RequiresRepublish *bool `json:"requiresRepublish,omitempty"` + SELinuxMount *bool `json:"seLinuxMount,omitempty"` } // CSIDriverSpecApplyConfiguration constructs an declarative configuration of the CSIDriverSpec type for use with @@ -102,3 +103,11 @@ func (b *CSIDriverSpecApplyConfiguration) WithRequiresRepublish(value bool) *CSI b.RequiresRepublish = &value return b } + +// WithSELinuxMount sets the SELinuxMount field in the declarative configuration to the given value +// and returns the receiver, so that objects can be built by chaining "With" function invocations. +// If called multiple times, the SELinuxMount field is set to the value of the last call. +func (b *CSIDriverSpecApplyConfiguration) WithSELinuxMount(value bool) *CSIDriverSpecApplyConfiguration { + b.SELinuxMount = &value + return b +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/discovery_client.go b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/discovery_client.go index baf87884621..ec7ebf05105 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/discovery/discovery_client.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/discovery/discovery_client.go @@ -52,6 +52,9 @@ const ( // defaultTimeout is the maximum amount of time per request when no timeout has been set on a RESTClient. // Defaults to 32s in order to have a distinguishable length of time, relative to other timeouts that exist. defaultTimeout = 32 * time.Second + + // defaultBurst is the default burst to be used with the discovery client's token bucket rate limiter + defaultBurst = 300 ) // DiscoveryInterface holds the methods that discover server-supported API groups, @@ -456,12 +459,13 @@ func setDiscoveryDefaults(config *restclient.Config) error { if config.Timeout == 0 { config.Timeout = defaultTimeout } - if config.Burst == 0 && config.QPS < 100 { + // if a burst limit is not already configured + if config.Burst == 0 { // discovery is expected to be bursty, increase the default burst // to accommodate looking up resource info for many API groups. // matches burst set by ConfigFlags#ToDiscoveryClient(). // see https://issue.k8s.io/86149 - config.Burst = 100 + config.Burst = defaultBurst } codec := runtime.NoopEncoder{Decoder: scheme.Codecs.UniversalDecoder()} config.NegotiatedSerializer = serializer.NegotiatedSerializerWrapper(runtime.SerializerInfo{Serializer: codec}) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/fake/simple.go b/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/fake/simple.go index 197508c81d4..02a797ad336 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/fake/simple.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/dynamic/fake/simple.go @@ -491,8 +491,7 @@ func (c *dynamicResourceClient) Apply(ctx context.Context, name string, obj *uns if err := c.client.scheme.Convert(uncastRet, ret, nil); err != nil { return nil, err } - return ret, err - return nil, nil + return ret, nil } func (c *dynamicResourceClient) ApplyStatus(ctx context.Context, name string, obj *unstructured.Unstructured, options metav1.ApplyOptions) (*unstructured.Unstructured, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go index 4c2e53c2575..92eda45a79d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/generic.go @@ -47,6 +47,7 @@ import ( flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1" flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2" networkingv1 "k8s.io/api/networking/v1" + networkingv1alpha1 "k8s.io/api/networking/v1alpha1" networkingv1beta1 "k8s.io/api/networking/v1beta1" nodev1 "k8s.io/api/node/v1" nodev1alpha1 "k8s.io/api/node/v1alpha1" @@ -272,6 +273,10 @@ func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource case networkingv1.SchemeGroupVersion.WithResource("networkpolicies"): return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1().NetworkPolicies().Informer()}, nil + // Group=networking.k8s.io, Version=v1alpha1 + case networkingv1alpha1.SchemeGroupVersion.WithResource("clustercidrs"): + return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1alpha1().ClusterCIDRs().Informer()}, nil + // Group=networking.k8s.io, Version=v1beta1 case networkingv1beta1.SchemeGroupVersion.WithResource("ingresses"): return &genericInformer{resource: resource.GroupResource(), informer: f.Networking().V1beta1().Ingresses().Informer()}, nil diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/interface.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/interface.go index 4a028d5d10e..1c775c465b6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/interface.go @@ -21,6 +21,7 @@ package networking import ( internalinterfaces "k8s.io/client-go/informers/internalinterfaces" v1 "k8s.io/client-go/informers/networking/v1" + v1alpha1 "k8s.io/client-go/informers/networking/v1alpha1" v1beta1 "k8s.io/client-go/informers/networking/v1beta1" ) @@ -28,6 +29,8 @@ import ( type Interface interface { // V1 provides access to shared informers for resources in V1. V1() v1.Interface + // V1alpha1 provides access to shared informers for resources in V1alpha1. + V1alpha1() v1alpha1.Interface // V1beta1 provides access to shared informers for resources in V1beta1. V1beta1() v1beta1.Interface } @@ -48,6 +51,11 @@ func (g *group) V1() v1.Interface { return v1.New(g.factory, g.namespace, g.tweakListOptions) } +// V1alpha1 returns a new v1alpha1.Interface. +func (g *group) V1alpha1() v1alpha1.Interface { + return v1alpha1.New(g.factory, g.namespace, g.tweakListOptions) +} + // V1beta1 returns a new v1beta1.Interface. func (g *group) V1beta1() v1beta1.Interface { return v1beta1.New(g.factory, g.namespace, g.tweakListOptions) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1alpha1/clustercidr.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1alpha1/clustercidr.go new file mode 100644 index 00000000000..cefd0f8a1ee --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1alpha1/clustercidr.go @@ -0,0 +1,89 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + time "time" + + networkingv1alpha1 "k8s.io/api/networking/v1alpha1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + runtime "k8s.io/apimachinery/pkg/runtime" + watch "k8s.io/apimachinery/pkg/watch" + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" + kubernetes "k8s.io/client-go/kubernetes" + v1alpha1 "k8s.io/client-go/listers/networking/v1alpha1" + cache "k8s.io/client-go/tools/cache" +) + +// ClusterCIDRInformer provides access to a shared informer and lister for +// ClusterCIDRs. +type ClusterCIDRInformer interface { + Informer() cache.SharedIndexInformer + Lister() v1alpha1.ClusterCIDRLister +} + +type clusterCIDRInformer struct { + factory internalinterfaces.SharedInformerFactory + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// NewClusterCIDRInformer constructs a new informer for ClusterCIDR type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewClusterCIDRInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers) cache.SharedIndexInformer { + return NewFilteredClusterCIDRInformer(client, resyncPeriod, indexers, nil) +} + +// NewFilteredClusterCIDRInformer constructs a new informer for ClusterCIDR type. +// Always prefer using an informer factory to get a shared informer instead of getting an independent +// one. This reduces memory footprint and number of connections to the server. +func NewFilteredClusterCIDRInformer(client kubernetes.Interface, resyncPeriod time.Duration, indexers cache.Indexers, tweakListOptions internalinterfaces.TweakListOptionsFunc) cache.SharedIndexInformer { + return cache.NewSharedIndexInformer( + &cache.ListWatch{ + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.NetworkingV1alpha1().ClusterCIDRs().List(context.TODO(), options) + }, + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { + if tweakListOptions != nil { + tweakListOptions(&options) + } + return client.NetworkingV1alpha1().ClusterCIDRs().Watch(context.TODO(), options) + }, + }, + &networkingv1alpha1.ClusterCIDR{}, + resyncPeriod, + indexers, + ) +} + +func (f *clusterCIDRInformer) defaultInformer(client kubernetes.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { + return NewFilteredClusterCIDRInformer(client, resyncPeriod, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}, f.tweakListOptions) +} + +func (f *clusterCIDRInformer) Informer() cache.SharedIndexInformer { + return f.factory.InformerFor(&networkingv1alpha1.ClusterCIDR{}, f.defaultInformer) +} + +func (f *clusterCIDRInformer) Lister() v1alpha1.ClusterCIDRLister { + return v1alpha1.NewClusterCIDRLister(f.Informer().GetIndexer()) +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1alpha1/interface.go b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1alpha1/interface.go new file mode 100644 index 00000000000..c51b748801f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/informers/networking/v1alpha1/interface.go @@ -0,0 +1,45 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by informer-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + internalinterfaces "k8s.io/client-go/informers/internalinterfaces" +) + +// Interface provides access to all the informers in this group version. +type Interface interface { + // ClusterCIDRs returns a ClusterCIDRInformer. + ClusterCIDRs() ClusterCIDRInformer +} + +type version struct { + factory internalinterfaces.SharedInformerFactory + namespace string + tweakListOptions internalinterfaces.TweakListOptionsFunc +} + +// New returns a new Interface. +func New(f internalinterfaces.SharedInformerFactory, namespace string, tweakListOptions internalinterfaces.TweakListOptionsFunc) Interface { + return &version{factory: f, namespace: namespace, tweakListOptions: tweakListOptions} +} + +// ClusterCIDRs returns a ClusterCIDRInformer. +func (v *version) ClusterCIDRs() ClusterCIDRInformer { + return &clusterCIDRInformer{factory: v.factory, tweakListOptions: v.tweakListOptions} +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go index e46c0537f78..0ea0c3c4cd6 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/clientset.go @@ -53,6 +53,7 @@ import ( flowcontrolv1beta1 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta1" flowcontrolv1beta2 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2" networkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1" + networkingv1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1" networkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1" nodev1 "k8s.io/client-go/kubernetes/typed/node/v1" nodev1alpha1 "k8s.io/client-go/kubernetes/typed/node/v1alpha1" @@ -104,6 +105,7 @@ type Interface interface { FlowcontrolV1beta1() flowcontrolv1beta1.FlowcontrolV1beta1Interface FlowcontrolV1beta2() flowcontrolv1beta2.FlowcontrolV1beta2Interface NetworkingV1() networkingv1.NetworkingV1Interface + NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface NetworkingV1beta1() networkingv1beta1.NetworkingV1beta1Interface NodeV1() nodev1.NodeV1Interface NodeV1alpha1() nodev1alpha1.NodeV1alpha1Interface @@ -155,6 +157,7 @@ type Clientset struct { flowcontrolV1beta1 *flowcontrolv1beta1.FlowcontrolV1beta1Client flowcontrolV1beta2 *flowcontrolv1beta2.FlowcontrolV1beta2Client networkingV1 *networkingv1.NetworkingV1Client + networkingV1alpha1 *networkingv1alpha1.NetworkingV1alpha1Client networkingV1beta1 *networkingv1beta1.NetworkingV1beta1Client nodeV1 *nodev1.NodeV1Client nodeV1alpha1 *nodev1alpha1.NodeV1alpha1Client @@ -322,6 +325,11 @@ func (c *Clientset) NetworkingV1() networkingv1.NetworkingV1Interface { return c.networkingV1 } +// NetworkingV1alpha1 retrieves the NetworkingV1alpha1Client +func (c *Clientset) NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface { + return c.networkingV1alpha1 +} + // NetworkingV1beta1 retrieves the NetworkingV1beta1Client func (c *Clientset) NetworkingV1beta1() networkingv1beta1.NetworkingV1beta1Interface { return c.networkingV1beta1 @@ -561,6 +569,10 @@ func NewForConfigAndClient(c *rest.Config, httpClient *http.Client) (*Clientset, if err != nil { return nil, err } + cs.networkingV1alpha1, err = networkingv1alpha1.NewForConfigAndClient(&configShallowCopy, httpClient) + if err != nil { + return nil, err + } cs.networkingV1beta1, err = networkingv1beta1.NewForConfigAndClient(&configShallowCopy, httpClient) if err != nil { return nil, err @@ -672,6 +684,7 @@ func New(c rest.Interface) *Clientset { cs.flowcontrolV1beta1 = flowcontrolv1beta1.New(c) cs.flowcontrolV1beta2 = flowcontrolv1beta2.New(c) cs.networkingV1 = networkingv1.New(c) + cs.networkingV1alpha1 = networkingv1alpha1.New(c) cs.networkingV1beta1 = networkingv1beta1.New(c) cs.nodeV1 = nodev1.New(c) cs.nodeV1alpha1 = nodev1alpha1.New(c) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go index 9ab84ff5dc3..3e468bf9058 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/clientset_generated.go @@ -84,6 +84,8 @@ import ( fakeflowcontrolv1beta2 "k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake" networkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1" fakenetworkingv1 "k8s.io/client-go/kubernetes/typed/networking/v1/fake" + networkingv1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1" + fakenetworkingv1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake" networkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1" fakenetworkingv1beta1 "k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake" nodev1 "k8s.io/client-go/kubernetes/typed/node/v1" @@ -317,6 +319,11 @@ func (c *Clientset) NetworkingV1() networkingv1.NetworkingV1Interface { return &fakenetworkingv1.FakeNetworkingV1{Fake: &c.Fake} } +// NetworkingV1alpha1 retrieves the NetworkingV1alpha1Client +func (c *Clientset) NetworkingV1alpha1() networkingv1alpha1.NetworkingV1alpha1Interface { + return &fakenetworkingv1alpha1.FakeNetworkingV1alpha1{Fake: &c.Fake} +} + // NetworkingV1beta1 retrieves the NetworkingV1beta1Client func (c *Clientset) NetworkingV1beta1() networkingv1beta1.NetworkingV1beta1Interface { return &fakenetworkingv1beta1.FakeNetworkingV1beta1{Fake: &c.Fake} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go index c3f0a3d5225..751d43aaa73 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/fake/register.go @@ -49,6 +49,7 @@ import ( flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1" flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2" networkingv1 "k8s.io/api/networking/v1" + networkingv1alpha1 "k8s.io/api/networking/v1alpha1" networkingv1beta1 "k8s.io/api/networking/v1beta1" nodev1 "k8s.io/api/node/v1" nodev1alpha1 "k8s.io/api/node/v1alpha1" @@ -105,6 +106,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{ flowcontrolv1beta1.AddToScheme, flowcontrolv1beta2.AddToScheme, networkingv1.AddToScheme, + networkingv1alpha1.AddToScheme, networkingv1beta1.AddToScheme, nodev1.AddToScheme, nodev1alpha1.AddToScheme, @@ -125,14 +127,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{ // AddToScheme adds all types of this clientset into the given scheme. This allows composition // of clientsets, like in: // -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) // -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go index b41466151d4..ea01840ef7b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/scheme/register.go @@ -49,6 +49,7 @@ import ( flowcontrolv1beta1 "k8s.io/api/flowcontrol/v1beta1" flowcontrolv1beta2 "k8s.io/api/flowcontrol/v1beta2" networkingv1 "k8s.io/api/networking/v1" + networkingv1alpha1 "k8s.io/api/networking/v1alpha1" networkingv1beta1 "k8s.io/api/networking/v1beta1" nodev1 "k8s.io/api/node/v1" nodev1alpha1 "k8s.io/api/node/v1alpha1" @@ -105,6 +106,7 @@ var localSchemeBuilder = runtime.SchemeBuilder{ flowcontrolv1beta1.AddToScheme, flowcontrolv1beta2.AddToScheme, networkingv1.AddToScheme, + networkingv1alpha1.AddToScheme, networkingv1beta1.AddToScheme, nodev1.AddToScheme, nodev1alpha1.AddToScheme, @@ -125,14 +127,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{ // AddToScheme adds all types of this clientset into the given scheme. This allows composition // of clientsets, like in: // -// import ( -// "k8s.io/client-go/kubernetes" -// clientsetscheme "k8s.io/client-go/kubernetes/scheme" -// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" -// ) +// import ( +// "k8s.io/client-go/kubernetes" +// clientsetscheme "k8s.io/client-go/kubernetes/scheme" +// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" +// ) // -// kclientset, _ := kubernetes.NewForConfig(c) -// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) +// kclientset, _ := kubernetes.NewForConfig(c) +// _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) // // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types // correctly. diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go index 4b4c90d7d19..48282f86e38 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/core/v1/fake/fake_event_expansion.go @@ -17,7 +17,7 @@ limitations under the License. package fake import ( - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/runtime" @@ -26,9 +26,11 @@ import ( ) func (c *FakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error) { - action := core.NewRootCreateAction(eventsResource, event) + var action core.CreateActionImpl if c.ns != "" { action = core.NewCreateAction(eventsResource, c.ns, event) + } else { + action = core.NewCreateAction(eventsResource, event.GetNamespace(), event) } obj, err := c.Fake.Invokes(action, event) if obj == nil { @@ -40,9 +42,11 @@ func (c *FakeEvents) CreateWithEventNamespace(event *v1.Event) (*v1.Event, error // Update replaces an existing event. Returns the copy of the event the server returns, or an error. func (c *FakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error) { - action := core.NewRootUpdateAction(eventsResource, event) + var action core.UpdateActionImpl if c.ns != "" { action = core.NewUpdateAction(eventsResource, c.ns, event) + } else { + action = core.NewUpdateAction(eventsResource, event.GetNamespace(), event) } obj, err := c.Fake.Invokes(action, event) if obj == nil { @@ -57,9 +61,11 @@ func (c *FakeEvents) UpdateWithEventNamespace(event *v1.Event) (*v1.Event, error func (c *FakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1.Event, error) { // TODO: Should be configurable to support additional patch strategies. pt := types.StrategicMergePatchType - action := core.NewRootPatchAction(eventsResource, event.Name, pt, data) + var action core.PatchActionImpl if c.ns != "" { action = core.NewPatchAction(eventsResource, c.ns, event.Name, pt, data) + } else { + action = core.NewPatchAction(eventsResource, event.GetNamespace(), event.Name, pt, data) } obj, err := c.Fake.Invokes(action, event) if obj == nil { @@ -71,9 +77,11 @@ func (c *FakeEvents) PatchWithEventNamespace(event *v1.Event, data []byte) (*v1. // Search returns a list of events matching the specified object. func (c *FakeEvents) Search(scheme *runtime.Scheme, objOrRef runtime.Object) (*v1.EventList, error) { - action := core.NewRootListAction(eventsResource, eventsKind, metav1.ListOptions{}) + var action core.ListActionImpl if c.ns != "" { action = core.NewListAction(eventsResource, eventsKind, c.ns, metav1.ListOptions{}) + } else { + action = core.NewListAction(eventsResource, eventsKind, v1.NamespaceDefault, metav1.ListOptions{}) } obj, err := c.Fake.Invokes(action, &v1.EventList{}) if obj == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go index 7213193bf1b..464fff91167 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/events/v1beta1/event_expansion.go @@ -82,7 +82,8 @@ func (e *events) UpdateWithEventNamespace(event *v1beta1.Event) (*v1beta1.Event, // It returns the copy of the event that the server returns, or an error. // The namespace and name of the target event is deduced from the event. // The namespace must either match this event client's namespace, or this event client must -// have been created with the "" namespace. +// +// have been created with the "" namespace. func (e *events) PatchWithEventNamespace(event *v1beta1.Event, data []byte) (*v1beta1.Event, error) { if e.ns != "" && event.Namespace != e.ns { return nil, fmt.Errorf("can't patch an event with namespace '%v' in namespace '%v'", event.Namespace, e.ns) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/clustercidr.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/clustercidr.go new file mode 100644 index 00000000000..9df76351db8 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/clustercidr.go @@ -0,0 +1,197 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "context" + json "encoding/json" + "fmt" + "time" + + v1alpha1 "k8s.io/api/networking/v1alpha1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + networkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1" + scheme "k8s.io/client-go/kubernetes/scheme" + rest "k8s.io/client-go/rest" +) + +// ClusterCIDRsGetter has a method to return a ClusterCIDRInterface. +// A group's client should implement this interface. +type ClusterCIDRsGetter interface { + ClusterCIDRs() ClusterCIDRInterface +} + +// ClusterCIDRInterface has methods to work with ClusterCIDR resources. +type ClusterCIDRInterface interface { + Create(ctx context.Context, clusterCIDR *v1alpha1.ClusterCIDR, opts v1.CreateOptions) (*v1alpha1.ClusterCIDR, error) + Update(ctx context.Context, clusterCIDR *v1alpha1.ClusterCIDR, opts v1.UpdateOptions) (*v1alpha1.ClusterCIDR, error) + Delete(ctx context.Context, name string, opts v1.DeleteOptions) error + DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error + Get(ctx context.Context, name string, opts v1.GetOptions) (*v1alpha1.ClusterCIDR, error) + List(ctx context.Context, opts v1.ListOptions) (*v1alpha1.ClusterCIDRList, error) + Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) + Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterCIDR, err error) + Apply(ctx context.Context, clusterCIDR *networkingv1alpha1.ClusterCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterCIDR, err error) + ClusterCIDRExpansion +} + +// clusterCIDRs implements ClusterCIDRInterface +type clusterCIDRs struct { + client rest.Interface +} + +// newClusterCIDRs returns a ClusterCIDRs +func newClusterCIDRs(c *NetworkingV1alpha1Client) *clusterCIDRs { + return &clusterCIDRs{ + client: c.RESTClient(), + } +} + +// Get takes name of the clusterCIDR, and returns the corresponding clusterCIDR object, and an error if there is any. +func (c *clusterCIDRs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterCIDR, err error) { + result = &v1alpha1.ClusterCIDR{} + err = c.client.Get(). + Resource("clustercidrs"). + Name(name). + VersionedParams(&options, scheme.ParameterCodec). + Do(ctx). + Into(result) + return +} + +// List takes label and field selectors, and returns the list of ClusterCIDRs that match those selectors. +func (c *clusterCIDRs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterCIDRList, err error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + result = &v1alpha1.ClusterCIDRList{} + err = c.client.Get(). + Resource("clustercidrs"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Do(ctx). + Into(result) + return +} + +// Watch returns a watch.Interface that watches the requested clusterCIDRs. +func (c *clusterCIDRs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + var timeout time.Duration + if opts.TimeoutSeconds != nil { + timeout = time.Duration(*opts.TimeoutSeconds) * time.Second + } + opts.Watch = true + return c.client.Get(). + Resource("clustercidrs"). + VersionedParams(&opts, scheme.ParameterCodec). + Timeout(timeout). + Watch(ctx) +} + +// Create takes the representation of a clusterCIDR and creates it. Returns the server's representation of the clusterCIDR, and an error, if there is any. +func (c *clusterCIDRs) Create(ctx context.Context, clusterCIDR *v1alpha1.ClusterCIDR, opts v1.CreateOptions) (result *v1alpha1.ClusterCIDR, err error) { + result = &v1alpha1.ClusterCIDR{} + err = c.client.Post(). + Resource("clustercidrs"). + VersionedParams(&opts, scheme.ParameterCodec). + Body(clusterCIDR). + Do(ctx). + Into(result) + return +} + +// Update takes the representation of a clusterCIDR and updates it. Returns the server's representation of the clusterCIDR, and an error, if there is any. +func (c *clusterCIDRs) Update(ctx context.Context, clusterCIDR *v1alpha1.ClusterCIDR, opts v1.UpdateOptions) (result *v1alpha1.ClusterCIDR, err error) { + result = &v1alpha1.ClusterCIDR{} + err = c.client.Put(). + Resource("clustercidrs"). + Name(clusterCIDR.Name). + VersionedParams(&opts, scheme.ParameterCodec). + Body(clusterCIDR). + Do(ctx). + Into(result) + return +} + +// Delete takes name of the clusterCIDR and deletes it. Returns an error if one occurs. +func (c *clusterCIDRs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + return c.client.Delete(). + Resource("clustercidrs"). + Name(name). + Body(&opts). + Do(ctx). + Error() +} + +// DeleteCollection deletes a collection of objects. +func (c *clusterCIDRs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + var timeout time.Duration + if listOpts.TimeoutSeconds != nil { + timeout = time.Duration(*listOpts.TimeoutSeconds) * time.Second + } + return c.client.Delete(). + Resource("clustercidrs"). + VersionedParams(&listOpts, scheme.ParameterCodec). + Timeout(timeout). + Body(&opts). + Do(ctx). + Error() +} + +// Patch applies the patch and returns the patched clusterCIDR. +func (c *clusterCIDRs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterCIDR, err error) { + result = &v1alpha1.ClusterCIDR{} + err = c.client.Patch(pt). + Resource("clustercidrs"). + Name(name). + SubResource(subresources...). + VersionedParams(&opts, scheme.ParameterCodec). + Body(data). + Do(ctx). + Into(result) + return +} + +// Apply takes the given apply declarative configuration, applies it and returns the applied clusterCIDR. +func (c *clusterCIDRs) Apply(ctx context.Context, clusterCIDR *networkingv1alpha1.ClusterCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterCIDR, err error) { + if clusterCIDR == nil { + return nil, fmt.Errorf("clusterCIDR provided to Apply must not be nil") + } + patchOpts := opts.ToPatchOptions() + data, err := json.Marshal(clusterCIDR) + if err != nil { + return nil, err + } + name := clusterCIDR.Name + if name == nil { + return nil, fmt.Errorf("clusterCIDR.Name must be provided to Apply") + } + result = &v1alpha1.ClusterCIDR{} + err = c.client.Patch(types.ApplyPatchType). + Resource("clustercidrs"). + Name(*name). + VersionedParams(&patchOpts, scheme.ParameterCodec). + Body(data). + Do(ctx). + Into(result) + return +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/doc.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/doc.go similarity index 74% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/doc.go rename to cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/doc.go index e93a7489c13..df51baa4d4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2015 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,5 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package flocker contains the internal representation of Flocker volumes -package flocker // import "k8s.io/kubernetes/pkg/volume/flocker" +// Code generated by client-gen. DO NOT EDIT. + +// This package has the automatically generated typed clients. +package v1alpha1 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/doc.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/doc.go similarity index 72% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/doc.go rename to cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/doc.go index 764e8eeb463..16f44399065 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/doc.go @@ -1,5 +1,5 @@ /* -Copyright 2017 The Kubernetes Authors. +Copyright The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -// Package storageos contains the internal representation of StorageOS -// PersistentDisk volumes. -package storageos // import "k8s.io/kubernetes/pkg/volume/storageos" +// Code generated by client-gen. DO NOT EDIT. + +// Package fake has the automatically generated clients. +package fake diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_clustercidr.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_clustercidr.go new file mode 100644 index 00000000000..ca0352d390c --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_clustercidr.go @@ -0,0 +1,146 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + "context" + json "encoding/json" + "fmt" + + v1alpha1 "k8s.io/api/networking/v1alpha1" + v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + labels "k8s.io/apimachinery/pkg/labels" + schema "k8s.io/apimachinery/pkg/runtime/schema" + types "k8s.io/apimachinery/pkg/types" + watch "k8s.io/apimachinery/pkg/watch" + networkingv1alpha1 "k8s.io/client-go/applyconfigurations/networking/v1alpha1" + testing "k8s.io/client-go/testing" +) + +// FakeClusterCIDRs implements ClusterCIDRInterface +type FakeClusterCIDRs struct { + Fake *FakeNetworkingV1alpha1 +} + +var clustercidrsResource = schema.GroupVersionResource{Group: "networking.k8s.io", Version: "v1alpha1", Resource: "clustercidrs"} + +var clustercidrsKind = schema.GroupVersionKind{Group: "networking.k8s.io", Version: "v1alpha1", Kind: "ClusterCIDR"} + +// Get takes name of the clusterCIDR, and returns the corresponding clusterCIDR object, and an error if there is any. +func (c *FakeClusterCIDRs) Get(ctx context.Context, name string, options v1.GetOptions) (result *v1alpha1.ClusterCIDR, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootGetAction(clustercidrsResource, name), &v1alpha1.ClusterCIDR{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterCIDR), err +} + +// List takes label and field selectors, and returns the list of ClusterCIDRs that match those selectors. +func (c *FakeClusterCIDRs) List(ctx context.Context, opts v1.ListOptions) (result *v1alpha1.ClusterCIDRList, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootListAction(clustercidrsResource, clustercidrsKind, opts), &v1alpha1.ClusterCIDRList{}) + if obj == nil { + return nil, err + } + + label, _, _ := testing.ExtractFromListOptions(opts) + if label == nil { + label = labels.Everything() + } + list := &v1alpha1.ClusterCIDRList{ListMeta: obj.(*v1alpha1.ClusterCIDRList).ListMeta} + for _, item := range obj.(*v1alpha1.ClusterCIDRList).Items { + if label.Matches(labels.Set(item.Labels)) { + list.Items = append(list.Items, item) + } + } + return list, err +} + +// Watch returns a watch.Interface that watches the requested clusterCIDRs. +func (c *FakeClusterCIDRs) Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) { + return c.Fake. + InvokesWatch(testing.NewRootWatchAction(clustercidrsResource, opts)) +} + +// Create takes the representation of a clusterCIDR and creates it. Returns the server's representation of the clusterCIDR, and an error, if there is any. +func (c *FakeClusterCIDRs) Create(ctx context.Context, clusterCIDR *v1alpha1.ClusterCIDR, opts v1.CreateOptions) (result *v1alpha1.ClusterCIDR, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootCreateAction(clustercidrsResource, clusterCIDR), &v1alpha1.ClusterCIDR{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterCIDR), err +} + +// Update takes the representation of a clusterCIDR and updates it. Returns the server's representation of the clusterCIDR, and an error, if there is any. +func (c *FakeClusterCIDRs) Update(ctx context.Context, clusterCIDR *v1alpha1.ClusterCIDR, opts v1.UpdateOptions) (result *v1alpha1.ClusterCIDR, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootUpdateAction(clustercidrsResource, clusterCIDR), &v1alpha1.ClusterCIDR{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterCIDR), err +} + +// Delete takes name of the clusterCIDR and deletes it. Returns an error if one occurs. +func (c *FakeClusterCIDRs) Delete(ctx context.Context, name string, opts v1.DeleteOptions) error { + _, err := c.Fake. + Invokes(testing.NewRootDeleteActionWithOptions(clustercidrsResource, name, opts), &v1alpha1.ClusterCIDR{}) + return err +} + +// DeleteCollection deletes a collection of objects. +func (c *FakeClusterCIDRs) DeleteCollection(ctx context.Context, opts v1.DeleteOptions, listOpts v1.ListOptions) error { + action := testing.NewRootDeleteCollectionAction(clustercidrsResource, listOpts) + + _, err := c.Fake.Invokes(action, &v1alpha1.ClusterCIDRList{}) + return err +} + +// Patch applies the patch and returns the patched clusterCIDR. +func (c *FakeClusterCIDRs) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.ClusterCIDR, err error) { + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clustercidrsResource, name, pt, data, subresources...), &v1alpha1.ClusterCIDR{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterCIDR), err +} + +// Apply takes the given apply declarative configuration, applies it and returns the applied clusterCIDR. +func (c *FakeClusterCIDRs) Apply(ctx context.Context, clusterCIDR *networkingv1alpha1.ClusterCIDRApplyConfiguration, opts v1.ApplyOptions) (result *v1alpha1.ClusterCIDR, err error) { + if clusterCIDR == nil { + return nil, fmt.Errorf("clusterCIDR provided to Apply must not be nil") + } + data, err := json.Marshal(clusterCIDR) + if err != nil { + return nil, err + } + name := clusterCIDR.Name + if name == nil { + return nil, fmt.Errorf("clusterCIDR.Name must be provided to Apply") + } + obj, err := c.Fake. + Invokes(testing.NewRootPatchSubresourceAction(clustercidrsResource, *name, types.ApplyPatchType, data), &v1alpha1.ClusterCIDR{}) + if obj == nil { + return nil, err + } + return obj.(*v1alpha1.ClusterCIDR), err +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go new file mode 100644 index 00000000000..96979aa881d --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake/fake_networking_client.go @@ -0,0 +1,40 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package fake + +import ( + v1alpha1 "k8s.io/client-go/kubernetes/typed/networking/v1alpha1" + rest "k8s.io/client-go/rest" + testing "k8s.io/client-go/testing" +) + +type FakeNetworkingV1alpha1 struct { + *testing.Fake +} + +func (c *FakeNetworkingV1alpha1) ClusterCIDRs() v1alpha1.ClusterCIDRInterface { + return &FakeClusterCIDRs{c} +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *FakeNetworkingV1alpha1) RESTClient() rest.Interface { + var ret *rest.RESTClient + return ret +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/generated_expansion.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/generated_expansion.go new file mode 100644 index 00000000000..ab41abb7d01 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/generated_expansion.go @@ -0,0 +1,21 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +type ClusterCIDRExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go new file mode 100644 index 00000000000..ccb5933163c --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/kubernetes/typed/networking/v1alpha1/networking_client.go @@ -0,0 +1,107 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by client-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + "net/http" + + v1alpha1 "k8s.io/api/networking/v1alpha1" + "k8s.io/client-go/kubernetes/scheme" + rest "k8s.io/client-go/rest" +) + +type NetworkingV1alpha1Interface interface { + RESTClient() rest.Interface + ClusterCIDRsGetter +} + +// NetworkingV1alpha1Client is used to interact with features provided by the networking.k8s.io group. +type NetworkingV1alpha1Client struct { + restClient rest.Interface +} + +func (c *NetworkingV1alpha1Client) ClusterCIDRs() ClusterCIDRInterface { + return newClusterCIDRs(c) +} + +// NewForConfig creates a new NetworkingV1alpha1Client for the given config. +// NewForConfig is equivalent to NewForConfigAndClient(c, httpClient), +// where httpClient was generated with rest.HTTPClientFor(c). +func NewForConfig(c *rest.Config) (*NetworkingV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + httpClient, err := rest.HTTPClientFor(&config) + if err != nil { + return nil, err + } + return NewForConfigAndClient(&config, httpClient) +} + +// NewForConfigAndClient creates a new NetworkingV1alpha1Client for the given config and http client. +// Note the http client provided takes precedence over the configured transport values. +func NewForConfigAndClient(c *rest.Config, h *http.Client) (*NetworkingV1alpha1Client, error) { + config := *c + if err := setConfigDefaults(&config); err != nil { + return nil, err + } + client, err := rest.RESTClientForConfigAndClient(&config, h) + if err != nil { + return nil, err + } + return &NetworkingV1alpha1Client{client}, nil +} + +// NewForConfigOrDie creates a new NetworkingV1alpha1Client for the given config and +// panics if there is an error in the config. +func NewForConfigOrDie(c *rest.Config) *NetworkingV1alpha1Client { + client, err := NewForConfig(c) + if err != nil { + panic(err) + } + return client +} + +// New creates a new NetworkingV1alpha1Client for the given RESTClient. +func New(c rest.Interface) *NetworkingV1alpha1Client { + return &NetworkingV1alpha1Client{c} +} + +func setConfigDefaults(config *rest.Config) error { + gv := v1alpha1.SchemeGroupVersion + config.GroupVersion = &gv + config.APIPath = "/apis" + config.NegotiatedSerializer = scheme.Codecs.WithoutConversion() + + if config.UserAgent == "" { + config.UserAgent = rest.DefaultKubernetesUserAgent() + } + + return nil +} + +// RESTClient returns a RESTClient that is used to communicate +// with API server by this client implementation. +func (c *NetworkingV1alpha1Client) RESTClient() rest.Interface { + if c == nil { + return nil + } + return c.restClient +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1alpha1/clustercidr.go b/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1alpha1/clustercidr.go new file mode 100644 index 00000000000..dca9d7bf0cb --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1alpha1/clustercidr.go @@ -0,0 +1,68 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1alpha1 + +import ( + v1alpha1 "k8s.io/api/networking/v1alpha1" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/tools/cache" +) + +// ClusterCIDRLister helps list ClusterCIDRs. +// All objects returned here must be treated as read-only. +type ClusterCIDRLister interface { + // List lists all ClusterCIDRs in the indexer. + // Objects returned here must be treated as read-only. + List(selector labels.Selector) (ret []*v1alpha1.ClusterCIDR, err error) + // Get retrieves the ClusterCIDR from the index for a given name. + // Objects returned here must be treated as read-only. + Get(name string) (*v1alpha1.ClusterCIDR, error) + ClusterCIDRListerExpansion +} + +// clusterCIDRLister implements the ClusterCIDRLister interface. +type clusterCIDRLister struct { + indexer cache.Indexer +} + +// NewClusterCIDRLister returns a new ClusterCIDRLister. +func NewClusterCIDRLister(indexer cache.Indexer) ClusterCIDRLister { + return &clusterCIDRLister{indexer: indexer} +} + +// List lists all ClusterCIDRs in the indexer. +func (s *clusterCIDRLister) List(selector labels.Selector) (ret []*v1alpha1.ClusterCIDR, err error) { + err = cache.ListAll(s.indexer, selector, func(m interface{}) { + ret = append(ret, m.(*v1alpha1.ClusterCIDR)) + }) + return ret, err +} + +// Get retrieves the ClusterCIDR from the index for a given name. +func (s *clusterCIDRLister) Get(name string) (*v1alpha1.ClusterCIDR, error) { + obj, exists, err := s.indexer.GetByKey(name) + if err != nil { + return nil, err + } + if !exists { + return nil, errors.NewNotFound(v1alpha1.Resource("clustercidr"), name) + } + return obj.(*v1alpha1.ClusterCIDR), nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go b/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go new file mode 100644 index 00000000000..cdc328231a0 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/listers/networking/v1alpha1/expansion_generated.go @@ -0,0 +1,23 @@ +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by lister-gen. DO NOT EDIT. + +package v1alpha1 + +// ClusterCIDRListerExpansion allows custom methods to be added to +// ClusterCIDRLister. +type ClusterCIDRListerExpansion interface{} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/client.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/client.go index c969300494c..2cf821bcd7a 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/client.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/client.go @@ -52,7 +52,8 @@ type Interface interface { // ClientContentConfig controls how RESTClient communicates with the server. // // TODO: ContentConfig will be updated to accept a Negotiator instead of a -// NegotiatedSerializer and NegotiatedSerializer will be removed. +// +// NegotiatedSerializer and NegotiatedSerializer will be removed. type ClientContentConfig struct { // AcceptContentTypes specifies the types the client will accept and is optional. // If not set, ContentType will be used to define the Accept header @@ -159,13 +160,14 @@ func readExpBackoffConfig() BackoffManager { // c, err := NewRESTClient(...) // if err != nil { ... } // resp, err := c.Verb("GET"). -// Path("pods"). -// SelectorParam("labels", "area=staging"). -// Timeout(10*time.Second). -// Do() +// +// Path("pods"). +// SelectorParam("labels", "area=staging"). +// Timeout(10*time.Second). +// Do() +// // if err != nil { ... } // list, ok := resp.(*api.PodList) -// func (c *RESTClient) Verb(verb string) *Request { return NewRequest(c).Verb(verb) } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/exec.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/exec.go index 5f3b43c55a8..8539d5530d7 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/exec.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/exec.go @@ -21,7 +21,6 @@ import ( "net/http" "net/url" - "k8s.io/client-go/pkg/apis/clientauthentication" clientauthenticationapi "k8s.io/client-go/pkg/apis/clientauthentication" ) @@ -50,7 +49,7 @@ func ConfigToExecCluster(config *Config) (*clientauthenticationapi.Cluster, erro } } - return &clientauthentication.Cluster{ + return &clientauthenticationapi.Cluster{ Server: config.Host, TLSServerName: config.ServerName, InsecureSkipTLSVerify: config.Insecure, @@ -63,7 +62,7 @@ func ConfigToExecCluster(config *Config) (*clientauthenticationapi.Cluster, erro // ExecClusterToConfig creates a Config with the corresponding fields from the provided // clientauthenticationapi.Cluster. The returned Config will be anonymous (i.e., it will not have // any authentication-related fields set). -func ExecClusterToConfig(cluster *clientauthentication.Cluster) (*Config, error) { +func ExecClusterToConfig(cluster *clientauthenticationapi.Cluster) (*Config, error) { var proxy func(*http.Request) (*url.URL, error) if cluster.ProxyURL != "" { proxyURL, err := url.Parse(cluster.ProxyURL) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/plugin.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/plugin.go index c2b3dfc0f5e..ae5cbdc2c4c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/plugin.go @@ -36,9 +36,10 @@ type AuthProvider interface { } // Factory generates an AuthProvider plugin. -// clusterAddress is the address of the current cluster. -// config is the initial configuration for this plugin. -// persister allows the plugin to save updated configuration. +// +// clusterAddress is the address of the current cluster. +// config is the initial configuration for this plugin. +// persister allows the plugin to save updated configuration. type Factory func(clusterAddress string, config map[string]string, persister AuthProviderConfigPersister) (AuthProvider, error) // AuthProviderConfigPersister allows a plugin to persist configuration info diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go index 3a1560df0dc..dba933f7d6f 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/request.go @@ -710,7 +710,7 @@ func updateURLMetrics(ctx context.Context, req *Request, resp *http.Response, er if err != nil { metrics.RequestResult.Increment(ctx, "", req.verb, url) } else { - //Metrics for failure codes + // Metrics for failure codes metrics.RequestResult.Increment(ctx, strconv.Itoa(resp.StatusCode), req.verb, url) } } @@ -823,7 +823,7 @@ func (r *Request) newHTTPRequest(ctx context.Context) (*http.Request, error) { // fn at most once. It will return an error if a problem occurred prior to connecting to the // server - the provided function is responsible for handling server errors. func (r *Request) request(ctx context.Context, fn func(*http.Request, *http.Response)) error { - //Metrics for total request latency + // Metrics for total request latency start := time.Now() defer func() { metrics.RequestLatency.Observe(ctx, r.verb, *r.URL(), time.Since(start)) @@ -892,7 +892,7 @@ func (r *Request) request(ctx context.Context, fn func(*http.Request, *http.Resp done := func() bool { defer readAndCloseResponseBody(resp) - // if the the server returns an error in err, the response will be nil. + // if the server returns an error in err, the response will be nil. f := func(req *http.Request, resp *http.Response) { if resp == nil { return @@ -917,8 +917,8 @@ func (r *Request) request(ctx context.Context, fn func(*http.Request, *http.Resp // processing. // // Error type: -// * If the server responds with a status: *errors.StatusError or *errors.UnexpectedObjectError -// * http.Client.Do errors are returned directly. +// - If the server responds with a status: *errors.StatusError or *errors.UnexpectedObjectError +// - http.Client.Do errors are returned directly. func (r *Request) Do(ctx context.Context) Result { var result Result err := r.request(ctx, func(req *http.Request, resp *http.Response) { @@ -1085,15 +1085,15 @@ const maxUnstructuredResponseTextBytes = 2048 // unexpected responses. The rough structure is: // // 1. Assume the server sends you something sane - JSON + well defined error objects + proper codes -// - this is the happy path -// - when you get this output, trust what the server sends -// 2. Guard against empty fields / bodies in received JSON and attempt to cull sufficient info from them to -// generate a reasonable facsimile of the original failure. -// - Be sure to use a distinct error type or flag that allows a client to distinguish between this and error 1 above -// 3. Handle true disconnect failures / completely malformed data by moving up to a more generic client error -// 4. Distinguish between various connection failures like SSL certificates, timeouts, proxy errors, unexpected -// initial contact, the presence of mismatched body contents from posted content types -// - Give these a separate distinct error type and capture as much as possible of the original message +// - this is the happy path +// - when you get this output, trust what the server sends +// 2. Guard against empty fields / bodies in received JSON and attempt to cull sufficient info from them to +// generate a reasonable facsimile of the original failure. +// - Be sure to use a distinct error type or flag that allows a client to distinguish between this and error 1 above +// 3. Handle true disconnect failures / completely malformed data by moving up to a more generic client error +// 4. Distinguish between various connection failures like SSL certificates, timeouts, proxy errors, unexpected +// initial contact, the presence of mismatched body contents from posted content types +// - Give these a separate distinct error type and capture as much as possible of the original message // // TODO: introduce transformation of generic http.Client.Do() errors that separates 4. func (r *Request) transformUnstructuredResponseError(resp *http.Response, req *http.Request, body []byte) error { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/warnings.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/warnings.go index 18476f5ff90..ad493659f22 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/warnings.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/warnings.go @@ -40,9 +40,9 @@ var ( // SetDefaultWarningHandler sets the default handler clients use when warning headers are encountered. // By default, warnings are logged. Several built-in implementations are provided: -// - NoWarnings suppresses warnings. -// - WarningLogger logs warnings. -// - NewWarningWriter() outputs warnings to the provided writer. +// - NoWarnings suppresses warnings. +// - WarningLogger logs warnings. +// - NewWarningWriter() outputs warnings to the provided writer. func SetDefaultWarningHandler(l WarningHandler) { defaultWarningHandlerLock.Lock() defer defaultWarningHandlerLock.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/rest/with_retry.go b/cluster-autoscaler/vendor/k8s.io/client-go/rest/with_retry.go index 383a7ca7715..bdcc6f3a98d 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/rest/with_retry.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/rest/with_retry.go @@ -222,7 +222,7 @@ func (r *withRetry) Before(ctx context.Context, request *Request) error { } } - // if we are here, we have made attempt(s) al least once before. + // if we are here, we have made attempt(s) at least once before. if request.backoff != nil { delay := request.backoff.CalculateBackoff(url) if r.retryAfter.Wait > delay { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/clientauth.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/clientauth.go index 4c24f79977f..ac30271fe0b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/clientauth.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/auth/clientauth.go @@ -45,20 +45,20 @@ client.Client from an authcfg.Info. Example: - import ( - "pkg/client" - "pkg/client/auth" - ) - - info, err := auth.LoadFromFile(filename) - if err != nil { - // handle error - } - clientConfig = client.Config{} - clientConfig.Host = "example.com:4901" - clientConfig = info.MergeWithConfig() - client := client.New(clientConfig) - client.Pods(ns).List() + import ( + "pkg/client" + "pkg/client/auth" + ) + + info, err := auth.LoadFromFile(filename) + if err != nil { + // handle error + } + clientConfig = client.Config{} + clientConfig.Host = "example.com:4901" + clientConfig = info.MergeWithConfig() + client := client.New(clientConfig) + client.Pods(ns).List() */ package auth diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/controller.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/controller.go index ff4c22de00b..0762da3befa 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/controller.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/controller.go @@ -199,17 +199,17 @@ func (c *controller) processLoop() { // can't return an error. The handlers MUST NOT modify the objects // received; this concerns not only the top level of structure but all // the data structures reachable from it. -// * OnAdd is called when an object is added. -// * OnUpdate is called when an object is modified. Note that oldObj is the -// last known state of the object-- it is possible that several changes -// were combined together, so you can't use this to see every single -// change. OnUpdate is also called when a re-list happens, and it will -// get called even if nothing changed. This is useful for periodically -// evaluating or syncing something. -// * OnDelete will get the final state of the item if it is known, otherwise -// it will get an object of type DeletedFinalStateUnknown. This can -// happen if the watch is closed and misses the delete event and we don't -// notice the deletion until the subsequent re-list. +// - OnAdd is called when an object is added. +// - OnUpdate is called when an object is modified. Note that oldObj is the +// last known state of the object-- it is possible that several changes +// were combined together, so you can't use this to see every single +// change. OnUpdate is also called when a re-list happens, and it will +// get called even if nothing changed. This is useful for periodically +// evaluating or syncing something. +// - OnDelete will get the final state of the item if it is known, otherwise +// it will get an object of type DeletedFinalStateUnknown. This can +// happen if the watch is closed and misses the delete event and we don't +// notice the deletion until the subsequent re-list. type ResourceEventHandler interface { OnAdd(obj interface{}) OnUpdate(oldObj, newObj interface{}) @@ -305,15 +305,14 @@ func DeletionHandlingMetaNamespaceKeyFunc(obj interface{}) (string, error) { // notifications to be faulty. // // Parameters: -// * lw is list and watch functions for the source of the resource you want to -// be informed of. -// * objType is an object of the type that you expect to receive. -// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate -// calls, even if nothing changed). Otherwise, re-list will be delayed as -// long as possible (until the upstream source closes the watch or times out, -// or you stop the controller). -// * h is the object you want notifications sent to. -// +// - lw is list and watch functions for the source of the resource you want to +// be informed of. +// - objType is an object of the type that you expect to receive. +// - resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// - h is the object you want notifications sent to. func NewInformer( lw ListerWatcher, objType runtime.Object, @@ -332,16 +331,15 @@ func NewInformer( // notifications to be faulty. // // Parameters: -// * lw is list and watch functions for the source of the resource you want to -// be informed of. -// * objType is an object of the type that you expect to receive. -// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate -// calls, even if nothing changed). Otherwise, re-list will be delayed as -// long as possible (until the upstream source closes the watch or times out, -// or you stop the controller). -// * h is the object you want notifications sent to. -// * indexers is the indexer for the received object type. -// +// - lw is list and watch functions for the source of the resource you want to +// be informed of. +// - objType is an object of the type that you expect to receive. +// - resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// - h is the object you want notifications sent to. +// - indexers is the indexer for the received object type. func NewIndexerInformer( lw ListerWatcher, objType runtime.Object, @@ -454,16 +452,15 @@ func processDeltas( // providing event notifications. // // Parameters -// * lw is list and watch functions for the source of the resource you want to -// be informed of. -// * objType is an object of the type that you expect to receive. -// * resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate -// calls, even if nothing changed). Otherwise, re-list will be delayed as -// long as possible (until the upstream source closes the watch or times out, -// or you stop the controller). -// * h is the object you want notifications sent to. -// * clientState is the store you want to populate -// +// - lw is list and watch functions for the source of the resource you want to +// be informed of. +// - objType is an object of the type that you expect to receive. +// - resyncPeriod: if non-zero, will re-list this often (you will get OnUpdate +// calls, even if nothing changed). Otherwise, re-list will be delayed as +// long as possible (until the upstream source closes the watch or times out, +// or you stop the controller). +// - h is the object you want notifications sent to. +// - clientState is the store you want to populate func newInformer( lw ListerWatcher, objType runtime.Object, diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/delta_fifo.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/delta_fifo.go index 2da2933ab74..0c13a41f065 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/delta_fifo.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/delta_fifo.go @@ -74,11 +74,11 @@ type DeltaFIFOOptions struct { // the Pop() method. // // DeltaFIFO solves this use case: -// * You want to process every object change (delta) at most once. -// * When you process an object, you want to see everything -// that's happened to it since you last processed it. -// * You want to process the deletion of some of the objects. -// * You might want to periodically reprocess objects. +// - You want to process every object change (delta) at most once. +// - When you process an object, you want to see everything +// that's happened to it since you last processed it. +// - You want to process the deletion of some of the objects. +// - You might want to periodically reprocess objects. // // DeltaFIFO's Pop(), Get(), and GetByKey() methods return // interface{} to satisfy the Store/Queue interfaces, but they @@ -179,21 +179,21 @@ type Deltas []Delta // "known" keys when Pop() is called. Have to think about how that // affects error retrying. // -// NOTE: It is possible to misuse this and cause a race when using an -// external known object source. -// Whether there is a potential race depends on how the consumer -// modifies knownObjects. In Pop(), process function is called under -// lock, so it is safe to update data structures in it that need to be -// in sync with the queue (e.g. knownObjects). +// NOTE: It is possible to misuse this and cause a race when using an +// external known object source. +// Whether there is a potential race depends on how the consumer +// modifies knownObjects. In Pop(), process function is called under +// lock, so it is safe to update data structures in it that need to be +// in sync with the queue (e.g. knownObjects). // -// Example: -// In case of sharedIndexInformer being a consumer -// (https://github.com/kubernetes/kubernetes/blob/0cdd940f/staging/src/k8s.io/client-go/tools/cache/shared_informer.go#L192), -// there is no race as knownObjects (s.indexer) is modified safely -// under DeltaFIFO's lock. The only exceptions are GetStore() and -// GetIndexer() methods, which expose ways to modify the underlying -// storage. Currently these two methods are used for creating Lister -// and internal tests. +// Example: +// In case of sharedIndexInformer being a consumer +// (https://github.com/kubernetes/kubernetes/blob/0cdd940f/staging/src/k8s.io/client-go/tools/cache/shared_informer.go#L192), +// there is no race as knownObjects (s.indexer) is modified safely +// under DeltaFIFO's lock. The only exceptions are GetStore() and +// GetIndexer() methods, which expose ways to modify the underlying +// storage. Currently these two methods are used for creating Lister +// and internal tests. // // Also see the comment on DeltaFIFO. // diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/expiration_cache.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/expiration_cache.go index 7abdae73742..3f272b80b14 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/expiration_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/expiration_cache.go @@ -25,13 +25,14 @@ import ( ) // ExpirationCache implements the store interface -// 1. All entries are automatically time stamped on insert -// a. The key is computed based off the original item/keyFunc -// b. The value inserted under that key is the timestamped item -// 2. Expiration happens lazily on read based on the expiration policy -// a. No item can be inserted into the store while we're expiring -// *any* item in the cache. -// 3. Time-stamps are stripped off unexpired entries before return +// 1. All entries are automatically time stamped on insert +// a. The key is computed based off the original item/keyFunc +// b. The value inserted under that key is the timestamped item +// 2. Expiration happens lazily on read based on the expiration policy +// a. No item can be inserted into the store while we're expiring +// *any* item in the cache. +// 3. Time-stamps are stripped off unexpired entries before return +// // Note that the ExpirationCache is inherently slower than a normal // threadSafeStore because it takes a write lock every time it checks if // an item has expired. diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/fifo.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/fifo.go index 5c9255027a0..8f3313783d5 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/fifo.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/fifo.go @@ -103,10 +103,11 @@ func Pop(queue Queue) interface{} { // recent version will be processed. This can't be done with a channel // // FIFO solves this use case: -// * You want to process every object (exactly) once. -// * You want to process the most recent version of the object when you process it. -// * You do not want to process deleted objects, they should be removed from the queue. -// * You do not want to periodically reprocess objects. +// - You want to process every object (exactly) once. +// - You want to process the most recent version of the object when you process it. +// - You do not want to process deleted objects, they should be removed from the queue. +// - You do not want to periodically reprocess objects. +// // Compare with DeltaFIFO for other use cases. type FIFO struct { lock sync.RWMutex diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/index.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/index.go index c6af49d8c3a..b78d3086b8c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/index.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/index.go @@ -28,10 +28,10 @@ import ( // Delete). // // There are three kinds of strings here: -// 1. a storage key, as defined in the Store interface, -// 2. a name of an index, and -// 3. an "indexed value", which is produced by an IndexFunc and -// can be a field value or any other string computed from the object. +// 1. a storage key, as defined in the Store interface, +// 2. a name of an index, and +// 3. an "indexed value", which is produced by an IndexFunc and +// can be a field value or any other string computed from the object. type Indexer interface { Store // Index returns the stored objects whose set of indexed values diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go index 7274d7272c4..9cd476be8a0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/reflector.go @@ -71,6 +71,8 @@ type Reflector struct { backoffManager wait.BackoffManager // initConnBackoffManager manages backoff the initial connection with the Watch call of ListAndWatch. initConnBackoffManager wait.BackoffManager + // MaxInternalErrorRetryDuration defines how long we should retry internal errors returned by watch. + MaxInternalErrorRetryDuration time.Duration resyncPeriod time.Duration // ShouldResync is invoked periodically and whenever it returns `true` the Store's Resync operation is invoked @@ -253,112 +255,9 @@ func (r *Reflector) resyncChan() (<-chan time.Time, func() bool) { // It returns error if ListAndWatch didn't even try to initialize watch. func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { klog.V(3).Infof("Listing and watching %v from %s", r.expectedTypeName, r.name) - var resourceVersion string - - options := metav1.ListOptions{ResourceVersion: r.relistResourceVersion()} - - if err := func() error { - initTrace := trace.New("Reflector ListAndWatch", trace.Field{Key: "name", Value: r.name}) - defer initTrace.LogIfLong(10 * time.Second) - var list runtime.Object - var paginatedResult bool - var err error - listCh := make(chan struct{}, 1) - panicCh := make(chan interface{}, 1) - go func() { - defer func() { - if r := recover(); r != nil { - panicCh <- r - } - }() - // Attempt to gather list in chunks, if supported by listerWatcher, if not, the first - // list request will return the full response. - pager := pager.New(pager.SimplePageFunc(func(opts metav1.ListOptions) (runtime.Object, error) { - return r.listerWatcher.List(opts) - })) - switch { - case r.WatchListPageSize != 0: - pager.PageSize = r.WatchListPageSize - case r.paginatedResult: - // We got a paginated result initially. Assume this resource and server honor - // paging requests (i.e. watch cache is probably disabled) and leave the default - // pager size set. - case options.ResourceVersion != "" && options.ResourceVersion != "0": - // User didn't explicitly request pagination. - // - // With ResourceVersion != "", we have a possibility to list from watch cache, - // but we do that (for ResourceVersion != "0") only if Limit is unset. - // To avoid thundering herd on etcd (e.g. on master upgrades), we explicitly - // switch off pagination to force listing from watch cache (if enabled). - // With the existing semantic of RV (result is at least as fresh as provided RV), - // this is correct and doesn't lead to going back in time. - // - // We also don't turn off pagination for ResourceVersion="0", since watch cache - // is ignoring Limit in that case anyway, and if watch cache is not enabled - // we don't introduce regression. - pager.PageSize = 0 - } - - list, paginatedResult, err = pager.List(context.Background(), options) - if isExpiredError(err) || isTooLargeResourceVersionError(err) { - r.setIsLastSyncResourceVersionUnavailable(true) - // Retry immediately if the resource version used to list is unavailable. - // The pager already falls back to full list if paginated list calls fail due to an "Expired" error on - // continuation pages, but the pager might not be enabled, the full list might fail because the - // resource version it is listing at is expired or the cache may not yet be synced to the provided - // resource version. So we need to fallback to resourceVersion="" in all to recover and ensure - // the reflector makes forward progress. - list, paginatedResult, err = pager.List(context.Background(), metav1.ListOptions{ResourceVersion: r.relistResourceVersion()}) - } - close(listCh) - }() - select { - case <-stopCh: - return nil - case r := <-panicCh: - panic(r) - case <-listCh: - } - initTrace.Step("Objects listed", trace.Field{Key: "error", Value: err}) - if err != nil { - klog.Warningf("%s: failed to list %v: %v", r.name, r.expectedTypeName, err) - return fmt.Errorf("failed to list %v: %w", r.expectedTypeName, err) - } - // We check if the list was paginated and if so set the paginatedResult based on that. - // However, we want to do that only for the initial list (which is the only case - // when we set ResourceVersion="0"). The reasoning behind it is that later, in some - // situations we may force listing directly from etcd (by setting ResourceVersion="") - // which will return paginated result, even if watch cache is enabled. However, in - // that case, we still want to prefer sending requests to watch cache if possible. - // - // Paginated result returned for request with ResourceVersion="0" mean that watch - // cache is disabled and there are a lot of objects of a given type. In such case, - // there is no need to prefer listing from watch cache. - if options.ResourceVersion == "0" && paginatedResult { - r.paginatedResult = true - } - - r.setIsLastSyncResourceVersionUnavailable(false) // list was successful - listMetaInterface, err := meta.ListAccessor(list) - if err != nil { - return fmt.Errorf("unable to understand list result %#v: %v", list, err) - } - resourceVersion = listMetaInterface.GetResourceVersion() - initTrace.Step("Resource version extracted") - items, err := meta.ExtractList(list) - if err != nil { - return fmt.Errorf("unable to understand list result %#v (%v)", list, err) - } - initTrace.Step("Objects extracted") - if err := r.syncWith(items, resourceVersion); err != nil { - return fmt.Errorf("unable to sync list result: %v", err) - } - initTrace.Step("SyncWith done") - r.setLastSyncResourceVersion(resourceVersion) - initTrace.Step("Resource version updated") - return nil - }(); err != nil { + err := r.list(stopCh) + if err != nil { return err } @@ -390,6 +289,7 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { } }() + retry := NewRetryWithDeadline(r.MaxInternalErrorRetryDuration, time.Minute, apierrors.IsInternalError, r.clock) for { // give the stopCh a chance to stop the loop, even in case of continue statements further down on errors select { @@ -399,8 +299,8 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { } timeoutSeconds := int64(minWatchTimeout.Seconds() * (rand.Float64() + 1.0)) - options = metav1.ListOptions{ - ResourceVersion: resourceVersion, + options := metav1.ListOptions{ + ResourceVersion: r.LastSyncResourceVersion(), // We want to avoid situations of hanging watchers. Stop any watchers that do not // receive any events within the timeout window. TimeoutSeconds: &timeoutSeconds, @@ -426,7 +326,9 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { return err } - if err := r.watchHandler(start, w, &resourceVersion, resyncerrc, stopCh); err != nil { + err = watchHandler(start, w, r.store, r.expectedType, r.expectedGVK, r.name, r.expectedTypeName, r.setLastSyncResourceVersion, r.clock, resyncerrc, stopCh) + retry.After(err) + if err != nil { if err != errorStopRequested { switch { case isExpiredError(err): @@ -438,6 +340,9 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { klog.V(2).Infof("%s: watch of %v returned 429 - backing off", r.name, r.expectedTypeName) <-r.initConnBackoffManager.Backoff().C() continue + case apierrors.IsInternalError(err) && retry.ShouldRetry(): + klog.V(2).Infof("%s: retrying watch of %v internal error: %v", r.name, r.expectedTypeName, err) + continue default: klog.Warningf("%s: watch of %v ended with: %v", r.name, r.expectedTypeName, err) } @@ -447,6 +352,114 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { } } +// list simply lists all items and records a resource version obtained from the server at the moment of the call. +// the resource version can be used for further progress notification (aka. watch). +func (r *Reflector) list(stopCh <-chan struct{}) error { + var resourceVersion string + options := metav1.ListOptions{ResourceVersion: r.relistResourceVersion()} + + initTrace := trace.New("Reflector ListAndWatch", trace.Field{Key: "name", Value: r.name}) + defer initTrace.LogIfLong(10 * time.Second) + var list runtime.Object + var paginatedResult bool + var err error + listCh := make(chan struct{}, 1) + panicCh := make(chan interface{}, 1) + go func() { + defer func() { + if r := recover(); r != nil { + panicCh <- r + } + }() + // Attempt to gather list in chunks, if supported by listerWatcher, if not, the first + // list request will return the full response. + pager := pager.New(pager.SimplePageFunc(func(opts metav1.ListOptions) (runtime.Object, error) { + return r.listerWatcher.List(opts) + })) + switch { + case r.WatchListPageSize != 0: + pager.PageSize = r.WatchListPageSize + case r.paginatedResult: + // We got a paginated result initially. Assume this resource and server honor + // paging requests (i.e. watch cache is probably disabled) and leave the default + // pager size set. + case options.ResourceVersion != "" && options.ResourceVersion != "0": + // User didn't explicitly request pagination. + // + // With ResourceVersion != "", we have a possibility to list from watch cache, + // but we do that (for ResourceVersion != "0") only if Limit is unset. + // To avoid thundering herd on etcd (e.g. on master upgrades), we explicitly + // switch off pagination to force listing from watch cache (if enabled). + // With the existing semantic of RV (result is at least as fresh as provided RV), + // this is correct and doesn't lead to going back in time. + // + // We also don't turn off pagination for ResourceVersion="0", since watch cache + // is ignoring Limit in that case anyway, and if watch cache is not enabled + // we don't introduce regression. + pager.PageSize = 0 + } + + list, paginatedResult, err = pager.List(context.Background(), options) + if isExpiredError(err) || isTooLargeResourceVersionError(err) { + r.setIsLastSyncResourceVersionUnavailable(true) + // Retry immediately if the resource version used to list is unavailable. + // The pager already falls back to full list if paginated list calls fail due to an "Expired" error on + // continuation pages, but the pager might not be enabled, the full list might fail because the + // resource version it is listing at is expired or the cache may not yet be synced to the provided + // resource version. So we need to fallback to resourceVersion="" in all to recover and ensure + // the reflector makes forward progress. + list, paginatedResult, err = pager.List(context.Background(), metav1.ListOptions{ResourceVersion: r.relistResourceVersion()}) + } + close(listCh) + }() + select { + case <-stopCh: + return nil + case r := <-panicCh: + panic(r) + case <-listCh: + } + initTrace.Step("Objects listed", trace.Field{Key: "error", Value: err}) + if err != nil { + klog.Warningf("%s: failed to list %v: %v", r.name, r.expectedTypeName, err) + return fmt.Errorf("failed to list %v: %w", r.expectedTypeName, err) + } + + // We check if the list was paginated and if so set the paginatedResult based on that. + // However, we want to do that only for the initial list (which is the only case + // when we set ResourceVersion="0"). The reasoning behind it is that later, in some + // situations we may force listing directly from etcd (by setting ResourceVersion="") + // which will return paginated result, even if watch cache is enabled. However, in + // that case, we still want to prefer sending requests to watch cache if possible. + // + // Paginated result returned for request with ResourceVersion="0" mean that watch + // cache is disabled and there are a lot of objects of a given type. In such case, + // there is no need to prefer listing from watch cache. + if options.ResourceVersion == "0" && paginatedResult { + r.paginatedResult = true + } + + r.setIsLastSyncResourceVersionUnavailable(false) // list was successful + listMetaInterface, err := meta.ListAccessor(list) + if err != nil { + return fmt.Errorf("unable to understand list result %#v: %v", list, err) + } + resourceVersion = listMetaInterface.GetResourceVersion() + initTrace.Step("Resource version extracted") + items, err := meta.ExtractList(list) + if err != nil { + return fmt.Errorf("unable to understand list result %#v (%v)", list, err) + } + initTrace.Step("Objects extracted") + if err := r.syncWith(items, resourceVersion); err != nil { + return fmt.Errorf("unable to sync list result: %v", err) + } + initTrace.Step("SyncWith done") + r.setLastSyncResourceVersion(resourceVersion) + initTrace.Step("Resource version updated") + return nil +} + // syncWith replaces the store's items with the given list. func (r *Reflector) syncWith(items []runtime.Object, resourceVersion string) error { found := make([]interface{}, 0, len(items)) @@ -456,8 +469,19 @@ func (r *Reflector) syncWith(items []runtime.Object, resourceVersion string) err return r.store.Replace(found, resourceVersion) } -// watchHandler watches w and keeps *resourceVersion up to date. -func (r *Reflector) watchHandler(start time.Time, w watch.Interface, resourceVersion *string, errc chan error, stopCh <-chan struct{}) error { +// watchHandler watches w and sets setLastSyncResourceVersion +func watchHandler(start time.Time, + w watch.Interface, + store Store, + expectedType reflect.Type, + expectedGVK *schema.GroupVersionKind, + name string, + expectedTypeName string, + setLastSyncResourceVersion func(string), + clock clock.Clock, + errc chan error, + stopCh <-chan struct{}, +) error { eventCount := 0 // Stopping the watcher should be idempotent and if we return from this function there's no way @@ -478,62 +502,61 @@ loop: if event.Type == watch.Error { return apierrors.FromObject(event.Object) } - if r.expectedType != nil { - if e, a := r.expectedType, reflect.TypeOf(event.Object); e != a { - utilruntime.HandleError(fmt.Errorf("%s: expected type %v, but watch event object had type %v", r.name, e, a)) + if expectedType != nil { + if e, a := expectedType, reflect.TypeOf(event.Object); e != a { + utilruntime.HandleError(fmt.Errorf("%s: expected type %v, but watch event object had type %v", name, e, a)) continue } } - if r.expectedGVK != nil { - if e, a := *r.expectedGVK, event.Object.GetObjectKind().GroupVersionKind(); e != a { - utilruntime.HandleError(fmt.Errorf("%s: expected gvk %v, but watch event object had gvk %v", r.name, e, a)) + if expectedGVK != nil { + if e, a := *expectedGVK, event.Object.GetObjectKind().GroupVersionKind(); e != a { + utilruntime.HandleError(fmt.Errorf("%s: expected gvk %v, but watch event object had gvk %v", name, e, a)) continue } } meta, err := meta.Accessor(event.Object) if err != nil { - utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", r.name, event)) + utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", name, event)) continue } - newResourceVersion := meta.GetResourceVersion() + resourceVersion := meta.GetResourceVersion() switch event.Type { case watch.Added: - err := r.store.Add(event.Object) + err := store.Add(event.Object) if err != nil { - utilruntime.HandleError(fmt.Errorf("%s: unable to add watch event object (%#v) to store: %v", r.name, event.Object, err)) + utilruntime.HandleError(fmt.Errorf("%s: unable to add watch event object (%#v) to store: %v", name, event.Object, err)) } case watch.Modified: - err := r.store.Update(event.Object) + err := store.Update(event.Object) if err != nil { - utilruntime.HandleError(fmt.Errorf("%s: unable to update watch event object (%#v) to store: %v", r.name, event.Object, err)) + utilruntime.HandleError(fmt.Errorf("%s: unable to update watch event object (%#v) to store: %v", name, event.Object, err)) } case watch.Deleted: // TODO: Will any consumers need access to the "last known // state", which is passed in event.Object? If so, may need // to change this. - err := r.store.Delete(event.Object) + err := store.Delete(event.Object) if err != nil { - utilruntime.HandleError(fmt.Errorf("%s: unable to delete watch event object (%#v) from store: %v", r.name, event.Object, err)) + utilruntime.HandleError(fmt.Errorf("%s: unable to delete watch event object (%#v) from store: %v", name, event.Object, err)) } case watch.Bookmark: // A `Bookmark` means watch has synced here, just update the resourceVersion default: - utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", r.name, event)) + utilruntime.HandleError(fmt.Errorf("%s: unable to understand watch event %#v", name, event)) } - *resourceVersion = newResourceVersion - r.setLastSyncResourceVersion(newResourceVersion) - if rvu, ok := r.store.(ResourceVersionUpdater); ok { - rvu.UpdateResourceVersion(newResourceVersion) + setLastSyncResourceVersion(resourceVersion) + if rvu, ok := store.(ResourceVersionUpdater); ok { + rvu.UpdateResourceVersion(resourceVersion) } eventCount++ } } - watchDuration := r.clock.Since(start) + watchDuration := clock.Since(start) if watchDuration < 1*time.Second && eventCount == 0 { - return fmt.Errorf("very short watch: %s: Unexpected watch close - watch lasted less than a second and no items received", r.name) + return fmt.Errorf("very short watch: %s: Unexpected watch close - watch lasted less than a second and no items received", name) } - klog.V(4).Infof("%s: Watch close - %v total %v items received", r.name, r.expectedTypeName, eventCount) + klog.V(4).Infof("%s: Watch close - %v total %v items received", name, expectedTypeName, eventCount) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/retry_with_deadline.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/retry_with_deadline.go new file mode 100644 index 00000000000..8201fb1532a --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/cache/retry_with_deadline.go @@ -0,0 +1,78 @@ +/* +Copyright 2022 The Kubernetes 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 cache + +import ( + "k8s.io/utils/clock" + "time" +) + +type RetryWithDeadline interface { + After(error) + ShouldRetry() bool +} + +type retryWithDeadlineImpl struct { + firstErrorTime time.Time + lastErrorTime time.Time + maxRetryDuration time.Duration + minResetPeriod time.Duration + isRetryable func(error) bool + clock clock.Clock +} + +func NewRetryWithDeadline(maxRetryDuration, minResetPeriod time.Duration, isRetryable func(error) bool, clock clock.Clock) RetryWithDeadline { + return &retryWithDeadlineImpl{ + firstErrorTime: time.Time{}, + lastErrorTime: time.Time{}, + maxRetryDuration: maxRetryDuration, + minResetPeriod: minResetPeriod, + isRetryable: isRetryable, + clock: clock, + } +} + +func (r *retryWithDeadlineImpl) reset() { + r.firstErrorTime = time.Time{} + r.lastErrorTime = time.Time{} +} + +func (r *retryWithDeadlineImpl) After(err error) { + if r.isRetryable(err) { + if r.clock.Now().Sub(r.lastErrorTime) >= r.minResetPeriod { + r.reset() + } + + if r.firstErrorTime.IsZero() { + r.firstErrorTime = r.clock.Now() + } + r.lastErrorTime = r.clock.Now() + } +} + +func (r *retryWithDeadlineImpl) ShouldRetry() bool { + if r.maxRetryDuration <= time.Duration(0) { + return false + } + + if r.clock.Now().Sub(r.firstErrorTime) <= r.maxRetryDuration { + return true + } + + r.reset() + return false +} diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go index 0e41277628a..5153a95a2a3 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/auth_loaders.go @@ -51,10 +51,10 @@ func (a *PromptingAuthLoader) LoadAuth(path string) (*clientauth.Info, error) { // Prompt for user/pass and write a file if none exists. if _, err := os.Stat(path); os.IsNotExist(err) { authPtr, err := a.Prompt() - auth := *authPtr if err != nil { return nil, err } + auth := *authPtr data, err := json.Marshal(auth) if err != nil { return &auth, err diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/loader.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/loader.go index 78bd9ed8d5c..4e301332d64 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/loader.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/clientcmd/loader.go @@ -160,8 +160,10 @@ func NewDefaultClientConfigLoadingRules() *ClientConfigLoadingRules { // Load starts by running the MigrationRules and then // takes the loading rules and returns a Config object based on following rules. -// if the ExplicitPath, return the unmerged explicit file -// Otherwise, return a merged config based on the Precedence slice +// +// if the ExplicitPath, return the unmerged explicit file +// Otherwise, return a merged config based on the Precedence slice +// // A missing ExplicitPath file produces an error. Empty filenames or other missing files are ignored. // Read errors or files with non-deserializable content produce errors. // The first file to set a particular map key wins and map key's value is never changed. diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go index 03a13e6b63f..c64ba9b26b0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/leaderelection/leaderelection.go @@ -161,7 +161,7 @@ type LeaderElectionConfig struct { // lifecycle events of the LeaderElector. These are invoked asynchronously. // // possible future callbacks: -// * OnChallenge() +// - OnChallenge() type LeaderCallbacks struct { // OnStartedLeading is called when a LeaderElector client starts leading OnStartedLeading func(context.Context) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/events_cache.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/events_cache.go index 4f041e8fd26..abba06362aa 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/events_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/record/events_cache.go @@ -235,10 +235,10 @@ type aggregateRecord struct { // EventAggregate checks if a similar event has been seen according to the // aggregation configuration (max events, max interval, etc) and returns: // -// - The (potentially modified) event that should be created -// - The cache key for the event, for correlation purposes. This will be set to -// the full key for normal events, and to the result of -// EventAggregatorMessageFunc for aggregate events. +// - The (potentially modified) event that should be created +// - The cache key for the event, for correlation purposes. This will be set to +// the full key for normal events, and to the result of +// EventAggregatorMessageFunc for aggregate events. func (e *EventAggregator) EventAggregate(newEvent *v1.Event) (*v1.Event, string) { now := metav1.NewTime(e.clock.Now()) var record aggregateRecord @@ -427,14 +427,14 @@ type EventCorrelateResult struct { // prior to interacting with the API server to record the event. // // The default behavior is as follows: -// * Aggregation is performed if a similar event is recorded 10 times +// - Aggregation is performed if a similar event is recorded 10 times // in a 10 minute rolling interval. A similar event is an event that varies only by // the Event.Message field. Rather than recording the precise event, aggregation // will create a new event whose message reports that it has combined events with // the same reason. -// * Events are incrementally counted if the exact same event is encountered multiple +// - Events are incrementally counted if the exact same event is encountered multiple // times. -// * A source may burst 25 events about an object, but has a refill rate budget +// - A source may burst 25 events about an object, but has a refill rate budget // per object of 1 event every 5 minutes to control long-tail of spam. func NewEventCorrelator(clock clock.PassiveClock) *EventCorrelator { cacheSize := maxLruCacheEntries diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/tools/watch/until.go b/cluster-autoscaler/vendor/k8s.io/client-go/tools/watch/until.go index bf74837d362..81d4ff0ddff 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/tools/watch/until.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/tools/watch/until.go @@ -101,7 +101,9 @@ func UntilWithoutRetry(ctx context.Context, watcher watch.Interface, conditions // It guarantees you to see all events and in the order they happened. // Due to this guarantee there is no way it can deal with 'Resource version too old error'. It will fail in this case. // (See `UntilWithSync` if you'd prefer to recover from all the errors including RV too old by re-listing -// those items. In normal code you should care about being level driven so you'd not care about not seeing all the edges.) +// +// those items. In normal code you should care about being level driven so you'd not care about not seeing all the edges.) +// // The most frequent usage for Until would be a test where you want to verify exact order of events ("edges"). func Until(ctx context.Context, initialResourceVersion string, watcherClient cache.Watcher, conditions ...ConditionFunc) (*watch.Event, error) { w, err := NewRetryWatcher(initialResourceVersion, watcherClient) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/transport/cache.go b/cluster-autoscaler/vendor/k8s.io/client-go/transport/cache.go index 5fe768ed5ec..214f0a79cf0 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/transport/cache.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/transport/cache.go @@ -36,6 +36,11 @@ type tlsTransportCache struct { transports map[tlsCacheKey]*http.Transport } +// DialerStopCh is stop channel that is passed down to dynamic cert dialer. +// It's exposed as variable for testing purposes to avoid testing for goroutine +// leakages. +var DialerStopCh = wait.NeverStop + const idleConnsPerHost = 25 var tlsCache = &tlsTransportCache{transports: make(map[tlsCacheKey]*http.Transport)} @@ -101,7 +106,7 @@ func (c *tlsTransportCache) get(config *Config) (http.RoundTripper, error) { dynamicCertDialer := certRotatingDialer(tlsConfig.GetClientCertificate, dial) tlsConfig.GetClientCertificate = dynamicCertDialer.GetClientCertificate dial = dynamicCertDialer.connDialer.DialContext - go dynamicCertDialer.Run(wait.NeverStop) + go dynamicCertDialer.Run(DialerStopCh) } proxy := http.ProxyFromEnvironment diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/transport/round_trippers.go b/cluster-autoscaler/vendor/k8s.io/client-go/transport/round_trippers.go index 26a89f93be4..e2d1dcc9a9c 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/transport/round_trippers.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/transport/round_trippers.go @@ -491,7 +491,7 @@ func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, e DNSDone: func(info httptrace.DNSDoneInfo) { reqInfo.muTrace.Lock() defer reqInfo.muTrace.Unlock() - reqInfo.DNSLookup = time.Now().Sub(dnsStart) + reqInfo.DNSLookup = time.Since(dnsStart) klog.Infof("HTTP Trace: DNS Lookup for %s resolved to %v", host, info.Addrs) }, // Dial @@ -503,7 +503,7 @@ func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, e ConnectDone: func(network, addr string, err error) { reqInfo.muTrace.Lock() defer reqInfo.muTrace.Unlock() - reqInfo.Dialing = time.Now().Sub(dialStart) + reqInfo.Dialing = time.Since(dialStart) if err != nil { klog.Infof("HTTP Trace: Dial to %s:%s failed: %v", network, addr, err) } else { @@ -517,7 +517,7 @@ func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, e TLSHandshakeDone: func(_ tls.ConnectionState, _ error) { reqInfo.muTrace.Lock() defer reqInfo.muTrace.Unlock() - reqInfo.TLSHandshake = time.Now().Sub(tlsStart) + reqInfo.TLSHandshake = time.Since(tlsStart) }, // Connection (it can be DNS + Dial or just the time to get one from the connection pool) GetConn: func(hostPort string) { @@ -526,7 +526,7 @@ func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, e GotConn: func(info httptrace.GotConnInfo) { reqInfo.muTrace.Lock() defer reqInfo.muTrace.Unlock() - reqInfo.GetConnection = time.Now().Sub(getConn) + reqInfo.GetConnection = time.Since(getConn) reqInfo.ConnectionReused = info.Reused }, // Server Processing (time since we wrote the request until first byte is received) @@ -538,7 +538,7 @@ func (rt *debuggingRoundTripper) RoundTrip(req *http.Request) (*http.Response, e GotFirstResponseByte: func() { reqInfo.muTrace.Lock() defer reqInfo.muTrace.Unlock() - reqInfo.ServerProcessing = time.Now().Sub(serverStart) + reqInfo.ServerProcessing = time.Since(serverStart) }, } req = req.WithContext(httptrace.WithClientTrace(req.Context(), trace)) diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/csr.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/csr.go index 0017007a2d2..0390d1c02fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/csr.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/certificate/csr/csr.go @@ -27,7 +27,6 @@ import ( certificatesv1 "k8s.io/api/certificates/v1" certificatesv1beta1 "k8s.io/api/certificates/v1beta1" - "k8s.io/apimachinery/pkg/api/errors" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" @@ -73,7 +72,7 @@ func RequestCertificate(client clientset.Interface, csrData []byte, name, signer case err == nil: return reqName, reqUID, err - case errors.IsAlreadyExists(err) && len(name) > 0: + case apierrors.IsAlreadyExists(err) && len(name) > 0: klog.Infof("csr for this node already exists, reusing") req, err := get(client, name) if err != nil { @@ -346,8 +345,8 @@ func ensureCompatible(new, orig *certificatesv1.CertificateSigningRequest, priva // formatError preserves the type of an API message but alters the message. Expects // a single argument format string, and returns the wrapped error. func formatError(format string, err error) error { - if s, ok := err.(errors.APIStatus); ok { - se := &errors.StatusError{ErrStatus: s.Status()} + if s, ok := err.(apierrors.APIStatus); ok { + se := &apierrors.StatusError{ErrStatus: s.Status()} se.ErrStatus.Message = fmt.Sprintf(format, se.ErrStatus.Message) return se } diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/util.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/util.go index 772f5bd7a77..0c6e504a6dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/util.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/retry/util.go @@ -74,30 +74,30 @@ func OnError(backoff wait.Backoff, retriable func(error) bool, fn func() error) // backoff, and then try again. On a non-"Conflict" error, or if it retries too many times // and gives up, RetryOnConflict will return an error to the caller. // -// err := retry.RetryOnConflict(retry.DefaultRetry, func() error { -// // Fetch the resource here; you need to refetch it on every try, since -// // if you got a conflict on the last update attempt then you need to get -// // the current version before making your own changes. -// pod, err := c.Pods("mynamespace").Get(name, metav1.GetOptions{}) -// if err != nil { -// return err -// } +// err := retry.RetryOnConflict(retry.DefaultRetry, func() error { +// // Fetch the resource here; you need to refetch it on every try, since +// // if you got a conflict on the last update attempt then you need to get +// // the current version before making your own changes. +// pod, err := c.Pods("mynamespace").Get(name, metav1.GetOptions{}) +// if err != nil { +// return err +// } // -// // Make whatever updates to the resource are needed -// pod.Status.Phase = v1.PodFailed +// // Make whatever updates to the resource are needed +// pod.Status.Phase = v1.PodFailed // -// // Try to update -// _, err = c.Pods("mynamespace").UpdateStatus(pod) -// // You have to return err itself here (not wrapped inside another error) -// // so that RetryOnConflict can identify it correctly. -// return err -// }) -// if err != nil { -// // May be conflict if max retries were hit, or may be something unrelated -// // like permissions or a network error -// return err -// } -// ... +// // Try to update +// _, err = c.Pods("mynamespace").UpdateStatus(pod) +// // You have to return err itself here (not wrapped inside another error) +// // so that RetryOnConflict can identify it correctly. +// return err +// }) +// if err != nil { +// // May be conflict if max retries were hit, or may be something unrelated +// // like permissions or a network error +// return err +// } +// ... // // TODO: Make Backoff an interface? func RetryOnConflict(backoff wait.Backoff, fn func() error) error { diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/doc.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/doc.go index a5c976e0f9c..8555aa95fe1 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/doc.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/doc.go @@ -16,11 +16,11 @@ limitations under the License. // Package workqueue provides a simple queue that supports the following // features: -// * Fair: items processed in the order in which they are added. -// * Stingy: a single item will not be processed multiple times concurrently, -// and if an item is added multiple times before it can be processed, it -// will only be processed once. -// * Multiple consumers and producers. In particular, it is allowed for an -// item to be reenqueued while it is being processed. -// * Shutdown notifications. +// - Fair: items processed in the order in which they are added. +// - Stingy: a single item will not be processed multiple times concurrently, +// and if an item is added multiple times before it can be processed, it +// will only be processed once. +// - Multiple consumers and producers. In particular, it is allowed for an +// item to be reenqueued while it is being processed. +// - Shutdown notifications. package workqueue // import "k8s.io/client-go/util/workqueue" diff --git a/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go b/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go index 267f4ff4084..91cd33f193b 100644 --- a/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go +++ b/cluster-autoscaler/vendor/k8s.io/client-go/util/workqueue/rate_limiting_queue.go @@ -50,6 +50,13 @@ func NewNamedRateLimitingQueue(rateLimiter RateLimiter, name string) RateLimitin } } +func NewRateLimitingQueueWithDelayingInterface(di DelayingInterface, rateLimiter RateLimiter) RateLimitingInterface { + return &rateLimitingType{ + DelayingInterface: di, + rateLimiter: rateLimiter, + } +} + // rateLimitingType wraps an Interface and provides rateLimited re-enquing type rateLimitingType struct { DelayingInterface diff --git a/cluster-autoscaler/vendor/k8s.io/cloud-provider/go.mod b/cluster-autoscaler/vendor/k8s.io/cloud-provider/go.mod deleted file mode 100644 index 6b37aef7742..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/cloud-provider/go.mod +++ /dev/null @@ -1,114 +0,0 @@ -// This is a generated file. Do not edit directly. - -module k8s.io/cloud-provider - -go 1.18 - -require ( - github.com/google/go-cmp v0.5.6 - github.com/spf13/cobra v1.4.0 - github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.7.0 - k8s.io/api v0.25.0-alpha.2 - k8s.io/apimachinery v0.25.0-alpha.2 - k8s.io/apiserver v0.25.0-alpha.2 - k8s.io/client-go v0.25.0-alpha.2 - k8s.io/component-base v0.25.0-alpha.2 - k8s.io/component-helpers v0.25.0-alpha.2 - k8s.io/controller-manager v0.25.0-alpha.2 - k8s.io/klog/v2 v2.70.0 - k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 -) - -require ( - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/NYTimes/gziphandler v1.1.1 // indirect - github.com/PuerkitoBio/purell v1.1.1 // indirect - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect - github.com/beorn7/perks v1.0.1 // indirect - github.com/blang/semver/v4 v4.0.0 // indirect - github.com/cespare/xxhash/v2 v2.1.2 // indirect - github.com/coreos/go-semver v0.3.0 // indirect - github.com/coreos/go-systemd/v22 v22.3.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.8.0 // indirect - github.com/evanphx/json-patch v4.12.0+incompatible // indirect - github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/fsnotify/fsnotify v1.4.9 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.19.5 // indirect - github.com/go-openapi/swag v0.19.14 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.2 // indirect - github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/gofuzz v1.1.0 // indirect - github.com/google/uuid v1.1.2 // indirect - github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect - github.com/imdario/mergo v0.3.5 // indirect - github.com/inconshreveable/mousetrap v1.0.0 // indirect - github.com/josharian/intern v1.0.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/mailru/easyjson v0.7.6 // indirect - github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect - github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.12.1 // indirect - github.com/prometheus/client_model v0.2.0 // indirect - github.com/prometheus/common v0.32.1 // indirect - github.com/prometheus/procfs v0.7.3 // indirect - go.etcd.io/etcd/api/v3 v3.5.4 // indirect - go.etcd.io/etcd/client/pkg/v3 v3.5.4 // indirect - go.etcd.io/etcd/client/v3 v3.5.4 // indirect - go.opentelemetry.io/contrib v0.20.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 // indirect - go.opentelemetry.io/otel v0.20.0 // indirect - go.opentelemetry.io/otel/exporters/otlp v0.20.0 // indirect - go.opentelemetry.io/otel/metric v0.20.0 // indirect - go.opentelemetry.io/otel/sdk v0.20.0 // indirect - go.opentelemetry.io/otel/sdk/export/metric v0.20.0 // indirect - go.opentelemetry.io/otel/sdk/metric v0.20.0 // indirect - go.opentelemetry.io/otel/trace v0.20.0 // indirect - go.opentelemetry.io/proto/otlp v0.7.0 // indirect - go.uber.org/atomic v1.7.0 // indirect - go.uber.org/multierr v1.6.0 // indirect - go.uber.org/zap v1.19.0 // indirect - golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect - golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect - golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect - golang.org/x/sys v0.0.0-20220209214540-3681064d5158 // indirect - golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect - golang.org/x/text v0.3.7 // indirect - golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6 // indirect - google.golang.org/grpc v1.47.0 // indirect - google.golang.org/protobuf v1.27.1 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/kube-openapi v0.0.0-20220603121420-31174f50af60 // indirect - sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32 // indirect - sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect - sigs.k8s.io/yaml v1.2.0 // indirect -) - -replace ( - k8s.io/api => k8s.io/api v0.25.0-alpha.2 - k8s.io/apimachinery => k8s.io/apimachinery v0.25.0-alpha.2 - k8s.io/apiserver => k8s.io/apiserver v0.25.0-alpha.2 - k8s.io/client-go => k8s.io/client-go v0.25.0-alpha.2 - k8s.io/component-base => k8s.io/component-base v0.25.0-alpha.2 - k8s.io/component-helpers => k8s.io/component-helpers v0.25.0-alpha.2 - k8s.io/controller-manager => k8s.io/controller-manager v0.25.0-alpha.2 -) diff --git a/cluster-autoscaler/vendor/k8s.io/cloud-provider/go.sum b/cluster-autoscaler/vendor/k8s.io/cloud-provider/go.sum deleted file mode 100644 index 050d10d0c04..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/cloud-provider/go.sum +++ /dev/null @@ -1,751 +0,0 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.97.0 h1:3DXvAyifywvq64LfkKaMOmkWPS1CikIQdMe2lY9vxU8= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -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/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1 h1:ZUDjpQae29j0ryrS0u/B8HZfJBtBQHjqw2rQ2cqUQ3I= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= -github.com/PuerkitoBio/purell v1.1.1/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/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= -github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= -github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2 h1:D9/bQk5vlXQFZ6Kwuu6zaiXJ9oTPe68++AzAJc1DzSI= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -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/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/emicklei/go-restful/v3 v3.7.5-0.20220308211933-7c971ca4d0fd/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/emicklei/go-restful/v3 v3.8.0 h1:eCZ8ulSerjdAiaNpF7GxXIE7ZCMo1moN1qX+S609eVw= -github.com/emicklei/go-restful/v3 v3.8.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/evanphx/json-patch v4.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible h1:7ZaBxOI7TMoYBfyA3cQHErNNyAWIKUMIwqxEtgHOs5c= -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.5 h1:JboBksRwiiAJWvIYJVo46AfV+IAIKZpfrSzVKj42R4Q= -github.com/imdario/mergo v0.3.5/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/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= -github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= -github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -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.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= -github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -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 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -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/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= -github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= -github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/cobra v1.4.0 h1:y+wJpx64xcgO1V+RcnwW0LEHxTKRi2ZDPSBjWnrg88Q= -github.com/spf13/cobra v1.4.0/go.mod h1:Wo4iy3BUC+X2Fybo0PDqwJIv3dNRiZLHQymsfxlB84g= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -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/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802 h1:uruHq4dN7GR16kFc5fp3d1RIYzJW5onx8Ybykw2YQFA= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.etcd.io/bbolt v1.3.6 h1:/ecaJf0sk1l4l6V4awd65v2C3ILy7MSj+s/x1ADCIMU= -go.etcd.io/etcd/api/v3 v3.5.4 h1:OHVyt3TopwtUQ2GKdd5wu3PmmipR4FTwCqoEjSyRdIc= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.4 h1:lrneYvz923dvC14R54XcA7FXoZ3mlGZAgmwhfm7HqOg= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.4 h1:Dcx3/MYyfKcPNLpR4VVQUP5KgYrBeJtktBwEKkw08Ao= -go.etcd.io/etcd/client/v3 v3.5.4 h1:p83BUL3tAYS0OT/r0qglgc3M1JjhM0diV8DSWAhVXv4= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.etcd.io/etcd/pkg/v3 v3.5.4 h1:V5Dvl7S39ZDwjkKqJG2BfXgxZ3QREqqKifWQgIw5IM0= -go.etcd.io/etcd/raft/v3 v3.5.4 h1:YGrnAgRfgXloBNuqa+oBI/aRZMcK/1GS6trJePJ/Gqc= -go.etcd.io/etcd/server/v3 v3.5.4 h1:CMAZd0g8Bn5NRhynW6pKhc4FRg41/0QYy3d7aNm9874= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= -go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 h1:sO4WKdPAudZGKPcpZT4MJn6JaDmpyLrMPDGGyA1SttE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 h1:Q3C9yzW6I9jqEc8sawxzxZmY48fs9u220KXq6d5s3XU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/otel v0.20.0 h1:eaP0Fqu7SXHwvjiqDq83zImeehOHX8doTvU9AwXON8g= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/metric v0.20.0 h1:4kzhXFP+btKm4jwxpjIqjs41A7MakRFUS86bqLHTIw8= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/oteltest v0.20.0 h1:HiITxCawalo5vQzdHfKeZurV8x7ljcqAgiWzF6Vaeaw= -go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= -go.opentelemetry.io/otel/sdk v0.20.0 h1:JsxtGXd06J8jrnya7fdI/U/MR6yXA5DtbZy+qoHQlr8= -go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0 h1:c5VRjxCXdQlx1HjzwGdQHzZaVI82b5EbBgOu2ljD92g= -go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= -go.opentelemetry.io/otel/sdk/metric v0.20.0 h1:7ao1wpzHRVKf0OQ7GIxiQJA6X7DLX9o14gmVon7mMK8= -go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= -go.opentelemetry.io/otel/trace v0.20.0 h1:1DL6EXUdcg95gukhuRRvLDO/4X5THh/5dIV52lqtnbw= -go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= -go.opentelemetry.io/proto/otlp v0.7.0 h1:rwOQPCuKAKmwGKq2aVNnYIibI6wnV7EvzgfTCzcdGg8= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.19.0 h1:mZQZefskPPCMIBCSEH0v2/iUqqLrYtaeqwD6FUGUnFE= -go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/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-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38= -golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= -golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/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-20190213061140-3a22650c66bd/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-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 h1:RerP+noqYHUQ8CMRcPlC2nvTa4dcBIjegkuWdcUDuqg= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -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-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158 h1:rm+CHSpPEEW2IsXUib1ThaHIjuBVZjxNgSKmBLFfD4c= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= -golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -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-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.10-0.20220218145154-897bd77cd717 h1:hI3jKY4Hpf63ns040onEbB3dAkR/H/P83hw1TG8dD3Y= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -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/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6 h1:FglFEfyj61zP3c6LgjmVHxYxZWXYul9oiS1EZqD5gLc= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.47.0 h1:9n77onPX5F3qfFCqjy9dhn8PbNQsIKeVU04J9G7umt8= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.25.0-alpha.2 h1:azwXduCht76Ecuv80QzZkCDzcFcLotKPXiE9/+jx5Qk= -k8s.io/api v0.25.0-alpha.2/go.mod h1:wOntqHYj8WveLW2sh6q4tkE2vMZTtxe0MrFyVwO8JCM= -k8s.io/apimachinery v0.25.0-alpha.2 h1:y6uTWaiqsPTPRewnXJ15IFyGmBo2qPt6enm4zszG8Z0= -k8s.io/apimachinery v0.25.0-alpha.2/go.mod h1:h34FtK3eCxige6ZIACdBSYExtDaKAUxoc7hVe2LOxzw= -k8s.io/apiserver v0.25.0-alpha.2 h1:pG1Knqb3n4dTe1Z2Eb9CbiBELzdCkar8TFntKqz1Py8= -k8s.io/apiserver v0.25.0-alpha.2/go.mod h1:PUkHMlEX0S5ctsyHJNFEKrgIYPBnON59uJUDygYia+M= -k8s.io/client-go v0.25.0-alpha.2 h1:kXlDl2L/CmdubzbRTPOCXj9JDPv9U0MuEjRXSCltQ00= -k8s.io/client-go v0.25.0-alpha.2/go.mod h1:AN5W2BkXTu2lNm2BANn5lC6VnGlv6AM5HNPQLsriBOA= -k8s.io/component-base v0.25.0-alpha.2 h1:/u3UH2T5e8pac0FiCmsyKNh39rzdT2DxAOXww6e9b7M= -k8s.io/component-base v0.25.0-alpha.2/go.mod h1:6wq0/nWr0pBhuDnWjT2MhpcTRdnLBxucqwTShWfjVKM= -k8s.io/component-helpers v0.25.0-alpha.2 h1:CUyqdwi36jr01YyjFBhQcWxx7JhjQvLgIJDQs27DfGM= -k8s.io/component-helpers v0.25.0-alpha.2/go.mod h1:EI/IhY2quvpAqgFcjAxFHiKLU/sQR5B31oZgc5MJ/8c= -k8s.io/controller-manager v0.25.0-alpha.2 h1:ZxQZMopdBneXGVq66WVhEtWnnTFVWBo5G6O7yqxzHq8= -k8s.io/controller-manager v0.25.0-alpha.2/go.mod h1:EBuJwOkixqjNF49n9q1u1+IrZMcx1b7JwQm2RAG5fEc= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.70.0 h1:GMmmjoFOrNepPN0ZeGCzvD2Gh5IKRwdFx8W5PBxVTQU= -k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20220603121420-31174f50af60 h1:cE/M8rmDQgibspuSm+X1iW16ByTImtEaapgaHoVSLX4= -k8s.io/kube-openapi v0.0.0-20220603121420-31174f50af60/go.mod h1:ouUzE1U2mEv//HRoBwYLFE5pdqjIebvtX361vtEIlBI= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32 h1:2WjukG7txtEsbXsSKWtTibCdsyYAhcu6KFnttyDdZOQ= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/cluster-autoscaler/vendor/k8s.io/cloud-provider/node/helpers/address.go b/cluster-autoscaler/vendor/k8s.io/cloud-provider/node/helpers/address.go index 23405f61a37..6eb44a90feb 100644 --- a/cluster-autoscaler/vendor/k8s.io/cloud-provider/node/helpers/address.go +++ b/cluster-autoscaler/vendor/k8s.io/cloud-provider/node/helpers/address.go @@ -51,10 +51,10 @@ func AddToNodeAddresses(addresses *[]v1.NodeAddress, addAddresses ...v1.NodeAddr // // If nodeIP is a specific IP, either IPv4 or IPv6, we will return node // addresses filtered such that: -// * Any address matching nodeIP will be listed first. -// * If nodeIP matches an address of a particular type (internal or external), -// that will be the *only* address of that type returned. -// * All remaining addresses are listed after. +// - Any address matching nodeIP will be listed first. +// - If nodeIP matches an address of a particular type (internal or external), +// that will be the *only* address of that type returned. +// - All remaining addresses are listed after. func PreferNodeIP(nodeIP net.IP, cloudNodeAddresses []v1.NodeAddress) ([]v1.NodeAddress, error) { // If nodeIP is unset, just use the addresses provided by the cloud provider as-is if nodeIP == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/configz/configz.go b/cluster-autoscaler/vendor/k8s.io/component-base/configz/configz.go index 869af648bee..60e4f938ade 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-base/configz/configz.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/configz/configz.go @@ -18,25 +18,26 @@ limitations under the License. // // Each component that wants to serve its ComponentConfig creates a Config // object, and the program should call InstallHandler once. e.g., -// func main() { -// boatConfig := getBoatConfig() -// planeConfig := getPlaneConfig() // -// bcz, err := configz.New("boat") -// if err != nil { -// panic(err) -// } -// bcz.Set(boatConfig) +// func main() { +// boatConfig := getBoatConfig() +// planeConfig := getPlaneConfig() // -// pcz, err := configz.New("plane") -// if err != nil { -// panic(err) -// } -// pcz.Set(planeConfig) +// bcz, err := configz.New("boat") +// if err != nil { +// panic(err) +// } +// bcz.Set(boatConfig) // -// configz.InstallHandler(http.DefaultServeMux) -// http.ListenAndServe(":8080", http.DefaultServeMux) -// } +// pcz, err := configz.New("plane") +// if err != nil { +// panic(err) +// } +// pcz.Set(planeConfig) +// +// configz.InstallHandler(http.DefaultServeMux) +// http.ListenAndServe(":8080", http.DefaultServeMux) +// } package configz import ( diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/logs/logs.go b/cluster-autoscaler/vendor/k8s.io/component-base/logs/logs.go index 84d48f87738..5e87a858098 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-base/logs/logs.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/logs/logs.go @@ -176,12 +176,12 @@ func (writer KlogWriter) Write(data []byte) (n int, err error) { // InitLogs disables support for contextual logging in klog while // that Kubernetes feature is not considered stable yet. Commands // which want to support contextual logging can: -// - call klog.EnableContextualLogging after calling InitLogs, -// with a fixed `true` or depending on some command line flag or -// a feature gate check -// - set up a FeatureGate instance, the advanced logging configuration -// with Options and call Options.ValidateAndApply with the FeatureGate; -// k8s.io/component-base/logs/example/cmd demonstrates how to do that +// - call klog.EnableContextualLogging after calling InitLogs, +// with a fixed `true` or depending on some command line flag or +// a feature gate check +// - set up a FeatureGate instance, the advanced logging configuration +// with Options and call Options.ValidateAndApply with the FeatureGate; +// k8s.io/component-base/logs/example/cmd demonstrates how to do that func InitLogs() { log.SetOutput(KlogWriter{}) log.SetFlags(0) diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/desc.go b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/desc.go index 50eefd587fb..2ca9cfa7c21 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/desc.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/desc.go @@ -218,8 +218,8 @@ func (d *Desc) initializeDeprecatedDesc() { // GetRawDesc will returns a new *Desc with original parameters provided to NewDesc(). // // It will be useful in testing scenario that the same Desc be registered to different registry. -// 1. Desc `D` is registered to registry 'A' in TestA (Note: `D` maybe created) -// 2. Desc `D` is registered to registry 'B' in TestB (Note: since 'D' has been created once, thus will be ignored by registry 'B') +// 1. Desc `D` is registered to registry 'A' in TestA (Note: `D` maybe created) +// 2. Desc `D` is registered to registry 'B' in TestB (Note: since 'D' has been created once, thus will be ignored by registry 'B') func (d *Desc) GetRawDesc() *Desc { return NewDesc(d.fqName, d.help, d.variableLabels, d.constLabels, d.stabilityLevel, d.deprecatedVersion) } diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/metric.go b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/metric.go index e57e0b383d1..2980a972382 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/metric.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/metric.go @@ -91,13 +91,14 @@ func (r *lazyMetric) lazyInit(self kubeCollector, fqName string) { // preprocessMetric figures out whether the lazy metric should be hidden or not. // This method takes a Version argument which should be the version of the binary in which // this code is currently being executed. A metric can be hidden under two conditions: -// 1. if the metric is deprecated and is outside the grace period (i.e. has been -// deprecated for more than one release -// 2. if the metric is manually disabled via a CLI flag. +// 1. if the metric is deprecated and is outside the grace period (i.e. has been +// deprecated for more than one release +// 2. if the metric is manually disabled via a CLI flag. // // Disclaimer: disabling a metric via a CLI flag has higher precedence than -// deprecation and will override show-hidden-metrics for the explicitly -// disabled metric. +// +// deprecation and will override show-hidden-metrics for the explicitly +// disabled metric. func (r *lazyMetric) preprocessMetric(version semver.Version) { disabledMetricsLock.RLock() defer disabledMetricsLock.RUnlock() diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/summary.go b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/summary.go index c7621b986a4..0198f724834 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/summary.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/summary.go @@ -23,6 +23,12 @@ import ( "github.com/prometheus/client_golang/prometheus" ) +const ( + DefAgeBuckets = prometheus.DefAgeBuckets + DefBufCap = prometheus.DefBufCap + DefMaxAge = prometheus.DefMaxAge +) + // Summary is our internal representation for our wrapping struct around prometheus // summaries. Summary implements both kubeCollector and ObserverMetric // diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/value.go b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/value.go index 4a19aaa3bf9..bf8a6b8f65c 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-base/metrics/value.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/metrics/value.go @@ -50,7 +50,8 @@ func NewLazyConstMetric(desc *Desc, valueType ValueType, value float64, labelVal // NewLazyMetricWithTimestamp is a helper of NewMetricWithTimestamp. // // Warning: the Metric 'm' must be the one created by NewLazyConstMetric(), -// otherwise, no stability guarantees would be offered. +// +// otherwise, no stability guarantees would be offered. func NewLazyMetricWithTimestamp(t time.Time, m Metric) Metric { if m == nil { return nil diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/traces/utils.go b/cluster-autoscaler/vendor/k8s.io/component-base/traces/utils.go deleted file mode 100644 index 5b271fd1afb..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/component-base/traces/utils.go +++ /dev/null @@ -1,80 +0,0 @@ -/* -Copyright 2021 The Kubernetes 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 traces - -import ( - "context" - "net/http" - - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" - "go.opentelemetry.io/otel/exporters/otlp" - "go.opentelemetry.io/otel/exporters/otlp/otlpgrpc" - "go.opentelemetry.io/otel/propagation" - "go.opentelemetry.io/otel/sdk/resource" - sdktrace "go.opentelemetry.io/otel/sdk/trace" - "go.opentelemetry.io/otel/trace" - - "k8s.io/client-go/transport" - "k8s.io/klog/v2" -) - -// NewProvider initializes tracing in the component, and enforces recommended tracing behavior. -func NewProvider(ctx context.Context, baseSampler sdktrace.Sampler, resourceOpts []resource.Option, opts ...otlpgrpc.Option) trace.TracerProvider { - opts = append(opts, otlpgrpc.WithInsecure()) - driver := otlpgrpc.NewDriver(opts...) - exporter, err := otlp.NewExporter(ctx, driver) - if err != nil { - klog.Fatalf("Failed to create OTLP exporter: %v", err) - } - - res, err := resource.New(ctx, resourceOpts...) - if err != nil { - klog.Fatalf("Failed to create resource: %v", err) - } - - bsp := sdktrace.NewBatchSpanProcessor(exporter) - - return sdktrace.NewTracerProvider( - sdktrace.WithSampler(sdktrace.ParentBased(baseSampler)), - sdktrace.WithSpanProcessor(bsp), - sdktrace.WithResource(res), - ) -} - -// WrapperFor can be used to add tracing to a *rest.Config. Example usage: -// tp := traces.NewProvider(...) -// config, _ := rest.InClusterConfig() -// config.Wrap(traces.WrapperFor(&tp)) -// kubeclient, _ := clientset.NewForConfig(config) -func WrapperFor(tp *trace.TracerProvider) transport.WrapperFunc { - return func(rt http.RoundTripper) http.RoundTripper { - opts := []otelhttp.Option{ - otelhttp.WithPropagators(Propagators()), - } - if tp != nil { - opts = append(opts, otelhttp.WithTracerProvider(*tp)) - } - // Even if there is no TracerProvider, the otelhttp still handles context propagation. - // See https://github.com/open-telemetry/opentelemetry-go/tree/main/example/passthrough - return otelhttp.NewTransport(rt, opts...) - } -} - -// Propagators returns the recommended set of propagators. -func Propagators() propagation.TextMapPropagator { - return propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}) -} diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/traces/OWNERS b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/OWNERS similarity index 100% rename from cluster-autoscaler/vendor/k8s.io/component-base/traces/OWNERS rename to cluster-autoscaler/vendor/k8s.io/component-base/tracing/OWNERS diff --git a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/tracing/config.go b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/config.go similarity index 54% rename from cluster-autoscaler/vendor/k8s.io/apiserver/pkg/tracing/config.go rename to cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/config.go index 33ec6ae1087..ae9bbbfc092 100644 --- a/cluster-autoscaler/vendor/k8s.io/apiserver/pkg/tracing/config.go +++ b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/config.go @@ -14,63 +14,32 @@ See the License for the specific language governing permissions and limitations under the License. */ -package tracing +package v1 import ( "fmt" - "io/ioutil" "net/url" "strings" - "k8s.io/apimachinery/pkg/runtime" - "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/util/validation/field" - "k8s.io/apiserver/pkg/apis/apiserver" - "k8s.io/apiserver/pkg/apis/apiserver/install" -) - -const ( - maxSamplingRatePerMillion = 1000000 + "k8s.io/component-base/featuregate" ) var ( - cfgScheme = runtime.NewScheme() - codecs = serializer.NewCodecFactory(cfgScheme) + maxSamplingRatePerMillion = int32(1000000) ) -func init() { - install.Install(cfgScheme) -} - -// ReadTracingConfiguration reads the tracing configuration from a file -func ReadTracingConfiguration(configFilePath string) (*apiserver.TracingConfiguration, error) { - if configFilePath == "" { - return nil, fmt.Errorf("tracing config file was empty") - } - data, err := ioutil.ReadFile(configFilePath) - if err != nil { - return nil, fmt.Errorf("unable to read tracing configuration from %q: %v", configFilePath, err) - } - internalConfig := &apiserver.TracingConfiguration{} - // this handles json/yaml/whatever, and decodes all registered version to the internal version - if err := runtime.DecodeInto(codecs.UniversalDecoder(), data, internalConfig); err != nil { - return nil, fmt.Errorf("unable to decode tracing configuration data: %v", err) - } - return internalConfig, nil -} - // ValidateTracingConfiguration validates the tracing configuration -func ValidateTracingConfiguration(config *apiserver.TracingConfiguration) field.ErrorList { +func ValidateTracingConfiguration(traceConfig *TracingConfiguration, featureGate featuregate.FeatureGate, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} - if config == nil { - // Tracing is disabled + if traceConfig == nil { return allErrs } - if config.SamplingRatePerMillion != nil { - allErrs = append(allErrs, validateSamplingRate(*config.SamplingRatePerMillion, field.NewPath("samplingRatePerMillion"))...) + if traceConfig.SamplingRatePerMillion != nil { + allErrs = append(allErrs, validateSamplingRate(*traceConfig.SamplingRatePerMillion, fldPath.Child("samplingRatePerMillion"))...) } - if config.Endpoint != nil { - allErrs = append(allErrs, validateEndpoint(*config.Endpoint, field.NewPath("endpoint"))...) + if traceConfig.Endpoint != nil { + allErrs = append(allErrs, validateEndpoint(*traceConfig.Endpoint, fldPath.Child("endpoint"))...) } return allErrs } diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/doc.go b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/doc.go new file mode 100644 index 00000000000..ffe36aef6f0 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/doc.go @@ -0,0 +1,29 @@ +/* +Copyright 2022 The Kubernetes 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. +*/ + +// +k8s:deepcopy-gen=package + +// Package v1 contains the configuration API for tracing. +// +// The intention is to only have a single version of this API, potentially with +// new fields added over time in a backwards-compatible manner. Fields for +// alpha or beta features are allowed as long as they are defined so that not +// changing the defaults leaves those features disabled. +// +// The "v1" package name is just a reminder that API compatibility rules apply, +// not an indication of the stability of all features covered by it. + +package v1 // import "k8s.io/component-base/tracing/api/v1" diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/types.go b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/types.go new file mode 100644 index 00000000000..a59d564050f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/types.go @@ -0,0 +1,32 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +// TracingConfiguration provides versioned configuration for OpenTelemetry tracing clients. +type TracingConfiguration struct { + // Endpoint of the collector this component will report traces to. + // The connection is insecure, and does not currently support TLS. + // Recommended is unset, and endpoint is the otlp grpc default, localhost:4317. + // +optional + Endpoint *string `json:"endpoint,omitempty"` + + // SamplingRatePerMillion is the number of samples to collect per million spans. + // Recommended is unset. If unset, sampler respects its parent span's sampling + // rate, but otherwise never samples. + // +optional + SamplingRatePerMillion *int32 `json:"samplingRatePerMillion,omitempty"` +} diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/zz_generated.deepcopy.go new file mode 100644 index 00000000000..2afc68117b0 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/api/v1/zz_generated.deepcopy.go @@ -0,0 +1,48 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1 + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TracingConfiguration) DeepCopyInto(out *TracingConfiguration) { + *out = *in + if in.Endpoint != nil { + in, out := &in.Endpoint, &out.Endpoint + *out = new(string) + **out = **in + } + if in.SamplingRatePerMillion != nil { + in, out := &in.SamplingRatePerMillion, &out.SamplingRatePerMillion + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TracingConfiguration. +func (in *TracingConfiguration) DeepCopy() *TracingConfiguration { + if in == nil { + return nil + } + out := new(TracingConfiguration) + in.DeepCopyInto(out) + return out +} diff --git a/cluster-autoscaler/vendor/k8s.io/component-base/tracing/utils.go b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/utils.go new file mode 100644 index 00000000000..8c7ec983ca9 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/component-base/tracing/utils.go @@ -0,0 +1,108 @@ +/* +Copyright 2021 The Kubernetes 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 tracing + +import ( + "context" + "net/http" + + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" + "go.opentelemetry.io/otel/exporters/otlp" + "go.opentelemetry.io/otel/exporters/otlp/otlpgrpc" + "go.opentelemetry.io/otel/propagation" + "go.opentelemetry.io/otel/sdk/resource" + sdktrace "go.opentelemetry.io/otel/sdk/trace" + oteltrace "go.opentelemetry.io/otel/trace" + + "k8s.io/client-go/transport" + "k8s.io/component-base/tracing/api/v1" +) + +// NewProvider creates a TracerProvider in a component, and enforces recommended tracing behavior +func NewProvider(ctx context.Context, + tracingConfig *v1.TracingConfiguration, + addedOpts []otlpgrpc.Option, + resourceOpts []resource.Option, +) (oteltrace.TracerProvider, error) { + if tracingConfig == nil { + return oteltrace.NewNoopTracerProvider(), nil + } + opts := append([]otlpgrpc.Option{}, addedOpts...) + if tracingConfig.Endpoint != nil { + opts = append(opts, otlpgrpc.WithEndpoint(*tracingConfig.Endpoint)) + } + opts = append(opts, otlpgrpc.WithInsecure()) + driver := otlpgrpc.NewDriver(opts...) + exporter, err := otlp.NewExporter(ctx, driver) + if err != nil { + return nil, err + } + res, err := resource.New(ctx, resourceOpts...) + if err != nil { + return nil, err + } + + // sampler respects parent span's sampling rate or + // otherwise never samples. + sampler := sdktrace.NeverSample() + // Or, emit spans for a fraction of transactions + if tracingConfig.SamplingRatePerMillion != nil && *tracingConfig.SamplingRatePerMillion > 0 { + sampler = sdktrace.TraceIDRatioBased(float64(*tracingConfig.SamplingRatePerMillion) / float64(1000000)) + } + // batch span processor to aggregate spans before export. + bsp := sdktrace.NewBatchSpanProcessor(exporter) + tp := sdktrace.NewTracerProvider( + sdktrace.WithSampler(sdktrace.ParentBased(sampler)), + sdktrace.WithSpanProcessor(bsp), + sdktrace.WithResource(res), + ) + return tp, nil +} + +// WithTracing adds tracing to requests if the incoming request is sampled +func WithTracing(handler http.Handler, tp oteltrace.TracerProvider, serviceName string) http.Handler { + opts := []otelhttp.Option{ + otelhttp.WithPropagators(Propagators()), + otelhttp.WithTracerProvider(tp), + } + // With Noop TracerProvider, the otelhttp still handles context propagation. + // See https://github.com/open-telemetry/opentelemetry-go/tree/main/example/passthrough + return otelhttp.NewHandler(handler, serviceName, opts...) +} + +// WrapperFor can be used to add tracing to a *rest.Config. +// Example usage: +// tp := NewProvider(...) +// config, _ := rest.InClusterConfig() +// config.Wrap(WrapperFor(&tp)) +// kubeclient, _ := clientset.NewForConfig(config) +func WrapperFor(tp oteltrace.TracerProvider) transport.WrapperFunc { + return func(rt http.RoundTripper) http.RoundTripper { + opts := []otelhttp.Option{ + otelhttp.WithPropagators(Propagators()), + otelhttp.WithTracerProvider(tp), + } + // With Noop TracerProvider, the otelhttp still handles context propagation. + // See https://github.com/open-telemetry/opentelemetry-go/tree/main/example/passthrough + return otelhttp.NewTransport(rt, opts...) + } +} + +// Propagators returns the recommended set of propagators. +func Propagators() propagation.TextMapPropagator { + return propagation.NewCompositeTextMapPropagator(propagation.TraceContext{}, propagation.Baggage{}) +} diff --git a/cluster-autoscaler/vendor/k8s.io/component-helpers/node/topology/helpers.go b/cluster-autoscaler/vendor/k8s.io/component-helpers/node/topology/helpers.go index 18c838cca56..8eaff674a6a 100644 --- a/cluster-autoscaler/vendor/k8s.io/component-helpers/node/topology/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/component-helpers/node/topology/helpers.go @@ -23,8 +23,9 @@ import ( // GetZoneKey is a helper function that builds a string identifier that is unique per failure-zone; // it returns empty-string for no zone. // Since there are currently two separate zone keys: -// * "failure-domain.beta.kubernetes.io/zone" -// * "topology.kubernetes.io/zone" +// - "failure-domain.beta.kubernetes.io/zone" +// - "topology.kubernetes.io/zone" +// // GetZoneKey will first check failure-domain.beta.kubernetes.io/zone and if not exists, will then check // topology.kubernetes.io/zone func GetZoneKey(node *v1.Node) string { diff --git a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go index 1e1aebbb09f..ca7f142290b 100644 --- a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.pb.go @@ -211,6 +211,41 @@ func (ContainerState) EnumDescriptor() ([]byte, []int) { return fileDescriptor_00212fb1f9d3bf1c, []int{4} } +type ContainerEventType int32 + +const ( + // Container created + ContainerEventType_CONTAINER_CREATED_EVENT ContainerEventType = 0 + // Container started + ContainerEventType_CONTAINER_STARTED_EVENT ContainerEventType = 1 + // Container stopped + ContainerEventType_CONTAINER_STOPPED_EVENT ContainerEventType = 2 + // Container deleted + ContainerEventType_CONTAINER_DELETED_EVENT ContainerEventType = 3 +) + +var ContainerEventType_name = map[int32]string{ + 0: "CONTAINER_CREATED_EVENT", + 1: "CONTAINER_STARTED_EVENT", + 2: "CONTAINER_STOPPED_EVENT", + 3: "CONTAINER_DELETED_EVENT", +} + +var ContainerEventType_value = map[string]int32{ + "CONTAINER_CREATED_EVENT": 0, + "CONTAINER_STARTED_EVENT": 1, + "CONTAINER_STOPPED_EVENT": 2, + "CONTAINER_DELETED_EVENT": 3, +} + +func (x ContainerEventType) String() string { + return proto.EnumName(ContainerEventType_name, int32(x)) +} + +func (ContainerEventType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{5} +} + // Available profile types. type SecurityProfile_ProfileType int32 @@ -865,9 +900,9 @@ func (m *Int64Value) GetValue() int64 { // LinuxSandboxSecurityContext holds linux security configuration that will be // applied to a sandbox. Note that: -// 1) It does not apply to containers in the pods. -// 2) It may not be applicable to a PodSandbox which does not contain any running -// process. +// 1. It does not apply to containers in the pods. +// 2. It may not be applicable to a PodSandbox which does not contain any running +// process. type LinuxSandboxSecurityContext struct { // Configurations for the sandbox's namespaces. // This will be used only if the PodSandbox uses namespace for isolation. @@ -895,10 +930,11 @@ type LinuxSandboxSecurityContext struct { // AppArmor profile for the sandbox. Apparmor *SecurityProfile `protobuf:"bytes,10,opt,name=apparmor,proto3" json:"apparmor,omitempty"` // Seccomp profile for the sandbox, candidate values are: - // * runtime/default: the default profile for the container runtime - // * unconfined: unconfined profile, ie, no seccomp sandboxing - // * localhost/: the profile installed on the node. - // is the full path of the profile. + // - runtime/default: the default profile for the container runtime + // - unconfined: unconfined profile, ie, no seccomp sandboxing + // - localhost/: the profile installed on the node. + // is the full path of the profile. + // // Default: "", which is identical with unconfined. SeccompProfilePath string `protobuf:"bytes,7,opt,name=seccomp_profile_path,json=seccompProfilePath,proto3" json:"seccomp_profile_path,omitempty"` // Deprecated: Do not use. XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1249,8 +1285,9 @@ type PodSandboxConfig struct { // containers. For example, the files might be newline separated JSON // structured logs, systemd-journald journal files, gRPC trace files, etc. // E.g., - // PodSandboxConfig.LogDirectory = `/var/log/pods//` - // ContainerConfig.LogPath = `containerName/Instance#.log` + // + // PodSandboxConfig.LogDirectory = `/var/log/pods//` + // ContainerConfig.LogPath = `containerName/Instance#.log` LogDirectory string `protobuf:"bytes,3,opt,name=log_directory,json=logDirectory,proto3" json:"log_directory,omitempty"` // DNS config for the sandbox. DnsConfig *DNSConfig `protobuf:"bytes,4,opt,name=dns_config,json=dnsConfig,proto3" json:"dns_config,omitempty"` @@ -3603,17 +3640,18 @@ type LinuxContainerSecurityContext struct { // AppArmor profile for the container. Apparmor *SecurityProfile `protobuf:"bytes,16,opt,name=apparmor,proto3" json:"apparmor,omitempty"` // AppArmor profile for the container, candidate values are: - // * runtime/default: equivalent to not specifying a profile. - // * unconfined: no profiles are loaded - // * localhost/: profile loaded on the node - // (localhost) by name. The possible profile names are detailed at - // https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference + // - runtime/default: equivalent to not specifying a profile. + // - unconfined: no profiles are loaded + // - localhost/: profile loaded on the node + // (localhost) by name. The possible profile names are detailed at + // https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference ApparmorProfile string `protobuf:"bytes,9,opt,name=apparmor_profile,json=apparmorProfile,proto3" json:"apparmor_profile,omitempty"` // Deprecated: Do not use. // Seccomp profile for the container, candidate values are: - // * runtime/default: the default profile for the container runtime - // * unconfined: unconfined profile, ie, no seccomp sandboxing - // * localhost/: the profile installed on the node. - // is the full path of the profile. + // - runtime/default: the default profile for the container runtime + // - unconfined: unconfined profile, ie, no seccomp sandboxing + // - localhost/: the profile installed on the node. + // is the full path of the profile. + // // Default: "", which is identical with unconfined. SeccompProfilePath string `protobuf:"bytes,10,opt,name=seccomp_profile_path,json=seccompProfilePath,proto3" json:"seccomp_profile_path,omitempty"` // Deprecated: Do not use. XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -4300,10 +4338,11 @@ type ContainerConfig struct { Devices []*Device `protobuf:"bytes,8,rep,name=devices,proto3" json:"devices,omitempty"` // Key-value pairs that may be used to scope and select individual resources. // Label keys are of the form: - // label-key ::= prefixed-name | name - // prefixed-name ::= prefix '/' name - // prefix ::= DNS_SUBDOMAIN - // name ::= DNS_LABEL + // + // label-key ::= prefixed-name | name + // prefixed-name ::= prefix '/' name + // prefix ::= DNS_SUBDOMAIN + // name ::= DNS_LABEL Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Unstructured key-value map that may be used by the kubelet to store and // retrieve arbitrary metadata. @@ -4319,8 +4358,9 @@ type ContainerConfig struct { // Path relative to PodSandboxConfig.LogDirectory for container to store // the log (STDOUT and STDERR) on the host. // E.g., - // PodSandboxConfig.LogDirectory = `/var/log/pods//` - // ContainerConfig.LogPath = `containerName/Instance#.log` + // + // PodSandboxConfig.LogDirectory = `/var/log/pods//` + // ContainerConfig.LogPath = `containerName/Instance#.log` // // WARNING: Log management and how kubelet should interface with the // container logs are under active discussion in @@ -5287,9 +5327,11 @@ type ContainerStatus struct { // Mounts for the container. Mounts []*Mount `protobuf:"bytes,14,rep,name=mounts,proto3" json:"mounts,omitempty"` // Log path of container. - LogPath string `protobuf:"bytes,15,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + LogPath string `protobuf:"bytes,15,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` + // Resource limits configuration of the container. + Resources *ContainerResources `protobuf:"bytes,16,opt,name=resources,proto3" json:"resources,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } @@ -5429,6 +5471,13 @@ func (m *ContainerStatus) GetLogPath() string { return "" } +func (m *ContainerStatus) GetResources() *ContainerResources { + if m != nil { + return m.Resources + } + return nil +} + type ContainerStatusResponse struct { // Status of the container. Status *ContainerStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` @@ -5487,6 +5536,62 @@ func (m *ContainerStatusResponse) GetInfo() map[string]string { return nil } +// ContainerResources holds resource limits configuration for a container. +type ContainerResources struct { + // Resource limits configuration specific to Linux container. + Linux *LinuxContainerResources `protobuf:"bytes,1,opt,name=linux,proto3" json:"linux,omitempty"` + // Resource limits configuration specific to Windows container. + Windows *WindowsContainerResources `protobuf:"bytes,2,opt,name=windows,proto3" json:"windows,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerResources) Reset() { *m = ContainerResources{} } +func (*ContainerResources) ProtoMessage() {} +func (*ContainerResources) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{76} +} +func (m *ContainerResources) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContainerResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ContainerResources.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ContainerResources) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerResources.Merge(m, src) +} +func (m *ContainerResources) XXX_Size() int { + return m.Size() +} +func (m *ContainerResources) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerResources.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerResources proto.InternalMessageInfo + +func (m *ContainerResources) GetLinux() *LinuxContainerResources { + if m != nil { + return m.Linux + } + return nil +} + +func (m *ContainerResources) GetWindows() *WindowsContainerResources { + if m != nil { + return m.Windows + } + return nil +} + type UpdateContainerResourcesRequest struct { // ID of the container to update. ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` @@ -5505,7 +5610,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5570,7 +5675,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5613,7 +5718,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5677,7 +5782,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5753,7 +5858,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5834,7 +5939,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5895,7 +6000,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{83} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5969,7 +6074,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6017,7 +6122,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6070,7 +6175,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6116,7 +6221,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6162,7 +6267,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6228,7 +6333,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6323,7 +6428,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6371,7 +6476,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6429,7 +6534,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6490,7 +6595,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6575,7 +6680,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6636,7 +6741,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6682,7 +6787,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6726,7 +6831,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6766,7 +6871,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6811,7 +6916,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6856,7 +6961,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6900,7 +7005,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6934,10 +7039,11 @@ var xxx_messageInfo_UpdateRuntimeConfigResponse proto.InternalMessageInfo // 1. Required conditions: Conditions are required for kubelet to work // properly. If any required condition is unmet, the node will be not ready. // The required conditions include: -// * RuntimeReady: RuntimeReady means the runtime is up and ready to accept -// basic containers e.g. container only needs host network. -// * NetworkReady: NetworkReady means the runtime network is up and ready to -// accept containers which require container network. +// - RuntimeReady: RuntimeReady means the runtime is up and ready to accept +// basic containers e.g. container only needs host network. +// - NetworkReady: NetworkReady means the runtime network is up and ready to +// accept containers which require container network. +// // 2. Optional conditions: Conditions are informative to the user, but kubelet // will not rely on. Since condition type is an arbitrary string, all conditions // not required are optional. These conditions will be exposed to users to help @@ -6958,7 +7064,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7026,7 +7132,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7072,7 +7178,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7123,7 +7229,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7174,7 +7280,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{105} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7214,7 +7320,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{106} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7261,7 +7367,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{107} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7318,7 +7424,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{108} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7385,7 +7491,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{109} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7431,7 +7537,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{110} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7477,7 +7583,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{111} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7523,7 +7629,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{112} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7577,7 +7683,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{113} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7637,7 +7743,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{114} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7693,7 +7799,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{115} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7767,7 +7873,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{116} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7840,7 +7946,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{117} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7913,7 +8019,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{118} + return fileDescriptor_00212fb1f9d3bf1c, []int{119} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8001,7 +8107,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{119} + return fileDescriptor_00212fb1f9d3bf1c, []int{120} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8045,7 +8151,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{120} + return fileDescriptor_00212fb1f9d3bf1c, []int{121} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8074,12 +8180,226 @@ func (m *ReopenContainerLogResponse) XXX_DiscardUnknown() { var xxx_messageInfo_ReopenContainerLogResponse proto.InternalMessageInfo +type CheckpointContainerRequest struct { + // ID of the container to be checkpointed. + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // Location of the checkpoint archive used for export + Location string `protobuf:"bytes,2,opt,name=location,proto3" json:"location,omitempty"` + // Timeout in seconds for the checkpoint to complete. + // Timeout of zero means to use the CRI default. + // Timeout > 0 means to use the user specified timeout. + Timeout int64 `protobuf:"varint,3,opt,name=timeout,proto3" json:"timeout,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CheckpointContainerRequest) Reset() { *m = CheckpointContainerRequest{} } +func (*CheckpointContainerRequest) ProtoMessage() {} +func (*CheckpointContainerRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{122} +} +func (m *CheckpointContainerRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckpointContainerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckpointContainerRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckpointContainerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckpointContainerRequest.Merge(m, src) +} +func (m *CheckpointContainerRequest) XXX_Size() int { + return m.Size() +} +func (m *CheckpointContainerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_CheckpointContainerRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckpointContainerRequest proto.InternalMessageInfo + +func (m *CheckpointContainerRequest) GetContainerId() string { + if m != nil { + return m.ContainerId + } + return "" +} + +func (m *CheckpointContainerRequest) GetLocation() string { + if m != nil { + return m.Location + } + return "" +} + +func (m *CheckpointContainerRequest) GetTimeout() int64 { + if m != nil { + return m.Timeout + } + return 0 +} + +type CheckpointContainerResponse struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *CheckpointContainerResponse) Reset() { *m = CheckpointContainerResponse{} } +func (*CheckpointContainerResponse) ProtoMessage() {} +func (*CheckpointContainerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{123} +} +func (m *CheckpointContainerResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CheckpointContainerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CheckpointContainerResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *CheckpointContainerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_CheckpointContainerResponse.Merge(m, src) +} +func (m *CheckpointContainerResponse) XXX_Size() int { + return m.Size() +} +func (m *CheckpointContainerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_CheckpointContainerResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_CheckpointContainerResponse proto.InternalMessageInfo + +type GetEventsRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } +func (*GetEventsRequest) ProtoMessage() {} +func (*GetEventsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{124} +} +func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GetEventsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GetEventsRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *GetEventsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetEventsRequest.Merge(m, src) +} +func (m *GetEventsRequest) XXX_Size() int { + return m.Size() +} +func (m *GetEventsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetEventsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetEventsRequest proto.InternalMessageInfo + +type ContainerEventResponse struct { + // ID of the container + ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` + // Type of the container event + ContainerEventType ContainerEventType `protobuf:"varint,2,opt,name=container_event_type,json=containerEventType,proto3,enum=runtime.v1.ContainerEventType" json:"container_event_type,omitempty"` + // Creation timestamp of this event + CreatedAt int64 `protobuf:"varint,3,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // ID of the sandbox container + PodSandboxMetadata *PodSandboxMetadata `protobuf:"bytes,4,opt,name=pod_sandbox_metadata,json=podSandboxMetadata,proto3" json:"pod_sandbox_metadata,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerEventResponse) Reset() { *m = ContainerEventResponse{} } +func (*ContainerEventResponse) ProtoMessage() {} +func (*ContainerEventResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{125} +} +func (m *ContainerEventResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContainerEventResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ContainerEventResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ContainerEventResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerEventResponse.Merge(m, src) +} +func (m *ContainerEventResponse) XXX_Size() int { + return m.Size() +} +func (m *ContainerEventResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerEventResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerEventResponse proto.InternalMessageInfo + +func (m *ContainerEventResponse) GetContainerId() string { + if m != nil { + return m.ContainerId + } + return "" +} + +func (m *ContainerEventResponse) GetContainerEventType() ContainerEventType { + if m != nil { + return m.ContainerEventType + } + return ContainerEventType_CONTAINER_CREATED_EVENT +} + +func (m *ContainerEventResponse) GetCreatedAt() int64 { + if m != nil { + return m.CreatedAt + } + return 0 +} + +func (m *ContainerEventResponse) GetPodSandboxMetadata() *PodSandboxMetadata { + if m != nil { + return m.PodSandboxMetadata + } + return nil +} + func init() { proto.RegisterEnum("runtime.v1.Protocol", Protocol_name, Protocol_value) proto.RegisterEnum("runtime.v1.MountPropagation", MountPropagation_name, MountPropagation_value) proto.RegisterEnum("runtime.v1.NamespaceMode", NamespaceMode_name, NamespaceMode_value) proto.RegisterEnum("runtime.v1.PodSandboxState", PodSandboxState_name, PodSandboxState_value) proto.RegisterEnum("runtime.v1.ContainerState", ContainerState_name, ContainerState_value) + proto.RegisterEnum("runtime.v1.ContainerEventType", ContainerEventType_name, ContainerEventType_value) proto.RegisterEnum("runtime.v1.SecurityProfile_ProfileType", SecurityProfile_ProfileType_name, SecurityProfile_ProfileType_value) proto.RegisterType((*VersionRequest)(nil), "runtime.v1.VersionRequest") proto.RegisterType((*VersionResponse)(nil), "runtime.v1.VersionResponse") @@ -8179,6 +8499,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatus.LabelsEntry") proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.v1.ContainerStatusResponse") proto.RegisterMapType((map[string]string)(nil), "runtime.v1.ContainerStatusResponse.InfoEntry") + proto.RegisterType((*ContainerResources)(nil), "runtime.v1.ContainerResources") proto.RegisterType((*UpdateContainerResourcesRequest)(nil), "runtime.v1.UpdateContainerResourcesRequest") proto.RegisterMapType((map[string]string)(nil), "runtime.v1.UpdateContainerResourcesRequest.AnnotationsEntry") proto.RegisterType((*UpdateContainerResourcesResponse)(nil), "runtime.v1.UpdateContainerResourcesResponse") @@ -8230,373 +8551,391 @@ func init() { proto.RegisterType((*MemoryUsage)(nil), "runtime.v1.MemoryUsage") proto.RegisterType((*ReopenContainerLogRequest)(nil), "runtime.v1.ReopenContainerLogRequest") proto.RegisterType((*ReopenContainerLogResponse)(nil), "runtime.v1.ReopenContainerLogResponse") + proto.RegisterType((*CheckpointContainerRequest)(nil), "runtime.v1.CheckpointContainerRequest") + proto.RegisterType((*CheckpointContainerResponse)(nil), "runtime.v1.CheckpointContainerResponse") + proto.RegisterType((*GetEventsRequest)(nil), "runtime.v1.GetEventsRequest") + proto.RegisterType((*ContainerEventResponse)(nil), "runtime.v1.ContainerEventResponse") } func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 5772 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3c, 0x4b, 0x70, 0x1b, 0xc9, - 0x75, 0x1c, 0x00, 0x24, 0x81, 0x07, 0x02, 0x04, 0x5b, 0x14, 0x09, 0x41, 0x9f, 0x95, 0x46, 0xde, - 0x8f, 0xa4, 0x5d, 0x52, 0xab, 0xd5, 0xae, 0xb5, 0xf4, 0x7e, 0x04, 0x91, 0xdc, 0x5d, 0xac, 0x25, - 0x12, 0x1e, 0x90, 0xeb, 0x5f, 0xca, 0x93, 0x11, 0xa6, 0x09, 0xce, 0x0a, 0x98, 0x19, 0xcf, 0x0c, - 0x24, 0xd1, 0x27, 0x5f, 0x93, 0x53, 0xaa, 0x1c, 0x97, 0xab, 0x5c, 0xa9, 0xa4, 0x72, 0xca, 0x21, - 0x07, 0xe7, 0x92, 0x54, 0xaa, 0x52, 0x49, 0x2e, 0xa9, 0x94, 0x93, 0x2a, 0x57, 0xf9, 0x92, 0x2a, - 0x1f, 0x52, 0x15, 0x7b, 0x73, 0xcb, 0x21, 0x27, 0x1f, 0x72, 0x73, 0xaa, 0x7f, 0x33, 0xd3, 0x33, - 0x83, 0x01, 0xa8, 0x5d, 0xef, 0xee, 0x89, 0xe8, 0xd7, 0xef, 0xbd, 0x7e, 0xdd, 0xfd, 0xfa, 0xf5, - 0xeb, 0xf7, 0xde, 0x10, 0x2a, 0x86, 0x6b, 0x6d, 0xb8, 0x9e, 0x13, 0x38, 0x08, 0xbc, 0xb1, 0x1d, - 0x58, 0x23, 0xbc, 0xf1, 0xf8, 0xd5, 0xd6, 0x2b, 0x03, 0x2b, 0x38, 0x1e, 0x3f, 0xdc, 0xe8, 0x3b, - 0xa3, 0xcd, 0x81, 0x33, 0x70, 0x36, 0x29, 0xca, 0xc3, 0xf1, 0x11, 0x6d, 0xd1, 0x06, 0xfd, 0xc5, - 0x48, 0xd5, 0xeb, 0x50, 0xff, 0x08, 0x7b, 0xbe, 0xe5, 0xd8, 0x1a, 0xfe, 0xfe, 0x18, 0xfb, 0x01, - 0x6a, 0xc2, 0xe2, 0x63, 0x06, 0x69, 0x2a, 0x97, 0x95, 0x97, 0x2a, 0x9a, 0x68, 0xaa, 0x7f, 0xa5, - 0xc0, 0x72, 0x88, 0xec, 0xbb, 0x8e, 0xed, 0xe3, 0xc9, 0xd8, 0xe8, 0x0a, 0x2c, 0x71, 0xb1, 0x74, - 0xdb, 0x18, 0xe1, 0x66, 0x81, 0x76, 0x57, 0x39, 0x6c, 0xcf, 0x18, 0x61, 0xf4, 0x22, 0x2c, 0x0b, - 0x14, 0xc1, 0xa4, 0x48, 0xb1, 0xea, 0x1c, 0xcc, 0x47, 0x43, 0x1b, 0x70, 0x46, 0x20, 0x1a, 0xae, - 0x15, 0x22, 0x97, 0x28, 0xf2, 0x0a, 0xef, 0x6a, 0xbb, 0x16, 0xc7, 0x57, 0xbf, 0x0b, 0x95, 0x9d, - 0xbd, 0xde, 0xb6, 0x63, 0x1f, 0x59, 0x03, 0x22, 0xa2, 0x8f, 0x3d, 0x42, 0xd3, 0x54, 0x2e, 0x17, - 0x89, 0x88, 0xbc, 0x89, 0x5a, 0x50, 0xf6, 0xb1, 0xe1, 0xf5, 0x8f, 0xb1, 0xdf, 0x2c, 0xd0, 0xae, - 0xb0, 0x4d, 0xa8, 0x1c, 0x37, 0xb0, 0x1c, 0xdb, 0x6f, 0x16, 0x19, 0x15, 0x6f, 0xaa, 0x7f, 0xa6, - 0x40, 0xb5, 0xeb, 0x78, 0xc1, 0x03, 0xc3, 0x75, 0x2d, 0x7b, 0x80, 0x6e, 0x42, 0x99, 0xae, 0x65, - 0xdf, 0x19, 0xd2, 0x35, 0xa8, 0xdf, 0x5a, 0xdd, 0x88, 0x36, 0x64, 0xa3, 0xcb, 0xfb, 0xb4, 0x10, - 0x0b, 0x3d, 0x0f, 0xf5, 0xbe, 0x63, 0x07, 0x86, 0x65, 0x63, 0x4f, 0x77, 0x1d, 0x2f, 0xa0, 0x8b, - 0x33, 0xaf, 0xd5, 0x42, 0x28, 0xe1, 0x8f, 0xce, 0x43, 0xe5, 0xd8, 0xf1, 0x03, 0x86, 0x51, 0xa4, - 0x18, 0x65, 0x02, 0xa0, 0x9d, 0xeb, 0xb0, 0x48, 0x3b, 0x2d, 0x97, 0x2f, 0xc3, 0x02, 0x69, 0x76, - 0x5c, 0xf5, 0x97, 0x0a, 0xcc, 0x3f, 0x70, 0xc6, 0x76, 0x90, 0x18, 0xc6, 0x08, 0x8e, 0xf9, 0x16, - 0xc5, 0x86, 0x31, 0x82, 0xe3, 0x68, 0x18, 0x82, 0xc1, 0x76, 0x89, 0x0d, 0x43, 0x3a, 0x5b, 0x50, - 0xf6, 0xb0, 0x61, 0x3a, 0xf6, 0xf0, 0x84, 0x8a, 0x50, 0xd6, 0xc2, 0x36, 0xd9, 0x3e, 0x1f, 0x0f, - 0x2d, 0x7b, 0xfc, 0x54, 0xf7, 0xf0, 0xd0, 0x78, 0x88, 0x87, 0x54, 0x94, 0xb2, 0x56, 0xe7, 0x60, - 0x8d, 0x41, 0xd1, 0x3b, 0x50, 0x75, 0x3d, 0xc7, 0x35, 0x06, 0x06, 0x59, 0xc1, 0xe6, 0x3c, 0x5d, - 0xa4, 0x0b, 0xf1, 0x45, 0xa2, 0x02, 0x77, 0x23, 0x1c, 0x2d, 0x4e, 0xa0, 0xea, 0x50, 0xe9, 0xec, - 0x88, 0xe5, 0x0e, 0x27, 0x6e, 0xd2, 0xe9, 0xd4, 0xf8, 0xc4, 0x4d, 0xa2, 0x70, 0xd1, 0x74, 0x2d, - 0x93, 0x4e, 0xa5, 0xa6, 0x55, 0x43, 0x58, 0xc7, 0x44, 0x6b, 0xb0, 0x30, 0xc4, 0xf6, 0x20, 0x38, - 0xa6, 0x73, 0xa9, 0x69, 0xbc, 0xa5, 0xfe, 0xa9, 0x02, 0xb5, 0x43, 0x1f, 0x7b, 0x44, 0x2b, 0x7d, - 0xd7, 0xe8, 0x63, 0xf4, 0x0a, 0x94, 0x46, 0x8e, 0x89, 0xf9, 0x86, 0x9e, 0x8b, 0xcb, 0x1a, 0x22, - 0x3d, 0x70, 0x4c, 0xac, 0x51, 0x34, 0x74, 0x0d, 0x4a, 0x63, 0xcb, 0x64, 0x5a, 0x54, 0xbd, 0x75, - 0x36, 0x8e, 0x1e, 0x4a, 0xae, 0x51, 0x14, 0x82, 0x3a, 0x20, 0xa8, 0xc5, 0x5c, 0x54, 0x82, 0xa2, - 0xfe, 0x4e, 0x81, 0xe5, 0x70, 0xb4, 0x7d, 0xaa, 0x7e, 0xe8, 0x35, 0x58, 0xb4, 0x71, 0xf0, 0xc4, - 0xf1, 0x1e, 0x4d, 0x97, 0x4d, 0x60, 0xa2, 0x1b, 0x50, 0x74, 0xf9, 0x8a, 0xe4, 0x12, 0x10, 0x2c, - 0x82, 0x6c, 0xb9, 0x7d, 0xba, 0x42, 0xf9, 0xc8, 0x96, 0xdb, 0x27, 0xca, 0x13, 0x18, 0xde, 0x00, - 0xd3, 0xfd, 0x60, 0x8a, 0x58, 0x66, 0x80, 0x8e, 0x89, 0xee, 0x42, 0x7d, 0xec, 0x63, 0xcf, 0xf6, - 0x75, 0x71, 0x94, 0xc8, 0xd6, 0x57, 0x65, 0xa6, 0xd2, 0xba, 0x6b, 0x35, 0x46, 0xb0, 0xcf, 0xcf, - 0x9a, 0x0a, 0xd0, 0xb1, 0x83, 0x37, 0x6e, 0x7f, 0x64, 0x0c, 0xc7, 0x18, 0xad, 0xc2, 0xfc, 0x63, - 0xf2, 0x83, 0xce, 0xbc, 0xa8, 0xb1, 0x86, 0xfa, 0x8f, 0x25, 0x38, 0x7f, 0x9f, 0xa8, 0x5b, 0xcf, - 0xb0, 0xcd, 0x87, 0xce, 0xd3, 0x1e, 0xee, 0x8f, 0x3d, 0x2b, 0x38, 0xd9, 0x76, 0xec, 0x00, 0x3f, - 0x0d, 0xd0, 0x07, 0xb0, 0x62, 0x0b, 0xfe, 0xa1, 0x20, 0x0a, 0x15, 0xe4, 0x7c, 0xe6, 0xec, 0xd8, - 0xe0, 0x5a, 0xc3, 0x96, 0x01, 0x3e, 0xba, 0x17, 0x29, 0xbc, 0xe0, 0x53, 0x48, 0x4f, 0xa8, 0xb7, - 0x4b, 0xa5, 0xe1, 0x5c, 0xc4, 0x59, 0x10, 0x3c, 0xde, 0x00, 0x62, 0x02, 0x75, 0xc3, 0xd7, 0xc9, - 0x4c, 0xe9, 0x2a, 0x57, 0x6f, 0xad, 0x49, 0x5a, 0x10, 0x4e, 0x58, 0xab, 0x78, 0x63, 0xbb, 0xed, - 0x93, 0x15, 0x42, 0x77, 0xa8, 0x39, 0x25, 0x74, 0x03, 0xcf, 0x19, 0xbb, 0xcd, 0x72, 0x2e, 0x21, - 0x50, 0xc2, 0xf7, 0x09, 0x26, 0xb5, 0xb2, 0xfc, 0xc8, 0xea, 0x9e, 0xe3, 0x04, 0x47, 0xbe, 0x38, - 0xa6, 0x02, 0xac, 0x51, 0x28, 0xda, 0x84, 0x33, 0xfe, 0xd8, 0x75, 0x87, 0x78, 0x84, 0xed, 0xc0, - 0x18, 0xb2, 0x81, 0xc8, 0x9e, 0x15, 0x5f, 0x2a, 0x6a, 0x28, 0xde, 0x45, 0x19, 0xfb, 0xe8, 0x12, - 0x80, 0xeb, 0x59, 0x8f, 0xad, 0x21, 0x1e, 0x60, 0xb3, 0xb9, 0x40, 0x99, 0xc6, 0x20, 0xe8, 0x75, - 0x62, 0x79, 0xfb, 0x7d, 0x67, 0xe4, 0x36, 0x2b, 0xe9, 0xf5, 0x16, 0xfb, 0xd4, 0xf5, 0x9c, 0x23, - 0x6b, 0x88, 0x35, 0x81, 0x8b, 0xbe, 0x0a, 0x65, 0xc3, 0x75, 0x0d, 0x6f, 0xe4, 0x78, 0x4d, 0x98, - 0x4e, 0x17, 0x22, 0xa3, 0xdb, 0xb0, 0xca, 0x79, 0xe8, 0x2e, 0xeb, 0x64, 0x46, 0x6d, 0x91, 0xe8, - 0xe5, 0xbd, 0x42, 0x53, 0xd1, 0x10, 0xef, 0xe7, 0xb4, 0xc4, 0xc4, 0xa9, 0xff, 0xa2, 0xc0, 0x72, - 0x82, 0x27, 0xfa, 0x10, 0x96, 0x04, 0x87, 0xe0, 0xc4, 0x15, 0x66, 0xe0, 0xc5, 0x1c, 0x31, 0x36, - 0xf8, 0xdf, 0x83, 0x13, 0x17, 0x53, 0xeb, 0x25, 0x1a, 0xe8, 0x2a, 0xd4, 0x86, 0x4e, 0xdf, 0x18, - 0x52, 0xab, 0xe5, 0xe1, 0x23, 0x6e, 0x63, 0x97, 0x42, 0xa0, 0x86, 0x8f, 0xd4, 0xbb, 0x50, 0x8d, - 0x31, 0x40, 0x08, 0xea, 0x1a, 0x1b, 0x6a, 0x07, 0x1f, 0x19, 0xe3, 0x61, 0xd0, 0x98, 0x43, 0x75, - 0x80, 0x43, 0xbb, 0x4f, 0xee, 0x34, 0x1b, 0x9b, 0x0d, 0x05, 0xd5, 0xa0, 0x72, 0x5f, 0xb0, 0x68, - 0x14, 0xd4, 0x9f, 0x16, 0xe1, 0x2c, 0x55, 0xbc, 0xae, 0x63, 0xf2, 0x93, 0xc0, 0x2f, 0xc0, 0xab, - 0x50, 0xeb, 0xd3, 0xbd, 0xd4, 0x5d, 0xc3, 0xc3, 0x76, 0xc0, 0xaf, 0x81, 0x25, 0x06, 0xec, 0x52, - 0x18, 0xd2, 0xa0, 0xe1, 0xf3, 0x19, 0xe9, 0x7d, 0x76, 0x72, 0xb8, 0x72, 0x4b, 0xb3, 0xce, 0x39, - 0x68, 0xda, 0xb2, 0x9f, 0x3a, 0x79, 0x8b, 0xfe, 0x89, 0xdf, 0x0f, 0x86, 0xc2, 0xda, 0x6d, 0xa4, - 0x58, 0x25, 0x85, 0xdd, 0xe8, 0x31, 0x82, 0x5d, 0x3b, 0xf0, 0x4e, 0x34, 0x41, 0x8e, 0xde, 0x85, - 0xb2, 0xf3, 0x18, 0x7b, 0xc7, 0xd8, 0x60, 0x56, 0xa6, 0x7a, 0xeb, 0x6a, 0x8a, 0xd5, 0xb6, 0x30, - 0xf4, 0x1a, 0xf6, 0x9d, 0xb1, 0xd7, 0xc7, 0xbe, 0x16, 0x12, 0xa1, 0x36, 0x54, 0x3c, 0x01, 0xe6, - 0x56, 0x68, 0x26, 0x0e, 0x11, 0x55, 0x6b, 0x0b, 0x96, 0xe2, 0xc2, 0xa1, 0x06, 0x14, 0x1f, 0xe1, - 0x13, 0xbe, 0x98, 0xe4, 0x67, 0x64, 0x9f, 0xd8, 0x0e, 0xb3, 0xc6, 0x56, 0xe1, 0x8e, 0xa2, 0x7a, - 0x80, 0xa2, 0x99, 0x3e, 0xc0, 0x81, 0x61, 0x1a, 0x81, 0x81, 0x10, 0x94, 0xa8, 0x6b, 0xc4, 0x58, - 0xd0, 0xdf, 0x84, 0xeb, 0x98, 0x9b, 0xea, 0x8a, 0x46, 0x7e, 0xa2, 0x0b, 0x50, 0x09, 0x2d, 0x11, - 0xf7, 0x8f, 0x22, 0x00, 0xf1, 0x53, 0x8c, 0x20, 0xc0, 0x23, 0x37, 0xa0, 0x0b, 0x53, 0xd3, 0x44, - 0x53, 0xfd, 0xa3, 0x79, 0x68, 0xa4, 0x74, 0x61, 0x0b, 0xca, 0x23, 0x3e, 0x3c, 0xb7, 0x81, 0x97, - 0x24, 0x67, 0x25, 0x25, 0xa4, 0x16, 0xe2, 0x13, 0x5f, 0x80, 0xe8, 0x5a, 0xcc, 0x9b, 0x0b, 0xdb, - 0x4c, 0xc9, 0x07, 0xba, 0x69, 0x79, 0xb8, 0x1f, 0x38, 0xde, 0x09, 0x17, 0x74, 0x69, 0xe8, 0x0c, - 0x76, 0x04, 0x0c, 0xdd, 0x06, 0x30, 0x6d, 0x5f, 0xa7, 0x3a, 0x3c, 0xe0, 0xfb, 0x28, 0x5d, 0x80, - 0xa1, 0xd3, 0xa6, 0x55, 0x4c, 0xdb, 0xe7, 0x22, 0xbf, 0x05, 0x35, 0xe2, 0x01, 0xe9, 0x23, 0x76, - 0x37, 0x32, 0x83, 0x54, 0xbd, 0xb5, 0x2e, 0xcb, 0x1d, 0xfa, 0x63, 0xda, 0x92, 0x1b, 0x35, 0x7c, - 0x74, 0x17, 0x16, 0xa8, 0x13, 0xe2, 0x37, 0x17, 0x28, 0xd9, 0x4b, 0xd9, 0xd3, 0xe5, 0xda, 0x77, - 0x9f, 0xa2, 0x32, 0xe5, 0xe3, 0x74, 0x68, 0x1f, 0xaa, 0x86, 0x6d, 0x3b, 0x81, 0xc1, 0x2c, 0xfe, - 0x22, 0x65, 0xf3, 0x4a, 0x2e, 0x9b, 0x76, 0x84, 0xcf, 0x78, 0xc5, 0x39, 0xa0, 0xaf, 0xc2, 0x3c, - 0xbd, 0x12, 0xb8, 0x0d, 0xbf, 0x32, 0xf5, 0x50, 0x68, 0x0c, 0x1f, 0xbd, 0x0d, 0x8b, 0x4f, 0x2c, - 0xdb, 0x74, 0x9e, 0xf8, 0xdc, 0x9e, 0x4a, 0x2a, 0xfc, 0x4d, 0xd6, 0x95, 0x22, 0x16, 0x34, 0xad, - 0x37, 0xa1, 0x1a, 0x9b, 0xdf, 0x69, 0xf4, 0xb7, 0xf5, 0x0e, 0x34, 0x92, 0x73, 0x3a, 0x95, 0xfe, - 0x8f, 0x61, 0x55, 0x1b, 0xdb, 0x91, 0x68, 0xe2, 0xb1, 0x71, 0x1b, 0x16, 0xb8, 0x36, 0x30, 0x65, - 0xbc, 0x90, 0xb7, 0xac, 0x1a, 0xc7, 0x8d, 0xbf, 0x1b, 0x8e, 0x0d, 0xdb, 0x1c, 0x62, 0x8f, 0x8f, - 0x28, 0xde, 0x0d, 0x1f, 0x30, 0xa8, 0xfa, 0x36, 0x9c, 0x4d, 0x0c, 0xcb, 0x9f, 0x2d, 0x5f, 0x81, - 0xba, 0xeb, 0x98, 0xba, 0xcf, 0xc0, 0xc2, 0x97, 0xac, 0x10, 0xdd, 0x11, 0xb8, 0x1d, 0x93, 0x90, - 0xf7, 0x02, 0xc7, 0x4d, 0x8b, 0x3d, 0x1b, 0x79, 0x13, 0xd6, 0x92, 0xe4, 0x6c, 0x78, 0xf5, 0x5d, - 0x58, 0xd7, 0xf0, 0xc8, 0x79, 0x8c, 0x9f, 0x95, 0x75, 0x0b, 0x9a, 0x69, 0x06, 0x9c, 0xf9, 0xb7, - 0x61, 0x3d, 0x82, 0xf6, 0x02, 0x23, 0x18, 0xfb, 0xa7, 0x62, 0xce, 0xdf, 0x74, 0x0f, 0x1d, 0x9f, - 0x6d, 0x64, 0x59, 0x13, 0x4d, 0x75, 0x1d, 0xe6, 0xbb, 0x8e, 0xd9, 0xe9, 0xa2, 0x3a, 0x14, 0x2c, - 0x97, 0x13, 0x17, 0x2c, 0x57, 0xed, 0xc7, 0xc7, 0xdc, 0x63, 0x5e, 0x27, 0x1b, 0x3a, 0x89, 0x8a, - 0xee, 0x40, 0xdd, 0x30, 0x4d, 0x8b, 0x28, 0x92, 0x31, 0xd4, 0x2d, 0x57, 0x38, 0xcd, 0x2b, 0x89, - 0xad, 0xef, 0x74, 0xb5, 0x5a, 0x84, 0xd8, 0x71, 0x7d, 0xf5, 0x1e, 0x54, 0x22, 0x07, 0xfd, 0xf5, - 0xe8, 0x7d, 0x56, 0x98, 0xee, 0xcb, 0x85, 0x8f, 0xb7, 0xbd, 0xd4, 0x25, 0xc9, 0xc5, 0x7c, 0x1d, - 0x20, 0x34, 0xaa, 0xc2, 0x3d, 0x3c, 0x9b, 0xc9, 0x52, 0x8b, 0x21, 0xaa, 0xff, 0x55, 0x8a, 0x1b, - 0xd9, 0xd8, 0x94, 0xcd, 0x70, 0xca, 0xa6, 0x64, 0x74, 0x0b, 0xa7, 0x34, 0xba, 0xaf, 0xc2, 0xbc, - 0x1f, 0x18, 0x01, 0xe6, 0xfe, 0xf8, 0xf9, 0x6c, 0x42, 0x32, 0x30, 0xd6, 0x18, 0x26, 0xba, 0x08, - 0xd0, 0xf7, 0xb0, 0x11, 0x60, 0x53, 0x37, 0xd8, 0xad, 0x50, 0xd4, 0x2a, 0x1c, 0xd2, 0x0e, 0x88, - 0x15, 0x11, 0x2f, 0x88, 0x8c, 0x8b, 0x70, 0xc2, 0x36, 0x46, 0x6f, 0x89, 0xd0, 0x7a, 0x2d, 0x4c, - 0xb5, 0x5e, 0x9c, 0x94, 0x5b, 0xaf, 0xc8, 0x12, 0x2f, 0xe6, 0x59, 0x62, 0x46, 0x34, 0x8b, 0x25, - 0x2e, 0xe7, 0x59, 0x62, 0xce, 0x26, 0xdf, 0x12, 0x67, 0x18, 0x92, 0x4a, 0x96, 0x21, 0xf9, 0x22, - 0x4d, 0xe7, 0x2f, 0x14, 0x68, 0xa6, 0xcf, 0x33, 0xb7, 0x63, 0xb7, 0x61, 0xc1, 0xa7, 0x90, 0x7c, - 0xfb, 0xc9, 0xa9, 0x38, 0x2e, 0xba, 0x07, 0x25, 0xcb, 0x3e, 0x72, 0xf8, 0xc1, 0xdb, 0xc8, 0xa5, - 0xe1, 0x23, 0x6d, 0x74, 0xec, 0x23, 0x87, 0xad, 0x20, 0xa5, 0x6d, 0x7d, 0x15, 0x2a, 0x21, 0xe8, - 0x54, 0xf3, 0xe9, 0xc0, 0x6a, 0x42, 0x6f, 0xd9, 0xe3, 0x2e, 0x54, 0x74, 0x65, 0x56, 0x45, 0x57, - 0x7f, 0xab, 0xc4, 0x0f, 0xdf, 0x7b, 0xd6, 0x30, 0xc0, 0x5e, 0xea, 0xf0, 0xbd, 0x21, 0xf8, 0xb2, - 0x93, 0x77, 0x39, 0x87, 0x2f, 0x7b, 0x3b, 0xf1, 0x53, 0xf4, 0x11, 0xd4, 0xa9, 0xda, 0xe9, 0x3e, - 0x1e, 0x52, 0xff, 0x85, 0xfb, 0xb0, 0x9b, 0xd9, 0x0c, 0xd8, 0xe8, 0x4c, 0x6d, 0x7b, 0x9c, 0x82, - 0xad, 0x57, 0x6d, 0x18, 0x87, 0xb5, 0xee, 0x02, 0x4a, 0x23, 0x9d, 0x6a, 0x05, 0x1f, 0x10, 0x1b, - 0xe6, 0x07, 0x99, 0xb7, 0xe9, 0x11, 0x15, 0x23, 0x5f, 0x1b, 0x98, 0xa8, 0x1a, 0xc7, 0x55, 0xff, - 0xa3, 0x08, 0x10, 0x75, 0x7e, 0xc9, 0x8d, 0xd7, 0x56, 0x68, 0x44, 0x98, 0x17, 0xa8, 0x66, 0xb3, - 0xcc, 0x34, 0x1f, 0x1d, 0xd9, 0x7c, 0x30, 0x7f, 0xf0, 0xc5, 0x09, 0x0c, 0x4e, 0x6d, 0x38, 0x16, - 0xbf, 0x6c, 0x86, 0xe3, 0x3d, 0x58, 0x4b, 0xaa, 0x09, 0xb7, 0x1a, 0x2f, 0xc3, 0xbc, 0x15, 0xe0, - 0x11, 0x8b, 0x87, 0x26, 0x82, 0x08, 0x31, 0x74, 0x86, 0xa4, 0xbe, 0x03, 0x6b, 0xf2, 0x5e, 0x9d, - 0xce, 0x9d, 0x50, 0xef, 0x27, 0xfd, 0x91, 0xc8, 0x7c, 0x71, 0xfd, 0xc8, 0x0c, 0xc7, 0x24, 0x69, - 0x18, 0xa6, 0xfa, 0xaf, 0x0a, 0x9c, 0x4d, 0x74, 0x4d, 0x38, 0xf8, 0xdf, 0x4d, 0x1d, 0x60, 0x66, - 0xef, 0x6e, 0xe7, 0x8c, 0xf2, 0x39, 0x9e, 0xe2, 0x6f, 0x42, 0x4b, 0xde, 0x1e, 0x69, 0x69, 0xdf, - 0x4c, 0x1c, 0xe5, 0x2b, 0x53, 0x85, 0x0e, 0xcf, 0x73, 0x17, 0xce, 0x67, 0x32, 0x4e, 0xaf, 0x79, - 0x71, 0xc6, 0x35, 0xff, 0xbf, 0x42, 0xdc, 0x66, 0xb7, 0x83, 0xc0, 0xb3, 0x1e, 0x8e, 0x03, 0xfc, - 0xd9, 0x3a, 0x3a, 0x3b, 0xe1, 0xc9, 0x66, 0x76, 0xf6, 0xe5, 0x6c, 0xca, 0x68, 0xf4, 0xcc, 0x33, - 0xde, 0x93, 0xcf, 0x78, 0x89, 0xb2, 0x7a, 0x75, 0x2a, 0xab, 0xdc, 0xd3, 0xfe, 0x45, 0x1e, 0xe2, - 0x7f, 0x53, 0x60, 0x39, 0xb1, 0x2b, 0xe8, 0x2e, 0x80, 0x11, 0x8a, 0xce, 0xf5, 0xe3, 0xf2, 0xb4, - 0x29, 0x6a, 0x31, 0x1a, 0x72, 0x27, 0x32, 0x1f, 0x2e, 0xe3, 0x4e, 0xcc, 0xf0, 0xe1, 0x42, 0x17, - 0xee, 0xad, 0xe8, 0x01, 0xca, 0x02, 0x97, 0x6a, 0xee, 0x03, 0x94, 0xd1, 0x0a, 0x12, 0xf5, 0x47, - 0x05, 0x58, 0xcd, 0xe2, 0x8e, 0x5e, 0x80, 0x62, 0xdf, 0x1d, 0xf3, 0x99, 0x48, 0xc9, 0x93, 0x6d, - 0x77, 0x7c, 0xe8, 0x1b, 0x03, 0xac, 0x11, 0x04, 0xb4, 0x09, 0x0b, 0x23, 0x3c, 0x72, 0xbc, 0x13, - 0x2e, 0xb7, 0x14, 0x02, 0x78, 0x40, 0x7b, 0x18, 0x36, 0x47, 0x43, 0xb7, 0x22, 0x57, 0x97, 0xc9, - 0xdb, 0x94, 0x3c, 0x7a, 0xd6, 0xc5, 0x48, 0x42, 0xff, 0xf6, 0x16, 0x2c, 0xba, 0x9e, 0xd3, 0xc7, - 0xbe, 0xcf, 0x23, 0x14, 0xcd, 0x44, 0x36, 0x87, 0x74, 0x71, 0x1a, 0x8e, 0x88, 0xb6, 0x00, 0xc2, - 0x34, 0x83, 0xb8, 0x99, 0x5a, 0xd2, 0x3c, 0x44, 0x2f, 0x5b, 0x92, 0x18, 0x36, 0x79, 0x25, 0x66, - 0x2f, 0x9c, 0xfa, 0xcf, 0x0a, 0x2c, 0xc5, 0x65, 0x44, 0x17, 0xa0, 0x42, 0x18, 0xfa, 0x81, 0x31, - 0x72, 0x79, 0x0c, 0x3c, 0x02, 0xa0, 0x3d, 0x58, 0x31, 0x59, 0xb0, 0x50, 0xb7, 0xec, 0x00, 0x7b, - 0x47, 0x46, 0x5f, 0x38, 0x3d, 0x57, 0x32, 0xa6, 0xdd, 0x11, 0x38, 0x6c, 0x2e, 0x0d, 0x4e, 0x1b, - 0x82, 0x51, 0x1b, 0x20, 0xe4, 0x23, 0x0e, 0xe5, 0x0c, 0x8c, 0x62, 0x44, 0xea, 0xef, 0x14, 0x38, - 0x9b, 0x89, 0x95, 0x19, 0xfa, 0xba, 0x05, 0x65, 0xef, 0xa9, 0xfe, 0xf0, 0x24, 0xc0, 0x7e, 0xd6, - 0x06, 0x1f, 0xc6, 0xe2, 0xdb, 0x8b, 0xde, 0xd3, 0x7b, 0x04, 0x0f, 0xdd, 0x86, 0x8a, 0xf7, 0x54, - 0xc7, 0x9e, 0xe7, 0x78, 0x42, 0x27, 0x27, 0x12, 0x95, 0xbd, 0xa7, 0xbb, 0x14, 0x91, 0x8c, 0x14, - 0x88, 0x91, 0x4a, 0x53, 0x46, 0x0a, 0xa2, 0x91, 0x82, 0x70, 0xa4, 0xf9, 0x29, 0x23, 0x05, 0x7c, - 0x24, 0xf5, 0x63, 0x58, 0x8a, 0xab, 0xcc, 0x94, 0x2d, 0x7c, 0x0b, 0x6a, 0x5c, 0xa5, 0xf4, 0xbe, - 0x33, 0xb6, 0x83, 0x69, 0xcb, 0xb0, 0xc4, 0xb1, 0xb7, 0x09, 0xb2, 0xfa, 0xd7, 0x0a, 0x54, 0x3a, - 0x23, 0x63, 0x80, 0x7b, 0x2e, 0xee, 0x13, 0x9b, 0x62, 0x91, 0x06, 0x5f, 0x62, 0xd6, 0x40, 0x1f, - 0xc8, 0xf6, 0x91, 0xdd, 0x88, 0x2f, 0x48, 0x59, 0x04, 0xc1, 0x61, 0x8a, 0x51, 0xfc, 0xb4, 0x96, - 0xed, 0x16, 0x94, 0xbf, 0x8e, 0x4f, 0x98, 0xef, 0x3f, 0x23, 0x9d, 0xfa, 0xe3, 0x12, 0xac, 0x4f, - 0x88, 0xd4, 0x52, 0xc7, 0xd1, 0x1d, 0xeb, 0x2e, 0xf6, 0x2c, 0xc7, 0x14, 0x4b, 0xdb, 0x77, 0xc7, - 0x5d, 0x0a, 0x40, 0xe7, 0x81, 0x34, 0xf4, 0xef, 0x8f, 0x1d, 0x7e, 0x37, 0x15, 0xb5, 0x72, 0xdf, - 0x1d, 0x7f, 0x83, 0xb4, 0x05, 0xad, 0x7f, 0x6c, 0x78, 0x98, 0xa9, 0x11, 0xa3, 0xed, 0x51, 0x00, - 0x7a, 0x15, 0xce, 0x32, 0x83, 0xa2, 0x0f, 0xad, 0x91, 0x45, 0x8e, 0x57, 0x4c, 0x77, 0x8a, 0x1a, - 0x62, 0x9d, 0xf7, 0x49, 0x5f, 0xc7, 0x66, 0xda, 0xa2, 0x42, 0xcd, 0x71, 0x46, 0xba, 0xdf, 0x77, - 0x3c, 0xac, 0x1b, 0xe6, 0xc7, 0x54, 0x63, 0x8a, 0x5a, 0xd5, 0x71, 0x46, 0x3d, 0x02, 0x6b, 0x9b, - 0x1f, 0xa3, 0xe7, 0xa0, 0xda, 0x77, 0xc7, 0x3e, 0x0e, 0x74, 0xf2, 0x87, 0xbe, 0xa7, 0x2b, 0x1a, - 0x30, 0xd0, 0xb6, 0x3b, 0xf6, 0x63, 0x08, 0x23, 0xe2, 0xad, 0x2d, 0xc6, 0x11, 0x1e, 0xe0, 0x11, - 0x4d, 0x48, 0x1d, 0x8f, 0x07, 0xd8, 0x35, 0x06, 0x98, 0x89, 0x26, 0x1e, 0xc5, 0x52, 0x42, 0xea, - 0x03, 0x8e, 0x42, 0x05, 0xd4, 0xea, 0xc7, 0xf1, 0xa6, 0x8f, 0x3e, 0x84, 0xc5, 0xb1, 0x6d, 0x1d, - 0x59, 0xd8, 0x6c, 0x56, 0x28, 0xed, 0xcd, 0x19, 0xe2, 0xe2, 0x1b, 0x87, 0x8c, 0x84, 0x87, 0xe9, - 0x39, 0x03, 0xb4, 0x05, 0x2d, 0xbe, 0x50, 0xfe, 0x13, 0xc3, 0x4d, 0xae, 0x16, 0xd0, 0x25, 0x58, - 0x63, 0x18, 0xbd, 0x27, 0x86, 0x1b, 0x5f, 0xb1, 0xd6, 0x16, 0x2c, 0xc5, 0x99, 0x9e, 0x4a, 0x97, - 0xee, 0x41, 0x4d, 0x9a, 0x24, 0xd9, 0x6d, 0xba, 0x28, 0xbe, 0xf5, 0x03, 0x71, 0x00, 0xca, 0x04, - 0xd0, 0xb3, 0x7e, 0x40, 0xd3, 0x88, 0x54, 0x32, 0xca, 0xa7, 0xa4, 0xb1, 0x86, 0x6a, 0x40, 0x4d, - 0xca, 0xdc, 0x11, 0x13, 0x45, 0x53, 0x74, 0xdc, 0x44, 0x91, 0xdf, 0x04, 0xe6, 0x39, 0x43, 0x21, - 0x01, 0xfd, 0x4d, 0x60, 0x34, 0x47, 0xc4, 0x22, 0xde, 0xf4, 0x37, 0x1d, 0x02, 0x3f, 0xe6, 0x09, - 0xf1, 0x8a, 0xc6, 0x1a, 0xea, 0x9f, 0x2b, 0x00, 0xdb, 0x86, 0x6b, 0x3c, 0xb4, 0x86, 0x56, 0x70, - 0x82, 0xae, 0x41, 0xc3, 0x30, 0x4d, 0xbd, 0x2f, 0x20, 0x16, 0x16, 0x15, 0x0a, 0xcb, 0x86, 0x69, - 0x6e, 0xc7, 0xc0, 0xe8, 0x06, 0xac, 0x98, 0x9e, 0xe3, 0xca, 0xb8, 0xac, 0x64, 0xa1, 0x41, 0x3a, - 0x24, 0xe4, 0x3b, 0xd0, 0x24, 0x7c, 0x8d, 0xd1, 0x43, 0x0b, 0xdb, 0x81, 0x4c, 0xc3, 0x6a, 0x19, - 0xd6, 0x0c, 0xd3, 0x6c, 0xb3, 0xee, 0x38, 0xa5, 0xfa, 0x4f, 0x0b, 0x70, 0x51, 0xde, 0xf1, 0x64, - 0x32, 0x75, 0x0b, 0x96, 0x12, 0xf2, 0xa6, 0xd2, 0x90, 0xd1, 0x0c, 0x35, 0x09, 0x37, 0x91, 0x2e, - 0x2c, 0xa4, 0xd2, 0x85, 0x99, 0x89, 0xda, 0xe2, 0x67, 0x94, 0xa8, 0x2d, 0x7d, 0xca, 0x44, 0xed, - 0xfc, 0xb3, 0x26, 0x6a, 0x97, 0x66, 0x4e, 0xd4, 0xbe, 0x40, 0x1f, 0x95, 0x62, 0x44, 0x7a, 0x3d, - 0x32, 0x9b, 0x50, 0x0b, 0xb9, 0xdb, 0xa2, 0x6c, 0x26, 0x91, 0xd0, 0x5d, 0x3c, 0x4d, 0x42, 0xb7, - 0x3c, 0x31, 0xa1, 0x7b, 0x19, 0x96, 0x6c, 0x47, 0xb7, 0xf1, 0x13, 0x9d, 0x6c, 0x8b, 0xdf, 0xac, - 0xb2, 0x3d, 0xb2, 0x9d, 0x3d, 0xfc, 0xa4, 0x4b, 0x20, 0xe8, 0x0a, 0x2c, 0x8d, 0x0c, 0xff, 0x11, - 0x36, 0x69, 0x66, 0xd5, 0x6f, 0xd6, 0xa8, 0x3e, 0x55, 0x19, 0xac, 0x4b, 0x40, 0xe8, 0x79, 0x08, - 0xe5, 0xe0, 0x48, 0x75, 0x8a, 0x54, 0x13, 0x50, 0x86, 0x16, 0x4b, 0x0e, 0x2f, 0x3f, 0x63, 0x72, - 0xb8, 0x71, 0x9a, 0xe4, 0xf0, 0x2b, 0xd0, 0x10, 0xbf, 0x45, 0x76, 0x98, 0x05, 0xfb, 0x68, 0x62, - 0x78, 0x59, 0xf4, 0x89, 0x0c, 0xf0, 0xa4, 0x5c, 0x32, 0xe4, 0xe6, 0x92, 0x7f, 0xa6, 0x70, 0x17, - 0x37, 0x3c, 0x40, 0x3c, 0x89, 0x25, 0xe5, 0x1f, 0x95, 0x67, 0xc9, 0x3f, 0xa2, 0x83, 0x89, 0x19, - 0xda, 0x6b, 0x93, 0x39, 0x4d, 0xcb, 0xd1, 0xaa, 0x3f, 0x52, 0xe0, 0x22, 0xf7, 0x3f, 0x27, 0xd4, - 0x4f, 0x64, 0xa8, 0xa5, 0x32, 0x41, 0x2d, 0xfb, 0x1e, 0x36, 0xb1, 0x1d, 0x58, 0xc6, 0x50, 0xf7, - 0x5d, 0xdc, 0x17, 0x59, 0x99, 0x08, 0x4c, 0x3d, 0x93, 0x2b, 0xb0, 0xc4, 0x0a, 0x8e, 0xb8, 0x9b, - 0xcd, 0xea, 0x8a, 0xaa, 0xb4, 0xe6, 0x88, 0x81, 0x54, 0x07, 0xd6, 0x27, 0xa4, 0xb3, 0x32, 0x97, - 0x41, 0x49, 0x2f, 0x43, 0xee, 0x9c, 0xd2, 0xcb, 0xf0, 0x63, 0x05, 0x9e, 0xe3, 0x24, 0x13, 0x6d, - 0xdf, 0x17, 0xb1, 0x10, 0x7f, 0xab, 0x84, 0xcf, 0x83, 0xa4, 0x4a, 0x6d, 0xa7, 0x55, 0xea, 0xf9, - 0x8c, 0x15, 0xc8, 0x57, 0xaa, 0x8f, 0x26, 0x2a, 0xd5, 0x8d, 0x3c, 0x5e, 0x53, 0xd7, 0xf3, 0x3f, - 0x15, 0x38, 0x37, 0x51, 0x80, 0x84, 0xbf, 0xa5, 0x24, 0xfd, 0x2d, 0xee, 0xab, 0x45, 0x2e, 0x30, - 0xf3, 0xd5, 0xa8, 0x97, 0xcb, 0x9d, 0x22, 0x7d, 0x64, 0x3c, 0xb5, 0x46, 0xe3, 0x11, 0x77, 0xd6, - 0x08, 0xbb, 0x07, 0x0c, 0xf2, 0x2c, 0xde, 0xda, 0x26, 0xac, 0x32, 0x43, 0x4a, 0x1d, 0x86, 0x88, - 0x82, 0x39, 0x6d, 0x2b, 0xac, 0x8f, 0xf8, 0x0e, 0x9c, 0x40, 0x6d, 0xc3, 0x4a, 0x38, 0xad, 0xdc, - 0x74, 0x7e, 0x2c, 0x3d, 0x5f, 0x90, 0xd3, 0xf3, 0x36, 0x2c, 0xec, 0xe0, 0xc7, 0x56, 0x1f, 0x7f, - 0x26, 0x75, 0x7a, 0x97, 0xa1, 0xea, 0x62, 0x6f, 0x64, 0xf9, 0x7e, 0x78, 0x6b, 0x56, 0xb4, 0x38, - 0x48, 0xfd, 0xd9, 0x02, 0x2c, 0x27, 0x55, 0xe8, 0xcd, 0x54, 0x35, 0xc0, 0xc5, 0xcc, 0x57, 0x6b, - 0x46, 0xb8, 0xe6, 0x86, 0x78, 0x5e, 0x14, 0xd2, 0xa9, 0xb2, 0xf0, 0x09, 0x21, 0x5e, 0x1d, 0x4d, - 0x58, 0xec, 0x3b, 0xa3, 0x91, 0x61, 0x9b, 0xa2, 0x98, 0x92, 0x37, 0xc9, 0x9a, 0x19, 0xde, 0x80, - 0x05, 0x6a, 0x2a, 0x1a, 0xfd, 0x4d, 0x76, 0x98, 0xbc, 0x18, 0x2d, 0x9b, 0xd6, 0x13, 0xd0, 0x4d, - 0xa8, 0x68, 0xc0, 0x41, 0x3b, 0x96, 0x87, 0x5e, 0x82, 0x12, 0xb6, 0x1f, 0x8b, 0x08, 0xae, 0x14, - 0x30, 0x10, 0x4f, 0x0a, 0x8d, 0x62, 0xa0, 0x6b, 0xb0, 0x30, 0x22, 0x5a, 0x23, 0x72, 0x4e, 0x2b, - 0xa9, 0xa2, 0x43, 0x8d, 0x23, 0xa0, 0x97, 0x61, 0xd1, 0xa4, 0xfb, 0x21, 0x7c, 0x68, 0x24, 0x55, - 0x26, 0xd0, 0x2e, 0x4d, 0xa0, 0xa0, 0x77, 0xc3, 0x68, 0x55, 0x25, 0x1d, 0x46, 0x4e, 0x2c, 0x73, - 0x66, 0xa0, 0x6a, 0x4f, 0x7e, 0x88, 0x41, 0x3a, 0xe6, 0x95, 0xe4, 0x92, 0x1f, 0x91, 0x3e, 0x07, - 0xe5, 0xa1, 0x33, 0x60, 0xca, 0x51, 0x65, 0x95, 0xb8, 0x43, 0x67, 0x40, 0x75, 0x63, 0x15, 0xe6, - 0xfd, 0xc0, 0xb4, 0x6c, 0xea, 0x8a, 0x94, 0x35, 0xd6, 0x20, 0x67, 0x90, 0xfe, 0xd0, 0x1d, 0xbb, - 0x8f, 0x9b, 0x35, 0xda, 0x55, 0xa1, 0x90, 0x7d, 0xbb, 0x4f, 0x9f, 0x64, 0x41, 0x70, 0xd2, 0xac, - 0x53, 0x38, 0xf9, 0x19, 0x05, 0x8d, 0x96, 0x27, 0x04, 0x8d, 0x12, 0x02, 0x67, 0x04, 0x8d, 0x1a, - 0x13, 0x83, 0x46, 0x49, 0xda, 0x2f, 0x43, 0xd1, 0xc2, 0xdf, 0x2b, 0xb0, 0xb6, 0x4d, 0x33, 0x0f, - 0x31, 0x13, 0x76, 0x9a, 0x44, 0xfa, 0x6b, 0x61, 0x75, 0x43, 0x46, 0x8a, 0x3a, 0x39, 0x63, 0x51, - 0xdc, 0xb0, 0x0d, 0x75, 0xc1, 0x96, 0x13, 0x17, 0x67, 0x28, 0x8d, 0xa8, 0xf9, 0xf1, 0xa6, 0xfa, - 0x16, 0xac, 0xa7, 0x24, 0xe7, 0xf1, 0xdf, 0x64, 0x99, 0x2c, 0x13, 0x3c, 0x5e, 0x26, 0xab, 0x6e, - 0xc1, 0xd9, 0x5e, 0x60, 0x78, 0x41, 0x6a, 0xda, 0x33, 0xd0, 0xd2, 0xa2, 0x07, 0x99, 0x96, 0xd7, - 0x25, 0xf4, 0x60, 0xb5, 0x17, 0x38, 0xee, 0x33, 0x30, 0x25, 0xf6, 0x83, 0xcc, 0xdc, 0x19, 0x8b, - 0xeb, 0x40, 0x34, 0xd5, 0x75, 0x56, 0xa2, 0x91, 0x1e, 0xed, 0x6b, 0xb0, 0xc6, 0x2a, 0x24, 0x9e, - 0x65, 0x12, 0xe7, 0x44, 0x7d, 0x46, 0x9a, 0xef, 0xfb, 0x70, 0x46, 0x0a, 0xe6, 0xf1, 0xec, 0xe5, - 0x4d, 0x39, 0x7b, 0x39, 0x39, 0xf8, 0x17, 0x26, 0x2f, 0x7f, 0x52, 0x88, 0xd9, 0xe3, 0x09, 0x29, - 0x8c, 0xd7, 0xe5, 0xdc, 0xe5, 0x73, 0x93, 0xb9, 0x4a, 0xa9, 0xcb, 0xb4, 0x76, 0x16, 0x33, 0xb4, - 0xf3, 0x30, 0x95, 0x1f, 0x29, 0xa5, 0xf3, 0xc1, 0x09, 0x09, 0x3f, 0x97, 0xcc, 0xc8, 0x7d, 0x96, - 0xdf, 0x0c, 0x87, 0x0e, 0x93, 0x22, 0xaf, 0x25, 0x92, 0x22, 0xe7, 0x73, 0x24, 0x0d, 0xd3, 0x21, - 0x3f, 0x29, 0x41, 0x25, 0xec, 0x4b, 0xad, 0x70, 0x7a, 0xa9, 0x0a, 0x19, 0x4b, 0x15, 0xbf, 0x27, - 0x8b, 0xcf, 0x78, 0x4f, 0x96, 0x66, 0xb8, 0x27, 0xcf, 0x43, 0x85, 0xfe, 0xa0, 0x65, 0xa2, 0xec, - 0xde, 0x2b, 0x53, 0x80, 0x86, 0x8f, 0x22, 0x15, 0x5b, 0x98, 0x51, 0xc5, 0x12, 0xb9, 0xd4, 0xc5, - 0x64, 0x2e, 0xf5, 0xcd, 0xf0, 0x0e, 0x2b, 0xa7, 0x83, 0xbb, 0x21, 0xc7, 0xcc, 0xdb, 0x2b, 0x11, - 0x46, 0xac, 0xa4, 0xc3, 0x88, 0x11, 0xfd, 0x97, 0x36, 0xb7, 0xb2, 0xcf, 0x12, 0xa4, 0x71, 0x3d, - 0xe3, 0x36, 0xf2, 0x75, 0x29, 0x9e, 0xaf, 0xa4, 0x2b, 0xf5, 0x23, 0xbb, 0x10, 0x0f, 0xe5, 0x1f, - 0xc2, 0x9a, 0xb4, 0x11, 0x51, 0xe1, 0xd5, 0x6c, 0x36, 0x6e, 0x42, 0xd5, 0xd5, 0xaf, 0xe6, 0x63, - 0x96, 0x62, 0x42, 0x89, 0xd1, 0x9b, 0xa9, 0xcc, 0xdb, 0xcc, 0x1a, 0x7a, 0x53, 0x4e, 0xd2, 0x9f, - 0x5a, 0xaf, 0x52, 0x39, 0x7a, 0xea, 0x59, 0x18, 0x1e, 0xef, 0x66, 0x3e, 0x74, 0x85, 0x43, 0xda, - 0xd4, 0x81, 0x3f, 0xb2, 0x6c, 0xcb, 0x3f, 0x66, 0xfd, 0x0b, 0xcc, 0x81, 0x17, 0xa0, 0x36, 0x0d, - 0xde, 0xe1, 0xa7, 0x56, 0xa0, 0xf7, 0x1d, 0x13, 0x53, 0xad, 0x9d, 0xd7, 0xca, 0x04, 0xb0, 0xed, - 0x98, 0x38, 0x3a, 0x4f, 0xe5, 0xd3, 0x9e, 0xa7, 0x4a, 0xe2, 0x3c, 0xad, 0xc1, 0x82, 0x87, 0x0d, - 0xdf, 0xb1, 0xd9, 0x9b, 0x5e, 0xe3, 0x2d, 0xb2, 0x11, 0x23, 0xec, 0xfb, 0x64, 0x0c, 0xee, 0x48, - 0xf1, 0x66, 0xcc, 0xe9, 0x5b, 0xca, 0x71, 0xfa, 0x72, 0x0a, 0x98, 0x12, 0x4e, 0x5f, 0x2d, 0xc7, - 0xe9, 0x9b, 0xa9, 0x7e, 0x29, 0x72, 0x6f, 0xeb, 0xd3, 0xdc, 0xdb, 0xb8, 0x7f, 0xb8, 0x2c, 0xf9, - 0x87, 0x5f, 0xe4, 0x11, 0xfc, 0x77, 0x05, 0xd6, 0x53, 0x47, 0x86, 0x1f, 0xc2, 0xd7, 0x12, 0xb5, - 0x4d, 0xe7, 0x73, 0xd6, 0x29, 0x2c, 0x6d, 0x6a, 0x4b, 0xa5, 0x4d, 0xaf, 0xe4, 0x91, 0x7c, 0xe6, - 0x95, 0x4d, 0xbf, 0x2e, 0xc0, 0x73, 0x87, 0xae, 0x99, 0xf0, 0xba, 0xf8, 0x9b, 0x7b, 0x76, 0x43, - 0xf0, 0xa6, 0x9c, 0x9c, 0x9d, 0x29, 0x4c, 0xc4, 0x5d, 0xed, 0x77, 0x93, 0xf9, 0xd9, 0x19, 0x03, - 0x02, 0x82, 0x0a, 0x7d, 0x2f, 0x2b, 0x7d, 0xfe, 0x96, 0x94, 0x7e, 0xca, 0x9f, 0xe0, 0xef, 0x39, - 0x69, 0xa4, 0xc2, 0xe5, 0xc9, 0x02, 0x70, 0x0f, 0xed, 0x0f, 0x61, 0x79, 0xf7, 0x29, 0xee, 0xf7, - 0x4e, 0xec, 0xfe, 0x29, 0x56, 0xbd, 0x01, 0xc5, 0xfe, 0xc8, 0xe4, 0x31, 0x75, 0xf2, 0x33, 0xee, - 0x74, 0x16, 0x65, 0xa7, 0x53, 0x87, 0x46, 0x34, 0x02, 0xd7, 0xd6, 0x35, 0xa2, 0xad, 0x26, 0x41, - 0x26, 0xcc, 0x97, 0x34, 0xde, 0xe2, 0x70, 0xec, 0xb1, 0x12, 0x65, 0x06, 0xc7, 0x9e, 0x27, 0x1b, - 0xb9, 0xa2, 0x6c, 0xe4, 0xd4, 0x9f, 0x2a, 0x50, 0x25, 0x23, 0x7c, 0x2a, 0xf9, 0xf9, 0x0b, 0xae, - 0x18, 0xbd, 0xe0, 0xc2, 0x87, 0x60, 0x29, 0xfe, 0x10, 0x8c, 0x24, 0x9f, 0xa7, 0xe0, 0xb4, 0xe4, - 0x0b, 0x21, 0x1c, 0x7b, 0x9e, 0x7a, 0x19, 0x96, 0x98, 0x6c, 0x7c, 0xe6, 0x0d, 0x28, 0x8e, 0xbd, - 0xa1, 0xd8, 0xbf, 0xb1, 0x37, 0x54, 0xff, 0x58, 0x81, 0x5a, 0x3b, 0x08, 0x8c, 0xfe, 0xf1, 0x29, - 0x26, 0x10, 0x0a, 0x57, 0x88, 0x0b, 0x97, 0x9e, 0x44, 0x24, 0x6e, 0x69, 0x82, 0xb8, 0xf3, 0x92, - 0xb8, 0x2a, 0xd4, 0x85, 0x2c, 0x13, 0x05, 0xde, 0x03, 0xd4, 0x75, 0xbc, 0xe0, 0x3d, 0xc7, 0x7b, - 0x62, 0x78, 0xe6, 0xe9, 0x1e, 0x79, 0x08, 0x4a, 0xfc, 0x13, 0xce, 0xe2, 0x4b, 0xf3, 0x1a, 0xfd, - 0xad, 0xbe, 0x08, 0x67, 0x24, 0x7e, 0x13, 0x07, 0xde, 0x82, 0x2a, 0xbd, 0xb4, 0xb8, 0xff, 0x7f, - 0x23, 0x9e, 0xb3, 0x9d, 0x72, 0xb9, 0xa9, 0x3b, 0xb0, 0x42, 0xdc, 0x17, 0x0a, 0x0f, 0xed, 0xcb, - 0x66, 0xc2, 0x45, 0x5e, 0x4f, 0xb1, 0x48, 0xb8, 0xc7, 0xbf, 0x55, 0x60, 0x9e, 0xc2, 0x53, 0x2e, - 0xc5, 0x79, 0xa8, 0x78, 0xd8, 0x75, 0xf4, 0xc0, 0x18, 0x84, 0x9f, 0xc7, 0x12, 0xc0, 0x81, 0x31, - 0xa0, 0x79, 0x00, 0xda, 0x69, 0x5a, 0x03, 0xec, 0x07, 0x22, 0xaf, 0x54, 0x25, 0xb0, 0x1d, 0x06, - 0x22, 0x0b, 0x43, 0xd3, 0x6f, 0x25, 0x9a, 0x65, 0xa3, 0xbf, 0xd1, 0x4b, 0xec, 0xeb, 0x96, 0xfc, - 0x64, 0x0a, 0xfd, 0xea, 0xa5, 0x05, 0xe5, 0x44, 0x16, 0x24, 0x6c, 0xa3, 0x6b, 0x50, 0xa2, 0x51, - 0xd5, 0xc5, 0xbc, 0x55, 0xa2, 0x28, 0x44, 0x2b, 0x5c, 0xcb, 0xb6, 0xb1, 0x49, 0xfd, 0x85, 0xb2, - 0xc6, 0x5b, 0xea, 0xbb, 0x80, 0xe2, 0x8b, 0xc7, 0x37, 0xe8, 0x1a, 0x2c, 0xd0, 0xb5, 0x15, 0x3e, - 0xdf, 0x4a, 0x8a, 0xb5, 0xc6, 0x11, 0xd4, 0xef, 0x02, 0x62, 0x63, 0x49, 0x7e, 0xde, 0x69, 0x36, - 0x30, 0xc7, 0xe3, 0xfb, 0x3b, 0x05, 0xce, 0x48, 0xdc, 0xb9, 0x7c, 0x2f, 0xca, 0xec, 0x33, 0xc4, - 0xe3, 0xac, 0xdf, 0x96, 0xae, 0xc1, 0x6b, 0x69, 0x31, 0x7e, 0x4f, 0x57, 0xe0, 0x2f, 0x14, 0x80, - 0xf6, 0x38, 0x38, 0xe6, 0xf1, 0xc5, 0xf8, 0x26, 0x2a, 0x89, 0x4d, 0x6c, 0x41, 0xd9, 0x35, 0x7c, - 0xff, 0x89, 0xe3, 0x89, 0x37, 0x57, 0xd8, 0xa6, 0x51, 0xc1, 0x31, 0xff, 0x4a, 0xb7, 0xa2, 0xd1, - 0xdf, 0xe8, 0x79, 0xa8, 0xb3, 0xef, 0xb6, 0x75, 0xc3, 0x34, 0x3d, 0x51, 0x9e, 0x53, 0xd1, 0x6a, - 0x0c, 0xda, 0x66, 0x40, 0x82, 0x66, 0xd1, 0x18, 0x7b, 0x70, 0xa2, 0x07, 0xce, 0x23, 0x6c, 0xf3, - 0x77, 0x54, 0x4d, 0x40, 0x0f, 0x08, 0x90, 0x25, 0xa9, 0x06, 0x96, 0x1f, 0x78, 0x02, 0x4d, 0xa4, - 0xda, 0x38, 0x94, 0xa2, 0xa9, 0x7f, 0xa3, 0x40, 0xa3, 0x3b, 0x1e, 0x0e, 0xd9, 0xe2, 0x3e, 0xcb, - 0x26, 0x5f, 0xe7, 0x53, 0x29, 0xa4, 0x55, 0x3e, 0x5a, 0x28, 0x3e, 0xc5, 0xcf, 0x24, 0xf4, 0x73, - 0x13, 0x56, 0x62, 0x12, 0x73, 0xc5, 0x91, 0x1c, 0x61, 0x45, 0x76, 0x84, 0xd5, 0x36, 0x20, 0x16, - 0xed, 0x78, 0xe6, 0x59, 0xaa, 0x67, 0xe1, 0x8c, 0xc4, 0x82, 0x5f, 0xc5, 0xd7, 0xa1, 0xc6, 0xcb, - 0x7f, 0xb8, 0x42, 0x9c, 0x83, 0x32, 0x31, 0xa9, 0x7d, 0xcb, 0x14, 0x79, 0xf5, 0x45, 0xd7, 0x31, - 0xb7, 0x2d, 0xd3, 0x53, 0xbf, 0x01, 0x35, 0xfe, 0xc9, 0x23, 0xc7, 0xbd, 0x0b, 0x75, 0x5e, 0x93, - 0xa5, 0x4b, 0xdf, 0x08, 0x9d, 0xcb, 0xa8, 0x41, 0x12, 0x4b, 0x61, 0xc7, 0x9b, 0xea, 0xf7, 0xa0, - 0xc5, 0xbc, 0x05, 0x89, 0xb1, 0x98, 0xe0, 0x5d, 0x10, 0xc5, 0xba, 0x39, 0xfc, 0x65, 0xca, 0x9a, - 0x17, 0x6f, 0xaa, 0x17, 0xe1, 0x7c, 0x26, 0x7f, 0x3e, 0x7b, 0x17, 0x1a, 0x51, 0x07, 0xfb, 0x90, - 0x25, 0x2c, 0x16, 0x50, 0x62, 0xc5, 0x02, 0x6b, 0xa1, 0xa3, 0x5b, 0x10, 0x37, 0x17, 0xf5, 0x65, - 0xa3, 0x07, 0x4a, 0x71, 0xd2, 0x03, 0xa5, 0x24, 0x3d, 0x50, 0xd4, 0x07, 0xe1, 0x1a, 0xf2, 0x67, - 0xe2, 0x5b, 0xf4, 0x21, 0xcb, 0xc6, 0x16, 0x46, 0xed, 0x42, 0xf6, 0xfc, 0x18, 0x92, 0x16, 0xc3, - 0x57, 0xaf, 0x41, 0x4d, 0x36, 0x6f, 0x31, 0x8b, 0xa5, 0xa4, 0x2c, 0x56, 0x3d, 0x61, 0xac, 0x5e, - 0x4d, 0xf8, 0xef, 0x59, 0xeb, 0x9a, 0xf0, 0xde, 0xef, 0x48, 0x66, 0xeb, 0x2b, 0x52, 0x62, 0xf7, - 0xf7, 0x64, 0xb1, 0x56, 0xb9, 0x1d, 0x7f, 0xcf, 0x27, 0xf4, 0x7c, 0xa2, 0xea, 0x55, 0xa8, 0x1e, - 0x4e, 0xfa, 0xf0, 0xbc, 0x24, 0xaa, 0x91, 0xde, 0x80, 0xd5, 0xf7, 0xac, 0x21, 0xf6, 0x4f, 0xfc, - 0x00, 0x8f, 0x3a, 0xd4, 0xbc, 0x1c, 0x59, 0xd8, 0x43, 0x97, 0x00, 0xe8, 0xa3, 0xcb, 0x75, 0xac, - 0xf0, 0x63, 0xdb, 0x18, 0x44, 0xfd, 0x95, 0x02, 0xcb, 0x11, 0xe1, 0x2c, 0x75, 0x61, 0xaf, 0xc3, - 0xfc, 0x91, 0x2f, 0x82, 0x53, 0x89, 0xd0, 0x7b, 0x96, 0x08, 0x5a, 0xe9, 0xc8, 0xef, 0x98, 0xe8, - 0x0d, 0x80, 0xb1, 0x8f, 0x4d, 0x9e, 0xcc, 0x9a, 0x52, 0x1d, 0x57, 0x21, 0xa8, 0x2c, 0x1d, 0x76, - 0x07, 0xaa, 0x96, 0xed, 0x98, 0x98, 0x26, 0x3a, 0xcd, 0x69, 0x15, 0x72, 0xc0, 0x70, 0x0f, 0x7d, - 0x6c, 0xaa, 0x3a, 0xbf, 0xb7, 0xc4, 0x6a, 0x72, 0x55, 0xf8, 0x00, 0x56, 0x98, 0xf9, 0x39, 0x0a, - 0x85, 0xcd, 0xac, 0x3f, 0x4e, 0xac, 0x8a, 0xd6, 0xb0, 0xb8, 0xc7, 0x22, 0x88, 0xd4, 0x2d, 0x38, - 0x9b, 0xa8, 0xa5, 0x9c, 0x3d, 0xaa, 0xfb, 0x61, 0x22, 0x3c, 0x13, 0xa9, 0xea, 0x4d, 0xb9, 0x0e, - 0x3d, 0xaf, 0x74, 0x93, 0x97, 0x44, 0x1f, 0xc2, 0x39, 0x29, 0x76, 0x24, 0xc9, 0x72, 0x27, 0xe1, - 0x84, 0x5d, 0x9e, 0xcc, 0x2f, 0xe1, 0x8d, 0xfd, 0x8f, 0x02, 0xab, 0x59, 0x08, 0xcf, 0x18, 0xb7, - 0xfc, 0xce, 0x84, 0x6f, 0x58, 0x5e, 0x9b, 0x26, 0xd0, 0xe7, 0x12, 0xe7, 0xdd, 0x63, 0x15, 0xf0, - 0xd3, 0xf7, 0xa4, 0x38, 0xdb, 0x9e, 0xfc, 0xb6, 0x10, 0x8b, 0xcd, 0xe7, 0x54, 0xa9, 0x7f, 0x8a, - 0x58, 0xd9, 0x76, 0xa2, 0x48, 0xfd, 0x46, 0x26, 0xe1, 0x94, 0x1a, 0x75, 0x2d, 0xeb, 0x91, 0x7d, - 0x73, 0x1a, 0xa7, 0x2f, 0x6d, 0x18, 0xf5, 0x7f, 0x15, 0xa8, 0xcb, 0x1b, 0x82, 0xde, 0xcd, 0xa8, - 0x50, 0x7f, 0x6e, 0xca, 0x04, 0xa5, 0x02, 0x75, 0x5e, 0x11, 0x5e, 0x98, 0xbd, 0x22, 0xbc, 0x38, - 0x5b, 0x45, 0xf8, 0x3d, 0xa8, 0x3f, 0xf1, 0xac, 0xc0, 0x78, 0x38, 0xc4, 0xfa, 0xd0, 0x38, 0xc1, - 0x1e, 0xb7, 0x6e, 0xb9, 0x66, 0xa8, 0x26, 0x48, 0xee, 0x13, 0x0a, 0xf5, 0x1f, 0x14, 0x28, 0x0b, - 0x31, 0xa6, 0xd6, 0x64, 0xaf, 0x8f, 0x09, 0x9a, 0x4e, 0xeb, 0x40, 0x6d, 0xc3, 0x76, 0x74, 0x1f, - 0x93, 0x1b, 0x76, 0x6a, 0x85, 0xf3, 0x2a, 0xa5, 0xdb, 0x76, 0x3c, 0xbc, 0x67, 0xd8, 0x4e, 0x8f, - 0x11, 0xa1, 0x36, 0x34, 0x18, 0x3f, 0xca, 0x8a, 0x30, 0x9d, 0x6a, 0xd7, 0xeb, 0x94, 0x80, 0x30, - 0x21, 0xcc, 0x7c, 0xf5, 0x2f, 0x8b, 0x50, 0x8d, 0xad, 0xcc, 0x94, 0x09, 0x6c, 0xc3, 0x8a, 0xc8, - 0xc5, 0xfb, 0x38, 0x98, 0xad, 0x38, 0x7b, 0x99, 0x53, 0xf4, 0x70, 0xc0, 0xee, 0x93, 0xbb, 0xb0, - 0x6c, 0x3c, 0x36, 0xac, 0x21, 0x5d, 0xf5, 0x99, 0x2e, 0xa3, 0x7a, 0x88, 0x1f, 0xde, 0x48, 0x6c, - 0xde, 0x33, 0xd5, 0x6c, 0x03, 0xc5, 0x8d, 0x0a, 0xc4, 0x7d, 0x3f, 0x56, 0xcf, 0x91, 0x5b, 0x20, - 0xee, 0xfb, 0xe1, 0x78, 0xb4, 0x7e, 0x94, 0x96, 0xc4, 0xfb, 0xfc, 0x53, 0xd7, 0xc9, 0xe3, 0x11, - 0xdc, 0xf7, 0x28, 0x2a, 0x59, 0xb0, 0x91, 0xf1, 0xb1, 0xe3, 0xe9, 0x71, 0xfa, 0xc5, 0x29, 0x0b, - 0x46, 0x29, 0xba, 0x21, 0x13, 0xf5, 0x1d, 0x38, 0xa7, 0x61, 0xc7, 0xc5, 0x76, 0x78, 0x4e, 0xee, - 0x3b, 0x83, 0x53, 0xdc, 0x74, 0x17, 0xa0, 0x95, 0x45, 0xcf, 0x2c, 0xeb, 0xf5, 0x17, 0xa0, 0x2c, - 0xfe, 0x29, 0x15, 0x5a, 0x84, 0xe2, 0xc1, 0x76, 0xb7, 0x31, 0x47, 0x7e, 0x1c, 0xee, 0x74, 0x1b, - 0x0a, 0x2a, 0x43, 0xa9, 0xb7, 0x7d, 0xd0, 0x6d, 0x14, 0xae, 0x8f, 0xa0, 0x91, 0xfc, 0xbf, 0x4c, - 0x68, 0x1d, 0xce, 0x74, 0xb5, 0xfd, 0x6e, 0xfb, 0xfd, 0xf6, 0x41, 0x67, 0x7f, 0x4f, 0xef, 0x6a, - 0x9d, 0x8f, 0xda, 0x07, 0xbb, 0x8d, 0x39, 0x74, 0x05, 0x2e, 0xc6, 0x3b, 0x3e, 0xd8, 0xef, 0x1d, - 0xe8, 0x07, 0xfb, 0xfa, 0xf6, 0xfe, 0xde, 0x41, 0xbb, 0xb3, 0xb7, 0xab, 0x35, 0x14, 0x74, 0x11, - 0xce, 0xc5, 0x51, 0xee, 0x75, 0x76, 0x3a, 0xda, 0xee, 0x36, 0xf9, 0xdd, 0xbe, 0xdf, 0x28, 0x5c, - 0x7f, 0x1b, 0x6a, 0xd2, 0x3f, 0x18, 0x22, 0x22, 0x75, 0xf7, 0x77, 0x1a, 0x73, 0xa8, 0x06, 0x95, - 0x38, 0x9f, 0x32, 0x94, 0xf6, 0xf6, 0x77, 0x76, 0x1b, 0x05, 0x04, 0xb0, 0x70, 0xd0, 0xd6, 0xde, - 0xdf, 0x3d, 0x68, 0x14, 0xaf, 0x6f, 0x25, 0x3f, 0x94, 0xc1, 0x68, 0x05, 0x6a, 0xbd, 0xf6, 0xde, - 0xce, 0xbd, 0xfd, 0x6f, 0xe9, 0xda, 0x6e, 0x7b, 0xe7, 0xdb, 0x8d, 0x39, 0xb4, 0x0a, 0x0d, 0x01, - 0xda, 0xdb, 0x3f, 0x60, 0x50, 0xe5, 0xfa, 0xa3, 0x84, 0x05, 0xc3, 0xe8, 0x2c, 0xac, 0x84, 0x43, - 0xea, 0xdb, 0xda, 0x6e, 0xfb, 0x60, 0x97, 0x48, 0x22, 0x81, 0xb5, 0xc3, 0xbd, 0xbd, 0xce, 0xde, - 0xfb, 0x0d, 0x85, 0x70, 0x8d, 0xc0, 0xbb, 0xdf, 0xea, 0x10, 0xe4, 0x82, 0x8c, 0x7c, 0xb8, 0xf7, - 0xf5, 0xbd, 0xfd, 0x6f, 0xee, 0x35, 0x8a, 0xb7, 0x7e, 0xb8, 0x12, 0xfe, 0x73, 0x97, 0x1e, 0xf6, - 0x68, 0x05, 0xd0, 0x0e, 0x2c, 0x8a, 0x7f, 0x75, 0x26, 0xdd, 0x73, 0xf2, 0xbf, 0x66, 0x6b, 0x9d, - 0xcf, 0xec, 0xe3, 0xaf, 0x8d, 0x39, 0xf4, 0x11, 0xf5, 0xfe, 0x63, 0x9f, 0x72, 0x5e, 0x4e, 0x78, - 0xdc, 0xa9, 0x2f, 0x46, 0x5b, 0x57, 0x72, 0x30, 0x42, 0xbe, 0xdf, 0x26, 0xae, 0x7d, 0xfc, 0xff, - 0x18, 0xa0, 0x2b, 0xb2, 0x67, 0x9e, 0xf1, 0x2f, 0x12, 0x5a, 0x6a, 0x1e, 0x4a, 0xc8, 0x5a, 0x87, - 0x46, 0xf2, 0xff, 0x18, 0x20, 0x29, 0xe0, 0x3d, 0xe1, 0xdf, 0x24, 0xb4, 0xbe, 0x92, 0x8f, 0x14, - 0x1f, 0x20, 0xf5, 0x79, 0xfe, 0xd5, 0xfc, 0x0f, 0x9e, 0x33, 0x06, 0x98, 0xf4, 0x55, 0x34, 0x5b, - 0x1c, 0xf9, 0x6b, 0x3b, 0x94, 0xf8, 0x22, 0x3e, 0xe3, 0x43, 0x5d, 0x79, 0x71, 0xb2, 0x3f, 0xd2, - 0x54, 0xe7, 0xd0, 0x1f, 0xc0, 0x72, 0xa2, 0x88, 0x03, 0x49, 0x84, 0xd9, 0xb5, 0x29, 0xad, 0xab, - 0xb9, 0x38, 0xf2, 0xae, 0xc6, 0x0b, 0x35, 0x92, 0xbb, 0x9a, 0x51, 0x00, 0x92, 0xdc, 0xd5, 0xcc, - 0x3a, 0x0f, 0xaa, 0x88, 0x52, 0x51, 0x86, 0xac, 0x88, 0x59, 0x45, 0x20, 0xad, 0x2b, 0x39, 0x18, - 0xf1, 0x05, 0x49, 0x94, 0x65, 0xc8, 0x0b, 0x92, 0x5d, 0xf0, 0xd1, 0xba, 0x9a, 0x8b, 0x93, 0xdc, - 0xc9, 0x28, 0x1d, 0x9c, 0xde, 0xc9, 0x54, 0x49, 0x42, 0x7a, 0x27, 0xd3, 0xd9, 0x64, 0xbe, 0x93, - 0x89, 0x04, 0xae, 0x9a, 0x9b, 0x9a, 0xca, 0xda, 0xc9, 0xec, 0xf4, 0x95, 0x3a, 0x87, 0x9e, 0x40, - 0x73, 0x52, 0x52, 0x04, 0xdd, 0x38, 0x45, 0xee, 0xa6, 0xf5, 0xf2, 0x6c, 0xc8, 0xe1, 0xc0, 0x18, - 0x50, 0xfa, 0x9a, 0x41, 0xcf, 0xcb, 0xcb, 0x3d, 0xe1, 0x1a, 0x6b, 0xbd, 0x30, 0x0d, 0x2d, 0x1c, - 0xe6, 0x7d, 0x28, 0x8b, 0x74, 0x0b, 0x92, 0x4c, 0x60, 0x22, 0xcd, 0xd3, 0xba, 0x90, 0xdd, 0x19, - 0x32, 0xfa, 0x1a, 0x94, 0x08, 0x14, 0xad, 0x27, 0xf1, 0x04, 0x83, 0x66, 0xba, 0x23, 0x24, 0x6e, - 0xc3, 0x02, 0xcb, 0x23, 0x20, 0x29, 0x90, 0x21, 0xe5, 0x39, 0x5a, 0xad, 0xac, 0xae, 0x90, 0x45, - 0x97, 0xfd, 0xe3, 0x48, 0x9e, 0x16, 0x40, 0x97, 0x92, 0xff, 0xc1, 0x48, 0xce, 0x3f, 0xb4, 0x9e, - 0x9b, 0xd8, 0x1f, 0xd7, 0xd9, 0x84, 0xeb, 0x7d, 0x25, 0xe7, 0x9d, 0x94, 0xa5, 0xb3, 0xd9, 0xaf, - 0x2f, 0xb6, 0xb9, 0xe9, 0xd7, 0x99, 0xbc, 0xb9, 0x13, 0x5f, 0xc0, 0xf2, 0xe6, 0x4e, 0x7e, 0xe4, - 0xb1, 0xa3, 0x91, 0xfc, 0x1c, 0x54, 0xcd, 0xfb, 0x24, 0x39, 0xeb, 0x68, 0x4c, 0xf8, 0xd4, 0x59, - 0x9d, 0x43, 0xc7, 0x70, 0x26, 0xe3, 0x5b, 0x68, 0xf4, 0xc2, 0x64, 0xfb, 0x2b, 0x8d, 0xf2, 0xe2, - 0x54, 0xbc, 0xf8, 0x48, 0x19, 0xb1, 0x40, 0x79, 0xa4, 0xc9, 0xc1, 0x48, 0x79, 0xa4, 0xbc, 0xa0, - 0x22, 0x55, 0x44, 0x6e, 0x43, 0xce, 0x65, 0x05, 0xc8, 0x32, 0x14, 0x31, 0x69, 0x31, 0x6e, 0xfd, - 0x45, 0x11, 0x96, 0x58, 0x0c, 0x97, 0x3b, 0x20, 0x0f, 0x00, 0xa2, 0x74, 0x08, 0xba, 0x98, 0x9c, - 0xb6, 0x94, 0x63, 0x6a, 0x5d, 0x9a, 0xd4, 0x1d, 0x57, 0xf4, 0x58, 0x9a, 0x41, 0x56, 0xf4, 0x74, - 0xd6, 0x44, 0x56, 0xf4, 0x8c, 0xfc, 0x84, 0x3a, 0x87, 0x3e, 0x84, 0x4a, 0x18, 0xd5, 0x46, 0x72, - 0x3c, 0x3c, 0x11, 0x9e, 0x6f, 0x5d, 0x9c, 0xd0, 0x1b, 0x97, 0x2e, 0x16, 0xac, 0x96, 0xa5, 0x4b, - 0x07, 0xc2, 0x65, 0xe9, 0xb2, 0xa2, 0xdc, 0xd1, 0x7c, 0x59, 0xd8, 0x2b, 0x63, 0xbe, 0x52, 0x74, - 0x31, 0x63, 0xbe, 0x72, 0xbc, 0x4c, 0x9d, 0xbb, 0x77, 0xf7, 0xe7, 0xbf, 0xb9, 0xa4, 0xfc, 0xea, - 0x37, 0x97, 0xe6, 0x7e, 0xf8, 0xc9, 0x25, 0xe5, 0xe7, 0x9f, 0x5c, 0x52, 0x7e, 0xf9, 0xc9, 0x25, - 0xe5, 0xd7, 0x9f, 0x5c, 0x52, 0xfe, 0xe4, 0xbf, 0x2f, 0xcd, 0x7d, 0x47, 0x7d, 0x74, 0xc7, 0xdf, - 0xb0, 0x9c, 0xcd, 0xbe, 0x67, 0xbd, 0x62, 0xb8, 0xd6, 0xa6, 0xfb, 0x68, 0xb0, 0x69, 0xb8, 0x96, - 0xbf, 0xc9, 0xf9, 0x6e, 0x3e, 0x7e, 0xf5, 0xe1, 0x02, 0xfd, 0x77, 0xb3, 0xaf, 0xfd, 0x7f, 0x00, - 0x00, 0x00, 0xff, 0xff, 0x72, 0x49, 0x29, 0xa4, 0x28, 0x58, 0x00, 0x00, + // 5988 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x7c, 0x4d, 0x70, 0x1b, 0xc9, + 0x75, 0x30, 0x07, 0x00, 0x49, 0xe0, 0x81, 0x00, 0xc1, 0x16, 0x45, 0x42, 0xa0, 0xa4, 0x95, 0x46, + 0xde, 0x1f, 0x49, 0xbb, 0x94, 0x56, 0xab, 0x5d, 0x4b, 0xb2, 0x76, 0x57, 0x10, 0xc9, 0xd5, 0x72, + 0x2d, 0x91, 0xf0, 0x80, 0x94, 0xff, 0xbe, 0xf2, 0x7c, 0x23, 0x4c, 0x13, 0x9c, 0x15, 0x30, 0x33, + 0x9e, 0x19, 0x48, 0xa2, 0x4f, 0xdf, 0xf1, 0x4b, 0x4e, 0xae, 0x72, 0x1c, 0x57, 0xb9, 0x52, 0x49, + 0xe5, 0x94, 0x43, 0x0e, 0xce, 0x25, 0xa9, 0x54, 0xa5, 0x92, 0x5c, 0x52, 0x2e, 0x27, 0x55, 0xae, + 0xf2, 0x25, 0x55, 0x3e, 0xa4, 0x2a, 0xf6, 0xe6, 0x96, 0x43, 0x4e, 0x3e, 0xe4, 0x14, 0xa7, 0xfa, + 0x6f, 0x66, 0x7a, 0x66, 0x30, 0x00, 0xb9, 0x6b, 0xef, 0x9e, 0x80, 0x79, 0xfd, 0xde, 0xeb, 0xd7, + 0xaf, 0x5f, 0xbf, 0x7e, 0xdd, 0xef, 0xcd, 0x40, 0xc5, 0x70, 0xad, 0x75, 0xd7, 0x73, 0x02, 0x07, + 0x81, 0x37, 0xb2, 0x03, 0x6b, 0x88, 0xd7, 0x9f, 0xbd, 0xd9, 0x7a, 0xa3, 0x6f, 0x05, 0x87, 0xa3, + 0x27, 0xeb, 0x3d, 0x67, 0x78, 0xad, 0xef, 0xf4, 0x9d, 0x6b, 0x14, 0xe5, 0xc9, 0xe8, 0x80, 0x3e, + 0xd1, 0x07, 0xfa, 0x8f, 0x91, 0xaa, 0x57, 0xa0, 0xfe, 0x18, 0x7b, 0xbe, 0xe5, 0xd8, 0x1a, 0xfe, + 0xee, 0x08, 0xfb, 0x01, 0x6a, 0xc2, 0xfc, 0x33, 0x06, 0x69, 0x2a, 0x17, 0x94, 0xd7, 0x2a, 0x9a, + 0x78, 0x54, 0xff, 0x42, 0x81, 0xc5, 0x10, 0xd9, 0x77, 0x1d, 0xdb, 0xc7, 0xe3, 0xb1, 0xd1, 0x45, + 0x58, 0xe0, 0x62, 0xe9, 0xb6, 0x31, 0xc4, 0xcd, 0x02, 0x6d, 0xae, 0x72, 0xd8, 0x8e, 0x31, 0xc4, + 0xe8, 0x55, 0x58, 0x14, 0x28, 0x82, 0x49, 0x91, 0x62, 0xd5, 0x39, 0x98, 0xf7, 0x86, 0xd6, 0xe1, + 0x94, 0x40, 0x34, 0x5c, 0x2b, 0x44, 0x2e, 0x51, 0xe4, 0x25, 0xde, 0xd4, 0x76, 0x2d, 0x8e, 0xaf, + 0x7e, 0x1b, 0x2a, 0x9b, 0x3b, 0xdd, 0x0d, 0xc7, 0x3e, 0xb0, 0xfa, 0x44, 0x44, 0x1f, 0x7b, 0x84, + 0xa6, 0xa9, 0x5c, 0x28, 0x12, 0x11, 0xf9, 0x23, 0x6a, 0x41, 0xd9, 0xc7, 0x86, 0xd7, 0x3b, 0xc4, + 0x7e, 0xb3, 0x40, 0x9b, 0xc2, 0x67, 0x42, 0xe5, 0xb8, 0x81, 0xe5, 0xd8, 0x7e, 0xb3, 0xc8, 0xa8, + 0xf8, 0xa3, 0xfa, 0x27, 0x0a, 0x54, 0x3b, 0x8e, 0x17, 0x3c, 0x32, 0x5c, 0xd7, 0xb2, 0xfb, 0xe8, + 0x3a, 0x94, 0xa9, 0x2e, 0x7b, 0xce, 0x80, 0xea, 0xa0, 0x7e, 0x63, 0x79, 0x3d, 0x9a, 0x90, 0xf5, + 0x0e, 0x6f, 0xd3, 0x42, 0x2c, 0xf4, 0x32, 0xd4, 0x7b, 0x8e, 0x1d, 0x18, 0x96, 0x8d, 0x3d, 0xdd, + 0x75, 0xbc, 0x80, 0x2a, 0x67, 0x56, 0xab, 0x85, 0x50, 0xc2, 0x1f, 0xad, 0x41, 0xe5, 0xd0, 0xf1, + 0x03, 0x86, 0x51, 0xa4, 0x18, 0x65, 0x02, 0xa0, 0x8d, 0xab, 0x30, 0x4f, 0x1b, 0x2d, 0x97, 0xab, + 0x61, 0x8e, 0x3c, 0x6e, 0xbb, 0xea, 0x2f, 0x14, 0x98, 0x7d, 0xe4, 0x8c, 0xec, 0x20, 0xd1, 0x8d, + 0x11, 0x1c, 0xf2, 0x29, 0x8a, 0x75, 0x63, 0x04, 0x87, 0x51, 0x37, 0x04, 0x83, 0xcd, 0x12, 0xeb, + 0x86, 0x34, 0xb6, 0xa0, 0xec, 0x61, 0xc3, 0x74, 0xec, 0xc1, 0x11, 0x15, 0xa1, 0xac, 0x85, 0xcf, + 0x64, 0xfa, 0x7c, 0x3c, 0xb0, 0xec, 0xd1, 0x0b, 0xdd, 0xc3, 0x03, 0xe3, 0x09, 0x1e, 0x50, 0x51, + 0xca, 0x5a, 0x9d, 0x83, 0x35, 0x06, 0x45, 0xef, 0x41, 0xd5, 0xf5, 0x1c, 0xd7, 0xe8, 0x1b, 0x44, + 0x83, 0xcd, 0x59, 0xaa, 0xa4, 0xb3, 0x71, 0x25, 0x51, 0x81, 0x3b, 0x11, 0x8e, 0x16, 0x27, 0x50, + 0x75, 0xa8, 0x6c, 0x6f, 0x0a, 0x75, 0x87, 0x03, 0x37, 0xe9, 0x70, 0x6a, 0x7c, 0xe0, 0x26, 0x31, + 0xb8, 0x68, 0xb8, 0x96, 0x49, 0x87, 0x52, 0xd3, 0xaa, 0x21, 0x6c, 0xdb, 0x44, 0x2b, 0x30, 0x37, + 0xc0, 0x76, 0x3f, 0x38, 0xa4, 0x63, 0xa9, 0x69, 0xfc, 0x49, 0xfd, 0x23, 0x05, 0x6a, 0xfb, 0x3e, + 0xf6, 0x88, 0x55, 0xfa, 0xae, 0xd1, 0xc3, 0xe8, 0x0d, 0x28, 0x0d, 0x1d, 0x13, 0xf3, 0x09, 0x3d, + 0x13, 0x97, 0x35, 0x44, 0x7a, 0xe4, 0x98, 0x58, 0xa3, 0x68, 0xe8, 0x32, 0x94, 0x46, 0x96, 0xc9, + 0xac, 0xa8, 0x7a, 0xe3, 0x74, 0x1c, 0x3d, 0x94, 0x5c, 0xa3, 0x28, 0x04, 0xb5, 0x4f, 0x50, 0x8b, + 0xb9, 0xa8, 0x04, 0x45, 0xfd, 0xad, 0x02, 0x8b, 0x61, 0x6f, 0xbb, 0xd4, 0xfc, 0xd0, 0x5b, 0x30, + 0x6f, 0xe3, 0xe0, 0xb9, 0xe3, 0x3d, 0x9d, 0x2c, 0x9b, 0xc0, 0x44, 0x57, 0xa1, 0xe8, 0x72, 0x8d, + 0xe4, 0x12, 0x10, 0x2c, 0x82, 0x6c, 0xb9, 0x3d, 0xaa, 0xa1, 0x7c, 0x64, 0xcb, 0xed, 0x11, 0xe3, + 0x09, 0x0c, 0xaf, 0x8f, 0xe9, 0x7c, 0x30, 0x43, 0x2c, 0x33, 0xc0, 0xb6, 0x89, 0xee, 0x41, 0x7d, + 0xe4, 0x63, 0xcf, 0xf6, 0x75, 0xb1, 0x94, 0xc8, 0xd4, 0x57, 0x65, 0xa6, 0x92, 0xde, 0xb5, 0x1a, + 0x23, 0xd8, 0xe5, 0x6b, 0x4d, 0x05, 0xd8, 0xb6, 0x83, 0x77, 0x6e, 0x3e, 0x36, 0x06, 0x23, 0x8c, + 0x96, 0x61, 0xf6, 0x19, 0xf9, 0x43, 0x47, 0x5e, 0xd4, 0xd8, 0x83, 0xfa, 0xf7, 0x25, 0x58, 0x7b, + 0x48, 0xcc, 0xad, 0x6b, 0xd8, 0xe6, 0x13, 0xe7, 0x45, 0x17, 0xf7, 0x46, 0x9e, 0x15, 0x1c, 0x6d, + 0x38, 0x76, 0x80, 0x5f, 0x04, 0xe8, 0x43, 0x58, 0xb2, 0x05, 0xff, 0x50, 0x10, 0x85, 0x0a, 0xb2, + 0x96, 0x39, 0x3a, 0xd6, 0xb9, 0xd6, 0xb0, 0x65, 0x80, 0x8f, 0xee, 0x47, 0x06, 0x2f, 0xf8, 0x14, + 0xd2, 0x03, 0xea, 0x6e, 0x51, 0x69, 0x38, 0x17, 0xb1, 0x16, 0x04, 0x8f, 0x77, 0x80, 0xb8, 0x40, + 0xdd, 0xf0, 0x75, 0x32, 0x52, 0xaa, 0xe5, 0xea, 0x8d, 0x15, 0xc9, 0x0a, 0xc2, 0x01, 0x6b, 0x15, + 0x6f, 0x64, 0xb7, 0x7d, 0xa2, 0x21, 0x74, 0x8b, 0xba, 0x53, 0x42, 0xd7, 0xf7, 0x9c, 0x91, 0xdb, + 0x2c, 0xe7, 0x12, 0x02, 0x25, 0x7c, 0x40, 0x30, 0xa9, 0x97, 0xe5, 0x4b, 0x56, 0xf7, 0x1c, 0x27, + 0x38, 0xf0, 0xc5, 0x32, 0x15, 0x60, 0x8d, 0x42, 0xd1, 0x35, 0x38, 0xe5, 0x8f, 0x5c, 0x77, 0x80, + 0x87, 0xd8, 0x0e, 0x8c, 0x01, 0xeb, 0x88, 0xcc, 0x59, 0xf1, 0xb5, 0xa2, 0x86, 0xe2, 0x4d, 0x94, + 0xb1, 0x8f, 0xce, 0x03, 0xb8, 0x9e, 0xf5, 0xcc, 0x1a, 0xe0, 0x3e, 0x36, 0x9b, 0x73, 0x94, 0x69, + 0x0c, 0x82, 0xde, 0x26, 0x9e, 0xb7, 0xd7, 0x73, 0x86, 0x6e, 0xb3, 0x92, 0xd6, 0xb7, 0x98, 0xa7, + 0x8e, 0xe7, 0x1c, 0x58, 0x03, 0xac, 0x09, 0x5c, 0xf4, 0x65, 0x28, 0x1b, 0xae, 0x6b, 0x78, 0x43, + 0xc7, 0x6b, 0xc2, 0x64, 0xba, 0x10, 0x19, 0xdd, 0x84, 0x65, 0xce, 0x43, 0x77, 0x59, 0x23, 0x73, + 0x6a, 0xf3, 0xc4, 0x2e, 0xef, 0x17, 0x9a, 0x8a, 0x86, 0x78, 0x3b, 0xa7, 0x25, 0x2e, 0x4e, 0xfd, + 0x27, 0x05, 0x16, 0x13, 0x3c, 0xd1, 0x47, 0xb0, 0x20, 0x38, 0x04, 0x47, 0xae, 0x70, 0x03, 0xaf, + 0xe6, 0x88, 0xb1, 0xce, 0x7f, 0xf7, 0x8e, 0x5c, 0x4c, 0xbd, 0x97, 0x78, 0x40, 0x97, 0xa0, 0x36, + 0x70, 0x7a, 0xc6, 0x80, 0x7a, 0x2d, 0x0f, 0x1f, 0x70, 0x1f, 0xbb, 0x10, 0x02, 0x35, 0x7c, 0xa0, + 0xde, 0x83, 0x6a, 0x8c, 0x01, 0x42, 0x50, 0xd7, 0x58, 0x57, 0x9b, 0xf8, 0xc0, 0x18, 0x0d, 0x82, + 0xc6, 0x0c, 0xaa, 0x03, 0xec, 0xdb, 0x3d, 0xb2, 0xa7, 0xd9, 0xd8, 0x6c, 0x28, 0xa8, 0x06, 0x95, + 0x87, 0x82, 0x45, 0xa3, 0xa0, 0xfe, 0xb8, 0x08, 0xa7, 0xa9, 0xe1, 0x75, 0x1c, 0x93, 0xaf, 0x04, + 0xbe, 0x01, 0x5e, 0x82, 0x5a, 0x8f, 0xce, 0xa5, 0xee, 0x1a, 0x1e, 0xb6, 0x03, 0xbe, 0x0d, 0x2c, + 0x30, 0x60, 0x87, 0xc2, 0x90, 0x06, 0x0d, 0x9f, 0x8f, 0x48, 0xef, 0xb1, 0x95, 0xc3, 0x8d, 0x5b, + 0x1a, 0x75, 0xce, 0x42, 0xd3, 0x16, 0xfd, 0xd4, 0xca, 0x9b, 0xf7, 0x8f, 0xfc, 0x5e, 0x30, 0x10, + 0xde, 0x6e, 0x3d, 0xc5, 0x2a, 0x29, 0xec, 0x7a, 0x97, 0x11, 0x6c, 0xd9, 0x81, 0x77, 0xa4, 0x09, + 0x72, 0xf4, 0x3e, 0x94, 0x9d, 0x67, 0xd8, 0x3b, 0xc4, 0x06, 0xf3, 0x32, 0xd5, 0x1b, 0x97, 0x52, + 0xac, 0x36, 0x84, 0xa3, 0xd7, 0xb0, 0xef, 0x8c, 0xbc, 0x1e, 0xf6, 0xb5, 0x90, 0x08, 0xb5, 0xa1, + 0xe2, 0x09, 0x30, 0xf7, 0x42, 0x53, 0x71, 0x88, 0xa8, 0x5a, 0x77, 0x60, 0x21, 0x2e, 0x1c, 0x6a, + 0x40, 0xf1, 0x29, 0x3e, 0xe2, 0xca, 0x24, 0x7f, 0x23, 0xff, 0xc4, 0x66, 0x98, 0x3d, 0xdc, 0x29, + 0xdc, 0x52, 0x54, 0x0f, 0x50, 0x34, 0xd2, 0x47, 0x38, 0x30, 0x4c, 0x23, 0x30, 0x10, 0x82, 0x12, + 0x0d, 0x8d, 0x18, 0x0b, 0xfa, 0x9f, 0x70, 0x1d, 0x71, 0x57, 0x5d, 0xd1, 0xc8, 0x5f, 0x74, 0x16, + 0x2a, 0xa1, 0x27, 0xe2, 0xf1, 0x51, 0x04, 0x20, 0x71, 0x8a, 0x11, 0x04, 0x78, 0xe8, 0x06, 0x54, + 0x31, 0x35, 0x4d, 0x3c, 0xaa, 0x7f, 0x30, 0x0b, 0x8d, 0x94, 0x2d, 0xdc, 0x81, 0xf2, 0x90, 0x77, + 0xcf, 0x7d, 0xe0, 0x79, 0x29, 0x58, 0x49, 0x09, 0xa9, 0x85, 0xf8, 0x24, 0x16, 0x20, 0xb6, 0x16, + 0x8b, 0xe6, 0xc2, 0x67, 0x66, 0xe4, 0x7d, 0xdd, 0xb4, 0x3c, 0xdc, 0x0b, 0x1c, 0xef, 0x88, 0x0b, + 0xba, 0x30, 0x70, 0xfa, 0x9b, 0x02, 0x86, 0x6e, 0x02, 0x98, 0xb6, 0xaf, 0x53, 0x1b, 0xee, 0xf3, + 0x79, 0x94, 0x36, 0xc0, 0x30, 0x68, 0xd3, 0x2a, 0xa6, 0xed, 0x73, 0x91, 0xef, 0x42, 0x8d, 0x44, + 0x40, 0xfa, 0x90, 0xed, 0x8d, 0xcc, 0x21, 0x55, 0x6f, 0xac, 0xca, 0x72, 0x87, 0xf1, 0x98, 0xb6, + 0xe0, 0x46, 0x0f, 0x3e, 0xba, 0x07, 0x73, 0x34, 0x08, 0xf1, 0x9b, 0x73, 0x94, 0xec, 0xb5, 0xec, + 0xe1, 0x72, 0xeb, 0x7b, 0x48, 0x51, 0x99, 0xf1, 0x71, 0x3a, 0xb4, 0x0b, 0x55, 0xc3, 0xb6, 0x9d, + 0xc0, 0x60, 0x1e, 0x7f, 0x9e, 0xb2, 0x79, 0x23, 0x97, 0x4d, 0x3b, 0xc2, 0x67, 0xbc, 0xe2, 0x1c, + 0xd0, 0x97, 0x61, 0x96, 0x6e, 0x09, 0xdc, 0x87, 0x5f, 0x9c, 0xb8, 0x28, 0x34, 0x86, 0x8f, 0xde, + 0x85, 0xf9, 0xe7, 0x96, 0x6d, 0x3a, 0xcf, 0x7d, 0xee, 0x4f, 0x25, 0x13, 0xfe, 0x3a, 0x6b, 0x4a, + 0x11, 0x0b, 0x9a, 0xd6, 0x6d, 0xa8, 0xc6, 0xc6, 0x77, 0x1c, 0xfb, 0x6d, 0xbd, 0x07, 0x8d, 0xe4, + 0x98, 0x8e, 0x65, 0xff, 0x23, 0x58, 0xd6, 0x46, 0x76, 0x24, 0x9a, 0x38, 0x6c, 0xdc, 0x84, 0x39, + 0x6e, 0x0d, 0xcc, 0x18, 0xcf, 0xe6, 0xa9, 0x55, 0xe3, 0xb8, 0xf1, 0x73, 0xc3, 0xa1, 0x61, 0x9b, + 0x03, 0xec, 0xf1, 0x1e, 0xc5, 0xb9, 0xe1, 0x43, 0x06, 0x55, 0xdf, 0x85, 0xd3, 0x89, 0x6e, 0xf9, + 0xb1, 0xe5, 0x4b, 0x50, 0x77, 0x1d, 0x53, 0xf7, 0x19, 0x58, 0xc4, 0x92, 0x15, 0x62, 0x3b, 0x02, + 0x77, 0xdb, 0x24, 0xe4, 0xdd, 0xc0, 0x71, 0xd3, 0x62, 0x4f, 0x47, 0xde, 0x84, 0x95, 0x24, 0x39, + 0xeb, 0x5e, 0x7d, 0x1f, 0x56, 0x35, 0x3c, 0x74, 0x9e, 0xe1, 0x93, 0xb2, 0x6e, 0x41, 0x33, 0xcd, + 0x80, 0x33, 0xff, 0x26, 0xac, 0x46, 0xd0, 0x6e, 0x60, 0x04, 0x23, 0xff, 0x58, 0xcc, 0xf9, 0x99, + 0xee, 0x89, 0xe3, 0xb3, 0x89, 0x2c, 0x6b, 0xe2, 0x51, 0x5d, 0x85, 0xd9, 0x8e, 0x63, 0x6e, 0x77, + 0x50, 0x1d, 0x0a, 0x96, 0xcb, 0x89, 0x0b, 0x96, 0xab, 0xf6, 0xe2, 0x7d, 0xee, 0xb0, 0xa8, 0x93, + 0x75, 0x9d, 0x44, 0x45, 0xb7, 0xa0, 0x6e, 0x98, 0xa6, 0x45, 0x0c, 0xc9, 0x18, 0xe8, 0x96, 0x2b, + 0x82, 0xe6, 0xa5, 0xc4, 0xd4, 0x6f, 0x77, 0xb4, 0x5a, 0x84, 0xb8, 0xed, 0xfa, 0xea, 0x7d, 0xa8, + 0x44, 0x01, 0xfa, 0xdb, 0xd1, 0xf9, 0xac, 0x30, 0x39, 0x96, 0x0b, 0x0f, 0x6f, 0x3b, 0xa9, 0x4d, + 0x92, 0x8b, 0xf9, 0x36, 0x40, 0xe8, 0x54, 0x45, 0x78, 0x78, 0x3a, 0x93, 0xa5, 0x16, 0x43, 0x54, + 0xff, 0xbd, 0x14, 0x77, 0xb2, 0xb1, 0x21, 0x9b, 0xe1, 0x90, 0x4d, 0xc9, 0xe9, 0x16, 0x8e, 0xe9, + 0x74, 0xdf, 0x84, 0x59, 0x3f, 0x30, 0x02, 0xcc, 0xe3, 0xf1, 0xb5, 0x6c, 0x42, 0xd2, 0x31, 0xd6, + 0x18, 0x26, 0x3a, 0x07, 0xd0, 0xf3, 0xb0, 0x11, 0x60, 0x53, 0x37, 0xd8, 0xae, 0x50, 0xd4, 0x2a, + 0x1c, 0xd2, 0x0e, 0x88, 0x17, 0x11, 0x27, 0x88, 0x8c, 0x8d, 0x70, 0xcc, 0x34, 0x46, 0x67, 0x89, + 0xd0, 0x7b, 0xcd, 0x4d, 0xf4, 0x5e, 0x9c, 0x94, 0x7b, 0xaf, 0xc8, 0x13, 0xcf, 0xe7, 0x79, 0x62, + 0x46, 0x34, 0x8d, 0x27, 0x2e, 0xe7, 0x79, 0x62, 0xce, 0x26, 0xdf, 0x13, 0x67, 0x38, 0x92, 0x4a, + 0x96, 0x23, 0xf9, 0x3c, 0x5d, 0xe7, 0xcf, 0x15, 0x68, 0xa6, 0xd7, 0x33, 0xf7, 0x63, 0x37, 0x61, + 0xce, 0xa7, 0x90, 0x7c, 0xff, 0xc9, 0xa9, 0x38, 0x2e, 0xba, 0x0f, 0x25, 0xcb, 0x3e, 0x70, 0xf8, + 0xc2, 0x5b, 0xcf, 0xa5, 0xe1, 0x3d, 0xad, 0x6f, 0xdb, 0x07, 0x0e, 0xd3, 0x20, 0xa5, 0x6d, 0x7d, + 0x19, 0x2a, 0x21, 0xe8, 0x58, 0xe3, 0xd9, 0x86, 0xe5, 0x84, 0xdd, 0xb2, 0xc3, 0x5d, 0x68, 0xe8, + 0xca, 0xb4, 0x86, 0xae, 0xfe, 0x46, 0x89, 0x2f, 0xbe, 0x0f, 0xac, 0x41, 0x80, 0xbd, 0xd4, 0xe2, + 0x7b, 0x47, 0xf0, 0x65, 0x2b, 0xef, 0x42, 0x0e, 0x5f, 0x76, 0x76, 0xe2, 0xab, 0xe8, 0x31, 0xd4, + 0xa9, 0xd9, 0xe9, 0x3e, 0x1e, 0xd0, 0xf8, 0x85, 0xc7, 0xb0, 0xd7, 0xb2, 0x19, 0xb0, 0xde, 0x99, + 0xd9, 0x76, 0x39, 0x05, 0xd3, 0x57, 0x6d, 0x10, 0x87, 0xb5, 0xee, 0x01, 0x4a, 0x23, 0x1d, 0x4b, + 0x83, 0x8f, 0x88, 0x0f, 0xf3, 0x83, 0xcc, 0xdd, 0xf4, 0x80, 0x8a, 0x91, 0x6f, 0x0d, 0x4c, 0x54, + 0x8d, 0xe3, 0xaa, 0xff, 0x5a, 0x04, 0x88, 0x1a, 0xbf, 0xe0, 0xce, 0xeb, 0x4e, 0xe8, 0x44, 0x58, + 0x14, 0xa8, 0x66, 0xb3, 0xcc, 0x74, 0x1f, 0xdb, 0xb2, 0xfb, 0x60, 0xf1, 0xe0, 0xab, 0x63, 0x18, + 0x1c, 0xdb, 0x71, 0xcc, 0x7f, 0xd1, 0x1c, 0xc7, 0x07, 0xb0, 0x92, 0x34, 0x13, 0xee, 0x35, 0x5e, + 0x87, 0x59, 0x2b, 0xc0, 0x43, 0x76, 0x1f, 0x9a, 0xb8, 0x44, 0x88, 0xa1, 0x33, 0x24, 0xf5, 0x3d, + 0x58, 0x91, 0xe7, 0xea, 0x78, 0xe1, 0x84, 0xfa, 0x30, 0x19, 0x8f, 0x44, 0xee, 0x8b, 0xdb, 0x47, + 0xe6, 0x75, 0x4c, 0x92, 0x86, 0x61, 0xaa, 0x3f, 0x55, 0xe0, 0x74, 0xa2, 0x69, 0xcc, 0xc2, 0xff, + 0x76, 0x6a, 0x01, 0x33, 0x7f, 0x77, 0x33, 0xa7, 0x97, 0xdf, 0xe3, 0x2a, 0xfe, 0x3a, 0xb4, 0xe4, + 0xe9, 0x91, 0x54, 0x7b, 0x3b, 0xb1, 0x94, 0x2f, 0x4e, 0x14, 0x3a, 0x5c, 0xcf, 0x1d, 0x58, 0xcb, + 0x64, 0x9c, 0xd6, 0x79, 0x71, 0x4a, 0x9d, 0xff, 0x77, 0x21, 0xee, 0xb3, 0xdb, 0x41, 0xe0, 0x59, + 0x4f, 0x46, 0x01, 0xfe, 0x6c, 0x03, 0x9d, 0xcd, 0x70, 0x65, 0x33, 0x3f, 0xfb, 0x7a, 0x36, 0x65, + 0xd4, 0x7b, 0xe6, 0x1a, 0xef, 0xca, 0x6b, 0xbc, 0x44, 0x59, 0xbd, 0x39, 0x91, 0x55, 0xee, 0x6a, + 0xff, 0x3c, 0x17, 0xf1, 0x3f, 0x2b, 0xb0, 0x98, 0x98, 0x15, 0x74, 0x0f, 0xc0, 0x08, 0x45, 0xe7, + 0xf6, 0x71, 0x61, 0xd2, 0x10, 0xb5, 0x18, 0x0d, 0xd9, 0x13, 0x59, 0x0c, 0x97, 0xb1, 0x27, 0x66, + 0xc4, 0x70, 0x61, 0x08, 0x77, 0x37, 0x3a, 0x80, 0xb2, 0x8b, 0x4b, 0x35, 0xf7, 0x00, 0xca, 0x68, + 0x05, 0x89, 0xfa, 0x83, 0x02, 0x2c, 0x67, 0x71, 0x47, 0xaf, 0x40, 0xb1, 0xe7, 0x8e, 0xf8, 0x48, + 0xa4, 0xe4, 0xc9, 0x86, 0x3b, 0xda, 0xf7, 0x8d, 0x3e, 0xd6, 0x08, 0x02, 0xba, 0x06, 0x73, 0x43, + 0x3c, 0x74, 0xbc, 0x23, 0x2e, 0xb7, 0x74, 0x05, 0xf0, 0x88, 0xb6, 0x30, 0x6c, 0x8e, 0x86, 0x6e, + 0x44, 0xa1, 0x2e, 0x93, 0xb7, 0x29, 0x45, 0xf4, 0xac, 0x89, 0x91, 0x84, 0xf1, 0xed, 0x0d, 0x98, + 0x77, 0x3d, 0xa7, 0x87, 0x7d, 0x9f, 0xdf, 0x50, 0x34, 0x13, 0xd9, 0x1c, 0xd2, 0xc4, 0x69, 0x38, + 0x22, 0xba, 0x03, 0x10, 0xa6, 0x19, 0xc4, 0xce, 0xd4, 0x92, 0xc6, 0x21, 0x5a, 0x99, 0x4a, 0x62, + 0xd8, 0xe4, 0x94, 0x98, 0xad, 0x38, 0xf5, 0x1f, 0x15, 0x58, 0x88, 0xcb, 0x88, 0xce, 0x42, 0x85, + 0x30, 0xf4, 0x03, 0x63, 0xe8, 0xf2, 0x3b, 0xf0, 0x08, 0x80, 0x76, 0x60, 0xc9, 0x64, 0x97, 0x85, + 0xba, 0x65, 0x07, 0xd8, 0x3b, 0x30, 0x7a, 0x22, 0xe8, 0xb9, 0x98, 0x31, 0xec, 0x6d, 0x81, 0xc3, + 0xc6, 0xd2, 0xe0, 0xb4, 0x21, 0x18, 0xb5, 0x01, 0x42, 0x3e, 0x62, 0x51, 0x4e, 0xc1, 0x28, 0x46, + 0xa4, 0xfe, 0x56, 0x81, 0xd3, 0x99, 0x58, 0x99, 0x57, 0x5f, 0x37, 0xa0, 0xec, 0xbd, 0xd0, 0x9f, + 0x1c, 0x05, 0xd8, 0xcf, 0x9a, 0xe0, 0xfd, 0xd8, 0xfd, 0xf6, 0xbc, 0xf7, 0xe2, 0x3e, 0xc1, 0x43, + 0x37, 0xa1, 0xe2, 0xbd, 0xd0, 0xb1, 0xe7, 0x39, 0x9e, 0xb0, 0xc9, 0xb1, 0x44, 0x65, 0xef, 0xc5, + 0x16, 0x45, 0x24, 0x3d, 0x05, 0xa2, 0xa7, 0xd2, 0x84, 0x9e, 0x82, 0xa8, 0xa7, 0x20, 0xec, 0x69, + 0x76, 0x42, 0x4f, 0x01, 0xef, 0x49, 0xfd, 0x18, 0x16, 0xe2, 0x26, 0x33, 0x61, 0x0a, 0xef, 0x42, + 0x8d, 0x9b, 0x94, 0xde, 0x73, 0x46, 0x76, 0x30, 0x49, 0x0d, 0x0b, 0x1c, 0x7b, 0x83, 0x20, 0xab, + 0x7f, 0xa9, 0x40, 0x65, 0x7b, 0x68, 0xf4, 0x71, 0xd7, 0xc5, 0x3d, 0xe2, 0x53, 0x2c, 0xf2, 0xc0, + 0x55, 0xcc, 0x1e, 0xd0, 0x87, 0xb2, 0x7f, 0x64, 0x3b, 0xe2, 0x2b, 0x52, 0x16, 0x41, 0x70, 0x98, + 0xe0, 0x14, 0x3f, 0xad, 0x67, 0xbb, 0x01, 0xe5, 0xaf, 0xe2, 0x23, 0x16, 0xfb, 0x4f, 0x49, 0xa7, + 0xfe, 0xb0, 0x04, 0xab, 0x63, 0x6e, 0x6a, 0x69, 0xe0, 0xe8, 0x8e, 0x74, 0x17, 0x7b, 0x96, 0x63, + 0x0a, 0xd5, 0xf6, 0xdc, 0x51, 0x87, 0x02, 0xd0, 0x1a, 0x90, 0x07, 0xfd, 0xbb, 0x23, 0x87, 0xef, + 0x4d, 0x45, 0xad, 0xdc, 0x73, 0x47, 0x5f, 0x23, 0xcf, 0x82, 0xd6, 0x3f, 0x34, 0x3c, 0xcc, 0xcc, + 0x88, 0xd1, 0x76, 0x29, 0x00, 0xbd, 0x09, 0xa7, 0x99, 0x43, 0xd1, 0x07, 0xd6, 0xd0, 0x22, 0xcb, + 0x2b, 0x66, 0x3b, 0x45, 0x0d, 0xb1, 0xc6, 0x87, 0xa4, 0x6d, 0xdb, 0x66, 0xd6, 0xa2, 0x42, 0xcd, + 0x71, 0x86, 0xba, 0xdf, 0x73, 0x3c, 0xac, 0x1b, 0xe6, 0xc7, 0xd4, 0x62, 0x8a, 0x5a, 0xd5, 0x71, + 0x86, 0x5d, 0x02, 0x6b, 0x9b, 0x1f, 0xa3, 0x97, 0xa0, 0xda, 0x73, 0x47, 0x3e, 0x0e, 0x74, 0xf2, + 0x43, 0xcf, 0xd3, 0x15, 0x0d, 0x18, 0x68, 0xc3, 0x1d, 0xf9, 0x31, 0x84, 0x21, 0x89, 0xd6, 0xe6, + 0xe3, 0x08, 0x8f, 0xf0, 0x90, 0x26, 0xa4, 0x0e, 0x47, 0x7d, 0xec, 0x1a, 0x7d, 0xcc, 0x44, 0x13, + 0x87, 0x62, 0x29, 0x21, 0xf5, 0x21, 0x47, 0xa1, 0x02, 0x6a, 0xf5, 0xc3, 0xf8, 0xa3, 0x8f, 0x3e, + 0x82, 0xf9, 0x91, 0x6d, 0x1d, 0x58, 0xd8, 0x6c, 0x56, 0x28, 0xed, 0xf5, 0x29, 0xee, 0xc5, 0xd7, + 0xf7, 0x19, 0x09, 0xbf, 0xa6, 0xe7, 0x0c, 0xd0, 0x1d, 0x68, 0x71, 0x45, 0xf9, 0xcf, 0x0d, 0x37, + 0xa9, 0x2d, 0xa0, 0x2a, 0x58, 0x61, 0x18, 0xdd, 0xe7, 0x86, 0x1b, 0xd7, 0x58, 0xeb, 0x0e, 0x2c, + 0xc4, 0x99, 0x1e, 0xcb, 0x96, 0xee, 0x43, 0x4d, 0x1a, 0x24, 0x99, 0x6d, 0xaa, 0x14, 0xdf, 0xfa, + 0x9e, 0x58, 0x00, 0x65, 0x02, 0xe8, 0x5a, 0xdf, 0xa3, 0x69, 0x44, 0x2a, 0x19, 0xe5, 0x53, 0xd2, + 0xd8, 0x83, 0x6a, 0x40, 0x4d, 0xca, 0xdc, 0x11, 0x17, 0x45, 0x53, 0x74, 0xdc, 0x45, 0x91, 0xff, + 0x04, 0xe6, 0x39, 0x03, 0x21, 0x01, 0xfd, 0x4f, 0x60, 0x34, 0x47, 0xc4, 0x6e, 0xbc, 0xe9, 0x7f, + 0xda, 0x05, 0x7e, 0xc6, 0x13, 0xe2, 0x15, 0x8d, 0x3d, 0xa8, 0x7f, 0xaa, 0x00, 0x6c, 0x18, 0xae, + 0xf1, 0xc4, 0x1a, 0x58, 0xc1, 0x11, 0xba, 0x0c, 0x0d, 0xc3, 0x34, 0xf5, 0x9e, 0x80, 0x58, 0x58, + 0x54, 0x28, 0x2c, 0x1a, 0xa6, 0xb9, 0x11, 0x03, 0xa3, 0xab, 0xb0, 0x64, 0x7a, 0x8e, 0x2b, 0xe3, + 0xb2, 0x92, 0x85, 0x06, 0x69, 0x90, 0x90, 0x6f, 0x41, 0x93, 0xf0, 0x35, 0x86, 0x4f, 0x2c, 0x6c, + 0x07, 0x32, 0x0d, 0xab, 0x65, 0x58, 0x31, 0x4c, 0xb3, 0xcd, 0x9a, 0xe3, 0x94, 0xea, 0x3f, 0xcc, + 0xc1, 0x39, 0x79, 0xc6, 0x93, 0xc9, 0xd4, 0x3b, 0xb0, 0x90, 0x90, 0x37, 0x95, 0x86, 0x8c, 0x46, + 0xa8, 0x49, 0xb8, 0x89, 0x74, 0x61, 0x21, 0x95, 0x2e, 0xcc, 0x4c, 0xd4, 0x16, 0x3f, 0xa3, 0x44, + 0x6d, 0xe9, 0x53, 0x26, 0x6a, 0x67, 0x4f, 0x9a, 0xa8, 0x5d, 0x98, 0x3a, 0x51, 0xfb, 0x0a, 0x3d, + 0x54, 0x8a, 0x1e, 0xe9, 0xf6, 0xc8, 0x7c, 0x42, 0x2d, 0xe4, 0x6e, 0x8b, 0xb2, 0x99, 0x44, 0x42, + 0x77, 0xfe, 0x38, 0x09, 0xdd, 0xf2, 0xd8, 0x84, 0xee, 0x05, 0x58, 0xb0, 0x1d, 0xdd, 0xc6, 0xcf, + 0x75, 0x32, 0x2d, 0x7e, 0xb3, 0xca, 0xe6, 0xc8, 0x76, 0x76, 0xf0, 0xf3, 0x0e, 0x81, 0xa0, 0x8b, + 0xb0, 0x30, 0x34, 0xfc, 0xa7, 0xd8, 0xa4, 0x99, 0x55, 0xbf, 0x59, 0xa3, 0xf6, 0x54, 0x65, 0xb0, + 0x0e, 0x01, 0xa1, 0x97, 0x21, 0x94, 0x83, 0x23, 0xd5, 0x29, 0x52, 0x4d, 0x40, 0x19, 0x5a, 0x2c, + 0x39, 0xbc, 0x78, 0xc2, 0xe4, 0x70, 0xe3, 0x38, 0xc9, 0xe1, 0x37, 0xa0, 0x21, 0xfe, 0x8b, 0xec, + 0x30, 0xbb, 0xec, 0xa3, 0x89, 0xe1, 0x45, 0xd1, 0x26, 0x32, 0xc0, 0xe3, 0x72, 0xc9, 0x90, 0x9b, + 0x4b, 0xfe, 0x89, 0xc2, 0x43, 0xdc, 0x70, 0x01, 0xf1, 0x24, 0x96, 0x94, 0x7f, 0x54, 0x4e, 0x92, + 0x7f, 0x44, 0x7b, 0x63, 0x33, 0xb4, 0x97, 0xc7, 0x73, 0x9a, 0x94, 0xa3, 0x55, 0x7f, 0xa0, 0xc0, + 0x39, 0x1e, 0x7f, 0x8e, 0xa9, 0x9f, 0xc8, 0x30, 0x4b, 0x65, 0x8c, 0x59, 0xf6, 0x3c, 0x6c, 0x62, + 0x3b, 0xb0, 0x8c, 0x81, 0xee, 0xbb, 0xb8, 0x27, 0xb2, 0x32, 0x11, 0x98, 0x46, 0x26, 0x17, 0x61, + 0x81, 0x15, 0x1c, 0xf1, 0x30, 0x9b, 0xd5, 0x15, 0x55, 0x69, 0xcd, 0x11, 0x03, 0xa9, 0x0e, 0xac, + 0x8e, 0x49, 0x67, 0x65, 0xaa, 0x41, 0x49, 0xab, 0x21, 0x77, 0x4c, 0x69, 0x35, 0xfc, 0x50, 0x81, + 0x97, 0x38, 0xc9, 0x58, 0xdf, 0xf7, 0x79, 0x28, 0xe2, 0xaf, 0x95, 0xf0, 0x78, 0x90, 0x34, 0xa9, + 0x8d, 0xb4, 0x49, 0xbd, 0x9c, 0xa1, 0x81, 0x7c, 0xa3, 0x7a, 0x3c, 0xd6, 0xa8, 0xae, 0xe6, 0xf1, + 0x9a, 0xa8, 0xcf, 0x7f, 0x53, 0xe0, 0xcc, 0x58, 0x01, 0x12, 0xf1, 0x96, 0x92, 0x8c, 0xb7, 0x78, + 0xac, 0x16, 0x85, 0xc0, 0x2c, 0x56, 0xa3, 0x51, 0x2e, 0x0f, 0x8a, 0xf4, 0xa1, 0xf1, 0xc2, 0x1a, + 0x8e, 0x86, 0x3c, 0x58, 0x23, 0xec, 0x1e, 0x31, 0xc8, 0x49, 0xa2, 0xb5, 0x6b, 0xb0, 0xcc, 0x1c, + 0x29, 0x0d, 0x18, 0x22, 0x0a, 0x16, 0xb4, 0x2d, 0xb1, 0x36, 0x12, 0x3b, 0x70, 0x02, 0xb5, 0x0d, + 0x4b, 0xe1, 0xb0, 0x72, 0xd3, 0xf9, 0xb1, 0xf4, 0x7c, 0x41, 0x4e, 0xcf, 0xdb, 0x30, 0xb7, 0x89, + 0x9f, 0x59, 0x3d, 0xfc, 0x99, 0xd4, 0xe9, 0x5d, 0x80, 0xaa, 0x8b, 0xbd, 0xa1, 0xe5, 0xfb, 0xe1, + 0xae, 0x59, 0xd1, 0xe2, 0x20, 0xf5, 0x27, 0x73, 0xb0, 0x98, 0x34, 0xa1, 0xdb, 0xa9, 0x6a, 0x80, + 0x73, 0x99, 0xa7, 0xd6, 0x8c, 0xeb, 0x9a, 0xab, 0xe2, 0x78, 0x51, 0x48, 0xa7, 0xca, 0xc2, 0x23, + 0x84, 0x38, 0x75, 0x34, 0x61, 0xbe, 0xe7, 0x0c, 0x87, 0x86, 0x6d, 0x8a, 0x62, 0x4a, 0xfe, 0x48, + 0x74, 0x66, 0x78, 0x7d, 0x76, 0x51, 0x53, 0xd1, 0xe8, 0x7f, 0x32, 0xc3, 0xe4, 0xc4, 0x68, 0xd9, + 0xb4, 0x9e, 0x80, 0x4e, 0x42, 0x45, 0x03, 0x0e, 0xda, 0xb4, 0x3c, 0xf4, 0x1a, 0x94, 0xb0, 0xfd, + 0x4c, 0xdc, 0xe0, 0x4a, 0x17, 0x06, 0xe2, 0x48, 0xa1, 0x51, 0x0c, 0x74, 0x19, 0xe6, 0x86, 0xc4, + 0x6a, 0x44, 0xce, 0x69, 0x29, 0x55, 0x74, 0xa8, 0x71, 0x04, 0xf4, 0x3a, 0xcc, 0x9b, 0x74, 0x3e, + 0x44, 0x0c, 0x8d, 0xa4, 0xca, 0x04, 0xda, 0xa4, 0x09, 0x14, 0xf4, 0x7e, 0x78, 0x5b, 0x55, 0x49, + 0x5f, 0x23, 0x27, 0xd4, 0x9c, 0x79, 0x51, 0xb5, 0x23, 0x1f, 0xc4, 0x20, 0x7d, 0xe7, 0x95, 0xe4, + 0x92, 0x7f, 0x23, 0x7d, 0x06, 0xca, 0x03, 0xa7, 0xcf, 0x8c, 0xa3, 0xca, 0x2a, 0x71, 0x07, 0x4e, + 0x9f, 0xda, 0xc6, 0x32, 0xcc, 0xfa, 0x81, 0x69, 0xd9, 0x34, 0x14, 0x29, 0x6b, 0xec, 0x81, 0xac, + 0x41, 0xfa, 0x47, 0x77, 0xec, 0x1e, 0x6e, 0xd6, 0x68, 0x53, 0x85, 0x42, 0x76, 0xed, 0x1e, 0x3d, + 0x92, 0x05, 0xc1, 0x51, 0xb3, 0x4e, 0xe1, 0xe4, 0x6f, 0x74, 0x69, 0xb4, 0x38, 0xe6, 0xd2, 0x28, + 0x21, 0x70, 0xc6, 0xa5, 0x51, 0x63, 0xec, 0xa5, 0x51, 0x92, 0xf6, 0x8b, 0x50, 0xb4, 0xf0, 0xb7, + 0x0a, 0xac, 0x6c, 0xd0, 0xcc, 0x43, 0xcc, 0x85, 0x1d, 0x27, 0x91, 0xfe, 0x56, 0x58, 0xdd, 0x90, + 0x91, 0xa2, 0x4e, 0x8e, 0x58, 0x14, 0x37, 0x6c, 0x40, 0x5d, 0xb0, 0xe5, 0xc4, 0xc5, 0x29, 0x4a, + 0x23, 0x6a, 0x7e, 0xfc, 0x51, 0xbd, 0x0b, 0xab, 0x29, 0xc9, 0xf9, 0xfd, 0x6f, 0xb2, 0x4c, 0x96, + 0x09, 0x1e, 0x2f, 0x93, 0x55, 0xef, 0xc0, 0xe9, 0x6e, 0x60, 0x78, 0x41, 0x6a, 0xd8, 0x53, 0xd0, + 0xd2, 0xa2, 0x07, 0x99, 0x96, 0xd7, 0x25, 0x74, 0x61, 0xb9, 0x1b, 0x38, 0xee, 0x09, 0x98, 0x12, + 0xff, 0x41, 0x46, 0xee, 0x8c, 0xc4, 0x76, 0x20, 0x1e, 0xd5, 0x55, 0x56, 0xa2, 0x91, 0xee, 0xed, + 0x2b, 0xb0, 0xc2, 0x2a, 0x24, 0x4e, 0x32, 0x88, 0x33, 0xa2, 0x3e, 0x23, 0xcd, 0xf7, 0x01, 0x9c, + 0x92, 0x2e, 0xf3, 0x78, 0xf6, 0xf2, 0xba, 0x9c, 0xbd, 0x1c, 0x7f, 0xf9, 0x17, 0x26, 0x2f, 0x7f, + 0x54, 0x88, 0xf9, 0xe3, 0x31, 0x29, 0x8c, 0xb7, 0xe5, 0xdc, 0xe5, 0x4b, 0xe3, 0xb9, 0x4a, 0xa9, + 0xcb, 0xb4, 0x75, 0x16, 0x33, 0xac, 0x73, 0x3f, 0x95, 0x1f, 0x29, 0xa5, 0xf3, 0xc1, 0x09, 0x09, + 0x7f, 0x2f, 0x99, 0x91, 0x87, 0x2c, 0xbf, 0x19, 0x76, 0x1d, 0x26, 0x45, 0xde, 0x4a, 0x24, 0x45, + 0xd6, 0x72, 0x24, 0x0d, 0xd3, 0x21, 0x3f, 0x2a, 0x41, 0x25, 0x6c, 0x4b, 0x69, 0x38, 0xad, 0xaa, + 0x42, 0x86, 0xaa, 0xe2, 0xfb, 0x64, 0xf1, 0x84, 0xfb, 0x64, 0x69, 0x8a, 0x7d, 0x72, 0x0d, 0x2a, + 0xf4, 0x0f, 0x2d, 0x13, 0x65, 0xfb, 0x5e, 0x99, 0x02, 0x34, 0x7c, 0x10, 0x99, 0xd8, 0xdc, 0x94, + 0x26, 0x96, 0xc8, 0xa5, 0xce, 0x27, 0x73, 0xa9, 0xb7, 0xc3, 0x3d, 0xac, 0x9c, 0xbe, 0xdc, 0x0d, + 0x39, 0x66, 0xee, 0x5e, 0x89, 0x6b, 0xc4, 0x4a, 0xfa, 0x1a, 0x31, 0xa2, 0xff, 0xc2, 0xe6, 0x56, + 0x76, 0x59, 0x82, 0x34, 0x6e, 0x67, 0xdc, 0x47, 0xbe, 0x2d, 0xdd, 0xe7, 0x2b, 0xe9, 0x4a, 0xfd, + 0xc8, 0x2f, 0xc4, 0xaf, 0xf2, 0xf7, 0x61, 0x45, 0x9a, 0x88, 0xa8, 0xf0, 0x6a, 0x3a, 0x1f, 0x37, + 0xa6, 0xea, 0xea, 0x8f, 0xe3, 0x91, 0xdb, 0x98, 0x12, 0xa3, 0xdb, 0xa9, 0xcc, 0xdb, 0xd4, 0x16, + 0x7a, 0x5d, 0x4e, 0xd2, 0x1f, 0xdb, 0xae, 0x52, 0x39, 0x7a, 0x1a, 0x59, 0x18, 0x1e, 0x6f, 0x66, + 0x31, 0x74, 0x85, 0x43, 0xda, 0x34, 0x80, 0x3f, 0xb0, 0x6c, 0xcb, 0x3f, 0x64, 0xed, 0x73, 0x2c, + 0x80, 0x17, 0xa0, 0x36, 0xbd, 0xbc, 0xc3, 0x2f, 0xac, 0x40, 0xef, 0x39, 0x26, 0xa6, 0x56, 0x3b, + 0xab, 0x95, 0x09, 0x60, 0xc3, 0x31, 0x71, 0xb4, 0x9e, 0xca, 0xc7, 0x5d, 0x4f, 0x95, 0xc4, 0x7a, + 0x5a, 0x81, 0x39, 0x0f, 0x1b, 0xbe, 0x63, 0xb3, 0x33, 0xbd, 0xc6, 0x9f, 0xc8, 0x44, 0x0c, 0xb1, + 0xef, 0x93, 0x3e, 0x78, 0x20, 0xc5, 0x1f, 0x63, 0x41, 0xdf, 0x42, 0x4e, 0xd0, 0x97, 0x53, 0xc0, + 0x94, 0x08, 0xfa, 0x6a, 0x39, 0x41, 0xdf, 0x54, 0xf5, 0x4b, 0x51, 0x78, 0x5b, 0x9f, 0x14, 0xde, + 0xc6, 0xe3, 0xc3, 0x45, 0x39, 0x3e, 0xbc, 0x1b, 0x3f, 0x48, 0x36, 0xd2, 0x69, 0xdb, 0xfc, 0xb2, + 0xe8, 0xcf, 0x71, 0x01, 0xff, 0x8b, 0x02, 0xab, 0xa9, 0x05, 0xc7, 0x97, 0xf0, 0x5b, 0x89, 0xca, + 0xa8, 0xb5, 0x1c, 0x2d, 0x87, 0x85, 0x51, 0x6d, 0xa9, 0x30, 0xea, 0x8d, 0x3c, 0x92, 0xcf, 0xbc, + 0x2e, 0xea, 0xfb, 0x0a, 0xa0, 0x8c, 0xa3, 0xf2, 0x6d, 0x11, 0x75, 0x1f, 0xe3, 0xd2, 0x88, 0x07, + 0xde, 0xef, 0x47, 0x81, 0x77, 0xe1, 0x38, 0xd7, 0x03, 0x61, 0xc2, 0xf6, 0x57, 0x05, 0x78, 0x69, + 0xdf, 0x35, 0x13, 0x61, 0x24, 0xc7, 0x9a, 0xde, 0xb3, 0xdd, 0x96, 0xb3, 0xcd, 0x27, 0x1c, 0x42, + 0xf1, 0x24, 0x43, 0x40, 0xdf, 0xc9, 0xaa, 0x07, 0xb8, 0x2b, 0xe5, 0xd3, 0xf2, 0x07, 0xf8, 0x3b, + 0xce, 0x82, 0xa9, 0x70, 0x61, 0xbc, 0x00, 0x3c, 0xe4, 0xfc, 0xbf, 0xb0, 0xb8, 0xf5, 0x02, 0xf7, + 0xba, 0x47, 0x76, 0xef, 0x18, 0x5a, 0x6f, 0x40, 0xb1, 0x37, 0x34, 0x79, 0x92, 0x80, 0xfc, 0x8d, + 0x47, 0xd1, 0x45, 0x39, 0x8a, 0xd6, 0xa1, 0x11, 0xf5, 0xc0, 0x17, 0xd0, 0x0a, 0x59, 0x40, 0x26, + 0x41, 0x26, 0xcc, 0x17, 0x34, 0xfe, 0xc4, 0xe1, 0xd8, 0x63, 0x35, 0xd7, 0x0c, 0x8e, 0x3d, 0x4f, + 0xf6, 0xda, 0x45, 0xd9, 0x6b, 0xab, 0x3f, 0x56, 0xa0, 0x4a, 0x7a, 0xf8, 0x54, 0xf2, 0xf3, 0x23, + 0x69, 0x31, 0x3a, 0x92, 0x86, 0x27, 0xdb, 0x52, 0xfc, 0x64, 0x1b, 0x49, 0x3e, 0x4b, 0xc1, 0x69, + 0xc9, 0xe7, 0x42, 0x38, 0xf6, 0x3c, 0xf5, 0x02, 0x2c, 0x30, 0xd9, 0xf8, 0xc8, 0x1b, 0x50, 0x1c, + 0x79, 0x03, 0x31, 0x7f, 0x23, 0x6f, 0xa0, 0xfe, 0xa1, 0x02, 0xb5, 0x76, 0x10, 0x18, 0xbd, 0xc3, + 0x63, 0x0c, 0x20, 0x14, 0xae, 0x10, 0x17, 0x2e, 0x3d, 0x88, 0x48, 0xdc, 0xd2, 0x18, 0x71, 0x67, + 0x25, 0x71, 0x55, 0xa8, 0x0b, 0x59, 0xc6, 0x0a, 0xbc, 0x03, 0xa8, 0xe3, 0x78, 0xc1, 0x07, 0x8e, + 0xf7, 0xdc, 0xf0, 0xcc, 0xe3, 0x9d, 0x5a, 0x11, 0x94, 0xf8, 0x3b, 0xa9, 0xc5, 0xd7, 0x66, 0x35, + 0xfa, 0x5f, 0x7d, 0x15, 0x4e, 0x49, 0xfc, 0xc6, 0x76, 0x7c, 0x07, 0xaa, 0x74, 0x17, 0xe6, 0x07, + 0x9a, 0xab, 0xf1, 0x24, 0xf4, 0x84, 0xdd, 0x5a, 0xdd, 0x84, 0x25, 0x12, 0x8f, 0x51, 0x78, 0xe8, + 0x5f, 0xae, 0x25, 0x62, 0xfe, 0xd5, 0x14, 0x8b, 0x44, 0xbc, 0xff, 0x1b, 0x05, 0x66, 0x29, 0x3c, + 0x15, 0x23, 0xad, 0x91, 0x7d, 0xce, 0x75, 0xf4, 0xc0, 0xe8, 0x87, 0xef, 0xfb, 0x12, 0xc0, 0x9e, + 0xd1, 0xa7, 0x89, 0x0d, 0xda, 0x68, 0x5a, 0x7d, 0xec, 0x07, 0x22, 0x51, 0x56, 0x25, 0xb0, 0x4d, + 0x06, 0x22, 0x8a, 0xa1, 0xf9, 0xc4, 0x12, 0x4d, 0x1b, 0xd2, 0xff, 0xe8, 0x35, 0xf6, 0xba, 0x4e, + 0x7e, 0x76, 0x88, 0xbe, 0xc6, 0xd3, 0x82, 0x72, 0x22, 0xad, 0x13, 0x3e, 0xa3, 0xcb, 0x50, 0xa2, + 0xd7, 0xc4, 0xf3, 0x79, 0x5a, 0xa2, 0x28, 0xc4, 0x2a, 0x5c, 0xcb, 0xb6, 0xb1, 0x49, 0x03, 0xa0, + 0xb2, 0xc6, 0x9f, 0xd4, 0xf7, 0x01, 0xc5, 0x95, 0xc7, 0x27, 0xe8, 0x32, 0xcc, 0x51, 0xdd, 0x8a, + 0x20, 0x76, 0x29, 0xc5, 0x5a, 0xe3, 0x08, 0xea, 0xb7, 0x01, 0xb1, 0xbe, 0xa4, 0xc0, 0xf5, 0x38, + 0x13, 0x98, 0x13, 0xc2, 0xfe, 0x8d, 0x02, 0xa7, 0x24, 0xee, 0x5c, 0xbe, 0x57, 0x65, 0xf6, 0x19, + 0xe2, 0x71, 0xd6, 0xef, 0x4a, 0x3b, 0xf3, 0xe5, 0xb4, 0x18, 0xbf, 0xa3, 0x5d, 0xf9, 0xe7, 0x0a, + 0x40, 0x7b, 0x14, 0x1c, 0xf2, 0x0b, 0xd3, 0xf8, 0x24, 0x2a, 0x89, 0x49, 0x6c, 0x41, 0xd9, 0x35, + 0x7c, 0xff, 0xb9, 0xe3, 0x89, 0x43, 0x64, 0xf8, 0x4c, 0xaf, 0x39, 0x47, 0xfc, 0xb5, 0xe3, 0x8a, + 0x46, 0xff, 0xa3, 0x97, 0xa1, 0xce, 0x5e, 0x44, 0xd7, 0x0d, 0xd3, 0xf4, 0x44, 0xbd, 0x51, 0x45, + 0xab, 0x31, 0x68, 0x9b, 0x01, 0x09, 0x9a, 0x45, 0x93, 0x06, 0xc1, 0x91, 0x1e, 0x38, 0x4f, 0xb1, + 0xcd, 0x0f, 0x86, 0x35, 0x01, 0xdd, 0x23, 0x40, 0x96, 0x75, 0xeb, 0x5b, 0x7e, 0xe0, 0x09, 0x34, + 0x91, 0x3b, 0xe4, 0x50, 0x8a, 0xa6, 0xfe, 0x95, 0x02, 0x8d, 0xce, 0x68, 0x30, 0x60, 0xca, 0x3d, + 0xc9, 0x24, 0x5f, 0xe1, 0x43, 0x29, 0xa4, 0x4d, 0x3e, 0x52, 0x14, 0x1f, 0xe2, 0x67, 0x72, 0x97, + 0x75, 0x1d, 0x96, 0x62, 0x12, 0x73, 0xc3, 0x91, 0x22, 0x7b, 0x45, 0x8e, 0xec, 0xd5, 0x36, 0x20, + 0x76, 0x7d, 0x73, 0xe2, 0x51, 0xaa, 0xa7, 0xe1, 0x94, 0xc4, 0x82, 0x6f, 0xc5, 0x57, 0xa0, 0xc6, + 0xeb, 0x99, 0xb8, 0x41, 0x9c, 0x81, 0x32, 0x71, 0xa9, 0x3d, 0xcb, 0x14, 0x85, 0x02, 0xf3, 0xae, + 0x63, 0x6e, 0x58, 0xa6, 0xa7, 0x7e, 0x0d, 0x6a, 0xfc, 0x1d, 0x4e, 0x8e, 0x7b, 0x0f, 0xea, 0xbc, + 0xc8, 0x4c, 0x97, 0x5e, 0x7a, 0x3a, 0x93, 0x51, 0x54, 0x25, 0x54, 0x61, 0xc7, 0x1f, 0xd5, 0xef, + 0x40, 0x8b, 0x45, 0x0b, 0x12, 0x63, 0x31, 0xc0, 0x7b, 0x20, 0xaa, 0x8f, 0x73, 0xf8, 0xcb, 0x94, + 0x35, 0x2f, 0xfe, 0xa8, 0x9e, 0x83, 0xb5, 0x4c, 0xfe, 0x7c, 0xf4, 0x2e, 0x34, 0xa2, 0x06, 0xf6, + 0x66, 0x4e, 0x58, 0xfd, 0xa0, 0xc4, 0xaa, 0x1f, 0x56, 0xc2, 0xd8, 0xbb, 0x20, 0x76, 0x2e, 0x1a, + 0x5e, 0x47, 0x27, 0xae, 0xe2, 0xb8, 0x13, 0x57, 0x49, 0x3a, 0x71, 0xa9, 0x8f, 0x42, 0x1d, 0xf2, + 0x73, 0xef, 0x5d, 0x7a, 0x32, 0x67, 0x7d, 0x0b, 0xa7, 0x76, 0x36, 0x7b, 0x7c, 0x0c, 0x49, 0x8b, + 0xe1, 0xab, 0x97, 0xa1, 0x26, 0xbb, 0xb7, 0x98, 0xc7, 0x52, 0x52, 0x1e, 0xab, 0x9e, 0x70, 0x56, + 0x6f, 0x26, 0x8e, 0x14, 0x59, 0x7a, 0x4d, 0x1c, 0x28, 0x6e, 0x49, 0x6e, 0xeb, 0x4b, 0x52, 0xa6, + 0xfa, 0x77, 0xe4, 0xb1, 0x96, 0xb9, 0x1f, 0xff, 0xc0, 0x27, 0xf4, 0x7c, 0xa0, 0xea, 0x25, 0xa8, + 0xee, 0x8f, 0x7b, 0x93, 0xbe, 0x24, 0xca, 0xab, 0xde, 0x81, 0xe5, 0x0f, 0xac, 0x01, 0xf6, 0x8f, + 0xfc, 0x00, 0x0f, 0xb7, 0xa9, 0x7b, 0x39, 0xb0, 0xb0, 0x87, 0xce, 0x03, 0xd0, 0x53, 0xa4, 0xeb, + 0x58, 0xe1, 0xdb, 0xc3, 0x31, 0x88, 0xfa, 0x4b, 0x05, 0x16, 0x23, 0xc2, 0x69, 0x0a, 0xdd, 0xde, + 0x86, 0xd9, 0x03, 0x5f, 0xdc, 0xb6, 0x25, 0x72, 0x09, 0x59, 0x22, 0x68, 0xa5, 0x03, 0x7f, 0xdb, + 0x44, 0xef, 0x00, 0x8c, 0x7c, 0x6c, 0xf2, 0xec, 0xdc, 0x84, 0x72, 0xbf, 0x0a, 0x41, 0x65, 0xf9, + 0xbd, 0x5b, 0x50, 0xb5, 0x6c, 0xc7, 0xc4, 0x34, 0x73, 0x6b, 0x4e, 0x2a, 0xf9, 0x03, 0x86, 0xbb, + 0xef, 0x63, 0x53, 0xd5, 0xf9, 0xbe, 0x25, 0xb4, 0xc9, 0x4d, 0xe1, 0x43, 0x58, 0x62, 0xee, 0xe7, + 0x20, 0x14, 0x36, 0xb3, 0xa0, 0x3a, 0xa1, 0x15, 0xad, 0x61, 0xf1, 0x88, 0x45, 0x10, 0xa9, 0x77, + 0xe0, 0x74, 0xa2, 0x38, 0x74, 0xfa, 0x6b, 0xea, 0x8f, 0x12, 0xf7, 0x4d, 0x91, 0xa9, 0x5e, 0x97, + 0x0b, 0xeb, 0xf3, 0x6a, 0x51, 0x79, 0x8d, 0xf7, 0x3e, 0x9c, 0x91, 0x2e, 0xc3, 0x24, 0x59, 0x6e, + 0x25, 0x82, 0xb0, 0x0b, 0xe3, 0xf9, 0x25, 0xa2, 0xb1, 0xff, 0x54, 0x60, 0x39, 0x0b, 0xe1, 0x84, + 0x17, 0xb1, 0xdf, 0x1a, 0xf3, 0x52, 0xce, 0x5b, 0x93, 0x04, 0xfa, 0xbd, 0x5c, 0x5c, 0xef, 0xb0, + 0x92, 0xfe, 0xc9, 0x73, 0x52, 0x9c, 0x6e, 0x4e, 0x7e, 0x53, 0x88, 0x25, 0x1b, 0x72, 0xca, 0xee, + 0x3f, 0xc5, 0xe5, 0xdf, 0x46, 0xa2, 0xea, 0xfe, 0x6a, 0x26, 0xe1, 0x84, 0xa2, 0x7b, 0x2d, 0xeb, + 0x90, 0x7d, 0x7d, 0x12, 0xa7, 0x2f, 0xec, 0xbd, 0xf0, 0x7f, 0x29, 0x50, 0x97, 0x27, 0x04, 0xbd, + 0x9f, 0x51, 0x72, 0xff, 0xd2, 0x84, 0x01, 0x4a, 0x15, 0xf7, 0xbc, 0xc4, 0xbd, 0x30, 0x7d, 0x89, + 0x7b, 0x71, 0xba, 0x12, 0xf7, 0xfb, 0x50, 0x7f, 0xee, 0x59, 0x81, 0xf1, 0x64, 0x80, 0xf5, 0x81, + 0x71, 0x84, 0x3d, 0xee, 0xdd, 0x72, 0xdd, 0x50, 0x4d, 0x90, 0x3c, 0x24, 0x14, 0xea, 0xdf, 0x29, + 0x50, 0x16, 0x62, 0x4c, 0x2c, 0x32, 0x5f, 0x1d, 0x11, 0x34, 0x9d, 0x16, 0xb6, 0xda, 0x86, 0xed, + 0xe8, 0x3e, 0x26, 0x3b, 0xec, 0xc4, 0x92, 0xed, 0x65, 0x4a, 0xb7, 0xe1, 0x78, 0x78, 0xc7, 0xb0, + 0x9d, 0x2e, 0x23, 0x42, 0x6d, 0x68, 0x30, 0x7e, 0x94, 0x15, 0x61, 0x3a, 0xd1, 0xaf, 0xd7, 0x29, + 0x01, 0x61, 0x42, 0x98, 0xf9, 0xea, 0x9f, 0x17, 0xa1, 0x1a, 0xd3, 0xcc, 0x84, 0x01, 0x6c, 0xc0, + 0x92, 0x28, 0x2e, 0xf0, 0x71, 0x30, 0x5d, 0xb5, 0xf9, 0x22, 0xa7, 0xe8, 0xe2, 0x80, 0xed, 0x27, + 0xf7, 0x60, 0xd1, 0x78, 0x66, 0x58, 0x03, 0xaa, 0xf5, 0xa9, 0x36, 0xa3, 0x7a, 0x88, 0x1f, 0xee, + 0x48, 0x6c, 0xdc, 0x53, 0x15, 0xa1, 0x03, 0xc5, 0x8d, 0x2a, 0xde, 0x7d, 0x3f, 0x56, 0xa0, 0x92, + 0x5b, 0xf1, 0xee, 0xfb, 0x61, 0x7f, 0xb4, 0x20, 0x96, 0xd6, 0xf8, 0xfb, 0xfc, 0xdd, 0xdd, 0xf1, + 0xfd, 0x11, 0xdc, 0x0f, 0x28, 0x2a, 0x51, 0xd8, 0xd0, 0xf8, 0xd8, 0xf1, 0xf4, 0x38, 0xfd, 0xfc, + 0x04, 0x85, 0x51, 0x8a, 0x4e, 0xc8, 0x44, 0x7d, 0x0f, 0xce, 0x68, 0xd8, 0x71, 0xb1, 0x1d, 0xae, + 0x93, 0x87, 0x4e, 0xff, 0x18, 0x3b, 0xdd, 0x59, 0x68, 0x65, 0xd1, 0xf3, 0xb8, 0x74, 0x04, 0xad, + 0x8d, 0x43, 0xdc, 0x7b, 0x4a, 0xa3, 0x91, 0x93, 0xe4, 0x97, 0x5b, 0x50, 0x1e, 0x38, 0x3d, 0xf6, + 0x75, 0x2a, 0x7e, 0x74, 0x13, 0xcf, 0x39, 0xb7, 0x66, 0xe7, 0x60, 0x2d, 0xb3, 0x5b, 0x2e, 0x15, + 0x82, 0xc6, 0x03, 0x1c, 0x6c, 0x3d, 0xc3, 0x76, 0xb8, 0x91, 0xaa, 0xff, 0xa3, 0xc4, 0xb6, 0x6c, + 0xda, 0x74, 0x8c, 0xbc, 0x3c, 0xea, 0xc0, 0x72, 0x84, 0x82, 0x09, 0x35, 0xfb, 0x3a, 0x0d, 0xfb, + 0xae, 0x53, 0xf6, 0x9d, 0x3d, 0xed, 0x84, 0x7e, 0x94, 0x06, 0xf5, 0x52, 0xb0, 0x44, 0x26, 0xa7, + 0x98, 0xcc, 0xe4, 0x74, 0x60, 0x39, 0xbe, 0x29, 0x87, 0x9b, 0x4c, 0x69, 0xaa, 0x77, 0xbb, 0x90, + 0x9b, 0x82, 0x5d, 0x79, 0x05, 0xca, 0xe2, 0x83, 0x68, 0x68, 0x1e, 0x8a, 0x7b, 0x1b, 0x9d, 0xc6, + 0x0c, 0xf9, 0xb3, 0xbf, 0xd9, 0x69, 0x28, 0xa8, 0x0c, 0xa5, 0xee, 0xc6, 0x5e, 0xa7, 0x51, 0xb8, + 0x32, 0x84, 0x46, 0xf2, 0x9b, 0x60, 0x68, 0x15, 0x4e, 0x75, 0xb4, 0xdd, 0x4e, 0xfb, 0x41, 0x7b, + 0x6f, 0x7b, 0x77, 0x47, 0xef, 0x68, 0xdb, 0x8f, 0xdb, 0x7b, 0x5b, 0x8d, 0x19, 0x74, 0x11, 0xce, + 0xc5, 0x1b, 0x3e, 0xdc, 0xed, 0xee, 0xe9, 0x7b, 0xbb, 0xfa, 0xc6, 0xee, 0xce, 0x5e, 0x7b, 0x7b, + 0x67, 0x4b, 0x6b, 0x28, 0xe8, 0x1c, 0x9c, 0x89, 0xa3, 0xdc, 0xdf, 0xde, 0xdc, 0xd6, 0xb6, 0x36, + 0xc8, 0xff, 0xf6, 0xc3, 0x46, 0xe1, 0xca, 0xbb, 0x50, 0x93, 0x3e, 0x6e, 0x45, 0x44, 0xea, 0xec, + 0x6e, 0x36, 0x66, 0x50, 0x0d, 0x2a, 0x71, 0x3e, 0x65, 0x28, 0xed, 0xec, 0x6e, 0x6e, 0x35, 0x0a, + 0x08, 0x60, 0x6e, 0xaf, 0xad, 0x3d, 0xd8, 0xda, 0x6b, 0x14, 0xaf, 0xdc, 0x49, 0xbe, 0xa4, 0x85, + 0xd1, 0x12, 0xd4, 0xba, 0xed, 0x9d, 0xcd, 0xfb, 0xbb, 0xdf, 0xd0, 0xb5, 0xad, 0xf6, 0xe6, 0x37, + 0x1b, 0x33, 0x68, 0x19, 0x1a, 0x02, 0xb4, 0xb3, 0xbb, 0xc7, 0xa0, 0xca, 0x95, 0xa7, 0x89, 0xcd, + 0x06, 0xa3, 0xd3, 0xb0, 0x14, 0x76, 0xa9, 0x6f, 0x68, 0x5b, 0xed, 0xbd, 0x2d, 0x22, 0x89, 0x04, + 0xd6, 0xf6, 0x77, 0x76, 0xb6, 0x77, 0x1e, 0x34, 0x14, 0xc2, 0x35, 0x02, 0x6f, 0x7d, 0x63, 0x9b, + 0x20, 0x17, 0x64, 0xe4, 0xfd, 0x9d, 0xaf, 0xee, 0xec, 0x7e, 0x7d, 0xa7, 0x51, 0xbc, 0xf2, 0xff, + 0xe3, 0x49, 0x86, 0xc8, 0x0c, 0xd6, 0x60, 0x35, 0xd5, 0xa3, 0xbe, 0xf5, 0x78, 0x6b, 0x67, 0xaf, + 0x31, 0x23, 0x37, 0x76, 0xf7, 0xda, 0x5a, 0xd4, 0xa8, 0x24, 0x1b, 0x77, 0x3b, 0x9d, 0xb0, 0xb1, + 0x20, 0x37, 0x6e, 0x6e, 0x3d, 0xdc, 0x8a, 0x28, 0x8b, 0x37, 0x7e, 0x1a, 0x7d, 0xe3, 0xa8, 0x8b, + 0x3d, 0x5a, 0x08, 0xb7, 0x09, 0xf3, 0xe2, 0x8b, 0x7f, 0x52, 0x74, 0x24, 0x7f, 0xa1, 0xb0, 0xb5, + 0x96, 0xd9, 0xc6, 0x57, 0xdd, 0x0c, 0x7a, 0x4c, 0xcf, 0x8c, 0xb1, 0x37, 0x9a, 0x2f, 0x24, 0xce, + 0x69, 0xa9, 0x17, 0xa7, 0x5b, 0x17, 0x73, 0x30, 0x42, 0xbe, 0xdf, 0x24, 0x07, 0xc2, 0xf8, 0xe7, + 0x3c, 0xd0, 0x45, 0xf9, 0x3c, 0x97, 0xf1, 0xa5, 0x90, 0x96, 0x9a, 0x87, 0x12, 0xb2, 0xd6, 0xa1, + 0x91, 0xfc, 0x9c, 0x07, 0x92, 0xd2, 0x24, 0x63, 0xbe, 0x16, 0xd2, 0xfa, 0x52, 0x3e, 0x52, 0xbc, + 0x83, 0xd4, 0x57, 0x2a, 0x2e, 0xe5, 0xbf, 0xf7, 0x9f, 0xd1, 0xc1, 0xb8, 0x8f, 0x03, 0x30, 0xe5, + 0xc8, 0x2f, 0x9d, 0xa2, 0xc4, 0x87, 0x21, 0x32, 0xde, 0x57, 0x97, 0x95, 0x93, 0xfd, 0xae, 0xb2, + 0x3a, 0x83, 0xfe, 0x0f, 0x2c, 0x26, 0x6a, 0x99, 0x90, 0x44, 0x98, 0x5d, 0xa2, 0xd5, 0xba, 0x94, + 0x8b, 0x23, 0xcf, 0x6a, 0xbc, 0x5e, 0x29, 0x39, 0xab, 0x19, 0x75, 0x50, 0xc9, 0x59, 0xcd, 0x2c, + 0x77, 0xa2, 0x86, 0x28, 0xd5, 0x26, 0xc9, 0x86, 0x98, 0x55, 0x0b, 0xd5, 0xba, 0x98, 0x83, 0x11, + 0x57, 0x48, 0xa2, 0x3a, 0x49, 0x56, 0x48, 0x76, 0xdd, 0x53, 0xeb, 0x52, 0x2e, 0x4e, 0x72, 0x26, + 0xa3, 0xaa, 0x88, 0xf4, 0x4c, 0xa6, 0x2a, 0x73, 0xd2, 0x33, 0x99, 0x2e, 0xaa, 0xe0, 0x33, 0x99, + 0xa8, 0x63, 0x50, 0x73, 0x73, 0xac, 0x59, 0x33, 0x99, 0x9d, 0x87, 0x55, 0x67, 0xd0, 0x73, 0x68, + 0x8e, 0x4b, 0xa5, 0xa1, 0xab, 0xc7, 0xc8, 0xf8, 0xb5, 0x5e, 0x9f, 0x0e, 0x39, 0xec, 0x18, 0x03, + 0x4a, 0x07, 0x27, 0xe8, 0x65, 0x59, 0xdd, 0x63, 0x82, 0x9f, 0xd6, 0x2b, 0x93, 0xd0, 0xc2, 0x6e, + 0x1e, 0x40, 0x59, 0x24, 0xe9, 0x90, 0xe4, 0x02, 0x13, 0xc9, 0xc1, 0xd6, 0xd9, 0xec, 0xc6, 0x90, + 0xd1, 0x57, 0xa0, 0x44, 0xa0, 0x68, 0x35, 0x89, 0x27, 0x18, 0x34, 0xd3, 0x0d, 0x21, 0x71, 0x1b, + 0xe6, 0x58, 0xf6, 0x09, 0x49, 0xd7, 0x5f, 0x52, 0x76, 0xac, 0xd5, 0xca, 0x6a, 0x0a, 0x59, 0x74, + 0xd8, 0xf7, 0x53, 0x79, 0x32, 0x09, 0x9d, 0x4f, 0x7e, 0xc8, 0x4b, 0xce, 0x5a, 0xb5, 0x5e, 0x1a, + 0xdb, 0x1e, 0xb7, 0xd9, 0xc4, 0x81, 0xed, 0x62, 0xce, 0xe9, 0x3a, 0xcb, 0x66, 0xb3, 0xcf, 0xec, + 0x6c, 0x72, 0xd3, 0x67, 0x7a, 0x79, 0x72, 0xc7, 0xde, 0x9b, 0xc8, 0x93, 0x3b, 0xfe, 0x6a, 0x80, + 0x2d, 0x8d, 0xe4, 0x5b, 0xd1, 0x6a, 0xde, 0x9b, 0xf9, 0x59, 0x4b, 0x63, 0xcc, 0x1b, 0xff, 0xea, + 0x0c, 0x3a, 0x84, 0x53, 0x19, 0x9f, 0x04, 0x40, 0xaf, 0x8c, 0xf7, 0xbf, 0x52, 0x2f, 0xaf, 0x4e, + 0xc4, 0x8b, 0xf7, 0x94, 0x71, 0x83, 0x2c, 0xf7, 0x34, 0xfe, 0x0a, 0x5b, 0xee, 0x29, 0xef, 0x2a, + 0x9a, 0x1a, 0x22, 0xf7, 0x21, 0x67, 0xb2, 0xae, 0x55, 0x33, 0x0c, 0x31, 0xe5, 0x31, 0x0e, 0xe1, + 0x54, 0x46, 0x00, 0x2f, 0x0b, 0x3b, 0xfe, 0x60, 0x21, 0x0b, 0x9b, 0x77, 0x12, 0x98, 0x41, 0xdf, + 0x02, 0xf4, 0x00, 0x07, 0x72, 0xe4, 0xe5, 0x23, 0x69, 0xa1, 0x26, 0xcf, 0x0a, 0x63, 0xec, 0x53, + 0x3a, 0x34, 0xa8, 0x33, 0xd7, 0x95, 0x1b, 0x7f, 0x56, 0x84, 0x05, 0x96, 0xbf, 0xe0, 0x61, 0xd4, + 0x23, 0x80, 0x28, 0x15, 0x88, 0xce, 0x25, 0x27, 0x4f, 0xca, 0xaf, 0xb6, 0xce, 0x8f, 0x6b, 0x8e, + 0x2f, 0xd7, 0x58, 0x8a, 0x4d, 0x5e, 0xae, 0xe9, 0x8c, 0xa1, 0xbc, 0x5c, 0x33, 0x72, 0x73, 0xea, + 0x0c, 0xfa, 0x08, 0x2a, 0x61, 0x46, 0x47, 0x56, 0x42, 0x32, 0x35, 0xd5, 0x3a, 0x37, 0xa6, 0x35, + 0x2e, 0x5d, 0x2c, 0x51, 0x23, 0x4b, 0x97, 0x4e, 0x02, 0xc9, 0xd2, 0x65, 0x65, 0x78, 0xa2, 0xf1, + 0xb2, 0x2b, 0xdf, 0x8c, 0xf1, 0x4a, 0x37, 0xeb, 0x19, 0xe3, 0x95, 0xef, 0x8a, 0xd5, 0x99, 0xfb, + 0xf7, 0x7e, 0xf6, 0xeb, 0xf3, 0xca, 0x2f, 0x7f, 0x7d, 0x7e, 0xe6, 0xff, 0x7d, 0x72, 0x5e, 0xf9, + 0xd9, 0x27, 0xe7, 0x95, 0x5f, 0x7c, 0x72, 0x5e, 0xf9, 0xd5, 0x27, 0xe7, 0x95, 0xef, 0xff, 0xc7, + 0xf9, 0x99, 0x6f, 0xa9, 0x4f, 0x6f, 0xf9, 0xeb, 0x96, 0x73, 0xad, 0xe7, 0x59, 0x6f, 0x18, 0xae, + 0x75, 0xcd, 0x7d, 0xda, 0xbf, 0x66, 0xb8, 0x96, 0x7f, 0x8d, 0xf3, 0xbd, 0xf6, 0xec, 0xcd, 0x27, + 0x73, 0xf4, 0xdb, 0xd1, 0x6f, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x94, 0xf5, 0x05, 0x82, + 0xf5, 0x5b, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -8656,7 +8995,8 @@ type RuntimeServiceClient interface { // ContainerStatus returns status of the container. If the container is not // present, returns an error. ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error) - // UpdateContainerResources updates ContainerConfig of the container. + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. UpdateContainerResources(ctx context.Context, in *UpdateContainerResourcesRequest, opts ...grpc.CallOption) (*UpdateContainerResourcesResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been @@ -8686,6 +9026,10 @@ type RuntimeServiceClient interface { UpdateRuntimeConfig(ctx context.Context, in *UpdateRuntimeConfigRequest, opts ...grpc.CallOption) (*UpdateRuntimeConfigResponse, error) // Status returns the status of the runtime. Status(ctx context.Context, in *StatusRequest, opts ...grpc.CallOption) (*StatusResponse, error) + // CheckpointContainer checkpoints a container + CheckpointContainer(ctx context.Context, in *CheckpointContainerRequest, opts ...grpc.CallOption) (*CheckpointContainerResponse, error) + // GetContainerEvents gets container events from the CRI runtime + GetContainerEvents(ctx context.Context, in *GetEventsRequest, opts ...grpc.CallOption) (RuntimeService_GetContainerEventsClient, error) } type runtimeServiceClient struct { @@ -8912,6 +9256,47 @@ func (c *runtimeServiceClient) Status(ctx context.Context, in *StatusRequest, op return out, nil } +func (c *runtimeServiceClient) CheckpointContainer(ctx context.Context, in *CheckpointContainerRequest, opts ...grpc.CallOption) (*CheckpointContainerResponse, error) { + out := new(CheckpointContainerResponse) + err := c.cc.Invoke(ctx, "/runtime.v1.RuntimeService/CheckpointContainer", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *runtimeServiceClient) GetContainerEvents(ctx context.Context, in *GetEventsRequest, opts ...grpc.CallOption) (RuntimeService_GetContainerEventsClient, error) { + stream, err := c.cc.NewStream(ctx, &_RuntimeService_serviceDesc.Streams[0], "/runtime.v1.RuntimeService/GetContainerEvents", opts...) + if err != nil { + return nil, err + } + x := &runtimeServiceGetContainerEventsClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type RuntimeService_GetContainerEventsClient interface { + Recv() (*ContainerEventResponse, error) + grpc.ClientStream +} + +type runtimeServiceGetContainerEventsClient struct { + grpc.ClientStream +} + +func (x *runtimeServiceGetContainerEventsClient) Recv() (*ContainerEventResponse, error) { + m := new(ContainerEventResponse) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + // RuntimeServiceServer is the server API for RuntimeService service. type RuntimeServiceServer interface { // Version returns the runtime name, runtime version, and runtime API version. @@ -8959,7 +9344,8 @@ type RuntimeServiceServer interface { // ContainerStatus returns status of the container. If the container is not // present, returns an error. ContainerStatus(context.Context, *ContainerStatusRequest) (*ContainerStatusResponse, error) - // UpdateContainerResources updates ContainerConfig of the container. + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. UpdateContainerResources(context.Context, *UpdateContainerResourcesRequest) (*UpdateContainerResourcesResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been @@ -8989,6 +9375,10 @@ type RuntimeServiceServer interface { UpdateRuntimeConfig(context.Context, *UpdateRuntimeConfigRequest) (*UpdateRuntimeConfigResponse, error) // Status returns the status of the runtime. Status(context.Context, *StatusRequest) (*StatusResponse, error) + // CheckpointContainer checkpoints a container + CheckpointContainer(context.Context, *CheckpointContainerRequest) (*CheckpointContainerResponse, error) + // GetContainerEvents gets container events from the CRI runtime + GetContainerEvents(*GetEventsRequest, RuntimeService_GetContainerEventsServer) error } // UnimplementedRuntimeServiceServer can be embedded to have forward compatible implementations. @@ -9067,6 +9457,12 @@ func (*UnimplementedRuntimeServiceServer) UpdateRuntimeConfig(ctx context.Contex func (*UnimplementedRuntimeServiceServer) Status(ctx context.Context, req *StatusRequest) (*StatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method Status not implemented") } +func (*UnimplementedRuntimeServiceServer) CheckpointContainer(ctx context.Context, req *CheckpointContainerRequest) (*CheckpointContainerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CheckpointContainer not implemented") +} +func (*UnimplementedRuntimeServiceServer) GetContainerEvents(req *GetEventsRequest, srv RuntimeService_GetContainerEventsServer) error { + return status.Errorf(codes.Unimplemented, "method GetContainerEvents not implemented") +} func RegisterRuntimeServiceServer(s *grpc.Server, srv RuntimeServiceServer) { s.RegisterService(&_RuntimeService_serviceDesc, srv) @@ -9504,6 +9900,45 @@ func _RuntimeService_Status_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _RuntimeService_CheckpointContainer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CheckpointContainerRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(RuntimeServiceServer).CheckpointContainer(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/runtime.v1.RuntimeService/CheckpointContainer", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(RuntimeServiceServer).CheckpointContainer(ctx, req.(*CheckpointContainerRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _RuntimeService_GetContainerEvents_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(GetEventsRequest) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(RuntimeServiceServer).GetContainerEvents(m, &runtimeServiceGetContainerEventsServer{stream}) +} + +type RuntimeService_GetContainerEventsServer interface { + Send(*ContainerEventResponse) error + grpc.ServerStream +} + +type runtimeServiceGetContainerEventsServer struct { + grpc.ServerStream +} + +func (x *runtimeServiceGetContainerEventsServer) Send(m *ContainerEventResponse) error { + return x.ServerStream.SendMsg(m) +} + var _RuntimeService_serviceDesc = grpc.ServiceDesc{ ServiceName: "runtime.v1.RuntimeService", HandlerType: (*RuntimeServiceServer)(nil), @@ -9604,8 +10039,18 @@ var _RuntimeService_serviceDesc = grpc.ServiceDesc{ MethodName: "Status", Handler: _RuntimeService_Status_Handler, }, + { + MethodName: "CheckpointContainer", + Handler: _RuntimeService_CheckpointContainer_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "GetContainerEvents", + Handler: _RuntimeService_GetContainerEvents_Handler, + ServerStreams: true, + }, }, - Streams: []grpc.StreamDesc{}, Metadata: "api.proto", } @@ -13783,6 +14228,20 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Resources != nil { + { + size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } if len(m.LogPath) > 0 { i -= len(m.LogPath) copy(dAtA[i:], m.LogPath) @@ -13976,6 +14435,53 @@ func (m *ContainerStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *ContainerResources) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerResources) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Windows != nil { + { + size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Linux != nil { + { + size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *UpdateContainerResourcesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14388,21 +14894,21 @@ func (m *PortForwardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Port) > 0 { - dAtA73 := make([]byte, len(m.Port)*10) - var j72 int + dAtA76 := make([]byte, len(m.Port)*10) + var j75 int for _, num1 := range m.Port { num := uint64(num1) for num >= 1<<7 { - dAtA73[j72] = uint8(uint64(num)&0x7f | 0x80) + dAtA76[j75] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j72++ + j75++ } - dAtA73[j72] = uint8(num) - j72++ + dAtA76[j75] = uint8(num) + j75++ } - i -= j72 - copy(dAtA[i:], dAtA73[:j72]) - i = encodeVarintApi(dAtA, i, uint64(j72)) + i -= j75 + copy(dAtA[i:], dAtA76[:j75]) + i = encodeVarintApi(dAtA, i, uint64(j75)) i-- dAtA[i] = 0x12 } @@ -15990,6 +16496,146 @@ func (m *ReopenContainerLogResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } +func (m *CheckpointContainerRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckpointContainerRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CheckpointContainerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Timeout != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.Timeout)) + i-- + dAtA[i] = 0x18 + } + if len(m.Location) > 0 { + i -= len(m.Location) + copy(dAtA[i:], m.Location) + i = encodeVarintApi(dAtA, i, uint64(len(m.Location))) + i-- + dAtA[i] = 0x12 + } + if len(m.ContainerId) > 0 { + i -= len(m.ContainerId) + copy(dAtA[i:], m.ContainerId) + i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CheckpointContainerResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *CheckpointContainerResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CheckpointContainerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *GetEventsRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *GetEventsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GetEventsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *ContainerEventResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerEventResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContainerEventResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.PodSandboxMetadata != nil { + { + size, err := m.PodSandboxMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.CreatedAt != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.CreatedAt)) + i-- + dAtA[i] = 0x18 + } + if m.ContainerEventType != 0 { + i = encodeVarintApi(dAtA, i, uint64(m.ContainerEventType)) + i-- + dAtA[i] = 0x10 + } + if len(m.ContainerId) > 0 { + i -= len(m.ContainerId) + copy(dAtA[i:], m.ContainerId) + i = encodeVarintApi(dAtA, i, uint64(len(m.ContainerId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func encodeVarintApi(dAtA []byte, offset int, v uint64) int { offset -= sovApi(v) base := offset @@ -17714,6 +18360,10 @@ func (m *ContainerStatus) Size() (n int) { if l > 0 { n += 1 + l + sovApi(uint64(l)) } + if m.Resources != nil { + l = m.Resources.Size() + n += 2 + l + sovApi(uint64(l)) + } return n } @@ -17738,6 +18388,23 @@ func (m *ContainerStatusResponse) Size() (n int) { return n } +func (m *ContainerResources) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Linux != nil { + l = m.Linux.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Windows != nil { + l = m.Windows.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func (m *UpdateContainerResourcesRequest) Size() (n int) { if m == nil { return 0 @@ -18551,6 +19218,67 @@ func (m *ReopenContainerLogResponse) Size() (n int) { return n } +func (m *CheckpointContainerRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ContainerId) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + l = len(m.Location) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if m.Timeout != 0 { + n += 1 + sovApi(uint64(m.Timeout)) + } + return n +} + +func (m *CheckpointContainerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *GetEventsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *ContainerEventResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ContainerId) + if l > 0 { + n += 1 + l + sovApi(uint64(l)) + } + if m.ContainerEventType != 0 { + n += 1 + sovApi(uint64(m.ContainerEventType)) + } + if m.CreatedAt != 0 { + n += 1 + sovApi(uint64(m.CreatedAt)) + } + if m.PodSandboxMetadata != nil { + l = m.PodSandboxMetadata.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func sovApi(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -19748,6 +20476,7 @@ func (this *ContainerStatus) String() string { `Annotations:` + mapStringForAnnotations + `,`, `Mounts:` + repeatedStringForMounts + `,`, `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`, + `Resources:` + strings.Replace(this.Resources.String(), "ContainerResources", "ContainerResources", 1) + `,`, `}`, }, "") return s @@ -19773,6 +20502,17 @@ func (this *ContainerStatusResponse) String() string { }, "") return s } +func (this *ContainerResources) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerResources{`, + `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, + `Windows:` + strings.Replace(this.Windows.String(), "WindowsContainerResources", "WindowsContainerResources", 1) + `,`, + `}`, + }, "") + return s +} func (this *UpdateContainerResourcesRequest) String() string { if this == nil { return "nil" @@ -20354,6 +21094,49 @@ func (this *ReopenContainerLogResponse) String() string { }, "") return s } +func (this *CheckpointContainerRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CheckpointContainerRequest{`, + `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, + `Location:` + fmt.Sprintf("%v", this.Location) + `,`, + `Timeout:` + fmt.Sprintf("%v", this.Timeout) + `,`, + `}`, + }, "") + return s +} +func (this *CheckpointContainerResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&CheckpointContainerResponse{`, + `}`, + }, "") + return s +} +func (this *GetEventsRequest) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&GetEventsRequest{`, + `}`, + }, "") + return s +} +func (this *ContainerEventResponse) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerEventResponse{`, + `ContainerId:` + fmt.Sprintf("%v", this.ContainerId) + `,`, + `ContainerEventType:` + fmt.Sprintf("%v", this.ContainerEventType) + `,`, + `CreatedAt:` + fmt.Sprintf("%v", this.CreatedAt) + `,`, + `PodSandboxMetadata:` + strings.Replace(this.PodSandboxMetadata.String(), "PodSandboxMetadata", "PodSandboxMetadata", 1) + `,`, + `}`, + }, "") + return s +} func valueToStringApi(v interface{}) string { rv := reflect.ValueOf(v) if rv.IsNil() { @@ -33411,59 +34194,9 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error { } m.LogPath = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipApi(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ContainerStatusResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ContainerStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 16: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -33490,140 +34223,13 @@ func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Status == nil { - m.Status = &ContainerStatus{} + if m.Resources == nil { + m.Resources = &ContainerResources{} } - if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLengthApi - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.Info == nil { - m.Info = make(map[string]string) - } - var mapkey string - var mapvalue string - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthApi - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthApi - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var stringLenmapvalue uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapvalue |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapvalue := int(stringLenmapvalue) - if intStringLenmapvalue < 0 { - return ErrInvalidLengthApi - } - postStringIndexmapvalue := iNdEx + intStringLenmapvalue - if postStringIndexmapvalue < 0 { - return ErrInvalidLengthApi - } - if postStringIndexmapvalue > l { - return io.ErrUnexpectedEOF - } - mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) - iNdEx = postStringIndexmapvalue - } else { - iNdEx = entryPreIndex - skippy, err := skipApi(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthApi - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.Info[mapkey] = mapvalue - iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -33645,7 +34251,7 @@ func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { +func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -33668,47 +34274,382 @@ func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdateContainerResourcesRequest: wiretype end group for non-group") + return fmt.Errorf("proto: ContainerStatusResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateContainerResourcesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ContainerStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowApi - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthApi - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthApi - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.ContainerId = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Status == nil { + m.Status = &ContainerStatus{} + } + if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Info == nil { + m.Info = make(map[string]string) + } + var mapkey string + var mapvalue string + for iNdEx < postIndex { + entryPreIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + if fieldNum == 1 { + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapkey |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + } else if fieldNum == 2 { + var stringLenmapvalue uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLenmapvalue |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapvalue := int(stringLenmapvalue) + if intStringLenmapvalue < 0 { + return ErrInvalidLengthApi + } + postStringIndexmapvalue := iNdEx + intStringLenmapvalue + if postStringIndexmapvalue < 0 { + return ErrInvalidLengthApi + } + if postStringIndexmapvalue > l { + return io.ErrUnexpectedEOF + } + mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue]) + iNdEx = postStringIndexmapvalue + } else { + iNdEx = entryPreIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > postIndex { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + m.Info[mapkey] = mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerResources) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerResources: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerResources: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Linux == nil { + m.Linux = &LinuxContainerResources{} + } + if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Windows == nil { + m.Windows = &WindowsContainerResources{} + } + if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: UpdateContainerResourcesRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UpdateContainerResourcesRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -39490,6 +40431,395 @@ func (m *ReopenContainerLogResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *CheckpointContainerRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckpointContainerRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckpointContainerRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Location", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Location = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Timeout", wireType) + } + m.Timeout = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Timeout |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CheckpointContainerResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: CheckpointContainerResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CheckpointContainerResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *GetEventsRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: GetEventsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: GetEventsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContainerEventResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerEventResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerEventResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContainerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ContainerEventType", wireType) + } + m.ContainerEventType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ContainerEventType |= ContainerEventType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) + } + m.CreatedAt = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.CreatedAt |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PodSandboxMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PodSandboxMetadata == nil { + m.PodSandboxMetadata = &PodSandboxMetadata{} + } + if err := m.PodSandboxMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipApi(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto index 05466a16cae..9feb4b245f4 100644 --- a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto +++ b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1/api.proto @@ -79,7 +79,8 @@ service RuntimeService { // ContainerStatus returns status of the container. If the container is not // present, returns an error. rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {} - // UpdateContainerResources updates ContainerConfig of the container. + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateContainerResourcesResponse) {} // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been @@ -114,6 +115,13 @@ service RuntimeService { // Status returns the status of the runtime. rpc Status(StatusRequest) returns (StatusResponse) {} + + // CheckpointContainer checkpoints a container + rpc CheckpointContainer(CheckpointContainerRequest) returns (CheckpointContainerResponse) {} + + // GetContainerEvents gets container events from the CRI runtime + rpc GetContainerEvents(GetEventsRequest) returns (stream ContainerEventResponse) {} + } // ImageService defines the public APIs for managing images. @@ -755,7 +763,7 @@ message SELinuxOption { // Capability contains the container capabilities to add or drop // Dropping a capability will drop it from all sets. -// If a capability is added to only the add_capabilities list then it gets added to permitted, +// If a capability is added to only the add_capabilities list then it gets added to permitted, // inheritable, effective and bounding sets, i.e. all sets except the ambient set. // If a capability is added to only the add_ambient_capabilities list then it gets added to all sets, i.e permitted // inheritable, effective, bounding and ambient sets. @@ -1151,6 +1159,8 @@ message ContainerStatus { repeated Mount mounts = 14; // Log path of container. string log_path = 15; + // Resource limits configuration of the container. + ContainerResources resources = 16; } message ContainerStatusResponse { @@ -1163,6 +1173,14 @@ message ContainerStatusResponse { map info = 2; } +// ContainerResources holds resource limits configuration for a container. +message ContainerResources { + // Resource limits configuration specific to Linux container. + LinuxContainerResources linux = 1; + // Resource limits configuration specific to Windows container. + WindowsContainerResources windows = 2; +} + message UpdateContainerResourcesRequest { // ID of the container to update. string container_id = 1; @@ -1543,3 +1561,46 @@ message ReopenContainerLogRequest { message ReopenContainerLogResponse{ } + +message CheckpointContainerRequest { + // ID of the container to be checkpointed. + string container_id = 1; + // Location of the checkpoint archive used for export + string location = 2; + // Timeout in seconds for the checkpoint to complete. + // Timeout of zero means to use the CRI default. + // Timeout > 0 means to use the user specified timeout. + int64 timeout = 3; +} + +message CheckpointContainerResponse {} + +message GetEventsRequest {} + +message ContainerEventResponse { + // ID of the container + string container_id = 1; + + // Type of the container event + ContainerEventType container_event_type = 2; + + // Creation timestamp of this event + int64 created_at = 3; + + // ID of the sandbox container + PodSandboxMetadata pod_sandbox_metadata = 4; +} + +enum ContainerEventType { + // Container created + CONTAINER_CREATED_EVENT = 0; + + // Container started + CONTAINER_STARTED_EVENT = 1; + + // Container stopped + CONTAINER_STOPPED_EVENT = 2; + + // Container deleted + CONTAINER_DELETED_EVENT = 3; +} diff --git a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go index 3538c17b996..df3e37de73e 100644 --- a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.pb.go @@ -865,9 +865,9 @@ func (m *Int64Value) GetValue() int64 { // LinuxSandboxSecurityContext holds linux security configuration that will be // applied to a sandbox. Note that: -// 1) It does not apply to containers in the pods. -// 2) It may not be applicable to a PodSandbox which does not contain any running -// process. +// 1. It does not apply to containers in the pods. +// 2. It may not be applicable to a PodSandbox which does not contain any running +// process. type LinuxSandboxSecurityContext struct { // Configurations for the sandbox's namespaces. // This will be used only if the PodSandbox uses namespace for isolation. @@ -895,10 +895,11 @@ type LinuxSandboxSecurityContext struct { // AppArmor profile for the sandbox. Apparmor *SecurityProfile `protobuf:"bytes,10,opt,name=apparmor,proto3" json:"apparmor,omitempty"` // Seccomp profile for the sandbox, candidate values are: - // * runtime/default: the default profile for the container runtime - // * unconfined: unconfined profile, ie, no seccomp sandboxing - // * localhost/: the profile installed on the node. - // is the full path of the profile. + // - runtime/default: the default profile for the container runtime + // - unconfined: unconfined profile, ie, no seccomp sandboxing + // - localhost/: the profile installed on the node. + // is the full path of the profile. + // // Default: "", which is identical with unconfined. SeccompProfilePath string `protobuf:"bytes,7,opt,name=seccomp_profile_path,json=seccompProfilePath,proto3" json:"seccomp_profile_path,omitempty"` // Deprecated: Do not use. XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -1249,8 +1250,9 @@ type PodSandboxConfig struct { // containers. For example, the files might be newline separated JSON // structured logs, systemd-journald journal files, gRPC trace files, etc. // E.g., - // PodSandboxConfig.LogDirectory = `/var/log/pods//` - // ContainerConfig.LogPath = `containerName/Instance#.log` + // + // PodSandboxConfig.LogDirectory = `/var/log/pods//` + // ContainerConfig.LogPath = `containerName/Instance#.log` LogDirectory string `protobuf:"bytes,3,opt,name=log_directory,json=logDirectory,proto3" json:"log_directory,omitempty"` // DNS config for the sandbox. DnsConfig *DNSConfig `protobuf:"bytes,4,opt,name=dns_config,json=dnsConfig,proto3" json:"dns_config,omitempty"` @@ -3603,17 +3605,18 @@ type LinuxContainerSecurityContext struct { // AppArmor profile for the container. Apparmor *SecurityProfile `protobuf:"bytes,16,opt,name=apparmor,proto3" json:"apparmor,omitempty"` // AppArmor profile for the container, candidate values are: - // * runtime/default: equivalent to not specifying a profile. - // * unconfined: no profiles are loaded - // * localhost/: profile loaded on the node - // (localhost) by name. The possible profile names are detailed at - // https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference + // - runtime/default: equivalent to not specifying a profile. + // - unconfined: no profiles are loaded + // - localhost/: profile loaded on the node + // (localhost) by name. The possible profile names are detailed at + // https://gitlab.com/apparmor/apparmor/-/wikis/AppArmor_Core_Policy_Reference ApparmorProfile string `protobuf:"bytes,9,opt,name=apparmor_profile,json=apparmorProfile,proto3" json:"apparmor_profile,omitempty"` // Deprecated: Do not use. // Seccomp profile for the container, candidate values are: - // * runtime/default: the default profile for the container runtime - // * unconfined: unconfined profile, ie, no seccomp sandboxing - // * localhost/: the profile installed on the node. - // is the full path of the profile. + // - runtime/default: the default profile for the container runtime + // - unconfined: unconfined profile, ie, no seccomp sandboxing + // - localhost/: the profile installed on the node. + // is the full path of the profile. + // // Default: "", which is identical with unconfined. SeccompProfilePath string `protobuf:"bytes,10,opt,name=seccomp_profile_path,json=seccompProfilePath,proto3" json:"seccomp_profile_path,omitempty"` // Deprecated: Do not use. XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -4300,10 +4303,11 @@ type ContainerConfig struct { Devices []*Device `protobuf:"bytes,8,rep,name=devices,proto3" json:"devices,omitempty"` // Key-value pairs that may be used to scope and select individual resources. // Label keys are of the form: - // label-key ::= prefixed-name | name - // prefixed-name ::= prefix '/' name - // prefix ::= DNS_SUBDOMAIN - // name ::= DNS_LABEL + // + // label-key ::= prefixed-name | name + // prefixed-name ::= prefix '/' name + // prefix ::= DNS_SUBDOMAIN + // name ::= DNS_LABEL Labels map[string]string `protobuf:"bytes,9,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Unstructured key-value map that may be used by the kubelet to store and // retrieve arbitrary metadata. @@ -4319,8 +4323,9 @@ type ContainerConfig struct { // Path relative to PodSandboxConfig.LogDirectory for container to store // the log (STDOUT and STDERR) on the host. // E.g., - // PodSandboxConfig.LogDirectory = `/var/log/pods//` - // ContainerConfig.LogPath = `containerName/Instance#.log` + // + // PodSandboxConfig.LogDirectory = `/var/log/pods//` + // ContainerConfig.LogPath = `containerName/Instance#.log` // // WARNING: Log management and how kubelet should interface with the // container logs are under active discussion in @@ -5287,9 +5292,11 @@ type ContainerStatus struct { // Mounts for the container. Mounts []*Mount `protobuf:"bytes,14,rep,name=mounts,proto3" json:"mounts,omitempty"` // Log path of container. - LogPath string `protobuf:"bytes,15,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_sizecache int32 `json:"-"` + LogPath string `protobuf:"bytes,15,opt,name=log_path,json=logPath,proto3" json:"log_path,omitempty"` + // Resource limits configuration of the container. + Resources *ContainerResources `protobuf:"bytes,16,opt,name=resources,proto3" json:"resources,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ContainerStatus) Reset() { *m = ContainerStatus{} } @@ -5429,6 +5436,13 @@ func (m *ContainerStatus) GetLogPath() string { return "" } +func (m *ContainerStatus) GetResources() *ContainerResources { + if m != nil { + return m.Resources + } + return nil +} + type ContainerStatusResponse struct { // Status of the container. Status *ContainerStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` @@ -5487,6 +5501,62 @@ func (m *ContainerStatusResponse) GetInfo() map[string]string { return nil } +// ContainerResources holds resource limits configuration for a container. +type ContainerResources struct { + // Resource limits configuration specific to Linux container. + Linux *LinuxContainerResources `protobuf:"bytes,1,opt,name=linux,proto3" json:"linux,omitempty"` + // Resource limits configuration specific to Windows container. + Windows *WindowsContainerResources `protobuf:"bytes,2,opt,name=windows,proto3" json:"windows,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *ContainerResources) Reset() { *m = ContainerResources{} } +func (*ContainerResources) ProtoMessage() {} +func (*ContainerResources) Descriptor() ([]byte, []int) { + return fileDescriptor_00212fb1f9d3bf1c, []int{76} +} +func (m *ContainerResources) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContainerResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ContainerResources.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *ContainerResources) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContainerResources.Merge(m, src) +} +func (m *ContainerResources) XXX_Size() int { + return m.Size() +} +func (m *ContainerResources) XXX_DiscardUnknown() { + xxx_messageInfo_ContainerResources.DiscardUnknown(m) +} + +var xxx_messageInfo_ContainerResources proto.InternalMessageInfo + +func (m *ContainerResources) GetLinux() *LinuxContainerResources { + if m != nil { + return m.Linux + } + return nil +} + +func (m *ContainerResources) GetWindows() *WindowsContainerResources { + if m != nil { + return m.Windows + } + return nil +} + type UpdateContainerResourcesRequest struct { // ID of the container to update. ContainerId string `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"` @@ -5505,7 +5575,7 @@ type UpdateContainerResourcesRequest struct { func (m *UpdateContainerResourcesRequest) Reset() { *m = UpdateContainerResourcesRequest{} } func (*UpdateContainerResourcesRequest) ProtoMessage() {} func (*UpdateContainerResourcesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{76} + return fileDescriptor_00212fb1f9d3bf1c, []int{77} } func (m *UpdateContainerResourcesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5570,7 +5640,7 @@ type UpdateContainerResourcesResponse struct { func (m *UpdateContainerResourcesResponse) Reset() { *m = UpdateContainerResourcesResponse{} } func (*UpdateContainerResourcesResponse) ProtoMessage() {} func (*UpdateContainerResourcesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{77} + return fileDescriptor_00212fb1f9d3bf1c, []int{78} } func (m *UpdateContainerResourcesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5613,7 +5683,7 @@ type ExecSyncRequest struct { func (m *ExecSyncRequest) Reset() { *m = ExecSyncRequest{} } func (*ExecSyncRequest) ProtoMessage() {} func (*ExecSyncRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{78} + return fileDescriptor_00212fb1f9d3bf1c, []int{79} } func (m *ExecSyncRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5677,7 +5747,7 @@ type ExecSyncResponse struct { func (m *ExecSyncResponse) Reset() { *m = ExecSyncResponse{} } func (*ExecSyncResponse) ProtoMessage() {} func (*ExecSyncResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{79} + return fileDescriptor_00212fb1f9d3bf1c, []int{80} } func (m *ExecSyncResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5753,7 +5823,7 @@ type ExecRequest struct { func (m *ExecRequest) Reset() { *m = ExecRequest{} } func (*ExecRequest) ProtoMessage() {} func (*ExecRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{80} + return fileDescriptor_00212fb1f9d3bf1c, []int{81} } func (m *ExecRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5834,7 +5904,7 @@ type ExecResponse struct { func (m *ExecResponse) Reset() { *m = ExecResponse{} } func (*ExecResponse) ProtoMessage() {} func (*ExecResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{81} + return fileDescriptor_00212fb1f9d3bf1c, []int{82} } func (m *ExecResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5895,7 +5965,7 @@ type AttachRequest struct { func (m *AttachRequest) Reset() { *m = AttachRequest{} } func (*AttachRequest) ProtoMessage() {} func (*AttachRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{82} + return fileDescriptor_00212fb1f9d3bf1c, []int{83} } func (m *AttachRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -5969,7 +6039,7 @@ type AttachResponse struct { func (m *AttachResponse) Reset() { *m = AttachResponse{} } func (*AttachResponse) ProtoMessage() {} func (*AttachResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{83} + return fileDescriptor_00212fb1f9d3bf1c, []int{84} } func (m *AttachResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6017,7 +6087,7 @@ type PortForwardRequest struct { func (m *PortForwardRequest) Reset() { *m = PortForwardRequest{} } func (*PortForwardRequest) ProtoMessage() {} func (*PortForwardRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{84} + return fileDescriptor_00212fb1f9d3bf1c, []int{85} } func (m *PortForwardRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6070,7 +6140,7 @@ type PortForwardResponse struct { func (m *PortForwardResponse) Reset() { *m = PortForwardResponse{} } func (*PortForwardResponse) ProtoMessage() {} func (*PortForwardResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{85} + return fileDescriptor_00212fb1f9d3bf1c, []int{86} } func (m *PortForwardResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6116,7 +6186,7 @@ type ImageFilter struct { func (m *ImageFilter) Reset() { *m = ImageFilter{} } func (*ImageFilter) ProtoMessage() {} func (*ImageFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{86} + return fileDescriptor_00212fb1f9d3bf1c, []int{87} } func (m *ImageFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6162,7 +6232,7 @@ type ListImagesRequest struct { func (m *ListImagesRequest) Reset() { *m = ListImagesRequest{} } func (*ListImagesRequest) ProtoMessage() {} func (*ListImagesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{87} + return fileDescriptor_00212fb1f9d3bf1c, []int{88} } func (m *ListImagesRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6228,7 +6298,7 @@ type Image struct { func (m *Image) Reset() { *m = Image{} } func (*Image) ProtoMessage() {} func (*Image) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{88} + return fileDescriptor_00212fb1f9d3bf1c, []int{89} } func (m *Image) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6323,7 +6393,7 @@ type ListImagesResponse struct { func (m *ListImagesResponse) Reset() { *m = ListImagesResponse{} } func (*ListImagesResponse) ProtoMessage() {} func (*ListImagesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{89} + return fileDescriptor_00212fb1f9d3bf1c, []int{90} } func (m *ListImagesResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6371,7 +6441,7 @@ type ImageStatusRequest struct { func (m *ImageStatusRequest) Reset() { *m = ImageStatusRequest{} } func (*ImageStatusRequest) ProtoMessage() {} func (*ImageStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{90} + return fileDescriptor_00212fb1f9d3bf1c, []int{91} } func (m *ImageStatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6429,7 +6499,7 @@ type ImageStatusResponse struct { func (m *ImageStatusResponse) Reset() { *m = ImageStatusResponse{} } func (*ImageStatusResponse) ProtoMessage() {} func (*ImageStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{91} + return fileDescriptor_00212fb1f9d3bf1c, []int{92} } func (m *ImageStatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6490,7 +6560,7 @@ type AuthConfig struct { func (m *AuthConfig) Reset() { *m = AuthConfig{} } func (*AuthConfig) ProtoMessage() {} func (*AuthConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{92} + return fileDescriptor_00212fb1f9d3bf1c, []int{93} } func (m *AuthConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6575,7 +6645,7 @@ type PullImageRequest struct { func (m *PullImageRequest) Reset() { *m = PullImageRequest{} } func (*PullImageRequest) ProtoMessage() {} func (*PullImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{93} + return fileDescriptor_00212fb1f9d3bf1c, []int{94} } func (m *PullImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6636,7 +6706,7 @@ type PullImageResponse struct { func (m *PullImageResponse) Reset() { *m = PullImageResponse{} } func (*PullImageResponse) ProtoMessage() {} func (*PullImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{94} + return fileDescriptor_00212fb1f9d3bf1c, []int{95} } func (m *PullImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6682,7 +6752,7 @@ type RemoveImageRequest struct { func (m *RemoveImageRequest) Reset() { *m = RemoveImageRequest{} } func (*RemoveImageRequest) ProtoMessage() {} func (*RemoveImageRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{95} + return fileDescriptor_00212fb1f9d3bf1c, []int{96} } func (m *RemoveImageRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6726,7 +6796,7 @@ type RemoveImageResponse struct { func (m *RemoveImageResponse) Reset() { *m = RemoveImageResponse{} } func (*RemoveImageResponse) ProtoMessage() {} func (*RemoveImageResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{96} + return fileDescriptor_00212fb1f9d3bf1c, []int{97} } func (m *RemoveImageResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6766,7 +6836,7 @@ type NetworkConfig struct { func (m *NetworkConfig) Reset() { *m = NetworkConfig{} } func (*NetworkConfig) ProtoMessage() {} func (*NetworkConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{97} + return fileDescriptor_00212fb1f9d3bf1c, []int{98} } func (m *NetworkConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6811,7 +6881,7 @@ type RuntimeConfig struct { func (m *RuntimeConfig) Reset() { *m = RuntimeConfig{} } func (*RuntimeConfig) ProtoMessage() {} func (*RuntimeConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{98} + return fileDescriptor_00212fb1f9d3bf1c, []int{99} } func (m *RuntimeConfig) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6856,7 +6926,7 @@ type UpdateRuntimeConfigRequest struct { func (m *UpdateRuntimeConfigRequest) Reset() { *m = UpdateRuntimeConfigRequest{} } func (*UpdateRuntimeConfigRequest) ProtoMessage() {} func (*UpdateRuntimeConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{99} + return fileDescriptor_00212fb1f9d3bf1c, []int{100} } func (m *UpdateRuntimeConfigRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6900,7 +6970,7 @@ type UpdateRuntimeConfigResponse struct { func (m *UpdateRuntimeConfigResponse) Reset() { *m = UpdateRuntimeConfigResponse{} } func (*UpdateRuntimeConfigResponse) ProtoMessage() {} func (*UpdateRuntimeConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{100} + return fileDescriptor_00212fb1f9d3bf1c, []int{101} } func (m *UpdateRuntimeConfigResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -6934,10 +7004,11 @@ var xxx_messageInfo_UpdateRuntimeConfigResponse proto.InternalMessageInfo // 1. Required conditions: Conditions are required for kubelet to work // properly. If any required condition is unmet, the node will be not ready. // The required conditions include: -// * RuntimeReady: RuntimeReady means the runtime is up and ready to accept -// basic containers e.g. container only needs host network. -// * NetworkReady: NetworkReady means the runtime network is up and ready to -// accept containers which require container network. +// - RuntimeReady: RuntimeReady means the runtime is up and ready to accept +// basic containers e.g. container only needs host network. +// - NetworkReady: NetworkReady means the runtime network is up and ready to +// accept containers which require container network. +// // 2. Optional conditions: Conditions are informative to the user, but kubelet // will not rely on. Since condition type is an arbitrary string, all conditions // not required are optional. These conditions will be exposed to users to help @@ -6958,7 +7029,7 @@ type RuntimeCondition struct { func (m *RuntimeCondition) Reset() { *m = RuntimeCondition{} } func (*RuntimeCondition) ProtoMessage() {} func (*RuntimeCondition) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{101} + return fileDescriptor_00212fb1f9d3bf1c, []int{102} } func (m *RuntimeCondition) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7026,7 +7097,7 @@ type RuntimeStatus struct { func (m *RuntimeStatus) Reset() { *m = RuntimeStatus{} } func (*RuntimeStatus) ProtoMessage() {} func (*RuntimeStatus) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{102} + return fileDescriptor_00212fb1f9d3bf1c, []int{103} } func (m *RuntimeStatus) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7072,7 +7143,7 @@ type StatusRequest struct { func (m *StatusRequest) Reset() { *m = StatusRequest{} } func (*StatusRequest) ProtoMessage() {} func (*StatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{103} + return fileDescriptor_00212fb1f9d3bf1c, []int{104} } func (m *StatusRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7123,7 +7194,7 @@ type StatusResponse struct { func (m *StatusResponse) Reset() { *m = StatusResponse{} } func (*StatusResponse) ProtoMessage() {} func (*StatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{104} + return fileDescriptor_00212fb1f9d3bf1c, []int{105} } func (m *StatusResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7174,7 +7245,7 @@ type ImageFsInfoRequest struct { func (m *ImageFsInfoRequest) Reset() { *m = ImageFsInfoRequest{} } func (*ImageFsInfoRequest) ProtoMessage() {} func (*ImageFsInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{105} + return fileDescriptor_00212fb1f9d3bf1c, []int{106} } func (m *ImageFsInfoRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7214,7 +7285,7 @@ type UInt64Value struct { func (m *UInt64Value) Reset() { *m = UInt64Value{} } func (*UInt64Value) ProtoMessage() {} func (*UInt64Value) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{106} + return fileDescriptor_00212fb1f9d3bf1c, []int{107} } func (m *UInt64Value) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7261,7 +7332,7 @@ type FilesystemIdentifier struct { func (m *FilesystemIdentifier) Reset() { *m = FilesystemIdentifier{} } func (*FilesystemIdentifier) ProtoMessage() {} func (*FilesystemIdentifier) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{107} + return fileDescriptor_00212fb1f9d3bf1c, []int{108} } func (m *FilesystemIdentifier) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7318,7 +7389,7 @@ type FilesystemUsage struct { func (m *FilesystemUsage) Reset() { *m = FilesystemUsage{} } func (*FilesystemUsage) ProtoMessage() {} func (*FilesystemUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{108} + return fileDescriptor_00212fb1f9d3bf1c, []int{109} } func (m *FilesystemUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7385,7 +7456,7 @@ type ImageFsInfoResponse struct { func (m *ImageFsInfoResponse) Reset() { *m = ImageFsInfoResponse{} } func (*ImageFsInfoResponse) ProtoMessage() {} func (*ImageFsInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{109} + return fileDescriptor_00212fb1f9d3bf1c, []int{110} } func (m *ImageFsInfoResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7431,7 +7502,7 @@ type ContainerStatsRequest struct { func (m *ContainerStatsRequest) Reset() { *m = ContainerStatsRequest{} } func (*ContainerStatsRequest) ProtoMessage() {} func (*ContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{110} + return fileDescriptor_00212fb1f9d3bf1c, []int{111} } func (m *ContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7477,7 +7548,7 @@ type ContainerStatsResponse struct { func (m *ContainerStatsResponse) Reset() { *m = ContainerStatsResponse{} } func (*ContainerStatsResponse) ProtoMessage() {} func (*ContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{111} + return fileDescriptor_00212fb1f9d3bf1c, []int{112} } func (m *ContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7523,7 +7594,7 @@ type ListContainerStatsRequest struct { func (m *ListContainerStatsRequest) Reset() { *m = ListContainerStatsRequest{} } func (*ListContainerStatsRequest) ProtoMessage() {} func (*ListContainerStatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{112} + return fileDescriptor_00212fb1f9d3bf1c, []int{113} } func (m *ListContainerStatsRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7577,7 +7648,7 @@ type ContainerStatsFilter struct { func (m *ContainerStatsFilter) Reset() { *m = ContainerStatsFilter{} } func (*ContainerStatsFilter) ProtoMessage() {} func (*ContainerStatsFilter) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{113} + return fileDescriptor_00212fb1f9d3bf1c, []int{114} } func (m *ContainerStatsFilter) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7637,7 +7708,7 @@ type ListContainerStatsResponse struct { func (m *ListContainerStatsResponse) Reset() { *m = ListContainerStatsResponse{} } func (*ListContainerStatsResponse) ProtoMessage() {} func (*ListContainerStatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{114} + return fileDescriptor_00212fb1f9d3bf1c, []int{115} } func (m *ListContainerStatsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7693,7 +7764,7 @@ type ContainerAttributes struct { func (m *ContainerAttributes) Reset() { *m = ContainerAttributes{} } func (*ContainerAttributes) ProtoMessage() {} func (*ContainerAttributes) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{115} + return fileDescriptor_00212fb1f9d3bf1c, []int{116} } func (m *ContainerAttributes) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7767,7 +7838,7 @@ type ContainerStats struct { func (m *ContainerStats) Reset() { *m = ContainerStats{} } func (*ContainerStats) ProtoMessage() {} func (*ContainerStats) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{116} + return fileDescriptor_00212fb1f9d3bf1c, []int{117} } func (m *ContainerStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7840,7 +7911,7 @@ type CpuUsage struct { func (m *CpuUsage) Reset() { *m = CpuUsage{} } func (*CpuUsage) ProtoMessage() {} func (*CpuUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{117} + return fileDescriptor_00212fb1f9d3bf1c, []int{118} } func (m *CpuUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -7913,7 +7984,7 @@ type MemoryUsage struct { func (m *MemoryUsage) Reset() { *m = MemoryUsage{} } func (*MemoryUsage) ProtoMessage() {} func (*MemoryUsage) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{118} + return fileDescriptor_00212fb1f9d3bf1c, []int{119} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8001,7 +8072,7 @@ type ReopenContainerLogRequest struct { func (m *ReopenContainerLogRequest) Reset() { *m = ReopenContainerLogRequest{} } func (*ReopenContainerLogRequest) ProtoMessage() {} func (*ReopenContainerLogRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{119} + return fileDescriptor_00212fb1f9d3bf1c, []int{120} } func (m *ReopenContainerLogRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8045,7 +8116,7 @@ type ReopenContainerLogResponse struct { func (m *ReopenContainerLogResponse) Reset() { *m = ReopenContainerLogResponse{} } func (*ReopenContainerLogResponse) ProtoMessage() {} func (*ReopenContainerLogResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_00212fb1f9d3bf1c, []int{120} + return fileDescriptor_00212fb1f9d3bf1c, []int{121} } func (m *ReopenContainerLogResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -8179,6 +8250,7 @@ func init() { proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.ContainerStatus.LabelsEntry") proto.RegisterType((*ContainerStatusResponse)(nil), "runtime.v1alpha2.ContainerStatusResponse") proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.ContainerStatusResponse.InfoEntry") + proto.RegisterType((*ContainerResources)(nil), "runtime.v1alpha2.ContainerResources") proto.RegisterType((*UpdateContainerResourcesRequest)(nil), "runtime.v1alpha2.UpdateContainerResourcesRequest") proto.RegisterMapType((map[string]string)(nil), "runtime.v1alpha2.UpdateContainerResourcesRequest.AnnotationsEntry") proto.RegisterType((*UpdateContainerResourcesResponse)(nil), "runtime.v1alpha2.UpdateContainerResourcesResponse") @@ -8235,371 +8307,373 @@ func init() { func init() { proto.RegisterFile("api.proto", fileDescriptor_00212fb1f9d3bf1c) } var fileDescriptor_00212fb1f9d3bf1c = []byte{ - // 5810 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x3c, 0x5b, 0x6c, 0x1b, 0xd9, - 0x75, 0x1a, 0x92, 0x92, 0xc8, 0x43, 0x91, 0xa2, 0xae, 0x65, 0x89, 0xa6, 0xd7, 0x5a, 0x7b, 0xf6, - 0x61, 0xaf, 0xb3, 0x96, 0x62, 0xed, 0xc6, 0x6b, 0xcb, 0xbb, 0xb6, 0x65, 0x3d, 0x6c, 0x26, 0xb6, - 0xc4, 0x0e, 0xa5, 0xcd, 0x6e, 0x92, 0x62, 0x32, 0xe2, 0x5c, 0x51, 0x13, 0x93, 0x33, 0x93, 0x99, - 0xa1, 0x6d, 0xa5, 0x3f, 0x01, 0x02, 0xe4, 0x23, 0x5f, 0x05, 0x8a, 0x22, 0x40, 0x3f, 0x0a, 0xa4, - 0x05, 0xda, 0xef, 0xb4, 0xe8, 0x57, 0xbf, 0x5a, 0xb4, 0x68, 0xd0, 0x07, 0xd0, 0xaf, 0xa0, 0x45, - 0xfa, 0xd1, 0x6c, 0x51, 0xa0, 0x28, 0x50, 0xa0, 0xe8, 0x77, 0x3f, 0x8a, 0xfb, 0x9a, 0x17, 0x67, - 0xc8, 0xa1, 0xbd, 0xaf, 0x7e, 0x91, 0xf7, 0xcc, 0x39, 0xe7, 0x9e, 0x7b, 0xee, 0xb9, 0xe7, 0x9e, - 0x7b, 0xcf, 0x99, 0x81, 0x92, 0x66, 0x1b, 0xab, 0xb6, 0x63, 0x79, 0x16, 0xaa, 0x39, 0x03, 0xd3, - 0x33, 0xfa, 0x78, 0xf5, 0xe9, 0x75, 0xad, 0x67, 0x9f, 0x68, 0xeb, 0x8d, 0x6b, 0x5d, 0xc3, 0x3b, - 0x19, 0x1c, 0xad, 0x76, 0xac, 0xfe, 0x5a, 0xd7, 0xea, 0x5a, 0x6b, 0x14, 0xf1, 0x68, 0x70, 0x4c, - 0x5b, 0xb4, 0x41, 0xff, 0x31, 0x06, 0xf2, 0x55, 0xa8, 0x7e, 0x88, 0x1d, 0xd7, 0xb0, 0x4c, 0x05, - 0x7f, 0x7f, 0x80, 0x5d, 0x0f, 0xd5, 0x61, 0xf6, 0x29, 0x83, 0xd4, 0xa5, 0x8b, 0xd2, 0x95, 0x92, - 0x22, 0x9a, 0xf2, 0x1f, 0x4b, 0x30, 0xef, 0x23, 0xbb, 0xb6, 0x65, 0xba, 0x38, 0x1d, 0x1b, 0x5d, - 0x82, 0x39, 0x2e, 0x9c, 0x6a, 0x6a, 0x7d, 0x5c, 0xcf, 0xd1, 0xc7, 0x65, 0x0e, 0xdb, 0xd3, 0xfa, - 0x18, 0x5d, 0x86, 0x79, 0x81, 0x22, 0x98, 0xe4, 0x29, 0x56, 0x95, 0x83, 0x79, 0x6f, 0x68, 0x15, - 0xce, 0x08, 0x44, 0xcd, 0x36, 0x7c, 0xe4, 0x02, 0x45, 0x5e, 0xe0, 0x8f, 0x36, 0x6d, 0x83, 0xe3, - 0xcb, 0xdf, 0x86, 0xd2, 0xf6, 0x5e, 0x7b, 0xcb, 0x32, 0x8f, 0x8d, 0x2e, 0x11, 0xd1, 0xc5, 0x0e, - 0xa1, 0xa9, 0x4b, 0x17, 0xf3, 0x44, 0x44, 0xde, 0x44, 0x0d, 0x28, 0xba, 0x58, 0x73, 0x3a, 0x27, - 0xd8, 0xad, 0xe7, 0xe8, 0x23, 0xbf, 0x4d, 0xa8, 0x2c, 0xdb, 0x33, 0x2c, 0xd3, 0xad, 0xe7, 0x19, - 0x15, 0x6f, 0xca, 0x7f, 0x20, 0x41, 0xb9, 0x65, 0x39, 0xde, 0x63, 0xcd, 0xb6, 0x0d, 0xb3, 0x8b, - 0x6e, 0x40, 0x91, 0xea, 0xb2, 0x63, 0xf5, 0xa8, 0x0e, 0xaa, 0xeb, 0x8d, 0xd5, 0xf8, 0xb4, 0xac, - 0xb6, 0x38, 0x86, 0xe2, 0xe3, 0xa2, 0x37, 0xa0, 0xda, 0xb1, 0x4c, 0x4f, 0x33, 0x4c, 0xec, 0xa8, - 0xb6, 0xe5, 0x78, 0x54, 0x45, 0xd3, 0x4a, 0xc5, 0x87, 0x92, 0x5e, 0xd0, 0x79, 0x28, 0x9d, 0x58, - 0xae, 0xc7, 0x30, 0xf2, 0x14, 0xa3, 0x48, 0x00, 0xf4, 0xe1, 0x32, 0xcc, 0xd2, 0x87, 0x86, 0xcd, - 0x95, 0x31, 0x43, 0x9a, 0x4d, 0x5b, 0xfe, 0xa5, 0x04, 0xd3, 0x8f, 0xad, 0x81, 0xe9, 0xc5, 0xba, - 0xd1, 0xbc, 0x13, 0x3e, 0x51, 0xa1, 0x6e, 0x34, 0xef, 0x24, 0xe8, 0x86, 0x60, 0xb0, 0xb9, 0x62, - 0xdd, 0x90, 0x87, 0x0d, 0x28, 0x3a, 0x58, 0xd3, 0x2d, 0xb3, 0x77, 0x4a, 0x45, 0x28, 0x2a, 0x7e, - 0x9b, 0x4c, 0xa2, 0x8b, 0x7b, 0x86, 0x39, 0x78, 0xae, 0x3a, 0xb8, 0xa7, 0x1d, 0xe1, 0x1e, 0x15, - 0xa5, 0xa8, 0x54, 0x39, 0x58, 0x61, 0x50, 0xb4, 0x0d, 0x65, 0xdb, 0xb1, 0x6c, 0xad, 0xab, 0x11, - 0x3d, 0xd6, 0xa7, 0xa9, 0xaa, 0xe4, 0x61, 0x55, 0x51, 0xb1, 0x5b, 0x01, 0xa6, 0x12, 0x26, 0x93, - 0x55, 0x28, 0x35, 0xb7, 0x85, 0xea, 0xfd, 0xe1, 0xeb, 0x74, 0x50, 0x15, 0x3e, 0x7c, 0x9d, 0x18, - 0x5f, 0x30, 0x68, 0x43, 0xa7, 0x03, 0xaa, 0x28, 0x65, 0x1f, 0xd6, 0xd4, 0xd1, 0x12, 0xcc, 0xf4, - 0xb0, 0xd9, 0xf5, 0x4e, 0xe8, 0x88, 0x2a, 0x0a, 0x6f, 0xc9, 0x7f, 0x24, 0x41, 0xe5, 0xd0, 0xc5, - 0x0e, 0xb1, 0x50, 0xd7, 0xd6, 0x3a, 0x18, 0xbd, 0x03, 0x85, 0xbe, 0xa5, 0x63, 0x3e, 0xb9, 0xaf, - 0x0e, 0x4b, 0xec, 0xa3, 0x3e, 0xb6, 0x74, 0xac, 0x50, 0x64, 0xb4, 0x06, 0x85, 0x81, 0xa1, 0x33, - 0xbb, 0x2a, 0xaf, 0x9f, 0x1f, 0x26, 0xf2, 0x47, 0xa1, 0x50, 0x44, 0x42, 0xd0, 0x25, 0x04, 0xf9, - 0x0c, 0x04, 0x04, 0x51, 0xfe, 0x69, 0x0e, 0xe6, 0xfd, 0x9e, 0xf7, 0xa9, 0x71, 0xa2, 0x5b, 0x30, - 0x6b, 0x62, 0xef, 0x99, 0xe5, 0x3c, 0xc9, 0x2a, 0xad, 0xc0, 0x47, 0xd7, 0x21, 0x6f, 0x73, 0x4d, - 0x65, 0x20, 0x23, 0xb8, 0x84, 0xc4, 0xb0, 0x3b, 0x54, 0x7f, 0x59, 0x48, 0x0c, 0xbb, 0x43, 0xcc, - 0xcc, 0xd3, 0x9c, 0x2e, 0xa6, 0x73, 0xc6, 0x4c, 0xb6, 0xc8, 0x00, 0x4d, 0x1d, 0xed, 0x42, 0x75, - 0xe0, 0x62, 0xc7, 0x74, 0x55, 0xb1, 0xf4, 0x88, 0x91, 0x94, 0x93, 0x58, 0x47, 0x66, 0x48, 0xa9, - 0x30, 0xb2, 0x7d, 0xbe, 0x42, 0x65, 0x80, 0xa6, 0xe9, 0xdd, 0x78, 0xf7, 0x43, 0xad, 0x37, 0xc0, - 0x68, 0x11, 0xa6, 0x9f, 0x92, 0x3f, 0x54, 0x23, 0x79, 0x85, 0x35, 0xe4, 0x5f, 0x17, 0xe0, 0xfc, - 0x23, 0x62, 0x9e, 0x6d, 0xcd, 0xd4, 0x8f, 0xac, 0xe7, 0x6d, 0xdc, 0x19, 0x38, 0x86, 0x77, 0xba, - 0x65, 0x99, 0x1e, 0x7e, 0xee, 0xa1, 0x3d, 0x58, 0x30, 0x05, 0x7f, 0x5f, 0x1c, 0x89, 0x8a, 0x73, - 0x69, 0xc4, 0x48, 0x99, 0x08, 0x4a, 0xcd, 0x8c, 0x02, 0x5c, 0xf4, 0x30, 0x58, 0x26, 0x82, 0x5b, - 0x2e, 0x6d, 0x70, 0xed, 0x1d, 0x2a, 0x19, 0xe7, 0x25, 0xd6, 0x91, 0xe0, 0xf4, 0x3e, 0x10, 0x27, - 0xaa, 0x6a, 0xae, 0x4a, 0x46, 0x4d, 0xb5, 0x5f, 0x5e, 0x7f, 0x25, 0xc1, 0x5e, 0x7c, 0x15, 0x28, - 0x25, 0x67, 0x60, 0x6e, 0xba, 0x44, 0x67, 0xe8, 0x0e, 0x75, 0xcb, 0x84, 0xba, 0xeb, 0x58, 0x03, - 0xbb, 0x5e, 0xcc, 0x40, 0x0e, 0x94, 0xfc, 0x01, 0xc1, 0xa7, 0x3e, 0x9b, 0x2f, 0x7d, 0xd5, 0xb1, - 0x2c, 0xef, 0xd8, 0x15, 0xcb, 0x5d, 0x80, 0x15, 0x0a, 0x45, 0x6b, 0x70, 0xc6, 0x1d, 0xd8, 0x76, - 0x0f, 0xf7, 0xb1, 0xe9, 0x69, 0x3d, 0xd6, 0x1d, 0x99, 0xd1, 0xfc, 0x95, 0xbc, 0x82, 0xc2, 0x8f, - 0x28, 0x63, 0x17, 0xad, 0x00, 0xd8, 0x8e, 0xf1, 0xd4, 0xe8, 0xe1, 0x2e, 0xd6, 0xeb, 0x33, 0x94, - 0x69, 0x08, 0x82, 0x6e, 0x13, 0x3f, 0xde, 0xe9, 0x58, 0x7d, 0xbb, 0x5e, 0x4a, 0x9b, 0x07, 0x31, - 0x8b, 0x2d, 0xc7, 0x3a, 0x36, 0x7a, 0x58, 0x11, 0x14, 0xe8, 0x03, 0x28, 0x6a, 0xb6, 0xad, 0x39, - 0x7d, 0xcb, 0xa9, 0x43, 0x56, 0x6a, 0x9f, 0x04, 0xbd, 0x0b, 0x8b, 0x9c, 0x93, 0x6a, 0xb3, 0x87, - 0xcc, 0x51, 0xce, 0x12, 0x0b, 0xbe, 0x9f, 0xab, 0x4b, 0x0a, 0xe2, 0xcf, 0x39, 0x2d, 0x71, 0x9b, - 0xf2, 0xdf, 0x4a, 0x30, 0x1f, 0xe3, 0x89, 0x5a, 0x30, 0x27, 0x38, 0x78, 0xa7, 0xb6, 0x70, 0x2a, - 0xd7, 0xc6, 0x0a, 0xb3, 0xca, 0x7f, 0x0f, 0x4e, 0x6d, 0x4c, 0x3d, 0xa2, 0x68, 0xa0, 0xd7, 0xa0, - 0xd2, 0xb3, 0x3a, 0x5a, 0x8f, 0x7a, 0x42, 0x07, 0x1f, 0x73, 0xef, 0x3d, 0xe7, 0x03, 0x15, 0x7c, - 0x2c, 0xdf, 0x83, 0x72, 0x88, 0x01, 0x42, 0x50, 0x55, 0x58, 0x87, 0xdb, 0xf8, 0x58, 0x1b, 0xf4, - 0xbc, 0xda, 0x14, 0xaa, 0x02, 0x1c, 0x9a, 0x1d, 0xb2, 0x67, 0x9a, 0x58, 0xaf, 0x49, 0xa8, 0x02, - 0xa5, 0x47, 0x82, 0x45, 0x2d, 0x27, 0xff, 0x49, 0x1e, 0xce, 0x52, 0xb3, 0x6c, 0x59, 0x3a, 0x5f, - 0x33, 0x7c, 0x83, 0x7d, 0x0d, 0x2a, 0x1d, 0x3a, 0xbb, 0xaa, 0xad, 0x39, 0xd8, 0xf4, 0xf8, 0x06, - 0x33, 0xc7, 0x80, 0x2d, 0x0a, 0x43, 0x1f, 0x41, 0xcd, 0xe5, 0x23, 0x52, 0x3b, 0x6c, 0x8d, 0xf1, - 0x05, 0x90, 0x30, 0xf6, 0x11, 0x0b, 0x53, 0x99, 0x77, 0x87, 0x56, 0xea, 0xac, 0x7b, 0xea, 0x76, - 0xbc, 0x9e, 0xf0, 0x9d, 0xef, 0xa6, 0x30, 0x8c, 0x0b, 0xbe, 0xda, 0x66, 0x64, 0x3b, 0xa6, 0xe7, - 0x9c, 0x2a, 0x82, 0x09, 0xda, 0x81, 0xa2, 0xf5, 0x14, 0x3b, 0x27, 0x58, 0x63, 0x1e, 0xaa, 0xbc, - 0xfe, 0x56, 0x0a, 0xc3, 0x2d, 0xb1, 0x9d, 0x28, 0xd8, 0xb5, 0x06, 0x4e, 0x07, 0xbb, 0x8a, 0x4f, - 0x8a, 0x1e, 0x40, 0xc9, 0x11, 0x60, 0xee, 0xc7, 0x26, 0xe0, 0x13, 0xd0, 0x36, 0x36, 0x60, 0x2e, - 0x2c, 0x28, 0xaa, 0x41, 0xfe, 0x09, 0x3e, 0xe5, 0x4a, 0x26, 0x7f, 0x03, 0x0f, 0xc7, 0x66, 0x9e, - 0x35, 0x36, 0x72, 0x37, 0x25, 0xd9, 0x01, 0x14, 0x8c, 0xfa, 0x31, 0xf6, 0x34, 0x5d, 0xf3, 0x34, - 0x84, 0xa0, 0x40, 0x43, 0x32, 0xc6, 0x82, 0xfe, 0x27, 0x5c, 0x07, 0xdc, 0xfd, 0x97, 0x14, 0xf2, - 0x17, 0xbd, 0x02, 0x25, 0xdf, 0x8b, 0xf1, 0xb8, 0x2c, 0x00, 0x90, 0xf8, 0x48, 0xf3, 0x3c, 0xdc, - 0xb7, 0x3d, 0xaa, 0xa4, 0x8a, 0x22, 0x9a, 0xf2, 0x9f, 0x4e, 0x43, 0x6d, 0xc8, 0x46, 0xee, 0x41, - 0xb1, 0xcf, 0xbb, 0xe7, 0x5e, 0xf4, 0xf5, 0x84, 0x20, 0x69, 0x48, 0x54, 0xc5, 0xa7, 0x22, 0x31, - 0x08, 0xb1, 0xc4, 0x50, 0x2c, 0xe9, 0xb7, 0xd9, 0x12, 0xe8, 0xaa, 0xba, 0xe1, 0xe0, 0x8e, 0x67, - 0x39, 0xa7, 0x5c, 0xdc, 0xb9, 0x9e, 0xd5, 0xdd, 0x16, 0x30, 0xb4, 0x01, 0xa0, 0x9b, 0xae, 0x4a, - 0x2d, 0xbc, 0xcb, 0x67, 0x36, 0x61, 0x9b, 0xf5, 0x03, 0x47, 0xa5, 0xa4, 0x9b, 0x2e, 0x17, 0xff, - 0x3e, 0x54, 0x48, 0xfc, 0xa5, 0xf6, 0xd9, 0x0e, 0xcc, 0xdc, 0x58, 0x79, 0xfd, 0x42, 0xd2, 0x18, - 0xfc, 0xc8, 0x50, 0x99, 0xb3, 0x83, 0x86, 0x8b, 0x76, 0x61, 0x86, 0x06, 0x42, 0x6e, 0x7d, 0x86, - 0x12, 0xaf, 0x8e, 0x52, 0x00, 0xb7, 0xd0, 0x47, 0x94, 0x80, 0x19, 0x28, 0xa7, 0x46, 0x87, 0x50, - 0xd6, 0x4c, 0xd3, 0xf2, 0x34, 0xb6, 0x8b, 0xcc, 0x52, 0x66, 0xef, 0x64, 0x60, 0xb6, 0x19, 0x50, - 0x31, 0x8e, 0x61, 0x3e, 0xe8, 0x03, 0x98, 0xa6, 0xdb, 0x0c, 0xdf, 0x11, 0x2e, 0x67, 0x5c, 0x44, - 0x0a, 0xa3, 0x42, 0x5b, 0x30, 0xfb, 0xcc, 0x30, 0x75, 0xeb, 0x99, 0xcb, 0xbd, 0x73, 0x82, 0xb1, - 0x7f, 0x93, 0x21, 0x0c, 0xb1, 0x10, 0x94, 0x8d, 0x5b, 0x50, 0x0e, 0x8d, 0x78, 0x12, 0x4b, 0x6f, - 0xdc, 0x81, 0x5a, 0x7c, 0x7c, 0x13, 0xad, 0x94, 0xdf, 0x82, 0x45, 0x65, 0x60, 0x06, 0xa2, 0x89, - 0xe3, 0xd0, 0x06, 0xcc, 0x70, 0x8b, 0x61, 0x66, 0x2b, 0x8f, 0x57, 0xb4, 0xc2, 0x29, 0xc2, 0xe7, - 0x9b, 0x13, 0xcd, 0xd4, 0x7b, 0xd8, 0xe1, 0xfd, 0x8a, 0xf3, 0xcd, 0x43, 0x06, 0x95, 0x3f, 0x80, - 0xb3, 0xb1, 0xce, 0xf9, 0xf1, 0xea, 0x75, 0xa8, 0xda, 0x96, 0xae, 0xba, 0x0c, 0x2c, 0xe2, 0xdc, - 0x12, 0xb1, 0x2c, 0x81, 0xdb, 0xd4, 0x09, 0x79, 0xdb, 0xb3, 0xec, 0x61, 0xe1, 0xb3, 0x91, 0xd7, - 0x61, 0x29, 0x4e, 0xce, 0xba, 0x97, 0xef, 0xc2, 0xb2, 0x82, 0xfb, 0xd6, 0x53, 0xfc, 0xa2, 0xac, - 0x1b, 0x50, 0x1f, 0x66, 0xc0, 0x99, 0x7f, 0x0c, 0xcb, 0x01, 0xb4, 0xed, 0x69, 0xde, 0xc0, 0x9d, - 0x88, 0x39, 0x3f, 0x7b, 0x1e, 0x59, 0x2e, 0x9b, 0xce, 0xa2, 0x22, 0x9a, 0xf2, 0x32, 0x4c, 0xb7, - 0x2c, 0xbd, 0xd9, 0x42, 0x55, 0xc8, 0x19, 0x36, 0x27, 0xce, 0x19, 0xb6, 0x6c, 0x84, 0xfb, 0xdc, - 0x63, 0x91, 0x2f, 0xeb, 0x3a, 0x8e, 0x8a, 0xee, 0x40, 0x55, 0xd3, 0x75, 0x83, 0x98, 0x93, 0xd6, - 0x53, 0x0d, 0x5b, 0x84, 0xf2, 0xcb, 0x89, 0x06, 0xd0, 0x6c, 0x29, 0x95, 0x00, 0xbd, 0x69, 0xbb, - 0xf2, 0x43, 0x28, 0x05, 0x47, 0x88, 0xdb, 0xc1, 0x69, 0x32, 0x97, 0x35, 0x86, 0xf4, 0x0f, 0x9c, - 0x07, 0x43, 0x1b, 0x2f, 0x17, 0xf9, 0x36, 0x80, 0xef, 0x90, 0x45, 0x70, 0x7a, 0x7e, 0x04, 0x63, - 0x25, 0x84, 0x2e, 0xff, 0x28, 0xe2, 0xa6, 0x43, 0x4a, 0xd0, 0x7d, 0x25, 0xe8, 0x11, 0xb7, 0x9d, - 0x7b, 0x21, 0xb7, 0xfd, 0x1e, 0x4c, 0xbb, 0x9e, 0xe6, 0x61, 0x7e, 0x4a, 0xb8, 0x34, 0x8a, 0x9c, - 0x08, 0x81, 0x15, 0x86, 0x8f, 0x2e, 0x00, 0x74, 0x1c, 0xac, 0x79, 0x58, 0x57, 0x35, 0xb6, 0xc7, - 0xe4, 0x95, 0x12, 0x87, 0x6c, 0x7a, 0xc4, 0xdf, 0x88, 0x93, 0x4e, 0xea, 0xe6, 0x9a, 0x32, 0xd5, - 0xc1, 0x99, 0xc7, 0xf7, 0x79, 0x33, 0x19, 0x7d, 0x1e, 0x67, 0xc0, 0x7d, 0x5e, 0xe0, 0xd1, 0x67, - 0xc7, 0x7b, 0x74, 0x46, 0x9a, 0xc5, 0xa3, 0x17, 0xc7, 0x7b, 0x74, 0xce, 0x6c, 0xb4, 0x47, 0x4f, - 0x70, 0x3f, 0xa5, 0x24, 0xf7, 0xf3, 0x45, 0xba, 0xdd, 0x7f, 0x96, 0xa0, 0x3e, 0xec, 0x05, 0xb8, - 0xf7, 0xdb, 0x80, 0x19, 0x97, 0x42, 0xb2, 0xf8, 0x5e, 0x4e, 0xcb, 0x29, 0xd0, 0x43, 0x28, 0x18, - 0xe6, 0xb1, 0xc5, 0x17, 0xed, 0xbb, 0x19, 0x28, 0x79, 0xaf, 0xab, 0x4d, 0xf3, 0xd8, 0x62, 0xda, - 0xa4, 0x1c, 0x1a, 0xef, 0x41, 0xc9, 0x07, 0x4d, 0x34, 0xb6, 0x7d, 0x58, 0x8c, 0xd9, 0x36, 0x3b, - 0x90, 0xfa, 0x4b, 0x42, 0x9a, 0x6c, 0x49, 0xc8, 0x3f, 0xcc, 0x85, 0x97, 0xec, 0xae, 0xd1, 0xf3, - 0xb0, 0x33, 0xb4, 0x64, 0xdf, 0x17, 0xdc, 0xd9, 0x7a, 0x7d, 0x73, 0x2c, 0x77, 0x76, 0xc6, 0xe3, - 0xab, 0xee, 0x3b, 0x50, 0xa5, 0x46, 0xa9, 0xba, 0xb8, 0x47, 0xe3, 0x26, 0x1e, 0x53, 0x7f, 0x6d, - 0x14, 0x1b, 0x26, 0x09, 0x33, 0xed, 0x36, 0xa7, 0x63, 0x1a, 0xac, 0xf4, 0xc2, 0xb0, 0xc6, 0x3d, - 0x40, 0xc3, 0x48, 0x13, 0xe9, 0xb4, 0x4d, 0x7c, 0xa1, 0xeb, 0x25, 0xee, 0xd3, 0xc7, 0x54, 0x8c, - 0x2c, 0xb6, 0xc2, 0x04, 0x56, 0x38, 0x85, 0xfc, 0x5f, 0x79, 0x80, 0xe0, 0xe1, 0xff, 0x23, 0x27, - 0x78, 0xcf, 0x77, 0x40, 0x2c, 0x1e, 0xbd, 0x32, 0x8a, 0x71, 0xa2, 0xeb, 0xd9, 0x8f, 0xba, 0x1e, - 0x16, 0x99, 0x5e, 0x1b, 0xc9, 0x66, 0x62, 0xa7, 0x33, 0xfb, 0x65, 0x73, 0x3a, 0x8f, 0x60, 0x29, - 0x6e, 0x44, 0xdc, 0xe3, 0xac, 0xc3, 0xb4, 0xe1, 0xe1, 0x3e, 0xbb, 0x29, 0x4e, 0xbc, 0x16, 0x09, - 0x11, 0x31, 0x54, 0xf9, 0x0e, 0x2c, 0x45, 0x67, 0x6f, 0xb2, 0x30, 0x46, 0x56, 0xe2, 0x71, 0x50, - 0xe0, 0x00, 0xb9, 0xdd, 0x8c, 0xb8, 0x78, 0x8a, 0x53, 0x32, 0x7c, 0xf9, 0xef, 0x25, 0x38, 0x1b, - 0x7b, 0x94, 0xe2, 0x2e, 0xb4, 0xa1, 0x05, 0xcf, 0x3c, 0xe6, 0xc6, 0xd8, 0xbe, 0x3e, 0xc7, 0x55, - 0xff, 0x9b, 0xd0, 0x88, 0x4e, 0x58, 0x44, 0xcd, 0x77, 0x63, 0x4b, 0xff, 0x72, 0x46, 0xd1, 0xfd, - 0xf5, 0xff, 0x21, 0x9c, 0x4f, 0x64, 0x3f, 0x3c, 0x0b, 0xf9, 0x89, 0x66, 0xe1, 0x27, 0xf9, 0xf0, - 0x0e, 0xb0, 0xe9, 0x79, 0x8e, 0x71, 0x34, 0xf0, 0xf0, 0x67, 0x11, 0x66, 0x7d, 0xdd, 0xf7, 0x04, - 0xcc, 0x5f, 0xaf, 0x8f, 0xa2, 0x0f, 0x24, 0x49, 0xf4, 0x09, 0x1f, 0x47, 0x7d, 0x42, 0x81, 0x32, - 0x7c, 0x2f, 0x23, 0xc3, 0x91, 0xde, 0xe1, 0x8b, 0x5c, 0xf4, 0xbf, 0x92, 0x60, 0x3e, 0x36, 0x4f, - 0x68, 0x17, 0x40, 0xf3, 0x45, 0xe7, 0xd6, 0xf3, 0x66, 0xb6, 0x81, 0x2a, 0x21, 0x4a, 0xb2, 0xe7, - 0xb2, 0x38, 0x32, 0x75, 0xcf, 0x4d, 0x88, 0x23, 0xfd, 0x30, 0xf2, 0x7e, 0x70, 0x74, 0x66, 0x97, - 0xb9, 0x57, 0x32, 0x1c, 0x9d, 0x19, 0x07, 0x41, 0x28, 0xff, 0x3c, 0x07, 0x8b, 0x49, 0x7d, 0xa0, - 0xb7, 0x21, 0xdf, 0xb1, 0x07, 0x7c, 0x6c, 0x09, 0x89, 0xa9, 0x2d, 0x7b, 0x70, 0xe8, 0x6a, 0x5d, - 0xac, 0x10, 0x34, 0xf4, 0x35, 0x98, 0xe9, 0xe3, 0xbe, 0xe5, 0x9c, 0xf2, 0x91, 0x24, 0x5c, 0x70, - 0x3c, 0xa6, 0xcf, 0x19, 0x0d, 0x47, 0x46, 0x37, 0x83, 0x60, 0x9c, 0x8d, 0x60, 0x25, 0xe1, 0x14, - 0xc2, 0x10, 0x18, 0xa1, 0x1f, 0x81, 0xdf, 0x84, 0x59, 0xdb, 0xb1, 0x3a, 0xd8, 0x75, 0xf9, 0x8d, - 0xcc, 0x4a, 0x62, 0xee, 0x8c, 0x20, 0x70, 0x4a, 0x8e, 0x8e, 0xee, 0x01, 0xf8, 0xe9, 0x1c, 0xb1, - 0xff, 0x5d, 0x4c, 0x18, 0x9f, 0xc0, 0x61, 0x0a, 0x0b, 0xd1, 0x90, 0x73, 0x6f, 0xb2, 0x5a, 0xe5, - 0xbf, 0x93, 0x60, 0x2e, 0x2c, 0x2f, 0x7a, 0x05, 0x4a, 0x84, 0xad, 0xeb, 0x69, 0x7d, 0x9b, 0xe7, - 0x11, 0x02, 0x00, 0x3a, 0x80, 0x05, 0x9d, 0x5d, 0xa3, 0xaa, 0x86, 0xe9, 0x61, 0xe7, 0x58, 0xeb, - 0x88, 0xf0, 0xeb, 0x72, 0xaa, 0x22, 0x9a, 0x02, 0x93, 0x8d, 0xab, 0xc6, 0x39, 0xf8, 0x60, 0xf4, - 0x00, 0xc0, 0xe7, 0x26, 0x96, 0x75, 0x66, 0x76, 0x21, 0x52, 0xf9, 0xa7, 0x39, 0x38, 0x9b, 0x88, - 0x95, 0x78, 0x11, 0x78, 0x13, 0x8a, 0xce, 0x73, 0xf5, 0xe8, 0xd4, 0xc3, 0x6e, 0xba, 0x11, 0x1c, - 0x86, 0xb2, 0x03, 0xb3, 0xce, 0xf3, 0xfb, 0x04, 0x1b, 0x6d, 0x40, 0xc9, 0x79, 0xae, 0x62, 0xc7, - 0xb1, 0x1c, 0x61, 0xc9, 0x63, 0x48, 0x8b, 0xce, 0xf3, 0x1d, 0x8a, 0x4e, 0x7a, 0xf5, 0x44, 0xaf, - 0x85, 0x4c, 0xbd, 0x7a, 0x41, 0xaf, 0x9e, 0xdf, 0xeb, 0x74, 0xa6, 0x5e, 0x3d, 0xde, 0xab, 0x6c, - 0xc3, 0x5c, 0xd8, 0xb8, 0xc6, 0x4c, 0xf3, 0x7d, 0xa8, 0x70, 0xe3, 0x53, 0x3b, 0xd6, 0xc0, 0xf4, - 0xb2, 0xa9, 0x67, 0x8e, 0xd3, 0x6c, 0x11, 0x12, 0xf9, 0xe7, 0x12, 0x94, 0x9a, 0x7d, 0xad, 0x8b, - 0xdb, 0x36, 0xee, 0x10, 0x6f, 0x65, 0x90, 0x06, 0x9f, 0x00, 0xd6, 0x40, 0x7b, 0x51, 0xff, 0xcb, - 0xf6, 0xe3, 0xb7, 0x13, 0x32, 0x34, 0x82, 0xcf, 0x18, 0xa7, 0xfb, 0xb2, 0x9e, 0x73, 0x1d, 0x8a, - 0xdf, 0xc0, 0xa7, 0xec, 0xec, 0x92, 0x91, 0x4e, 0xfe, 0x59, 0x01, 0x96, 0x53, 0xee, 0xb6, 0x69, - 0x50, 0x6b, 0x0f, 0x54, 0x1b, 0x3b, 0x86, 0xa5, 0x0b, 0x35, 0x77, 0xec, 0x41, 0x8b, 0x02, 0xd0, - 0x79, 0x20, 0x0d, 0xf5, 0xfb, 0x03, 0x8b, 0xef, 0x86, 0x79, 0xa5, 0xd8, 0xb1, 0x07, 0xbf, 0x41, - 0xda, 0x82, 0xd6, 0x3d, 0xd1, 0x1c, 0xcc, 0x8c, 0x8c, 0xd1, 0xb6, 0x29, 0x00, 0x5d, 0x87, 0xb3, - 0xcc, 0x25, 0xa9, 0x3d, 0xa3, 0x6f, 0x90, 0xe5, 0x18, 0xb2, 0xa9, 0xbc, 0x82, 0xd8, 0xc3, 0x47, - 0xe4, 0x59, 0xd3, 0x64, 0xf6, 0x23, 0x43, 0xc5, 0xb2, 0xfa, 0xaa, 0xdb, 0xb1, 0x1c, 0xac, 0x6a, - 0xfa, 0xf7, 0xa8, 0x0d, 0xe5, 0x95, 0xb2, 0x65, 0xf5, 0xdb, 0x04, 0xb6, 0xa9, 0x7f, 0x0f, 0xbd, - 0x0a, 0xe5, 0x8e, 0x3d, 0x70, 0xb1, 0xa7, 0x92, 0x1f, 0x7a, 0x5b, 0x50, 0x52, 0x80, 0x81, 0xb6, - 0xec, 0x81, 0x1b, 0x42, 0xe8, 0x93, 0xe8, 0x71, 0x36, 0x8c, 0xf0, 0x18, 0xf7, 0x69, 0xfa, 0xef, - 0x64, 0xd0, 0xc5, 0xb6, 0xd6, 0xc5, 0x4c, 0x34, 0x71, 0xcc, 0x4f, 0x48, 0xff, 0x3d, 0xe4, 0x88, - 0x54, 0x4c, 0xa5, 0x7a, 0x12, 0x6e, 0xba, 0xa8, 0x05, 0xb3, 0x03, 0xd3, 0x38, 0x36, 0xb0, 0x5e, - 0x2f, 0x51, 0x0e, 0x37, 0x32, 0x67, 0x15, 0x56, 0x0f, 0x19, 0x21, 0x4f, 0x78, 0x70, 0x36, 0x68, - 0x03, 0x1a, 0x5c, 0x69, 0xee, 0x33, 0xcd, 0x8e, 0x6b, 0x0e, 0xa8, 0x3a, 0x96, 0x18, 0x46, 0xfb, - 0x99, 0x66, 0x87, 0xb5, 0xd7, 0xd8, 0x80, 0xb9, 0x30, 0xd3, 0x89, 0xec, 0xea, 0x3e, 0x54, 0x22, - 0x43, 0x25, 0x33, 0x4f, 0x15, 0xe4, 0x1a, 0x3f, 0x10, 0x4b, 0xa2, 0x48, 0x00, 0x6d, 0xe3, 0x07, - 0x34, 0x8d, 0x4b, 0x25, 0xa3, 0x7c, 0x0a, 0x0a, 0x6b, 0xc8, 0x1a, 0x54, 0x22, 0xd9, 0x52, 0xe2, - 0xd2, 0x68, 0x5a, 0x94, 0xbb, 0x34, 0xf2, 0x9f, 0xc0, 0x1c, 0xab, 0x27, 0x24, 0xa0, 0xff, 0x09, - 0x8c, 0xe6, 0xdf, 0x58, 0xa6, 0x80, 0xfe, 0xa7, 0x5d, 0xe0, 0xa7, 0xbc, 0x80, 0xa1, 0xa4, 0xb0, - 0x86, 0xfc, 0xfb, 0x12, 0xc0, 0x96, 0x66, 0x6b, 0x47, 0x46, 0xcf, 0xf0, 0x4e, 0xd1, 0x5b, 0x50, - 0xd3, 0x74, 0x5d, 0xed, 0x08, 0x88, 0x81, 0x45, 0x5d, 0xc9, 0xbc, 0xa6, 0xeb, 0x5b, 0x21, 0x30, - 0xfa, 0x0a, 0x2c, 0xe8, 0x8e, 0x65, 0x47, 0x71, 0x59, 0xa1, 0x49, 0x8d, 0x3c, 0x88, 0x20, 0xdf, - 0x84, 0x3a, 0xe1, 0xab, 0xf5, 0x8f, 0x0c, 0x6c, 0x7a, 0x51, 0x1a, 0x56, 0x81, 0xb2, 0xa4, 0xe9, - 0xfa, 0x26, 0x7b, 0x1c, 0xa6, 0x94, 0xff, 0x63, 0x06, 0x2e, 0x44, 0x67, 0x3c, 0x9e, 0xcc, 0xbe, - 0x07, 0x73, 0x31, 0x79, 0x53, 0x92, 0xbe, 0xc1, 0x38, 0x95, 0x08, 0x45, 0x2c, 0x39, 0x9b, 0x1b, - 0x4a, 0xce, 0x26, 0xa6, 0xcb, 0xf3, 0x9f, 0x6a, 0xba, 0xbc, 0xf0, 0xa9, 0xa4, 0xcb, 0xa7, 0x5f, - 0x2e, 0x5d, 0x3e, 0x37, 0x61, 0xba, 0xfc, 0x4d, 0x7a, 0x1c, 0x16, 0xbd, 0xd3, 0xcd, 0x96, 0x79, - 0x8f, 0x8a, 0xdf, 0x87, 0x29, 0x4a, 0xa1, 0x62, 0x69, 0xf5, 0xd9, 0x49, 0xd2, 0xea, 0xc5, 0xd4, - 0xb4, 0xfa, 0x45, 0x98, 0x33, 0x2d, 0xd5, 0xc4, 0xcf, 0x54, 0x32, 0x5d, 0x6e, 0xbd, 0xcc, 0xe6, - 0xce, 0xb4, 0xf6, 0xf0, 0xb3, 0x16, 0x81, 0xa0, 0x4b, 0x30, 0xd7, 0xd7, 0xdc, 0x27, 0x58, 0xa7, - 0x39, 0x6d, 0xb7, 0x5e, 0xa1, 0xd6, 0x56, 0x66, 0xb0, 0x16, 0x01, 0xa1, 0x37, 0xc0, 0x97, 0x83, - 0x23, 0x55, 0x29, 0x52, 0x45, 0x40, 0x19, 0x5a, 0x28, 0x45, 0x3f, 0xff, 0x52, 0x29, 0xfa, 0xda, - 0xe4, 0x29, 0xfa, 0x6b, 0x50, 0x13, 0xff, 0x45, 0x8e, 0x9e, 0x5d, 0x77, 0xd2, 0xf4, 0xfc, 0xbc, - 0x78, 0x26, 0xf2, 0xf0, 0x69, 0x19, 0x7d, 0x18, 0x99, 0xd1, 0xff, 0x73, 0x89, 0x87, 0xd9, 0xfe, - 0x52, 0xe3, 0x09, 0xc2, 0x48, 0xb6, 0x57, 0x7a, 0xf1, 0x6c, 0x2f, 0xfa, 0x56, 0x6a, 0x9e, 0x7c, - 0x6d, 0x1c, 0xbf, 0x71, 0x99, 0x72, 0xf9, 0x77, 0x24, 0xb8, 0xc0, 0x23, 0xde, 0x94, 0xaa, 0x97, - 0x04, 0x73, 0x95, 0x52, 0xcc, 0xb5, 0xe3, 0x60, 0x1d, 0x9b, 0x9e, 0xa1, 0xf5, 0x54, 0xd7, 0xc6, - 0x1d, 0x91, 0xd9, 0x0a, 0xc0, 0x34, 0xc2, 0xb9, 0x04, 0x73, 0xac, 0xac, 0x8c, 0x07, 0xf9, 0xac, - 0x7a, 0xac, 0x4c, 0x2b, 0xcb, 0x18, 0x48, 0x1e, 0xc0, 0x72, 0x4a, 0x62, 0x30, 0x51, 0x19, 0x52, - 0x9a, 0x32, 0x46, 0x8e, 0x6c, 0x58, 0x19, 0xbf, 0x2b, 0xc1, 0xab, 0x9c, 0x24, 0xd5, 0x6f, 0x7e, - 0x11, 0xea, 0xf8, 0x0b, 0xc9, 0x3f, 0x96, 0xc4, 0x8d, 0xac, 0x39, 0x6c, 0x64, 0x5f, 0x49, 0xd5, - 0xc3, 0x68, 0x33, 0xfb, 0x4e, 0xaa, 0x99, 0x5d, 0x1f, 0xcf, 0x71, 0xac, 0x6e, 0xff, 0x45, 0x82, - 0x73, 0xa9, 0x62, 0xc4, 0x62, 0x38, 0x29, 0x1e, 0xc3, 0xf1, 0xf8, 0x2f, 0x08, 0xb1, 0x59, 0xfc, - 0x47, 0xe3, 0x67, 0x1e, 0x68, 0xa9, 0x7d, 0xed, 0xb9, 0xd1, 0x1f, 0xf4, 0x79, 0x00, 0x48, 0xd8, - 0x3d, 0x66, 0x90, 0x17, 0x89, 0x00, 0xd7, 0x60, 0x91, 0xb9, 0x5c, 0x1a, 0x78, 0x04, 0x14, 0x2c, - 0x10, 0x5c, 0x60, 0xcf, 0x48, 0x0c, 0xc2, 0x09, 0xe4, 0x4d, 0x58, 0xf0, 0x87, 0x35, 0xb2, 0xa8, - 0x22, 0x54, 0x24, 0x91, 0x8b, 0x16, 0x49, 0x98, 0x30, 0xb3, 0x8d, 0x9f, 0x1a, 0x1d, 0xfc, 0xa9, - 0xd4, 0x67, 0x5e, 0x84, 0xb2, 0x8d, 0x9d, 0xbe, 0xe1, 0xba, 0xfe, 0xbe, 0x5b, 0x52, 0xc2, 0x20, - 0xf9, 0xdf, 0x67, 0x60, 0x3e, 0x6e, 0x4e, 0x77, 0x87, 0x6a, 0x32, 0x5e, 0x1b, 0x71, 0x7e, 0x4e, - 0xb8, 0x74, 0xba, 0x2e, 0x8e, 0x2f, 0xb9, 0xb4, 0xd4, 0xa3, 0x7f, 0x44, 0x11, 0x67, 0x9b, 0x3a, - 0xcc, 0x76, 0xac, 0x7e, 0x5f, 0x33, 0x75, 0x51, 0x56, 0xcb, 0x9b, 0x44, 0x7f, 0x9a, 0xd3, 0x65, - 0xd7, 0x4d, 0x25, 0x85, 0xfe, 0x27, 0xb3, 0x4d, 0x4e, 0xad, 0x86, 0x49, 0x6b, 0x3b, 0xe8, 0x84, - 0x94, 0x14, 0xe0, 0xa0, 0x6d, 0xc3, 0x41, 0xab, 0x50, 0xc0, 0xe6, 0x53, 0x71, 0x6f, 0x9d, 0x70, - 0xbd, 0x21, 0x0e, 0x2e, 0x0a, 0xc5, 0x43, 0x6b, 0x30, 0xd3, 0x27, 0x76, 0x24, 0x32, 0x76, 0xcb, - 0x29, 0xe5, 0xa7, 0x0a, 0x47, 0x43, 0xeb, 0x30, 0xab, 0xd3, 0x79, 0x12, 0xf1, 0x7a, 0x3d, 0xa1, - 0x62, 0x84, 0x22, 0x28, 0x02, 0x11, 0xed, 0xf8, 0x77, 0x71, 0xa5, 0xb4, 0xeb, 0xf4, 0xd8, 0x54, - 0x24, 0x5e, 0xc3, 0x1d, 0x44, 0x8f, 0x81, 0x90, 0x76, 0xaf, 0x17, 0xe7, 0x35, 0xfa, 0x7e, 0xfe, - 0x1c, 0x14, 0x7b, 0x56, 0x97, 0x99, 0x51, 0x99, 0x55, 0x6c, 0xf7, 0xac, 0x2e, 0xb5, 0xa2, 0x45, - 0x98, 0x76, 0x3d, 0xdd, 0x30, 0x69, 0x90, 0x53, 0x54, 0x58, 0x83, 0xac, 0x56, 0xfa, 0x47, 0xb5, - 0xcc, 0x0e, 0xae, 0x57, 0xe8, 0xa3, 0x12, 0x85, 0xec, 0x9b, 0x1d, 0x7a, 0x20, 0xf4, 0xbc, 0xd3, - 0x7a, 0x95, 0xc2, 0xc9, 0xdf, 0xe0, 0x32, 0x6c, 0x7e, 0xe4, 0x65, 0x58, 0x4c, 0xec, 0x84, 0xcb, - 0xb0, 0xda, 0x98, 0xcb, 0xb0, 0x38, 0x87, 0x2f, 0x43, 0x19, 0xc9, 0x5f, 0x49, 0xb0, 0xb4, 0x45, - 0xf3, 0x33, 0x21, 0xc7, 0x37, 0x49, 0x51, 0xc3, 0x2d, 0xbf, 0xde, 0x24, 0xb5, 0x50, 0x20, 0x3e, - 0x6e, 0x51, 0x6e, 0xd2, 0x84, 0xaa, 0x60, 0xce, 0x59, 0xe4, 0x33, 0x97, 0xac, 0x54, 0xdc, 0x70, - 0x53, 0x7e, 0x1f, 0x96, 0x87, 0x46, 0xc1, 0x6f, 0xc3, 0xe3, 0xa5, 0xd5, 0x6c, 0x10, 0xe1, 0xd2, - 0x6a, 0x79, 0x03, 0xce, 0xb6, 0x3d, 0xcd, 0xf1, 0x86, 0x54, 0x90, 0x81, 0x96, 0x16, 0xa3, 0x44, - 0x69, 0x79, 0xbd, 0x48, 0x1b, 0x16, 0xdb, 0x9e, 0x65, 0xbf, 0x00, 0x53, 0xe2, 0x75, 0xc8, 0xf8, - 0xad, 0x81, 0xd8, 0x50, 0x44, 0x53, 0x5e, 0x66, 0xa5, 0x33, 0xc3, 0xbd, 0xdd, 0x86, 0x25, 0x56, - 0xb9, 0xf2, 0x22, 0x83, 0x38, 0x27, 0xea, 0x66, 0x86, 0xf9, 0x3e, 0x86, 0x33, 0x91, 0x2b, 0x49, - 0x9e, 0x13, 0xbe, 0x11, 0xcd, 0x09, 0x8f, 0xbb, 0xc8, 0xf4, 0x53, 0xc2, 0x7f, 0x98, 0x0b, 0xf9, - 0xf5, 0x94, 0x14, 0xcf, 0xed, 0x68, 0x46, 0xf8, 0x8d, 0x71, 0xbc, 0x23, 0x09, 0xe1, 0x61, 0xab, - 0xcd, 0x27, 0x58, 0xed, 0xb7, 0x87, 0xb2, 0x48, 0x85, 0xb4, 0xbc, 0x7b, 0x4c, 0xda, 0xcf, 0x25, - 0x7f, 0xa4, 0xb0, 0xac, 0xb1, 0xdf, 0xb5, 0x9f, 0x3a, 0xba, 0x15, 0x4b, 0x1d, 0x5d, 0x1a, 0x2b, - 0xaf, 0x9f, 0x34, 0xfa, 0xb3, 0x02, 0x94, 0xfc, 0x67, 0x43, 0x3a, 0x1f, 0x56, 0x5b, 0x2e, 0x41, - 0x6d, 0xe1, 0x1d, 0x38, 0xff, 0x52, 0x3b, 0x70, 0x21, 0xf3, 0x0e, 0x7c, 0x1e, 0x4a, 0xf4, 0x0f, - 0x2d, 0x15, 0x66, 0x3b, 0x6a, 0x91, 0x02, 0x14, 0x7c, 0x1c, 0x98, 0xe1, 0xcc, 0x44, 0x66, 0x18, - 0xcb, 0x53, 0xcf, 0xc6, 0xf3, 0xd4, 0x77, 0xfd, 0x1d, 0xb1, 0x98, 0x76, 0x8d, 0xed, 0xf3, 0x4d, - 0xdc, 0x0b, 0x63, 0x57, 0xa2, 0xa5, 0xb4, 0x2b, 0xd1, 0x80, 0xcb, 0x97, 0x36, 0x0f, 0x75, 0xc8, - 0x92, 0xcf, 0x61, 0x5b, 0xe4, 0x9e, 0xf5, 0x76, 0x24, 0xa3, 0x21, 0xa5, 0xbd, 0x07, 0x12, 0xf8, - 0x94, 0x70, 0x32, 0xe3, 0x10, 0x96, 0x22, 0x53, 0x13, 0x14, 0xd3, 0x65, 0xf3, 0x8f, 0x29, 0x95, - 0x74, 0xff, 0x3b, 0x1d, 0xf2, 0x2f, 0x29, 0x45, 0x62, 0x77, 0x87, 0xb2, 0x97, 0x13, 0x5a, 0xf1, - 0x8d, 0x68, 0x79, 0xc4, 0x0b, 0x5a, 0xdd, 0x50, 0x75, 0x04, 0x8d, 0x5c, 0x34, 0x87, 0x3f, 0x66, - 0xd1, 0x7c, 0x89, 0x43, 0x36, 0xe9, 0x51, 0xe2, 0xd8, 0x30, 0x0d, 0xf7, 0x84, 0x3d, 0x9f, 0x61, - 0x47, 0x09, 0x01, 0xda, 0xa4, 0xd7, 0x91, 0xf8, 0xb9, 0xe1, 0xa9, 0x1d, 0x4b, 0xc7, 0xd4, 0xa6, - 0xa7, 0x95, 0x22, 0x01, 0x6c, 0x59, 0x3a, 0x0e, 0x56, 0x5e, 0xf1, 0xc5, 0x56, 0x5e, 0x29, 0xb6, - 0xf2, 0x96, 0x60, 0xc6, 0xc1, 0x9a, 0x6b, 0x99, 0xec, 0x06, 0x42, 0xe1, 0x2d, 0x32, 0x35, 0x7d, - 0xec, 0xba, 0xa4, 0x27, 0x1e, 0xae, 0xf1, 0x66, 0x28, 0xcc, 0x9c, 0x1b, 0x1b, 0x66, 0x8e, 0x28, - 0x3e, 0x8b, 0x85, 0x99, 0x95, 0xb1, 0x61, 0x66, 0xa6, 0xda, 0xb3, 0x20, 0xd0, 0xae, 0x66, 0x0b, - 0xb4, 0xc3, 0x71, 0xe9, 0x7c, 0x24, 0x2e, 0xfd, 0x22, 0x17, 0xeb, 0x2f, 0x25, 0x58, 0x1e, 0x5a, - 0x56, 0x7c, 0xb9, 0xde, 0x8a, 0x55, 0xa7, 0x5d, 0x1a, 0xab, 0x33, 0xbf, 0x38, 0xed, 0x41, 0xa4, - 0x38, 0xed, 0x9d, 0xf1, 0x84, 0x9f, 0x7a, 0x6d, 0xda, 0xff, 0xe4, 0xe0, 0xd5, 0x43, 0x5b, 0x8f, - 0x45, 0x78, 0xfc, 0x9e, 0x20, 0xbb, 0xe3, 0xb8, 0x1b, 0x4d, 0x7c, 0x4f, 0x70, 0xe5, 0xc5, 0xc3, - 0xfd, 0x9d, 0x78, 0xee, 0x7b, 0xa2, 0x0b, 0x0d, 0x41, 0x8b, 0xf4, 0xa4, 0x92, 0x85, 0xfb, 0x09, - 0x89, 0xb9, 0xd1, 0x43, 0xfe, 0x8c, 0x13, 0x69, 0x32, 0x5c, 0x4c, 0x17, 0x80, 0xc7, 0x87, 0xdf, - 0x85, 0xf9, 0x9d, 0xe7, 0xb8, 0xd3, 0x3e, 0x35, 0x3b, 0x13, 0xcc, 0x43, 0x0d, 0xf2, 0x9d, 0xbe, - 0xce, 0x73, 0x0b, 0xe4, 0x6f, 0x38, 0xe4, 0xcd, 0x47, 0x43, 0x5e, 0x15, 0x6a, 0x41, 0x0f, 0xdc, - 0x96, 0x97, 0x88, 0x2d, 0xeb, 0x04, 0x99, 0x30, 0x9f, 0x53, 0x78, 0x8b, 0xc3, 0xb1, 0xc3, 0x0a, - 0xd7, 0x19, 0x1c, 0x3b, 0x4e, 0xd4, 0x35, 0xe6, 0xa3, 0xae, 0x51, 0xfe, 0x3d, 0x09, 0xca, 0xa4, - 0x87, 0x97, 0x92, 0x9f, 0x9f, 0x2b, 0xf3, 0xc1, 0xb9, 0xd2, 0x3f, 0x9e, 0x16, 0xc2, 0xc7, 0xd3, - 0x40, 0xf2, 0x69, 0x0a, 0x1e, 0x96, 0x7c, 0xc6, 0x87, 0x63, 0xc7, 0x91, 0x2f, 0xc2, 0x1c, 0x93, - 0x8d, 0x8f, 0xbc, 0x06, 0xf9, 0x81, 0xd3, 0x13, 0xf3, 0x37, 0x70, 0x7a, 0xf2, 0x4f, 0x24, 0xa8, - 0x6c, 0x7a, 0x9e, 0xd6, 0x39, 0x99, 0x60, 0x00, 0xbe, 0x70, 0xb9, 0xb0, 0x70, 0xc3, 0x83, 0x08, - 0xc4, 0x2d, 0xa4, 0x88, 0x3b, 0x1d, 0x11, 0x57, 0x86, 0xaa, 0x90, 0x25, 0x55, 0xe0, 0x3d, 0x40, - 0x2d, 0xcb, 0xf1, 0x76, 0x2d, 0xe7, 0x99, 0xe6, 0xe8, 0x93, 0x1d, 0x37, 0x11, 0x14, 0xf8, 0xab, - 0xc7, 0xf9, 0x2b, 0xd3, 0x0a, 0xfd, 0x2f, 0x5f, 0x86, 0x33, 0x11, 0x7e, 0xa9, 0x1d, 0xdf, 0x83, - 0x32, 0xdd, 0xe4, 0xf8, 0xb9, 0xe3, 0x7a, 0x38, 0x9b, 0x9d, 0x69, 0x4b, 0x94, 0xbf, 0x0e, 0x0b, - 0x24, 0x18, 0xa2, 0x70, 0xdf, 0xef, 0x7c, 0x2d, 0x16, 0x94, 0x5f, 0x48, 0x61, 0x14, 0x0b, 0xc8, - 0x7f, 0x98, 0x83, 0x69, 0x0a, 0x1f, 0x0a, 0x50, 0xce, 0x43, 0xc9, 0xc1, 0xb6, 0xa5, 0x7a, 0x5a, - 0xd7, 0x7f, 0xd1, 0x9b, 0x00, 0x0e, 0xb4, 0x2e, 0xcd, 0x7e, 0xd0, 0x87, 0xba, 0xd1, 0xc5, 0xae, - 0x27, 0x72, 0x6d, 0x65, 0x02, 0xdb, 0x66, 0x20, 0xa2, 0x24, 0x9a, 0x92, 0x2c, 0xd0, 0xcc, 0x23, - 0xfd, 0x8f, 0x56, 0xd9, 0xfb, 0x52, 0x59, 0xd2, 0x49, 0xf4, 0x6d, 0xaa, 0x06, 0x14, 0x63, 0x19, - 0x20, 0xbf, 0x8d, 0xd6, 0xa0, 0x40, 0xef, 0x8c, 0x67, 0xc7, 0xeb, 0x8d, 0x22, 0x12, 0x6b, 0xb1, - 0x0d, 0xd3, 0xc4, 0x3a, 0x8d, 0x3e, 0x8a, 0x0a, 0x6f, 0xc9, 0x3b, 0x80, 0xc2, 0xea, 0xe4, 0x13, - 0xb7, 0x06, 0x33, 0x54, 0xdb, 0x22, 0xa6, 0x5c, 0x4e, 0xe9, 0x40, 0xe1, 0x68, 0xb2, 0x06, 0x88, - 0xf5, 0x18, 0x89, 0x23, 0x27, 0x9f, 0xde, 0x11, 0x71, 0xe5, 0x5f, 0x4a, 0x70, 0x26, 0xd2, 0x07, - 0x97, 0xf5, 0x5a, 0xb4, 0x93, 0x54, 0x51, 0x79, 0x07, 0x5b, 0x91, 0x8d, 0x74, 0x2d, 0x4d, 0xa4, - 0xcf, 0x68, 0x13, 0xfd, 0x07, 0x09, 0x60, 0x73, 0xe0, 0x9d, 0xf0, 0xfb, 0xd4, 0xf0, 0x14, 0x4b, - 0xb1, 0x29, 0x6e, 0x40, 0xd1, 0xd6, 0x5c, 0xf7, 0x99, 0xe5, 0x88, 0x93, 0xa0, 0xdf, 0xa6, 0x37, - 0x9f, 0x03, 0xfe, 0x1e, 0x7a, 0x49, 0xa1, 0xff, 0xd1, 0x1b, 0x50, 0x65, 0x5f, 0x29, 0x50, 0x35, - 0x5d, 0x77, 0x44, 0x79, 0x54, 0x49, 0xa9, 0x30, 0xe8, 0x26, 0x03, 0x12, 0x34, 0x83, 0xe6, 0x17, - 0xbc, 0x53, 0xd5, 0xb3, 0x9e, 0x60, 0x93, 0x9f, 0xe8, 0x2a, 0x02, 0x7a, 0x40, 0x80, 0x2c, 0x7d, - 0xd7, 0x35, 0x5c, 0xcf, 0x11, 0x68, 0x22, 0x09, 0xc9, 0xa1, 0x14, 0x8d, 0x4c, 0x4a, 0xad, 0x35, - 0xe8, 0xf5, 0x98, 0x8a, 0x5f, 0x7c, 0xda, 0xbf, 0xca, 0x07, 0x94, 0x4b, 0x5b, 0x1c, 0x81, 0xd2, - 0xf8, 0x70, 0x3f, 0xc5, 0xab, 0xab, 0xaf, 0xc2, 0x42, 0x68, 0x0c, 0xdc, 0xac, 0x22, 0xa1, 0xb7, - 0x14, 0x0d, 0xbd, 0xe5, 0x07, 0x80, 0xd8, 0x6d, 0xcd, 0x4b, 0x8e, 0x5b, 0x3e, 0x0b, 0x67, 0x22, - 0x8c, 0xf8, 0x96, 0x7e, 0x15, 0x2a, 0xbc, 0xfc, 0x8a, 0x1b, 0xca, 0x39, 0x28, 0x12, 0xd7, 0xdc, - 0x31, 0x74, 0x51, 0xa7, 0x30, 0x6b, 0x5b, 0xfa, 0x96, 0xa1, 0x3b, 0xf2, 0x37, 0xa1, 0xc2, 0x5f, - 0xcc, 0xe5, 0xb8, 0xbb, 0x50, 0xe5, 0xb5, 0x72, 0x6a, 0xe4, 0x3d, 0xb4, 0x57, 0x53, 0x2b, 0xc1, - 0x84, 0x5a, 0xcc, 0x70, 0x53, 0xd6, 0xa1, 0xc1, 0x62, 0x8f, 0x08, 0x7b, 0x31, 0xd8, 0x5d, 0x10, - 0xe5, 0xd9, 0x63, 0x7b, 0x89, 0xd2, 0x57, 0x9c, 0x70, 0x53, 0xbe, 0x00, 0xe7, 0x13, 0x7b, 0xe1, - 0x9a, 0xb0, 0xa1, 0x16, 0x3c, 0x60, 0x2f, 0x4b, 0xf9, 0x85, 0x18, 0x52, 0xa8, 0x10, 0x63, 0xc9, - 0x0f, 0xad, 0x73, 0x62, 0x37, 0xa4, 0x71, 0x73, 0x70, 0x48, 0xca, 0xa7, 0x1d, 0x92, 0x0a, 0x91, - 0x43, 0x92, 0xdc, 0xf6, 0xf5, 0xc9, 0x0f, 0xaf, 0xf7, 0xe9, 0x21, 0x9b, 0xf5, 0x2d, 0x1c, 0xa2, - 0x3c, 0x6a, 0x94, 0x0c, 0x55, 0x09, 0x51, 0xc9, 0x6f, 0x41, 0x25, 0xea, 0x1a, 0x43, 0x7e, 0x4e, - 0x1a, 0xf2, 0x73, 0xd5, 0x98, 0x8b, 0x7b, 0x2f, 0x76, 0x6e, 0x48, 0xd7, 0x71, 0xec, 0xd4, 0x70, - 0x27, 0xe2, 0xec, 0xae, 0x26, 0x24, 0xc7, 0x3f, 0x23, 0x3f, 0xb7, 0xc8, 0xf7, 0x83, 0x5d, 0x97, - 0xd0, 0xf3, 0x41, 0xcb, 0xaf, 0x41, 0xf9, 0x30, 0xed, 0x33, 0x0b, 0x05, 0x51, 0x07, 0x76, 0x03, - 0x16, 0x77, 0x8d, 0x1e, 0x76, 0x4f, 0x5d, 0x0f, 0xf7, 0x9b, 0xd4, 0x29, 0x1d, 0x1b, 0xd8, 0x41, - 0x2b, 0x00, 0xf4, 0xe0, 0x67, 0x5b, 0x86, 0xff, 0xc2, 0x78, 0x08, 0x22, 0xff, 0xa7, 0x04, 0xf3, - 0x01, 0x61, 0x96, 0xea, 0xbc, 0xdb, 0x30, 0x7d, 0xec, 0x8a, 0x8b, 0xb6, 0xc4, 0xb4, 0x43, 0x92, - 0x20, 0x4a, 0xe1, 0xd8, 0x6d, 0xea, 0xe8, 0x7d, 0x80, 0x81, 0x8b, 0x75, 0x9e, 0xf8, 0xcb, 0x54, - 0xbb, 0x58, 0x22, 0x04, 0x2c, 0x81, 0x78, 0x07, 0xca, 0x86, 0x69, 0xe9, 0x98, 0xa6, 0x89, 0xf5, - 0x6c, 0xf5, 0x8b, 0xc0, 0x28, 0x0e, 0x5d, 0xac, 0xcb, 0x98, 0xef, 0x85, 0x42, 0xbf, 0xdc, 0x50, - 0xf6, 0x60, 0x81, 0x39, 0xad, 0x63, 0x5f, 0xf0, 0x11, 0x35, 0xe8, 0x31, 0x6d, 0x29, 0x35, 0x83, - 0xc7, 0x48, 0x82, 0x54, 0xde, 0x80, 0xb3, 0xb1, 0x6a, 0xd8, 0xec, 0x37, 0xda, 0xad, 0xd8, 0xf5, - 0x52, 0x60, 0xce, 0x37, 0xa2, 0xef, 0x28, 0x8c, 0x2f, 0xc1, 0xe5, 0xc5, 0xf1, 0xdf, 0x86, 0x73, - 0x91, 0x7b, 0xb0, 0x88, 0x44, 0x77, 0x62, 0x21, 0xe0, 0x9b, 0xe3, 0xb8, 0xc6, 0x62, 0xc1, 0xff, - 0x96, 0x60, 0x31, 0x09, 0xe1, 0x05, 0xef, 0x69, 0xbf, 0x9b, 0xf2, 0x56, 0xd4, 0xad, 0x6c, 0x62, - 0x7d, 0x2e, 0x77, 0xdc, 0x07, 0xec, 0x1d, 0x89, 0xf1, 0xb3, 0x94, 0x9f, 0x64, 0x96, 0x7e, 0x9c, - 0x0f, 0xe5, 0x2b, 0x46, 0xbc, 0xc1, 0xf0, 0xd2, 0x77, 0x80, 0xcd, 0xd8, 0x0b, 0x0c, 0xd7, 0x47, - 0x90, 0x8f, 0x79, 0x7f, 0xe1, 0xa3, 0xa4, 0xcb, 0x80, 0x1b, 0xd9, 0xf8, 0x7d, 0x69, 0xaf, 0x8d, - 0x7f, 0x9c, 0x83, 0x6a, 0x74, 0x8a, 0xd0, 0x4e, 0xc2, 0xdb, 0x0b, 0x6f, 0x64, 0x1a, 0x66, 0xe4, - 0xe5, 0x05, 0xfe, 0x86, 0x40, 0x6e, 0xd2, 0x37, 0x04, 0xf2, 0x93, 0xbc, 0x21, 0xf0, 0x10, 0xaa, - 0xcf, 0x1c, 0xc3, 0xd3, 0x8e, 0x7a, 0x58, 0xed, 0x69, 0xa7, 0xd8, 0xe1, 0x5e, 0x32, 0x83, 0x23, - 0xab, 0x08, 0xc2, 0x47, 0x84, 0x4e, 0xfe, 0x1b, 0x09, 0x8a, 0x42, 0xa4, 0xb1, 0x75, 0xf9, 0xcb, - 0x03, 0x82, 0xa6, 0xd2, 0xda, 0x5e, 0x53, 0x33, 0x2d, 0xd5, 0xc5, 0x64, 0x1f, 0xcf, 0x58, 0xd9, - 0xbe, 0x48, 0xa9, 0xb7, 0x2c, 0x07, 0xef, 0x69, 0xa6, 0xd5, 0x66, 0xa4, 0xe8, 0x01, 0xd4, 0x18, - 0x57, 0xca, 0x90, 0xb0, 0xce, 0xb8, 0x63, 0x54, 0x29, 0x19, 0x61, 0x45, 0x58, 0xba, 0xf2, 0x5f, - 0xe7, 0xa1, 0x1c, 0xd2, 0xd5, 0x98, 0xc1, 0x34, 0x61, 0x41, 0xd4, 0x42, 0xb8, 0xd8, 0x9b, 0xa4, - 0x40, 0x7f, 0x9e, 0xd3, 0xb5, 0xb1, 0xc7, 0xf6, 0xab, 0x5d, 0x98, 0xd7, 0x9e, 0x6a, 0x46, 0x8f, - 0xce, 0xc6, 0x04, 0x5b, 0x5e, 0xd5, 0xa7, 0xf2, 0xf7, 0x3d, 0xa6, 0x89, 0x09, 0xea, 0xf6, 0x81, - 0x52, 0x04, 0x2f, 0x0c, 0xb8, 0x6e, 0xa8, 0xda, 0x26, 0xc3, 0x0b, 0x03, 0xae, 0xeb, 0xf7, 0x4d, - 0x6b, 0x85, 0xe9, 0x4b, 0x13, 0x2e, 0x7f, 0x81, 0x7b, 0x5c, 0xdf, 0x84, 0x62, 0x97, 0x12, 0x10, - 0x75, 0xf6, 0xb5, 0xef, 0x59, 0x8e, 0x1a, 0xe6, 0x32, 0x9b, 0x49, 0x9d, 0x94, 0xae, 0xe5, 0xb3, - 0x92, 0xef, 0xc0, 0x39, 0x05, 0x5b, 0x36, 0x36, 0xfd, 0x95, 0xf6, 0xc8, 0xea, 0x4e, 0xb0, 0xb7, - 0xbe, 0x02, 0x8d, 0x24, 0x7a, 0xe6, 0xb9, 0xaf, 0xbe, 0x09, 0x45, 0xf1, 0xf1, 0x38, 0x34, 0x0b, - 0xf9, 0x83, 0xad, 0x56, 0x6d, 0x8a, 0xfc, 0x39, 0xdc, 0x6e, 0xd5, 0x24, 0x54, 0x84, 0x42, 0x7b, - 0xeb, 0xa0, 0x55, 0xcb, 0x5d, 0xed, 0x43, 0x2d, 0xfe, 0xe5, 0x34, 0xb4, 0x0c, 0x67, 0x5a, 0xca, - 0x7e, 0x6b, 0xf3, 0xc1, 0xe6, 0x41, 0x73, 0x7f, 0x4f, 0x6d, 0x29, 0xcd, 0x0f, 0x37, 0x0f, 0x76, - 0x6a, 0x53, 0xe8, 0x12, 0x5c, 0x08, 0x3f, 0x78, 0xb8, 0xdf, 0x3e, 0x50, 0x0f, 0xf6, 0xd5, 0xad, - 0xfd, 0xbd, 0x83, 0xcd, 0xe6, 0xde, 0x8e, 0x52, 0x93, 0xd0, 0x05, 0x38, 0x17, 0x46, 0xb9, 0xdf, - 0xdc, 0x6e, 0x2a, 0x3b, 0x5b, 0xe4, 0xff, 0xe6, 0xa3, 0x5a, 0xee, 0xea, 0x07, 0x50, 0x89, 0x7c, - 0xde, 0x8b, 0x88, 0xd4, 0xda, 0xdf, 0xae, 0x4d, 0xa1, 0x0a, 0x94, 0xc2, 0x7c, 0x8a, 0x50, 0xd8, - 0xdb, 0xdf, 0xde, 0xa9, 0xe5, 0x10, 0xc0, 0xcc, 0xc1, 0xa6, 0xf2, 0x60, 0xe7, 0xa0, 0x96, 0xbf, - 0xba, 0x11, 0x7f, 0x19, 0x0b, 0xa3, 0x05, 0xa8, 0xb4, 0x37, 0xf7, 0xb6, 0xef, 0xef, 0x7f, 0xa4, - 0x2a, 0x3b, 0x9b, 0xdb, 0x1f, 0xd7, 0xa6, 0xd0, 0x22, 0xd4, 0x04, 0x68, 0x6f, 0xff, 0x80, 0x41, - 0xa5, 0xab, 0x4f, 0x62, 0x9e, 0x10, 0xa3, 0xb3, 0xb0, 0xe0, 0x77, 0xa9, 0x6e, 0x29, 0x3b, 0x9b, - 0x07, 0x3b, 0x44, 0x92, 0x08, 0x58, 0x39, 0xdc, 0xdb, 0x6b, 0xee, 0x3d, 0xa8, 0x49, 0x84, 0x6b, - 0x00, 0xde, 0xf9, 0xa8, 0x49, 0x90, 0x73, 0x51, 0xe4, 0xc3, 0xbd, 0x6f, 0xec, 0xed, 0x7f, 0x73, - 0xaf, 0x96, 0x5f, 0xff, 0xd9, 0x19, 0xff, 0x53, 0x49, 0x6d, 0xec, 0xd0, 0x8a, 0xad, 0x16, 0xcc, - 0x8a, 0x0f, 0x13, 0x26, 0xec, 0xa3, 0xd1, 0xcf, 0x29, 0x36, 0x2e, 0x8d, 0xc0, 0xe0, 0xa7, 0xa2, - 0x29, 0x74, 0x44, 0x4f, 0x29, 0xa1, 0x57, 0x90, 0xdf, 0x4c, 0x3c, 0x13, 0x0c, 0xbd, 0xf5, 0xdc, - 0xb8, 0x3c, 0x16, 0xcf, 0xef, 0x03, 0x93, 0x83, 0x48, 0xf8, 0x2b, 0x1f, 0xe8, 0x72, 0xd2, 0x09, - 0x22, 0xe1, 0x33, 0x22, 0x8d, 0x2b, 0xe3, 0x11, 0xfd, 0x6e, 0x9e, 0x40, 0x2d, 0xfe, 0xc5, 0x0f, - 0x94, 0x90, 0x16, 0x48, 0xf9, 0xac, 0x48, 0xe3, 0x6a, 0x16, 0xd4, 0x70, 0x67, 0x43, 0x9f, 0xb0, - 0x78, 0x2b, 0xcb, 0xab, 0xfe, 0xa9, 0x9d, 0xa5, 0x7d, 0x15, 0x80, 0x29, 0x30, 0xfa, 0x96, 0x28, - 0x4a, 0xfc, 0x5e, 0x44, 0xc2, 0xcb, 0xe9, 0x49, 0x0a, 0x4c, 0x7e, 0x01, 0x59, 0x9e, 0x42, 0x27, - 0x30, 0x1f, 0x2b, 0xbd, 0x41, 0x09, 0xe4, 0xc9, 0x35, 0x46, 0x8d, 0xb7, 0x32, 0x60, 0x46, 0x2d, - 0x22, 0x5c, 0x6a, 0x93, 0x6c, 0x11, 0x09, 0x85, 0x3c, 0xc9, 0x16, 0x91, 0x58, 0xb5, 0x43, 0x8d, - 0x3b, 0x52, 0x62, 0x93, 0x64, 0xdc, 0x49, 0x85, 0x3d, 0x8d, 0xcb, 0x63, 0xf1, 0xc2, 0x4a, 0x8b, - 0x15, 0xdc, 0x24, 0x29, 0x2d, 0xb9, 0xa0, 0xa7, 0xf1, 0x56, 0x06, 0xcc, 0xb8, 0x15, 0x04, 0xe9, - 0xfb, 0x34, 0x2b, 0x18, 0x2a, 0x36, 0x49, 0xb3, 0x82, 0xe1, 0x4a, 0x00, 0x6e, 0x05, 0xb1, 0xb4, - 0xfb, 0x95, 0x0c, 0x69, 0xc2, 0x74, 0x2b, 0x48, 0x4e, 0x28, 0xca, 0x53, 0xe8, 0x47, 0x12, 0xd4, - 0xd3, 0xb2, 0x52, 0xe8, 0xfa, 0xc4, 0x29, 0xb4, 0xc6, 0xfa, 0x24, 0x24, 0xbe, 0x14, 0xdf, 0x07, - 0x34, 0xbc, 0x07, 0xa2, 0xaf, 0x24, 0xcd, 0x4c, 0xca, 0x4e, 0xdb, 0x78, 0x3b, 0x1b, 0xb2, 0xdf, - 0x65, 0x1b, 0x8a, 0x22, 0x0f, 0x86, 0x12, 0xbc, 0x74, 0x2c, 0x0b, 0xd7, 0x90, 0x47, 0xa1, 0xf8, - 0x4c, 0x1f, 0x40, 0x81, 0x40, 0xd1, 0x85, 0x64, 0x6c, 0xc1, 0x6c, 0x25, 0xed, 0xb1, 0xcf, 0xe8, - 0x31, 0xcc, 0xb0, 0xc4, 0x0f, 0x4a, 0xb8, 0x1f, 0x8a, 0xa4, 0xa7, 0x1a, 0x17, 0xd3, 0x11, 0x7c, - 0x76, 0xdf, 0x61, 0xdf, 0xac, 0xe5, 0x39, 0x1d, 0xf4, 0x7a, 0xf2, 0x87, 0xcb, 0xa2, 0x29, 0xa4, - 0xc6, 0x1b, 0x63, 0xb0, 0xc2, 0x8b, 0x22, 0x76, 0x36, 0xb9, 0x3c, 0xf6, 0x80, 0x99, 0xbe, 0x28, - 0x92, 0x8f, 0xb0, 0xcc, 0x48, 0x86, 0x8f, 0xb8, 0x49, 0x46, 0x92, 0x7a, 0xb1, 0x90, 0x64, 0x24, - 0xe9, 0xa7, 0x66, 0xb6, 0x0e, 0xe3, 0x6f, 0x54, 0x5f, 0x19, 0xff, 0xfe, 0x7f, 0xfa, 0x3a, 0x4c, - 0xf9, 0xc6, 0x80, 0x3c, 0x85, 0x3c, 0x38, 0x93, 0xf0, 0x11, 0x02, 0xf4, 0xf6, 0xb8, 0xad, 0x23, - 0xd2, 0xe3, 0xb5, 0x8c, 0xd8, 0xe1, 0x5e, 0x13, 0x2e, 0x6c, 0x93, 0x7a, 0x4d, 0xbf, 0x3d, 0x4e, - 0xea, 0x75, 0xd4, 0x2d, 0x30, 0x35, 0x6e, 0xee, 0xd4, 0x5e, 0x4d, 0xbf, 0xc5, 0x4c, 0x35, 0xee, - 0xb8, 0x0b, 0x5b, 0xff, 0x55, 0x1e, 0xe6, 0xd8, 0x65, 0x3c, 0x8f, 0xd0, 0x3e, 0x06, 0x08, 0xf2, - 0x60, 0xe8, 0xb5, 0x64, 0xa5, 0x44, 0x92, 0x8e, 0x8d, 0xd7, 0x47, 0x23, 0x85, 0x17, 0x52, 0x28, - 0xa7, 0x94, 0xb4, 0x90, 0x86, 0x53, 0x67, 0x49, 0x0b, 0x29, 0x21, 0x31, 0x25, 0x4f, 0xa1, 0x0f, - 0xa1, 0xe4, 0x27, 0x2f, 0x50, 0x52, 0xf2, 0x23, 0x96, 0x9d, 0x69, 0xbc, 0x36, 0x12, 0x27, 0x2c, - 0x75, 0x28, 0x33, 0x91, 0x24, 0xf5, 0x70, 0x06, 0x24, 0x49, 0xea, 0xa4, 0xf4, 0x46, 0xa0, 0x13, - 0x76, 0x7f, 0x99, 0xaa, 0x93, 0xc8, 0xf5, 0x71, 0xaa, 0x4e, 0xa2, 0x97, 0xa0, 0xf2, 0xd4, 0xfd, - 0xdd, 0x5f, 0xfc, 0x7a, 0x45, 0xfa, 0xa7, 0x5f, 0xaf, 0x4c, 0xfd, 0xf0, 0x93, 0x15, 0xe9, 0x17, - 0x9f, 0xac, 0x48, 0xff, 0xf8, 0xc9, 0x8a, 0xf4, 0xaf, 0x9f, 0xac, 0x48, 0xbf, 0xfd, 0x6f, 0x2b, - 0x53, 0xdf, 0xba, 0xf2, 0xe4, 0xa6, 0xbb, 0x6a, 0x58, 0x6b, 0x1d, 0xc7, 0xb8, 0xa6, 0xd9, 0xc6, - 0x9a, 0xfd, 0xa4, 0xbb, 0xa6, 0xd9, 0x86, 0xbb, 0xc6, 0xb9, 0xaf, 0x09, 0xee, 0x47, 0x33, 0xf4, - 0xcb, 0xdb, 0xef, 0xfc, 0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x58, 0x83, 0xb8, 0x3f, 0x5d, - 0x00, 0x00, + // 5841 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x7c, 0xdd, 0x6f, 0x1b, 0xd9, + 0x75, 0xb8, 0x86, 0xa4, 0x24, 0xf2, 0x50, 0xa4, 0xa8, 0x6b, 0x59, 0xa2, 0xe9, 0xb5, 0xd6, 0x9e, + 0xfd, 0xb0, 0xd7, 0x59, 0x4b, 0xb1, 0x76, 0xe3, 0xdd, 0x95, 0x77, 0x6d, 0xeb, 0xd3, 0x66, 0x62, + 0x4b, 0xfc, 0x0d, 0xa5, 0xcd, 0x6e, 0x92, 0x1f, 0x26, 0x23, 0xce, 0x15, 0x35, 0x31, 0x39, 0x33, + 0x99, 0x19, 0xda, 0x56, 0xfa, 0x12, 0x20, 0x40, 0x1e, 0xf2, 0x54, 0xa0, 0x28, 0x02, 0x14, 0x45, + 0x81, 0xb4, 0x40, 0xfb, 0x9c, 0x16, 0x7d, 0xea, 0x4b, 0x5b, 0xb4, 0x68, 0xd0, 0x0f, 0xa0, 0x4f, + 0x41, 0x8b, 0xf4, 0xa1, 0xd9, 0xa2, 0x40, 0x51, 0xa0, 0x40, 0xd1, 0xbf, 0xa0, 0xb8, 0x5f, 0xf3, + 0xc5, 0x19, 0x72, 0x68, 0xef, 0x57, 0x9f, 0xc8, 0x39, 0x73, 0xce, 0xb9, 0xe7, 0x9e, 0x7b, 0xee, + 0xb9, 0xe7, 0xde, 0x73, 0xee, 0x40, 0x49, 0xb3, 0x8d, 0x55, 0xdb, 0xb1, 0x3c, 0x0b, 0xd5, 0x9c, + 0x81, 0xe9, 0x19, 0x7d, 0xbc, 0xfa, 0xe4, 0xa6, 0xd6, 0xb3, 0x4f, 0xb5, 0xf5, 0xc6, 0x8d, 0xae, + 0xe1, 0x9d, 0x0e, 0x8e, 0x57, 0x3b, 0x56, 0x7f, 0xad, 0x6b, 0x75, 0xad, 0x35, 0x8a, 0x78, 0x3c, + 0x38, 0xa1, 0x4f, 0xf4, 0x81, 0xfe, 0x63, 0x0c, 0xe4, 0xeb, 0x50, 0xfd, 0x10, 0x3b, 0xae, 0x61, + 0x99, 0x0a, 0xfe, 0xfe, 0x00, 0xbb, 0x1e, 0xaa, 0xc3, 0xec, 0x13, 0x06, 0xa9, 0x4b, 0x97, 0xa5, + 0x6b, 0x25, 0x45, 0x3c, 0xca, 0x7f, 0x24, 0xc1, 0xbc, 0x8f, 0xec, 0xda, 0x96, 0xe9, 0xe2, 0x74, + 0x6c, 0x74, 0x05, 0xe6, 0xb8, 0x70, 0xaa, 0xa9, 0xf5, 0x71, 0x3d, 0x47, 0x5f, 0x97, 0x39, 0x6c, + 0x5f, 0xeb, 0x63, 0x74, 0x15, 0xe6, 0x05, 0x8a, 0x60, 0x92, 0xa7, 0x58, 0x55, 0x0e, 0xe6, 0xad, + 0xa1, 0x55, 0x38, 0x27, 0x10, 0x35, 0xdb, 0xf0, 0x91, 0x0b, 0x14, 0x79, 0x81, 0xbf, 0xda, 0xb4, + 0x0d, 0x8e, 0x2f, 0x7f, 0x1b, 0x4a, 0x3b, 0xfb, 0xed, 0x6d, 0xcb, 0x3c, 0x31, 0xba, 0x44, 0x44, + 0x17, 0x3b, 0x84, 0xa6, 0x2e, 0x5d, 0xce, 0x13, 0x11, 0xf9, 0x23, 0x6a, 0x40, 0xd1, 0xc5, 0x9a, + 0xd3, 0x39, 0xc5, 0x6e, 0x3d, 0x47, 0x5f, 0xf9, 0xcf, 0x84, 0xca, 0xb2, 0x3d, 0xc3, 0x32, 0xdd, + 0x7a, 0x9e, 0x51, 0xf1, 0x47, 0xf9, 0xf7, 0x25, 0x28, 0xb7, 0x2c, 0xc7, 0x7b, 0xa4, 0xd9, 0xb6, + 0x61, 0x76, 0xd1, 0x2d, 0x28, 0x52, 0x5d, 0x76, 0xac, 0x1e, 0xd5, 0x41, 0x75, 0xbd, 0xb1, 0x1a, + 0x1f, 0x96, 0xd5, 0x16, 0xc7, 0x50, 0x7c, 0x5c, 0xf4, 0x1a, 0x54, 0x3b, 0x96, 0xe9, 0x69, 0x86, + 0x89, 0x1d, 0xd5, 0xb6, 0x1c, 0x8f, 0xaa, 0x68, 0x5a, 0xa9, 0xf8, 0x50, 0xd2, 0x0a, 0xba, 0x08, + 0xa5, 0x53, 0xcb, 0xf5, 0x18, 0x46, 0x9e, 0x62, 0x14, 0x09, 0x80, 0xbe, 0x5c, 0x86, 0x59, 0xfa, + 0xd2, 0xb0, 0xb9, 0x32, 0x66, 0xc8, 0x63, 0xd3, 0x96, 0x7f, 0x29, 0xc1, 0xf4, 0x23, 0x6b, 0x60, + 0x7a, 0xb1, 0x66, 0x34, 0xef, 0x94, 0x0f, 0x54, 0xa8, 0x19, 0xcd, 0x3b, 0x0d, 0x9a, 0x21, 0x18, + 0x6c, 0xac, 0x58, 0x33, 0xe4, 0x65, 0x03, 0x8a, 0x0e, 0xd6, 0x74, 0xcb, 0xec, 0x9d, 0x51, 0x11, + 0x8a, 0x8a, 0xff, 0x4c, 0x06, 0xd1, 0xc5, 0x3d, 0xc3, 0x1c, 0x3c, 0x53, 0x1d, 0xdc, 0xd3, 0x8e, + 0x71, 0x8f, 0x8a, 0x52, 0x54, 0xaa, 0x1c, 0xac, 0x30, 0x28, 0xda, 0x81, 0xb2, 0xed, 0x58, 0xb6, + 0xd6, 0xd5, 0x88, 0x1e, 0xeb, 0xd3, 0x54, 0x55, 0xf2, 0xb0, 0xaa, 0xa8, 0xd8, 0xad, 0x00, 0x53, + 0x09, 0x93, 0xc9, 0x2a, 0x94, 0x9a, 0x3b, 0x42, 0xf5, 0x7e, 0xf7, 0x75, 0xda, 0xa9, 0x0a, 0xef, + 0xbe, 0x4e, 0x8c, 0x2f, 0xe8, 0xb4, 0xa1, 0xd3, 0x0e, 0x55, 0x94, 0xb2, 0x0f, 0x6b, 0xea, 0x68, + 0x09, 0x66, 0x7a, 0xd8, 0xec, 0x7a, 0xa7, 0xb4, 0x47, 0x15, 0x85, 0x3f, 0xc9, 0x7f, 0x28, 0x41, + 0xe5, 0xc8, 0xc5, 0x0e, 0xb1, 0x50, 0xd7, 0xd6, 0x3a, 0x18, 0xbd, 0x05, 0x85, 0xbe, 0xa5, 0x63, + 0x3e, 0xb8, 0x2f, 0x0f, 0x4b, 0xec, 0xa3, 0x3e, 0xb2, 0x74, 0xac, 0x50, 0x64, 0xb4, 0x06, 0x85, + 0x81, 0xa1, 0x33, 0xbb, 0x2a, 0xaf, 0x5f, 0x1c, 0x26, 0xf2, 0x7b, 0xa1, 0x50, 0x44, 0x42, 0xd0, + 0x25, 0x04, 0xf9, 0x0c, 0x04, 0x04, 0x51, 0xfe, 0x69, 0x0e, 0xe6, 0xfd, 0x96, 0x0f, 0xa8, 0x71, + 0xa2, 0xf7, 0x60, 0xd6, 0xc4, 0xde, 0x53, 0xcb, 0x79, 0x9c, 0x55, 0x5a, 0x81, 0x8f, 0x6e, 0x42, + 0xde, 0xe6, 0x9a, 0xca, 0x40, 0x46, 0x70, 0x09, 0x89, 0x61, 0x77, 0xa8, 0xfe, 0xb2, 0x90, 0x18, + 0x76, 0x87, 0x98, 0x99, 0xa7, 0x39, 0x5d, 0x4c, 0xc7, 0x8c, 0x99, 0x6c, 0x91, 0x01, 0x9a, 0x3a, + 0xda, 0x83, 0xea, 0xc0, 0xc5, 0x8e, 0xe9, 0xaa, 0x62, 0xea, 0x11, 0x23, 0x29, 0x27, 0xb1, 0x8e, + 0x8c, 0x90, 0x52, 0x61, 0x64, 0x07, 0x7c, 0x86, 0xca, 0x00, 0x4d, 0xd3, 0xbb, 0xf5, 0xf6, 0x87, + 0x5a, 0x6f, 0x80, 0xd1, 0x22, 0x4c, 0x3f, 0x21, 0x7f, 0xa8, 0x46, 0xf2, 0x0a, 0x7b, 0x90, 0x7f, + 0x5d, 0x80, 0x8b, 0x0f, 0x89, 0x79, 0xb6, 0x35, 0x53, 0x3f, 0xb6, 0x9e, 0xb5, 0x71, 0x67, 0xe0, + 0x18, 0xde, 0xd9, 0xb6, 0x65, 0x7a, 0xf8, 0x99, 0x87, 0xf6, 0x61, 0xc1, 0x14, 0xfc, 0x7d, 0x71, + 0x24, 0x2a, 0xce, 0x95, 0x11, 0x3d, 0x65, 0x22, 0x28, 0x35, 0x33, 0x0a, 0x70, 0xd1, 0x83, 0x60, + 0x9a, 0x08, 0x6e, 0xb9, 0xb4, 0xce, 0xb5, 0x77, 0xa9, 0x64, 0x9c, 0x97, 0x98, 0x47, 0x82, 0xd3, + 0xfb, 0x40, 0x9c, 0xa8, 0xaa, 0xb9, 0x2a, 0xe9, 0x35, 0xd5, 0x7e, 0x79, 0xfd, 0xa5, 0x04, 0x7b, + 0xf1, 0x55, 0xa0, 0x94, 0x9c, 0x81, 0xb9, 0xe9, 0x12, 0x9d, 0xa1, 0x3b, 0xd4, 0x2d, 0x13, 0xea, + 0xae, 0x63, 0x0d, 0xec, 0x7a, 0x31, 0x03, 0x39, 0x50, 0xf2, 0xfb, 0x04, 0x9f, 0xfa, 0x6c, 0x3e, + 0xf5, 0x55, 0xc7, 0xb2, 0xbc, 0x13, 0x57, 0x4c, 0x77, 0x01, 0x56, 0x28, 0x14, 0xad, 0xc1, 0x39, + 0x77, 0x60, 0xdb, 0x3d, 0xdc, 0xc7, 0xa6, 0xa7, 0xf5, 0x58, 0x73, 0x64, 0x44, 0xf3, 0xd7, 0xf2, + 0x0a, 0x0a, 0xbf, 0xa2, 0x8c, 0x5d, 0xb4, 0x02, 0x60, 0x3b, 0xc6, 0x13, 0xa3, 0x87, 0xbb, 0x58, + 0xaf, 0xcf, 0x50, 0xa6, 0x21, 0x08, 0xba, 0x4d, 0xfc, 0x78, 0xa7, 0x63, 0xf5, 0xed, 0x7a, 0x29, + 0x6d, 0x1c, 0xc4, 0x28, 0xb6, 0x1c, 0xeb, 0xc4, 0xe8, 0x61, 0x45, 0x50, 0xa0, 0x0f, 0xa0, 0xa8, + 0xd9, 0xb6, 0xe6, 0xf4, 0x2d, 0xa7, 0x0e, 0x59, 0xa9, 0x7d, 0x12, 0xf4, 0x36, 0x2c, 0x72, 0x4e, + 0xaa, 0xcd, 0x5e, 0x32, 0x47, 0x39, 0x4b, 0x2c, 0x78, 0x2b, 0x57, 0x97, 0x14, 0xc4, 0xdf, 0x73, + 0x5a, 0xe2, 0x36, 0xe5, 0xbf, 0x95, 0x60, 0x3e, 0xc6, 0x13, 0xb5, 0x60, 0x4e, 0x70, 0xf0, 0xce, + 0x6c, 0xe1, 0x54, 0x6e, 0x8c, 0x15, 0x66, 0x95, 0xff, 0x1e, 0x9e, 0xd9, 0x98, 0x7a, 0x44, 0xf1, + 0x80, 0x5e, 0x81, 0x4a, 0xcf, 0xea, 0x68, 0x3d, 0xea, 0x09, 0x1d, 0x7c, 0xc2, 0xbd, 0xf7, 0x9c, + 0x0f, 0x54, 0xf0, 0x89, 0x7c, 0x0f, 0xca, 0x21, 0x06, 0x08, 0x41, 0x55, 0x61, 0x0d, 0xee, 0xe0, + 0x13, 0x6d, 0xd0, 0xf3, 0x6a, 0x53, 0xa8, 0x0a, 0x70, 0x64, 0x76, 0xc8, 0x9a, 0x69, 0x62, 0xbd, + 0x26, 0xa1, 0x0a, 0x94, 0x1e, 0x0a, 0x16, 0xb5, 0x9c, 0xfc, 0xc7, 0x79, 0x38, 0x4f, 0xcd, 0xb2, + 0x65, 0xe9, 0x7c, 0xce, 0xf0, 0x05, 0xf6, 0x15, 0xa8, 0x74, 0xe8, 0xe8, 0xaa, 0xb6, 0xe6, 0x60, + 0xd3, 0xe3, 0x0b, 0xcc, 0x1c, 0x03, 0xb6, 0x28, 0x0c, 0x7d, 0x04, 0x35, 0x97, 0xf7, 0x48, 0xed, + 0xb0, 0x39, 0xc6, 0x27, 0x40, 0x42, 0xdf, 0x47, 0x4c, 0x4c, 0x65, 0xde, 0x1d, 0x9a, 0xa9, 0xb3, + 0xee, 0x99, 0xdb, 0xf1, 0x7a, 0xc2, 0x77, 0xbe, 0x9d, 0xc2, 0x30, 0x2e, 0xf8, 0x6a, 0x9b, 0x91, + 0xed, 0x9a, 0x9e, 0x73, 0xa6, 0x08, 0x26, 0x68, 0x17, 0x8a, 0xd6, 0x13, 0xec, 0x9c, 0x62, 0x8d, + 0x79, 0xa8, 0xf2, 0xfa, 0x1b, 0x29, 0x0c, 0xb7, 0xc5, 0x72, 0xa2, 0x60, 0xd7, 0x1a, 0x38, 0x1d, + 0xec, 0x2a, 0x3e, 0x29, 0xba, 0x0f, 0x25, 0x47, 0x80, 0xb9, 0x1f, 0x9b, 0x80, 0x4f, 0x40, 0xdb, + 0xd8, 0x80, 0xb9, 0xb0, 0xa0, 0xa8, 0x06, 0xf9, 0xc7, 0xf8, 0x8c, 0x2b, 0x99, 0xfc, 0x0d, 0x3c, + 0x1c, 0x1b, 0x79, 0xf6, 0xb0, 0x91, 0x7b, 0x57, 0x92, 0x1d, 0x40, 0x41, 0xaf, 0x1f, 0x61, 0x4f, + 0xd3, 0x35, 0x4f, 0x43, 0x08, 0x0a, 0x34, 0x24, 0x63, 0x2c, 0xe8, 0x7f, 0xc2, 0x75, 0xc0, 0xdd, + 0x7f, 0x49, 0x21, 0x7f, 0xd1, 0x4b, 0x50, 0xf2, 0xbd, 0x18, 0x8f, 0xcb, 0x02, 0x00, 0x89, 0x8f, + 0x34, 0xcf, 0xc3, 0x7d, 0xdb, 0xa3, 0x4a, 0xaa, 0x28, 0xe2, 0x51, 0xfe, 0x93, 0x69, 0xa8, 0x0d, + 0xd9, 0xc8, 0x3d, 0x28, 0xf6, 0x79, 0xf3, 0xdc, 0x8b, 0xbe, 0x9a, 0x10, 0x24, 0x0d, 0x89, 0xaa, + 0xf8, 0x54, 0x24, 0x06, 0x21, 0x96, 0x18, 0x8a, 0x25, 0xfd, 0x67, 0x36, 0x05, 0xba, 0xaa, 0x6e, + 0x38, 0xb8, 0xe3, 0x59, 0xce, 0x19, 0x17, 0x77, 0xae, 0x67, 0x75, 0x77, 0x04, 0x0c, 0x6d, 0x00, + 0xe8, 0xa6, 0xab, 0x52, 0x0b, 0xef, 0xf2, 0x91, 0x4d, 0x58, 0x66, 0xfd, 0xc0, 0x51, 0x29, 0xe9, + 0xa6, 0xcb, 0xc5, 0xdf, 0x82, 0x0a, 0x89, 0xbf, 0xd4, 0x3e, 0x5b, 0x81, 0x99, 0x1b, 0x2b, 0xaf, + 0x5f, 0x4a, 0xea, 0x83, 0x1f, 0x19, 0x2a, 0x73, 0x76, 0xf0, 0xe0, 0xa2, 0x3d, 0x98, 0xa1, 0x81, + 0x90, 0x5b, 0x9f, 0xa1, 0xc4, 0xab, 0xa3, 0x14, 0xc0, 0x2d, 0xf4, 0x21, 0x25, 0x60, 0x06, 0xca, + 0xa9, 0xd1, 0x11, 0x94, 0x35, 0xd3, 0xb4, 0x3c, 0x8d, 0xad, 0x22, 0xb3, 0x94, 0xd9, 0x5b, 0x19, + 0x98, 0x6d, 0x06, 0x54, 0x8c, 0x63, 0x98, 0x0f, 0xfa, 0x00, 0xa6, 0xe9, 0x32, 0xc3, 0x57, 0x84, + 0xab, 0x19, 0x27, 0x91, 0xc2, 0xa8, 0xd0, 0x36, 0xcc, 0x3e, 0x35, 0x4c, 0xdd, 0x7a, 0xea, 0x72, + 0xef, 0x9c, 0x60, 0xec, 0xdf, 0x64, 0x08, 0x43, 0x2c, 0x04, 0x65, 0xe3, 0x3d, 0x28, 0x87, 0x7a, + 0x3c, 0x89, 0xa5, 0x37, 0xee, 0x40, 0x2d, 0xde, 0xbf, 0x89, 0x66, 0xca, 0x6f, 0xc0, 0xa2, 0x32, + 0x30, 0x03, 0xd1, 0xc4, 0x76, 0x68, 0x03, 0x66, 0xb8, 0xc5, 0x30, 0xb3, 0x95, 0xc7, 0x2b, 0x5a, + 0xe1, 0x14, 0xe1, 0xfd, 0xcd, 0xa9, 0x66, 0xea, 0x3d, 0xec, 0xf0, 0x76, 0xc5, 0xfe, 0xe6, 0x01, + 0x83, 0xca, 0x1f, 0xc0, 0xf9, 0x58, 0xe3, 0x7c, 0x7b, 0xf5, 0x2a, 0x54, 0x6d, 0x4b, 0x57, 0x5d, + 0x06, 0x16, 0x71, 0x6e, 0x89, 0x58, 0x96, 0xc0, 0x6d, 0xea, 0x84, 0xbc, 0xed, 0x59, 0xf6, 0xb0, + 0xf0, 0xd9, 0xc8, 0xeb, 0xb0, 0x14, 0x27, 0x67, 0xcd, 0xcb, 0x77, 0x61, 0x59, 0xc1, 0x7d, 0xeb, + 0x09, 0x7e, 0x5e, 0xd6, 0x0d, 0xa8, 0x0f, 0x33, 0xe0, 0xcc, 0x3f, 0x86, 0xe5, 0x00, 0xda, 0xf6, + 0x34, 0x6f, 0xe0, 0x4e, 0xc4, 0x9c, 0xef, 0x3d, 0x8f, 0x2d, 0x97, 0x0d, 0x67, 0x51, 0x11, 0x8f, + 0xf2, 0x32, 0x4c, 0xb7, 0x2c, 0xbd, 0xd9, 0x42, 0x55, 0xc8, 0x19, 0x36, 0x27, 0xce, 0x19, 0xb6, + 0x6c, 0x84, 0xdb, 0xdc, 0x67, 0x91, 0x2f, 0x6b, 0x3a, 0x8e, 0x8a, 0xee, 0x40, 0x55, 0xd3, 0x75, + 0x83, 0x98, 0x93, 0xd6, 0x53, 0x0d, 0x5b, 0x84, 0xf2, 0xcb, 0x89, 0x06, 0xd0, 0x6c, 0x29, 0x95, + 0x00, 0xbd, 0x69, 0xbb, 0xf2, 0x03, 0x28, 0x05, 0x5b, 0x88, 0xdb, 0xc1, 0x6e, 0x32, 0x97, 0x35, + 0x86, 0xf4, 0x37, 0x9c, 0x87, 0x43, 0x0b, 0x2f, 0x17, 0xf9, 0x36, 0x80, 0xef, 0x90, 0x45, 0x70, + 0x7a, 0x71, 0x04, 0x63, 0x25, 0x84, 0x2e, 0xff, 0x28, 0xe2, 0xa6, 0x43, 0x4a, 0xd0, 0x7d, 0x25, + 0xe8, 0x11, 0xb7, 0x9d, 0x7b, 0x2e, 0xb7, 0xfd, 0x0e, 0x4c, 0xbb, 0x9e, 0xe6, 0x61, 0xbe, 0x4b, + 0xb8, 0x32, 0x8a, 0x9c, 0x08, 0x81, 0x15, 0x86, 0x8f, 0x2e, 0x01, 0x74, 0x1c, 0xac, 0x79, 0x58, + 0x57, 0x35, 0xb6, 0xc6, 0xe4, 0x95, 0x12, 0x87, 0x6c, 0x7a, 0xc4, 0xdf, 0x88, 0x9d, 0x4e, 0xea, + 0xe2, 0x9a, 0x32, 0xd4, 0xc1, 0x9e, 0xc7, 0xf7, 0x79, 0x33, 0x19, 0x7d, 0x1e, 0x67, 0xc0, 0x7d, + 0x5e, 0xe0, 0xd1, 0x67, 0xc7, 0x7b, 0x74, 0x46, 0x9a, 0xc5, 0xa3, 0x17, 0xc7, 0x7b, 0x74, 0xce, + 0x6c, 0xb4, 0x47, 0x4f, 0x70, 0x3f, 0xa5, 0x24, 0xf7, 0xf3, 0x45, 0xba, 0xdd, 0x7f, 0x96, 0xa0, + 0x3e, 0xec, 0x05, 0xb8, 0xf7, 0xdb, 0x80, 0x19, 0x97, 0x42, 0xb2, 0xf8, 0x5e, 0x4e, 0xcb, 0x29, + 0xd0, 0x03, 0x28, 0x18, 0xe6, 0x89, 0xc5, 0x27, 0xed, 0xdb, 0x19, 0x28, 0x79, 0xab, 0xab, 0x4d, + 0xf3, 0xc4, 0x62, 0xda, 0xa4, 0x1c, 0x1a, 0xef, 0x40, 0xc9, 0x07, 0x4d, 0xd4, 0xb7, 0x03, 0x58, + 0x8c, 0xd9, 0x36, 0xdb, 0x90, 0xfa, 0x53, 0x42, 0x9a, 0x6c, 0x4a, 0xc8, 0x3f, 0xcc, 0x85, 0xa7, + 0xec, 0x9e, 0xd1, 0xf3, 0xb0, 0x33, 0x34, 0x65, 0xdf, 0x17, 0xdc, 0xd9, 0x7c, 0x7d, 0x7d, 0x2c, + 0x77, 0xb6, 0xc7, 0xe3, 0xb3, 0xee, 0x3b, 0x50, 0xa5, 0x46, 0xa9, 0xba, 0xb8, 0x47, 0xe3, 0x26, + 0x1e, 0x53, 0x7f, 0x6d, 0x14, 0x1b, 0x26, 0x09, 0x33, 0xed, 0x36, 0xa7, 0x63, 0x1a, 0xac, 0xf4, + 0xc2, 0xb0, 0xc6, 0x3d, 0x40, 0xc3, 0x48, 0x13, 0xe9, 0xb4, 0x4d, 0x7c, 0xa1, 0xeb, 0x25, 0xae, + 0xd3, 0x27, 0x54, 0x8c, 0x2c, 0xb6, 0xc2, 0x04, 0x56, 0x38, 0x85, 0xfc, 0x5f, 0x79, 0x80, 0xe0, + 0xe5, 0xff, 0x21, 0x27, 0x78, 0xcf, 0x77, 0x40, 0x2c, 0x1e, 0xbd, 0x36, 0x8a, 0x71, 0xa2, 0xeb, + 0x39, 0x88, 0xba, 0x1e, 0x16, 0x99, 0xde, 0x18, 0xc9, 0x66, 0x62, 0xa7, 0x33, 0xfb, 0x65, 0x73, + 0x3a, 0x0f, 0x61, 0x29, 0x6e, 0x44, 0xdc, 0xe3, 0xac, 0xc3, 0xb4, 0xe1, 0xe1, 0x3e, 0x3b, 0x29, + 0x4e, 0x3c, 0x16, 0x09, 0x11, 0x31, 0x54, 0xf9, 0x0e, 0x2c, 0x45, 0x47, 0x6f, 0xb2, 0x30, 0x46, + 0x56, 0xe2, 0x71, 0x50, 0xe0, 0x00, 0xb9, 0xdd, 0x8c, 0x38, 0x78, 0x8a, 0x53, 0x32, 0x7c, 0xf9, + 0xef, 0x25, 0x38, 0x1f, 0x7b, 0x95, 0xe2, 0x2e, 0xb4, 0xa1, 0x09, 0xcf, 0x3c, 0xe6, 0xc6, 0xd8, + 0xb6, 0x3e, 0xc7, 0x59, 0xff, 0xff, 0xa1, 0x11, 0x1d, 0xb0, 0x88, 0x9a, 0xef, 0xc6, 0xa6, 0xfe, + 0xd5, 0x8c, 0xa2, 0xfb, 0xf3, 0xff, 0x43, 0xb8, 0x98, 0xc8, 0x7e, 0x78, 0x14, 0xf2, 0x13, 0x8d, + 0xc2, 0x4f, 0xf2, 0xe1, 0x15, 0x60, 0xd3, 0xf3, 0x1c, 0xe3, 0x78, 0xe0, 0xe1, 0xcf, 0x22, 0xcc, + 0xfa, 0xba, 0xef, 0x09, 0x98, 0xbf, 0x5e, 0x1f, 0x45, 0x1f, 0x48, 0x92, 0xe8, 0x13, 0x3e, 0x8e, + 0xfa, 0x84, 0x02, 0x65, 0xf8, 0x4e, 0x46, 0x86, 0x23, 0xbd, 0xc3, 0x17, 0x39, 0xe9, 0x7f, 0x25, + 0xc1, 0x7c, 0x6c, 0x9c, 0xd0, 0x1e, 0x80, 0xe6, 0x8b, 0xce, 0xad, 0xe7, 0xf5, 0x6c, 0x1d, 0x55, + 0x42, 0x94, 0x64, 0xcd, 0x65, 0x71, 0x64, 0xea, 0x9a, 0x9b, 0x10, 0x47, 0xfa, 0x61, 0xe4, 0x56, + 0xb0, 0x75, 0x66, 0x87, 0xb9, 0xd7, 0x32, 0x6c, 0x9d, 0x19, 0x07, 0x41, 0x28, 0xff, 0x3c, 0x07, + 0x8b, 0x49, 0x6d, 0xa0, 0x37, 0x21, 0xdf, 0xb1, 0x07, 0xbc, 0x6f, 0x09, 0x89, 0xa9, 0x6d, 0x7b, + 0x70, 0xe4, 0x6a, 0x5d, 0xac, 0x10, 0x34, 0xf4, 0x35, 0x98, 0xe9, 0xe3, 0xbe, 0xe5, 0x9c, 0xf1, + 0x9e, 0x24, 0x1c, 0x70, 0x3c, 0xa2, 0xef, 0x19, 0x0d, 0x47, 0x46, 0xef, 0x06, 0xc1, 0x38, 0xeb, + 0xc1, 0x4a, 0xc2, 0x2e, 0x84, 0x21, 0x30, 0x42, 0x3f, 0x02, 0x7f, 0x17, 0x66, 0x6d, 0xc7, 0xea, + 0x60, 0xd7, 0xe5, 0x27, 0x32, 0x2b, 0x89, 0xb9, 0x33, 0x82, 0xc0, 0x29, 0x39, 0x3a, 0xba, 0x07, + 0xe0, 0xa7, 0x73, 0xc4, 0xfa, 0x77, 0x39, 0xa1, 0x7f, 0x02, 0x87, 0x29, 0x2c, 0x44, 0x43, 0xf6, + 0xbd, 0xc9, 0x6a, 0x95, 0xff, 0x4e, 0x82, 0xb9, 0xb0, 0xbc, 0xe8, 0x25, 0x28, 0x11, 0xb6, 0xae, + 0xa7, 0xf5, 0x6d, 0x9e, 0x47, 0x08, 0x00, 0xe8, 0x10, 0x16, 0x74, 0x76, 0x8c, 0xaa, 0x1a, 0xa6, + 0x87, 0x9d, 0x13, 0xad, 0x23, 0xc2, 0xaf, 0xab, 0xa9, 0x8a, 0x68, 0x0a, 0x4c, 0xd6, 0xaf, 0x1a, + 0xe7, 0xe0, 0x83, 0xd1, 0x7d, 0x00, 0x9f, 0x9b, 0x98, 0xd6, 0x99, 0xd9, 0x85, 0x48, 0xe5, 0x9f, + 0xe6, 0xe0, 0x7c, 0x22, 0x56, 0xe2, 0x41, 0xe0, 0xbb, 0x50, 0x74, 0x9e, 0xa9, 0xc7, 0x67, 0x1e, + 0x76, 0xd3, 0x8d, 0xe0, 0x28, 0x94, 0x1d, 0x98, 0x75, 0x9e, 0x6d, 0x11, 0x6c, 0xb4, 0x01, 0x25, + 0xe7, 0x99, 0x8a, 0x1d, 0xc7, 0x72, 0x84, 0x25, 0x8f, 0x21, 0x2d, 0x3a, 0xcf, 0x76, 0x29, 0x3a, + 0x69, 0xd5, 0x13, 0xad, 0x16, 0x32, 0xb5, 0xea, 0x05, 0xad, 0x7a, 0x7e, 0xab, 0xd3, 0x99, 0x5a, + 0xf5, 0x78, 0xab, 0xb2, 0x0d, 0x73, 0x61, 0xe3, 0x1a, 0x33, 0xcc, 0x5b, 0x50, 0xe1, 0xc6, 0xa7, + 0x76, 0xac, 0x81, 0xe9, 0x65, 0x53, 0xcf, 0x1c, 0xa7, 0xd9, 0x26, 0x24, 0xf2, 0xcf, 0x25, 0x28, + 0x35, 0xfb, 0x5a, 0x17, 0xb7, 0x6d, 0xdc, 0x21, 0xde, 0xca, 0x20, 0x0f, 0x7c, 0x00, 0xd8, 0x03, + 0xda, 0x8f, 0xfa, 0x5f, 0xb6, 0x1e, 0xbf, 0x99, 0x90, 0xa1, 0x11, 0x7c, 0xc6, 0x38, 0xdd, 0x17, + 0xf5, 0x9c, 0xeb, 0x50, 0xfc, 0x06, 0x3e, 0x63, 0x7b, 0x97, 0x8c, 0x74, 0xf2, 0xcf, 0x0a, 0xb0, + 0x9c, 0x72, 0xb6, 0x4d, 0x83, 0x5a, 0x7b, 0xa0, 0xda, 0xd8, 0x31, 0x2c, 0x5d, 0xa8, 0xb9, 0x63, + 0x0f, 0x5a, 0x14, 0x80, 0x2e, 0x02, 0x79, 0x50, 0xbf, 0x3f, 0xb0, 0xf8, 0x6a, 0x98, 0x57, 0x8a, + 0x1d, 0x7b, 0xf0, 0xff, 0xc8, 0xb3, 0xa0, 0x75, 0x4f, 0x35, 0x07, 0x33, 0x23, 0x63, 0xb4, 0x6d, + 0x0a, 0x40, 0x37, 0xe1, 0x3c, 0x73, 0x49, 0x6a, 0xcf, 0xe8, 0x1b, 0x64, 0x3a, 0x86, 0x6c, 0x2a, + 0xaf, 0x20, 0xf6, 0xf2, 0x21, 0x79, 0xd7, 0x34, 0x99, 0xfd, 0xc8, 0x50, 0xb1, 0xac, 0xbe, 0xea, + 0x76, 0x2c, 0x07, 0xab, 0x9a, 0xfe, 0x3d, 0x6a, 0x43, 0x79, 0xa5, 0x6c, 0x59, 0xfd, 0x36, 0x81, + 0x6d, 0xea, 0xdf, 0x43, 0x2f, 0x43, 0xb9, 0x63, 0x0f, 0x5c, 0xec, 0xa9, 0xe4, 0x87, 0x9e, 0x16, + 0x94, 0x14, 0x60, 0xa0, 0x6d, 0x7b, 0xe0, 0x86, 0x10, 0xfa, 0x24, 0x7a, 0x9c, 0x0d, 0x23, 0x3c, + 0xc2, 0x7d, 0x9a, 0xfe, 0x3b, 0x1d, 0x74, 0xb1, 0xad, 0x75, 0x31, 0x13, 0x4d, 0x6c, 0xf3, 0x13, + 0xd2, 0x7f, 0x0f, 0x38, 0x22, 0x15, 0x53, 0xa9, 0x9e, 0x86, 0x1f, 0x5d, 0xd4, 0x82, 0xd9, 0x81, + 0x69, 0x9c, 0x18, 0x58, 0xaf, 0x97, 0x28, 0x87, 0x5b, 0x99, 0xb3, 0x0a, 0xab, 0x47, 0x8c, 0x90, + 0x27, 0x3c, 0x38, 0x1b, 0xb4, 0x01, 0x0d, 0xae, 0x34, 0xf7, 0xa9, 0x66, 0xc7, 0x35, 0x07, 0x54, + 0x1d, 0x4b, 0x0c, 0xa3, 0xfd, 0x54, 0xb3, 0xc3, 0xda, 0x6b, 0x6c, 0xc0, 0x5c, 0x98, 0xe9, 0x44, + 0x76, 0xb5, 0x05, 0x95, 0x48, 0x57, 0xc9, 0xc8, 0x53, 0x05, 0xb9, 0xc6, 0x0f, 0xc4, 0x94, 0x28, + 0x12, 0x40, 0xdb, 0xf8, 0x01, 0x4d, 0xe3, 0x52, 0xc9, 0x28, 0x9f, 0x82, 0xc2, 0x1e, 0x64, 0x0d, + 0x2a, 0x91, 0x6c, 0x29, 0x71, 0x69, 0x34, 0x2d, 0xca, 0x5d, 0x1a, 0xf9, 0x4f, 0x60, 0x8e, 0xd5, + 0x13, 0x12, 0xd0, 0xff, 0x04, 0x46, 0xf3, 0x6f, 0x2c, 0x53, 0x40, 0xff, 0xd3, 0x26, 0xf0, 0x13, + 0x5e, 0xc0, 0x50, 0x52, 0xd8, 0x83, 0xfc, 0x7b, 0x12, 0xc0, 0xb6, 0x66, 0x6b, 0xc7, 0x46, 0xcf, + 0xf0, 0xce, 0xd0, 0x1b, 0x50, 0xd3, 0x74, 0x5d, 0xed, 0x08, 0x88, 0x81, 0x45, 0x5d, 0xc9, 0xbc, + 0xa6, 0xeb, 0xdb, 0x21, 0x30, 0xfa, 0x0a, 0x2c, 0xe8, 0x8e, 0x65, 0x47, 0x71, 0x59, 0xa1, 0x49, + 0x8d, 0xbc, 0x88, 0x20, 0xbf, 0x0b, 0x75, 0xc2, 0x57, 0xeb, 0x1f, 0x1b, 0xd8, 0xf4, 0xa2, 0x34, + 0xac, 0x02, 0x65, 0x49, 0xd3, 0xf5, 0x4d, 0xf6, 0x3a, 0x4c, 0x29, 0xff, 0xc7, 0x0c, 0x5c, 0x8a, + 0x8e, 0x78, 0x3c, 0x99, 0x7d, 0x0f, 0xe6, 0x62, 0xf2, 0xa6, 0x24, 0x7d, 0x83, 0x7e, 0x2a, 0x11, + 0x8a, 0x58, 0x72, 0x36, 0x37, 0x94, 0x9c, 0x4d, 0x4c, 0x97, 0xe7, 0x3f, 0xd5, 0x74, 0x79, 0xe1, + 0x53, 0x49, 0x97, 0x4f, 0xbf, 0x58, 0xba, 0x7c, 0x6e, 0xc2, 0x74, 0xf9, 0xeb, 0x74, 0x3b, 0x2c, + 0x5a, 0xa7, 0x8b, 0x2d, 0xf3, 0x1e, 0x15, 0xbf, 0x0d, 0x53, 0x94, 0x42, 0xc5, 0xd2, 0xea, 0xb3, + 0x93, 0xa4, 0xd5, 0x8b, 0xa9, 0x69, 0xf5, 0xcb, 0x30, 0x67, 0x5a, 0xaa, 0x89, 0x9f, 0xaa, 0x64, + 0xb8, 0xdc, 0x7a, 0x99, 0x8d, 0x9d, 0x69, 0xed, 0xe3, 0xa7, 0x2d, 0x02, 0x41, 0x57, 0x60, 0xae, + 0xaf, 0xb9, 0x8f, 0xb1, 0x4e, 0x73, 0xda, 0x6e, 0xbd, 0x42, 0xad, 0xad, 0xcc, 0x60, 0x2d, 0x02, + 0x42, 0xaf, 0x81, 0x2f, 0x07, 0x47, 0xaa, 0x52, 0xa4, 0x8a, 0x80, 0x32, 0xb4, 0x50, 0x8a, 0x7e, + 0xfe, 0x85, 0x52, 0xf4, 0xb5, 0xc9, 0x53, 0xf4, 0x37, 0xa0, 0x26, 0xfe, 0x8b, 0x1c, 0x3d, 0x3b, + 0xee, 0xa4, 0xe9, 0xf9, 0x79, 0xf1, 0x4e, 0xe4, 0xe1, 0xd3, 0x32, 0xfa, 0x30, 0x32, 0xa3, 0xff, + 0x67, 0x12, 0x0f, 0xb3, 0xfd, 0xa9, 0xc6, 0x13, 0x84, 0x91, 0x6c, 0xaf, 0xf4, 0xfc, 0xd9, 0x5e, + 0xf4, 0xad, 0xd4, 0x3c, 0xf9, 0xda, 0x38, 0x7e, 0xe3, 0x32, 0xe5, 0xf2, 0x6f, 0x49, 0x70, 0x89, + 0x47, 0xbc, 0x29, 0x55, 0x2f, 0x09, 0xe6, 0x2a, 0xa5, 0x98, 0x6b, 0xc7, 0xc1, 0x3a, 0x36, 0x3d, + 0x43, 0xeb, 0xa9, 0xae, 0x8d, 0x3b, 0x22, 0xb3, 0x15, 0x80, 0x69, 0x84, 0x73, 0x05, 0xe6, 0x58, + 0x59, 0x19, 0x0f, 0xf2, 0x59, 0xf5, 0x58, 0x99, 0x56, 0x96, 0x31, 0x90, 0x3c, 0x80, 0xe5, 0x94, + 0xc4, 0x60, 0xa2, 0x32, 0xa4, 0x34, 0x65, 0x8c, 0xec, 0xd9, 0xb0, 0x32, 0x7e, 0x5b, 0x82, 0x97, + 0x39, 0x49, 0xaa, 0xdf, 0xfc, 0x22, 0xd4, 0xf1, 0x17, 0x92, 0xbf, 0x2d, 0x89, 0x1b, 0x59, 0x73, + 0xd8, 0xc8, 0xbe, 0x92, 0xaa, 0x87, 0xd1, 0x66, 0xf6, 0x9d, 0x54, 0x33, 0xbb, 0x39, 0x9e, 0xe3, + 0x58, 0xdd, 0xfe, 0x8b, 0x04, 0x17, 0x52, 0xc5, 0x88, 0xc5, 0x70, 0x52, 0x3c, 0x86, 0xe3, 0xf1, + 0x5f, 0x10, 0x62, 0xb3, 0xf8, 0x8f, 0xc6, 0xcf, 0x3c, 0xd0, 0x52, 0xfb, 0xda, 0x33, 0xa3, 0x3f, + 0xe8, 0xf3, 0x00, 0x90, 0xb0, 0x7b, 0xc4, 0x20, 0xcf, 0x13, 0x01, 0xae, 0xc1, 0x22, 0x73, 0xb9, + 0x34, 0xf0, 0x08, 0x28, 0x58, 0x20, 0xb8, 0xc0, 0xde, 0x91, 0x18, 0x84, 0x13, 0xc8, 0x9b, 0xb0, + 0xe0, 0x77, 0x6b, 0x64, 0x51, 0x45, 0xa8, 0x48, 0x22, 0x17, 0x2d, 0x92, 0x30, 0x61, 0x66, 0x07, + 0x3f, 0x31, 0x3a, 0xf8, 0x53, 0xa9, 0xcf, 0xbc, 0x0c, 0x65, 0x1b, 0x3b, 0x7d, 0xc3, 0x75, 0xfd, + 0x75, 0xb7, 0xa4, 0x84, 0x41, 0xf2, 0xbf, 0xcf, 0xc0, 0x7c, 0xdc, 0x9c, 0xee, 0x0e, 0xd5, 0x64, + 0xbc, 0x32, 0x62, 0xff, 0x9c, 0x70, 0xe8, 0x74, 0x53, 0x6c, 0x5f, 0x72, 0x69, 0xa9, 0x47, 0x7f, + 0x8b, 0x22, 0xf6, 0x36, 0x75, 0x98, 0xed, 0x58, 0xfd, 0xbe, 0x66, 0xea, 0xa2, 0xac, 0x96, 0x3f, + 0x12, 0xfd, 0x69, 0x4e, 0x97, 0x1d, 0x37, 0x95, 0x14, 0xfa, 0x9f, 0x8c, 0x36, 0xd9, 0xb5, 0x1a, + 0x26, 0xad, 0xed, 0xa0, 0x03, 0x52, 0x52, 0x80, 0x83, 0x76, 0x0c, 0x07, 0xad, 0x42, 0x01, 0x9b, + 0x4f, 0xc4, 0xb9, 0x75, 0xc2, 0xf1, 0x86, 0xd8, 0xb8, 0x28, 0x14, 0x0f, 0xad, 0xc1, 0x4c, 0x9f, + 0xd8, 0x91, 0xc8, 0xd8, 0x2d, 0xa7, 0x94, 0x9f, 0x2a, 0x1c, 0x0d, 0xad, 0xc3, 0xac, 0x4e, 0xc7, + 0x49, 0xc4, 0xeb, 0xf5, 0x84, 0x8a, 0x11, 0x8a, 0xa0, 0x08, 0x44, 0xb4, 0xeb, 0x9f, 0xc5, 0x95, + 0xd2, 0x8e, 0xd3, 0x63, 0x43, 0x91, 0x78, 0x0c, 0x77, 0x18, 0xdd, 0x06, 0x42, 0xda, 0xb9, 0x5e, + 0x9c, 0xd7, 0xe8, 0xf3, 0xf9, 0x0b, 0x50, 0xec, 0x59, 0x5d, 0x66, 0x46, 0x65, 0x56, 0xb1, 0xdd, + 0xb3, 0xba, 0xd4, 0x8a, 0x16, 0x61, 0xda, 0xf5, 0x74, 0xc3, 0xa4, 0x41, 0x4e, 0x51, 0x61, 0x0f, + 0x64, 0xb6, 0xd2, 0x3f, 0xaa, 0x65, 0x76, 0x70, 0xbd, 0x42, 0x5f, 0x95, 0x28, 0xe4, 0xc0, 0xec, + 0xd0, 0x0d, 0xa1, 0xe7, 0x9d, 0xd5, 0xab, 0x14, 0x4e, 0xfe, 0x06, 0x87, 0x61, 0xf3, 0x23, 0x0f, + 0xc3, 0x62, 0x62, 0x27, 0x1c, 0x86, 0xd5, 0xc6, 0x1c, 0x86, 0xc5, 0x39, 0x7c, 0x19, 0xca, 0x48, + 0xfe, 0x4a, 0x82, 0xa5, 0x6d, 0x9a, 0x9f, 0x09, 0x39, 0xbe, 0x49, 0x8a, 0x1a, 0xde, 0xf3, 0xeb, + 0x4d, 0x52, 0x0b, 0x05, 0xe2, 0xfd, 0x16, 0xe5, 0x26, 0x4d, 0xa8, 0x0a, 0xe6, 0x9c, 0x45, 0x3e, + 0x73, 0xc9, 0x4a, 0xc5, 0x0d, 0x3f, 0xca, 0xef, 0xc3, 0xf2, 0x50, 0x2f, 0xf8, 0x69, 0x78, 0xbc, + 0xb4, 0x9a, 0x75, 0x22, 0x5c, 0x5a, 0x2d, 0x6f, 0xc0, 0xf9, 0xb6, 0xa7, 0x39, 0xde, 0x90, 0x0a, + 0x32, 0xd0, 0xd2, 0x62, 0x94, 0x28, 0x2d, 0xaf, 0x17, 0x69, 0xc3, 0x62, 0xdb, 0xb3, 0xec, 0xe7, + 0x60, 0x4a, 0xbc, 0x0e, 0xe9, 0xbf, 0x35, 0x10, 0x0b, 0x8a, 0x78, 0x94, 0x97, 0x59, 0xe9, 0xcc, + 0x70, 0x6b, 0xb7, 0x61, 0x89, 0x55, 0xae, 0x3c, 0x4f, 0x27, 0x2e, 0x88, 0xba, 0x99, 0x61, 0xbe, + 0x8f, 0xe0, 0x5c, 0xe4, 0x48, 0x92, 0xe7, 0x84, 0x6f, 0x45, 0x73, 0xc2, 0xe3, 0x0e, 0x32, 0xfd, + 0x94, 0xf0, 0x1f, 0xe4, 0x42, 0x7e, 0x3d, 0x25, 0xc5, 0x73, 0x3b, 0x9a, 0x11, 0x7e, 0x6d, 0x1c, + 0xef, 0x48, 0x42, 0x78, 0xd8, 0x6a, 0xf3, 0x09, 0x56, 0xfb, 0xed, 0xa1, 0x2c, 0x52, 0x21, 0x2d, + 0xef, 0x1e, 0x93, 0xf6, 0x73, 0xc9, 0x1f, 0x29, 0x2c, 0x6b, 0xec, 0x37, 0xed, 0xa7, 0x8e, 0xde, + 0x8b, 0xa5, 0x8e, 0xae, 0x8c, 0x95, 0xd7, 0x4f, 0x1a, 0xfd, 0x69, 0x01, 0x4a, 0xfe, 0xbb, 0x21, + 0x9d, 0x0f, 0xab, 0x2d, 0x97, 0xa0, 0xb6, 0xf0, 0x0a, 0x9c, 0x7f, 0xa1, 0x15, 0xb8, 0x90, 0x79, + 0x05, 0xbe, 0x08, 0x25, 0xfa, 0x87, 0x96, 0x0a, 0xb3, 0x15, 0xb5, 0x48, 0x01, 0x0a, 0x3e, 0x09, + 0xcc, 0x70, 0x66, 0x22, 0x33, 0x8c, 0xe5, 0xa9, 0x67, 0xe3, 0x79, 0xea, 0xbb, 0xfe, 0x8a, 0x58, + 0x4c, 0x3b, 0xc6, 0xf6, 0xf9, 0x26, 0xae, 0x85, 0xb1, 0x23, 0xd1, 0x52, 0xda, 0x91, 0x68, 0xc0, + 0xe5, 0x4b, 0x9b, 0x87, 0x3a, 0x62, 0xc9, 0xe7, 0xb0, 0x2d, 0x72, 0xcf, 0x7a, 0x3b, 0x92, 0xd1, + 0x90, 0xd2, 0xee, 0x81, 0x04, 0x3e, 0x25, 0x9c, 0xcc, 0x38, 0x82, 0xa5, 0xc8, 0xd0, 0x04, 0xc5, + 0x74, 0xd9, 0xfc, 0x63, 0x4a, 0x25, 0xdd, 0x9f, 0x87, 0xe3, 0xc6, 0x94, 0x22, 0xb1, 0xbb, 0x43, + 0xd9, 0xcb, 0x09, 0xad, 0xf8, 0x56, 0xb4, 0x3c, 0xe2, 0x39, 0xad, 0x6e, 0xa8, 0x3a, 0x82, 0x46, + 0x2e, 0x9a, 0xc3, 0x5f, 0xb3, 0x68, 0xbe, 0xc4, 0x21, 0x9b, 0x74, 0x2b, 0x71, 0x62, 0x98, 0x86, + 0x7b, 0xca, 0xde, 0xcf, 0xb0, 0xad, 0x84, 0x00, 0x6d, 0xd2, 0xe3, 0x48, 0xfc, 0xcc, 0xf0, 0xd4, + 0x8e, 0xa5, 0x63, 0x6a, 0xd3, 0xd3, 0x4a, 0x91, 0x00, 0xb6, 0x2d, 0x1d, 0x07, 0x33, 0xaf, 0xf8, + 0x7c, 0x33, 0xaf, 0x14, 0x9b, 0x79, 0x4b, 0x30, 0xe3, 0x60, 0xcd, 0xb5, 0x4c, 0x76, 0x02, 0xa1, + 0xf0, 0x27, 0x32, 0x34, 0x7d, 0xec, 0xba, 0xa4, 0x25, 0x1e, 0xae, 0xf1, 0xc7, 0x50, 0x98, 0x39, + 0x37, 0x36, 0xcc, 0x1c, 0x51, 0x7c, 0x16, 0x0b, 0x33, 0x2b, 0x63, 0xc3, 0xcc, 0x4c, 0xb5, 0x67, + 0x41, 0xa0, 0x5d, 0xcd, 0x16, 0x68, 0x87, 0xe3, 0xd2, 0xf9, 0x68, 0x5c, 0xba, 0x15, 0xde, 0xf6, + 0xd6, 0xd2, 0xd2, 0xe3, 0xa3, 0x8b, 0xe8, 0xbf, 0xc0, 0x09, 0xff, 0x4b, 0x09, 0x96, 0x87, 0xa6, + 0x26, 0x9f, 0xf2, 0xef, 0xc5, 0x2a, 0xdc, 0xae, 0x8c, 0xd5, 0xbb, 0x5f, 0xe0, 0x76, 0x3f, 0x52, + 0xe0, 0xf6, 0xd6, 0x78, 0xc2, 0x4f, 0xbd, 0xbe, 0xed, 0x77, 0x25, 0x40, 0x09, 0xdb, 0xfb, 0xbb, + 0x22, 0xfe, 0x9f, 0xf8, 0x18, 0x8c, 0x6f, 0x01, 0x76, 0x83, 0x2d, 0x40, 0x6e, 0xf2, 0x43, 0x0e, + 0x3f, 0x25, 0xfe, 0x3f, 0x39, 0x78, 0xf9, 0xc8, 0xd6, 0x63, 0x41, 0x2c, 0xc7, 0xca, 0xee, 0x1b, + 0xef, 0x46, 0x73, 0xfb, 0x2f, 0xd4, 0x9d, 0xfc, 0xf3, 0x77, 0x07, 0xe9, 0x49, 0x55, 0x19, 0x5b, + 0x09, 0xb9, 0xc7, 0xd1, 0x5d, 0xfe, 0x8c, 0x73, 0x85, 0x32, 0x5c, 0x4e, 0x17, 0x80, 0x87, 0xc0, + 0xdf, 0x85, 0xf9, 0xdd, 0x67, 0xb8, 0xd3, 0x3e, 0x33, 0x3b, 0x13, 0x8c, 0x43, 0x0d, 0xf2, 0x9d, + 0xbe, 0xce, 0xd3, 0x27, 0xe4, 0x6f, 0x38, 0xaa, 0xcf, 0x47, 0xa3, 0x7a, 0x15, 0x6a, 0x41, 0x0b, + 0x7c, 0xaa, 0x2d, 0x91, 0xa9, 0xa6, 0x13, 0x64, 0xc2, 0x7c, 0x4e, 0xe1, 0x4f, 0x1c, 0x8e, 0x1d, + 0x56, 0x9b, 0xcf, 0xe0, 0xd8, 0x71, 0xa2, 0xde, 0x3f, 0x1f, 0xf5, 0xfe, 0xf2, 0xef, 0x48, 0x50, + 0x26, 0x2d, 0xbc, 0x90, 0xfc, 0x7c, 0xeb, 0x9c, 0x0f, 0xb6, 0xce, 0xfe, 0x0e, 0xbc, 0x10, 0xde, + 0x81, 0x07, 0x92, 0x4f, 0x53, 0xf0, 0xb0, 0xe4, 0x33, 0x3e, 0x1c, 0x3b, 0x8e, 0x7c, 0x19, 0xe6, + 0x98, 0x6c, 0xbc, 0xe7, 0x35, 0xc8, 0x0f, 0x9c, 0x9e, 0x18, 0xbf, 0x81, 0xd3, 0x93, 0x7f, 0x22, + 0x41, 0x65, 0xd3, 0xf3, 0xb4, 0xce, 0xe9, 0x04, 0x1d, 0xf0, 0x85, 0xcb, 0x85, 0x85, 0x1b, 0xee, + 0x44, 0x20, 0x6e, 0x21, 0x45, 0xdc, 0xe9, 0x88, 0xb8, 0x32, 0x54, 0x85, 0x2c, 0xa9, 0x02, 0xef, + 0x03, 0x6a, 0x59, 0x8e, 0xb7, 0x67, 0x39, 0x4f, 0x35, 0x47, 0x9f, 0x6c, 0x47, 0x8d, 0xa0, 0xc0, + 0x6f, 0x57, 0xe7, 0xaf, 0x4d, 0x2b, 0xf4, 0xbf, 0x7c, 0x15, 0xce, 0x45, 0xf8, 0xa5, 0x36, 0x7c, + 0x0f, 0xca, 0x74, 0x1d, 0xe7, 0x5b, 0xab, 0x9b, 0xe1, 0x84, 0x7d, 0xa6, 0x55, 0x5f, 0xfe, 0x3a, + 0x2c, 0x90, 0x78, 0x8f, 0xc2, 0x7d, 0xbf, 0xf3, 0xb5, 0xd8, 0xbe, 0xe3, 0x52, 0x0a, 0xa3, 0xd8, + 0x9e, 0xe3, 0x87, 0x39, 0x98, 0xa6, 0xf0, 0xa1, 0x18, 0xec, 0x22, 0x59, 0x23, 0x6d, 0x4b, 0xf5, + 0xb4, 0xae, 0x7f, 0x97, 0x9d, 0x00, 0x0e, 0xb5, 0x2e, 0x4d, 0xf0, 0xd0, 0x97, 0xba, 0xd1, 0xc5, + 0xae, 0x27, 0xd2, 0x89, 0x65, 0x02, 0xdb, 0x61, 0x20, 0xa2, 0x24, 0x9a, 0x75, 0x2d, 0xd0, 0xe4, + 0x2a, 0xfd, 0x8f, 0x56, 0xd9, 0x95, 0xb0, 0x2c, 0x19, 0x33, 0x7a, 0x61, 0xac, 0x01, 0xc5, 0x58, + 0x92, 0xcb, 0x7f, 0x46, 0x6b, 0x50, 0xa0, 0xc7, 0xe2, 0xb3, 0xe3, 0xf5, 0x46, 0x11, 0x89, 0xb5, + 0xd8, 0x86, 0x69, 0x62, 0x9d, 0x06, 0x58, 0x45, 0x85, 0x3f, 0xc9, 0xbb, 0x80, 0xc2, 0xea, 0xe4, + 0x03, 0xb7, 0x06, 0x33, 0x54, 0xdb, 0x22, 0x6c, 0x5e, 0x4e, 0x69, 0x40, 0xe1, 0x68, 0xb2, 0x06, + 0x88, 0xb5, 0x18, 0x09, 0x95, 0x27, 0x1f, 0xde, 0x11, 0xa1, 0xf3, 0x5f, 0x4a, 0x70, 0x2e, 0xd2, + 0x06, 0x97, 0xf5, 0x46, 0xb4, 0x91, 0x54, 0x51, 0x79, 0x03, 0xdb, 0x91, 0x75, 0x7e, 0x2d, 0x4d, + 0xa4, 0xcf, 0x68, 0x8d, 0xff, 0x07, 0x09, 0x60, 0x73, 0xe0, 0x9d, 0xf2, 0x23, 0xe3, 0xf0, 0x10, + 0x4b, 0xb1, 0x21, 0x6e, 0x40, 0xd1, 0xd6, 0x5c, 0xf7, 0xa9, 0xe5, 0x88, 0xcd, 0xae, 0xff, 0x4c, + 0x0f, 0x77, 0x07, 0xfc, 0xaa, 0x7d, 0x49, 0xa1, 0xff, 0xd1, 0x6b, 0x50, 0x65, 0x1f, 0x62, 0x50, + 0x35, 0x5d, 0x77, 0x44, 0x05, 0x58, 0x49, 0xa9, 0x30, 0xe8, 0x26, 0x03, 0x12, 0x34, 0x83, 0xa6, + 0x50, 0xbc, 0x33, 0xd5, 0xb3, 0x1e, 0x63, 0x93, 0x6f, 0x5a, 0x2b, 0x02, 0x7a, 0x48, 0x80, 0x2c, + 0x43, 0xd9, 0x35, 0x5c, 0xcf, 0x11, 0x68, 0x22, 0xcf, 0xca, 0xa1, 0x14, 0x8d, 0x0c, 0x4a, 0xad, + 0x35, 0xe8, 0xf5, 0x98, 0x8a, 0x9f, 0x7f, 0xd8, 0xbf, 0xca, 0x3b, 0x94, 0x4b, 0x9b, 0x1c, 0x81, + 0xd2, 0x78, 0x77, 0x3f, 0xc5, 0xd3, 0xb9, 0xaf, 0xc2, 0x42, 0xa8, 0x0f, 0xdc, 0xac, 0x22, 0xbb, + 0x0b, 0x29, 0xba, 0xbb, 0x90, 0xef, 0x03, 0x62, 0x07, 0x52, 0x2f, 0xd8, 0x6f, 0xf9, 0x3c, 0x9c, + 0x8b, 0x30, 0xe2, 0x4b, 0xfa, 0x75, 0xa8, 0xf0, 0x0a, 0x33, 0x6e, 0x28, 0x17, 0xa0, 0x48, 0x5c, + 0x73, 0xc7, 0xd0, 0x45, 0x29, 0xc6, 0xac, 0x6d, 0xe9, 0xdb, 0x86, 0xee, 0xc8, 0xdf, 0x84, 0x0a, + 0xbf, 0x7b, 0xcc, 0x71, 0xf7, 0xa0, 0xca, 0xcb, 0x01, 0xd5, 0xc8, 0x55, 0xbb, 0x97, 0x53, 0x8b, + 0xdd, 0x84, 0x5a, 0xcc, 0xf0, 0xa3, 0xac, 0x43, 0x83, 0xc5, 0x1e, 0x11, 0xf6, 0xa2, 0xb3, 0x7b, + 0x20, 0x2a, 0xd0, 0xc7, 0xb6, 0x12, 0xa5, 0xaf, 0x38, 0xe1, 0x47, 0xf9, 0x12, 0x5c, 0x4c, 0x6c, + 0x85, 0x6b, 0xc2, 0x86, 0x5a, 0xf0, 0x82, 0xdd, 0x07, 0xf3, 0x6b, 0x4d, 0xa4, 0x50, 0xad, 0xc9, + 0x92, 0x1f, 0xf9, 0xe7, 0xc4, 0x6a, 0x48, 0xc3, 0xfa, 0x60, 0x1f, 0x98, 0x4f, 0xdb, 0x07, 0x16, + 0x22, 0xfb, 0x40, 0xb9, 0xed, 0xeb, 0x93, 0xef, 0xcf, 0xb7, 0xe8, 0x39, 0x02, 0x6b, 0x5b, 0x38, + 0x44, 0x79, 0x54, 0x2f, 0x19, 0xaa, 0x12, 0xa2, 0x92, 0xdf, 0x80, 0x4a, 0xd4, 0x35, 0x86, 0xfc, + 0x9c, 0x34, 0xe4, 0xe7, 0xaa, 0x31, 0x17, 0xf7, 0x4e, 0x6c, 0x5b, 0x93, 0xae, 0xe3, 0xd8, 0xa6, + 0xe6, 0x4e, 0xc4, 0xd9, 0x5d, 0x4f, 0xc8, 0xff, 0x7f, 0x46, 0x7e, 0x6e, 0x91, 0xaf, 0x07, 0x7b, + 0x2e, 0xa1, 0xe7, 0x9d, 0x96, 0x5f, 0x81, 0xf2, 0x51, 0xda, 0x97, 0x24, 0x0a, 0xa2, 0xd4, 0xed, + 0x16, 0x2c, 0xee, 0x19, 0x3d, 0xec, 0x9e, 0xb9, 0x1e, 0xee, 0x37, 0xa9, 0x53, 0x3a, 0x31, 0xb0, + 0x83, 0x56, 0x00, 0xe8, 0xde, 0xd6, 0xb6, 0x0c, 0xff, 0x4e, 0x7c, 0x08, 0x22, 0xff, 0xa7, 0x04, + 0xf3, 0x01, 0x61, 0x96, 0x02, 0xc4, 0xdb, 0x30, 0x7d, 0xe2, 0x8a, 0xb3, 0xc4, 0xc4, 0xcc, 0x4a, + 0x92, 0x20, 0x4a, 0xe1, 0xc4, 0x6d, 0xea, 0xe8, 0x7d, 0x80, 0x81, 0x8b, 0x75, 0x9e, 0xdb, 0xcc, + 0x54, 0x9e, 0x59, 0x22, 0x04, 0x2c, 0x47, 0x7a, 0x07, 0xca, 0x86, 0x69, 0xe9, 0x98, 0x66, 0xc2, + 0xf5, 0x6c, 0x25, 0x9a, 0xc0, 0x28, 0x8e, 0x5c, 0xac, 0xcb, 0x98, 0xaf, 0x85, 0x42, 0xbf, 0xdc, + 0x50, 0xf6, 0x61, 0x81, 0x39, 0xad, 0x13, 0x5f, 0xf0, 0x11, 0x65, 0xf6, 0x31, 0x6d, 0x29, 0x35, + 0x83, 0xc7, 0x48, 0x82, 0x54, 0xde, 0x80, 0xf3, 0xb1, 0x82, 0xdf, 0xec, 0x87, 0xf6, 0xad, 0xd8, + 0x09, 0x5a, 0x60, 0xce, 0xb7, 0xa2, 0xd7, 0x30, 0xc6, 0x57, 0x19, 0xf3, 0xfa, 0xff, 0x6f, 0xc3, + 0x85, 0xc8, 0x51, 0x5f, 0x44, 0xa2, 0x3b, 0xb1, 0x10, 0xf0, 0xf5, 0x71, 0x5c, 0x63, 0xb1, 0xe0, + 0x7f, 0x4b, 0xb0, 0x98, 0x84, 0xf0, 0x9c, 0x47, 0xd1, 0xdf, 0x4d, 0xb9, 0xf8, 0xf5, 0x5e, 0x36, + 0xb1, 0x3e, 0x97, 0x63, 0xfc, 0x43, 0x76, 0x0d, 0x64, 0xfc, 0x28, 0xe5, 0x27, 0x19, 0xa5, 0x1f, + 0xe7, 0x43, 0x29, 0x99, 0x11, 0x97, 0x34, 0x5e, 0xf8, 0x98, 0xb3, 0x19, 0xbb, 0xa3, 0x71, 0x73, + 0x04, 0xf9, 0x98, 0x2b, 0x1a, 0x1f, 0x25, 0x1d, 0x06, 0xdc, 0xca, 0xc6, 0xef, 0x4b, 0x7b, 0x32, + 0xfe, 0xe3, 0x1c, 0x54, 0xa3, 0x43, 0x84, 0x76, 0x13, 0x2e, 0x68, 0xbc, 0x96, 0xa9, 0x9b, 0x91, + 0xfb, 0x19, 0xfc, 0x12, 0x44, 0x6e, 0xd2, 0x4b, 0x10, 0xf9, 0x49, 0x2e, 0x41, 0x3c, 0x80, 0xea, + 0x53, 0xc7, 0xf0, 0xb4, 0xe3, 0x1e, 0x56, 0x7b, 0xda, 0x19, 0x76, 0xb8, 0x97, 0xcc, 0xe0, 0xc8, + 0x2a, 0x82, 0xf0, 0x21, 0xa1, 0x93, 0xff, 0x46, 0x82, 0xa2, 0x10, 0x69, 0xec, 0xd5, 0x83, 0xe5, + 0x01, 0x41, 0x53, 0x69, 0xf9, 0xb2, 0xa9, 0x99, 0x96, 0xea, 0x62, 0xb2, 0x8e, 0x67, 0x2c, 0xde, + 0x5f, 0xa4, 0xd4, 0xdb, 0x96, 0x83, 0xf7, 0x35, 0xd3, 0x6a, 0x33, 0x52, 0x74, 0x1f, 0x6a, 0x8c, + 0x2b, 0x65, 0x48, 0x58, 0x67, 0x5c, 0x31, 0xaa, 0x94, 0x8c, 0xb0, 0x22, 0x2c, 0x5d, 0xf9, 0xaf, + 0xf3, 0x50, 0x0e, 0xe9, 0x6a, 0x4c, 0x67, 0x9a, 0xb0, 0x20, 0xca, 0x3d, 0x5c, 0xec, 0x4d, 0x72, + 0x07, 0x61, 0x9e, 0xd3, 0xb5, 0xb1, 0xc7, 0xd6, 0xab, 0x3d, 0x98, 0xd7, 0x9e, 0x68, 0x46, 0x8f, + 0x8e, 0xc6, 0x04, 0x4b, 0x5e, 0xd5, 0xa7, 0xf2, 0xd7, 0x3d, 0xa6, 0x89, 0x09, 0xae, 0x26, 0x00, + 0xa5, 0x08, 0xee, 0x44, 0xb8, 0x6e, 0xa8, 0xa0, 0x28, 0xc3, 0x9d, 0x08, 0xd7, 0xf5, 0xdb, 0xa6, + 0xe5, 0xd0, 0xf4, 0x5e, 0x88, 0xcb, 0xef, 0xa8, 0x8f, 0x6b, 0x9b, 0x50, 0xec, 0x51, 0x02, 0xa2, + 0xce, 0xbe, 0xf6, 0x3d, 0xcb, 0x51, 0xc3, 0x5c, 0x66, 0x33, 0xa9, 0x93, 0xd2, 0xb5, 0x7c, 0x56, + 0xf2, 0x1d, 0xb8, 0xa0, 0x60, 0xcb, 0xc6, 0xa6, 0x3f, 0xd3, 0x1e, 0x5a, 0xdd, 0x09, 0xd6, 0xd6, + 0x97, 0xa0, 0x91, 0x44, 0xcf, 0x3c, 0xf7, 0xf5, 0xd7, 0xa1, 0x28, 0xbe, 0x8f, 0x87, 0x66, 0x21, + 0x7f, 0xb8, 0xdd, 0xaa, 0x4d, 0x91, 0x3f, 0x47, 0x3b, 0xad, 0x9a, 0x84, 0x8a, 0x50, 0x68, 0x6f, + 0x1f, 0xb6, 0x6a, 0xb9, 0xeb, 0x7d, 0xa8, 0xc5, 0x3f, 0x0e, 0x87, 0x96, 0xe1, 0x5c, 0x4b, 0x39, + 0x68, 0x6d, 0xde, 0xdf, 0x3c, 0x6c, 0x1e, 0xec, 0xab, 0x2d, 0xa5, 0xf9, 0xe1, 0xe6, 0xe1, 0x6e, + 0x6d, 0x0a, 0x5d, 0x81, 0x4b, 0xe1, 0x17, 0x0f, 0x0e, 0xda, 0x87, 0xea, 0xe1, 0x81, 0xba, 0x7d, + 0xb0, 0x7f, 0xb8, 0xd9, 0xdc, 0xdf, 0x55, 0x6a, 0x12, 0xba, 0x04, 0x17, 0xc2, 0x28, 0x5b, 0xcd, + 0x9d, 0xa6, 0xb2, 0xbb, 0x4d, 0xfe, 0x6f, 0x3e, 0xac, 0xe5, 0xae, 0x7f, 0x00, 0x95, 0xc8, 0x17, + 0xcc, 0x88, 0x48, 0xad, 0x83, 0x9d, 0xda, 0x14, 0xaa, 0x40, 0x29, 0xcc, 0xa7, 0x08, 0x85, 0xfd, + 0x83, 0x9d, 0xdd, 0x5a, 0x0e, 0x01, 0xcc, 0x1c, 0x6e, 0x2a, 0xf7, 0x77, 0x0f, 0x6b, 0xf9, 0xeb, + 0x1b, 0xf1, 0xfb, 0x66, 0x18, 0x2d, 0x40, 0xa5, 0xbd, 0xb9, 0xbf, 0xb3, 0x75, 0xf0, 0x91, 0xaa, + 0xec, 0x6e, 0xee, 0x7c, 0x5c, 0x9b, 0x42, 0x8b, 0x50, 0x13, 0xa0, 0xfd, 0x83, 0x43, 0x06, 0x95, + 0xae, 0x3f, 0x8e, 0x79, 0x42, 0x8c, 0xce, 0xc3, 0x82, 0xdf, 0xa4, 0xba, 0xad, 0xec, 0x6e, 0x1e, + 0xee, 0x12, 0x49, 0x22, 0x60, 0xe5, 0x68, 0x7f, 0xbf, 0xb9, 0x7f, 0xbf, 0x26, 0x11, 0xae, 0x01, + 0x78, 0xf7, 0xa3, 0x26, 0x41, 0xce, 0x45, 0x91, 0x8f, 0xf6, 0xbf, 0xb1, 0x7f, 0xf0, 0xcd, 0xfd, + 0x5a, 0x7e, 0xfd, 0x67, 0xe7, 0xfc, 0xaf, 0x41, 0xb5, 0xb1, 0x43, 0x8b, 0xd2, 0x5a, 0x30, 0x2b, + 0xbe, 0xbd, 0x98, 0xb0, 0x8e, 0x46, 0xbf, 0x18, 0xd9, 0xb8, 0x32, 0x02, 0x83, 0xef, 0x8a, 0xa6, + 0xd0, 0x31, 0xdd, 0xa5, 0x84, 0x6e, 0x59, 0xbf, 0x9e, 0xb8, 0x27, 0x18, 0xba, 0xd8, 0xdd, 0xb8, + 0x3a, 0x16, 0xcf, 0x6f, 0x03, 0x93, 0x8d, 0x48, 0xf8, 0x43, 0x26, 0xe8, 0x6a, 0xd2, 0x0e, 0x22, + 0xe1, 0x4b, 0x29, 0x8d, 0x6b, 0xe3, 0x11, 0xfd, 0x66, 0x1e, 0x43, 0x2d, 0xfe, 0x51, 0x13, 0x94, + 0x90, 0x16, 0x48, 0xf9, 0x72, 0x4a, 0xe3, 0x7a, 0x16, 0xd4, 0x70, 0x63, 0x43, 0x5f, 0xe9, 0x78, + 0x23, 0xcb, 0xd7, 0x0c, 0x52, 0x1b, 0x4b, 0xfb, 0xf0, 0x01, 0x53, 0x60, 0xf4, 0x22, 0x2c, 0x4a, + 0xfc, 0x24, 0x46, 0xc2, 0xfd, 0xfb, 0x24, 0x05, 0x26, 0xdf, 0xb1, 0x96, 0xa7, 0xd0, 0x29, 0xcc, + 0xc7, 0xaa, 0x8b, 0x50, 0x02, 0x79, 0x72, 0x19, 0x55, 0xe3, 0x8d, 0x0c, 0x98, 0x51, 0x8b, 0x08, + 0x57, 0x13, 0x25, 0x5b, 0x44, 0x42, 0xad, 0x52, 0xb2, 0x45, 0x24, 0x16, 0x26, 0x51, 0xe3, 0x8e, + 0x54, 0x11, 0x25, 0x19, 0x77, 0x52, 0xed, 0x52, 0xe3, 0xea, 0x58, 0xbc, 0xb0, 0xd2, 0x62, 0x35, + 0x45, 0x49, 0x4a, 0x4b, 0xae, 0x59, 0x6a, 0xbc, 0x91, 0x01, 0x33, 0x6e, 0x05, 0x41, 0x85, 0x42, + 0x9a, 0x15, 0x0c, 0xd5, 0xd3, 0xa4, 0x59, 0xc1, 0x70, 0xb1, 0x03, 0xb7, 0x82, 0x58, 0x65, 0xc1, + 0xb5, 0x0c, 0x59, 0xcc, 0x74, 0x2b, 0x48, 0xce, 0x77, 0xca, 0x53, 0xe8, 0x47, 0x12, 0xd4, 0xd3, + 0xb2, 0x52, 0xe8, 0xe6, 0xc4, 0x29, 0xb4, 0xc6, 0xfa, 0x24, 0x24, 0xbe, 0x14, 0xdf, 0x07, 0x34, + 0xbc, 0x06, 0xa2, 0xaf, 0x24, 0x8d, 0x4c, 0xca, 0x4a, 0xdb, 0x78, 0x33, 0x1b, 0xb2, 0xdf, 0x64, + 0x1b, 0x8a, 0x22, 0x0f, 0x86, 0x12, 0xbc, 0x74, 0x2c, 0x0b, 0xd7, 0x90, 0x47, 0xa1, 0xf8, 0x4c, + 0xef, 0x43, 0x81, 0x40, 0xd1, 0xa5, 0x64, 0x6c, 0xc1, 0x6c, 0x25, 0xed, 0xb5, 0xcf, 0xe8, 0x11, + 0xcc, 0xb0, 0xc4, 0x0f, 0x4a, 0x38, 0x1f, 0x8a, 0xa4, 0xa7, 0x1a, 0x97, 0xd3, 0x11, 0x7c, 0x76, + 0xdf, 0x61, 0x9f, 0xe5, 0xe5, 0x39, 0x1d, 0xf4, 0x6a, 0xf2, 0xb7, 0xd9, 0xa2, 0x29, 0xa4, 0xc6, + 0x6b, 0x63, 0xb0, 0xc2, 0x93, 0x22, 0xb6, 0x37, 0xb9, 0x3a, 0x76, 0x83, 0x99, 0x3e, 0x29, 0x92, + 0xb7, 0xb0, 0xcc, 0x48, 0x86, 0xb7, 0xb8, 0x49, 0x46, 0x92, 0x7a, 0xb0, 0x90, 0x64, 0x24, 0xe9, + 0xbb, 0x66, 0x36, 0x0f, 0xe3, 0x97, 0xc6, 0xaf, 0x8d, 0xff, 0xc4, 0x41, 0xfa, 0x3c, 0x4c, 0xf9, + 0x8c, 0x82, 0x3c, 0x85, 0x3c, 0x38, 0x97, 0xf0, 0x9d, 0x05, 0xf4, 0xe6, 0xb8, 0xa5, 0x23, 0xd2, + 0xe2, 0x8d, 0x8c, 0xd8, 0xe1, 0x56, 0x13, 0x0e, 0x6c, 0x93, 0x5a, 0x4d, 0x3f, 0x3d, 0x4e, 0x6a, + 0x75, 0xd4, 0x29, 0x30, 0x35, 0x6e, 0xee, 0xd4, 0x5e, 0x4e, 0x3f, 0xc5, 0x4c, 0x35, 0xee, 0xb8, + 0x0b, 0x5b, 0xff, 0x55, 0x1e, 0xe6, 0xd8, 0x61, 0x3c, 0x8f, 0xd0, 0x3e, 0x06, 0x08, 0xf2, 0x60, + 0xe8, 0x95, 0x64, 0xa5, 0x44, 0x92, 0x8e, 0x8d, 0x57, 0x47, 0x23, 0x85, 0x27, 0x52, 0x28, 0xa7, + 0x94, 0x34, 0x91, 0x86, 0x53, 0x67, 0x49, 0x13, 0x29, 0x21, 0x31, 0x25, 0x4f, 0xa1, 0x0f, 0xa1, + 0xe4, 0x27, 0x2f, 0x50, 0x52, 0xf2, 0x23, 0x96, 0x9d, 0x69, 0xbc, 0x32, 0x12, 0x27, 0x2c, 0x75, + 0x28, 0x33, 0x91, 0x24, 0xf5, 0x70, 0x06, 0x24, 0x49, 0xea, 0xa4, 0xf4, 0x46, 0xa0, 0x13, 0x76, + 0x7e, 0x99, 0xaa, 0x93, 0xc8, 0xf1, 0x71, 0xaa, 0x4e, 0xa2, 0x87, 0xa0, 0xf2, 0xd4, 0xd6, 0xde, + 0x2f, 0x7e, 0xbd, 0x22, 0xfd, 0xd3, 0xaf, 0x57, 0xa6, 0x7e, 0xf8, 0xc9, 0x8a, 0xf4, 0x8b, 0x4f, + 0x56, 0xa4, 0x7f, 0xfc, 0x64, 0x45, 0xfa, 0xd7, 0x4f, 0x56, 0xa4, 0xdf, 0xfc, 0xb7, 0x95, 0xa9, + 0x6f, 0x5d, 0x7b, 0xfc, 0xae, 0xbb, 0x6a, 0x58, 0x6b, 0x1d, 0xc7, 0xb8, 0xa1, 0xd9, 0xc6, 0x9a, + 0xfd, 0xb8, 0xbb, 0xa6, 0xd9, 0x86, 0xbb, 0xc6, 0xb9, 0xaf, 0x09, 0xee, 0xc7, 0x33, 0xf4, 0xe3, + 0xe2, 0x6f, 0xfd, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xed, 0x83, 0x10, 0x05, 0x22, 0x5e, 0x00, + 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -8659,7 +8733,8 @@ type RuntimeServiceClient interface { // ContainerStatus returns status of the container. If the container is not // present, returns an error. ContainerStatus(ctx context.Context, in *ContainerStatusRequest, opts ...grpc.CallOption) (*ContainerStatusResponse, error) - // UpdateContainerResources updates ContainerConfig of the container. + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. UpdateContainerResources(ctx context.Context, in *UpdateContainerResourcesRequest, opts ...grpc.CallOption) (*UpdateContainerResourcesResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been @@ -8962,7 +9037,8 @@ type RuntimeServiceServer interface { // ContainerStatus returns status of the container. If the container is not // present, returns an error. ContainerStatus(context.Context, *ContainerStatusRequest) (*ContainerStatusResponse, error) - // UpdateContainerResources updates ContainerConfig of the container. + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. UpdateContainerResources(context.Context, *UpdateContainerResourcesRequest) (*UpdateContainerResourcesResponse, error) // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been @@ -13786,6 +13862,20 @@ func (m *ContainerStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if m.Resources != nil { + { + size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } if len(m.LogPath) > 0 { i -= len(m.LogPath) copy(dAtA[i:], m.LogPath) @@ -13979,6 +14069,53 @@ func (m *ContainerStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *ContainerResources) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ContainerResources) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContainerResources) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Windows != nil { + { + size, err := m.Windows.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.Linux != nil { + { + size, err := m.Linux.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApi(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *UpdateContainerResourcesRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -14391,21 +14528,21 @@ func (m *PortForwardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { var l int _ = l if len(m.Port) > 0 { - dAtA73 := make([]byte, len(m.Port)*10) - var j72 int + dAtA76 := make([]byte, len(m.Port)*10) + var j75 int for _, num1 := range m.Port { num := uint64(num1) for num >= 1<<7 { - dAtA73[j72] = uint8(uint64(num)&0x7f | 0x80) + dAtA76[j75] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 - j72++ + j75++ } - dAtA73[j72] = uint8(num) - j72++ + dAtA76[j75] = uint8(num) + j75++ } - i -= j72 - copy(dAtA[i:], dAtA73[:j72]) - i = encodeVarintApi(dAtA, i, uint64(j72)) + i -= j75 + copy(dAtA[i:], dAtA76[:j75]) + i = encodeVarintApi(dAtA, i, uint64(j75)) i-- dAtA[i] = 0x12 } @@ -17717,6 +17854,10 @@ func (m *ContainerStatus) Size() (n int) { if l > 0 { n += 1 + l + sovApi(uint64(l)) } + if m.Resources != nil { + l = m.Resources.Size() + n += 2 + l + sovApi(uint64(l)) + } return n } @@ -17741,6 +17882,23 @@ func (m *ContainerStatusResponse) Size() (n int) { return n } +func (m *ContainerResources) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Linux != nil { + l = m.Linux.Size() + n += 1 + l + sovApi(uint64(l)) + } + if m.Windows != nil { + l = m.Windows.Size() + n += 1 + l + sovApi(uint64(l)) + } + return n +} + func (m *UpdateContainerResourcesRequest) Size() (n int) { if m == nil { return 0 @@ -19751,6 +19909,7 @@ func (this *ContainerStatus) String() string { `Annotations:` + mapStringForAnnotations + `,`, `Mounts:` + repeatedStringForMounts + `,`, `LogPath:` + fmt.Sprintf("%v", this.LogPath) + `,`, + `Resources:` + strings.Replace(this.Resources.String(), "ContainerResources", "ContainerResources", 1) + `,`, `}`, }, "") return s @@ -19776,6 +19935,17 @@ func (this *ContainerStatusResponse) String() string { }, "") return s } +func (this *ContainerResources) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ContainerResources{`, + `Linux:` + strings.Replace(this.Linux.String(), "LinuxContainerResources", "LinuxContainerResources", 1) + `,`, + `Windows:` + strings.Replace(this.Windows.String(), "WindowsContainerResources", "WindowsContainerResources", 1) + `,`, + `}`, + }, "") + return s +} func (this *UpdateContainerResourcesRequest) String() string { if this == nil { return "nil" @@ -33414,6 +33584,42 @@ func (m *ContainerStatus) Unmarshal(dAtA []byte) error { } m.LogPath = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Resources", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Resources == nil { + m.Resources = &ContainerResources{} + } + if err := m.Resources.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipApi(dAtA[iNdEx:]) @@ -33648,6 +33854,128 @@ func (m *ContainerStatusResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *ContainerResources) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ContainerResources: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContainerResources: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Linux", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Linux == nil { + m.Linux = &LinuxContainerResources{} + } + if err := m.Linux.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Windows", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApi + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApi + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApi + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Windows == nil { + m.Windows = &WindowsContainerResources{} + } + if err := m.Windows.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApi(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApi + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *UpdateContainerResourcesRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto index 41671963229..6f6734e6067 100644 --- a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto +++ b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/runtime/v1alpha2/api.proto @@ -79,7 +79,8 @@ service RuntimeService { // ContainerStatus returns status of the container. If the container is not // present, returns an error. rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {} - // UpdateContainerResources updates ContainerConfig of the container. + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateContainerResourcesResponse) {} // ReopenContainerLog asks runtime to reopen the stdout/stderr log file // for the container. This is often called after the log file has been @@ -1151,6 +1152,8 @@ message ContainerStatus { repeated Mount mounts = 14; // Log path of container. string log_path = 15; + // Resource limits configuration of the container. + ContainerResources resources = 16; } message ContainerStatusResponse { @@ -1163,6 +1166,14 @@ message ContainerStatusResponse { map info = 2; } +// ContainerResources holds resource limits configuration for a container. +message ContainerResources { + // Resource limits configuration specific to Linux container. + LinuxContainerResources linux = 1; + // Resource limits configuration specific to Windows container. + WindowsContainerResources windows = 2; +} + message UpdateContainerResourcesRequest { // ID of the container to update. string container_id = 1; diff --git a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/services.go b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/services.go index 54f755d8743..55f631738b7 100644 --- a/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/services.go +++ b/cluster-autoscaler/vendor/k8s.io/cri-api/pkg/apis/services.go @@ -43,8 +43,9 @@ type ContainerManager interface { ListContainers(filter *runtimeapi.ContainerFilter) ([]*runtimeapi.Container, error) // ContainerStatus returns the status of the container. ContainerStatus(containerID string, verbose bool) (*runtimeapi.ContainerStatusResponse, error) - // UpdateContainerResources updates the cgroup resources for the container. - UpdateContainerResources(containerID string, resources *runtimeapi.LinuxContainerResources) error + // UpdateContainerResources updates ContainerConfig of the container synchronously. + // If runtime fails to transactionally update the requested resources, an error is returned. + UpdateContainerResources(containerID string, resources *runtimeapi.ContainerResources) error // ExecSync executes a command in the container, and returns the stdout output. // If command exits with a non-zero exit code, an error is returned. ExecSync(containerID string, cmd []string, timeout time.Duration) (stdout []byte, stderr []byte, err error) @@ -56,6 +57,10 @@ type ContainerManager interface { // for the container. If it returns error, new container log file MUST NOT // be created. ReopenContainerLog(ContainerID string) error + // CheckpointContainer checkpoints a container + CheckpointContainer(options *runtimeapi.CheckpointContainerRequest) error + // GetContainerEvents gets container events from the CRI runtime + GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse) error } // PodSandboxManager contains methods for operating on PodSandboxes. The methods diff --git a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/go.mod b/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/go.mod deleted file mode 100644 index 3a38b76dffc..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/go.mod +++ /dev/null @@ -1,37 +0,0 @@ -// This is a generated file. Do not edit directly. - -module k8s.io/csi-translation-lib - -go 1.18 - -require ( - github.com/stretchr/testify v1.7.0 - k8s.io/api v0.25.0-alpha.2 - k8s.io/apimachinery v0.25.0-alpha.2 - k8s.io/klog/v2 v2.70.0 -) - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/gogo/protobuf v1.3.2 // indirect - github.com/google/gofuzz v1.1.0 // indirect - github.com/google/uuid v1.1.2 // indirect - github.com/json-iterator/go v1.1.12 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect - golang.org/x/text v0.3.7 // indirect - gopkg.in/inf.v0 v0.9.1 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 // indirect - sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect -) - -replace ( - k8s.io/api => k8s.io/api v0.25.0-alpha.2 - k8s.io/apimachinery => k8s.io/apimachinery v0.25.0-alpha.2 -) diff --git a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/go.sum b/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/go.sum deleted file mode 100644 index 334f09c3745..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/go.sum +++ /dev/null @@ -1,92 +0,0 @@ -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/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= -github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -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/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -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/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= -golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.25.0-alpha.2 h1:azwXduCht76Ecuv80QzZkCDzcFcLotKPXiE9/+jx5Qk= -k8s.io/api v0.25.0-alpha.2/go.mod h1:wOntqHYj8WveLW2sh6q4tkE2vMZTtxe0MrFyVwO8JCM= -k8s.io/apimachinery v0.25.0-alpha.2 h1:y6uTWaiqsPTPRewnXJ15IFyGmBo2qPt6enm4zszG8Z0= -k8s.io/apimachinery v0.25.0-alpha.2/go.mod h1:h34FtK3eCxige6ZIACdBSYExtDaKAUxoc7hVe2LOxzw= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.70.0 h1:GMmmjoFOrNepPN0ZeGCzvD2Gh5IKRwdFx8W5PBxVTQU= -k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= -sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1 h1:bKCqE9GvQ5tiVHn5rfn1r+yao3aLQEaLzkkmAkf+A6Y= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= diff --git a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/aws_ebs.go b/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/aws_ebs.go index 3b3dbac1f63..cf1ba112436 100644 --- a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/aws_ebs.go +++ b/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/aws_ebs.go @@ -232,11 +232,13 @@ var awsVolumeRegMatch = regexp.MustCompile("^vol-[^/]*$") // KubernetesVolumeIDToEBSVolumeID translates Kubernetes volume ID to EBS volume ID // KubernetesVolumeID forms: -// * aws:/// -// * aws:/// -// * +// - aws:/// +// - aws:/// +// - +// // EBS Volume ID form: -// * vol- +// - vol- +// // This translation shouldn't be needed and should be fixed in long run // See https://github.com/kubernetes/kubernetes/issues/73730 func KubernetesVolumeIDToEBSVolumeID(kubernetesID string) (string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/in_tree_volume.go b/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/in_tree_volume.go index e6be04eeef2..2ce4c271de5 100644 --- a/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/in_tree_volume.go +++ b/cluster-autoscaler/vendor/k8s.io/csi-translation-lib/plugins/in_tree_volume.go @@ -215,12 +215,12 @@ func translateTopologyFromInTreeToCSI(pv *v1.PersistentVolume, csiTopologyKey st // getTopologyLabel checks if the kubernetes topology label used in this // PV is GA and return the zone/region label used. // The version checking follows the following orders -// 1. Check NodeAffinity -// 1.1 Check if zoneGA exists, if yes return GA labels -// 1.2 Check if zoneBeta exists, if yes return Beta labels -// 2. Check PV labels -// 2.1 Check if zoneGA exists, if yes return GA labels -// 2.2 Check if zoneBeta exists, if yes return Beta labels +// 1. Check NodeAffinity +// 1.1 Check if zoneGA exists, if yes return GA labels +// 1.2 Check if zoneBeta exists, if yes return Beta labels +// 2. Check PV labels +// 2.1 Check if zoneGA exists, if yes return GA labels +// 2.2 Check if zoneBeta exists, if yes return Beta labels func getTopologyLabel(pv *v1.PersistentVolume) (zoneLabel string, regionLabel string) { if zoneGA := TopologyKeyExist(v1.LabelTopologyZone, pv.Spec.NodeAffinity); zoneGA { diff --git a/cluster-autoscaler/vendor/k8s.io/klog/v2/go.mod b/cluster-autoscaler/vendor/k8s.io/klog/v2/go.mod deleted file mode 100644 index 31aefba74a7..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/klog/v2/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module k8s.io/klog/v2 - -go 1.13 - -require github.com/go-logr/logr v1.2.0 diff --git a/cluster-autoscaler/vendor/k8s.io/klog/v2/go.sum b/cluster-autoscaler/vendor/k8s.io/klog/v2/go.sum deleted file mode 100644 index 919fbadbc0d..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/klog/v2/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/go-logr/logr v1.2.0 h1:QK40JKJyMdUDz+h+xvCsru/bJhvG0UxvePV0ufL/AcE= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= diff --git a/cluster-autoscaler/vendor/k8s.io/klog/v2/internal/dbg/dbg.go b/cluster-autoscaler/vendor/k8s.io/klog/v2/internal/dbg/dbg.go new file mode 100644 index 00000000000..f27bd14472f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/klog/v2/internal/dbg/dbg.go @@ -0,0 +1,42 @@ +// Go support for leveled logs, analogous to https://code.google.com/p/google-glog/ +// +// Copyright 2013 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package dbg provides some helper code for call traces. +package dbg + +import ( + "runtime" +) + +// Stacks is a wrapper for runtime.Stack that attempts to recover the data for +// all goroutines or the calling one. +func Stacks(all bool) []byte { + // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. + n := 10000 + if all { + n = 100000 + } + var trace []byte + for i := 0; i < 5; i++ { + trace = make([]byte, n) + nbytes := runtime.Stack(trace, all) + if nbytes < len(trace) { + return trace[:nbytes] + } + n *= 2 + } + return trace +} diff --git a/cluster-autoscaler/vendor/k8s.io/klog/v2/klog.go b/cluster-autoscaler/vendor/k8s.io/klog/v2/klog.go index 8305e25200d..652fadcd4e4 100644 --- a/cluster-autoscaler/vendor/k8s.io/klog/v2/klog.go +++ b/cluster-autoscaler/vendor/k8s.io/klog/v2/klog.go @@ -96,6 +96,7 @@ import ( "k8s.io/klog/v2/internal/buffer" "k8s.io/klog/v2/internal/clock" + "k8s.io/klog/v2/internal/dbg" "k8s.io/klog/v2/internal/serialize" "k8s.io/klog/v2/internal/severity" ) @@ -549,7 +550,11 @@ type loggingT struct { vmap map[uintptr]Level } -var logging loggingT +var logging = loggingT{ + settings: settings{ + contextualLoggingEnabled: true, + }, +} // setVState sets a consistent state for V logging. // l.mu is held. @@ -859,7 +864,7 @@ func (l *loggingT) output(s severity.Severity, log *logr.Logger, buf *buffer.Buf if l.traceLocation.isSet() { if l.traceLocation.match(file, line) { - buf.Write(stacks(false)) + buf.Write(dbg.Stacks(false)) } } data := buf.Bytes() @@ -928,11 +933,11 @@ func (l *loggingT) output(s severity.Severity, log *logr.Logger, buf *buffer.Buf // If -logtostderr has been specified, the loop below will do that anyway // as the first stack in the full dump. if !l.toStderr { - os.Stderr.Write(stacks(false)) + os.Stderr.Write(dbg.Stacks(false)) } // Write the stack trace for all goroutines to the files. - trace := stacks(true) + trace := dbg.Stacks(true) logExitFunc = func(error) {} // If we get a write error, we'll still exit below. for log := severity.FatalLog; log >= severity.InfoLog; log-- { if f := l.file[log]; f != nil { // Can be nil if -logtostderr is set. @@ -952,25 +957,6 @@ func (l *loggingT) output(s severity.Severity, log *logr.Logger, buf *buffer.Buf } } -// stacks is a wrapper for runtime.Stack that attempts to recover the data for all goroutines. -func stacks(all bool) []byte { - // We don't know how big the traces are, so grow a few times if they don't fit. Start large, though. - n := 10000 - if all { - n = 100000 - } - var trace []byte - for i := 0; i < 5; i++ { - trace = make([]byte, n) - nbytes := runtime.Stack(trace, all) - if nbytes < len(trace) { - return trace[:nbytes] - } - n *= 2 - } - return trace -} - // logExitFunc provides a simple mechanism to override the default behavior // of exiting on error. Used in testing and to guarantee we reach a required exit // for fatal logs. Instead, exit could be a function rather than a method but that diff --git a/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/handler/handler.go b/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/handler/handler.go index 898e761728e..7a2590dcb91 100644 --- a/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/handler/handler.go +++ b/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/handler/handler.go @@ -33,7 +33,6 @@ import ( "github.com/golang/protobuf/proto" openapi_v2 "github.com/google/gnostic/openapiv2" "github.com/munnerz/goautoneg" - "gopkg.in/yaml.v2" klog "k8s.io/klog/v2" "k8s.io/kube-openapi/pkg/builder" "k8s.io/kube-openapi/pkg/common" @@ -139,48 +138,6 @@ func (o *OpenAPIService) UpdateSpec(openapiSpec *spec.Swagger) (err error) { return nil } -func jsonToYAML(j map[string]interface{}) yaml.MapSlice { - if j == nil { - return nil - } - ret := make(yaml.MapSlice, 0, len(j)) - for k, v := range j { - ret = append(ret, yaml.MapItem{k, jsonToYAMLValue(v)}) - } - return ret -} - -func jsonToYAMLValue(j interface{}) interface{} { - switch j := j.(type) { - case map[string]interface{}: - return jsonToYAML(j) - case []interface{}: - ret := make([]interface{}, len(j)) - for i := range j { - ret[i] = jsonToYAMLValue(j[i]) - } - return ret - case float64: - // replicate the logic in https://github.com/go-yaml/yaml/blob/51d6538a90f86fe93ac480b35f37b2be17fef232/resolve.go#L151 - if i64 := int64(j); j == float64(i64) { - if i := int(i64); i64 == int64(i) { - return i - } - return i64 - } - if ui64 := uint64(j); j == float64(ui64) { - return ui64 - } - return j - case int64: - if i := int(j); j == int64(i) { - return i - } - return j - } - return j -} - func ToProtoBinary(json []byte) ([]byte, error) { document, err := openapi_v2.ParseDocument(json) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go b/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go index 35241fde647..bec0e780978 100644 --- a/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go +++ b/cluster-autoscaler/vendor/k8s.io/kube-openapi/pkg/schemaconv/smd.go @@ -167,6 +167,20 @@ func (c *convert) makeRef(model proto.Schema, preserveUnknownFields bool) schema // reference a named type _, n := path.Split(r.Reference()) tr.NamedType = &n + + ext := model.GetExtensions() + if val, ok := ext["x-kubernetes-map-type"]; ok { + switch val { + case "atomic": + relationship := schema.Atomic + tr.ElementRelationship = &relationship + case "granular": + relationship := schema.Separable + tr.ElementRelationship = &relationship + default: + c.reportError("unknown map type %v", val) + } + } } else { // compute the type inline c2 := c.push("inlined in "+c.currentName, &tr.Inlined) diff --git a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/doc.go b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/doc.go new file mode 100644 index 00000000000..bbc4641e72c --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/doc.go @@ -0,0 +1,21 @@ +/* +Copyright 2022 The Kubernetes 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. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:openapi-gen=true +// +groupName=kubescheduler.config.k8s.io + +package v1 // import "k8s.io/kube-scheduler/config/v1" diff --git a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/register.go b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/register.go new file mode 100644 index 00000000000..58adac5dceb --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/register.go @@ -0,0 +1,50 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" +) + +// GroupName is the group name used in this package +const GroupName = "kubescheduler.config.k8s.io" + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} + +var ( + // SchemeBuilder is the scheme builder with scheme init functions to run for this API package + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + // AddToScheme is a global function that registers this API group & version to a scheme + AddToScheme = SchemeBuilder.AddToScheme +) + +// addKnownTypes registers known types to the given scheme +func addKnownTypes(scheme *runtime.Scheme) error { + scheme.AddKnownTypes(SchemeGroupVersion, + &KubeSchedulerConfiguration{}, + &DefaultPreemptionArgs{}, + &InterPodAffinityArgs{}, + &NodeResourcesBalancedAllocationArgs{}, + &NodeResourcesFitArgs{}, + &PodTopologySpreadArgs{}, + &VolumeBindingArgs{}, + &NodeAffinityArgs{}, + ) + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/types.go b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/types.go new file mode 100644 index 00000000000..4e104600a41 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/types.go @@ -0,0 +1,377 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + "bytes" + "fmt" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + componentbaseconfigv1alpha1 "k8s.io/component-base/config/v1alpha1" + "sigs.k8s.io/yaml" +) + +const ( + // SchedulerDefaultLockObjectNamespace defines default scheduler lock object namespace ("kube-system") + SchedulerDefaultLockObjectNamespace string = metav1.NamespaceSystem + + // SchedulerDefaultLockObjectName defines default scheduler lock object name ("kube-scheduler") + SchedulerDefaultLockObjectName = "kube-scheduler" + + // SchedulerDefaultProviderName defines the default provider names + SchedulerDefaultProviderName = "DefaultProvider" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// KubeSchedulerConfiguration configures a scheduler +type KubeSchedulerConfiguration struct { + metav1.TypeMeta `json:",inline"` + + // Parallelism defines the amount of parallelism in algorithms for scheduling a Pods. Must be greater than 0. Defaults to 16 + Parallelism *int32 `json:"parallelism,omitempty"` + + // LeaderElection defines the configuration of leader election client. + LeaderElection componentbaseconfigv1alpha1.LeaderElectionConfiguration `json:"leaderElection"` + + // ClientConnection specifies the kubeconfig file and client connection + // settings for the proxy server to use when communicating with the apiserver. + ClientConnection componentbaseconfigv1alpha1.ClientConnectionConfiguration `json:"clientConnection"` + + // DebuggingConfiguration holds configuration for Debugging related features + // TODO: We might wanna make this a substruct like Debugging componentbaseconfigv1alpha1.DebuggingConfiguration + componentbaseconfigv1alpha1.DebuggingConfiguration `json:",inline"` + + // PercentageOfNodesToScore is the percentage of all nodes that once found feasible + // for running a pod, the scheduler stops its search for more feasible nodes in + // the cluster. This helps improve scheduler's performance. Scheduler always tries to find + // at least "minFeasibleNodesToFind" feasible nodes no matter what the value of this flag is. + // Example: if the cluster size is 500 nodes and the value of this flag is 30, + // then scheduler stops finding further feasible nodes once it finds 150 feasible ones. + // When the value is 0, default percentage (5%--50% based on the size of the cluster) of the + // nodes will be scored. + PercentageOfNodesToScore *int32 `json:"percentageOfNodesToScore,omitempty"` + + // PodInitialBackoffSeconds is the initial backoff for unschedulable pods. + // If specified, it must be greater than 0. If this value is null, the default value (1s) + // will be used. + PodInitialBackoffSeconds *int64 `json:"podInitialBackoffSeconds,omitempty"` + + // PodMaxBackoffSeconds is the max backoff for unschedulable pods. + // If specified, it must be greater than podInitialBackoffSeconds. If this value is null, + // the default value (10s) will be used. + PodMaxBackoffSeconds *int64 `json:"podMaxBackoffSeconds,omitempty"` + + // Profiles are scheduling profiles that kube-scheduler supports. Pods can + // choose to be scheduled under a particular profile by setting its associated + // scheduler name. Pods that don't specify any scheduler name are scheduled + // with the "default-scheduler" profile, if present here. + // +listType=map + // +listMapKey=schedulerName + Profiles []KubeSchedulerProfile `json:"profiles,omitempty"` + + // Extenders are the list of scheduler extenders, each holding the values of how to communicate + // with the extender. These extenders are shared by all scheduler profiles. + // +listType=set + Extenders []Extender `json:"extenders,omitempty"` +} + +// DecodeNestedObjects decodes plugin args for known types. +func (c *KubeSchedulerConfiguration) DecodeNestedObjects(d runtime.Decoder) error { + var strictDecodingErrs []error + for i := range c.Profiles { + prof := &c.Profiles[i] + for j := range prof.PluginConfig { + err := prof.PluginConfig[j].decodeNestedObjects(d) + if err != nil { + decodingErr := fmt.Errorf("decoding .profiles[%d].pluginConfig[%d]: %w", i, j, err) + if runtime.IsStrictDecodingError(err) { + strictDecodingErrs = append(strictDecodingErrs, decodingErr) + } else { + return decodingErr + } + } + } + } + if len(strictDecodingErrs) > 0 { + return runtime.NewStrictDecodingError(strictDecodingErrs) + } + return nil +} + +// EncodeNestedObjects encodes plugin args. +func (c *KubeSchedulerConfiguration) EncodeNestedObjects(e runtime.Encoder) error { + for i := range c.Profiles { + prof := &c.Profiles[i] + for j := range prof.PluginConfig { + err := prof.PluginConfig[j].encodeNestedObjects(e) + if err != nil { + return fmt.Errorf("encoding .profiles[%d].pluginConfig[%d]: %w", i, j, err) + } + } + } + return nil +} + +// KubeSchedulerProfile is a scheduling profile. +type KubeSchedulerProfile struct { + // SchedulerName is the name of the scheduler associated to this profile. + // If SchedulerName matches with the pod's "spec.schedulerName", then the pod + // is scheduled with this profile. + SchedulerName *string `json:"schedulerName,omitempty"` + + // Plugins specify the set of plugins that should be enabled or disabled. + // Enabled plugins are the ones that should be enabled in addition to the + // default plugins. Disabled plugins are any of the default plugins that + // should be disabled. + // When no enabled or disabled plugin is specified for an extension point, + // default plugins for that extension point will be used if there is any. + // If a QueueSort plugin is specified, the same QueueSort Plugin and + // PluginConfig must be specified for all profiles. + Plugins *Plugins `json:"plugins,omitempty"` + + // PluginConfig is an optional set of custom plugin arguments for each plugin. + // Omitting config args for a plugin is equivalent to using the default config + // for that plugin. + // +listType=map + // +listMapKey=name + PluginConfig []PluginConfig `json:"pluginConfig,omitempty"` +} + +// Plugins include multiple extension points. When specified, the list of plugins for +// a particular extension point are the only ones enabled. If an extension point is +// omitted from the config, then the default set of plugins is used for that extension point. +// Enabled plugins are called in the order specified here, after default plugins. If they need to +// be invoked before default plugins, default plugins must be disabled and re-enabled here in desired order. +type Plugins struct { + // QueueSort is a list of plugins that should be invoked when sorting pods in the scheduling queue. + QueueSort PluginSet `json:"queueSort,omitempty"` + + // PreFilter is a list of plugins that should be invoked at "PreFilter" extension point of the scheduling framework. + PreFilter PluginSet `json:"preFilter,omitempty"` + + // Filter is a list of plugins that should be invoked when filtering out nodes that cannot run the Pod. + Filter PluginSet `json:"filter,omitempty"` + + // PostFilter is a list of plugins that are invoked after filtering phase, but only when no feasible nodes were found for the pod. + PostFilter PluginSet `json:"postFilter,omitempty"` + + // PreScore is a list of plugins that are invoked before scoring. + PreScore PluginSet `json:"preScore,omitempty"` + + // Score is a list of plugins that should be invoked when ranking nodes that have passed the filtering phase. + Score PluginSet `json:"score,omitempty"` + + // Reserve is a list of plugins invoked when reserving/unreserving resources + // after a node is assigned to run the pod. + Reserve PluginSet `json:"reserve,omitempty"` + + // Permit is a list of plugins that control binding of a Pod. These plugins can prevent or delay binding of a Pod. + Permit PluginSet `json:"permit,omitempty"` + + // PreBind is a list of plugins that should be invoked before a pod is bound. + PreBind PluginSet `json:"preBind,omitempty"` + + // Bind is a list of plugins that should be invoked at "Bind" extension point of the scheduling framework. + // The scheduler call these plugins in order. Scheduler skips the rest of these plugins as soon as one returns success. + Bind PluginSet `json:"bind,omitempty"` + + // PostBind is a list of plugins that should be invoked after a pod is successfully bound. + PostBind PluginSet `json:"postBind,omitempty"` + + // MultiPoint is a simplified config section to enable plugins for all valid extension points. + // Plugins enabled through MultiPoint will automatically register for every individual extension + // point the plugin has implemented. Disabling a plugin through MultiPoint disables that behavior. + // The same is true for disabling "*" through MultiPoint (no default plugins will be automatically registered). + // Plugins can still be disabled through their individual extension points. + // + // In terms of precedence, plugin config follows this basic hierarchy + // 1. Specific extension points + // 2. Explicitly configured MultiPoint plugins + // 3. The set of default plugins, as MultiPoint plugins + // This implies that a higher precedence plugin will run first and overwrite any settings within MultiPoint. + // Explicitly user-configured plugins also take a higher precedence over default plugins. + // Within this hierarchy, an Enabled setting takes precedence over Disabled. For example, if a plugin is + // set in both `multiPoint.Enabled` and `multiPoint.Disabled`, the plugin will be enabled. Similarly, + // including `multiPoint.Disabled = '*'` and `multiPoint.Enabled = pluginA` will still register that specific + // plugin through MultiPoint. This follows the same behavior as all other extension point configurations. + MultiPoint PluginSet `json:"multiPoint,omitempty"` +} + +// PluginSet specifies enabled and disabled plugins for an extension point. +// If an array is empty, missing, or nil, default plugins at that extension point will be used. +type PluginSet struct { + // Enabled specifies plugins that should be enabled in addition to default plugins. + // If the default plugin is also configured in the scheduler config file, the weight of plugin will + // be overridden accordingly. + // These are called after default plugins and in the same order specified here. + // +listType=atomic + Enabled []Plugin `json:"enabled,omitempty"` + // Disabled specifies default plugins that should be disabled. + // When all default plugins need to be disabled, an array containing only one "*" should be provided. + // +listType=map + // +listMapKey=name + Disabled []Plugin `json:"disabled,omitempty"` +} + +// Plugin specifies a plugin name and its weight when applicable. Weight is used only for Score plugins. +type Plugin struct { + // Name defines the name of plugin + Name string `json:"name"` + // Weight defines the weight of plugin, only used for Score plugins. + Weight *int32 `json:"weight,omitempty"` +} + +// PluginConfig specifies arguments that should be passed to a plugin at the time of initialization. +// A plugin that is invoked at multiple extension points is initialized once. Args can have arbitrary structure. +// It is up to the plugin to process these Args. +type PluginConfig struct { + // Name defines the name of plugin being configured + Name string `json:"name"` + // Args defines the arguments passed to the plugins at the time of initialization. Args can have arbitrary structure. + Args runtime.RawExtension `json:"args,omitempty"` +} + +func (c *PluginConfig) decodeNestedObjects(d runtime.Decoder) error { + gvk := SchemeGroupVersion.WithKind(c.Name + "Args") + // dry-run to detect and skip out-of-tree plugin args. + if _, _, err := d.Decode(nil, &gvk, nil); runtime.IsNotRegisteredError(err) { + return nil + } + + var strictDecodingErr error + obj, parsedGvk, err := d.Decode(c.Args.Raw, &gvk, nil) + if err != nil { + decodingArgsErr := fmt.Errorf("decoding args for plugin %s: %w", c.Name, err) + if obj != nil && runtime.IsStrictDecodingError(err) { + strictDecodingErr = runtime.NewStrictDecodingError([]error{decodingArgsErr}) + } else { + return decodingArgsErr + } + } + if parsedGvk.GroupKind() != gvk.GroupKind() { + return fmt.Errorf("args for plugin %s were not of type %s, got %s", c.Name, gvk.GroupKind(), parsedGvk.GroupKind()) + } + c.Args.Object = obj + return strictDecodingErr +} + +func (c *PluginConfig) encodeNestedObjects(e runtime.Encoder) error { + if c.Args.Object == nil { + return nil + } + var buf bytes.Buffer + err := e.Encode(c.Args.Object, &buf) + if err != nil { + return err + } + // The encoder might be a YAML encoder, but the parent encoder expects + // JSON output, so we convert YAML back to JSON. + // This is a no-op if produces JSON. + json, err := yaml.YAMLToJSON(buf.Bytes()) + if err != nil { + return err + } + c.Args.Raw = json + return nil +} + +// Extender holds the parameters used to communicate with the extender. If a verb is unspecified/empty, +// it is assumed that the extender chose not to provide that extension. +type Extender struct { + // URLPrefix at which the extender is available + URLPrefix string `json:"urlPrefix"` + // Verb for the filter call, empty if not supported. This verb is appended to the URLPrefix when issuing the filter call to extender. + FilterVerb string `json:"filterVerb,omitempty"` + // Verb for the preempt call, empty if not supported. This verb is appended to the URLPrefix when issuing the preempt call to extender. + PreemptVerb string `json:"preemptVerb,omitempty"` + // Verb for the prioritize call, empty if not supported. This verb is appended to the URLPrefix when issuing the prioritize call to extender. + PrioritizeVerb string `json:"prioritizeVerb,omitempty"` + // The numeric multiplier for the node scores that the prioritize call generates. + // The weight should be a positive integer + Weight int64 `json:"weight,omitempty"` + // Verb for the bind call, empty if not supported. This verb is appended to the URLPrefix when issuing the bind call to extender. + // If this method is implemented by the extender, it is the extender's responsibility to bind the pod to apiserver. Only one extender + // can implement this function. + BindVerb string `json:"bindVerb,omitempty"` + // EnableHTTPS specifies whether https should be used to communicate with the extender + EnableHTTPS bool `json:"enableHTTPS,omitempty"` + // TLSConfig specifies the transport layer security config + TLSConfig *ExtenderTLSConfig `json:"tlsConfig,omitempty"` + // HTTPTimeout specifies the timeout duration for a call to the extender. Filter timeout fails the scheduling of the pod. Prioritize + // timeout is ignored, k8s/other extenders priorities are used to select the node. + HTTPTimeout metav1.Duration `json:"httpTimeout,omitempty"` + // NodeCacheCapable specifies that the extender is capable of caching node information, + // so the scheduler should only send minimal information about the eligible nodes + // assuming that the extender already cached full details of all nodes in the cluster + NodeCacheCapable bool `json:"nodeCacheCapable,omitempty"` + // ManagedResources is a list of extended resources that are managed by + // this extender. + // - A pod will be sent to the extender on the Filter, Prioritize and Bind + // (if the extender is the binder) phases iff the pod requests at least + // one of the extended resources in this list. If empty or unspecified, + // all pods will be sent to this extender. + // - If IgnoredByScheduler is set to true for a resource, kube-scheduler + // will skip checking the resource in predicates. + // +optional + // +listType=atomic + ManagedResources []ExtenderManagedResource `json:"managedResources,omitempty"` + // Ignorable specifies if the extender is ignorable, i.e. scheduling should not + // fail when the extender returns an error or is not reachable. + Ignorable bool `json:"ignorable,omitempty"` +} + +// ExtenderManagedResource describes the arguments of extended resources +// managed by an extender. +type ExtenderManagedResource struct { + // Name is the extended resource name. + Name string `json:"name"` + // IgnoredByScheduler indicates whether kube-scheduler should ignore this + // resource when applying predicates. + IgnoredByScheduler bool `json:"ignoredByScheduler,omitempty"` +} + +// ExtenderTLSConfig contains settings to enable TLS with extender +type ExtenderTLSConfig struct { + // Server should be accessed without verifying the TLS certificate. For testing only. + Insecure bool `json:"insecure,omitempty"` + // ServerName is passed to the server for SNI and is used in the client to check server + // certificates against. If ServerName is empty, the hostname used to contact the + // server is used. + ServerName string `json:"serverName,omitempty"` + + // Server requires TLS client certificate authentication + CertFile string `json:"certFile,omitempty"` + // Server requires TLS client certificate authentication + KeyFile string `json:"keyFile,omitempty"` + // Trusted root certificates for server + CAFile string `json:"caFile,omitempty"` + + // CertData holds PEM-encoded bytes (typically read from a client certificate file). + // CertData takes precedence over CertFile + // +listType=atomic + CertData []byte `json:"certData,omitempty"` + // KeyData holds PEM-encoded bytes (typically read from a client certificate key file). + // KeyData takes precedence over KeyFile + // +listType=atomic + KeyData []byte `json:"keyData,omitempty"` + // CAData holds PEM-encoded bytes (typically read from a root certificates bundle). + // CAData takes precedence over CAFile + // +listType=atomic + CAData []byte `json:"caData,omitempty"` +} diff --git a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/types_pluginargs.go b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/types_pluginargs.go new file mode 100644 index 00000000000..2698a47696f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/types_pluginargs.go @@ -0,0 +1,225 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// DefaultPreemptionArgs holds arguments used to configure the +// DefaultPreemption plugin. +type DefaultPreemptionArgs struct { + metav1.TypeMeta `json:",inline"` + + // MinCandidateNodesPercentage is the minimum number of candidates to + // shortlist when dry running preemption as a percentage of number of nodes. + // Must be in the range [0, 100]. Defaults to 10% of the cluster size if + // unspecified. + MinCandidateNodesPercentage *int32 `json:"minCandidateNodesPercentage,omitempty"` + // MinCandidateNodesAbsolute is the absolute minimum number of candidates to + // shortlist. The likely number of candidates enumerated for dry running + // preemption is given by the formula: + // numCandidates = max(numNodes * minCandidateNodesPercentage, minCandidateNodesAbsolute) + // We say "likely" because there are other factors such as PDB violations + // that play a role in the number of candidates shortlisted. Must be at least + // 0 nodes. Defaults to 100 nodes if unspecified. + MinCandidateNodesAbsolute *int32 `json:"minCandidateNodesAbsolute,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// InterPodAffinityArgs holds arguments used to configure the InterPodAffinity plugin. +type InterPodAffinityArgs struct { + metav1.TypeMeta `json:",inline"` + + // HardPodAffinityWeight is the scoring weight for existing pods with a + // matching hard affinity to the incoming pod. + HardPodAffinityWeight *int32 `json:"hardPodAffinityWeight,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NodeResourcesFitArgs holds arguments used to configure the NodeResourcesFit plugin. +type NodeResourcesFitArgs struct { + metav1.TypeMeta `json:",inline"` + + // IgnoredResources is the list of resources that NodeResources fit filter + // should ignore. This doesn't apply to scoring. + // +listType=atomic + IgnoredResources []string `json:"ignoredResources,omitempty"` + // IgnoredResourceGroups defines the list of resource groups that NodeResources fit filter should ignore. + // e.g. if group is ["example.com"], it will ignore all resource names that begin + // with "example.com", such as "example.com/aaa" and "example.com/bbb". + // A resource group name can't contain '/'. This doesn't apply to scoring. + // +listType=atomic + IgnoredResourceGroups []string `json:"ignoredResourceGroups,omitempty"` + + // ScoringStrategy selects the node resource scoring strategy. + // The default strategy is LeastAllocated with an equal "cpu" and "memory" weight. + ScoringStrategy *ScoringStrategy `json:"scoringStrategy,omitempty"` +} + +// PodTopologySpreadConstraintsDefaulting defines how to set default constraints +// for the PodTopologySpread plugin. +type PodTopologySpreadConstraintsDefaulting string + +const ( + // SystemDefaulting instructs to use the kubernetes defined default. + SystemDefaulting PodTopologySpreadConstraintsDefaulting = "System" + // ListDefaulting instructs to use the config provided default. + ListDefaulting PodTopologySpreadConstraintsDefaulting = "List" +) + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// PodTopologySpreadArgs holds arguments used to configure the PodTopologySpread plugin. +type PodTopologySpreadArgs struct { + metav1.TypeMeta `json:",inline"` + + // DefaultConstraints defines topology spread constraints to be applied to + // Pods that don't define any in `pod.spec.topologySpreadConstraints`. + // `.defaultConstraints[*].labelSelectors` must be empty, as they are + // deduced from the Pod's membership to Services, ReplicationControllers, + // ReplicaSets or StatefulSets. + // When not empty, .defaultingType must be "List". + // +optional + // +listType=atomic + DefaultConstraints []corev1.TopologySpreadConstraint `json:"defaultConstraints,omitempty"` + + // DefaultingType determines how .defaultConstraints are deduced. Can be one + // of "System" or "List". + // + // - "System": Use kubernetes defined constraints that spread Pods among + // Nodes and Zones. + // - "List": Use constraints defined in .defaultConstraints. + // + // Defaults to "System". + // +optional + DefaultingType PodTopologySpreadConstraintsDefaulting `json:"defaultingType,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NodeResourcesBalancedAllocationArgs holds arguments used to configure NodeResourcesBalancedAllocation plugin. +type NodeResourcesBalancedAllocationArgs struct { + metav1.TypeMeta `json:",inline"` + + // Resources to be managed, the default is "cpu" and "memory" if not specified. + // +listType=map + // +listMapKey=name + Resources []ResourceSpec `json:"resources,omitempty"` +} + +// UtilizationShapePoint represents single point of priority function shape. +type UtilizationShapePoint struct { + // Utilization (x axis). Valid values are 0 to 100. Fully utilized node maps to 100. + Utilization int32 `json:"utilization"` + // Score assigned to given utilization (y axis). Valid values are 0 to 10. + Score int32 `json:"score"` +} + +// ResourceSpec represents a single resource. +type ResourceSpec struct { + // Name of the resource. + Name string `json:"name"` + // Weight of the resource. + Weight int64 `json:"weight,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// VolumeBindingArgs holds arguments used to configure the VolumeBinding plugin. +type VolumeBindingArgs struct { + metav1.TypeMeta `json:",inline"` + + // BindTimeoutSeconds is the timeout in seconds in volume binding operation. + // Value must be non-negative integer. The value zero indicates no waiting. + // If this value is nil, the default value (600) will be used. + BindTimeoutSeconds *int64 `json:"bindTimeoutSeconds,omitempty"` + + // Shape specifies the points defining the score function shape, which is + // used to score nodes based on the utilization of statically provisioned + // PVs. The utilization is calculated by dividing the total requested + // storage of the pod by the total capacity of feasible PVs on each node. + // Each point contains utilization (ranges from 0 to 100) and its + // associated score (ranges from 0 to 10). You can turn the priority by + // specifying different scores for different utilization numbers. + // The default shape points are: + // 1) 0 for 0 utilization + // 2) 10 for 100 utilization + // All points must be sorted in increasing order by utilization. + // +featureGate=VolumeCapacityPriority + // +optional + // +listType=atomic + Shape []UtilizationShapePoint `json:"shape,omitempty"` +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// NodeAffinityArgs holds arguments to configure the NodeAffinity plugin. +type NodeAffinityArgs struct { + metav1.TypeMeta `json:",inline"` + + // AddedAffinity is applied to all Pods additionally to the NodeAffinity + // specified in the PodSpec. That is, Nodes need to satisfy AddedAffinity + // AND .spec.NodeAffinity. AddedAffinity is empty by default (all Nodes + // match). + // When AddedAffinity is used, some Pods with affinity requirements that match + // a specific Node (such as Daemonset Pods) might remain unschedulable. + // +optional + AddedAffinity *corev1.NodeAffinity `json:"addedAffinity,omitempty"` +} + +// ScoringStrategyType the type of scoring strategy used in NodeResourcesFit plugin. +type ScoringStrategyType string + +const ( + // LeastAllocated strategy prioritizes nodes with least allocated resources. + LeastAllocated ScoringStrategyType = "LeastAllocated" + // MostAllocated strategy prioritizes nodes with most allocated resources. + MostAllocated ScoringStrategyType = "MostAllocated" + // RequestedToCapacityRatio strategy allows specifying a custom shape function + // to score nodes based on the request to capacity ratio. + RequestedToCapacityRatio ScoringStrategyType = "RequestedToCapacityRatio" +) + +// ScoringStrategy define ScoringStrategyType for node resource plugin +type ScoringStrategy struct { + // Type selects which strategy to run. + Type ScoringStrategyType `json:"type,omitempty"` + + // Resources to consider when scoring. + // The default resource set includes "cpu" and "memory" with an equal weight. + // Allowed weights go from 1 to 100. + // Weight defaults to 1 if not specified or explicitly set to 0. + // +listType=map + // +listMapKey=topologyKey + Resources []ResourceSpec `json:"resources,omitempty"` + + // Arguments specific to RequestedToCapacityRatio strategy. + RequestedToCapacityRatio *RequestedToCapacityRatioParam `json:"requestedToCapacityRatio,omitempty"` +} + +// RequestedToCapacityRatioParam define RequestedToCapacityRatio parameters +type RequestedToCapacityRatioParam struct { + // Shape is a list of points defining the scoring function shape. + // +listType=atomic + Shape []UtilizationShapePoint `json:"shape,omitempty"` +} diff --git a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/zz_generated.deepcopy.go new file mode 100644 index 00000000000..0b5f11edc1e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/config/v1/zz_generated.deepcopy.go @@ -0,0 +1,603 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1 + +import ( + corev1 "k8s.io/api/core/v1" + runtime "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DefaultPreemptionArgs) DeepCopyInto(out *DefaultPreemptionArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.MinCandidateNodesPercentage != nil { + in, out := &in.MinCandidateNodesPercentage, &out.MinCandidateNodesPercentage + *out = new(int32) + **out = **in + } + if in.MinCandidateNodesAbsolute != nil { + in, out := &in.MinCandidateNodesAbsolute, &out.MinCandidateNodesAbsolute + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DefaultPreemptionArgs. +func (in *DefaultPreemptionArgs) DeepCopy() *DefaultPreemptionArgs { + if in == nil { + return nil + } + out := new(DefaultPreemptionArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *DefaultPreemptionArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Extender) DeepCopyInto(out *Extender) { + *out = *in + if in.TLSConfig != nil { + in, out := &in.TLSConfig, &out.TLSConfig + *out = new(ExtenderTLSConfig) + (*in).DeepCopyInto(*out) + } + out.HTTPTimeout = in.HTTPTimeout + if in.ManagedResources != nil { + in, out := &in.ManagedResources, &out.ManagedResources + *out = make([]ExtenderManagedResource, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Extender. +func (in *Extender) DeepCopy() *Extender { + if in == nil { + return nil + } + out := new(Extender) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExtenderManagedResource) DeepCopyInto(out *ExtenderManagedResource) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtenderManagedResource. +func (in *ExtenderManagedResource) DeepCopy() *ExtenderManagedResource { + if in == nil { + return nil + } + out := new(ExtenderManagedResource) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExtenderTLSConfig) DeepCopyInto(out *ExtenderTLSConfig) { + *out = *in + if in.CertData != nil { + in, out := &in.CertData, &out.CertData + *out = make([]byte, len(*in)) + copy(*out, *in) + } + if in.KeyData != nil { + in, out := &in.KeyData, &out.KeyData + *out = make([]byte, len(*in)) + copy(*out, *in) + } + if in.CAData != nil { + in, out := &in.CAData, &out.CAData + *out = make([]byte, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExtenderTLSConfig. +func (in *ExtenderTLSConfig) DeepCopy() *ExtenderTLSConfig { + if in == nil { + return nil + } + out := new(ExtenderTLSConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InterPodAffinityArgs) DeepCopyInto(out *InterPodAffinityArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.HardPodAffinityWeight != nil { + in, out := &in.HardPodAffinityWeight, &out.HardPodAffinityWeight + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InterPodAffinityArgs. +func (in *InterPodAffinityArgs) DeepCopy() *InterPodAffinityArgs { + if in == nil { + return nil + } + out := new(InterPodAffinityArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *InterPodAffinityArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeSchedulerConfiguration) DeepCopyInto(out *KubeSchedulerConfiguration) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Parallelism != nil { + in, out := &in.Parallelism, &out.Parallelism + *out = new(int32) + **out = **in + } + in.LeaderElection.DeepCopyInto(&out.LeaderElection) + out.ClientConnection = in.ClientConnection + in.DebuggingConfiguration.DeepCopyInto(&out.DebuggingConfiguration) + if in.PercentageOfNodesToScore != nil { + in, out := &in.PercentageOfNodesToScore, &out.PercentageOfNodesToScore + *out = new(int32) + **out = **in + } + if in.PodInitialBackoffSeconds != nil { + in, out := &in.PodInitialBackoffSeconds, &out.PodInitialBackoffSeconds + *out = new(int64) + **out = **in + } + if in.PodMaxBackoffSeconds != nil { + in, out := &in.PodMaxBackoffSeconds, &out.PodMaxBackoffSeconds + *out = new(int64) + **out = **in + } + if in.Profiles != nil { + in, out := &in.Profiles, &out.Profiles + *out = make([]KubeSchedulerProfile, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Extenders != nil { + in, out := &in.Extenders, &out.Extenders + *out = make([]Extender, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeSchedulerConfiguration. +func (in *KubeSchedulerConfiguration) DeepCopy() *KubeSchedulerConfiguration { + if in == nil { + return nil + } + out := new(KubeSchedulerConfiguration) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *KubeSchedulerConfiguration) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *KubeSchedulerProfile) DeepCopyInto(out *KubeSchedulerProfile) { + *out = *in + if in.SchedulerName != nil { + in, out := &in.SchedulerName, &out.SchedulerName + *out = new(string) + **out = **in + } + if in.Plugins != nil { + in, out := &in.Plugins, &out.Plugins + *out = new(Plugins) + (*in).DeepCopyInto(*out) + } + if in.PluginConfig != nil { + in, out := &in.PluginConfig, &out.PluginConfig + *out = make([]PluginConfig, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new KubeSchedulerProfile. +func (in *KubeSchedulerProfile) DeepCopy() *KubeSchedulerProfile { + if in == nil { + return nil + } + out := new(KubeSchedulerProfile) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeAffinityArgs) DeepCopyInto(out *NodeAffinityArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.AddedAffinity != nil { + in, out := &in.AddedAffinity, &out.AddedAffinity + *out = new(corev1.NodeAffinity) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeAffinityArgs. +func (in *NodeAffinityArgs) DeepCopy() *NodeAffinityArgs { + if in == nil { + return nil + } + out := new(NodeAffinityArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NodeAffinityArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeResourcesBalancedAllocationArgs) DeepCopyInto(out *NodeResourcesBalancedAllocationArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]ResourceSpec, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeResourcesBalancedAllocationArgs. +func (in *NodeResourcesBalancedAllocationArgs) DeepCopy() *NodeResourcesBalancedAllocationArgs { + if in == nil { + return nil + } + out := new(NodeResourcesBalancedAllocationArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NodeResourcesBalancedAllocationArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NodeResourcesFitArgs) DeepCopyInto(out *NodeResourcesFitArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.IgnoredResources != nil { + in, out := &in.IgnoredResources, &out.IgnoredResources + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.IgnoredResourceGroups != nil { + in, out := &in.IgnoredResourceGroups, &out.IgnoredResourceGroups + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.ScoringStrategy != nil { + in, out := &in.ScoringStrategy, &out.ScoringStrategy + *out = new(ScoringStrategy) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NodeResourcesFitArgs. +func (in *NodeResourcesFitArgs) DeepCopy() *NodeResourcesFitArgs { + if in == nil { + return nil + } + out := new(NodeResourcesFitArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *NodeResourcesFitArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Plugin) DeepCopyInto(out *Plugin) { + *out = *in + if in.Weight != nil { + in, out := &in.Weight, &out.Weight + *out = new(int32) + **out = **in + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Plugin. +func (in *Plugin) DeepCopy() *Plugin { + if in == nil { + return nil + } + out := new(Plugin) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PluginConfig) DeepCopyInto(out *PluginConfig) { + *out = *in + in.Args.DeepCopyInto(&out.Args) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginConfig. +func (in *PluginConfig) DeepCopy() *PluginConfig { + if in == nil { + return nil + } + out := new(PluginConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PluginSet) DeepCopyInto(out *PluginSet) { + *out = *in + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = make([]Plugin, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = make([]Plugin, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PluginSet. +func (in *PluginSet) DeepCopy() *PluginSet { + if in == nil { + return nil + } + out := new(PluginSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Plugins) DeepCopyInto(out *Plugins) { + *out = *in + in.QueueSort.DeepCopyInto(&out.QueueSort) + in.PreFilter.DeepCopyInto(&out.PreFilter) + in.Filter.DeepCopyInto(&out.Filter) + in.PostFilter.DeepCopyInto(&out.PostFilter) + in.PreScore.DeepCopyInto(&out.PreScore) + in.Score.DeepCopyInto(&out.Score) + in.Reserve.DeepCopyInto(&out.Reserve) + in.Permit.DeepCopyInto(&out.Permit) + in.PreBind.DeepCopyInto(&out.PreBind) + in.Bind.DeepCopyInto(&out.Bind) + in.PostBind.DeepCopyInto(&out.PostBind) + in.MultiPoint.DeepCopyInto(&out.MultiPoint) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Plugins. +func (in *Plugins) DeepCopy() *Plugins { + if in == nil { + return nil + } + out := new(Plugins) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodTopologySpreadArgs) DeepCopyInto(out *PodTopologySpreadArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.DefaultConstraints != nil { + in, out := &in.DefaultConstraints, &out.DefaultConstraints + *out = make([]corev1.TopologySpreadConstraint, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodTopologySpreadArgs. +func (in *PodTopologySpreadArgs) DeepCopy() *PodTopologySpreadArgs { + if in == nil { + return nil + } + out := new(PodTopologySpreadArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *PodTopologySpreadArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RequestedToCapacityRatioParam) DeepCopyInto(out *RequestedToCapacityRatioParam) { + *out = *in + if in.Shape != nil { + in, out := &in.Shape, &out.Shape + *out = make([]UtilizationShapePoint, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestedToCapacityRatioParam. +func (in *RequestedToCapacityRatioParam) DeepCopy() *RequestedToCapacityRatioParam { + if in == nil { + return nil + } + out := new(RequestedToCapacityRatioParam) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ResourceSpec) DeepCopyInto(out *ResourceSpec) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceSpec. +func (in *ResourceSpec) DeepCopy() *ResourceSpec { + if in == nil { + return nil + } + out := new(ResourceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ScoringStrategy) DeepCopyInto(out *ScoringStrategy) { + *out = *in + if in.Resources != nil { + in, out := &in.Resources, &out.Resources + *out = make([]ResourceSpec, len(*in)) + copy(*out, *in) + } + if in.RequestedToCapacityRatio != nil { + in, out := &in.RequestedToCapacityRatio, &out.RequestedToCapacityRatio + *out = new(RequestedToCapacityRatioParam) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScoringStrategy. +func (in *ScoringStrategy) DeepCopy() *ScoringStrategy { + if in == nil { + return nil + } + out := new(ScoringStrategy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UtilizationShapePoint) DeepCopyInto(out *UtilizationShapePoint) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UtilizationShapePoint. +func (in *UtilizationShapePoint) DeepCopy() *UtilizationShapePoint { + if in == nil { + return nil + } + out := new(UtilizationShapePoint) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *VolumeBindingArgs) DeepCopyInto(out *VolumeBindingArgs) { + *out = *in + out.TypeMeta = in.TypeMeta + if in.BindTimeoutSeconds != nil { + in, out := &in.BindTimeoutSeconds, &out.BindTimeoutSeconds + *out = new(int64) + **out = **in + } + if in.Shape != nil { + in, out := &in.Shape, &out.Shape + *out = make([]UtilizationShapePoint, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new VolumeBindingArgs. +func (in *VolumeBindingArgs) DeepCopy() *VolumeBindingArgs { + if in == nil { + return nil + } + out := new(VolumeBindingArgs) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *VolumeBindingArgs) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/extender/v1/types.go b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/extender/v1/types.go index e1f07c3dd7c..ebb4fd7e5dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kube-scheduler/extender/v1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kube-scheduler/extender/v1/types.go @@ -45,8 +45,9 @@ type ExtenderPreemptionArgs struct { } // Victims represents: -// pods: a group of pods expected to be preempted. -// numPDBViolations: the count of violations of PodDisruptionBudget +// +// pods: a group of pods expected to be preempted. +// numPDBViolations: the count of violations of PodDisruptionBudget type Victims struct { Pods []*v1.Pod NumPDBViolations int64 @@ -58,9 +59,10 @@ type MetaPod struct { } // MetaVictims represents: -// pods: a group of pods expected to be preempted. -// Only Pod identifiers will be sent and user are expect to get v1.Pod in their own way. -// numPDBViolations: the count of violations of PodDisruptionBudget +// +// pods: a group of pods expected to be preempted. +// Only Pod identifiers will be sent and user are expect to get v1.Pod in their own way. +// numPDBViolations: the count of violations of PodDisruptionBudget type MetaVictims struct { Pods []*MetaPod NumPDBViolations int64 diff --git a/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/types.go b/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/types.go index 16ecc805461..aa67206ee40 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/types.go @@ -20,6 +20,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" logsapi "k8s.io/component-base/logs/api/v1" + tracingapi "k8s.io/component-base/tracing/api/v1" ) // HairpinMode denotes how the kubelet should configure networking to handle @@ -664,7 +665,7 @@ type KubeletConfiguration struct { // Default: "" // +optional ProviderID string `json:"providerID,omitempty"` - // kernelMemcgNotification, if set, instructs the the kubelet to integrate with the + // kernelMemcgNotification, if set, instructs the kubelet to integrate with the // kernel memcg notification for determining if memory eviction thresholds are // exceeded rather than polling. // Default: false @@ -780,6 +781,22 @@ type KubeletConfiguration struct { // Default: true // +optional RegisterNode *bool `json:"registerNode,omitempty"` + // Tracing specifies the versioned configuration for OpenTelemetry tracing clients. + // See http://kep.k8s.io/2832 for more details. + // +featureGate=KubeletTracing + // +optional + Tracing *tracingapi.TracingConfiguration `json:"tracing,omitempty"` + + // LocalStorageCapacityIsolation enables local ephemeral storage isolation feature. The default setting is true. + // This feature allows users to set request/limit for container's ephemeral storage and manage it in a similar way + // as cpu and memory. It also allows setting sizeLimit for emptyDir volume, which will trigger pod eviction if disk + // usage from the volume exceeds the limit. + // This feature depends on the capability of detecting correct root file system disk usage. For certain systems, + // such as kind rootless, if this capability cannot be supported, the feature LocalStorageCapacityIsolation should be + // disabled. Once disabled, user should not set request/limit for container's ephemeral storage, or sizeLimit for emptyDir. + // Default: true + // +optional + LocalStorageCapacityIsolation *bool `json:"localStorageCapacityIsolation,omitempty"` } type KubeletAuthorizationMode string diff --git a/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/zz_generated.deepcopy.go index ccb8fbbafbd..63ae4e749c1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubelet/config/v1beta1/zz_generated.deepcopy.go @@ -25,6 +25,7 @@ import ( corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" + apiv1 "k8s.io/component-base/tracing/api/v1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -446,6 +447,16 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { *out = new(bool) **out = **in } + if in.Tracing != nil { + in, out := &in.Tracing, &out.Tracing + *out = new(apiv1.TracingConfiguration) + (*in).DeepCopyInto(*out) + } + if in.LocalStorageCapacityIsolation != nil { + in, out := &in.LocalStorageCapacityIsolation, &out.LocalStorageCapacityIsolation + *out = new(bool) + **out = **in + } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1/api.pb.go b/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1/api.pb.go index ced0bf57c50..4f183239ca4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1/api.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1/api.pb.go @@ -351,13 +351,14 @@ func (m *NUMANode) GetID() int64 { } // E.g: -// struct Device { -// ID: "GPU-fef8089b-4820-abfc-e83e-94318197576e", -// Health: "Healthy", -// Topology: -// Node: -// ID: 1 -//} +// +// struct Device { +// ID: "GPU-fef8089b-4820-abfc-e83e-94318197576e", +// Health: "Healthy", +// Topology: +// Node: +// ID: 1 +// } type Device struct { // A unique ID assigned by the device plugin used // to identify devices during the communication @@ -424,10 +425,10 @@ func (m *Device) GetTopology() *TopologyInfo { return nil } -// - PreStartContainer is expected to be called before each container start if indicated by plugin during registration phase. -// - PreStartContainer allows kubelet to pass reinitialized devices to containers. -// - PreStartContainer allows Device Plugin to run device specific operations on -// the Devices requested +// - PreStartContainer is expected to be called before each container start if indicated by plugin during registration phase. +// - PreStartContainer allows kubelet to pass reinitialized devices to containers. +// - PreStartContainer allows Device Plugin to run device specific operations on +// the Devices requested type PreStartContainerRequest struct { DevicesIDs []string `protobuf:"bytes,1,rep,name=devices_ids,json=devicesIds,proto3" json:"devices_ids,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` @@ -717,12 +718,12 @@ func (m *ContainerPreferredAllocationResponse) GetDeviceIDs() []string { return nil } -// - Allocate is expected to be called during pod creation since allocation -// failures for any container would result in pod startup failure. -// - Allocate allows kubelet to exposes additional artifacts in a pod's -// environment as directed by the plugin. -// - Allocate allows Device Plugin to run device specific operations on -// the Devices requested +// - Allocate is expected to be called during pod creation since allocation +// failures for any container would result in pod startup failure. +// - Allocate allows kubelet to exposes additional artifacts in a pod's +// environment as directed by the plugin. +// - Allocate allows Device Plugin to run device specific operations on +// the Devices requested type AllocateRequest struct { ContainerRequests []*ContainerAllocateRequest `protobuf:"bytes,1,rep,name=container_requests,json=containerRequests,proto3" json:"container_requests,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` diff --git a/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/pluginregistration/v1/api.pb.go b/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/pluginregistration/v1/api.pb.go index d478726ab25..a1aa7469e4a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/pluginregistration/v1/api.pb.go +++ b/cluster-autoscaler/vendor/k8s.io/kubelet/pkg/apis/pluginregistration/v1/api.pb.go @@ -18,16 +18,18 @@ limitations under the License. // source: api.proto /* - Package pluginregistration is a generated protocol buffer package. +Package pluginregistration is a generated protocol buffer package. - It is generated from these files: - api.proto +It is generated from these files: - It has these top-level messages: - PluginInfo - RegistrationStatus - RegistrationStatusResponse - InfoRequest + api.proto + +It has these top-level messages: + + PluginInfo + RegistrationStatus + RegistrationStatusResponse + InfoRequest */ package pluginregistration diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server.go index 82fed5143ac..7a5b0c861c5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kube-proxy/app/server.go @@ -172,7 +172,7 @@ func (o *Options) AddFlags(fs *pflag.FlagSet) { fs.Var(&utilflag.IPPortVar{Val: &o.config.MetricsBindAddress}, "metrics-bind-address", "The IP address with port for the metrics server to serve on (set to '0.0.0.0:10249' for all IPv4 interfaces and '[::]:10249' for all IPv6 interfaces). Set empty to disable. This parameter is ignored if a config file is specified by --config.") fs.BoolVar(&o.config.BindAddressHardFail, "bind-address-hard-fail", o.config.BindAddressHardFail, "If true kube-proxy will treat failure to bind to a port as fatal and exit") fs.Var(utilflag.PortRangeVar{Val: &o.config.PortRange}, "proxy-port-range", "Range of host ports (beginPort-endPort, single port or beginPort+offset, inclusive) that may be consumed in order to proxy service traffic. If (unspecified, 0, or 0-0) then ports will be randomly chosen.") - fs.Var(&o.config.Mode, "proxy-mode", "Which proxy mode to use: 'iptables' (Linux-only), 'ipvs' (Linux-only), 'kernelspace' (Windows-only), or 'userspace' (Linux/Windows, deprecated). The default value is 'iptables' on Linux and 'userspace' on Windows."+ + fs.Var(&o.config.Mode, "proxy-mode", "Which proxy mode to use: 'iptables' (Linux-only), 'ipvs' (Linux-only), 'kernelspace' (Windows-only), or 'userspace' (Linux/Windows, deprecated). The default value is 'iptables' on Linux and 'userspace' on Windows(will be 'kernelspace' in a future release)."+ "This parameter is ignored if a config file is specified by --config.") fs.Var(cliflag.NewMapStringBool(&o.config.FeatureGates), "feature-gates", "A set of key=value pairs that describe feature gates for alpha/experimental features. "+ "Options are:\n"+strings.Join(utilfeature.DefaultFeatureGate.KnownFeatures(), "\n")+ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go index 19538c1246c..fc135fdca90 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/container_runtime.go @@ -24,7 +24,7 @@ import ( const ( // When these values are updated, also update test/utils/image/manifest.go defaultPodSandboxImageName = "registry.k8s.io/pause" - defaultPodSandboxImageVersion = "3.7" + defaultPodSandboxImageVersion = "3.8" ) var ( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go index cf88e90a7b7..a2353c4af3a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/options/options.go @@ -26,6 +26,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apimachinery/pkg/util/validation" utilfeature "k8s.io/apiserver/pkg/util/feature" cliflag "k8s.io/component-base/cli/flag" logsapi "k8s.io/component-base/logs/api/v1" @@ -45,9 +46,10 @@ const defaultRootDir = "/var/lib/kubelet" // KubeletFlags contains configuration flags for the Kubelet. // A configuration field should go in KubeletFlags instead of KubeletConfiguration if any of these are true: -// - its value will never, or cannot safely be changed during the lifetime of a node, or -// - its value cannot be safely shared between nodes at the same time (e.g. a hostname); -// KubeletConfiguration is intended to be shared between nodes. +// - its value will never, or cannot safely be changed during the lifetime of a node, or +// - its value cannot be safely shared between nodes at the same time (e.g. a hostname); +// KubeletConfiguration is intended to be shared between nodes. +// // In general, please try to avoid adding flags or configuration fields, // we already have a confusingly large amount of them. type KubeletFlags struct { @@ -159,14 +161,29 @@ func NewKubeletFlags() *KubeletFlags { // ValidateKubeletFlags validates Kubelet's configuration flags and returns an error if they are invalid. func ValidateKubeletFlags(f *KubeletFlags) error { unknownLabels := sets.NewString() - for k := range f.NodeLabels { + invalidLabelErrs := make(map[string][]string) + for k, v := range f.NodeLabels { if isKubernetesLabel(k) && !kubeletapis.IsKubeletLabel(k) { unknownLabels.Insert(k) } + + if errs := validation.IsQualifiedName(k); len(errs) > 0 { + invalidLabelErrs[k] = append(invalidLabelErrs[k], errs...) + } + if errs := validation.IsValidLabelValue(v); len(errs) > 0 { + invalidLabelErrs[v] = append(invalidLabelErrs[v], errs...) + } } if len(unknownLabels) > 0 { return fmt.Errorf("unknown 'kubernetes.io' or 'k8s.io' labels specified with --node-labels: %v\n--node-labels in the 'kubernetes.io' namespace must begin with an allowed prefix (%s) or be in the specifically allowed set (%s)", unknownLabels.List(), strings.Join(kubeletapis.KubeletLabelNamespaces(), ", "), strings.Join(kubeletapis.KubeletLabels(), ", ")) } + if len(invalidLabelErrs) > 0 { + labelErrs := []string{} + for k, v := range invalidLabelErrs { + labelErrs = append(labelErrs, fmt.Sprintf("'%s' - %s", k, strings.Join(v, ", "))) + } + return fmt.Errorf("invalid node labels: %s", strings.Join(labelErrs, "; ")) + } if f.SeccompDefault && !utilfeature.DefaultFeatureGate.Enabled(features.SeccompDefault) { return fmt.Errorf("the SeccompDefault feature gate must be enabled in order to use the --seccomp-default flag") @@ -307,7 +324,7 @@ func (f *KubeletFlags) AddFlags(mainfs *pflag.FlagSet) { fs.Var(&bindableNodeLabels, "node-labels", fmt.Sprintf(" Labels to add when registering the node in the cluster. Labels must be key=value pairs separated by ','. Labels in the 'kubernetes.io' namespace must begin with an allowed prefix (%s) or be in the specifically allowed set (%s)", strings.Join(kubeletapis.KubeletLabelNamespaces(), ", "), strings.Join(kubeletapis.KubeletLabels(), ", "))) fs.StringVar(&f.LockFilePath, "lock-file", f.LockFilePath, " The path to file for kubelet to use as a lock file.") fs.BoolVar(&f.ExitOnLockContention, "exit-on-lock-contention", f.ExitOnLockContention, "Whether kubelet should exit upon lock-file contention.") - fs.BoolVar(&f.SeccompDefault, "seccomp-default", f.SeccompDefault, " Enable the use of `RuntimeDefault` as the default seccomp profile for all workloads. The SeccompDefault feature gate must be enabled to allow this flag, which is disabled per default.") + fs.BoolVar(&f.SeccompDefault, "seccomp-default", f.SeccompDefault, " Enable the use of `RuntimeDefault` as the default seccomp profile for all workloads. The SeccompDefault feature gate must be enabled to allow this flag, which is disabled per default.") // DEPRECATED FLAGS fs.DurationVar(&f.MinimumGCAge.Duration, "minimum-container-ttl-duration", f.MinimumGCAge.Duration, "Minimum age for a finished container before it is garbage collected. Examples: '300ms', '10s' or '2h45m'") @@ -475,6 +492,7 @@ func AddKubeletConfigFlags(mainfs *pflag.FlagSet, c *kubeletconfig.KubeletConfig fs.Int32Var(&c.NodeStatusMaxImages, "node-status-max-images", c.NodeStatusMaxImages, "The maximum number of images to report in Node.Status.Images. If -1 is specified, no cap will be applied.") fs.BoolVar(&c.KernelMemcgNotification, "kernel-memcg-notification", c.KernelMemcgNotification, "If enabled, the kubelet will integrate with the kernel memcg notification to determine if memory eviction thresholds are crossed rather than polling.") + fs.BoolVar(&c.LocalStorageCapacityIsolation, "local-storage-capacity-isolation", c.LocalStorageCapacityIsolation, "If true, local ephemeral storage isolation is enabled. Otherwise, local storage isolation feature will be disabled") // Flags intended for testing, not recommended used in production environments. fs.Int64Var(&c.MaxOpenFiles, "max-open-files", c.MaxOpenFiles, "Number of files that can be opened by Kubelet process.") diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go index e13d1bc7173..e05a21ef14d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/plugins.go @@ -30,7 +30,6 @@ import ( "k8s.io/kubernetes/pkg/volume/emptydir" "k8s.io/kubernetes/pkg/volume/fc" "k8s.io/kubernetes/pkg/volume/flexvolume" - "k8s.io/kubernetes/pkg/volume/flocker" "k8s.io/kubernetes/pkg/volume/git_repo" "k8s.io/kubernetes/pkg/volume/glusterfs" "k8s.io/kubernetes/pkg/volume/hostpath" @@ -38,9 +37,7 @@ import ( "k8s.io/kubernetes/pkg/volume/local" "k8s.io/kubernetes/pkg/volume/nfs" "k8s.io/kubernetes/pkg/volume/projected" - "k8s.io/kubernetes/pkg/volume/quobyte" "k8s.io/kubernetes/pkg/volume/secret" - "k8s.io/kubernetes/pkg/volume/storageos" // Cloud providers _ "k8s.io/kubernetes/pkg/cloudprovider/providers" @@ -68,15 +65,12 @@ func ProbeVolumePlugins(featureGate featuregate.FeatureGate) ([]volume.VolumePlu allPlugins = append(allPlugins, secret.ProbeVolumePlugins()...) allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...) allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...) - allPlugins = append(allPlugins, quobyte.ProbeVolumePlugins()...) allPlugins = append(allPlugins, cephfs.ProbeVolumePlugins()...) allPlugins = append(allPlugins, downwardapi.ProbeVolumePlugins()...) allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...) - allPlugins = append(allPlugins, flocker.ProbeVolumePlugins()...) allPlugins = append(allPlugins, configmap.ProbeVolumePlugins()...) allPlugins = append(allPlugins, projected.ProbeVolumePlugins()...) allPlugins = append(allPlugins, local.ProbeVolumePlugins()...) - allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...) allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...) return allPlugins, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go index 6d064326ec7..c8a67942b17 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/cmd/kubelet/app/server.go @@ -39,9 +39,12 @@ import ( "k8s.io/mount-utils" cadvisorapi "github.com/google/cadvisor/info/v1" + "go.opentelemetry.io/otel/exporters/otlp/otlpgrpc" + otelsdkresource "go.opentelemetry.io/otel/sdk/resource" + "go.opentelemetry.io/otel/semconv" + oteltrace "go.opentelemetry.io/otel/trace" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" utilnet "k8s.io/apimachinery/pkg/util/net" @@ -69,6 +72,7 @@ import ( logsapi "k8s.io/component-base/logs/api/v1" "k8s.io/component-base/metrics" "k8s.io/component-base/metrics/legacyregistry" + tracing "k8s.io/component-base/tracing" "k8s.io/component-base/version" "k8s.io/component-base/version/verflag" kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1" @@ -374,6 +378,13 @@ func UnsecuredDependencies(s *options.KubeletServer, featureGate featuregate.Fea if err != nil { return nil, err } + tp := oteltrace.NewNoopTracerProvider() + if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) { + tp, err = newTracerProvider(s) + if err != nil { + return nil, err + } + } return &kubelet.Dependencies{ Auth: nil, // default does not enforce auth[nz] CAdvisorInterface: nil, // cadvisor.New launches background processes (bg http.ListenAndServe, and some bg cleaners), not set here @@ -382,6 +393,7 @@ func UnsecuredDependencies(s *options.KubeletServer, featureGate featuregate.Fea KubeClient: nil, HeartbeatClient: nil, EventClient: nil, + TracerProvider: tp, HostUtil: hu, Mounter: mounter, Subpather: subpather, @@ -564,7 +576,7 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend klog.InfoS("Standalone mode, no API client") case kubeDeps.KubeClient == nil, kubeDeps.EventClient == nil, kubeDeps.HeartbeatClient == nil: - clientConfig, onHeartbeatFailure, err := buildKubeletClientConfig(ctx, s, nodeName) + clientConfig, onHeartbeatFailure, err := buildKubeletClientConfig(ctx, s, kubeDeps.TracerProvider, nodeName) if err != nil { return err } @@ -622,9 +634,7 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend cgroupRoots = append(cgroupRoots, kubeletCgroup) } - if err != nil { - klog.InfoS("Failed to get the container runtime's cgroup. Runtime system container metrics may be missing.", "err", err) - } else if s.RuntimeCgroups != "" { + if s.RuntimeCgroups != "" { // RuntimeCgroups is optional, so ignore if it isn't specified cgroupRoots = append(cgroupRoots, s.RuntimeCgroups) } @@ -636,7 +646,7 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend if kubeDeps.CAdvisorInterface == nil { imageFsInfoProvider := cadvisor.NewImageFsInfoProvider(s.RemoteRuntimeEndpoint) - kubeDeps.CAdvisorInterface, err = cadvisor.New(imageFsInfoProvider, s.RootDirectory, cgroupRoots, cadvisor.UsingLegacyCadvisorStats(s.RemoteRuntimeEndpoint)) + kubeDeps.CAdvisorInterface, err = cadvisor.New(imageFsInfoProvider, s.RootDirectory, cgroupRoots, cadvisor.UsingLegacyCadvisorStats(s.RemoteRuntimeEndpoint), s.LocalStorageCapacityIsolation) if err != nil { return err } @@ -793,7 +803,7 @@ func run(ctx context.Context, s *options.KubeletServer, kubeDeps *kubelet.Depend // buildKubeletClientConfig constructs the appropriate client config for the kubelet depending on whether // bootstrapping is enabled or client certificate rotation is enabled. -func buildKubeletClientConfig(ctx context.Context, s *options.KubeletServer, nodeName types.NodeName) (*restclient.Config, func(), error) { +func buildKubeletClientConfig(ctx context.Context, s *options.KubeletServer, tp oteltrace.TracerProvider, nodeName types.NodeName) (*restclient.Config, func(), error) { if s.RotateCertificates { // Rules for client rotation and the handling of kube config files: // @@ -908,6 +918,9 @@ func buildKubeletClientConfig(ctx context.Context, s *options.KubeletServer, nod utilnet.CloseIdleConnectionsFor(clientConfig.Transport) } } + if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) { + clientConfig.Wrap(tracing.WrapperFor(tp)) + } return clientConfig, onHeartbeatFailure, nil } @@ -1075,9 +1088,11 @@ func setContentTypeForClient(cfg *restclient.Config, contentType string) { } // RunKubelet is responsible for setting up and running a kubelet. It is used in three different applications: -// 1 Integration tests -// 2 Kubelet binary -// 3 Standalone 'kubernetes' binary +// +// 1 Integration tests +// 2 Kubelet binary +// 3 Standalone 'kubernetes' binary +// // Eventually, #2 will be replaced with instances of #3 func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, runOnce bool) error { hostname, err := nodeutil.GetHostname(kubeServer.HostnameOverride) @@ -1128,35 +1143,12 @@ func RunKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencie return fmt.Errorf("the SeccompDefault feature gate must be enabled in order to use the SeccompDefault configuration") } - k, err := createAndInitKubelet(&kubeServer.KubeletConfiguration, + k, err := createAndInitKubelet(kubeServer, kubeDeps, - &kubeServer.ContainerRuntimeOptions, hostname, hostnameOverridden, nodeName, - nodeIPs, - kubeServer.ProviderID, - kubeServer.CloudProvider, - kubeServer.CertDirectory, - kubeServer.RootDirectory, - kubeServer.ImageCredentialProviderConfigFile, - kubeServer.ImageCredentialProviderBinDir, - kubeServer.RegisterNode, - kubeServer.RegisterWithTaints, - kubeServer.AllowedUnsafeSysctls, - kubeServer.ExperimentalMounterPath, - kubeServer.KernelMemcgNotification, - kubeServer.ExperimentalNodeAllocatableIgnoreEvictionThreshold, - kubeServer.MinimumGCAge, - kubeServer.MaxPerPodContainerCount, - kubeServer.MaxContainerCount, - kubeServer.MasterServiceNamespace, - kubeServer.RegisterSchedulable, - kubeServer.KeepTerminatedPodVolumes, - kubeServer.NodeLabels, - kubeServer.NodeStatusMaxImages, - kubeServer.KubeletFlags.SeccompDefault || kubeServer.KubeletConfiguration.SeccompDefault, - ) + nodeIPs) if err != nil { return fmt.Errorf("failed to create kubelet: %w", err) } @@ -1191,7 +1183,7 @@ func startKubelet(k kubelet.Bootstrap, podCfg *config.PodConfig, kubeCfg *kubele // start the kubelet server if enableServer { - go k.ListenAndServe(kubeCfg, kubeDeps.TLSOptions, kubeDeps.Auth) + go k.ListenAndServe(kubeCfg, kubeDeps.TLSOptions, kubeDeps.Auth, kubeDeps.TracerProvider) } if kubeCfg.ReadOnlyPort > 0 { go k.ListenAndServeReadOnly(netutils.ParseIPSloppy(kubeCfg.Address), uint(kubeCfg.ReadOnlyPort)) @@ -1201,67 +1193,43 @@ func startKubelet(k kubelet.Bootstrap, podCfg *config.PodConfig, kubeCfg *kubele } } -func createAndInitKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, +func createAndInitKubelet(kubeServer *options.KubeletServer, kubeDeps *kubelet.Dependencies, - crOptions *config.ContainerRuntimeOptions, hostname string, hostnameOverridden bool, nodeName types.NodeName, - nodeIPs []net.IP, - providerID string, - cloudProvider string, - certDirectory string, - rootDirectory string, - imageCredentialProviderConfigFile string, - imageCredentialProviderBinDir string, - registerNode bool, - registerWithTaints []v1.Taint, - allowedUnsafeSysctls []string, - experimentalMounterPath string, - kernelMemcgNotification bool, - experimentalNodeAllocatableIgnoreEvictionThreshold bool, - minimumGCAge metav1.Duration, - maxPerPodContainerCount int32, - maxContainerCount int32, - masterServiceNamespace string, - registerSchedulable bool, - keepTerminatedPodVolumes bool, - nodeLabels map[string]string, - nodeStatusMaxImages int32, - seccompDefault bool, -) (k kubelet.Bootstrap, err error) { + nodeIPs []net.IP) (k kubelet.Bootstrap, err error) { // TODO: block until all sources have delivered at least one update to the channel, or break the sync loop // up into "per source" synchronizations - k, err = kubelet.NewMainKubelet(kubeCfg, + k, err = kubelet.NewMainKubelet(&kubeServer.KubeletConfiguration, kubeDeps, - crOptions, + &kubeServer.ContainerRuntimeOptions, hostname, hostnameOverridden, nodeName, nodeIPs, - providerID, - cloudProvider, - certDirectory, - rootDirectory, - imageCredentialProviderConfigFile, - imageCredentialProviderBinDir, - registerNode, - registerWithTaints, - allowedUnsafeSysctls, - experimentalMounterPath, - kernelMemcgNotification, - experimentalNodeAllocatableIgnoreEvictionThreshold, - minimumGCAge, - maxPerPodContainerCount, - maxContainerCount, - masterServiceNamespace, - registerSchedulable, - keepTerminatedPodVolumes, - nodeLabels, - nodeStatusMaxImages, - seccompDefault, - ) + kubeServer.ProviderID, + kubeServer.CloudProvider, + kubeServer.CertDirectory, + kubeServer.RootDirectory, + kubeServer.ImageCredentialProviderConfigFile, + kubeServer.ImageCredentialProviderBinDir, + kubeServer.RegisterNode, + kubeServer.RegisterWithTaints, + kubeServer.AllowedUnsafeSysctls, + kubeServer.ExperimentalMounterPath, + kubeServer.KernelMemcgNotification, + kubeServer.ExperimentalNodeAllocatableIgnoreEvictionThreshold, + kubeServer.MinimumGCAge, + kubeServer.MaxPerPodContainerCount, + kubeServer.MaxContainerCount, + kubeServer.MasterServiceNamespace, + kubeServer.RegisterSchedulable, + kubeServer.KeepTerminatedPodVolumes, + kubeServer.NodeLabels, + kubeServer.NodeStatusMaxImages, + kubeServer.KubeletFlags.SeccompDefault || kubeServer.KubeletConfiguration.SeccompDefault) if err != nil { return nil, err } @@ -1298,3 +1266,24 @@ func parseResourceList(m map[string]string) (v1.ResourceList, error) { } return rl, nil } + +func newTracerProvider(s *options.KubeletServer) (oteltrace.TracerProvider, error) { + if s.KubeletConfiguration.Tracing == nil { + return oteltrace.NewNoopTracerProvider(), nil + } + hostname, err := nodeutil.GetHostname(s.HostnameOverride) + if err != nil { + return nil, fmt.Errorf("could not determine hostname for tracer provider: %v", err) + } + resourceOpts := []otelsdkresource.Option{ + otelsdkresource.WithAttributes( + semconv.ServiceNameKey.String(componentKubelet), + semconv.HostNameKey.String(hostname), + ), + } + tp, err := tracing.NewProvider(context.Background(), s.KubeletConfiguration.Tracing, []otlpgrpc.Option{}, resourceOpts) + if err != nil { + return nil, fmt.Errorf("could not configure tracer provider: %v", err) + } + return tp, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/util.go index 8bfc21a67f4..8cefc94641e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/pod/util.go @@ -23,8 +23,6 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/features" ) // FindPort locates the container port for the given pod and portName. If the @@ -68,11 +66,7 @@ const AllContainers ContainerType = (InitContainers | Containers | EphemeralCont // AllFeatureEnabledContainers returns a ContainerType mask which includes all container // types except for the ones guarded by feature gate. func AllFeatureEnabledContainers() ContainerType { - containerType := AllContainers - if !utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - containerType &= ^EphemeralContainers - } - return containerType + return AllContainers } // ContainerVisitor is called with each container spec, and returns true diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/helpers.go index 707cfc2242a..904eb144166 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/resource/helpers.go @@ -24,8 +24,6 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/features" ) // PodRequestsAndLimits returns a dictionary of all defined resources summed up for all @@ -131,11 +129,6 @@ func GetResourceRequestQuantity(pod *v1.Pod, resourceName v1.ResourceName) resou requestQuantity = resource.Quantity{Format: resource.DecimalSI} } - if resourceName == v1.ResourceEphemeralStorage && !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { - // if the local storage capacity isolation feature gate is disabled, pods request 0 disk - return requestQuantity - } - for _, container := range pod.Spec.Containers { if rQuantity, ok := container.Resources.Requests[resourceName]; ok { requestQuantity.Add(rQuantity) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/util.go index 928c82c34f6..a88ead0d1e1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/api/v1/service/util.go @@ -91,15 +91,3 @@ func NeedsHealthCheck(service *v1.Service) bool { } return ExternalPolicyLocal(service) } - -// GetServiceHealthCheckPathPort returns the path and nodePort programmed into the Cloud LB Health Check -func GetServiceHealthCheckPathPort(service *v1.Service) (string, int32) { - if !NeedsHealthCheck(service) { - return "", 0 - } - port := service.Spec.HealthCheckNodePort - if port == 0 { - return "", 0 - } - return "/healthz", port -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/types.go index 771b2ef23c8..24f78a3af7a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/types.go @@ -27,8 +27,9 @@ import ( // StatefulSet represents a set of pods with consistent identities. // Identities are defined as: -// - Network: A single stable DNS and hostname. -// - Storage: As many VolumeClaims as requested. +// - Network: A single stable DNS and hostname. +// - Storage: As many VolumeClaims as requested. +// // The StatefulSet guarantees that a given network identity will always // map to the same storage identity. type StatefulSet struct { @@ -206,7 +207,6 @@ type StatefulSetSpec struct { // Minimum number of seconds for which a newly created pod should be ready // without any of its container crashing for it to be considered available. // Defaults to 0 (pod will be considered available as soon as it is ready) - // This is an alpha field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional MinReadySeconds int32 @@ -256,7 +256,6 @@ type StatefulSetStatus struct { Conditions []StatefulSetCondition // Total number of available pods (ready for at least minReadySeconds) targeted by this statefulset. - // This is a beta field and requires enabling StatefulSetMinReadySeconds feature gate. // +optional AvailableReplicas int32 } @@ -627,7 +626,6 @@ type RollingUpdateDaemonSet struct { // daemonset on any given node can double if the readiness check fails, and // so resource intensive daemonsets should take into account that they may // cause evictions during disruption. - // This is beta field and enabled/disabled by DaemonSetUpdateSurge feature gate. // +optional MaxSurge intstr.IntOrString } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/validation/validation.go index 7429847c41f..89e644e07ce 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/apps/validation/validation.go @@ -28,11 +28,9 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation/field" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/kubernetes/pkg/apis/apps" api "k8s.io/kubernetes/pkg/apis/core" apivalidation "k8s.io/kubernetes/pkg/apis/core/validation" - "k8s.io/kubernetes/pkg/features" ) // ValidateStatefulSetName can be used to check whether the given StatefulSet name is valid. @@ -129,9 +127,8 @@ func ValidateStatefulSetSpec(spec *apps.StatefulSetSpec, fldPath *field.Path, op allErrs = append(allErrs, ValidatePersistentVolumeClaimRetentionPolicy(spec.PersistentVolumeClaimRetentionPolicy, fldPath.Child("persistentVolumeClaimRetentionPolicy"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(spec.Replicas), fldPath.Child("replicas"))...) - if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetMinReadySeconds) { - allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(spec.MinReadySeconds), fldPath.Child("minReadySeconds"))...) - } + allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(spec.MinReadySeconds), fldPath.Child("minReadySeconds"))...) + if spec.Selector == nil { allErrs = append(allErrs, field.Required(fldPath.Child("selector"), "")) } else { @@ -175,19 +172,14 @@ func ValidateStatefulSetUpdate(statefulSet, oldStatefulSet *apps.StatefulSet, op // statefulset updates aren't super common and general updates are likely to be touching spec, so we'll do this // deep copy right away. This avoids mutating our inputs newStatefulSetClone := statefulSet.DeepCopy() - newStatefulSetClone.Spec.Replicas = oldStatefulSet.Spec.Replicas // +k8s:verify-mutation:reason=clone - newStatefulSetClone.Spec.Template = oldStatefulSet.Spec.Template // +k8s:verify-mutation:reason=clone - newStatefulSetClone.Spec.UpdateStrategy = oldStatefulSet.Spec.UpdateStrategy // +k8s:verify-mutation:reason=clone - if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetMinReadySeconds) { - newStatefulSetClone.Spec.MinReadySeconds = oldStatefulSet.Spec.MinReadySeconds // +k8s:verify-mutation:reason=clone - } + newStatefulSetClone.Spec.Replicas = oldStatefulSet.Spec.Replicas // +k8s:verify-mutation:reason=clone + newStatefulSetClone.Spec.Template = oldStatefulSet.Spec.Template // +k8s:verify-mutation:reason=clone + newStatefulSetClone.Spec.UpdateStrategy = oldStatefulSet.Spec.UpdateStrategy // +k8s:verify-mutation:reason=clone + newStatefulSetClone.Spec.MinReadySeconds = oldStatefulSet.Spec.MinReadySeconds // +k8s:verify-mutation:reason=clone + newStatefulSetClone.Spec.PersistentVolumeClaimRetentionPolicy = oldStatefulSet.Spec.PersistentVolumeClaimRetentionPolicy // +k8s:verify-mutation:reason=clone if !apiequality.Semantic.DeepEqual(newStatefulSetClone.Spec, oldStatefulSet.Spec) { - if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetMinReadySeconds) { - allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden")) - } else { - allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy' and 'persistentVolumeClaimRetentionPolicy' are forbidden")) - } + allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbidden")) } return allErrs @@ -201,9 +193,7 @@ func ValidateStatefulSetStatus(status *apps.StatefulSetStatus, fieldPath *field. allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.ReadyReplicas), fieldPath.Child("readyReplicas"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.CurrentReplicas), fieldPath.Child("currentReplicas"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UpdatedReplicas), fieldPath.Child("updatedReplicas"))...) - if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetMinReadySeconds) { - allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.AvailableReplicas), fieldPath.Child("availableReplicas"))...) - } + allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.AvailableReplicas), fieldPath.Child("availableReplicas"))...) if status.ObservedGeneration != nil { allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(*status.ObservedGeneration), fieldPath.Child("observedGeneration"))...) } @@ -221,15 +211,12 @@ func ValidateStatefulSetStatus(status *apps.StatefulSetStatus, fieldPath *field. if status.UpdatedReplicas > status.Replicas { allErrs = append(allErrs, field.Invalid(fieldPath.Child("updatedReplicas"), status.UpdatedReplicas, msg)) } - if utilfeature.DefaultFeatureGate.Enabled(features.StatefulSetMinReadySeconds) { - if status.AvailableReplicas > status.Replicas { - allErrs = append(allErrs, field.Invalid(fieldPath.Child("availableReplicas"), status.AvailableReplicas, msg)) - } - if status.AvailableReplicas > status.ReadyReplicas { - allErrs = append(allErrs, field.Invalid(fieldPath.Child("availableReplicas"), status.AvailableReplicas, "cannot be greater than readyReplicas")) - } + if status.AvailableReplicas > status.Replicas { + allErrs = append(allErrs, field.Invalid(fieldPath.Child("availableReplicas"), status.AvailableReplicas, msg)) + } + if status.AvailableReplicas > status.ReadyReplicas { + allErrs = append(allErrs, field.Invalid(fieldPath.Child("availableReplicas"), status.AvailableReplicas, "cannot be greater than status.readyReplicas")) } - return allErrs } @@ -384,34 +371,25 @@ func ValidateDaemonSetSpec(spec *apps.DaemonSetSpec, fldPath *field.Path, opts a // ValidateRollingUpdateDaemonSet validates a given RollingUpdateDaemonSet. func ValidateRollingUpdateDaemonSet(rollingUpdate *apps.RollingUpdateDaemonSet, fldPath *field.Path) field.ErrorList { var allErrs field.ErrorList - if utilfeature.DefaultFeatureGate.Enabled(features.DaemonSetUpdateSurge) { - // Validate both fields are positive ints or have a percentage value - allErrs = append(allErrs, ValidatePositiveIntOrPercent(rollingUpdate.MaxUnavailable, fldPath.Child("maxUnavailable"))...) - allErrs = append(allErrs, ValidatePositiveIntOrPercent(rollingUpdate.MaxSurge, fldPath.Child("maxSurge"))...) - - // Validate that MaxUnavailable and MaxSurge are not more than 100%. - allErrs = append(allErrs, IsNotMoreThan100Percent(rollingUpdate.MaxUnavailable, fldPath.Child("maxUnavailable"))...) - allErrs = append(allErrs, IsNotMoreThan100Percent(rollingUpdate.MaxSurge, fldPath.Child("maxSurge"))...) - - // Validate exactly one of MaxSurge or MaxUnavailable is non-zero - hasUnavailable := getIntOrPercentValue(rollingUpdate.MaxUnavailable) != 0 - hasSurge := getIntOrPercentValue(rollingUpdate.MaxSurge) != 0 - switch { - case hasUnavailable && hasSurge: - allErrs = append(allErrs, field.Invalid(fldPath.Child("maxSurge"), rollingUpdate.MaxSurge, "may not be set when maxUnavailable is non-zero")) - case !hasUnavailable && !hasSurge: - allErrs = append(allErrs, field.Required(fldPath.Child("maxUnavailable"), "cannot be 0 when maxSurge is 0")) - } - } else { - allErrs = append(allErrs, ValidatePositiveIntOrPercent(rollingUpdate.MaxUnavailable, fldPath.Child("maxUnavailable"))...) - if getIntOrPercentValue(rollingUpdate.MaxUnavailable) == 0 { - // MaxUnavailable cannot be 0. - allErrs = append(allErrs, field.Invalid(fldPath.Child("maxUnavailable"), rollingUpdate.MaxUnavailable, "cannot be 0")) - } - // Validate that MaxUnavailable is not more than 100%. - allErrs = append(allErrs, IsNotMoreThan100Percent(rollingUpdate.MaxUnavailable, fldPath.Child("maxUnavailable"))...) + // Validate both fields are positive ints or have a percentage value + allErrs = append(allErrs, ValidatePositiveIntOrPercent(rollingUpdate.MaxUnavailable, fldPath.Child("maxUnavailable"))...) + allErrs = append(allErrs, ValidatePositiveIntOrPercent(rollingUpdate.MaxSurge, fldPath.Child("maxSurge"))...) + + // Validate that MaxUnavailable and MaxSurge are not more than 100%. + allErrs = append(allErrs, IsNotMoreThan100Percent(rollingUpdate.MaxUnavailable, fldPath.Child("maxUnavailable"))...) + allErrs = append(allErrs, IsNotMoreThan100Percent(rollingUpdate.MaxSurge, fldPath.Child("maxSurge"))...) + + // Validate exactly one of MaxSurge or MaxUnavailable is non-zero + hasUnavailable := getIntOrPercentValue(rollingUpdate.MaxUnavailable) != 0 + hasSurge := getIntOrPercentValue(rollingUpdate.MaxSurge) != 0 + switch { + case hasUnavailable && hasSurge: + allErrs = append(allErrs, field.Invalid(fldPath.Child("maxSurge"), rollingUpdate.MaxSurge, "may not be set when maxUnavailable is non-zero")) + case !hasUnavailable && !hasSurge: + allErrs = append(allErrs, field.Required(fldPath.Child("maxUnavailable"), "cannot be 0 when maxSurge is 0")) } + return allErrs } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/helpers.go index 632c1983318..f66a12f4def 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/autoscaling/helpers.go @@ -21,16 +21,16 @@ package autoscaling // It should always be called when converting internal -> external versions, prior // to setting any of the custom annotations: // -// annotations, copiedAnnotations := DropRoundTripHorizontalPodAutoscalerAnnotations(externalObj.Annotations) -// externalObj.Annotations = annotations +// annotations, copiedAnnotations := DropRoundTripHorizontalPodAutoscalerAnnotations(externalObj.Annotations) +// externalObj.Annotations = annotations // -// if internal.SomeField != nil { -// if !copiedAnnotations { -// externalObj.Annotations = DeepCopyStringMap(externalObj.Annotations) -// copiedAnnotations = true -// } -// externalObj.Annotations[...] = json.Marshal(...) -// } +// if internal.SomeField != nil { +// if !copiedAnnotations { +// externalObj.Annotations = DeepCopyStringMap(externalObj.Annotations) +// copiedAnnotations = true +// } +// externalObj.Annotations[...] = json.Marshal(...) +// } func DropRoundTripHorizontalPodAutoscalerAnnotations(in map[string]string) (out map[string]string, copied bool) { _, hasMetricsSpecs := in[MetricSpecsAnnotation] _, hasBehaviorSpecs := in[BehaviorSpecsAnnotation] diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/types.go index 5231dc0f303..c130b5fa640 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/types.go @@ -110,6 +110,119 @@ const ( IndexedCompletion CompletionMode = "Indexed" ) +// PodFailurePolicyAction specifies how a Pod failure is handled. +// +enum +type PodFailurePolicyAction string + +const ( + // This is an action which might be taken on a pod failure - mark the + // pod's job as Failed and terminate all running pods. + PodFailurePolicyActionFailJob PodFailurePolicyAction = "FailJob" + + // This is an action which might be taken on a pod failure - the counter towards + // .backoffLimit, represented by the job's .status.failed field, is not + // incremented and a replacement pod is created. + PodFailurePolicyActionIgnore PodFailurePolicyAction = "Ignore" + + // This is an action which might be taken on a pod failure - the pod failure + // is handled in the default way - the counter towards .backoffLimit, + // represented by the job's .status.failed field, is incremented. + PodFailurePolicyActionCount PodFailurePolicyAction = "Count" +) + +// +enum +type PodFailurePolicyOnExitCodesOperator string + +const ( + PodFailurePolicyOnExitCodesOpIn PodFailurePolicyOnExitCodesOperator = "In" + PodFailurePolicyOnExitCodesOpNotIn PodFailurePolicyOnExitCodesOperator = "NotIn" +) + +// PodFailurePolicyOnExitCodesRequirement describes the requirement for handling +// a failed pod based on its container exit codes. In particular, it lookups the +// .state.terminated.exitCode for each app container and init container status, +// represented by the .status.containerStatuses and .status.initContainerStatuses +// fields in the Pod status, respectively. Containers completed with success +// (exit code 0) are excluded from the requirement check. +type PodFailurePolicyOnExitCodesRequirement struct { + // Restricts the check for exit codes to the container with the + // specified name. When null, the rule applies to all containers. + // When specified, it should match one the container or initContainer + // names in the pod template. + // +optional + ContainerName *string + + // Represents the relationship between the container exit code(s) and the + // specified values. Containers completed with success (exit code 0) are + // excluded from the requirement check. Possible values are: + // - In: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is in the set of specified values. + // - NotIn: the requirement is satisfied if at least one container exit code + // (might be multiple if there are multiple containers not restricted + // by the 'containerName' field) is not in the set of specified values. + // Additional values are considered to be added in the future. Clients should + // react to an unknown operator by assuming the requirement is not satisfied. + Operator PodFailurePolicyOnExitCodesOperator + + // Specifies the set of values. Each returned container exit code (might be + // multiple in case of multiple containers) is checked against this set of + // values with respect to the operator. The list of values must be ordered + // and must not contain duplicates. Value '0' cannot be used for the In operator. + // At least one element is required. At most 255 elements are allowed. + // +listType=set + Values []int32 +} + +// PodFailurePolicyOnPodConditionsPattern describes a pattern for matching +// an actual pod condition type. +type PodFailurePolicyOnPodConditionsPattern struct { + // Specifies the required Pod condition type. To match a pod condition + // it is required that specified type equals the pod condition type. + Type api.PodConditionType + // Specifies the required Pod condition status. To match a pod condition + // it is required that the specified status equals the pod condition status. + // Defaults to True. + Status api.ConditionStatus +} + +// PodFailurePolicyRule describes how a pod failure is handled when the requirements are met. +// One of OnExitCodes and onPodConditions, but not both, can be used in each rule. +type PodFailurePolicyRule struct { + // Specifies the action taken on a pod failure when the requirements are satisfied. + // Possible values are: + // - FailJob: indicates that the pod's job is marked as Failed and all + // running pods are terminated. + // - Ignore: indicates that the counter towards the .backoffLimit is not + // incremented and a replacement pod is created. + // - Count: indicates that the pod is handled in the default way - the + // counter towards the .backoffLimit is incremented. + // Additional values are considered to be added in the future. Clients should + // react to an unknown action by skipping the rule. + Action PodFailurePolicyAction + + // Represents the requirement on the container exit codes. + // +optional + OnExitCodes *PodFailurePolicyOnExitCodesRequirement + + // Represents the requirement on the pod conditions. The requirement is represented + // as a list of pod condition patterns. The requirement is satisfied if at + // least one pattern matches an actual pod condition. At most 20 elements are allowed. + // +listType=atomic + OnPodConditions []PodFailurePolicyOnPodConditionsPattern +} + +// PodFailurePolicy describes how failed pods influence the backoffLimit. +type PodFailurePolicy struct { + // A list of pod failure policy rules. The rules are evaluated in order. + // Once a rule matches a Pod failure, the remaining of the rules are ignored. + // When no rule matches the Pod failure, the default handling applies - the + // counter of pod failures is incremented and it is checked against + // the backoffLimit. At most 20 elements are allowed. + // +listType=atomic + Rules []PodFailurePolicyRule +} + // JobSpec describes how the job execution will look like. type JobSpec struct { @@ -128,6 +241,19 @@ type JobSpec struct { // +optional Completions *int32 + // Specifies the policy of handling failed pods. In particular, it allows to + // specify the set of actions and conditions which need to be + // satisfied to take the associated action. + // If empty, the default behaviour applies - the counter of failed pods, + // represented by the jobs's .status.failed field, is incremented and it is + // checked against the backoffLimit. This field cannot be used in combination + // with .spec.podTemplate.spec.restartPolicy=OnFailure. + // + // This field is alpha-level. To use this field, you must enable the + // `JobPodFailurePolicy` feature gate (disabled by default). + // +optional + PodFailurePolicy *PodFailurePolicy + // Specifies the duration in seconds relative to the startTime that the job // may be continuously active before the system tries to terminate it; value // must be positive integer. If a Job is suspended (at creation or through an @@ -313,6 +439,9 @@ const ( JobComplete JobConditionType = "Complete" // JobFailed means the job has failed its execution. JobFailed JobConditionType = "Failed" + // FailureTarget means the job is about to fail its execution. + // The constant is to be renamed once the name is accepted within the KEP-3329. + AlphaNoCompatGuaranteeJobFailureTarget JobConditionType = "FailureTarget" ) // JobCondition describes current state of a job. @@ -376,9 +505,16 @@ type CronJobSpec struct { // The schedule in Cron format, see https://en.wikipedia.org/wiki/Cron. Schedule string - // The time zone for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. - // If not specified, this will rely on the time zone of the kube-controller-manager process. - // ALPHA: This field is in alpha and must be enabled via the `CronJobTimeZone` feature gate. + // The time zone name for the given schedule, see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. + // If not specified, this will default to the time zone of the kube-controller-manager process. + // The set of valid time zone names and the time zone offset is loaded from the system-wide time zone + // database by the API server during CronJob validation and the controller manager during execution. + // If no system-wide time zone database can be found a bundled version of the database is used instead. + // If the time zone name becomes invalid during the lifetime of a CronJob or due to a change in host + // configuration, the controller will stop creating new new Jobs and will create a system event with the + // reason UnknownTimeZone. + // More information can be found in https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones + // This is beta field and must be enabled via the `CronJobTimeZone` feature gate. // +optional TimeZone *string diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go index d5e5c02c338..98b86bfcc81 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/batch/zz_generated.deepcopy.go @@ -252,6 +252,11 @@ func (in *JobSpec) DeepCopyInto(out *JobSpec) { *out = new(int32) **out = **in } + if in.PodFailurePolicy != nil { + in, out := &in.PodFailurePolicy, &out.PodFailurePolicy + *out = new(PodFailurePolicy) + (*in).DeepCopyInto(*out) + } if in.ActiveDeadlineSeconds != nil { in, out := &in.ActiveDeadlineSeconds, &out.ActiveDeadlineSeconds *out = new(int64) @@ -387,6 +392,97 @@ func (in *JobTemplateSpec) DeepCopy() *JobTemplateSpec { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicy) DeepCopyInto(out *PodFailurePolicy) { + *out = *in + if in.Rules != nil { + in, out := &in.Rules, &out.Rules + *out = make([]PodFailurePolicyRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicy. +func (in *PodFailurePolicy) DeepCopy() *PodFailurePolicy { + if in == nil { + return nil + } + out := new(PodFailurePolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicyOnExitCodesRequirement) DeepCopyInto(out *PodFailurePolicyOnExitCodesRequirement) { + *out = *in + if in.ContainerName != nil { + in, out := &in.ContainerName, &out.ContainerName + *out = new(string) + **out = **in + } + if in.Values != nil { + in, out := &in.Values, &out.Values + *out = make([]int32, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicyOnExitCodesRequirement. +func (in *PodFailurePolicyOnExitCodesRequirement) DeepCopy() *PodFailurePolicyOnExitCodesRequirement { + if in == nil { + return nil + } + out := new(PodFailurePolicyOnExitCodesRequirement) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicyOnPodConditionsPattern) DeepCopyInto(out *PodFailurePolicyOnPodConditionsPattern) { + *out = *in + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicyOnPodConditionsPattern. +func (in *PodFailurePolicyOnPodConditionsPattern) DeepCopy() *PodFailurePolicyOnPodConditionsPattern { + if in == nil { + return nil + } + out := new(PodFailurePolicyOnPodConditionsPattern) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PodFailurePolicyRule) DeepCopyInto(out *PodFailurePolicyRule) { + *out = *in + if in.OnExitCodes != nil { + in, out := &in.OnExitCodes, &out.OnExitCodes + *out = new(PodFailurePolicyOnExitCodesRequirement) + (*in).DeepCopyInto(*out) + } + if in.OnPodConditions != nil { + in, out := &in.OnPodConditions, &out.OnPodConditions + *out = make([]PodFailurePolicyOnPodConditionsPattern, len(*in)) + copy(*out, *in) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodFailurePolicyRule. +func (in *PodFailurePolicyRule) DeepCopy() *PodFailurePolicyRule { + if in == nil { + return nil + } + out := new(PodFailurePolicyRule) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *UncountedTerminatedPods) DeepCopyInto(out *UncountedTerminatedPods) { *out = *in diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/helpers.go index c150f6ace5c..0c730aa6d52 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/helper/helpers.go @@ -27,7 +27,6 @@ import ( "k8s.io/apimachinery/pkg/conversion" "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" - "k8s.io/apimachinery/pkg/selection" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/validation" "k8s.io/kubernetes/pkg/apis/core" @@ -361,72 +360,6 @@ func ContainsAccessMode(modes []core.PersistentVolumeAccessMode, mode core.Persi return false } -// NodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement core type into a struct that implements -// labels.Selector. -func NodeSelectorRequirementsAsSelector(nsm []core.NodeSelectorRequirement) (labels.Selector, error) { - if len(nsm) == 0 { - return labels.Nothing(), nil - } - selector := labels.NewSelector() - for _, expr := range nsm { - var op selection.Operator - switch expr.Operator { - case core.NodeSelectorOpIn: - op = selection.In - case core.NodeSelectorOpNotIn: - op = selection.NotIn - case core.NodeSelectorOpExists: - op = selection.Exists - case core.NodeSelectorOpDoesNotExist: - op = selection.DoesNotExist - case core.NodeSelectorOpGt: - op = selection.GreaterThan - case core.NodeSelectorOpLt: - op = selection.LessThan - default: - return nil, fmt.Errorf("%q is not a valid node selector operator", expr.Operator) - } - r, err := labels.NewRequirement(expr.Key, op, expr.Values) - if err != nil { - return nil, err - } - selector = selector.Add(*r) - } - return selector, nil -} - -// NodeSelectorRequirementsAsFieldSelector converts the []NodeSelectorRequirement core type into a struct that implements -// fields.Selector. -func NodeSelectorRequirementsAsFieldSelector(nsm []core.NodeSelectorRequirement) (fields.Selector, error) { - if len(nsm) == 0 { - return fields.Nothing(), nil - } - - selectors := []fields.Selector{} - for _, expr := range nsm { - switch expr.Operator { - case core.NodeSelectorOpIn: - if len(expr.Values) != 1 { - return nil, fmt.Errorf("unexpected number of value (%d) for node field selector operator %q", - len(expr.Values), expr.Operator) - } - selectors = append(selectors, fields.OneTermEqualSelector(expr.Key, expr.Values[0])) - - case core.NodeSelectorOpNotIn: - if len(expr.Values) != 1 { - return nil, fmt.Errorf("unexpected number of value (%d) for node field selector operator %q", - len(expr.Values), expr.Operator) - } - selectors = append(selectors, fields.OneTermNotEqualSelector(expr.Key, expr.Values[0])) - - default: - return nil, fmt.Errorf("%q is not a valid node field selector operator", expr.Operator) - } - } - - return fields.AndSelectors(selectors...), nil -} - // GetTolerationsFromPodAnnotations gets the json serialized tolerations data from Pod.Annotations // and converts it to the []Toleration type in core. func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]core.Toleration, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/pods/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/pods/helpers.go index e05a313a1f1..71810c5005c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/pods/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/pods/helpers.go @@ -20,9 +20,7 @@ import ( "fmt" "k8s.io/apimachinery/pkg/util/validation/field" - utilfeature "k8s.io/apiserver/pkg/util/feature" api "k8s.io/kubernetes/pkg/apis/core" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/fieldpath" ) @@ -47,12 +45,10 @@ func VisitContainersWithPath(podSpec *api.PodSpec, specPath *field.Path, visitor return false } } - if utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - fldPath = specPath.Child("ephemeralContainers") - for i := range podSpec.EphemeralContainers { - if !visitor((*api.Container)(&podSpec.EphemeralContainers[i].EphemeralContainerCommon), fldPath.Index(i)) { - return false - } + fldPath = specPath.Child("ephemeralContainers") + for i := range podSpec.EphemeralContainers { + if !visitor((*api.Container)(&podSpec.EphemeralContainers[i].EphemeralContainerCommon), fldPath.Index(i)) { + return false } } return true diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go index fc26f0f05b3..693f183a081 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/types.go @@ -154,7 +154,7 @@ type VolumeSource struct { // StorageOS represents a StorageOS volume that is attached to the kubelet's host machine and mounted into the pod // +optional StorageOS *StorageOSVolumeSource - // CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). + // CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers. // +optional CSI *CSIVolumeSource // Ephemeral represents a volume that is handled by a cluster storage driver. @@ -2430,6 +2430,10 @@ const ( PodReasonUnschedulable = "Unschedulable" // ContainersReady indicates whether all containers in the pod are ready. ContainersReady PodConditionType = "ContainersReady" + // AlphaNoCompatGuaranteeDisruptionTarget indicates the pod is about to be deleted due to a + // disruption (such as preemption, eviction API or garbage-collection). + // The constant is to be renamed once the name is accepted within the KEP-3329. + AlphaNoCompatGuaranteeDisruptionTarget PodConditionType = "DisruptionTarget" ) // PodCondition represents pod's condition @@ -2829,7 +2833,6 @@ type PodSpec struct { // pod to perform user-initiated actions such as debugging. This list cannot be specified when // creating a pod, and it cannot be modified by updating the pod spec. In order to add an // ephemeral container to an existing pod, use the pod's ephemeralcontainers subresource. - // This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate. // +optional EphemeralContainers []EphemeralContainer // +optional @@ -2973,6 +2976,7 @@ type PodSpec struct { // If the OS field is set to windows, following fields must be unset: // - spec.hostPID // - spec.hostIPC + // - spec.hostUsers // - spec.securityContext.seLinuxOptions // - spec.securityContext.seccompProfile // - spec.securityContext.fsGroup @@ -2992,7 +2996,6 @@ type PodSpec struct { // - spec.containers[*].securityContext.runAsUser // - spec.containers[*].securityContext.runAsGroup // +optional - // This is a beta field and requires the IdentifyPodOS feature OS *PodOS } @@ -3076,6 +3079,18 @@ type PodSecurityContext struct { // +k8s:conversion-gen=false // +optional ShareProcessNamespace *bool + // Use the host's user namespace. + // Optional: Default to true. + // If set to true or not present, the pod will be run in the host user namespace, useful + // for when the pod needs a feature only available to the host user namespace, such as + // loading a kernel module with CAP_SYS_MODULE. + // When set to false, a new user namespace is created for the pod. Setting false is useful + // for mitigating container breakout vulnerabilities even allowing users to run their + // containers as root without actually having root privileges on the host. + // Note that this field cannot be set when spec.os.name is windows. + // +k8s:conversion-gen=false + // +optional + HostUsers *bool // The SELinux context to be applied to all containers. // If unspecified, the container runtime will allocate a random SELinux context for each // container. May also be set in SecurityContext. If set in @@ -3222,8 +3237,9 @@ type PodDNSConfigOption struct { // PodIP represents the IP address of a pod. // IP address information. Each entry includes: -// IP: An IP address allocated to the pod. Routable at least within -// the cluster. +// +// IP: An IP address allocated to the pod. Routable at least within +// the cluster. type PodIP struct { IP string } @@ -3326,8 +3342,6 @@ var _ = Container(EphemeralContainerCommon{}) // // To add an ephemeral container, use the ephemeralcontainers subresource of an existing // Pod. Ephemeral containers may not be removed or restarted. -// -// This is a beta feature available on clusters that haven't disabled the EphemeralContainers feature gate. type EphemeralContainer struct { // Ephemeral containers have all of the fields of Container, plus additional fields // specific to ephemeral containers. Fields in common with Container are in the @@ -3390,7 +3404,6 @@ type PodStatus struct { ContainerStatuses []ContainerStatus // Status for any ephemeral containers that have run in this pod. - // This field is beta-level and available on clusters that haven't disabled the EphemeralContainers feature gate. // +optional EphemeralContainerStatuses []ContainerStatus } @@ -3736,27 +3749,27 @@ const ( IPv6Protocol IPFamily = "IPv6" ) -// IPFamilyPolicyType represents the dual-stack-ness requested or required by a Service -type IPFamilyPolicyType string +// IPFamilyPolicy represents the dual-stack-ness requested or required by a Service +type IPFamilyPolicy string const ( // IPFamilyPolicySingleStack indicates that this service is required to have a single IPFamily. // The IPFamily assigned is based on the default IPFamily used by the cluster // or as identified by service.spec.ipFamilies field - IPFamilyPolicySingleStack IPFamilyPolicyType = "SingleStack" + IPFamilyPolicySingleStack IPFamilyPolicy = "SingleStack" // IPFamilyPolicyPreferDualStack indicates that this service prefers dual-stack when // the cluster is configured for dual-stack. If the cluster is not configured // for dual-stack the service will be assigned a single IPFamily. If the IPFamily is not // set in service.spec.ipFamilies then the service will be assigned the default IPFamily // configured on the cluster - IPFamilyPolicyPreferDualStack IPFamilyPolicyType = "PreferDualStack" + IPFamilyPolicyPreferDualStack IPFamilyPolicy = "PreferDualStack" // IPFamilyPolicyRequireDualStack indicates that this service requires dual-stack. Using // IPFamilyPolicyRequireDualStack on a single stack cluster will result in validation errors. The // IPFamilies (and their order) assigned to this service is based on service.spec.ipFamilies. If // service.spec.ipFamilies was not provided then it will be assigned according to how they are // configured on the cluster. If service.spec.ipFamilies has only one entry then the alternative // IPFamily will be added by apiserver - IPFamilyPolicyRequireDualStack IPFamilyPolicyType = "RequireDualStack" + IPFamilyPolicyRequireDualStack IPFamilyPolicy = "RequireDualStack" ) // ServiceSpec describes the attributes that a user creates on a service @@ -3829,7 +3842,7 @@ type ServiceSpec struct { // to this service can be controlled by service.spec.ipFamilies and service.spec.clusterIPs // respectively. // +optional - IPFamilyPolicy *IPFamilyPolicyType + IPFamilyPolicy *IPFamilyPolicy // ExternalName is the external reference that kubedns or equivalent will // return as a CNAME record for this service. No proxying will be involved. @@ -4036,17 +4049,18 @@ type ServiceAccountList struct { // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Endpoints is a collection of endpoints that implement the actual service. Example: -// Name: "mysvc", -// Subsets: [ -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// }, -// { -// Addresses: [{"ip": "10.10.3.3"}], -// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] -// }, -// ] +// +// Name: "mysvc", +// Subsets: [ +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// }, +// { +// Addresses: [{"ip": "10.10.3.3"}], +// Ports: [{"name": "a", "port": 93}, {"name": "b", "port": 76}] +// }, +// ] type Endpoints struct { metav1.TypeMeta // +optional @@ -4059,13 +4073,16 @@ type Endpoints struct { // EndpointSubset is a group of addresses with a common set of ports. The // expanded set of endpoints is the Cartesian product of Addresses x Ports. // For example, given: -// { -// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], -// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] -// } +// +// { +// Addresses: [{"ip": "10.10.1.1"}, {"ip": "10.10.2.2"}], +// Ports: [{"name": "a", "port": 8675}, {"name": "b", "port": 309}] +// } +// // The resulting set of endpoints can be viewed as: -// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], -// b: [ 10.10.1.1:309, 10.10.2.2:309 ] +// +// a: [ 10.10.1.1:8675, 10.10.2.2:8675 ], +// b: [ 10.10.1.1:309, 10.10.2.2:309 ] type EndpointSubset struct { Addresses []EndpointAddress NotReadyAddresses []EndpointAddress @@ -5711,7 +5728,7 @@ type TopologySpreadConstraint struct { // because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, // it will violate MaxSkew. // - // This is an alpha field and requires enabling MinDomainsInPodTopologySpread feature gate. + // This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). // +optional MinDomains *int32 // NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector @@ -5733,6 +5750,15 @@ type TopologySpreadConstraint struct { // This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. // +optional NodeTaintsPolicy *NodeInclusionPolicy + // MatchLabelKeys is a set of pod label keys to select the pods over which + // spreading will be calculated. The keys are used to lookup values from the + // incoming pod labels, those key-value labels are ANDed with labelSelector + // to select the group of existing pods over which spreading will be calculated + // for the incoming pod. Keys that don't exist in the incoming pod labels will + // be ignored. A null or empty list means only match against labelSelector. + // +listType=atomic + // +optional + MatchLabelKeys []string } // These are the built-in errors for PortStatus. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go index d89ea26354b..7869f0389b9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/conversion.go @@ -303,6 +303,7 @@ func Convert_core_PodSpec_To_v1_PodSpec(in *core.PodSpec, out *v1.PodSpec, s con out.HostNetwork = in.SecurityContext.HostNetwork out.HostIPC = in.SecurityContext.HostIPC out.ShareProcessNamespace = in.SecurityContext.ShareProcessNamespace + out.HostUsers = in.SecurityContext.HostUsers } return nil @@ -358,6 +359,7 @@ func Convert_v1_PodSpec_To_core_PodSpec(in *v1.PodSpec, out *core.PodSpec, s con out.SecurityContext.HostPID = in.HostPID out.SecurityContext.HostIPC = in.HostIPC out.SecurityContext.ShareProcessNamespace = in.ShareProcessNamespace + out.SecurityContext.HostUsers = in.HostUsers return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go index 1a7aa4458f3..fbc733d09cc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/helper/helpers.go @@ -370,3 +370,62 @@ func ScopedResourceSelectorRequirementsAsSelector(ssr v1.ScopedResourceSelectorR selector = selector.Add(*r) return selector, nil } + +// nodeSelectorRequirementsAsLabelRequirements converts the NodeSelectorRequirement +// type to a labels.Requirement type. +func nodeSelectorRequirementsAsLabelRequirements(nsr v1.NodeSelectorRequirement) (*labels.Requirement, error) { + var op selection.Operator + switch nsr.Operator { + case v1.NodeSelectorOpIn: + op = selection.In + case v1.NodeSelectorOpNotIn: + op = selection.NotIn + case v1.NodeSelectorOpExists: + op = selection.Exists + case v1.NodeSelectorOpDoesNotExist: + op = selection.DoesNotExist + case v1.NodeSelectorOpGt: + op = selection.GreaterThan + case v1.NodeSelectorOpLt: + op = selection.LessThan + default: + return nil, fmt.Errorf("%q is not a valid node selector operator", nsr.Operator) + } + return labels.NewRequirement(nsr.Key, op, nsr.Values) +} + +// NodeSelectorAsSelector converts the NodeSelector api type into a struct that +// implements labels.Selector +// Note: This function should be kept in sync with the selector methods in +// pkg/labels/selector.go +func NodeSelectorAsSelector(ns *v1.NodeSelector) (labels.Selector, error) { + if ns == nil { + return labels.Nothing(), nil + } + if len(ns.NodeSelectorTerms) == 0 { + return labels.Everything(), nil + } + var requirements []labels.Requirement + + for _, nsTerm := range ns.NodeSelectorTerms { + for _, expr := range nsTerm.MatchExpressions { + req, err := nodeSelectorRequirementsAsLabelRequirements(expr) + if err != nil { + return nil, err + } + requirements = append(requirements, *req) + } + + for _, field := range nsTerm.MatchFields { + req, err := nodeSelectorRequirementsAsLabelRequirements(field) + if err != nil { + return nil, err + } + requirements = append(requirements, *req) + } + } + + selector := labels.NewSelector() + selector = selector.Add(requirements...) + return selector, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go index 007b0325288..696b435c235 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/v1/zz_generated.conversion.go @@ -6093,6 +6093,7 @@ func autoConvert_core_PodSecurityContext_To_v1_PodSecurityContext(in *core.PodSe // INFO: in.HostPID opted out of conversion generation // INFO: in.HostIPC opted out of conversion generation // INFO: in.ShareProcessNamespace opted out of conversion generation + // INFO: in.HostUsers opted out of conversion generation out.SELinuxOptions = (*v1.SELinuxOptions)(unsafe.Pointer(in.SELinuxOptions)) out.WindowsOptions = (*v1.WindowsSecurityContextOptions)(unsafe.Pointer(in.WindowsOptions)) out.RunAsUser = (*int64)(unsafe.Pointer(in.RunAsUser)) @@ -6186,6 +6187,7 @@ func autoConvert_v1_PodSpec_To_core_PodSpec(in *v1.PodSpec, out *core.PodSpec, s out.TopologySpreadConstraints = *(*[]core.TopologySpreadConstraint)(unsafe.Pointer(&in.TopologySpreadConstraints)) out.SetHostnameAsFQDN = (*bool)(unsafe.Pointer(in.SetHostnameAsFQDN)) out.OS = (*core.PodOS)(unsafe.Pointer(in.OS)) + // INFO: in.HostUsers opted out of conversion generation return nil } @@ -7709,7 +7711,7 @@ func autoConvert_v1_ServiceSpec_To_core_ServiceSpec(in *v1.ServiceSpec, out *cor out.PublishNotReadyAddresses = in.PublishNotReadyAddresses out.SessionAffinityConfig = (*core.SessionAffinityConfig)(unsafe.Pointer(in.SessionAffinityConfig)) out.IPFamilies = *(*[]core.IPFamily)(unsafe.Pointer(&in.IPFamilies)) - out.IPFamilyPolicy = (*core.IPFamilyPolicyType)(unsafe.Pointer(in.IPFamilyPolicy)) + out.IPFamilyPolicy = (*core.IPFamilyPolicy)(unsafe.Pointer(in.IPFamilyPolicy)) out.AllocateLoadBalancerNodePorts = (*bool)(unsafe.Pointer(in.AllocateLoadBalancerNodePorts)) out.LoadBalancerClass = (*string)(unsafe.Pointer(in.LoadBalancerClass)) out.InternalTrafficPolicy = (*core.ServiceInternalTrafficPolicyType)(unsafe.Pointer(in.InternalTrafficPolicy)) @@ -7728,7 +7730,7 @@ func autoConvert_core_ServiceSpec_To_v1_ServiceSpec(in *core.ServiceSpec, out *v out.ClusterIP = in.ClusterIP out.ClusterIPs = *(*[]string)(unsafe.Pointer(&in.ClusterIPs)) out.IPFamilies = *(*[]v1.IPFamily)(unsafe.Pointer(&in.IPFamilies)) - out.IPFamilyPolicy = (*v1.IPFamilyPolicyType)(unsafe.Pointer(in.IPFamilyPolicy)) + out.IPFamilyPolicy = (*v1.IPFamilyPolicy)(unsafe.Pointer(in.IPFamilyPolicy)) out.ExternalName = in.ExternalName out.ExternalIPs = *(*[]string)(unsafe.Pointer(&in.ExternalIPs)) out.LoadBalancerIP = in.LoadBalancerIP @@ -7999,6 +8001,7 @@ func autoConvert_v1_TopologySpreadConstraint_To_core_TopologySpreadConstraint(in out.MinDomains = (*int32)(unsafe.Pointer(in.MinDomains)) out.NodeAffinityPolicy = (*core.NodeInclusionPolicy)(unsafe.Pointer(in.NodeAffinityPolicy)) out.NodeTaintsPolicy = (*core.NodeInclusionPolicy)(unsafe.Pointer(in.NodeTaintsPolicy)) + out.MatchLabelKeys = *(*[]string)(unsafe.Pointer(&in.MatchLabelKeys)) return nil } @@ -8015,6 +8018,7 @@ func autoConvert_core_TopologySpreadConstraint_To_v1_TopologySpreadConstraint(in out.MinDomains = (*int32)(unsafe.Pointer(in.MinDomains)) out.NodeAffinityPolicy = (*v1.NodeInclusionPolicy)(unsafe.Pointer(in.NodeAffinityPolicy)) out.NodeTaintsPolicy = (*v1.NodeInclusionPolicy)(unsafe.Pointer(in.NodeTaintsPolicy)) + out.MatchLabelKeys = *(*[]string)(unsafe.Pointer(&in.MatchLabelKeys)) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/events.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/events.go index ca7b88b640e..eeecac218e5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/events.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/events.go @@ -40,7 +40,7 @@ const ( func ValidateEventCreate(event *core.Event, requestVersion schema.GroupVersion) field.ErrorList { // Make sure events always pass legacy validation. - allErrs := legacyValidateEvent(event) + allErrs := legacyValidateEvent(event, requestVersion) if requestVersion == v1.SchemeGroupVersion || requestVersion == eventsv1beta1.SchemeGroupVersion { // No further validation for backwards compatibility. return allErrs @@ -73,7 +73,7 @@ func ValidateEventCreate(event *core.Event, requestVersion schema.GroupVersion) func ValidateEventUpdate(newEvent, oldEvent *core.Event, requestVersion schema.GroupVersion) field.ErrorList { // Make sure the new event always passes legacy validation. - allErrs := legacyValidateEvent(newEvent) + allErrs := legacyValidateEvent(newEvent, requestVersion) if requestVersion == v1.SchemeGroupVersion || requestVersion == eventsv1beta1.SchemeGroupVersion { // No further validation for backwards compatibility. return allErrs @@ -119,11 +119,16 @@ func validateV1EventSeries(event *core.Event) field.ErrorList { } // legacyValidateEvent makes sure that the event makes sense. -func legacyValidateEvent(event *core.Event) field.ErrorList { +func legacyValidateEvent(event *core.Event, requestVersion schema.GroupVersion) field.ErrorList { allErrs := field.ErrorList{} // Because go zeroTime := time.Time{} + reportingControllerFieldName := "reportingController" + if requestVersion == v1.SchemeGroupVersion { + reportingControllerFieldName = "reportingComponent" + } + // "New" Events need to have EventTime set, so it's validating old object. if event.EventTime.Time == zeroTime { // Make sure event.Namespace and the involvedInvolvedObject.Namespace agree @@ -144,9 +149,9 @@ func legacyValidateEvent(event *core.Event) field.ErrorList { allErrs = append(allErrs, field.Invalid(field.NewPath("involvedObject", "namespace"), event.InvolvedObject.Namespace, "does not match event.namespace")) } if len(event.ReportingController) == 0 { - allErrs = append(allErrs, field.Required(field.NewPath("reportingController"), "")) + allErrs = append(allErrs, field.Required(field.NewPath(reportingControllerFieldName), "")) } - allErrs = append(allErrs, ValidateQualifiedName(event.ReportingController, field.NewPath("reportingController"))...) + allErrs = append(allErrs, ValidateQualifiedName(event.ReportingController, field.NewPath(reportingControllerFieldName))...) if len(event.ReportingInstance) == 0 { allErrs = append(allErrs, field.Required(field.NewPath("reportingInstance"), "")) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go index 0e07a8e2a95..25476ce69cb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/validation/validation.go @@ -45,7 +45,6 @@ import ( schedulinghelper "k8s.io/component-helpers/scheduling/corev1" apiservice "k8s.io/kubernetes/pkg/api/service" "k8s.io/kubernetes/pkg/apis/core" - api "k8s.io/kubernetes/pkg/apis/core" "k8s.io/kubernetes/pkg/apis/core/helper" podshelper "k8s.io/kubernetes/pkg/apis/core/pods" corev1 "k8s.io/kubernetes/pkg/apis/core/v1" @@ -1532,13 +1531,16 @@ func validateStorageOSPersistentVolumeSource(storageos *core.StorageOSPersistent // validatePVSecretReference check whether provided SecretReference object is valid in terms of secret name and namespace. -func validatePVSecretReference(secretRef *core.SecretReference, fldPath *field.Path) field.ErrorList { +func validatePVSecretReference(secretRef *core.SecretReference, allowDNSSubDomainSecretName bool, fldPath *field.Path) field.ErrorList { var allErrs field.ErrorList if len(secretRef.Name) == 0 { allErrs = append(allErrs, field.Required(fldPath.Child("name"), "")) + } else if allowDNSSubDomainSecretName { + allErrs = append(allErrs, ValidateDNS1123Subdomain(secretRef.Name, fldPath.Child("name"))...) } else { allErrs = append(allErrs, ValidateDNS1123Label(secretRef.Name, fldPath.Child("name"))...) } + if len(secretRef.Namespace) == 0 { allErrs = append(allErrs, field.Required(fldPath.Child("namespace"), "")) } else { @@ -1565,7 +1567,7 @@ func ValidateCSIDriverName(driverName string, fldPath *field.Path) field.ErrorLi return allErrs } -func validateCSIPersistentVolumeSource(csi *core.CSIPersistentVolumeSource, fldPath *field.Path) field.ErrorList { +func validateCSIPersistentVolumeSource(csi *core.CSIPersistentVolumeSource, allowDNSSubDomainSecretName bool, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} allErrs = append(allErrs, ValidateCSIDriverName(csi.Driver, fldPath.Child("driver"))...) @@ -1574,16 +1576,16 @@ func validateCSIPersistentVolumeSource(csi *core.CSIPersistentVolumeSource, fldP allErrs = append(allErrs, field.Required(fldPath.Child("volumeHandle"), "")) } if csi.ControllerPublishSecretRef != nil { - allErrs = append(allErrs, validatePVSecretReference(csi.ControllerPublishSecretRef, fldPath.Child("controllerPublishSecretRef"))...) + allErrs = append(allErrs, validatePVSecretReference(csi.ControllerPublishSecretRef, allowDNSSubDomainSecretName, fldPath.Child("controllerPublishSecretRef"))...) } if csi.ControllerExpandSecretRef != nil { - allErrs = append(allErrs, validatePVSecretReference(csi.ControllerExpandSecretRef, fldPath.Child("controllerExpandSecretRef"))...) + allErrs = append(allErrs, validatePVSecretReference(csi.ControllerExpandSecretRef, allowDNSSubDomainSecretName, fldPath.Child("controllerExpandSecretRef"))...) } if csi.NodePublishSecretRef != nil { - allErrs = append(allErrs, validatePVSecretReference(csi.NodePublishSecretRef, fldPath.Child("nodePublishSecretRef"))...) + allErrs = append(allErrs, validatePVSecretReference(csi.NodePublishSecretRef, allowDNSSubDomainSecretName, fldPath.Child("nodePublishSecretRef"))...) } if csi.NodeExpandSecretRef != nil { - allErrs = append(allErrs, validatePVSecretReference(csi.NodeExpandSecretRef, fldPath.Child("nodeExpandSecretRef"))...) + allErrs = append(allErrs, validatePVSecretReference(csi.NodeExpandSecretRef, allowDNSSubDomainSecretName, fldPath.Child("nodeExpandSecretRef"))...) } return allErrs } @@ -1645,6 +1647,8 @@ var allowedPVCTemplateObjectMetaFields = map[string]bool{ type PersistentVolumeSpecValidationOptions struct { // Allow spec to contain the "ReadWiteOncePod" access mode AllowReadWriteOncePod bool + // Allow the secretRef Name field to be of DNSSubDomain Format + AllowDNSSubDomainSecretName bool } // ValidatePersistentVolumeName checks that a name is appropriate for a @@ -1659,7 +1663,8 @@ var supportedVolumeModes = sets.NewString(string(core.PersistentVolumeBlock), st func ValidationOptionsForPersistentVolume(pv, oldPv *core.PersistentVolume) PersistentVolumeSpecValidationOptions { opts := PersistentVolumeSpecValidationOptions{ - AllowReadWriteOncePod: utilfeature.DefaultFeatureGate.Enabled(features.ReadWriteOncePod), + AllowReadWriteOncePod: utilfeature.DefaultFeatureGate.Enabled(features.ReadWriteOncePod), + AllowDNSSubDomainSecretName: false, } if oldPv == nil { // If there's no old PV, use the options based solely on feature enablement @@ -1669,9 +1674,21 @@ func ValidationOptionsForPersistentVolume(pv, oldPv *core.PersistentVolume) Pers // If the old object allowed "ReadWriteOncePod", continue to allow it in the new object opts.AllowReadWriteOncePod = true } + if oldCSI := oldPv.Spec.CSI; oldCSI != nil { + opts.AllowDNSSubDomainSecretName = + secretRefRequiresSubdomainSecretName(oldCSI.ControllerExpandSecretRef) || + secretRefRequiresSubdomainSecretName(oldCSI.ControllerPublishSecretRef) || + secretRefRequiresSubdomainSecretName(oldCSI.NodeStageSecretRef) || + secretRefRequiresSubdomainSecretName(oldCSI.NodePublishSecretRef) + } return opts } +func secretRefRequiresSubdomainSecretName(secretRef *core.SecretReference) bool { + // ref and name were specified and name didn't fit within label validation + return secretRef != nil && len(secretRef.Name) > 0 && len(validation.IsDNS1123Label(secretRef.Name)) > 0 +} + func ValidatePersistentVolumeSpec(pvSpec *core.PersistentVolumeSpec, pvName string, validateInlinePersistentVolumeSpec bool, fldPath *field.Path, opts PersistentVolumeSpecValidationOptions) field.ErrorList { allErrs := field.ErrorList{} @@ -1926,7 +1943,7 @@ func ValidatePersistentVolumeSpec(pvSpec *core.PersistentVolumeSpec, pvName stri allErrs = append(allErrs, field.Forbidden(fldPath.Child("csi"), "may not specify more than 1 volume type")) } else { numVolumes++ - allErrs = append(allErrs, validateCSIPersistentVolumeSource(pvSpec.CSI, fldPath.Child("csi"))...) + allErrs = append(allErrs, validateCSIPersistentVolumeSource(pvSpec.CSI, opts.AllowDNSSubDomainSecretName, fldPath.Child("csi"))...) } } @@ -2010,12 +2027,15 @@ type PersistentVolumeClaimSpecValidationOptions struct { AllowReadWriteOncePod bool // Allow users to recover from previously failing expansion operation EnableRecoverFromExpansionFailure bool + // Allow assigning StorageClass to unbound PVCs retroactively + EnableRetroactiveDefaultStorageClass bool } func ValidationOptionsForPersistentVolumeClaim(pvc, oldPvc *core.PersistentVolumeClaim) PersistentVolumeClaimSpecValidationOptions { opts := PersistentVolumeClaimSpecValidationOptions{ - AllowReadWriteOncePod: utilfeature.DefaultFeatureGate.Enabled(features.ReadWriteOncePod), - EnableRecoverFromExpansionFailure: utilfeature.DefaultFeatureGate.Enabled(features.RecoverVolumeExpansionFailure), + AllowReadWriteOncePod: utilfeature.DefaultFeatureGate.Enabled(features.ReadWriteOncePod), + EnableRecoverFromExpansionFailure: utilfeature.DefaultFeatureGate.Enabled(features.RecoverVolumeExpansionFailure), + EnableRetroactiveDefaultStorageClass: utilfeature.DefaultFeatureGate.Enabled(features.RetroactiveDefaultStorageClass), } if oldPvc == nil { // If there's no old PVC, use the options based solely on feature enablement @@ -2151,7 +2171,7 @@ func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *core.PersistentVolumeCl oldPvcClone.Spec.VolumeName = newPvcClone.Spec.VolumeName // +k8s:verify-mutation:reason=clone } - if validateStorageClassUpgrade(oldPvcClone.Annotations, newPvcClone.Annotations, + if validateStorageClassUpgradeFromAnnotation(oldPvcClone.Annotations, newPvcClone.Annotations, oldPvcClone.Spec.StorageClassName, newPvcClone.Spec.StorageClassName) { newPvcClone.Spec.StorageClassName = nil metav1.SetMetaDataAnnotation(&newPvcClone.ObjectMeta, core.BetaStorageClassAnnotation, oldPvcClone.Annotations[core.BetaStorageClassAnnotation]) @@ -2159,6 +2179,13 @@ func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *core.PersistentVolumeCl // storageclass annotation should be immutable after creation // TODO: remove Beta when no longer needed allErrs = append(allErrs, ValidateImmutableAnnotation(newPvc.ObjectMeta.Annotations[v1.BetaStorageClassAnnotation], oldPvc.ObjectMeta.Annotations[v1.BetaStorageClassAnnotation], v1.BetaStorageClassAnnotation, field.NewPath("metadata"))...) + + // If update from annotation to attribute failed we can attempt try to validate update from nil value. + if validateStorageClassUpgradeFromNil(oldPvc.Annotations, oldPvc.Spec.StorageClassName, newPvc.Spec.StorageClassName, opts) { + newPvcClone.Spec.StorageClassName = oldPvcClone.Spec.StorageClassName // +k8s:verify-mutation:reason=clone + } + // TODO: add a specific error with a hint that storage class name can not be changed + // (instead of letting spec comparison below return generic field forbidden error) } // lets make sure storage values are same. @@ -2199,7 +2226,7 @@ func ValidatePersistentVolumeClaimUpdate(newPvc, oldPvc *core.PersistentVolumeCl // 2. The old pvc's StorageClassName is not set // 3. The new pvc's StorageClassName is set and equal to the old value in annotation // 4. If the new pvc's StorageClassAnnotation is set,it must be equal to the old pv/pvc's StorageClassAnnotation -func validateStorageClassUpgrade(oldAnnotations, newAnnotations map[string]string, oldScName, newScName *string) bool { +func validateStorageClassUpgradeFromAnnotation(oldAnnotations, newAnnotations map[string]string, oldScName, newScName *string) bool { oldSc, oldAnnotationExist := oldAnnotations[core.BetaStorageClassAnnotation] newScInAnnotation, newAnnotationExist := newAnnotations[core.BetaStorageClassAnnotation] return oldAnnotationExist /* condition 1 */ && @@ -2208,6 +2235,20 @@ func validateStorageClassUpgrade(oldAnnotations, newAnnotations map[string]strin (!newAnnotationExist || newScInAnnotation == oldSc) /* condition 4 */ } +// Provide an upgrade path from PVC with nil storage class. We allow update of +// StorageClassName only if following four conditions are met at the same time: +// 1. RetroactiveDefaultStorageClass FeatureGate is enabled +// 2. The new pvc's StorageClassName is not nil +// 3. The old pvc's StorageClassName is nil +// 4. The old pvc either does not have beta annotation set, or the beta annotation matches new pvc's StorageClassName +func validateStorageClassUpgradeFromNil(oldAnnotations map[string]string, oldScName, newScName *string, opts PersistentVolumeClaimSpecValidationOptions) bool { + oldAnnotation, oldAnnotationExist := oldAnnotations[core.BetaStorageClassAnnotation] + return opts.EnableRetroactiveDefaultStorageClass /* condition 1 */ && + newScName != nil /* condition 2 */ && + oldScName == nil /* condition 3 */ && + (!oldAnnotationExist || *newScName == oldAnnotation) /* condition 4 */ +} + var resizeStatusSet = sets.NewString(string(core.PersistentVolumeClaimNoExpansionInProgress), string(core.PersistentVolumeClaimControllerExpansionInProgress), string(core.PersistentVolumeClaimControllerExpansionFailed), @@ -2890,6 +2931,8 @@ func validatePullPolicy(policy core.PullPolicy, fldPath *field.Path) field.Error return allErrors } +// validateEphemeralContainers is called by pod spec and template validation to validate the list of ephemeral containers. +// Note that this is called for pod template even though ephemeral containers aren't allowed in pod templates. func validateEphemeralContainers(ephemeralContainers []core.EphemeralContainer, containers, initContainers []core.Container, volumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { allErrs := field.ErrorList{} @@ -2897,44 +2940,40 @@ func validateEphemeralContainers(ephemeralContainers []core.EphemeralContainer, return allErrs } - allNames := sets.String{} + otherNames, allNames := sets.String{}, sets.String{} for _, c := range containers { + otherNames.Insert(c.Name) allNames.Insert(c.Name) } for _, c := range initContainers { + otherNames.Insert(c.Name) allNames.Insert(c.Name) } for i, ec := range ephemeralContainers { idxPath := fldPath.Index(i) - if ec.TargetContainerName != "" && !allNames.Has(ec.TargetContainerName) { - allErrs = append(allErrs, field.NotFound(idxPath.Child("targetContainerName"), ec.TargetContainerName)) - } - - if ec.Name == "" { - allErrs = append(allErrs, field.Required(idxPath, "ephemeralContainer requires a name")) - continue - } - - // Using validateContainers() here isn't ideal because it adds an index to the error message that - // doesn't really exist for EphemeralContainers (i.e. ephemeralContainers[0].spec[0].name instead - // of ephemeralContainers[0].spec.name) - // TODO(verb): factor a validateContainer() out of validateContainers() to be used here - c := core.Container(ec.EphemeralContainerCommon) - allErrs = append(allErrs, validateContainers([]core.Container{c}, false, volumes, idxPath, opts)...) - // EphemeralContainers don't require the backwards-compatibility distinction between pod/podTemplate validation - allErrs = append(allErrs, validateContainersOnlyForPod([]core.Container{c}, idxPath)...) + c := (*core.Container)(&ec.EphemeralContainerCommon) + allErrs = append(allErrs, validateContainerCommon(c, volumes, idxPath, opts)...) + // Ephemeral containers don't need looser constraints for pod templates, so it's convenient to apply both validations + // here where we've already converted EphemeralContainerCommon to Container. + allErrs = append(allErrs, validateContainerOnlyForPod(c, idxPath)...) + // Ephemeral containers must have a name unique across all container types. if allNames.Has(ec.Name) { allErrs = append(allErrs, field.Duplicate(idxPath.Child("name"), ec.Name)) } else { allNames.Insert(ec.Name) } - // Ephemeral Containers should not be relied upon for fundamental pod services, so fields such as + // The target container name must exist and be non-ephemeral. + if ec.TargetContainerName != "" && !otherNames.Has(ec.TargetContainerName) { + allErrs = append(allErrs, field.NotFound(idxPath.Child("targetContainerName"), ec.TargetContainerName)) + } + + // Ephemeral containers should not be relied upon for fundamental pod services, so fields such as // Lifecycle, probes, resources and ports should be disallowed. This is implemented as a list - // of allowed fields so that new fields will be given consideration prior to inclusion in Ephemeral Containers. + // of allowed fields so that new fields will be given consideration prior to inclusion in ephemeral containers. allErrs = append(allErrs, validateFieldAllowList(ec.EphemeralContainerCommon, allowedEphemeralContainerFields, "cannot be set for an Ephemeral Container", idxPath)...) // VolumeMount subpaths have the potential to leak resources since they're implemented with bind mounts @@ -2976,41 +3015,142 @@ func validateFieldAllowList(value interface{}, allowedFields map[string]bool, er return allErrs } -func validateInitContainers(containers []core.Container, otherContainers []core.Container, deviceVolumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { +// validateInitContainers is called by pod spec and template validation to validate the list of init containers +func validateInitContainers(containers []core.Container, regularContainers []core.Container, volumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { var allErrs field.ErrorList - if len(containers) > 0 { - allErrs = append(allErrs, validateContainers(containers, true, deviceVolumes, fldPath, opts)...) - } allNames := sets.String{} - for _, ctr := range otherContainers { + for _, ctr := range regularContainers { allNames.Insert(ctr.Name) } for i, ctr := range containers { idxPath := fldPath.Index(i) + + // Apply the validation common to all container types + allErrs = append(allErrs, validateContainerCommon(&ctr, volumes, idxPath, opts)...) + + // Names must be unique within regular and init containers. Collisions with ephemeral containers + // will be detected by validateEphemeralContainers(). if allNames.Has(ctr.Name) { allErrs = append(allErrs, field.Duplicate(idxPath.Child("name"), ctr.Name)) - } - if len(ctr.Name) > 0 { + } else if len(ctr.Name) > 0 { allNames.Insert(ctr.Name) } + + // Check for port conflicts in init containers individually since init containers run one-by-one. + allErrs = append(allErrs, checkHostPortConflicts([]core.Container{ctr}, fldPath)...) + + // These fields are disallowed for init containers. if ctr.Lifecycle != nil { - allErrs = append(allErrs, field.Invalid(idxPath.Child("lifecycle"), ctr.Lifecycle, "must not be set for init containers")) + allErrs = append(allErrs, field.Forbidden(idxPath.Child("lifecycle"), "may not be set for init containers")) } if ctr.LivenessProbe != nil { - allErrs = append(allErrs, field.Invalid(idxPath.Child("livenessProbe"), ctr.LivenessProbe, "must not be set for init containers")) + allErrs = append(allErrs, field.Forbidden(idxPath.Child("livenessProbe"), "may not be set for init containers")) } if ctr.ReadinessProbe != nil { - allErrs = append(allErrs, field.Invalid(idxPath.Child("readinessProbe"), ctr.ReadinessProbe, "must not be set for init containers")) + allErrs = append(allErrs, field.Forbidden(idxPath.Child("readinessProbe"), "may not be set for init containers")) } if ctr.StartupProbe != nil { - allErrs = append(allErrs, field.Invalid(idxPath.Child("startupProbe"), ctr.StartupProbe, "must not be set for init containers")) + allErrs = append(allErrs, field.Forbidden(idxPath.Child("startupProbe"), "may not be set for init containers")) + } + } + + return allErrs +} + +// validateContainerCommon applies validation common to all container types. It's called by regular, init, and ephemeral +// container list validation to require a properly formatted name, image, etc. +func validateContainerCommon(ctr *core.Container, volumes map[string]core.VolumeSource, path *field.Path, opts PodValidationOptions) field.ErrorList { + allErrs := field.ErrorList{} + + namePath := path.Child("name") + if len(ctr.Name) == 0 { + allErrs = append(allErrs, field.Required(namePath, "")) + } else { + allErrs = append(allErrs, ValidateDNS1123Label(ctr.Name, namePath)...) + } + + // TODO: do not validate leading and trailing whitespace to preserve backward compatibility. + // for example: https://github.com/openshift/origin/issues/14659 image = " " is special token in pod template + // others may have done similar + if len(ctr.Image) == 0 { + allErrs = append(allErrs, field.Required(path.Child("image"), "")) + } + + switch ctr.TerminationMessagePolicy { + case core.TerminationMessageReadFile, core.TerminationMessageFallbackToLogsOnError: + case "": + allErrs = append(allErrs, field.Required(path.Child("terminationMessagePolicy"), "")) + default: + supported := []string{ + string(core.TerminationMessageReadFile), + string(core.TerminationMessageFallbackToLogsOnError), + } + allErrs = append(allErrs, field.NotSupported(path.Child("terminationMessagePolicy"), ctr.TerminationMessagePolicy, supported)) + } + + volMounts := GetVolumeMountMap(ctr.VolumeMounts) + volDevices := GetVolumeDeviceMap(ctr.VolumeDevices) + allErrs = append(allErrs, validateContainerPorts(ctr.Ports, path.Child("ports"))...) + allErrs = append(allErrs, ValidateEnv(ctr.Env, path.Child("env"), opts)...) + allErrs = append(allErrs, ValidateEnvFrom(ctr.EnvFrom, path.Child("envFrom"))...) + allErrs = append(allErrs, ValidateVolumeMounts(ctr.VolumeMounts, volDevices, volumes, ctr, path.Child("volumeMounts"))...) + allErrs = append(allErrs, ValidateVolumeDevices(ctr.VolumeDevices, volMounts, volumes, path.Child("volumeDevices"))...) + allErrs = append(allErrs, validatePullPolicy(ctr.ImagePullPolicy, path.Child("imagePullPolicy"))...) + allErrs = append(allErrs, ValidateResourceRequirements(&ctr.Resources, path.Child("resources"), opts)...) + allErrs = append(allErrs, ValidateSecurityContext(ctr.SecurityContext, path.Child("securityContext"))...) + return allErrs +} + +func validateHostUsers(spec *core.PodSpec, fldPath *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + + // Only make the following checks if hostUsers is false (otherwise, the container uses the + // same userns as the host, and so there isn't anything to check). + if spec.SecurityContext == nil || spec.SecurityContext.HostUsers == nil || *spec.SecurityContext.HostUsers == true { + return allErrs + } + + // For now only these volumes are supported: + // - configmap + // - secret + // - downwardAPI + // - emptyDir + // - projected + // So reject anything else. + for i, vol := range spec.Volumes { + switch { + case vol.EmptyDir != nil: + case vol.Secret != nil: + case vol.DownwardAPI != nil: + case vol.ConfigMap != nil: + case vol.Projected != nil: + default: + allErrs = append(allErrs, field.Forbidden(fldPath.Child("volumes").Index(i), "volume type not supported when `pod.Spec.HostUsers` is false")) } } + + // We decided to restrict the usage of userns with other host namespaces: + // https://github.com/kubernetes/kubernetes/pull/111090#discussion_r935994282 + // The tl;dr is: you can easily run into permission issues that seem unexpected, we don't + // know of any good use case and we can always enable them later. + + // Note we already validated above spec.SecurityContext is not nil. + if spec.SecurityContext.HostNetwork { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("hostNetwork"), "when `pod.Spec.HostUsers` is false")) + } + if spec.SecurityContext.HostPID { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("HostPID"), "when `pod.Spec.HostUsers` is false")) + } + if spec.SecurityContext.HostIPC { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("HostIPC"), "when `pod.Spec.HostUsers` is false")) + } + return allErrs } -func validateContainers(containers []core.Container, isInitContainers bool, volumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { +// validateContainers is called by pod spec and template validation to validate the list of regular containers. +func validateContainers(containers []core.Container, volumes map[string]core.VolumeSource, fldPath *field.Path, opts PodValidationOptions) field.ErrorList { allErrs := field.ErrorList{} if len(containers) == 0 { @@ -3019,74 +3159,41 @@ func validateContainers(containers []core.Container, isInitContainers bool, volu allNames := sets.String{} for i, ctr := range containers { - idxPath := fldPath.Index(i) - namePath := idxPath.Child("name") - volMounts := GetVolumeMountMap(ctr.VolumeMounts) - volDevices := GetVolumeDeviceMap(ctr.VolumeDevices) + path := fldPath.Index(i) - if len(ctr.Name) == 0 { - allErrs = append(allErrs, field.Required(namePath, "")) - } else { - allErrs = append(allErrs, ValidateDNS1123Label(ctr.Name, namePath)...) - } + // Apply validation common to all containers + allErrs = append(allErrs, validateContainerCommon(&ctr, volumes, path, opts)...) + + // Container names must be unique within the list of regular containers. + // Collisions with init or ephemeral container names will be detected by the init or ephemeral + // container validation to prevent duplicate error messages. if allNames.Has(ctr.Name) { - allErrs = append(allErrs, field.Duplicate(namePath, ctr.Name)) + allErrs = append(allErrs, field.Duplicate(path.Child("name"), ctr.Name)) } else { allNames.Insert(ctr.Name) } - // TODO: do not validate leading and trailing whitespace to preserve backward compatibility. - // for example: https://github.com/openshift/origin/issues/14659 image = " " is special token in pod template - // others may have done similar - if len(ctr.Image) == 0 { - allErrs = append(allErrs, field.Required(idxPath.Child("image"), "")) - } + + // These fields are only allowed for regular containers, so only check supported values here. + // Init and ephemeral container validation will return field.Forbidden() for these paths. if ctr.Lifecycle != nil { - allErrs = append(allErrs, validateLifecycle(ctr.Lifecycle, idxPath.Child("lifecycle"))...) + allErrs = append(allErrs, validateLifecycle(ctr.Lifecycle, path.Child("lifecycle"))...) } - allErrs = append(allErrs, validateProbe(ctr.LivenessProbe, idxPath.Child("livenessProbe"))...) - // Readiness-specific validation - if ctr.ReadinessProbe != nil && ctr.ReadinessProbe.TerminationGracePeriodSeconds != nil { - allErrs = append(allErrs, field.Invalid(idxPath.Child("readinessProbe", "terminationGracePeriodSeconds"), ctr.ReadinessProbe.TerminationGracePeriodSeconds, "must not be set for readinessProbes")) - } - allErrs = append(allErrs, validateProbe(ctr.StartupProbe, idxPath.Child("startupProbe"))...) - // Liveness-specific validation + allErrs = append(allErrs, validateProbe(ctr.LivenessProbe, path.Child("livenessProbe"))...) if ctr.LivenessProbe != nil && ctr.LivenessProbe.SuccessThreshold != 1 { - allErrs = append(allErrs, field.Invalid(idxPath.Child("livenessProbe", "successThreshold"), ctr.LivenessProbe.SuccessThreshold, "must be 1")) + allErrs = append(allErrs, field.Invalid(path.Child("livenessProbe", "successThreshold"), ctr.LivenessProbe.SuccessThreshold, "must be 1")) } - allErrs = append(allErrs, validateProbe(ctr.StartupProbe, idxPath.Child("startupProbe"))...) - // Startup-specific validation - if ctr.StartupProbe != nil && ctr.StartupProbe.SuccessThreshold != 1 { - allErrs = append(allErrs, field.Invalid(idxPath.Child("startupProbe", "successThreshold"), ctr.StartupProbe.SuccessThreshold, "must be 1")) + allErrs = append(allErrs, validateProbe(ctr.ReadinessProbe, path.Child("readinessProbe"))...) + if ctr.ReadinessProbe != nil && ctr.ReadinessProbe.TerminationGracePeriodSeconds != nil { + allErrs = append(allErrs, field.Invalid(path.Child("readinessProbe", "terminationGracePeriodSeconds"), ctr.ReadinessProbe.TerminationGracePeriodSeconds, "must not be set for readinessProbes")) } - - switch ctr.TerminationMessagePolicy { - case core.TerminationMessageReadFile, core.TerminationMessageFallbackToLogsOnError: - case "": - allErrs = append(allErrs, field.Required(idxPath.Child("terminationMessagePolicy"), "must be 'File' or 'FallbackToLogsOnError'")) - default: - allErrs = append(allErrs, field.Invalid(idxPath.Child("terminationMessagePolicy"), ctr.TerminationMessagePolicy, "must be 'File' or 'FallbackToLogsOnError'")) + allErrs = append(allErrs, validateProbe(ctr.StartupProbe, path.Child("startupProbe"))...) + if ctr.StartupProbe != nil && ctr.StartupProbe.SuccessThreshold != 1 { + allErrs = append(allErrs, field.Invalid(path.Child("startupProbe", "successThreshold"), ctr.StartupProbe.SuccessThreshold, "must be 1")) } - - allErrs = append(allErrs, validateProbe(ctr.ReadinessProbe, idxPath.Child("readinessProbe"))...) - allErrs = append(allErrs, validateContainerPorts(ctr.Ports, idxPath.Child("ports"))...) - allErrs = append(allErrs, ValidateEnv(ctr.Env, idxPath.Child("env"), opts)...) - allErrs = append(allErrs, ValidateEnvFrom(ctr.EnvFrom, idxPath.Child("envFrom"))...) - allErrs = append(allErrs, ValidateVolumeMounts(ctr.VolumeMounts, volDevices, volumes, &ctr, idxPath.Child("volumeMounts"))...) - allErrs = append(allErrs, ValidateVolumeDevices(ctr.VolumeDevices, volMounts, volumes, idxPath.Child("volumeDevices"))...) - allErrs = append(allErrs, validatePullPolicy(ctr.ImagePullPolicy, idxPath.Child("imagePullPolicy"))...) - allErrs = append(allErrs, ValidateResourceRequirements(&ctr.Resources, idxPath.Child("resources"), opts)...) - allErrs = append(allErrs, ValidateSecurityContext(ctr.SecurityContext, idxPath.Child("securityContext"))...) } - if isInitContainers { - // check initContainers one by one since they are running in sequential order. - for _, initContainer := range containers { - allErrs = append(allErrs, checkHostPortConflicts([]core.Container{initContainer}, fldPath)...) - } - } else { - // Check for colliding ports across all containers. - allErrs = append(allErrs, checkHostPortConflicts(containers, fldPath)...) - } + // Port conflicts are checked across all containers + allErrs = append(allErrs, checkHostPortConflicts(containers, fldPath)...) return allErrs } @@ -3372,14 +3479,22 @@ func ValidateTolerations(tolerations []core.Toleration, fldPath *field.Path) fie } // validateContainersOnlyForPod does additional validation for containers on a pod versus a pod template -// it only does additive validation of fields not covered in validateContainers +// it only does additive validation of fields not covered in validateContainers and is not called for +// ephemeral containers which require a conversion to core.Container. func validateContainersOnlyForPod(containers []core.Container, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} for i, ctr := range containers { - idxPath := fldPath.Index(i) - if len(ctr.Image) != len(strings.TrimSpace(ctr.Image)) { - allErrs = append(allErrs, field.Invalid(idxPath.Child("image"), ctr.Image, "must not have leading or trailing whitespace")) - } + allErrs = append(allErrs, validateContainerOnlyForPod(&ctr, fldPath.Index(i))...) + } + return allErrs +} + +// validateContainerOnlyForPod does pod-only (i.e. not pod template) validation for a single container. +// This is called by validateContainersOnlyForPod and validateEphemeralContainers directly. +func validateContainerOnlyForPod(ctr *core.Container, path *field.Path) field.ErrorList { + allErrs := field.ErrorList{} + if len(ctr.Image) != len(strings.TrimSpace(ctr.Image)) { + allErrs = append(allErrs, field.Invalid(path.Child("image"), ctr.Image, "must not have leading or trailing whitespace")) } return allErrs } @@ -3396,10 +3511,6 @@ type PodValidationOptions struct { AllowWindowsHostProcessField bool // Allow more DNSSearchPaths and longer DNSSearchListChars AllowExpandedDNSConfig bool - // Allow OSField to be set in the pod spec - AllowOSField bool - // Allow sysctl name to contain a slash - AllowSysctlRegexContainSlash bool } // validatePodMetadataAndSpec tests if required fields in the pod.metadata and pod.spec are set, @@ -3430,6 +3541,7 @@ func validatePodMetadataAndSpec(pod *core.Pod, opts PodValidationOptions) field. allErrs = append(allErrs, validateContainersOnlyForPod(pod.Spec.Containers, specPath.Child("containers"))...) allErrs = append(allErrs, validateContainersOnlyForPod(pod.Spec.InitContainers, specPath.Child("initContainers"))...) + // validateContainersOnlyForPod() is checked for ephemeral containers by validateEphemeralContainers() return allErrs } @@ -3490,7 +3602,7 @@ func ValidatePodSpec(spec *core.PodSpec, podMeta *metav1.ObjectMeta, fldPath *fi vols, vErrs := ValidateVolumes(spec.Volumes, podMeta, fldPath.Child("volumes"), opts) allErrs = append(allErrs, vErrs...) - allErrs = append(allErrs, validateContainers(spec.Containers, false, vols, fldPath.Child("containers"), opts)...) + allErrs = append(allErrs, validateContainers(spec.Containers, vols, fldPath.Child("containers"), opts)...) allErrs = append(allErrs, validateInitContainers(spec.InitContainers, spec.Containers, vols, fldPath.Child("initContainers"), opts)...) allErrs = append(allErrs, validateEphemeralContainers(spec.EphemeralContainers, spec.Containers, spec.InitContainers, vols, fldPath.Child("ephemeralContainers"), opts)...) allErrs = append(allErrs, validateRestartPolicy(&spec.RestartPolicy, fldPath.Child("restartPolicy"))...) @@ -3503,6 +3615,7 @@ func ValidatePodSpec(spec *core.PodSpec, podMeta *metav1.ObjectMeta, fldPath *fi allErrs = append(allErrs, validateReadinessGates(spec.ReadinessGates, fldPath.Child("readinessGates"))...) allErrs = append(allErrs, validateTopologySpreadConstraints(spec.TopologySpreadConstraints, fldPath.Child("topologySpreadConstraints"))...) allErrs = append(allErrs, validateWindowsHostProcessPod(spec, fldPath, opts)...) + allErrs = append(allErrs, validateHostUsers(spec, fldPath)...) if len(spec.ServiceAccountName) > 0 { for _, msg := range ValidateServiceAccountName(spec.ServiceAccountName, false) { allErrs = append(allErrs, field.Invalid(fldPath.Child("serviceAccountName"), spec.ServiceAccountName, msg)) @@ -3595,6 +3708,9 @@ func validateWindows(spec *core.PodSpec, fldPath *field.Path) field.ErrorList { if securityContext.SELinuxOptions != nil { allErrs = append(allErrs, field.Forbidden(fldPath.Child("securityContext").Child("seLinuxOptions"), "cannot be set for a windows pod")) } + if securityContext.HostUsers != nil { + allErrs = append(allErrs, field.Forbidden(fldPath.Child("hostUsers"), "cannot be set for a windows pod")) + } if securityContext.HostPID { allErrs = append(allErrs, field.Forbidden(fldPath.Child("hostPID"), "cannot be set for a windows pod")) } @@ -4058,9 +4174,6 @@ const ( // a sysctl segment regex, concatenated with dots to form a sysctl name SysctlSegmentFmt string = "[a-z0-9]([-_a-z0-9]*[a-z0-9])?" - // a sysctl name regex - SysctlFmt string = "(" + SysctlSegmentFmt + "\\.)*" + SysctlSegmentFmt - // a sysctl name regex with slash allowed SysctlContainSlashFmt string = "(" + SysctlSegmentFmt + "[\\./])*" + SysctlSegmentFmt @@ -4068,41 +4181,29 @@ const ( SysctlMaxLength int = 253 ) -var sysctlRegexp = regexp.MustCompile("^" + SysctlFmt + "$") - var sysctlContainSlashRegexp = regexp.MustCompile("^" + SysctlContainSlashFmt + "$") // IsValidSysctlName checks that the given string is a valid sysctl name, -// i.e. matches SysctlFmt (or SysctlContainSlashFmt if canContainSlash is true). +// i.e. matches SysctlContainSlashFmt. // More info: -// https://man7.org/linux/man-pages/man8/sysctl.8.html -// https://man7.org/linux/man-pages/man5/sysctl.d.5.html -func IsValidSysctlName(name string, canContainSlash bool) bool { +// +// https://man7.org/linux/man-pages/man8/sysctl.8.html +// https://man7.org/linux/man-pages/man5/sysctl.d.5.html +func IsValidSysctlName(name string) bool { if len(name) > SysctlMaxLength { return false } - if canContainSlash { - return sysctlContainSlashRegexp.MatchString(name) - } - return sysctlRegexp.MatchString(name) + return sysctlContainSlashRegexp.MatchString(name) } -func getSysctlFmt(canContainSlash bool) string { - if canContainSlash { - // use relaxed validation everywhere in 1.24 - return SysctlContainSlashFmt - } - // Will be removed in 1.24 - return SysctlFmt -} -func validateSysctls(sysctls []core.Sysctl, fldPath *field.Path, allowSysctlRegexContainSlash bool) field.ErrorList { +func validateSysctls(sysctls []core.Sysctl, fldPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} names := make(map[string]struct{}) for i, s := range sysctls { if len(s.Name) == 0 { allErrs = append(allErrs, field.Required(fldPath.Index(i).Child("name"), "")) - } else if !IsValidSysctlName(s.Name, allowSysctlRegexContainSlash) { - allErrs = append(allErrs, field.Invalid(fldPath.Index(i).Child("name"), s.Name, fmt.Sprintf("must have at most %d characters and match regex %s", SysctlMaxLength, getSysctlFmt(allowSysctlRegexContainSlash)))) + } else if !IsValidSysctlName(s.Name) { + allErrs = append(allErrs, field.Invalid(fldPath.Index(i).Child("name"), s.Name, fmt.Sprintf("must have at most %d characters and match regex %s", SysctlMaxLength, sysctlContainSlashRegexp))) } else if _, ok := names[s.Name]; ok { allErrs = append(allErrs, field.Duplicate(fldPath.Index(i).Child("name"), s.Name)) } @@ -4142,7 +4243,7 @@ func ValidatePodSecurityContext(securityContext *core.PodSecurityContext, spec * } if len(securityContext.Sysctls) != 0 { - allErrs = append(allErrs, validateSysctls(securityContext.Sysctls, fldPath.Child("sysctls"), opts.AllowSysctlRegexContainSlash)...) + allErrs = append(allErrs, validateSysctls(securityContext.Sysctls, fldPath.Child("sysctls"))...) } if securityContext.FSGroupChangePolicy != nil { @@ -4191,7 +4292,7 @@ func ValidatePodCreate(pod *core.Pod, opts PodValidationOptions) field.ErrorList return allErrs } -// ValidateSeccompAnnotationsAndFields iterates through all containers and ensure that when both seccompProfile and seccomp annotations exist they match. +// validateSeccompAnnotationsAndFields iterates through all containers and ensure that when both seccompProfile and seccomp annotations exist they match. func validateSeccompAnnotationsAndFields(objectMeta metav1.ObjectMeta, podSpec *core.PodSpec, specPath *field.Path) field.ErrorList { allErrs := field.ErrorList{} @@ -4715,7 +4816,7 @@ func validateServicePort(sp *core.ServicePort, requireName, isHeadlessService bo return allErrs } -func needsExternalTrafficPolicy(svc *api.Service) bool { +func needsExternalTrafficPolicy(svc *core.Service) bool { return svc.Spec.Type == core.ServiceTypeLoadBalancer || svc.Spec.Type == core.ServiceTypeNodePort } @@ -4760,7 +4861,7 @@ func validateServiceExternalTrafficPolicy(service *core.Service) field.ErrorList return allErrs } -func validateServiceExternalTrafficFieldsUpdate(before, after *api.Service) field.ErrorList { +func validateServiceExternalTrafficFieldsUpdate(before, after *core.Service) field.ErrorList { allErrs := field.ErrorList{} if apiservice.NeedsHealthCheck(before) && apiservice.NeedsHealthCheck(after) { @@ -6363,9 +6464,6 @@ func validateOS(podSpec *core.PodSpec, fldPath *field.Path, opts PodValidationOp if os == nil { return allErrs } - if !opts.AllowOSField { - return append(allErrs, field.Forbidden(fldPath, "cannot be set when IdentifyPodOS feature is not enabled")) - } if len(os.Name) == 0 { return append(allErrs, field.Required(fldPath.Child("name"), "cannot be empty")) } @@ -6496,6 +6594,7 @@ func validateTopologySpreadConstraints(constraints []core.TopologySpreadConstrai if err := validateNodeInclusionPolicy(subFldPath.Child("nodeTaintsPolicy"), constraint.NodeTaintsPolicy); err != nil { allErrs = append(allErrs, err) } + allErrs = append(allErrs, validateMatchLabelKeys(subFldPath.Child("matchLabelKeys"), constraint.MatchLabelKeys, constraint.LabelSelector)...) } return allErrs @@ -6569,6 +6668,33 @@ func validateNodeInclusionPolicy(fldPath *field.Path, policy *core.NodeInclusion return nil } +// validateMatchLabelKeys tests that the elements are a valid label name and are not already included in labelSelector. +func validateMatchLabelKeys(fldPath *field.Path, matchLabelKeys []string, labelSelector *metav1.LabelSelector) field.ErrorList { + if len(matchLabelKeys) == 0 { + return nil + } + + labelSelectorKeys := sets.String{} + if labelSelector != nil { + for key := range labelSelector.MatchLabels { + labelSelectorKeys.Insert(key) + } + for _, matchExpression := range labelSelector.MatchExpressions { + labelSelectorKeys.Insert(matchExpression.Key) + } + } + + allErrs := field.ErrorList{} + for i, key := range matchLabelKeys { + allErrs = append(allErrs, unversionedvalidation.ValidateLabelName(key, fldPath.Index(i))...) + if labelSelectorKeys.Has(key) { + allErrs = append(allErrs, field.Invalid(fldPath.Index(i), key, "exists in both matchLabelKeys and labelSelector")) + } + } + + return allErrs +} + // ValidateServiceClusterIPsRelatedFields validates .spec.ClusterIPs,, // .spec.IPFamilies, .spec.ipFamilyPolicy. This is exported because it is used // during IP init and allocation. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go index 2aba47590f6..0fd886259b2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/core/zz_generated.deepcopy.go @@ -3736,6 +3736,11 @@ func (in *PodSecurityContext) DeepCopyInto(out *PodSecurityContext) { *out = new(bool) **out = **in } + if in.HostUsers != nil { + in, out := &in.HostUsers, &out.HostUsers + *out = new(bool) + **out = **in + } if in.SELinuxOptions != nil { in, out := &in.SELinuxOptions, &out.SELinuxOptions *out = new(SELinuxOptions) @@ -5375,7 +5380,7 @@ func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec) { } if in.IPFamilyPolicy != nil { in, out := &in.IPFamilyPolicy, &out.IPFamilyPolicy - *out = new(IPFamilyPolicyType) + *out = new(IPFamilyPolicy) **out = **in } if in.ExternalIPs != nil { @@ -5649,6 +5654,11 @@ func (in *TopologySpreadConstraint) DeepCopyInto(out *TopologySpreadConstraint) *out = new(NodeInclusionPolicy) **out = **in } + if in.MatchLabelKeys != nil { + in, out := &in.MatchLabelKeys, &out.MatchLabelKeys + *out = make([]string, len(*in)) + copy(*out, *in) + } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/register.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/register.go index 81dad49b1de..486bf834bfe 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/register.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/register.go @@ -52,6 +52,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { &IngressList{}, &IngressClass{}, &IngressClassList{}, + &ClusterCIDR{}, + &ClusterCIDRList{}, ) return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/types.go index cd9a8347588..d6adda6399c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/types.go @@ -154,8 +154,6 @@ type NetworkPolicyPort struct { // should be allowed by the policy. This field cannot be defined if the port field // is not defined or if the port field is defined as a named (string) port. // The endPort must be equal or greater than port. - // This feature is in Beta state and is enabled by default. - // It can be disabled using the Feature Gate "NetworkPolicyEndPort". // +optional EndPort *int32 } @@ -585,3 +583,67 @@ type ServiceBackendPort struct { // +optional Number int32 } + +// +genclient +// +genclient:nonNamespaced +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterCIDR represents a single configuration for per-Node Pod CIDR +// allocations when the MultiCIDRRangeAllocator is enabled (see the config for +// kube-controller-manager). A cluster may have any number of ClusterCIDR +// resources, all of which will be considered when allocating a CIDR for a +// Node. A ClusterCIDR is eligible to be used for a given Node when the node +// selector matches the node in question and has free CIDRs to allocate. In +// case of multiple matching ClusterCIDR resources, the allocator will attempt +// to break ties using internal heuristics, but any ClusterCIDR whose node +// selector matches the Node may be used. +type ClusterCIDR struct { + metav1.TypeMeta + metav1.ObjectMeta + + Spec ClusterCIDRSpec +} + +// ClusterCIDRSpec defines the desired state of ClusterCIDR. +type ClusterCIDRSpec struct { + // NodeSelector defines which nodes the config is applicable to. + // An empty or nil NodeSelector selects all nodes. + // This field is immutable. + // +optional + NodeSelector *api.NodeSelector + + // PerNodeHostBits defines the number of host bits to be configured per node. + // A subnet mask determines how much of the address is used for network bits + // and host bits. For example an IPv4 address of 192.168.0.0/24, splits the + // address into 24 bits for the network portion and 8 bits for the host portion. + // To allocate 256 IPs, set this field to 8 (a /24 mask for IPv4 or a /120 for IPv6). + // Minimum value is 4 (16 IPs). + // This field is immutable. + // +required + PerNodeHostBits int32 + + // IPv4 defines an IPv4 IP block in CIDR notation(e.g. "10.0.0.0/8"). + // At least one of IPv4 and IPv6 must be specified. + // This field is immutable. + // +optional + IPv4 string + + // IPv6 defines an IPv6 IP block in CIDR notation(e.g. "fd12:3456:789a:1::/64"). + // At least one of IPv4 and IPv6 must be specified. + // This field is immutable. + // +optional + IPv6 string +} + +// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object + +// ClusterCIDRList contains a list of ClusterCIDRs. +type ClusterCIDRList struct { + metav1.TypeMeta + + // +optional + metav1.ListMeta + + // Items is the list of ClusterCIDRs. + Items []ClusterCIDR +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go index 34df7bcacb8..bc5421027cd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/networking/zz_generated.deepcopy.go @@ -28,6 +28,87 @@ import ( core "k8s.io/kubernetes/pkg/apis/core" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterCIDR) DeepCopyInto(out *ClusterCIDR) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCIDR. +func (in *ClusterCIDR) DeepCopy() *ClusterCIDR { + if in == nil { + return nil + } + out := new(ClusterCIDR) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterCIDR) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterCIDRList) DeepCopyInto(out *ClusterCIDRList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]ClusterCIDR, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCIDRList. +func (in *ClusterCIDRList) DeepCopy() *ClusterCIDRList { + if in == nil { + return nil + } + out := new(ClusterCIDRList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *ClusterCIDRList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterCIDRSpec) DeepCopyInto(out *ClusterCIDRSpec) { + *out = *in + if in.NodeSelector != nil { + in, out := &in.NodeSelector, &out.NodeSelector + *out = new(core.NodeSelector) + (*in).DeepCopyInto(*out) + } + return +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterCIDRSpec. +func (in *ClusterCIDRSpec) DeepCopy() *ClusterCIDRSpec { + if in == nil { + return nil + } + out := new(ClusterCIDRSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HTTPIngressPath) DeepCopyInto(out *HTTPIngressPath) { *out = *in diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/types.go index b3884d5e480..f7da6c25197 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/types.go @@ -214,7 +214,6 @@ type PodSecurityPolicySpec struct { AllowedFlexVolumes []AllowedFlexVolume // AllowedCSIDrivers is an allowlist of inline CSI drivers that must be explicitly set to be embedded within a pod spec. // An empty value indicates that any CSI driver can be used for inline ephemeral volumes. - // This is a beta field, and is only honored if the API server enables the CSIInlineVolume feature gate. // +optional AllowedCSIDrivers []AllowedCSIDriver // AllowedUnsafeSysctls is a list of explicitly allowed unsafe sysctls, defaults to none. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/validation.go index ae2d931615e..57a0d46ea62 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/apis/policy/validation/validation.go @@ -400,29 +400,22 @@ func validatePSPAllowedProcMountTypes(fldPath *field.Path, allowedProcMountTypes const sysctlPatternSegmentFmt string = "([a-z0-9][-_a-z0-9]*)?[a-z0-9*]" -// SysctlPatternFmt is a regex used for matching valid sysctl patterns. -const SysctlPatternFmt string = "(" + apivalidation.SysctlSegmentFmt + "\\.)*" + sysctlPatternSegmentFmt - // SysctlContainSlashPatternFmt is a regex that contains a slash used for matching valid sysctl patterns. const SysctlContainSlashPatternFmt string = "(" + apivalidation.SysctlSegmentFmt + "[\\./])*" + sysctlPatternSegmentFmt -var sysctlPatternRegexp = regexp.MustCompile("^" + SysctlPatternFmt + "$") - var sysctlContainSlashPatternRegexp = regexp.MustCompile("^" + SysctlContainSlashPatternFmt + "$") // IsValidSysctlPattern checks if name is a valid sysctl pattern. -// i.e. matches sysctlPatternRegexp (or sysctlContainSlashPatternRegexp if canContainSlash is true). +// i.e. matches sysctlContainSlashPatternRegexp. // More info: -// https://man7.org/linux/man-pages/man8/sysctl.8.html -// https://man7.org/linux/man-pages/man5/sysctl.d.5.html -func IsValidSysctlPattern(name string, canContainSlash bool) bool { +// +// https://man7.org/linux/man-pages/man8/sysctl.8.html +// https://man7.org/linux/man-pages/man5/sysctl.d.5.html +func IsValidSysctlPattern(name string) bool { if len(name) > apivalidation.SysctlMaxLength { return false } - if canContainSlash { - return sysctlContainSlashPatternRegexp.MatchString(name) - } - return sysctlPatternRegexp.MatchString(name) + return sysctlContainSlashPatternRegexp.MatchString(name) } func validatePodSecurityPolicySysctlListsDoNotOverlap(allowedSysctlsFldPath, forbiddenSysctlsFldPath *field.Path, allowedUnsafeSysctls, forbiddenSysctls []string) field.ErrorList { @@ -478,12 +471,12 @@ func validatePodSecurityPolicySysctls(fldPath *field.Path, sysctls []string) fie for i, s := range sysctls { if len(s) == 0 { allErrs = append(allErrs, field.Invalid(fldPath.Index(i), sysctls[i], "empty sysctl not allowed")) - } else if !IsValidSysctlPattern(string(s), false) { + } else if !IsValidSysctlPattern(string(s)) { allErrs = append( allErrs, field.Invalid(fldPath.Index(i), sysctls[i], fmt.Sprintf("must have at most %d characters and match regex %s", apivalidation.SysctlMaxLength, - SysctlPatternFmt, + SysctlContainSlashPatternFmt, )), ) } else if s[0] == '*' { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go index 94225f42baf..0b3a397f8f8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_ref_manager.go @@ -54,8 +54,8 @@ func (m *BaseControllerRefManager) CanAdopt(ctx context.Context) error { // ClaimObject tries to take ownership of an object for this controller. // // It will reconcile the following: -// * Adopt orphans if the match function returns true. -// * Release owned objects if the match function returns false. +// - Adopt orphans if the match function returns true. +// - Release owned objects if the match function returns false. // // A non-nil error is returned if some form of reconciliation was attempted and // failed. Usually, controllers should try again later in case reconciliation @@ -143,8 +143,9 @@ type PodControllerRefManager struct { // If CanAdopt() returns a non-nil error, all adoptions will fail. // // NOTE: Once CanAdopt() is called, it will not be called again by the same -// PodControllerRefManager instance. Create a new instance if it makes -// sense to check CanAdopt() again (e.g. in a different sync pass). +// +// PodControllerRefManager instance. Create a new instance if it makes +// sense to check CanAdopt() again (e.g. in a different sync pass). func NewPodControllerRefManager( podControl PodControlInterface, controller metav1.Object, @@ -168,8 +169,8 @@ func NewPodControllerRefManager( // ClaimPods tries to take ownership of a list of Pods. // // It will reconcile the following: -// * Adopt orphans if the selector matches. -// * Release owned objects if the selector no longer matches. +// - Adopt orphans if the selector matches. +// - Release owned objects if the selector no longer matches. // // Optional: If one or more filters are specified, a Pod will only be claimed if // all filters return true. @@ -283,8 +284,9 @@ type ReplicaSetControllerRefManager struct { // If CanAdopt() returns a non-nil error, all adoptions will fail. // // NOTE: Once CanAdopt() is called, it will not be called again by the same -// ReplicaSetControllerRefManager instance. Create a new instance if it -// makes sense to check CanAdopt() again (e.g. in a different sync pass). +// +// ReplicaSetControllerRefManager instance. Create a new instance if it +// makes sense to check CanAdopt() again (e.g. in a different sync pass). func NewReplicaSetControllerRefManager( rsControl RSControlInterface, controller metav1.Object, @@ -306,8 +308,8 @@ func NewReplicaSetControllerRefManager( // ClaimReplicaSets tries to take ownership of a list of ReplicaSets. // // It will reconcile the following: -// * Adopt orphans if the selector matches. -// * Release owned objects if the selector no longer matches. +// - Adopt orphans if the selector matches. +// - Release owned objects if the selector no longer matches. // // A non-nil error is returned if some form of reconciliation was attempted and // failed. Usually, controllers should try again later in case reconciliation @@ -421,8 +423,9 @@ type ControllerRevisionControllerRefManager struct { // If canAdopt() returns a non-nil error, all adoptions will fail. // // NOTE: Once canAdopt() is called, it will not be called again by the same -// ControllerRevisionControllerRefManager instance. Create a new instance if it -// makes sense to check canAdopt() again (e.g. in a different sync pass). +// +// ControllerRevisionControllerRefManager instance. Create a new instance if it +// makes sense to check canAdopt() again (e.g. in a different sync pass). func NewControllerRevisionControllerRefManager( crControl ControllerRevisionControlInterface, controller metav1.Object, @@ -444,8 +447,8 @@ func NewControllerRevisionControllerRefManager( // ClaimControllerRevisions tries to take ownership of a list of ControllerRevisions. // // It will reconcile the following: -// * Adopt orphans if the selector matches. -// * Release owned objects if the selector no longer matches. +// - Adopt orphans if the selector matches. +// - Release owned objects if the selector no longer matches. // // A non-nil error is returned if some form of reconciliation was attempted and // failed. Usually, controllers should try again later in case reconciliation diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go index 97f8a03c9c6..241294cded6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/controller_utils.go @@ -755,24 +755,24 @@ func (s ActivePods) Less(i, j int) bool { // length. After sorting, the pods will be ordered as follows, applying each // rule in turn until one matches: // -// 1. If only one of the pods is assigned to a node, the pod that is not -// assigned comes before the pod that is. -// 2. If the pods' phases differ, a pending pod comes before a pod whose phase -// is unknown, and a pod whose phase is unknown comes before a running pod. -// 3. If exactly one of the pods is ready, the pod that is not ready comes -// before the ready pod. -// 4. If controller.kubernetes.io/pod-deletion-cost annotation is set, then -// the pod with the lower value will come first. -// 5. If the pods' ranks differ, the pod with greater rank comes before the pod -// with lower rank. -// 6. If both pods are ready but have not been ready for the same amount of -// time, the pod that has been ready for a shorter amount of time comes -// before the pod that has been ready for longer. -// 7. If one pod has a container that has restarted more than any container in -// the other pod, the pod with the container with more restarts comes -// before the other pod. -// 8. If the pods' creation times differ, the pod that was created more recently -// comes before the older pod. +// 1. If only one of the pods is assigned to a node, the pod that is not +// assigned comes before the pod that is. +// 2. If the pods' phases differ, a pending pod comes before a pod whose phase +// is unknown, and a pod whose phase is unknown comes before a running pod. +// 3. If exactly one of the pods is ready, the pod that is not ready comes +// before the ready pod. +// 4. If controller.kubernetes.io/pod-deletion-cost annotation is set, then +// the pod with the lower value will come first. +// 5. If the pods' ranks differ, the pod with greater rank comes before the pod +// with lower rank. +// 6. If both pods are ready but have not been ready for the same amount of +// time, the pod that has been ready for a shorter amount of time comes +// before the pod that has been ready for longer. +// 7. If one pod has a container that has restarted more than any container in +// the other pod, the pod with the container with more restarts comes +// before the other pod. +// 8. If the pods' creation times differ, the pod that was created more recently +// comes before the older pod. // // In 6 and 8, times are compared in a logarithmic scale. This allows a level // of randomness among equivalent Pods when sorting. If two pods have the same diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/daemon_controller.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/daemon_controller.go index 864089fefac..21bf7d4811f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/daemon_controller.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/daemon_controller.go @@ -1263,10 +1263,10 @@ func (dsc *DaemonSetsController) syncDaemonSet(ctx context.Context, key string) // NodeShouldRunDaemonPod checks a set of preconditions against a (node,daemonset) and returns a // summary. Returned booleans are: -// * shouldRun: +// - shouldRun: // Returns true when a daemonset should run on the node if a daemonset pod is not already // running on that node. -// * shouldContinueRunning: +// - shouldContinueRunning: // Returns true when a daemonset should continue running on a node if a daemonset pod is already // running on that node. func NodeShouldRunDaemonPod(node *v1.Node, ds *apps.DaemonSet) (bool, bool) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/util/daemonset_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/util/daemonset_util.go index 5058f747df3..ad91d092393 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/util/daemonset_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/daemon/util/daemonset_util.go @@ -25,9 +25,7 @@ import ( extensions "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" intstrutil "k8s.io/apimachinery/pkg/util/intstr" - utilfeature "k8s.io/apiserver/pkg/util/feature" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" - "k8s.io/kubernetes/pkg/features" ) // GetTemplateGeneration gets the template generation associated with a v1.DaemonSet by extracting it from the @@ -137,9 +135,7 @@ func SurgeCount(ds *apps.DaemonSet, numberToSchedule int) (int, error) { if ds.Spec.UpdateStrategy.Type != apps.RollingUpdateDaemonSetStrategyType { return 0, nil } - if !utilfeature.DefaultFeatureGate.Enabled(features.DaemonSetUpdateSurge) { - return 0, nil - } + r := ds.Spec.UpdateStrategy.RollingUpdate if r == nil { return 0, nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/deployment_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/deployment_util.go index d06d392e97c..cb2fac36342 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/deployment_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/controller/deployment/util/deployment_util.go @@ -302,7 +302,8 @@ var annotationsToSkip = map[string]bool{ // skipCopyAnnotation returns true if we should skip copying the annotation with the given annotation key // TODO: How to decide which annotations should / should not be copied? -// See https://github.com/kubernetes/kubernetes/pull/20035#issuecomment-179558615 +// +// See https://github.com/kubernetes/kubernetes/pull/20035#issuecomment-179558615 func skipCopyAnnotation(key string) bool { return annotationsToSkip[key] } @@ -595,9 +596,9 @@ func ListPods(deployment *apps.Deployment, rsList []*apps.ReplicaSet, getPodList // EqualIgnoreHash returns true if two given podTemplateSpec are equal, ignoring the diff in value of Labels[pod-template-hash] // We ignore pod-template-hash because: -// 1. The hash result would be different upon podTemplateSpec API changes -// (e.g. the addition of a new field will cause the hash code to change) -// 2. The deployment template won't have hash labels +// 1. The hash result would be different upon podTemplateSpec API changes +// (e.g. the addition of a new field will cause the hash code to change) +// 2. The deployment template won't have hash labels func EqualIgnoreHash(template1, template2 *v1.PodTemplateSpec) bool { t1Copy := template1.DeepCopy() t2Copy := template2.DeepCopy() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/config.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/config.go index 8b8ef911518..dccfea1cd20 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/config.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/config.go @@ -84,12 +84,12 @@ func GetPreferredDockercfgPath() string { return preferredPath } -//DefaultDockercfgPaths returns default search paths of .dockercfg +// DefaultDockercfgPaths returns default search paths of .dockercfg func DefaultDockercfgPaths() []string { return []string{GetPreferredDockercfgPath(), workingDirPath, homeDirPath, rootDirPath} } -//DefaultDockerConfigJSONPaths returns default search paths of .docker/config.json +// DefaultDockerConfigJSONPaths returns default search paths of .docker/config.json func DefaultDockerConfigJSONPaths() []string { return []string{GetPreferredDockercfgPath(), workingDirPath, homeJSONDirPath, rootJSONDirPath} } @@ -156,7 +156,7 @@ func ReadDockerConfigJSONFile(searchPaths []string) (cfg DockerConfig, err error } -//ReadSpecificDockerConfigJSONFile attempts to read docker configJSON from a given file path. +// ReadSpecificDockerConfigJSONFile attempts to read docker configJSON from a given file path. func ReadSpecificDockerConfigJSONFile(filePath string) (cfg DockerConfig, err error) { var contents []byte diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/metadata.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/metadata.go index d87bd5a9440..e71cb2f24d6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/metadata.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/gcp/metadata.go @@ -110,8 +110,9 @@ type DockerConfigURLKeyProvider struct { } // ContainerRegistryProvider is a DockerConfigProvider that provides a dockercfg with: -// Username: "_token" -// Password: "{access token from metadata}" +// +// Username: "_token" +// Password: "{access token from metadata}" type ContainerRegistryProvider struct { MetadataProvider } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/keyring.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/keyring.go index 4bbe5c4d9f1..0c5b3a0c934 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/keyring.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/keyring.go @@ -31,9 +31,9 @@ import ( // reverse index across the registry endpoints. A registry endpoint is made // up of a host (e.g. registry.example.com), but it may also contain a path // (e.g. registry.example.com/foo) This index is important for two reasons: -// - registry endpoints may overlap, and when this happens we must find the -// most specific match for a given image -// - iterating a map does not yield predictable results +// - registry endpoints may overlap, and when this happens we must find the +// most specific match for a given image +// - iterating a map does not yield predictable results type DockerKeyring interface { Lookup(image string) ([]AuthConfig, bool) } @@ -197,8 +197,9 @@ func URLsMatchStr(glob string, target string) (bool, error) { // glob wild cards in the host name. // // Examples: -// globURL=*.docker.io, targetURL=blah.docker.io => match -// globURL=*.docker.io, targetURL=not.right.io => no match +// +// globURL=*.docker.io, targetURL=blah.docker.io => match +// globURL=*.docker.io, targetURL=not.right.io => no match // // Note that we don't support wildcards in ports and paths yet. func URLsMatch(globURL *url.URL, targetURL *url.URL) (bool, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/plugin/plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/plugin/plugin.go index 297f3164aa9..5e6db98b465 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/plugin/plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/credentialprovider/plugin/plugin.go @@ -367,7 +367,7 @@ type execPlugin struct { // ExecPlugin executes the plugin binary with arguments and environment variables specified in CredentialProviderConfig: // -// $ ENV_NAME=ENV_VALUE args[0] args[1] << args[0] args[1] << ("metadata.annotations", "myKey", true) -// - "metadata.annotations['a[b]c']" --> ("metadata.annotations", "a[b]c", true) -// - "metadata.labels['']" --> ("metadata.labels", "", true) -// - "metadata.labels" --> ("metadata.labels", "", false) +// +// "metadata.annotations['myKey']" --> ("metadata.annotations", "myKey", true) +// "metadata.annotations['a[b]c']" --> ("metadata.annotations", "a[b]c", true) +// "metadata.labels['']" --> ("metadata.labels", "", true) +// "metadata.labels" --> ("metadata.labels", "", false) func SplitMaybeSubscriptedPath(fieldPath string) (string, string, bool) { if !strings.HasSuffix(fieldPath, "']") { return fieldPath, "", false diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/types.go index 6c6377c500a..0ec23416fab 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/types.go @@ -20,6 +20,7 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" logsapi "k8s.io/component-base/logs/api/v1" + tracingapi "k8s.io/component-base/tracing/api/v1" ) // HairpinMode denotes how the kubelet should configure networking to handle @@ -370,7 +371,7 @@ type KubeletConfiguration struct { KubeReservedCgroup string // This flag specifies the various Node Allocatable enforcements that Kubelet needs to perform. // This flag accepts a list of options. Acceptable options are `pods`, `system-reserved` & `kube-reserved`. - // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. + // Refer to [Node Allocatable](https://github.com/kubernetes/design-proposals-archive/blob/main/node/node-allocatable.md) doc for more information. EnforceNodeAllocatable []string // This option specifies the cpu list reserved for the host level system threads and kubernetes related threads. // This provide a "static" CPU list rather than the "dynamic" list by system-reserved and kube-reserved. @@ -441,10 +442,24 @@ type KubeletConfiguration struct { // is true and upon the initial registration of the node. // +optional RegisterWithTaints []v1.Taint - // registerNode enables automatic registration with the apiserver. // +optional RegisterNode bool + // Tracing specifies the versioned configuration for OpenTelemetry tracing clients. + // See http://kep.k8s.io/2832 for more details. + // +featureGate=KubeletTracing + // +optional + Tracing *tracingapi.TracingConfiguration + + // LocalStorageCapacityIsolation enables local ephemeral storage isolation feature. The default setting is true. + // This feature allows users to set request/limit for container's ephemeral storage and manage it in a similar way + // as cpu and memory. It also allows setting sizeLimit for emptyDir volume, which will trigger pod eviction if disk + // usage from the volume exceeds the limit. + // This feature depends on the capability of detecting correct root file system disk usage. For certain systems, + // such as kind rootless, if this capability cannot be supported, the feature LocalStorageCapacityIsolation should be + // disabled. Once disabled, user should not set request/limit for container's ephemeral storage, or sizeLimit for emptyDir. + // +optional + LocalStorageCapacityIsolation bool } // KubeletAuthorizationMode denotes the authorization mode for the kubelet diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/defaults.go index be5715ba85a..82315403081 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/defaults.go @@ -44,7 +44,7 @@ const ( var ( zeroDuration = metav1.Duration{} // TODO: Move these constants to k8s.io/kubelet/config/v1beta1 instead? - // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information. + // Refer to [Node Allocatable](https://git.k8s.io/design-proposals-archive/node/node-allocatable.md) doc for more information. DefaultNodeAllocatableEnforcement = []string{"pods"} ) @@ -264,4 +264,7 @@ func SetDefaults_KubeletConfiguration(obj *kubeletconfigv1beta1.KubeletConfigura if obj.RegisterNode == nil { obj.RegisterNode = utilpointer.BoolPtr(true) } + if obj.LocalStorageCapacityIsolation == nil { + obj.LocalStorageCapacityIsolation = utilpointer.BoolPtr(true) + } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/zz_generated.conversion.go index 0f50f13d291..daa73aa1f8f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/zz_generated.conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1/zz_generated.conversion.go @@ -28,6 +28,7 @@ import ( v1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" + apiv1 "k8s.io/component-base/tracing/api/v1" v1beta1 "k8s.io/kubelet/config/v1beta1" config "k8s.io/kubernetes/pkg/kubelet/apis/config" ) @@ -506,6 +507,10 @@ func autoConvert_v1beta1_KubeletConfiguration_To_config_KubeletConfiguration(in if err := v1.Convert_Pointer_bool_To_bool(&in.RegisterNode, &out.RegisterNode, s); err != nil { return err } + out.Tracing = (*apiv1.TracingConfiguration)(unsafe.Pointer(in.Tracing)) + if err := v1.Convert_Pointer_bool_To_bool(&in.LocalStorageCapacityIsolation, &out.LocalStorageCapacityIsolation, s); err != nil { + return err + } return nil } @@ -680,6 +685,10 @@ func autoConvert_config_KubeletConfiguration_To_v1beta1_KubeletConfiguration(in if err := v1.Convert_bool_To_Pointer_bool(&in.RegisterNode, &out.RegisterNode, s); err != nil { return err } + out.Tracing = (*apiv1.TracingConfiguration)(unsafe.Pointer(in.Tracing)) + if err := v1.Convert_bool_To_Pointer_bool(&in.LocalStorageCapacityIsolation, &out.LocalStorageCapacityIsolation, s); err != nil { + return err + } return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/validation/validation.go index 872c912957c..afd43d70b8e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/validation/validation.go @@ -27,6 +27,7 @@ import ( "k8s.io/component-base/featuregate" logsapi "k8s.io/component-base/logs/api/v1" "k8s.io/component-base/metrics" + tracingapi "k8s.io/component-base/tracing/api/v1" "k8s.io/kubernetes/pkg/features" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" @@ -241,6 +242,14 @@ func ValidateKubeletConfiguration(kc *kubeletconfig.KubeletConfiguration, featur allErrors = append(allErrors, errs.ToAggregate().Errors()...) } + if localFeatureGate.Enabled(features.KubeletTracing) { + if errs := tracingapi.ValidateTracingConfiguration(kc.Tracing, localFeatureGate, field.NewPath("tracing")); len(errs) > 0 { + allErrors = append(allErrors, errs.ToAggregate().Errors()...) + } + } else if kc.Tracing != nil { + allErrors = append(allErrors, fmt.Errorf("invalid configuration: tracing should not be configured if KubeletTracing feature flag is disabled.")) + } + if localFeatureGate.Enabled(features.MemoryQoS) && kc.MemoryThrottlingFactor == nil { allErrors = append(allErrors, fmt.Errorf("invalid configuration: memoryThrottlingFactor is required when MemoryQoS feature flag is enabled")) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/zz_generated.deepcopy.go index 99c3c339335..59581e52e42 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/zz_generated.deepcopy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/config/zz_generated.deepcopy.go @@ -25,6 +25,7 @@ import ( corev1 "k8s.io/api/core/v1" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" runtime "k8s.io/apimachinery/pkg/runtime" + apiv1 "k8s.io/component-base/tracing/api/v1" ) // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. @@ -307,6 +308,11 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) { (*in)[i].DeepCopyInto(&(*out)[i]) } } + if in.Tracing != nil { + in, out := &in.Tracing, &out.Tracing + *out = new(apiv1.TracingConfiguration) + (*in).DeepCopyInto(*out) + } return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/podresources/client.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/podresources/client.go index 2d27c623e0c..fcc6f1b903d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/podresources/client.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/apis/podresources/client.go @@ -22,6 +22,7 @@ import ( "time" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "k8s.io/kubelet/pkg/apis/podresources/v1" "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" @@ -41,7 +42,10 @@ func GetV1alpha1Client(socket string, connectionTimeout time.Duration, maxMsgSiz ctx, cancel := context.WithTimeout(context.Background(), connectionTimeout) defer cancel() - conn, err := grpc.DialContext(ctx, addr, grpc.WithInsecure(), grpc.WithContextDialer(dialer), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) + conn, err := grpc.DialContext(ctx, addr, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithContextDialer(dialer), + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) if err != nil { return nil, nil, fmt.Errorf("error dialing socket %s: %v", socket, err) } @@ -57,7 +61,10 @@ func GetV1Client(socket string, connectionTimeout time.Duration, maxMsgSize int) ctx, cancel := context.WithTimeout(context.Background(), connectionTimeout) defer cancel() - conn, err := grpc.DialContext(ctx, addr, grpc.WithInsecure(), grpc.WithContextDialer(dialer), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) + conn, err := grpc.DialContext(ctx, addr, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithContextDialer(dialer), + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) if err != nil { return nil, nil, fmt.Errorf("error dialing socket %s: %v", socket, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go index 1b118722777..370e374df55 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_linux.go @@ -80,7 +80,7 @@ func init() { } // New creates a new cAdvisor Interface for linux systems. -func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupRoots []string, usingLegacyStats bool) (Interface, error) { +func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupRoots []string, usingLegacyStats, localStorageCapacityIsolation bool) (Interface, error) { sysFs := sysfs.NewRealSysFs() includedMetrics := cadvisormetrics.MetricSet{ @@ -99,7 +99,7 @@ func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupRoots [ includedMetrics[cadvisormetrics.AcceleratorUsageMetrics] = struct{}{} } - if usingLegacyStats || utilfeature.DefaultFeatureGate.Enabled(kubefeatures.LocalStorageCapacityIsolation) { + if usingLegacyStats || localStorageCapacityIsolation { includedMetrics[cadvisormetrics.DiskUsageMetrics] = struct{}{} } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go index 7f33ba9b03a..40113a9ce82 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_unsupported.go @@ -33,7 +33,7 @@ type cadvisorUnsupported struct { var _ Interface = new(cadvisorUnsupported) // New creates a new cAdvisor Interface for unsupported systems. -func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupsRoots []string, usingLegacyStats bool) (Interface, error) { +func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupsRoots []string, usingLegacyStats, localStorageCapacityIsolation bool) (Interface, error) { return &cadvisorUnsupported{}, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go index a3fd930055b..ded51e7caa1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cadvisor/cadvisor_windows.go @@ -34,7 +34,7 @@ type cadvisorClient struct { var _ Interface = new(cadvisorClient) // New creates a cAdvisor and exports its API on the specified port if port > 0. -func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupRoots []string, usingLegacyStats bool) (Interface, error) { +func New(imageFsInfoProvider ImageFsInfoProvider, rootPath string, cgroupRoots []string, usingLegacyStats, localStorageCapacityIsolation bool) (Interface, error) { client, err := winstats.NewPerfCounterClient() return &cadvisorClient{ rootPath: rootPath, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager.go index e67dbfc3daa..bf52a1e4c06 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager.go @@ -47,7 +47,7 @@ type ContainerManager interface { // Runs the container manager's housekeeping. // - Ensures that the Docker daemon is in a container. // - Creates the system container where all non-containerized processes run. - Start(*v1.Node, ActivePodsFunc, config.SourcesReady, status.PodStatusProvider, internalapi.RuntimeService) error + Start(*v1.Node, ActivePodsFunc, config.SourcesReady, status.PodStatusProvider, internalapi.RuntimeService, bool) error // SystemCgroupsLimit returns resources allocated to system cgroups in the machine. // These cgroups include the system and Kubernetes services. @@ -73,7 +73,7 @@ type ContainerManager interface { GetNodeAllocatableReservation() v1.ResourceList // GetCapacity returns the amount of compute resources tracked by container manager available on the node. - GetCapacity() v1.ResourceList + GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList // GetDevicePluginResourceCapacity returns the node capacity (amount of total device plugin resources), // node allocatable (amount of total healthy resources reported by device plugin), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go index ecf4d89c1eb..44c8cda6c40 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_linux.go @@ -554,7 +554,8 @@ func (cm *containerManagerImpl) Start(node *v1.Node, activePods ActivePodsFunc, sourcesReady config.SourcesReady, podStatusProvider status.PodStatusProvider, - runtimeService internalapi.RuntimeService) error { + runtimeService internalapi.RuntimeService, + localStorageCapacityIsolation bool) error { // Initialize CPU manager if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.CPUManager) { @@ -578,7 +579,7 @@ func (cm *containerManagerImpl) Start(node *v1.Node, // allocatable of the node cm.nodeInfo = node - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.LocalStorageCapacityIsolation) { + if localStorageCapacityIsolation { rootfs, err := cm.cadvisorInterface.RootFsInfo() if err != nil { return fmt.Errorf("failed to get rootfs info: %v", err) @@ -861,7 +862,6 @@ func getContainer(pid int) (string, error) { // // The reason of leaving kernel threads at root cgroup is that we don't want to tie the // execution of these threads with to-be defined /system quota and create priority inversions. -// func ensureSystemCgroups(rootCgroupPath string, manager cgroups.Manager) error { // Move non-kernel PIDs to the system container. // Only keep errors on latest attempt. @@ -916,8 +916,8 @@ func isKernelPid(pid int) bool { // GetCapacity returns node capacity data for "cpu", "memory", "ephemeral-storage", and "huge-pages*" // At present this method is only invoked when introspecting ephemeral storage -func (cm *containerManagerImpl) GetCapacity() v1.ResourceList { - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.LocalStorageCapacityIsolation) { +func (cm *containerManagerImpl) GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList { + if localStorageCapacityIsolation { // We store allocatable ephemeral-storage in the capacity property once we Start() the container manager if _, ok := cm.capacity[v1.ResourceEphemeralStorage]; !ok { // If we haven't yet stored the capacity for ephemeral-storage, we can try to fetch it directly from cAdvisor, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_stub.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_stub.go index a5b0e523b13..6bd5f3e3689 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_stub.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_stub.go @@ -41,7 +41,7 @@ type containerManagerStub struct { var _ ContainerManager = &containerManagerStub{} -func (cm *containerManagerStub) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService) error { +func (cm *containerManagerStub) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService, _ bool) error { klog.V(2).InfoS("Starting stub container manager") return nil } @@ -74,7 +74,10 @@ func (cm *containerManagerStub) GetNodeAllocatableReservation() v1.ResourceList return nil } -func (cm *containerManagerStub) GetCapacity() v1.ResourceList { +func (cm *containerManagerStub) GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList { + if !localStorageCapacityIsolation { + return v1.ResourceList{} + } c := v1.ResourceList{ v1.ResourceEphemeralStorage: *resource.NewQuantity( int64(0), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_unsupported.go index 1a0587c36dc..fb1c4a79dbf 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_unsupported.go @@ -38,7 +38,7 @@ type unsupportedContainerManager struct { var _ ContainerManager = &unsupportedContainerManager{} -func (unsupportedContainerManager) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService) error { +func (unsupportedContainerManager) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService, _ bool) error { return fmt.Errorf("Container Manager is unsupported in this build") } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_windows.go index ec56fcf2c73..dc325a3a9f9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/container_manager_windows.go @@ -30,11 +30,9 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" internalapi "k8s.io/cri-api/pkg/apis" podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" - kubefeatures "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/cadvisor" "k8s.io/kubernetes/pkg/kubelet/cm/admission" "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager" @@ -72,10 +70,11 @@ func (cm *containerManagerImpl) Start(node *v1.Node, activePods ActivePodsFunc, sourcesReady config.SourcesReady, podStatusProvider status.PodStatusProvider, - runtimeService internalapi.RuntimeService) error { + runtimeService internalapi.RuntimeService, + localStorageCapacityIsolation bool) error { klog.V(2).InfoS("Starting Windows container manager") - if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.LocalStorageCapacityIsolation) { + if localStorageCapacityIsolation { rootfs, err := cm.cadvisorInterface.RootFsInfo() if err != nil { return fmt.Errorf("failed to get rootfs info: %v", err) @@ -171,7 +170,7 @@ func (cm *containerManagerImpl) GetNodeAllocatableReservation() v1.ResourceList return result } -func (cm *containerManagerImpl) GetCapacity() v1.ResourceList { +func (cm *containerManagerImpl) GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList { return cm.capacity } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_assignment.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_assignment.go index 01ddf57bb7b..7628769d5df 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_assignment.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_assignment.go @@ -501,35 +501,35 @@ func takeByTopologyNUMAPacked(topo *topology.CPUTopology, availableCPUs cpuset.C // At a high-level this algorithm can be summarized as: // // For each NUMA single node: -// * If all requested CPUs can be allocated from this NUMA node; -// --> Do the allocation by running takeByTopologyNUMAPacked() over the -// available CPUs in that NUMA node and return +// - If all requested CPUs can be allocated from this NUMA node; +// --> Do the allocation by running takeByTopologyNUMAPacked() over the +// available CPUs in that NUMA node and return // // Otherwise, for each pair of NUMA nodes: -// * If the set of requested CPUs (modulo 2) can be evenly split across -// the 2 NUMA nodes; AND -// * Any remaining CPUs (after the modulo operation) can be striped across -// some subset of the NUMA nodes; -// --> Do the allocation by running takeByTopologyNUMAPacked() over the -// available CPUs in both NUMA nodes and return +// - If the set of requested CPUs (modulo 2) can be evenly split across +// the 2 NUMA nodes; AND +// - Any remaining CPUs (after the modulo operation) can be striped across +// some subset of the NUMA nodes; +// --> Do the allocation by running takeByTopologyNUMAPacked() over the +// available CPUs in both NUMA nodes and return // // Otherwise, for each 3-tuple of NUMA nodes: -// * If the set of requested CPUs (modulo 3) can be evenly distributed -// across the 3 NUMA nodes; AND -// * Any remaining CPUs (after the modulo operation) can be striped across -// some subset of the NUMA nodes; -// --> Do the allocation by running takeByTopologyNUMAPacked() over the -// available CPUs in all three NUMA nodes and return +// - If the set of requested CPUs (modulo 3) can be evenly distributed +// across the 3 NUMA nodes; AND +// - Any remaining CPUs (after the modulo operation) can be striped across +// some subset of the NUMA nodes; +// --> Do the allocation by running takeByTopologyNUMAPacked() over the +// available CPUs in all three NUMA nodes and return // // ... // // Otherwise, for the set of all NUMA nodes: -// * If the set of requested CPUs (modulo NUM_NUMA_NODES) can be evenly -// distributed across all NUMA nodes; AND -// * Any remaining CPUs (after the modulo operation) can be striped across -// some subset of the NUMA nodes; -// --> Do the allocation by running takeByTopologyNUMAPacked() over the -// available CPUs in all NUMA nodes and return +// - If the set of requested CPUs (modulo NUM_NUMA_NODES) can be evenly +// distributed across all NUMA nodes; AND +// - Any remaining CPUs (after the modulo operation) can be striped across +// some subset of the NUMA nodes; +// --> Do the allocation by running takeByTopologyNUMAPacked() over the +// available CPUs in all NUMA nodes and return // // If none of the above conditions can be met, then resort back to a // best-effort fit of packing CPUs into NUMA nodes by calling diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go index dde49b6ec8c..0928c688e08 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/cpu_manager.go @@ -42,7 +42,7 @@ import ( type ActivePodsFunc func() []*v1.Pod type runtimeService interface { - UpdateContainerResources(id string, resources *runtimeapi.LinuxContainerResources) error + UpdateContainerResources(id string, resources *runtimeapi.ContainerResources) error } type policyName string @@ -515,8 +515,10 @@ func (m *manager) updateContainerCPUSet(containerID string, cpus cpuset.CPUSet) // this patch-like partial resources. return m.containerRuntime.UpdateContainerResources( containerID, - &runtimeapi.LinuxContainerResources{ - CpusetCpus: cpus.String(), + &runtimeapi.ContainerResources{ + Linux: &runtimeapi.LinuxContainerResources{ + CpusetCpus: cpus.String(), + }, }) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_options.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_options.go index 64b14833e58..d04b60420e1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_options.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_options.go @@ -23,16 +23,20 @@ import ( "k8s.io/apimachinery/pkg/util/sets" utilfeature "k8s.io/apiserver/pkg/util/feature" kubefeatures "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" + "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" ) const ( FullPCPUsOnlyOption string = "full-pcpus-only" DistributeCPUsAcrossNUMAOption string = "distribute-cpus-across-numa" + AlignBySocketOption string = "align-by-socket" ) var ( alphaOptions = sets.NewString( DistributeCPUsAcrossNUMAOption, + AlignBySocketOption, ) betaOptions = sets.NewString( FullPCPUsOnlyOption, @@ -69,6 +73,9 @@ type StaticPolicyOptions struct { // Flag to evenly distribute CPUs across NUMA nodes in cases where more // than one NUMA node is required to satisfy the allocation. DistributeCPUsAcrossNUMA bool + // Flag to ensure CPUs are considered aligned at socket boundary rather than + // NUMA boundary + AlignBySocket bool } func NewStaticPolicyOptions(policyOptions map[string]string) (StaticPolicyOptions, error) { @@ -91,6 +98,12 @@ func NewStaticPolicyOptions(policyOptions map[string]string) (StaticPolicyOption return opts, fmt.Errorf("bad value for option %q: %w", name, err) } opts.DistributeCPUsAcrossNUMA = optValue + case AlignBySocketOption: + optValue, err := strconv.ParseBool(value) + if err != nil { + return opts, fmt.Errorf("bad value for option %q: %w", name, err) + } + opts.AlignBySocket = optValue default: // this should never be reached, we already detect unknown options, // but we keep it as further safety. @@ -99,3 +112,17 @@ func NewStaticPolicyOptions(policyOptions map[string]string) (StaticPolicyOption } return opts, nil } + +func ValidateStaticPolicyOptions(opts StaticPolicyOptions, topology *topology.CPUTopology, topologyManager topologymanager.Store) error { + if opts.AlignBySocket { + // Not compatible with topology manager single-numa-node policy option. + if topologyManager.GetPolicy().Name() == topologymanager.PolicySingleNumaNode { + return fmt.Errorf("Topolgy manager %s policy is incompatible with CPUManager %s policy option", topologymanager.PolicySingleNumaNode, AlignBySocketOption) + } + // Not compatible with topology when number of sockets are more than number of NUMA nodes. + if topology.NumSockets > topology.NumNUMANodes { + return fmt.Errorf("Align by socket is not compatible with hardware where number of sockets are more than number of NUMA") + } + } + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go index a872b389c46..ff9e6a20e14 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/policy_static.go @@ -65,24 +65,24 @@ func (e SMTAlignmentError) Type() string { // // The static policy maintains the following sets of logical CPUs: // -// - SHARED: Burstable, BestEffort, and non-integral Guaranteed containers -// run here. Initially this contains all CPU IDs on the system. As -// exclusive allocations are created and destroyed, this CPU set shrinks -// and grows, accordingly. This is stored in the state as the default -// CPU set. +// - SHARED: Burstable, BestEffort, and non-integral Guaranteed containers +// run here. Initially this contains all CPU IDs on the system. As +// exclusive allocations are created and destroyed, this CPU set shrinks +// and grows, accordingly. This is stored in the state as the default +// CPU set. // -// - RESERVED: A subset of the shared pool which is not exclusively -// allocatable. The membership of this pool is static for the lifetime of -// the Kubelet. The size of the reserved pool is -// ceil(systemreserved.cpu + kubereserved.cpu). -// Reserved CPUs are taken topologically starting with lowest-indexed -// physical core, as reported by cAdvisor. +// - RESERVED: A subset of the shared pool which is not exclusively +// allocatable. The membership of this pool is static for the lifetime of +// the Kubelet. The size of the reserved pool is +// ceil(systemreserved.cpu + kubereserved.cpu). +// Reserved CPUs are taken topologically starting with lowest-indexed +// physical core, as reported by cAdvisor. // -// - ASSIGNABLE: Equal to SHARED - RESERVED. Exclusive CPUs are allocated -// from this pool. +// - ASSIGNABLE: Equal to SHARED - RESERVED. Exclusive CPUs are allocated +// from this pool. // -// - EXCLUSIVE ALLOCATIONS: CPU sets assigned exclusively to one container. -// These are stored as explicit assignments in the state. +// - EXCLUSIVE ALLOCATIONS: CPU sets assigned exclusively to one container. +// These are stored as explicit assignments in the state. // // When an exclusive allocation is made, the static policy also updates the // default cpuset in the state abstraction. The CPU manager's periodic @@ -115,6 +115,10 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv if err != nil { return nil, err } + err = ValidateStaticPolicyOptions(opts, topology, affinity) + if err != nil { + return nil, err + } klog.InfoS("Static policy created with configuration", "options", opts) @@ -325,10 +329,7 @@ func (p *staticPolicy) allocateCPUs(s state.State, numCPUs int, numaAffinity bit // If there are aligned CPUs in numaAffinity, attempt to take those first. result := cpuset.NewCPUSet() if numaAffinity != nil { - alignedCPUs := cpuset.NewCPUSet() - for _, numaNodeID := range numaAffinity.GetBits() { - alignedCPUs = alignedCPUs.Union(allocatableCPUs.Intersection(p.topology.CPUDetails.CPUsInNUMANodes(numaNodeID))) - } + alignedCPUs := p.getAlignedCPUs(numaAffinity, allocatableCPUs) numAlignedToAlloc := alignedCPUs.Size() if numCPUs < numAlignedToAlloc { @@ -571,6 +572,10 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu // to the minAffinitySize. Only those with an equal number of bits set (and // with a minimal set of numa nodes) will be considered preferred. for i := range hints { + if p.options.AlignBySocket && p.isHintSocketAligned(hints[i], minAffinitySize) { + hints[i].Preferred = true + continue + } if hints[i].NUMANodeAffinity.Count() == minAffinitySize { hints[i].Preferred = true } @@ -578,3 +583,39 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu return hints } + +// isHintSocketAligned function return true if numa nodes in hint are socket aligned. +func (p *staticPolicy) isHintSocketAligned(hint topologymanager.TopologyHint, minAffinitySize int) bool { + numaNodesBitMask := hint.NUMANodeAffinity.GetBits() + numaNodesPerSocket := p.topology.NumNUMANodes / p.topology.NumSockets + if numaNodesPerSocket == 0 { + return false + } + // minSockets refers to minimum number of socket required to satify allocation. + // A hint is considered socket aligned if sockets across which numa nodes span is equal to minSockets + minSockets := (minAffinitySize + numaNodesPerSocket - 1) / numaNodesPerSocket + return p.topology.CPUDetails.SocketsInNUMANodes(numaNodesBitMask...).Size() == minSockets +} + +// getAlignedCPUs return set of aligned CPUs based on numa affinity mask and configured policy options. +func (p *staticPolicy) getAlignedCPUs(numaAffinity bitmask.BitMask, allocatableCPUs cpuset.CPUSet) cpuset.CPUSet { + alignedCPUs := cpuset.NewCPUSet() + numaBits := numaAffinity.GetBits() + + // If align-by-socket policy option is enabled, NUMA based hint is expanded to + // socket aligned hint. It will ensure that first socket aligned available CPUs are + // allocated before we try to find CPUs across socket to satisfy allocation request. + if p.options.AlignBySocket { + socketBits := p.topology.CPUDetails.SocketsInNUMANodes(numaBits...).ToSliceNoSort() + for _, socketID := range socketBits { + alignedCPUs = alignedCPUs.Union(allocatableCPUs.Intersection(p.topology.CPUDetails.CPUsInSockets(socketID))) + } + return alignedCPUs + } + + for _, numaNodeID := range numaBits { + alignedCPUs = alignedCPUs.Union(allocatableCPUs.Intersection(p.topology.CPUDetails.CPUsInNUMANodes(numaNodeID))) + } + + return alignedCPUs +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/client.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/client.go index 13b1249009b..79436a17561 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/client.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/client.go @@ -24,6 +24,7 @@ import ( "time" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "k8s.io/klog/v2" api "k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1" @@ -117,7 +118,9 @@ func dial(unixSocketPath string) (api.DevicePluginClient, *grpc.ClientConn, erro ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - c, err := grpc.DialContext(ctx, unixSocketPath, grpc.WithInsecure(), grpc.WithBlock(), + c, err := grpc.DialContext(ctx, unixSocketPath, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithBlock(), grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) { return (&net.Dialer{}).DialContext(ctx, "unix", addr) }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/stub.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/stub.go index dee1a9414aa..d354222590b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/stub.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/plugin/v1beta1/stub.go @@ -25,6 +25,7 @@ import ( "time" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/klog/v2" @@ -191,7 +192,9 @@ func (m *Stub) Register(kubeletEndpoint, resourceName string, pluginSockDir stri ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - conn, err := grpc.DialContext(ctx, kubeletEndpoint, grpc.WithInsecure(), grpc.WithBlock(), + conn, err := grpc.DialContext(ctx, kubeletEndpoint, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithBlock(), grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) { return (&net.Dialer{}).DialContext(ctx, "unix", addr) })) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/fake_container_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/fake_container_manager.go index c907301a6d4..685246276c5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/fake_container_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/fake_container_manager.go @@ -50,7 +50,7 @@ func NewFakeContainerManager() *FakeContainerManager { } } -func (cm *FakeContainerManager) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService) error { +func (cm *FakeContainerManager) Start(_ *v1.Node, _ ActivePodsFunc, _ config.SourcesReady, _ status.PodStatusProvider, _ internalapi.RuntimeService, _ bool) error { cm.Lock() defer cm.Unlock() cm.CalledFunctions = append(cm.CalledFunctions, "Start") @@ -106,10 +106,13 @@ func (cm *FakeContainerManager) GetNodeAllocatableReservation() v1.ResourceList return nil } -func (cm *FakeContainerManager) GetCapacity() v1.ResourceList { +func (cm *FakeContainerManager) GetCapacity(localStorageCapacityIsolation bool) v1.ResourceList { cm.Lock() defer cm.Unlock() cm.CalledFunctions = append(cm.CalledFunctions, "GetCapacity") + if !localStorageCapacityIsolation { + return v1.ResourceList{} + } c := v1.ResourceList{ v1.ResourceEphemeralStorage: *resource.NewQuantity( int64(0), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/memory_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/memory_manager.go index dad537e9a47..c567871f1b0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/memory_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/memorymanager/memory_manager.go @@ -43,7 +43,7 @@ const memoryManagerStateFileName = "memory_manager_state" type ActivePodsFunc func() []*v1.Pod type runtimeService interface { - UpdateContainerResources(id string, resources *runtimeapi.LinuxContainerResources) error + UpdateContainerResources(id string, resources *runtimeapi.ContainerResources) error } type sourcesReadyStub struct{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/node_container_manager_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/node_container_manager_linux.go index 4b35d3c4fe3..b6c0457bac5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/node_container_manager_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/node_container_manager_linux.go @@ -40,7 +40,7 @@ const ( defaultNodeAllocatableCgroupName = "kubepods" ) -//createNodeAllocatableCgroups creates Node Allocatable Cgroup when CgroupsPerQOS flag is specified as true +// createNodeAllocatableCgroups creates Node Allocatable Cgroup when CgroupsPerQOS flag is specified as true func (cm *containerManagerImpl) createNodeAllocatableCgroups() error { nodeAllocatable := cm.internalCapacity // Use Node Allocatable limits instead of capacity if the user requested enforcing node allocatable. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/fake_topology_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/fake_topology_manager.go index 8a60aa23347..921b47dab3b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/fake_topology_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/fake_topology_manager.go @@ -24,10 +24,11 @@ import ( ) type fakeManager struct { - hint *TopologyHint + hint *TopologyHint + policy Policy } -//NewFakeManager returns an instance of FakeManager +// NewFakeManager returns an instance of FakeManager func NewFakeManager() Manager { klog.InfoS("NewFakeManager") return &fakeManager{} @@ -37,7 +38,16 @@ func NewFakeManager() Manager { func NewFakeManagerWithHint(hint *TopologyHint) Manager { klog.InfoS("NewFakeManagerWithHint") return &fakeManager{ - hint: hint, + hint: hint, + policy: NewNonePolicy(), + } +} + +// NewFakeManagerWithPolicy returns an instance of fake topology manager with specified policy +func NewFakeManagerWithPolicy(policy Policy) Manager { + klog.InfoS("NewFakeManagerWithPolicy") + return &fakeManager{ + policy: policy, } } @@ -50,6 +60,10 @@ func (m *fakeManager) GetAffinity(podUID string, containerName string) TopologyH return *m.hint } +func (m *fakeManager) GetPolicy() Policy { + return m.policy +} + func (m *fakeManager) AddHintProvider(h HintProvider) { klog.InfoS("AddHintProvider", "hintProvider", h) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/policy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/policy.go index 40255ed95cc..76b469fa1fc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/policy.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/policy.go @@ -293,18 +293,19 @@ func mergeFilteredHints(numaNodes []int, filteredHints [][]TopologyHint) Topolog // permutation as it is found. It is the equivalent of: // // for i := 0; i < len(providerHints[0]); i++ -// for j := 0; j < len(providerHints[1]); j++ -// for k := 0; k < len(providerHints[2]); k++ -// ... -// for z := 0; z < len(providerHints[-1]); z++ -// permutation := []TopologyHint{ -// providerHints[0][i], -// providerHints[1][j], -// providerHints[2][k], -// ... -// providerHints[-1][z] -// } -// callback(permutation) +// +// for j := 0; j < len(providerHints[1]); j++ +// for k := 0; k < len(providerHints[2]); k++ +// ... +// for z := 0; z < len(providerHints[-1]); z++ +// permutation := []TopologyHint{ +// providerHints[0][i], +// providerHints[1][j], +// providerHints[2][k], +// ... +// providerHints[-1][z] +// } +// callback(permutation) func iterateAllProviderTopologyHints(allProviderHints [][]TopologyHint, callback func([]TopologyHint)) { // Internal helper function to accumulate the permutation before calling the callback. var iterate func(i int, accum []TopologyHint) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/scope.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/scope.go index 912aba3fde0..ed149df5bad 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/scope.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/scope.go @@ -38,6 +38,7 @@ type podTopologyHints map[string]map[string]TopologyHint // Scope interface for Topology Manager type Scope interface { Name() string + GetPolicy() Policy Admit(pod *v1.Pod) lifecycle.PodAdmitResult // AddHintProvider adds a hint provider to manager to indicate the hint provider // wants to be consoluted with when making topology hints @@ -88,6 +89,10 @@ func (s *scope) GetAffinity(podUID string, containerName string) TopologyHint { return s.getTopologyHints(podUID, containerName) } +func (s *scope) GetPolicy() Policy { + return s.policy +} + func (s *scope) AddHintProvider(h HintProvider) { s.hintProviders = append(s.hintProviders, h) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/topology_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/topology_manager.go index 7cd67d1aa60..ea5ac91560d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/topology_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/topology_manager.go @@ -92,9 +92,10 @@ type HintProvider interface { Allocate(pod *v1.Pod, container *v1.Container) error } -//Store interface is to allow Hint Providers to retrieve pod affinity +// Store interface is to allow Hint Providers to retrieve pod affinity type Store interface { GetAffinity(podUID string, containerName string) TopologyHint + GetPolicy() Policy } // TopologyHint is a struct containing the NUMANodeAffinity for a Container @@ -184,6 +185,10 @@ func (m *manager) GetAffinity(podUID string, containerName string) TopologyHint return m.scope.GetAffinity(podUID, containerName) } +func (m *manager) GetPolicy() Policy { + return m.scope.GetPolicy() +} + func (m *manager) AddHintProvider(h HintProvider) { m.scope.AddHintProvider(h) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/config.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/config.go index 7a83868cb8a..4dea5ca65bd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/config.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/config.go @@ -95,6 +95,8 @@ func (c *PodConfig) SeenAllSources(seenSources sets.String) bool { if c.pods == nil { return false } + c.sourcesLock.Lock() + defer c.sourcesLock.Unlock() klog.V(5).InfoS("Looking for sources, have seen", "sources", c.sources.List(), "seenSources", seenSources) return seenSources.HasAll(c.sources.List()...) && c.pods.seenSources(c.sources.List()...) } @@ -412,11 +414,11 @@ func podsDifferSemantically(existing, ref *v1.Pod) bool { } // checkAndUpdatePod updates existing, and: -// * if ref makes a meaningful change, returns needUpdate=true -// * if ref makes a meaningful change, and this change is graceful deletion, returns needGracefulDelete=true -// * if ref makes no meaningful change, but changes the pod status, returns needReconcile=true -// * else return all false -// Now, needUpdate, needGracefulDelete and needReconcile should never be both true +// - if ref makes a meaningful change, returns needUpdate=true +// - if ref makes a meaningful change, and this change is graceful deletion, returns needGracefulDelete=true +// - if ref makes no meaningful change, but changes the pod status, returns needReconcile=true +// - else return all false +// Now, needUpdate, needGracefulDelete and needReconcile should never be both true func checkAndUpdatePod(existing, ref *v1.Pod) (needUpdate, needReconcile, needGracefulDelete bool) { // 1. this is a reconcile diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/defaults.go index f2564e65d90..b438e0d25d5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/config/defaults.go @@ -28,4 +28,5 @@ const ( DefaultKubeletPluginContainersDirName = "plugin-containers" DefaultKubeletPodResourcesDirName = "pod-resources" KubeletPluginsDirSELinuxLabel = "system_u:object_r:container_file_t:s0" + DefaultKubeletCheckpointsDirName = "checkpoints" ) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go index de7ac5c06ca..0f276c083ec 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/configmap/configmap_manager.go @@ -114,11 +114,11 @@ const ( // NewCachingConfigMapManager creates a manager that keeps a cache of all configmaps // necessary for registered pods. // It implement the following logic: -// - whenever a pod is create or updated, the cached versions of all configmaps -// are invalidated -// - every GetObject() call tries to fetch the value from local cache; if it is -// not there, invalidated or too old, we fetch it from apiserver and refresh the -// value in cache; otherwise it is just fetched from cache +// - whenever a pod is create or updated, the cached versions of all configmaps +// are invalidated +// - every GetObject() call tries to fetch the value from local cache; if it is +// not there, invalidated or too old, we fetch it from apiserver and refresh the +// value in cache; otherwise it is just fetched from cache func NewCachingConfigMapManager(kubeClient clientset.Interface, getTTL manager.GetObjectTTLFunc) Manager { getConfigMap := func(namespace, name string, opts metav1.GetOptions) (runtime.Object, error) { return kubeClient.CoreV1().ConfigMaps(namespace).Get(context.TODO(), name, opts) @@ -132,9 +132,9 @@ func NewCachingConfigMapManager(kubeClient clientset.Interface, getTTL manager.G // NewWatchingConfigMapManager creates a manager that keeps a cache of all configmaps // necessary for registered pods. // It implements the following logic: -// - whenever a pod is created or updated, we start individual watches for all -// referenced objects that aren't referenced from other registered pods -// - every GetObject() returns a value from local cache propagated via watches +// - whenever a pod is created or updated, we start individual watches for all +// referenced objects that aren't referenced from other registered pods +// - every GetObject() returns a value from local cache propagated via watches func NewWatchingConfigMapManager(kubeClient clientset.Interface, resyncInterval time.Duration) Manager { listConfigMap := func(namespace string, opts metav1.ListOptions) (runtime.Object, error) { return kubeClient.CoreV1().ConfigMaps(namespace).List(context.TODO(), opts) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go index d4fec40d0c7..ef760826b20 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/cache.go @@ -108,8 +108,8 @@ func (c *cache) Delete(id types.UID) { delete(c.pods, id) } -// UpdateTime modifies the global timestamp of the cache and notify -// subscribers if needed. +// UpdateTime modifies the global timestamp of the cache and notify +// subscribers if needed. func (c *cache) UpdateTime(timestamp time.Time) { c.lock.Lock() defer c.lock.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go index a9be02a32d6..d11f2d67886 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/helpers.go @@ -56,6 +56,9 @@ type RuntimeHelper interface { // supplemental groups for the Pod. These extra supplemental groups come // from annotations on persistent volumes that the pod depends on. GetExtraSupplementalGroupsForPod(pod *v1.Pod) []int64 + + // GetOrCreateUserNamespaceMappings returns the configuration for the sandbox user namespace + GetOrCreateUserNamespaceMappings(pod *v1.Pod) (*runtimeapi.UserNamespace, error) } // ShouldContainerBeRestarted checks whether a container needs to be restarted. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go index e4f860378a1..3d84a963e59 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/ref.go @@ -20,10 +20,8 @@ import ( "fmt" v1 "k8s.io/api/core/v1" - utilfeature "k8s.io/apiserver/pkg/util/feature" ref "k8s.io/client-go/tools/reference" "k8s.io/kubernetes/pkg/api/legacyscheme" - "k8s.io/kubernetes/pkg/features" ) // ImplicitContainerPrefix is a container name prefix that will indicate that container was started implicitly (like the pod infra container). @@ -67,15 +65,13 @@ func fieldPath(pod *v1.Pod, container *v1.Container) (string, error) { return fmt.Sprintf("spec.initContainers{%s}", here.Name), nil } } - if utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - for i := range pod.Spec.EphemeralContainers { - here := &pod.Spec.EphemeralContainers[i] - if here.Name == container.Name { - if here.Name == "" { - return fmt.Sprintf("spec.ephemeralContainers[%d]", i), nil - } - return fmt.Sprintf("spec.ephemeralContainers{%s}", here.Name), nil + for i := range pod.Spec.EphemeralContainers { + here := &pod.Spec.EphemeralContainers[i] + if here.Name == container.Name { + if here.Name == "" { + return fmt.Sprintf("spec.ephemeralContainers[%d]", i), nil } + return fmt.Sprintf("spec.ephemeralContainers{%s}", here.Name), nil } } return "", fmt.Errorf("container %q not found in pod %s/%s", container.Name, pod.Namespace, pod.Name) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go index 0810e938f26..ad59de4df1c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/runtime.go @@ -119,6 +119,9 @@ type Runtime interface { // This method just proxies a new runtimeConfig with the updated // CIDR value down to the runtime shim. UpdatePodCIDR(podCIDR string) error + // CheckpointContainer tells the runtime to checkpoint a container + // and store the resulting archive to the checkpoint directory. + CheckpointContainer(options *runtimeapi.CheckpointContainerRequest) error } // StreamingRuntime is the interface implemented by runtimes that handle the serving of the diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime.go index 3765e87c8a6..c259a06cb13 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime.go @@ -362,6 +362,14 @@ func (f *FakeRuntime) DeleteContainer(containerID kubecontainer.ContainerID) err return f.Err } +func (f *FakeRuntime) CheckpointContainer(options *runtimeapi.CheckpointContainerRequest) error { + f.Lock() + defer f.Unlock() + + f.CalledFunctions = append(f.CalledFunctions, "CheckpointContainer") + return f.Err +} + func (f *FakeRuntime) ImageStats() (*kubecontainer.ImageStats, error) { f.Lock() defer f.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime_helper.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime_helper.go index a7d13d606ce..eb4a51676bb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime_helper.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/fake_runtime_helper.go @@ -65,3 +65,7 @@ func (f *FakeRuntimeHelper) GetPodDir(podUID kubetypes.UID) string { func (f *FakeRuntimeHelper) GetExtraSupplementalGroupsForPod(pod *v1.Pod) []int64 { return nil } + +func (f *FakeRuntimeHelper) GetOrCreateUserNamespaceMappings(pod *v1.Pod) (*runtimeapi.UserNamespace, error) { + return nil, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/runtime_mock.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/runtime_mock.go index b2633095912..1e68ee3f5f8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/runtime_mock.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/container/testing/runtime_mock.go @@ -126,6 +126,20 @@ func (mr *MockRuntimeMockRecorder) APIVersion() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "APIVersion", reflect.TypeOf((*MockRuntime)(nil).APIVersion)) } +// CheckpointContainer mocks base method. +func (m *MockRuntime) CheckpointContainer(options *v10.CheckpointContainerRequest) error { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CheckpointContainer", options) + ret0, _ := ret[0].(error) + return ret0 +} + +// CheckpointContainer indicates an expected call of CheckpointContainer. +func (mr *MockRuntimeMockRecorder) CheckpointContainer(options interface{}) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckpointContainer", reflect.TypeOf((*MockRuntime)(nil).CheckpointContainer), options) +} + // DeleteContainer mocks base method. func (m *MockRuntime) DeleteContainer(containerID container.ContainerID) error { m.ctrl.T.Helper() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/conversion.go index 35539397755..120b718cbf5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/conversion.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/conversion.go @@ -113,6 +113,10 @@ func v1alpha2LinuxContainerResources(from *runtimeapi.LinuxContainerResources) * return (*v1alpha2.LinuxContainerResources)(unsafe.Pointer(from)) } +func v1alpha2WindowsContainerResources(from *runtimeapi.WindowsContainerResources) *v1alpha2.WindowsContainerResources { + return (*v1alpha2.WindowsContainerResources)(unsafe.Pointer(from)) +} + func v1alpha2ExecRequest(from *runtimeapi.ExecRequest) *v1alpha2.ExecRequest { // If this function changes, also adapt the corresponding Exec code in // pkg/kubelet/cri/remote/remote_runtime.go diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_image.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_image.go index 6a8912e8bcd..73236896d64 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_image.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_image.go @@ -24,13 +24,14 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/status" "k8s.io/klog/v2" internalapi "k8s.io/cri-api/pkg/apis" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" runtimeapiV1alpha2 "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" - "k8s.io/kubernetes/pkg/kubelet/cri/remote/util" + "k8s.io/kubernetes/pkg/kubelet/util" ) // remoteImageService is a gRPC implementation of internalapi.ImageManagerService. @@ -51,7 +52,10 @@ func NewRemoteImageService(endpoint string, connectionTimeout time.Duration) (in ctx, cancel := context.WithTimeout(context.Background(), connectionTimeout) defer cancel() - conn, err := grpc.DialContext(ctx, addr, grpc.WithInsecure(), grpc.WithContextDialer(dialer), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) + conn, err := grpc.DialContext(ctx, addr, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithContextDialer(dialer), + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) if err != nil { klog.ErrorS(err, "Connect remote image service failed", "address", addr) return nil, err diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_runtime.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_runtime.go index cd7b781e8c7..2f479f0fc71 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_runtime.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/remote_runtime.go @@ -23,16 +23,21 @@ import ( "strings" "time" + "go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc" + "go.opentelemetry.io/otel/trace" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/status" - "k8s.io/klog/v2" - + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/component-base/logs/logreduction" + tracing "k8s.io/component-base/tracing" internalapi "k8s.io/cri-api/pkg/apis" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" runtimeapiV1alpha2 "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" - "k8s.io/kubernetes/pkg/kubelet/cri/remote/util" + "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/kubelet/util" "k8s.io/kubernetes/pkg/probe/exec" utilexec "k8s.io/utils/exec" ) @@ -67,7 +72,7 @@ const ( ) // NewRemoteRuntimeService creates a new internalapi.RuntimeService. -func NewRemoteRuntimeService(endpoint string, connectionTimeout time.Duration) (internalapi.RuntimeService, error) { +func NewRemoteRuntimeService(endpoint string, connectionTimeout time.Duration, tp trace.TracerProvider) (internalapi.RuntimeService, error) { klog.V(3).InfoS("Connecting to runtime service", "endpoint", endpoint) addr, dialer, err := util.GetAddressAndDialer(endpoint) if err != nil { @@ -76,7 +81,23 @@ func NewRemoteRuntimeService(endpoint string, connectionTimeout time.Duration) ( ctx, cancel := context.WithTimeout(context.Background(), connectionTimeout) defer cancel() - conn, err := grpc.DialContext(ctx, addr, grpc.WithInsecure(), grpc.WithContextDialer(dialer), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) + dialOpts := []grpc.DialOption{} + dialOpts = append(dialOpts, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithContextDialer(dialer), + grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(maxMsgSize))) + if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) { + tracingOpts := []otelgrpc.Option{ + otelgrpc.WithPropagators(tracing.Propagators()), + otelgrpc.WithTracerProvider(tp), + } + // Even if there is no TracerProvider, the otelgrpc still handles context propagation. + // See https://github.com/open-telemetry/opentelemetry-go/tree/main/example/passthrough + dialOpts = append(dialOpts, + grpc.WithUnaryInterceptor(otelgrpc.UnaryClientInterceptor(tracingOpts...)), + grpc.WithStreamInterceptor(otelgrpc.StreamClientInterceptor(tracingOpts...))) + } + conn, err := grpc.DialContext(ctx, addr, dialOpts...) if err != nil { klog.ErrorS(err, "Connect remote runtime failed", "address", addr) return nil, err @@ -620,7 +641,7 @@ func (r *remoteRuntimeService) containerStatusV1(ctx context.Context, containerI } // UpdateContainerResources updates a containers resource config -func (r *remoteRuntimeService) UpdateContainerResources(containerID string, resources *runtimeapi.LinuxContainerResources) (err error) { +func (r *remoteRuntimeService) UpdateContainerResources(containerID string, resources *runtimeapi.ContainerResources) (err error) { klog.V(10).InfoS("[RemoteRuntimeService] UpdateContainerResources", "containerID", containerID, "timeout", r.timeout) ctx, cancel := getContextWithTimeout(r.timeout) defer cancel() @@ -628,12 +649,14 @@ func (r *remoteRuntimeService) UpdateContainerResources(containerID string, reso if r.useV1API() { _, err = r.runtimeClient.UpdateContainerResources(ctx, &runtimeapi.UpdateContainerResourcesRequest{ ContainerId: containerID, - Linux: resources, + Linux: resources.GetLinux(), + Windows: resources.GetWindows(), }) } else { _, err = r.runtimeClientV1alpha2.UpdateContainerResources(ctx, &runtimeapiV1alpha2.UpdateContainerResourcesRequest{ ContainerId: containerID, - Linux: v1alpha2LinuxContainerResources(resources), + Linux: v1alpha2LinuxContainerResources(resources.GetLinux()), + Windows: v1alpha2WindowsContainerResources(resources.GetWindows()), }) } if err != nil { @@ -1149,3 +1172,62 @@ func (r *remoteRuntimeService) ReopenContainerLog(containerID string) (err error klog.V(10).InfoS("[RemoteRuntimeService] ReopenContainerLog Response", "containerID", containerID) return nil } + +// CheckpointContainer triggers a checkpoint of the given CheckpointContainerRequest +func (r *remoteRuntimeService) CheckpointContainer(options *runtimeapi.CheckpointContainerRequest) error { + klog.V(10).InfoS( + "[RemoteRuntimeService] CheckpointContainer", + "options", + options, + ) + if options == nil { + return errors.New("CheckpointContainer requires non-nil CheckpointRestoreOptions parameter") + } + if !r.useV1API() { + return errors.New("CheckpointContainer is only supported in the CRI v1 runtime API") + } + + if options.Timeout < 0 { + return errors.New("CheckpointContainer requires the timeout value to be > 0") + } + + ctx, cancel := func() (context.Context, context.CancelFunc) { + defaultTimeout := int64(r.timeout / time.Second) + if options.Timeout > defaultTimeout { + // The user requested a specific timeout, let's use that if it + // is larger than the CRI default. + return getContextWithTimeout(time.Duration(options.Timeout) * time.Second) + } + // If the user requested a timeout less than the + // CRI default, let's use the CRI default. + options.Timeout = defaultTimeout + return getContextWithTimeout(r.timeout) + }() + defer cancel() + + _, err := r.runtimeClient.CheckpointContainer( + ctx, + options, + ) + + if err != nil { + klog.ErrorS( + err, + "CheckpointContainer from runtime service failed", + "containerID", + options.ContainerId, + ) + return err + } + klog.V(10).InfoS( + "[RemoteRuntimeService] CheckpointContainer Response", + "containerID", + options.ContainerId, + ) + + return nil +} + +func (r *remoteRuntimeService) GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse) error { + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_unix.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_unix.go deleted file mode 100644 index 28f1f2c2597..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_unix.go +++ /dev/null @@ -1,146 +0,0 @@ -//go:build freebsd || linux || darwin -// +build freebsd linux darwin - -/* -Copyright 2017 The Kubernetes 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 util - -import ( - "context" - "fmt" - "io/ioutil" - "net" - "net/url" - "os" - "path/filepath" - - "golang.org/x/sys/unix" - "k8s.io/klog/v2" -) - -const ( - // unixProtocol is the network protocol of unix socket. - unixProtocol = "unix" -) - -// CreateListener creates a listener on the specified endpoint. -func CreateListener(endpoint string) (net.Listener, error) { - protocol, addr, err := parseEndpointWithFallbackProtocol(endpoint, unixProtocol) - if err != nil { - return nil, err - } - if protocol != unixProtocol { - return nil, fmt.Errorf("only support unix socket endpoint") - } - - // Unlink to cleanup the previous socket file. - err = unix.Unlink(addr) - if err != nil && !os.IsNotExist(err) { - return nil, fmt.Errorf("failed to unlink socket file %q: %v", addr, err) - } - - if err := os.MkdirAll(filepath.Dir(addr), 0750); err != nil { - return nil, fmt.Errorf("error creating socket directory %q: %v", filepath.Dir(addr), err) - } - - // Create the socket on a tempfile and move it to the destination socket to handle improper cleanup - file, err := ioutil.TempFile(filepath.Dir(addr), "") - if err != nil { - return nil, fmt.Errorf("failed to create temporary file: %v", err) - } - - if err := os.Remove(file.Name()); err != nil { - return nil, fmt.Errorf("failed to remove temporary file: %v", err) - } - - l, err := net.Listen(protocol, file.Name()) - if err != nil { - return nil, err - } - - if err = os.Rename(file.Name(), addr); err != nil { - return nil, fmt.Errorf("failed to move temporary file to addr %q: %v", addr, err) - } - - return l, nil -} - -// GetAddressAndDialer returns the address parsed from the given endpoint and a context dialer. -func GetAddressAndDialer(endpoint string) (string, func(ctx context.Context, addr string) (net.Conn, error), error) { - protocol, addr, err := parseEndpointWithFallbackProtocol(endpoint, unixProtocol) - if err != nil { - return "", nil, err - } - if protocol != unixProtocol { - return "", nil, fmt.Errorf("only support unix socket endpoint") - } - - return addr, dial, nil -} - -func dial(ctx context.Context, addr string) (net.Conn, error) { - return (&net.Dialer{}).DialContext(ctx, unixProtocol, addr) -} - -func parseEndpointWithFallbackProtocol(endpoint string, fallbackProtocol string) (protocol string, addr string, err error) { - if protocol, addr, err = parseEndpoint(endpoint); err != nil && protocol == "" { - fallbackEndpoint := fallbackProtocol + "://" + endpoint - protocol, addr, err = parseEndpoint(fallbackEndpoint) - if err == nil { - klog.InfoS("Using this format as endpoint is deprecated, please consider using full url format.", "deprecatedFormat", endpoint, "fullURLFormat", fallbackEndpoint) - } - } - return -} - -func parseEndpoint(endpoint string) (string, string, error) { - u, err := url.Parse(endpoint) - if err != nil { - return "", "", err - } - - switch u.Scheme { - case "tcp": - return "tcp", u.Host, nil - - case "unix": - return "unix", u.Path, nil - - case "": - return "", "", fmt.Errorf("using %q as endpoint is deprecated, please consider using full url format", endpoint) - - default: - return u.Scheme, "", fmt.Errorf("protocol %q not supported", u.Scheme) - } -} - -// IsUnixDomainSocket returns whether a given file is a AF_UNIX socket file -func IsUnixDomainSocket(filePath string) (bool, error) { - fi, err := os.Stat(filePath) - if err != nil { - return false, fmt.Errorf("stat file %s failed: %v", filePath, err) - } - if fi.Mode()&os.ModeSocket == 0 { - return false, nil - } - return true, nil -} - -// NormalizePath is a no-op for Linux for now -func NormalizePath(path string) string { - return path -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_unsupported.go deleted file mode 100644 index 054c36230ef..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_unsupported.go +++ /dev/null @@ -1,56 +0,0 @@ -//go:build !freebsd && !linux && !windows && !darwin -// +build !freebsd,!linux,!windows,!darwin - -/* -Copyright 2017 The Kubernetes 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 util - -import ( - "context" - "fmt" - "net" - "time" -) - -// CreateListener creates a listener on the specified endpoint. -func CreateListener(endpoint string) (net.Listener, error) { - return nil, fmt.Errorf("CreateListener is unsupported in this build") -} - -// GetAddressAndDialer returns the address parsed from the given endpoint and a context dialer. -func GetAddressAndDialer(endpoint string) (string, func(ctx context.Context, addr string) (net.Conn, error), error) { - return "", nil, fmt.Errorf("GetAddressAndDialer is unsupported in this build") -} - -// LockAndCheckSubPath empty implementation -func LockAndCheckSubPath(volumePath, subPath string) ([]uintptr, error) { - return []uintptr{}, nil -} - -// UnlockPath empty implementation -func UnlockPath(fileHandles []uintptr) { -} - -// LocalEndpoint empty implementation -func LocalEndpoint(path, file string) (string, error) { - return "", fmt.Errorf("LocalEndpoints are unsupported in this build") -} - -// GetBootTime empty implementation -func GetBootTime() (time.Time, error) { - return time.Time{}, fmt.Errorf("GetBootTime is unsupported in this build") -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_windows.go deleted file mode 100644 index 763fdd80a0d..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/cri/remote/util/util_windows.go +++ /dev/null @@ -1,150 +0,0 @@ -//go:build windows -// +build windows - -/* -Copyright 2017 The Kubernetes 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 util - -import ( - "context" - "fmt" - "net" - "net/url" - "strings" - "syscall" - "time" - - "github.com/Microsoft/go-winio" -) - -const ( - tcpProtocol = "tcp" - npipeProtocol = "npipe" -) - -// CreateListener creates a listener on the specified endpoint. -func CreateListener(endpoint string) (net.Listener, error) { - protocol, addr, err := parseEndpoint(endpoint) - if err != nil { - return nil, err - } - - switch protocol { - case tcpProtocol: - return net.Listen(tcpProtocol, addr) - - case npipeProtocol: - return winio.ListenPipe(addr, nil) - - default: - return nil, fmt.Errorf("only support tcp and npipe endpoint") - } -} - -// GetAddressAndDialer returns the address parsed from the given endpoint and a context dialer. -func GetAddressAndDialer(endpoint string) (string, func(ctx context.Context, addr string) (net.Conn, error), error) { - protocol, addr, err := parseEndpoint(endpoint) - if err != nil { - return "", nil, err - } - - if protocol == tcpProtocol { - return addr, tcpDial, nil - } - - if protocol == npipeProtocol { - return addr, npipeDial, nil - } - - return "", nil, fmt.Errorf("only support tcp and npipe endpoint") -} - -func tcpDial(ctx context.Context, addr string) (net.Conn, error) { - return (&net.Dialer{}).DialContext(ctx, tcpProtocol, addr) -} - -func npipeDial(ctx context.Context, addr string) (net.Conn, error) { - return winio.DialPipeContext(ctx, addr) -} - -func parseEndpoint(endpoint string) (string, string, error) { - // url.Parse doesn't recognize \, so replace with / first. - endpoint = strings.Replace(endpoint, "\\", "/", -1) - u, err := url.Parse(endpoint) - if err != nil { - return "", "", err - } - - if u.Scheme == "tcp" { - return "tcp", u.Host, nil - } else if u.Scheme == "npipe" { - if strings.HasPrefix(u.Path, "//./pipe") { - return "npipe", u.Path, nil - } - - // fallback host if not provided. - host := u.Host - if host == "" { - host = "." - } - return "npipe", fmt.Sprintf("//%s%s", host, u.Path), nil - } else if u.Scheme == "" { - return "", "", fmt.Errorf("using %q as endpoint is deprecated, please consider using full url format", endpoint) - } else { - return u.Scheme, "", fmt.Errorf("protocol %q not supported", u.Scheme) - } -} - -var tickCount = syscall.NewLazyDLL("kernel32.dll").NewProc("GetTickCount64") - -// GetBootTime returns the time at which the machine was started, truncated to the nearest second -func GetBootTime() (time.Time, error) { - currentTime := time.Now() - output, _, err := tickCount.Call() - if errno, ok := err.(syscall.Errno); !ok || errno != 0 { - return time.Time{}, err - } - return currentTime.Add(-time.Duration(output) * time.Millisecond).Truncate(time.Second), nil -} - -// IsUnixDomainSocket returns whether a given file is a AF_UNIX socket file -func IsUnixDomainSocket(filePath string) (bool, error) { - // Due to the absence of golang support for os.ModeSocket in Windows (https://github.com/golang/go/issues/33357) - // we need to dial the file and check if we receive an error to determine if a file is Unix Domain Socket file. - - // Note that querrying for the Reparse Points (https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points) - // for the file (using FSCTL_GET_REPARSE_POINT) and checking for reparse tag: reparseTagSocket - // does NOT work in 1809 if the socket file is created within a bind mounted directory by a container - // and the FSCTL is issued in the host by the kubelet. - - c, err := net.Dial("unix", filePath) - if err == nil { - c.Close() - return true, nil - } - return false, nil -} - -// NormalizePath converts FS paths returned by certain go frameworks (like fsnotify) -// to native Windows paths that can be passed to Windows specific code -func NormalizePath(path string) string { - path = strings.ReplaceAll(path, "/", "\\") - if strings.HasPrefix(path, "\\") { - path = "c:" + path - } - return path -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/eviction_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/eviction_manager.go index f905ae07983..8332a522e25 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/eviction_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/eviction_manager.go @@ -26,13 +26,11 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/record" v1helper "k8s.io/component-helpers/scheduling/corev1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" apiv1resource "k8s.io/kubernetes/pkg/api/v1/resource" v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - "k8s.io/kubernetes/pkg/features" evictionapi "k8s.io/kubernetes/pkg/kubelet/eviction/api" "k8s.io/kubernetes/pkg/kubelet/lifecycle" "k8s.io/kubernetes/pkg/kubelet/metrics" @@ -97,6 +95,8 @@ type managerImpl struct { thresholdNotifiers []ThresholdNotifier // thresholdsLastUpdated is the last time the thresholdNotifiers were updated. thresholdsLastUpdated time.Time + // whether can support local storage capacity isolation + localStorageCapacityIsolation bool } // ensure it implements the required interface @@ -113,21 +113,23 @@ func NewManager( recorder record.EventRecorder, nodeRef *v1.ObjectReference, clock clock.WithTicker, + localStorageCapacityIsolation bool, ) (Manager, lifecycle.PodAdmitHandler) { manager := &managerImpl{ - clock: clock, - killPodFunc: killPodFunc, - mirrorPodFunc: mirrorPodFunc, - imageGC: imageGC, - containerGC: containerGC, - config: config, - recorder: recorder, - summaryProvider: summaryProvider, - nodeRef: nodeRef, - nodeConditionsLastObservedAt: nodeConditionsObservedAt{}, - thresholdsFirstObservedAt: thresholdsObservedAt{}, - dedicatedImageFs: nil, - thresholdNotifiers: []ThresholdNotifier{}, + clock: clock, + killPodFunc: killPodFunc, + mirrorPodFunc: mirrorPodFunc, + imageGC: imageGC, + containerGC: containerGC, + config: config, + recorder: recorder, + summaryProvider: summaryProvider, + nodeRef: nodeRef, + nodeConditionsLastObservedAt: nodeConditionsObservedAt{}, + thresholdsFirstObservedAt: thresholdsObservedAt{}, + dedicatedImageFs: nil, + thresholdNotifiers: []ThresholdNotifier{}, + localStorageCapacityIsolation: localStorageCapacityIsolation, } return manager, manager } @@ -230,7 +232,7 @@ func (m *managerImpl) IsUnderPIDPressure() bool { func (m *managerImpl) synchronize(diskInfoProvider DiskInfoProvider, podFunc ActivePodsFunc) []*v1.Pod { // if we have nothing to do, just return thresholds := m.config.Thresholds - if len(thresholds) == 0 && !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { + if len(thresholds) == 0 && !m.localStorageCapacityIsolation { return nil } @@ -318,7 +320,7 @@ func (m *managerImpl) synchronize(diskInfoProvider DiskInfoProvider, podFunc Act // evict pods if there is a resource usage violation from local volume temporary storage // If eviction happens in localStorageEviction function, skip the rest of eviction action - if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { + if m.localStorageCapacityIsolation { if evictedPods := m.localStorageEviction(activePods, statsFunc); len(evictedPods) > 0 { return evictedPods } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/helpers.go index 68a0c6f3cd6..bf5d6fe7c1a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/eviction/helpers.go @@ -430,10 +430,9 @@ func cachedStatsFunc(podStats []statsapi.PodStats) statsFunc { // Cmp compares p1 and p2 and returns: // -// -1 if p1 < p2 -// 0 if p1 == p2 -// +1 if p1 > p2 -// +// -1 if p1 < p2 +// 0 if p1 == p2 +// +1 if p1 > p2 type cmpFunc func(p1, p2 *v1.Pod) int // multiSorter implements the Sort interface, sorting changes within. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go index 8482c60db13..963d744e80f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet.go @@ -25,6 +25,7 @@ import ( "net/http" "os" "path" + "path/filepath" sysruntime "runtime" "sort" "strings" @@ -37,6 +38,7 @@ import ( cadvisorapi "github.com/google/cadvisor/info/v1" libcontaineruserns "github.com/opencontainers/runc/libcontainer/userns" + "go.opentelemetry.io/otel/trace" "k8s.io/mount-utils" "k8s.io/utils/integer" netutils "k8s.io/utils/net" @@ -60,6 +62,7 @@ import ( cloudprovider "k8s.io/cloud-provider" "k8s.io/component-helpers/apimachinery/lease" internalapi "k8s.io/cri-api/pkg/apis" + runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" "k8s.io/klog/v2" pluginwatcherapi "k8s.io/kubelet/pkg/apis/pluginregistration/v1" statsapi "k8s.io/kubelet/pkg/apis/stats/v1alpha1" @@ -204,7 +207,7 @@ type Bootstrap interface { GetConfiguration() kubeletconfiginternal.KubeletConfiguration BirthCry() StartGarbageCollection() - ListenAndServe(kubeCfg *kubeletconfiginternal.KubeletConfiguration, tlsOptions *server.TLSOptions, auth server.AuthInterface) + ListenAndServe(kubeCfg *kubeletconfiginternal.KubeletConfiguration, tlsOptions *server.TLSOptions, auth server.AuthInterface, tp trace.TracerProvider) ListenAndServeReadOnly(address net.IP, port uint) ListenAndServePodResources() Run(<-chan kubetypes.PodUpdate) @@ -234,6 +237,7 @@ type Dependencies struct { ProbeManager prober.Manager Recorder record.EventRecorder Subpather subpath.Interface + TracerProvider trace.TracerProvider VolumePlugins []volume.VolumePlugin DynamicPluginProber volume.DynamicPluginProber TLSOptions *server.TLSOptions @@ -291,7 +295,7 @@ func PreInitRuntimeService(kubeCfg *kubeletconfiginternal.KubeletConfiguration, } var err error - if kubeDeps.RemoteRuntimeService, err = remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, kubeCfg.RuntimeRequestTimeout.Duration); err != nil { + if kubeDeps.RemoteRuntimeService, err = remote.NewRemoteRuntimeService(remoteRuntimeEndpoint, kubeCfg.RuntimeRequestTimeout.Duration, kubeDeps.TracerProvider); err != nil { return err } if kubeDeps.RemoteImageService, err = remote.NewRemoteImageService(remoteImageEndpoint, kubeCfg.RuntimeRequestTimeout.Duration); err != nil { @@ -676,7 +680,6 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, kubeDeps.RemoteRuntimeService, kubeDeps.RemoteImageService, hostStatsProvider, - utilfeature.DefaultFeatureGate.Enabled(features.DisableAcceleratorUsageMetrics), utilfeature.DefaultFeatureGate.Enabled(features.PodAndContainerStatsFromCRI)) } @@ -770,7 +773,8 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, klet.backOff = flowcontrol.NewBackOff(backOffPeriod, MaxContainerBackOff) // setup eviction manager - evictionManager, evictionAdmitHandler := eviction.NewManager(klet.resourceAnalyzer, evictionConfig, killPodNow(klet.podWorkers, kubeDeps.Recorder), klet.podManager.GetMirrorPodByPod, klet.imageManager, klet.containerGC, kubeDeps.Recorder, nodeRef, klet.clock) + evictionManager, evictionAdmitHandler := eviction.NewManager(klet.resourceAnalyzer, evictionConfig, + killPodNow(klet.podWorkers, kubeDeps.Recorder), klet.podManager.GetMirrorPodByPod, klet.imageManager, klet.containerGC, kubeDeps.Recorder, nodeRef, klet.clock, kubeCfg.LocalStorageCapacityIsolation) klet.evictionManager = evictionManager klet.admitHandlers.AddPodAdmitHandler(evictionAdmitHandler) @@ -834,6 +838,10 @@ func NewMainKubelet(kubeCfg *kubeletconfiginternal.KubeletConfiguration, StateDirectory: rootDirectory, }) klet.shutdownManager = shutdownManager + klet.usernsManager, err = MakeUserNsManager(klet) + if err != nil { + return nil, err + } klet.admitHandlers.AddPodAdmitHandler(shutdownAdmitHandler) // Finally, put the most recent version of the config on the Kubelet, so @@ -1172,6 +1180,9 @@ type Kubelet struct { // Handles node shutdown events for the Node. shutdownManager nodeshutdown.Manager + + // Manage user namespaces + usernsManager *usernsManager } // ListPodStats is delegated to StatsProvider, which implements stats.Provider interface @@ -1229,6 +1240,7 @@ func (kl *Kubelet) RlimitStats() (*statsapi.RlimitStats, error) { // 2. the pods directory // 3. the plugins directory // 4. the pod-resources directory +// 5. the checkpoint directory func (kl *Kubelet) setupDataDirs() error { kl.rootDirectory = path.Clean(kl.rootDirectory) pluginRegistrationDir := kl.getPluginsRegistrationDir() @@ -1251,6 +1263,11 @@ func (kl *Kubelet) setupDataDirs() error { if err := os.MkdirAll(kl.getPodResourcesDir(), 0750); err != nil { return fmt.Errorf("error creating podresources directory: %v", err) } + if utilfeature.DefaultFeatureGate.Enabled(features.ContainerCheckpoint) { + if err := os.MkdirAll(kl.getCheckpointsDir(), 0700); err != nil { + return fmt.Errorf("error creating checkpoint directory: %v", err) + } + } if selinux.GetEnabled() { err := selinux.SetFileLabel(pluginRegistrationDir, config.KubeletPluginsDirSELinuxLabel) if err != nil { @@ -1375,7 +1392,7 @@ func (kl *Kubelet) initializeRuntimeDependentModules() { os.Exit(1) } // containerManager must start after cAdvisor because it needs filesystem capacity information - if err := kl.containerManager.Start(node, kl.GetActivePods, kl.sourcesReady, kl.statusManager, kl.runtimeService); err != nil { + if err := kl.containerManager.Start(node, kl.GetActivePods, kl.sourcesReady, kl.statusManager, kl.runtimeService, kl.supportLocalStorageCapacityIsolation()); err != nil { // Fail kubelet and rely on the babysitter to retry starting kubelet. klog.ErrorS(err, "Failed to start ContainerManager") os.Exit(1) @@ -1469,29 +1486,32 @@ func (kl *Kubelet) Run(updates <-chan kubetypes.PodUpdate) { // Arguments: // // updateType - whether this is a create (first time) or an update, should -// only be used for metrics since this method must be reentrant +// +// only be used for metrics since this method must be reentrant +// // pod - the pod that is being set up // mirrorPod - the mirror pod known to the kubelet for this pod, if any // podStatus - the most recent pod status observed for this pod which can -// be used to determine the set of actions that should be taken during -// this loop of syncPod +// +// be used to determine the set of actions that should be taken during +// this loop of syncPod // // The workflow is: -// * If the pod is being created, record pod worker start latency -// * Call generateAPIPodStatus to prepare an v1.PodStatus for the pod -// * If the pod is being seen as running for the first time, record pod -// start latency -// * Update the status of the pod in the status manager -// * Stop the pod's containers if it should not be running due to soft -// admission -// * Ensure any background tracking for a runnable pod is started -// * Create a mirror pod if the pod is a static pod, and does not -// already have a mirror pod -// * Create the data directories for the pod if they do not exist -// * Wait for volumes to attach/mount -// * Fetch the pull secrets for the pod -// * Call the container runtime's SyncPod callback -// * Update the traffic shaping for the pod's ingress and egress limits +// - If the pod is being created, record pod worker start latency +// - Call generateAPIPodStatus to prepare an v1.PodStatus for the pod +// - If the pod is being seen as running for the first time, record pod +// start latency +// - Update the status of the pod in the status manager +// - Stop the pod's containers if it should not be running due to soft +// admission +// - Ensure any background tracking for a runnable pod is started +// - Create a mirror pod if the pod is a static pod, and does not +// already have a mirror pod +// - Create the data directories for the pod if they do not exist +// - Wait for volumes to attach/mount +// - Fetch the pull secrets for the pod +// - Call the container runtime's SyncPod callback +// - Update the traffic shaping for the pod's ingress and egress limits // // If any step of this workflow errors, the error is returned, and is repeated // on the next syncPod call. @@ -1877,6 +1897,8 @@ func (kl *Kubelet) syncTerminatedPod(ctx context.Context, pod *v1.Pod, podStatus klog.V(4).InfoS("Pod termination removed cgroups", "pod", klog.KObj(pod), "podUID", pod.UID) } + kl.usernsManager.Release(pod.UID) + // mark the final pod status kl.statusManager.TerminatePod(pod) klog.V(4).InfoS("Pod is terminated and will need no more status updates", "pod", klog.KObj(pod), "podUID", pod.UID) @@ -1885,8 +1907,8 @@ func (kl *Kubelet) syncTerminatedPod(ctx context.Context, pod *v1.Pod, podStatus } // Get pods which should be resynchronized. Currently, the following pod should be resynchronized: -// * pod whose work is ready. -// * internal modules that request sync of a pod. +// - pod whose work is ready. +// - internal modules that request sync of a pod. func (kl *Kubelet) getPodsToSync() []*v1.Pod { allPods := kl.podManager.GetPods() podUIDs := kl.workQueue.GetWork() @@ -2051,13 +2073,13 @@ func (kl *Kubelet) syncLoop(updates <-chan kubetypes.PodUpdate, handler SyncHand // With that in mind, in truly no particular order, the different channels // are handled as follows: // -// * configCh: dispatch the pods for the config change to the appropriate -// handler callback for the event type -// * plegCh: update the runtime cache; sync pod -// * syncCh: sync all pods waiting for sync -// * housekeepingCh: trigger cleanup of pods -// * health manager: sync pods that have failed or in which one or more -// containers have failed health checks +// - configCh: dispatch the pods for the config change to the appropriate +// handler callback for the event type +// - plegCh: update the runtime cache; sync pod +// - syncCh: sync all pods waiting for sync +// - housekeepingCh: trigger cleanup of pods +// - health manager: sync pods that have failed or in which one or more +// containers have failed health checks func (kl *Kubelet) syncLoopIteration(configCh <-chan kubetypes.PodUpdate, handler SyncHandler, syncCh <-chan time.Time, housekeepingCh <-chan time.Time, plegCh <-chan *pleg.PodLifecycleEvent) bool { select { @@ -2385,8 +2407,8 @@ func (kl *Kubelet) ResyncInterval() time.Duration { // ListenAndServe runs the kubelet HTTP server. func (kl *Kubelet) ListenAndServe(kubeCfg *kubeletconfiginternal.KubeletConfiguration, tlsOptions *server.TLSOptions, - auth server.AuthInterface) { - server.ListenAndServeKubeletServer(kl, kl.resourceAnalyzer, kubeCfg, tlsOptions, auth) + auth server.AuthInterface, tp trace.TracerProvider) { + server.ListenAndServeKubeletServer(kl, kl.resourceAnalyzer, kubeCfg, tlsOptions, auth, tp) } // ListenAndServeReadOnly runs the kubelet HTTP server in read-only mode. @@ -2439,6 +2461,48 @@ func (kl *Kubelet) fastStatusUpdateOnce() { } } +// CheckpointContainer tries to checkpoint a container. The parameters are used to +// look up the specified container. If the container specified by the given parameters +// cannot be found an error is returned. If the container is found the container +// engine will be asked to checkpoint the given container into the kubelet's default +// checkpoint directory. +func (kl *Kubelet) CheckpointContainer( + podUID types.UID, + podFullName, + containerName string, + options *runtimeapi.CheckpointContainerRequest, +) error { + container, err := kl.findContainer(podFullName, podUID, containerName) + if err != nil { + return err + } + if container == nil { + return fmt.Errorf("container %v not found", containerName) + } + + options.Location = filepath.Join( + kl.getCheckpointsDir(), + fmt.Sprintf( + "checkpoint-%s-%s-%s.tar", + podFullName, + containerName, + time.Now().Format(time.RFC3339), + ), + ) + + options.ContainerId = string(container.ID.ID) + + if err := kl.containerRuntime.CheckpointContainer(options); err != nil { + return err + } + + return nil +} + +func (kl *Kubelet) supportLocalStorageCapacityIsolation() bool { + return kl.GetConfiguration().LocalStorageCapacityIsolation +} + // isSyncPodWorthy filters out events that are not worthy of pod syncing func isSyncPodWorthy(event *pleg.PodLifecycleEvent) bool { // ContainerRemoved doesn't affect pod state diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_getters.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_getters.go index dacb909bd10..1d393abd9dd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_getters.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_getters.go @@ -77,6 +77,12 @@ func (kl *Kubelet) getPluginDir(pluginName string) string { return filepath.Join(kl.getPluginsDir(), pluginName) } +// getCheckpointsDir returns a data directory name for checkpoints. +// Checkpoints can be stored in this directory for further use. +func (kl *Kubelet) getCheckpointsDir() string { + return filepath.Join(kl.getRootDir(), config.DefaultKubeletCheckpointsDirName) +} + // getVolumeDevicePluginsDir returns the full path to the directory under which plugin // directories are created. Plugins can use these directories for data that // they need to persist. Plugins should create subdirectories under this named diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_network_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_network_linux.go index ae7d9235a55..8f767817a0f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_network_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_network_linux.go @@ -24,10 +24,11 @@ import ( "time" "k8s.io/apimachinery/pkg/util/wait" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/features" utiliptables "k8s.io/kubernetes/pkg/util/iptables" utilexec "k8s.io/utils/exec" - utilnet "k8s.io/utils/net" ) const ( @@ -51,73 +52,61 @@ const ( func (kl *Kubelet) initNetworkUtil() { exec := utilexec.New() - // TODO: @khenidak review when there is no IPv6 iptables exec what should happen here (note: no error returned from this func) - ipv6Primary := kl.nodeIPs != nil && utilnet.IsIPv6(kl.nodeIPs[0]) - - var iptClients []utiliptables.Interface - var protocols []utiliptables.Protocol - - // assume 4,6 - protocols = append(protocols, utiliptables.ProtocolIPv4) - iptClients = append(iptClients, utiliptables.New(exec, utiliptables.ProtocolIPv4)) - - protocols = append(protocols, utiliptables.ProtocolIPv6) - iptClients = append(iptClients, utiliptables.New(exec, utiliptables.ProtocolIPv6)) - - // and if they are not - if ipv6Primary { - protocols[0], protocols[1] = protocols[1], protocols[0] - iptClients[0], iptClients[1] = iptClients[1], iptClients[0] + iptClients := []utiliptables.Interface{ + utiliptables.New(exec, utiliptables.ProtocolIPv4), + utiliptables.New(exec, utiliptables.ProtocolIPv6), } for i := range iptClients { iptClient := iptClients[i] - if kl.syncNetworkUtil(iptClient) { - klog.InfoS("Initialized protocol iptables rules.", "protocol", protocols[i]) + if kl.syncIPTablesRules(iptClient) { + klog.InfoS("Initialized iptables rules.", "protocol", iptClient.Protocol()) go iptClient.Monitor( utiliptables.Chain("KUBE-KUBELET-CANARY"), []utiliptables.Table{utiliptables.TableMangle, utiliptables.TableNAT, utiliptables.TableFilter}, - func() { kl.syncNetworkUtil(iptClient) }, + func() { kl.syncIPTablesRules(iptClient) }, 1*time.Minute, wait.NeverStop, ) } else { - klog.InfoS("Failed to initialize protocol iptables rules; some functionality may be missing.", "protocol", protocols[i]) + klog.InfoS("Failed to initialize iptables rules; some functionality may be missing.", "protocol", iptClient.Protocol()) } } } -// syncNetworkUtil ensures the network utility are present on host. -// Network util includes: -// 1. In nat table, KUBE-MARK-DROP rule to mark connections for dropping -// Marked connection will be drop on INPUT/OUTPUT Chain in filter table -// 2. In nat table, KUBE-MARK-MASQ rule to mark connections for SNAT -// Marked connection will get SNAT on POSTROUTING Chain in nat table -func (kl *Kubelet) syncNetworkUtil(iptClient utiliptables.Interface) bool { - // Setup KUBE-MARK-DROP rules - dropMark := getIPTablesMark(kl.iptablesDropBit) - if _, err := iptClient.EnsureChain(utiliptables.TableNAT, KubeMarkDropChain); err != nil { - klog.ErrorS(err, "Failed to ensure that nat chain exists KUBE-MARK-DROP chain") - return false - } - if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableNAT, KubeMarkDropChain, "-j", "MARK", "--or-mark", dropMark); err != nil { - klog.ErrorS(err, "Failed to ensure marking rule for KUBE-MARK-DROP chain") - return false - } - if _, err := iptClient.EnsureChain(utiliptables.TableFilter, KubeFirewallChain); err != nil { - klog.ErrorS(err, "Failed to ensure that filter table exists KUBE-FIREWALL chain") - return false - } - if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableFilter, KubeFirewallChain, - "-m", "comment", "--comment", "kubernetes firewall for dropping marked packets", - "-m", "mark", "--mark", fmt.Sprintf("%s/%s", dropMark, dropMark), - "-j", "DROP"); err != nil { - klog.ErrorS(err, "Failed to ensure rule to drop packet marked by the KUBE-MARK-DROP in KUBE-FIREWALL chain") +// syncIPTablesRules ensures the KUBE-IPTABLES-HINT chain exists, and the martian packet +// protection rule is installed. If the IPTablesOwnershipCleanup feature gate is disabled +// it will also synchronize additional deprecated iptables rules. +func (kl *Kubelet) syncIPTablesRules(iptClient utiliptables.Interface) bool { + // Create hint chain so other components can see whether we are using iptables-legacy + // or iptables-nft. + if _, err := iptClient.EnsureChain(utiliptables.TableMangle, KubeIPTablesHintChain); err != nil { + klog.ErrorS(err, "Failed to ensure that iptables hint chain exists") return false } - // drop all non-local packets to localhost if they're not part of an existing - // forwarded connection. See #90259 if !iptClient.IsIPv6() { // ipv6 doesn't have this issue + // Set up the KUBE-FIREWALL chain and martian packet protection rule. + // (See below.) + if _, err := iptClient.EnsureChain(utiliptables.TableFilter, KubeFirewallChain); err != nil { + klog.ErrorS(err, "Failed to ensure that filter table KUBE-FIREWALL chain exists") + return false + } + + if _, err := iptClient.EnsureRule(utiliptables.Prepend, utiliptables.TableFilter, utiliptables.ChainOutput, "-j", string(KubeFirewallChain)); err != nil { + klog.ErrorS(err, "Failed to ensure that OUTPUT chain jumps to KUBE-FIREWALL") + return false + } + if _, err := iptClient.EnsureRule(utiliptables.Prepend, utiliptables.TableFilter, utiliptables.ChainInput, "-j", string(KubeFirewallChain)); err != nil { + klog.ErrorS(err, "Failed to ensure that INPUT chain jumps to KUBE-FIREWALL") + return false + } + + // Kube-proxy's use of `route_localnet` to enable NodePorts on localhost + // creates a security hole (https://issue.k8s.io/90259) which this + // iptables rule mitigates. This rule should have been added to + // kube-proxy, but it mistakenly ended up in kubelet instead, and we are + // keeping it in kubelet for now in case other third-party components + // depend on it. if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableFilter, KubeFirewallChain, "-m", "comment", "--comment", "block incoming localnet connections", "--dst", "127.0.0.0/8", @@ -130,32 +119,61 @@ func (kl *Kubelet) syncNetworkUtil(iptClient utiliptables.Interface) bool { } } - if _, err := iptClient.EnsureRule(utiliptables.Prepend, utiliptables.TableFilter, utiliptables.ChainOutput, "-j", string(KubeFirewallChain)); err != nil { - klog.ErrorS(err, "Failed to ensure that filter table from OUTPUT chain jumps to KUBE-FIREWALL chain") + if !utilfeature.DefaultFeatureGate.Enabled(features.IPTablesOwnershipCleanup) { + ok := kl.syncIPTablesRulesDeprecated(iptClient) + if !ok { + return false + } + } + + return true +} + +// syncIPTablesRulesDeprecated ensures deprecated iptables rules are present: +// 1. In nat table, KUBE-MARK-DROP rule to mark connections for dropping +// Marked connection will be drop on INPUT/OUTPUT Chain in filter table +// 2. In nat table, KUBE-MARK-MASQ rule to mark connections for SNAT +// Marked connection will get SNAT on POSTROUTING Chain in nat table +func (kl *Kubelet) syncIPTablesRulesDeprecated(iptClient utiliptables.Interface) bool { + // Setup KUBE-MARK-DROP rules + dropMark := getIPTablesMark(kl.iptablesDropBit) + if _, err := iptClient.EnsureChain(utiliptables.TableNAT, KubeMarkDropChain); err != nil { + klog.ErrorS(err, "Failed to ensure that KUBE-MARK-DROP chain exists") return false } - if _, err := iptClient.EnsureRule(utiliptables.Prepend, utiliptables.TableFilter, utiliptables.ChainInput, "-j", string(KubeFirewallChain)); err != nil { - klog.ErrorS(err, "Failed to ensure that filter table INPUT chain jumps to KUBE-FIREWALL chain") + if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableNAT, KubeMarkDropChain, "-j", "MARK", "--or-mark", dropMark); err != nil { + klog.ErrorS(err, "Failed to ensure that KUBE-MARK-DROP rule exists") + return false + } + if _, err := iptClient.EnsureChain(utiliptables.TableFilter, KubeFirewallChain); err != nil { + klog.ErrorS(err, "Failed to ensure that KUBE-FIREWALL chain exists") + return false + } + if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableFilter, KubeFirewallChain, + "-m", "comment", "--comment", "kubernetes firewall for dropping marked packets", + "-m", "mark", "--mark", fmt.Sprintf("%s/%s", dropMark, dropMark), + "-j", "DROP"); err != nil { + klog.ErrorS(err, "Failed to ensure that KUBE-FIREWALL rule exists") return false } // Setup KUBE-MARK-MASQ rules masqueradeMark := getIPTablesMark(kl.iptablesMasqueradeBit) if _, err := iptClient.EnsureChain(utiliptables.TableNAT, KubeMarkMasqChain); err != nil { - klog.ErrorS(err, "Failed to ensure that nat table exists KUBE-MARK-MASQ chain") + klog.ErrorS(err, "Failed to ensure that KUBE-MARK-MASQ chain exists") return false } if _, err := iptClient.EnsureChain(utiliptables.TableNAT, KubePostroutingChain); err != nil { - klog.ErrorS(err, "Failed to ensure that nat table exists kube POSTROUTING chain") + klog.ErrorS(err, "Failed to ensure that KUBE-POSTROUTING chain exists") return false } if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableNAT, KubeMarkMasqChain, "-j", "MARK", "--or-mark", masqueradeMark); err != nil { - klog.ErrorS(err, "Failed to ensure marking rule for KUBE-MARK-MASQ chain") + klog.ErrorS(err, "Failed to ensure that KUBE-MARK-MASQ rule exists") return false } if _, err := iptClient.EnsureRule(utiliptables.Prepend, utiliptables.TableNAT, utiliptables.ChainPostrouting, "-m", "comment", "--comment", "kubernetes postrouting rules", "-j", string(KubePostroutingChain)); err != nil { - klog.ErrorS(err, "Failed to ensure that nat table from POSTROUTING chain jumps to KUBE-POSTROUTING chain") + klog.ErrorS(err, "Failed to ensure that POSTROUTING chain jumps to KUBE-POSTROUTING") return false } @@ -165,7 +183,7 @@ func (kl *Kubelet) syncNetworkUtil(iptClient utiliptables.Interface) bool { if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableNAT, KubePostroutingChain, "-m", "mark", "!", "--mark", fmt.Sprintf("%s/%s", masqueradeMark, masqueradeMark), "-j", "RETURN"); err != nil { - klog.ErrorS(err, "Failed to ensure filtering rule for KUBE-POSTROUTING chain") + klog.ErrorS(err, "Failed to ensure first masquerading rule exists") return false } // Clear the mark to avoid re-masquerading if the packet re-traverses the network stack. @@ -173,7 +191,7 @@ func (kl *Kubelet) syncNetworkUtil(iptClient utiliptables.Interface) bool { // to Sprintf another bitmask). if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableNAT, KubePostroutingChain, "-j", "MARK", "--xor-mark", masqueradeMark); err != nil { - klog.ErrorS(err, "Failed to ensure unmarking rule for KUBE-POSTROUTING chain") + klog.ErrorS(err, "Failed to ensure second masquerading rule exists") return false } masqRule := []string{ @@ -184,14 +202,7 @@ func (kl *Kubelet) syncNetworkUtil(iptClient utiliptables.Interface) bool { masqRule = append(masqRule, "--random-fully") } if _, err := iptClient.EnsureRule(utiliptables.Append, utiliptables.TableNAT, KubePostroutingChain, masqRule...); err != nil { - klog.ErrorS(err, "Failed to ensure SNAT rule for packets marked by KUBE-MARK-MASQ chain in nat table KUBE-POSTROUTING chain") - return false - } - - // Create hint chain so other components can see whether we are using iptables-legacy - // or iptables-nft. - if _, err := iptClient.EnsureChain(utiliptables.TableMangle, KubeIPTablesHintChain); err != nil { - klog.ErrorS(err, "Failed to ensure that iptables hint chain exists") + klog.ErrorS(err, "Failed to ensure third masquerading rule exists") return false } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go index aabb75bcd2e..b28e6288b6e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_node_status.go @@ -624,7 +624,7 @@ func (kl *Kubelet) defaultNodeStatusFuncs() []func(*v1.Node) error { setters = append(setters, nodestatus.NodeAddress(kl.nodeIPs, kl.nodeIPValidator, kl.hostname, kl.hostnameOverridden, kl.externalCloudProvider, kl.cloud, nodeAddressesFunc), nodestatus.MachineInfo(string(kl.nodeName), kl.maxPods, kl.podsPerCore, kl.GetCachedMachineInfo, kl.containerManager.GetCapacity, - kl.containerManager.GetDevicePluginResourceCapacity, kl.containerManager.GetNodeAllocatableReservation, kl.recordEvent), + kl.containerManager.GetDevicePluginResourceCapacity, kl.containerManager.GetNodeAllocatableReservation, kl.recordEvent, kl.supportLocalStorageCapacityIsolation()), nodestatus.VersionInfo(kl.cadvisor.VersionInfo, kl.containerRuntime.Type, kl.containerRuntime.Version), nodestatus.DaemonEndpoints(kl.daemonEndpoints), nodestatus.Images(kl.nodeStatusMaxImages, kl.imageManager.GetImageList), @@ -637,7 +637,8 @@ func (kl *Kubelet) defaultNodeStatusFuncs() []func(*v1.Node) error { nodestatus.MemoryPressureCondition(kl.clock.Now, kl.evictionManager.IsUnderMemoryPressure, kl.recordNodeStatusEvent), nodestatus.DiskPressureCondition(kl.clock.Now, kl.evictionManager.IsUnderDiskPressure, kl.recordNodeStatusEvent), nodestatus.PIDPressureCondition(kl.clock.Now, kl.evictionManager.IsUnderPIDPressure, kl.recordNodeStatusEvent), - nodestatus.ReadyCondition(kl.clock.Now, kl.runtimeState.runtimeErrors, kl.runtimeState.networkErrors, kl.runtimeState.storageErrors, validateHostFunc, kl.containerManager.Status, kl.shutdownManager.ShutdownStatus, kl.recordNodeStatusEvent), + nodestatus.ReadyCondition(kl.clock.Now, kl.runtimeState.runtimeErrors, kl.runtimeState.networkErrors, kl.runtimeState.storageErrors, + validateHostFunc, kl.containerManager.Status, kl.shutdownManager.ShutdownStatus, kl.recordNodeStatusEvent, kl.supportLocalStorageCapacityIsolation()), nodestatus.VolumesInUse(kl.volumeManager.ReconcilerStatesHasBeenSynced, kl.volumeManager.GetVolumesInUse), // TODO(mtaufen): I decided not to move this setter for now, since all it does is send an event // and record state back to the Kubelet runtime object. In the future, I'd like to isolate diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go index a69558261e8..ecbf81099bd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kubelet_pods.go @@ -420,6 +420,15 @@ func truncatePodHostnameIfNeeded(podName, hostname string) (string, error) { return truncated, nil } +// GetOrCreateUserNamespaceMappings returns the configuration for the sandbox user namespace +func (kl *Kubelet) GetOrCreateUserNamespaceMappings(pod *v1.Pod) (*runtimeapi.UserNamespace, error) { + return kl.usernsManager.GetOrCreateUserNamespaceMappings(pod) +} + +func (kl *Kubelet) getHostIDsForPod(pod *v1.Pod, containerUID, containerGID *int64) (hostUID, hostGID *int64, err error) { + return kl.usernsManager.getHostIDsForPod(pod, containerUID, containerGID) +} + // GeneratePodHostNameAndDomain creates a hostname and domain name for a pod, // given that pod's spec and annotations or returns an error. func (kl *Kubelet) GeneratePodHostNameAndDomain(pod *v1.Pod) (string, string, error) { @@ -1154,6 +1163,12 @@ func (kl *Kubelet) HandlePodCleanups() error { return err } + // Remove orphaned pod user namespace allocations (if any). + klog.V(3).InfoS("Clean up orphaned pod user namespace allocations") + if err = kl.usernsManager.CleanupOrphanedPodUsernsAllocations(allPods, runningRuntimePods); err != nil { + klog.ErrorS(err, "Failed cleaning up orphaned pod user namespaces allocations") + } + // Remove orphaned volumes from pods that are known not to have any // containers. Note that we pass all pods (including terminated pods) to // the function, so that we don't remove volumes associated with terminated @@ -1221,7 +1236,7 @@ func (kl *Kubelet) validateContainerLogStatus(podName string, podStatus *v1.PodS if !found { cStatus, found = podutil.GetContainerStatus(podStatus.InitContainerStatuses, containerName) } - if !found && utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { + if !found { cStatus, found = podutil.GetContainerStatus(podStatus.EphemeralContainerStatuses, containerName) } if !found { @@ -1430,14 +1445,12 @@ func getPhase(spec *v1.PodSpec, info []v1.ContainerStatus) v1.PodPhase { // internal pod status. This method should only be called from within sync*Pod methods. func (kl *Kubelet) generateAPIPodStatus(pod *v1.Pod, podStatus *kubecontainer.PodStatus) v1.PodStatus { klog.V(3).InfoS("Generating pod status", "pod", klog.KObj(pod)) - // use the previous pod status, or the api status, as the basis for this pod oldPodStatus, found := kl.statusManager.GetPodStatus(pod.UID) if !found { oldPodStatus = pod.Status } s := kl.convertStatusToAPIStatus(pod, podStatus, oldPodStatus) - // calculate the next phase and preserve reason allStatus := append(append([]v1.ContainerStatus{}, s.ContainerStatuses...), s.InitContainerStatuses...) s.Phase = getPhase(&pod.Spec, allStatus) @@ -1499,6 +1512,9 @@ func (kl *Kubelet) generateAPIPodStatus(pod *v1.Pod, podStatus *kubecontainer.Po } } // set all Kubelet-owned conditions + if utilfeature.DefaultFeatureGate.Enabled(features.PodHasNetworkCondition) { + s.Conditions = append(s.Conditions, status.GeneratePodHasNetworkCondition(pod, podStatus)) + } s.Conditions = append(s.Conditions, status.GeneratePodInitializedCondition(&pod.Spec, s.InitContainerStatuses, s.Phase)) s.Conditions = append(s.Conditions, status.GeneratePodReadyCondition(&pod.Spec, s.Conditions, s.ContainerStatuses, s.Phase)) s.Conditions = append(s.Conditions, status.GenerateContainersReadyCondition(&pod.Spec, s.ContainerStatuses, s.Phase)) @@ -1506,7 +1522,6 @@ func (kl *Kubelet) generateAPIPodStatus(pod *v1.Pod, podStatus *kubecontainer.Po Type: v1.PodScheduled, Status: v1.ConditionTrue, }) - // set HostIP and initialize PodIP/PodIPs for host network pods if kl.kubeClient != nil { hostIPs, err := kl.getHostIPsAnyWay() @@ -1602,23 +1617,21 @@ func (kl *Kubelet) convertStatusToAPIStatus(pod *v1.Pod, podStatus *kubecontaine len(pod.Spec.InitContainers) > 0, true, ) - if utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - var ecSpecs []v1.Container - for i := range pod.Spec.EphemeralContainers { - ecSpecs = append(ecSpecs, v1.Container(pod.Spec.EphemeralContainers[i].EphemeralContainerCommon)) - } - - // #80875: By now we've iterated podStatus 3 times. We could refactor this to make a single - // pass through podStatus.ContainerStatuses - apiPodStatus.EphemeralContainerStatuses = kl.convertToAPIContainerStatuses( - pod, podStatus, - oldPodStatus.EphemeralContainerStatuses, - ecSpecs, - len(pod.Spec.InitContainers) > 0, - false, - ) + var ecSpecs []v1.Container + for i := range pod.Spec.EphemeralContainers { + ecSpecs = append(ecSpecs, v1.Container(pod.Spec.EphemeralContainers[i].EphemeralContainerCommon)) } + // #80875: By now we've iterated podStatus 3 times. We could refactor this to make a single + // pass through podStatus.ContainerStatuses + apiPodStatus.EphemeralContainerStatuses = kl.convertToAPIContainerStatuses( + pod, podStatus, + oldPodStatus.EphemeralContainerStatuses, + ecSpecs, + len(pod.Spec.InitContainers) > 0, + false, + ) + return &apiPodStatus } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/helpers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/helpers.go index de289836a8b..9343b78335a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/helpers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/helpers.go @@ -234,15 +234,6 @@ func fieldProfile(scmp *v1.SeccompProfile, profileRootPath string, fallbackToRun return "" } -func annotationProfile(profile, profileRootPath string) string { - if strings.HasPrefix(profile, v1.SeccompLocalhostProfileNamePrefix) { - name := strings.TrimPrefix(profile, v1.SeccompLocalhostProfileNamePrefix) - fname := filepath.Join(profileRootPath, filepath.FromSlash(name)) - return v1.SeccompLocalhostProfileNamePrefix + fname - } - return profile -} - func (m *kubeGenericRuntimeManager) getSeccompProfilePath(annotations map[string]string, containerName string, podSecContext *v1.PodSecurityContext, containerSecContext *v1.SecurityContext, fallbackToRuntimeDefault bool) string { // container fields are applied first @@ -250,23 +241,11 @@ func (m *kubeGenericRuntimeManager) getSeccompProfilePath(annotations map[string return fieldProfile(containerSecContext.SeccompProfile, m.seccompProfileRoot, fallbackToRuntimeDefault) } - // if container field does not exist, try container annotation (deprecated) - if containerName != "" { - if profile, ok := annotations[v1.SeccompContainerAnnotationKeyPrefix+containerName]; ok { - return annotationProfile(profile, m.seccompProfileRoot) - } - } - // when container seccomp is not defined, try to apply from pod field if podSecContext != nil && podSecContext.SeccompProfile != nil { return fieldProfile(podSecContext.SeccompProfile, m.seccompProfileRoot, fallbackToRuntimeDefault) } - // as last resort, try to apply pod annotation (deprecated) - if profile, ok := annotations[v1.SeccompPodAnnotationKey]; ok { - return annotationProfile(profile, m.seccompProfileRoot) - } - if fallbackToRuntimeDefault { return v1.SeccompProfileRuntimeDefault } @@ -324,40 +303,3 @@ func (m *kubeGenericRuntimeManager) getSeccompProfile(annotations map[string]str ProfileType: runtimeapi.SecurityProfile_Unconfined, } } - -func ipcNamespaceForPod(pod *v1.Pod) runtimeapi.NamespaceMode { - if pod != nil && pod.Spec.HostIPC { - return runtimeapi.NamespaceMode_NODE - } - return runtimeapi.NamespaceMode_POD -} - -func networkNamespaceForPod(pod *v1.Pod) runtimeapi.NamespaceMode { - if pod != nil && pod.Spec.HostNetwork { - return runtimeapi.NamespaceMode_NODE - } - return runtimeapi.NamespaceMode_POD -} - -func pidNamespaceForPod(pod *v1.Pod) runtimeapi.NamespaceMode { - if pod != nil { - if pod.Spec.HostPID { - return runtimeapi.NamespaceMode_NODE - } - if pod.Spec.ShareProcessNamespace != nil && *pod.Spec.ShareProcessNamespace { - return runtimeapi.NamespaceMode_POD - } - } - // Note that PID does not default to the zero value for v1.Pod - return runtimeapi.NamespaceMode_CONTAINER -} - -// namespacesForPod returns the runtimeapi.NamespaceOption for a given pod. -// An empty or nil pod can be used to get the namespace defaults for v1.Pod. -func namespacesForPod(pod *v1.Pod) *runtimeapi.NamespaceOption { - return &runtimeapi.NamespaceOption{ - Ipc: ipcNamespaceForPod(pod), - Network: networkNamespaceForPod(pod), - Pid: pidNamespaceForPod(pod), - } -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/instrumented_services.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/instrumented_services.go index eb6ba384b54..18ce6aa0425 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/instrumented_services.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/instrumented_services.go @@ -131,7 +131,7 @@ func (in instrumentedRuntimeService) ContainerStatus(containerID string, verbose return out, err } -func (in instrumentedRuntimeService) UpdateContainerResources(containerID string, resources *runtimeapi.LinuxContainerResources) error { +func (in instrumentedRuntimeService) UpdateContainerResources(containerID string, resources *runtimeapi.ContainerResources) error { const operation = "update_container" defer recordOperation(operation, time.Now()) @@ -324,3 +324,21 @@ func (in instrumentedImageManagerService) ImageFsInfo() ([]*runtimeapi.Filesyste recordError(operation, err) return fsInfo, nil } + +func (in instrumentedRuntimeService) CheckpointContainer(options *runtimeapi.CheckpointContainerRequest) error { + const operation = "checkpoint_container" + defer recordOperation(operation, time.Now()) + + err := in.service.CheckpointContainer(options) + recordError(operation, err) + return err +} + +func (in instrumentedRuntimeService) GetContainerEvents(containerEventsCh chan *runtimeapi.ContainerEventResponse) error { + const operation = "get_container_events" + defer recordOperation(operation, time.Now()) + + err := in.service.GetContainerEvents(containerEventsCh) + recordError(operation, err) + return err +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container.go index 1ea7723f813..6be0d95a416 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container.go @@ -46,9 +46,7 @@ import ( kubetypes "k8s.io/apimachinery/pkg/types" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" - utilfeature "k8s.io/apiserver/pkg/util/feature" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" - "k8s.io/kubernetes/pkg/features" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/cri/remote" "k8s.io/kubernetes/pkg/kubelet/events" @@ -120,7 +118,7 @@ func ephemeralContainerStartSpec(ec *v1.EphemeralContainer) *startSpec { // usually isn't a problem since ephemeral containers aren't allowed at pod creation time. // This always returns nil when the EphemeralContainers feature is disabled. func (s *startSpec) getTargetID(podStatus *kubecontainer.PodStatus) (*kubecontainer.ContainerID, error) { - if s.ephemeralContainer == nil || s.ephemeralContainer.TargetContainerName == "" || !utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { + if s.ephemeralContainer == nil || s.ephemeralContainer.TargetContainerName == "" { return nil, nil } @@ -675,24 +673,7 @@ func (m *kubeGenericRuntimeManager) killContainer(pod *v1.Pod, containerID kubec } // From this point, pod and container must be non-nil. - gracePeriod := int64(minimumGracePeriodInSeconds) - switch { - case pod.DeletionGracePeriodSeconds != nil: - gracePeriod = *pod.DeletionGracePeriodSeconds - case pod.Spec.TerminationGracePeriodSeconds != nil: - gracePeriod = *pod.Spec.TerminationGracePeriodSeconds - - switch reason { - case reasonStartupProbe: - if containerSpec.StartupProbe != nil && containerSpec.StartupProbe.TerminationGracePeriodSeconds != nil { - gracePeriod = *containerSpec.StartupProbe.TerminationGracePeriodSeconds - } - case reasonLivenessProbe: - if containerSpec.LivenessProbe != nil && containerSpec.LivenessProbe.TerminationGracePeriodSeconds != nil { - gracePeriod = *containerSpec.LivenessProbe.TerminationGracePeriodSeconds - } - } - } + gracePeriod := setTerminationGracePeriod(pod, containerSpec, containerName, containerID, reason) if len(message) == 0 { message = fmt.Sprintf("Stopping container %s", containerSpec.Name) @@ -993,3 +974,35 @@ func (m *kubeGenericRuntimeManager) removeContainerLog(containerID string) error func (m *kubeGenericRuntimeManager) DeleteContainer(containerID kubecontainer.ContainerID) error { return m.removeContainer(containerID.ID) } + +// setTerminationGracePeriod determines the grace period to use when killing a container +func setTerminationGracePeriod(pod *v1.Pod, containerSpec *v1.Container, containerName string, containerID kubecontainer.ContainerID, reason containerKillReason) int64 { + gracePeriod := int64(minimumGracePeriodInSeconds) + switch { + case pod.DeletionGracePeriodSeconds != nil: + return *pod.DeletionGracePeriodSeconds + case pod.Spec.TerminationGracePeriodSeconds != nil: + switch reason { + case reasonStartupProbe: + if isProbeTerminationGracePeriodSecondsSet(pod, containerSpec, containerSpec.StartupProbe, containerName, containerID, "StartupProbe") { + return *containerSpec.StartupProbe.TerminationGracePeriodSeconds + } + case reasonLivenessProbe: + if isProbeTerminationGracePeriodSecondsSet(pod, containerSpec, containerSpec.LivenessProbe, containerName, containerID, "LivenessProbe") { + return *containerSpec.LivenessProbe.TerminationGracePeriodSeconds + } + } + return *pod.Spec.TerminationGracePeriodSeconds + } + return gracePeriod +} + +func isProbeTerminationGracePeriodSecondsSet(pod *v1.Pod, containerSpec *v1.Container, probe *v1.Probe, containerName string, containerID kubecontainer.ContainerID, probeType string) bool { + if probe != nil && probe.TerminationGracePeriodSeconds != nil { + if *probe.TerminationGracePeriodSeconds > *pod.Spec.TerminationGracePeriodSeconds { + klog.V(4).InfoS("Using probe-level grace period that is greater than the pod-level grace period", "pod", klog.KObj(pod), "pod-uid", pod.UID, "containerName", containerName, "containerID", containerID.String(), "probe-type", probeType, "probe-grace-period", *probe.TerminationGracePeriodSeconds, "pod-grace-period", *pod.Spec.TerminationGracePeriodSeconds) + } + return true + } + return false +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go index 25917803b1c..1e9a2377b51 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_linux.go @@ -45,15 +45,23 @@ func (m *kubeGenericRuntimeManager) applyPlatformSpecificContainerConfig(config libcontainercgroups.IsCgroup2UnifiedMode() { enforceMemoryQoS = true } - config.Linux = m.generateLinuxContainerConfig(container, pod, uid, username, nsTarget, enforceMemoryQoS) + cl, err := m.generateLinuxContainerConfig(container, pod, uid, username, nsTarget, enforceMemoryQoS) + if err != nil { + return err + } + config.Linux = cl return nil } // generateLinuxContainerConfig generates linux container config for kubelet runtime v1. -func (m *kubeGenericRuntimeManager) generateLinuxContainerConfig(container *v1.Container, pod *v1.Pod, uid *int64, username string, nsTarget *kubecontainer.ContainerID, enforceMemoryQoS bool) *runtimeapi.LinuxContainerConfig { +func (m *kubeGenericRuntimeManager) generateLinuxContainerConfig(container *v1.Container, pod *v1.Pod, uid *int64, username string, nsTarget *kubecontainer.ContainerID, enforceMemoryQoS bool) (*runtimeapi.LinuxContainerConfig, error) { + sc, err := m.determineEffectiveSecurityContext(pod, container, uid, username) + if err != nil { + return nil, err + } lc := &runtimeapi.LinuxContainerConfig{ Resources: &runtimeapi.LinuxContainerResources{}, - SecurityContext: m.determineEffectiveSecurityContext(pod, container, uid, username), + SecurityContext: sc, } if nsTarget != nil && lc.SecurityContext.NamespaceOptions.Pid == runtimeapi.NamespaceMode_CONTAINER { @@ -124,7 +132,7 @@ func (m *kubeGenericRuntimeManager) generateLinuxContainerConfig(container *v1.C } } - return lc + return lc, nil } // calculateLinuxResources will create the linuxContainerResources type based on the provided CPU and memory resource requests, limits diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go index 2b6acbe0e47..c1e1d777ffd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_container_windows.go @@ -44,7 +44,7 @@ func (m *kubeGenericRuntimeManager) applyPlatformSpecificContainerConfig(config } // generateWindowsContainerConfig generates windows container config for kubelet runtime v1. -// Refer https://github.com/kubernetes/community/blob/master/contributors/design-proposals/node/cri-windows.md. +// Refer https://git.k8s.io/design-proposals-archive/node/cri-windows.md. func (m *kubeGenericRuntimeManager) generateWindowsContainerConfig(container *v1.Container, pod *v1.Pod, uid *int64, username string) (*runtimeapi.WindowsContainerConfig, error) { wc := &runtimeapi.WindowsContainerConfig{ Resources: &runtimeapi.WindowsContainerResources{}, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go index a72691bfcfc..6e676ffef82 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_gc.go @@ -268,10 +268,10 @@ func (cgc *containerGC) evictContainers(gcPolicy kubecontainer.GCPolicy, allSour // evictSandboxes remove all evictable sandboxes. An evictable sandbox must // meet the following requirements: -// 1. not in ready state -// 2. contains no containers. -// 3. belong to a non-existent (i.e., already removed) pod, or is not the -// most recently created sandbox for the pod. +// 1. not in ready state +// 2. contains no containers. +// 3. belong to a non-existent (i.e., already removed) pod, or is not the +// most recently created sandbox for the pod. func (cgc *containerGC) evictSandboxes(evictNonDeletedPods bool) error { containers, err := cgc.manager.getKubeletContainers(true) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go index 8dee580344e..89eaf8b4fcd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_manager.go @@ -47,6 +47,7 @@ import ( kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/events" "k8s.io/kubernetes/pkg/kubelet/images" + runtimeutil "k8s.io/kubernetes/pkg/kubelet/kuberuntime/util" "k8s.io/kubernetes/pkg/kubelet/lifecycle" "k8s.io/kubernetes/pkg/kubelet/logs" "k8s.io/kubernetes/pkg/kubelet/metrics" @@ -462,48 +463,6 @@ type podActions struct { EphemeralContainersToStart []int } -// podSandboxChanged checks whether the spec of the pod is changed and returns -// (changed, new attempt, original sandboxID if exist). -func (m *kubeGenericRuntimeManager) podSandboxChanged(pod *v1.Pod, podStatus *kubecontainer.PodStatus) (bool, uint32, string) { - if len(podStatus.SandboxStatuses) == 0 { - klog.V(2).InfoS("No sandbox for pod can be found. Need to start a new one", "pod", klog.KObj(pod)) - return true, 0, "" - } - - readySandboxCount := 0 - for _, s := range podStatus.SandboxStatuses { - if s.State == runtimeapi.PodSandboxState_SANDBOX_READY { - readySandboxCount++ - } - } - - // Needs to create a new sandbox when readySandboxCount > 1 or the ready sandbox is not the latest one. - sandboxStatus := podStatus.SandboxStatuses[0] - if readySandboxCount > 1 { - klog.V(2).InfoS("Multiple sandboxes are ready for Pod. Need to reconcile them", "pod", klog.KObj(pod)) - - return true, sandboxStatus.Metadata.Attempt + 1, sandboxStatus.Id - } - if sandboxStatus.State != runtimeapi.PodSandboxState_SANDBOX_READY { - klog.V(2).InfoS("No ready sandbox for pod can be found. Need to start a new one", "pod", klog.KObj(pod)) - return true, sandboxStatus.Metadata.Attempt + 1, sandboxStatus.Id - } - - // Needs to create a new sandbox when network namespace changed. - if sandboxStatus.GetLinux().GetNamespaces().GetOptions().GetNetwork() != networkNamespaceForPod(pod) { - klog.V(2).InfoS("Sandbox for pod has changed. Need to start a new one", "pod", klog.KObj(pod)) - return true, sandboxStatus.Metadata.Attempt + 1, "" - } - - // Needs to create a new sandbox when the sandbox does not have an IP address. - if !kubecontainer.IsHostNetworkPod(pod) && sandboxStatus.Network != nil && sandboxStatus.Network.Ip == "" { - klog.V(2).InfoS("Sandbox for pod has no IP address. Need to start a new one", "pod", klog.KObj(pod)) - return true, sandboxStatus.Metadata.Attempt + 1, sandboxStatus.Id - } - - return false, sandboxStatus.Metadata.Attempt, sandboxStatus.Id -} - func containerChanged(container *v1.Container, containerStatus *kubecontainer.Status) (uint64, uint64, bool) { expectedHash := kubecontainer.HashContainer(container) return expectedHash, containerStatus.Hash, containerStatus.Hash != expectedHash @@ -525,7 +484,7 @@ func containerSucceeded(c *v1.Container, podStatus *kubecontainer.PodStatus) boo func (m *kubeGenericRuntimeManager) computePodActions(pod *v1.Pod, podStatus *kubecontainer.PodStatus) podActions { klog.V(5).InfoS("Syncing Pod", "pod", klog.KObj(pod)) - createPodSandbox, attempt, sandboxID := m.podSandboxChanged(pod, podStatus) + createPodSandbox, attempt, sandboxID := runtimeutil.PodSandboxChanged(pod, podStatus) changes := podActions{ KillPod: createPodSandbox, CreateSandbox: createPodSandbox, @@ -578,14 +537,12 @@ func (m *kubeGenericRuntimeManager) computePodActions(pod *v1.Pod, podStatus *ku } // Ephemeral containers may be started even if initialization is not yet complete. - if utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - for i := range pod.Spec.EphemeralContainers { - c := (*v1.Container)(&pod.Spec.EphemeralContainers[i].EphemeralContainerCommon) + for i := range pod.Spec.EphemeralContainers { + c := (*v1.Container)(&pod.Spec.EphemeralContainers[i].EphemeralContainerCommon) - // Ephemeral Containers are never restarted - if podStatus.FindContainerStatusByName(c.Name) == nil { - changes.EphemeralContainersToStart = append(changes.EphemeralContainersToStart, i) - } + // Ephemeral Containers are never restarted + if podStatus.FindContainerStatusByName(c.Name) == nil { + changes.EphemeralContainersToStart = append(changes.EphemeralContainersToStart, i) } } @@ -914,10 +871,8 @@ func (m *kubeGenericRuntimeManager) SyncPod(pod *v1.Pod, podStatus *kubecontaine // These are started "prior" to init containers to allow running ephemeral containers even when there // are errors starting an init container. In practice init containers will start first since ephemeral // containers cannot be specified on pod creation. - if utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - for _, idx := range podContainerChanges.EphemeralContainersToStart { - start("ephemeral container", metrics.EphemeralContainer, ephemeralContainerStartSpec(&pod.Spec.EphemeralContainers[idx])) - } + for _, idx := range podContainerChanges.EphemeralContainersToStart { + start("ephemeral container", metrics.EphemeralContainer, ephemeralContainerStartSpec(&pod.Spec.EphemeralContainers[idx])) } // Step 6: start the init container. @@ -1100,3 +1055,7 @@ func (m *kubeGenericRuntimeManager) UpdatePodCIDR(podCIDR string) error { }, }) } + +func (m *kubeGenericRuntimeManager) CheckpointContainer(options *runtimeapi.CheckpointContainerRequest) error { + return m.runtimeService.CheckpointContainer(options) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go index e6c8fc35012..c37270d26d9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/kuberuntime_sandbox.go @@ -29,6 +29,7 @@ import ( "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/features" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" + runtimeutil "k8s.io/kubernetes/pkg/kubelet/kuberuntime/util" "k8s.io/kubernetes/pkg/kubelet/types" "k8s.io/kubernetes/pkg/kubelet/util" "k8s.io/kubernetes/pkg/kubelet/util/format" @@ -194,7 +195,11 @@ func (m *kubeGenericRuntimeManager) generatePodSandboxLinuxConfig(pod *v1.Pod) ( if sc.RunAsGroup != nil && runtime.GOOS != "windows" { lc.SecurityContext.RunAsGroup = &runtimeapi.Int64Value{Value: int64(*sc.RunAsGroup)} } - lc.SecurityContext.NamespaceOptions = namespacesForPod(pod) + namespaceOptions, err := runtimeutil.NamespacesForPod(pod, m.runtimeHelper) + if err != nil { + return nil, err + } + lc.SecurityContext.NamespaceOptions = namespaceOptions if sc.FSGroup != nil && runtime.GOOS != "windows" { lc.SecurityContext.SupplementalGroups = append(lc.SecurityContext.SupplementalGroups, int64(*sc.FSGroup)) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go index 7a3dc51875c..c69b557e37d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs/logs.go @@ -123,8 +123,9 @@ var parseFuncs = []parseFunc{ } // parseCRILog parses logs in CRI log format. CRI Log format example: -// 2016-10-06T00:17:09.669794202Z stdout P log content 1 -// 2016-10-06T00:17:09.669794203Z stderr F log content 2 +// +// 2016-10-06T00:17:09.669794202Z stdout P log content 1 +// 2016-10-06T00:17:09.669794203Z stderr F log content 2 func parseCRILog(log []byte, msg *logMessage) error { var err error // Parse timestamp @@ -182,8 +183,9 @@ type jsonLog struct { // parseDockerJSONLog parses logs in Docker JSON log format. Docker JSON log format // example: -// {"log":"content 1","stream":"stdout","time":"2016-10-20T18:39:20.57606443Z"} -// {"log":"content 2","stream":"stderr","time":"2016-10-20T18:39:20.57606444Z"} +// +// {"log":"content 1","stream":"stdout","time":"2016-10-20T18:39:20.57606443Z"} +// {"log":"content 2","stream":"stderr","time":"2016-10-20T18:39:20.57606444Z"} func parseDockerJSONLog(log []byte, msg *logMessage) error { var l = &jsonLog{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go index c9d33e44305..5e6f05b4e18 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context.go @@ -19,12 +19,13 @@ package kuberuntime import ( v1 "k8s.io/api/core/v1" runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" + runtimeutil "k8s.io/kubernetes/pkg/kubelet/kuberuntime/util" "k8s.io/kubernetes/pkg/security/apparmor" "k8s.io/kubernetes/pkg/securitycontext" ) // determineEffectiveSecurityContext gets container's security context from v1.Pod and v1.Container. -func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Pod, container *v1.Container, uid *int64, username string) *runtimeapi.LinuxContainerSecurityContext { +func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Pod, container *v1.Container, uid *int64, username string) (*runtimeapi.LinuxContainerSecurityContext, error) { effectiveSc := securitycontext.DetermineEffectiveSecurityContext(pod, container) synthesized := convertToRuntimeSecurityContext(effectiveSc) if synthesized == nil { @@ -52,7 +53,11 @@ func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Po } // set namespace options and supplemental groups. - synthesized.NamespaceOptions = namespacesForPod(pod) + namespaceOptions, err := runtimeutil.NamespacesForPod(pod, m.runtimeHelper) + if err != nil { + return nil, err + } + synthesized.NamespaceOptions = namespaceOptions podSc := pod.Spec.SecurityContext if podSc != nil { if podSc.FSGroup != nil { @@ -74,7 +79,7 @@ func (m *kubeGenericRuntimeManager) determineEffectiveSecurityContext(pod *v1.Po synthesized.MaskedPaths = securitycontext.ConvertToRuntimeMaskedPaths(effectiveSc.ProcMount) synthesized.ReadonlyPaths = securitycontext.ConvertToRuntimeReadonlyPaths(effectiveSc.ProcMount) - return synthesized + return synthesized, nil } // convertToRuntimeSecurityContext converts v1.SecurityContext to runtimeapi.SecurityContext. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context_windows.go index 87b777f5e0a..21946a27602 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/security_context_windows.go @@ -25,6 +25,7 @@ import ( "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/kubelet/util/format" "k8s.io/kubernetes/pkg/securitycontext" + "strings" ) var ( @@ -37,6 +38,7 @@ var ( // According to the discussion of sig-windows, at present, we assume that ContainerAdministrator is the windows container root user, // and then optimize this logic according to the best time. // https://docs.google.com/document/d/1Tjxzjjuy4SQsFSUVXZbvqVb64hjNAG5CQX8bK7Yda9w +// note: usernames on Windows are NOT case sensitive! func verifyRunAsNonRoot(pod *v1.Pod, container *v1.Container, uid *int64, username string) error { effectiveSc := securitycontext.DetermineEffectiveSecurityContext(pod, container) // If the option is not set, or if running as root is allowed, return nil. @@ -54,15 +56,17 @@ func verifyRunAsNonRoot(pod *v1.Pod, container *v1.Container, uid *int64, userna if effectiveSc.RunAsGroup != nil { klog.InfoS("Windows container does not support SecurityContext.RunAsGroup", "pod", klog.KObj(pod), "containerName", container.Name) } + // Verify that if runAsUserName is set for the pod and/or container that it is not set to 'ContainerAdministrator' if effectiveSc.WindowsOptions != nil { if effectiveSc.WindowsOptions.RunAsUserName != nil { - if *effectiveSc.WindowsOptions.RunAsUserName == windowsRootUserName { - return fmt.Errorf("container's runAsUser (%s) which will be regarded as root identity and will break non-root policy (pod: %q, container: %s)", username, format.Pod(pod), container.Name) + if strings.EqualFold(*effectiveSc.WindowsOptions.RunAsUserName, windowsRootUserName) { + return fmt.Errorf("container's runAsUserName (%s) which will be regarded as root identity and will break non-root policy (pod: %q, container: %s)", *effectiveSc.WindowsOptions.RunAsUserName, format.Pod(pod), container.Name) } return nil } } - if len(username) > 0 && username == windowsRootUserName { + // Verify that if runAsUserName is NOT set for the pod and/or container that the default user for the container image is not set to 'ContainerAdministrator' + if len(username) > 0 && strings.EqualFold(username, windowsRootUserName) { return fmt.Errorf("container's runAsUser (%s) which will be regarded as root identity and will break non-root policy (pod: %q, container: %s)", username, format.Pod(pod), container.Name) } return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/util/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/util/util.go new file mode 100644 index 00000000000..af61e17567e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/kuberuntime/util/util.go @@ -0,0 +1,114 @@ +/* +Copyright 2016 The Kubernetes 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 util + +import ( + v1 "k8s.io/api/core/v1" + runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" + "k8s.io/klog/v2" + kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" +) + +// PodSandboxChanged checks whether the spec of the pod is changed and returns +// (changed, new attempt, original sandboxID if exist). +func PodSandboxChanged(pod *v1.Pod, podStatus *kubecontainer.PodStatus) (bool, uint32, string) { + if len(podStatus.SandboxStatuses) == 0 { + klog.V(2).InfoS("No sandbox for pod can be found. Need to start a new one", "pod", klog.KObj(pod)) + return true, 0, "" + } + + readySandboxCount := 0 + for _, s := range podStatus.SandboxStatuses { + if s.State == runtimeapi.PodSandboxState_SANDBOX_READY { + readySandboxCount++ + } + } + + // Needs to create a new sandbox when readySandboxCount > 1 or the ready sandbox is not the latest one. + sandboxStatus := podStatus.SandboxStatuses[0] + if readySandboxCount > 1 { + klog.V(2).InfoS("Multiple sandboxes are ready for Pod. Need to reconcile them", "pod", klog.KObj(pod)) + return true, sandboxStatus.Metadata.Attempt + 1, sandboxStatus.Id + } + if sandboxStatus.State != runtimeapi.PodSandboxState_SANDBOX_READY { + klog.V(2).InfoS("No ready sandbox for pod can be found. Need to start a new one", "pod", klog.KObj(pod)) + return true, sandboxStatus.Metadata.Attempt + 1, sandboxStatus.Id + } + + // Needs to create a new sandbox when network namespace changed. + if sandboxStatus.GetLinux().GetNamespaces().GetOptions().GetNetwork() != NetworkNamespaceForPod(pod) { + klog.V(2).InfoS("Sandbox for pod has changed. Need to start a new one", "pod", klog.KObj(pod)) + return true, sandboxStatus.Metadata.Attempt + 1, "" + } + + // Needs to create a new sandbox when the sandbox does not have an IP address. + if !kubecontainer.IsHostNetworkPod(pod) && sandboxStatus.Network != nil && sandboxStatus.Network.Ip == "" { + klog.V(2).InfoS("Sandbox for pod has no IP address. Need to start a new one", "pod", klog.KObj(pod)) + return true, sandboxStatus.Metadata.Attempt + 1, sandboxStatus.Id + } + + return false, sandboxStatus.Metadata.Attempt, sandboxStatus.Id +} + +// IpcNamespaceForPod returns the runtimeapi.NamespaceMode +// for the IPC namespace of a pod +func IpcNamespaceForPod(pod *v1.Pod) runtimeapi.NamespaceMode { + if pod != nil && pod.Spec.HostIPC { + return runtimeapi.NamespaceMode_NODE + } + return runtimeapi.NamespaceMode_POD +} + +// NetworkNamespaceForPod returns the runtimeapi.NamespaceMode +// for the network namespace of a pod +func NetworkNamespaceForPod(pod *v1.Pod) runtimeapi.NamespaceMode { + if pod != nil && pod.Spec.HostNetwork { + return runtimeapi.NamespaceMode_NODE + } + return runtimeapi.NamespaceMode_POD +} + +// PidNamespaceForPod returns the runtimeapi.NamespaceMode +// for the PID namespace of a pod +func PidNamespaceForPod(pod *v1.Pod) runtimeapi.NamespaceMode { + if pod != nil { + if pod.Spec.HostPID { + return runtimeapi.NamespaceMode_NODE + } + if pod.Spec.ShareProcessNamespace != nil && *pod.Spec.ShareProcessNamespace { + return runtimeapi.NamespaceMode_POD + } + } + // Note that PID does not default to the zero value for v1.Pod + return runtimeapi.NamespaceMode_CONTAINER +} + +// namespacesForPod returns the runtimeapi.NamespaceOption for a given pod. +// An empty or nil pod can be used to get the namespace defaults for v1.Pod. +func NamespacesForPod(pod *v1.Pod, runtimeHelper kubecontainer.RuntimeHelper) (*runtimeapi.NamespaceOption, error) { + userNs, err := runtimeHelper.GetOrCreateUserNamespaceMappings(pod) + if err != nil { + return nil, err + } + + return &runtimeapi.NamespaceOption{ + Ipc: IpcNamespaceForPod(pod), + Network: NetworkNamespaceForPod(pod), + Pid: PidNamespaceForPod(pod), + UsernsOptions: userNs, + }, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/handlers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/handlers.go index 41a0533382c..a2bb23673b4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/handlers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/handlers.go @@ -110,7 +110,7 @@ func (hr *handlerRunner) runHTTPHandler(pod *v1.Pod, container *v1.Container, ha if len(host) == 0 { status, err := hr.containerManager.GetPodStatus(pod.UID, pod.Name, pod.Namespace) if err != nil { - klog.ErrorS(err, "Unable to get pod info, event handlers may be invalid.") + klog.ErrorS(err, "Unable to get pod info, event handlers may be invalid.", "pod", klog.KObj(pod)) return "", err } if len(status.IPs) == 0 { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/predicate.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/predicate.go index 2700b2d526e..2e06c266f73 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/predicate.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/lifecycle/predicate.go @@ -185,7 +185,8 @@ func rejectPodAdmissionBasedOnOSSelector(pod *v1.Pod, node *v1.Node) bool { // rejectPodAdmissionBasedOnOSField rejects pods if their OS field doesn't match runtime.GOOS. // TODO: Relax this restriction when we start supporting LCOW in kubernetes where podOS may not match -// node's OS. +// +// node's OS. func rejectPodAdmissionBasedOnOSField(pod *v1.Pod) bool { if pod.Spec.OS == nil { return false diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go index 6d440737f3c..a5247607ea3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/logs/container_log_manager.go @@ -393,11 +393,15 @@ func (c *containerLogManager) compressLog(log string) error { if _, err := io.Copy(w, r); err != nil { return fmt.Errorf("failed to compress %q to %q: %v", log, tmpLog, err) } + // The archive needs to be closed before renaming, otherwise an error will occur on Windows. + w.Close() + f.Close() compressedLog := log + compressSuffix if err := c.osInterface.Rename(tmpLog, compressedLog); err != nil { return fmt.Errorf("failed to rename %q to %q: %v", tmpLog, compressedLog, err) } // Remove old log file. + r.Close() if err := c.osInterface.Remove(log); err != nil { return fmt.Errorf("failed to remove log %q after compress: %v", log, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/resource_metrics.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/resource_metrics.go index 74d2ea7af10..b5a3c963401 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/resource_metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/metrics/collectors/resource_metrics.go @@ -142,7 +142,7 @@ func (rc *resourceMetricsCollector) CollectWithStability(ch chan<- metrics.Metri } func (rc *resourceMetricsCollector) collectNodeCPUMetrics(ch chan<- metrics.Metric, s summary.NodeStats) { - if s.CPU == nil { + if s.CPU == nil || s.CPU.UsageCoreNanoSeconds == nil { return } @@ -151,7 +151,7 @@ func (rc *resourceMetricsCollector) collectNodeCPUMetrics(ch chan<- metrics.Metr } func (rc *resourceMetricsCollector) collectNodeMemoryMetrics(ch chan<- metrics.Metric, s summary.NodeStats) { - if s.Memory == nil { + if s.Memory == nil || s.Memory.WorkingSetBytes == nil { return } @@ -160,7 +160,7 @@ func (rc *resourceMetricsCollector) collectNodeMemoryMetrics(ch chan<- metrics.M } func (rc *resourceMetricsCollector) collectContainerStartTime(ch chan<- metrics.Metric, pod summary.PodStats, s summary.ContainerStats) { - if s.StartTime.Unix() == 0 { + if s.StartTime.Unix() <= 0 { return } @@ -169,7 +169,7 @@ func (rc *resourceMetricsCollector) collectContainerStartTime(ch chan<- metrics. } func (rc *resourceMetricsCollector) collectContainerCPUMetrics(ch chan<- metrics.Metric, pod summary.PodStats, s summary.ContainerStats) { - if s.CPU == nil { + if s.CPU == nil || s.CPU.UsageCoreNanoSeconds == nil { return } @@ -179,7 +179,7 @@ func (rc *resourceMetricsCollector) collectContainerCPUMetrics(ch chan<- metrics } func (rc *resourceMetricsCollector) collectContainerMemoryMetrics(ch chan<- metrics.Metric, pod summary.PodStats, s summary.ContainerStats) { - if s.Memory == nil { + if s.Memory == nil || s.Memory.WorkingSetBytes == nil { return } @@ -189,7 +189,7 @@ func (rc *resourceMetricsCollector) collectContainerMemoryMetrics(ch chan<- metr } func (rc *resourceMetricsCollector) collectPodCPUMetrics(ch chan<- metrics.Metric, pod summary.PodStats) { - if pod.CPU == nil { + if pod.CPU == nil || pod.CPU.UsageCoreNanoSeconds == nil { return } @@ -199,7 +199,7 @@ func (rc *resourceMetricsCollector) collectPodCPUMetrics(ch chan<- metrics.Metri } func (rc *resourceMetricsCollector) collectPodMemoryMetrics(ch chan<- metrics.Metric, pod summary.PodStats) { - if pod.Memory == nil { + if pod.Memory == nil || pod.Memory.WorkingSetBytes == nil { return } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/nodestatus/setters.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/nodestatus/setters.go index 984cad5a619..a205809846f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/nodestatus/setters.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/nodestatus/setters.go @@ -31,13 +31,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/errors" utilnet "k8s.io/apimachinery/pkg/util/net" - utilfeature "k8s.io/apiserver/pkg/util/feature" cloudprovider "k8s.io/cloud-provider" cloudproviderapi "k8s.io/cloud-provider/api" cloudprovidernodeutil "k8s.io/cloud-provider/node/helpers" "k8s.io/component-base/version" v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/cadvisor" "k8s.io/kubernetes/pkg/kubelet/cm" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" @@ -94,14 +92,28 @@ func NodeAddress(nodeIPs []net.IP, // typically Kubelet.nodeIPs klog.V(4).InfoS("Using secondary node IP", "IP", secondaryNodeIP.String()) } - if externalCloudProvider { + if externalCloudProvider || cloud != nil { + // Annotate the Node object with nodeIP for external cloud provider. + // + // We do this even when external CCM is not configured to cover a situation + // during migration from legacy to external CCM: when CCM is running the + // node controller in the cluster but kubelet is still running the in-tree + // provider. Adding this annotation in all cases ensures that while + // Addresses flap between the competing controllers, they at least flap + // consistently. + // + // We do not add the annotation in the case where there is no cloud + // controller at all, as we don't expect to migrate these clusters to use an + // external CCM. if nodeIPSpecified { if node.ObjectMeta.Annotations == nil { node.ObjectMeta.Annotations = make(map[string]string) } node.ObjectMeta.Annotations[cloudproviderapi.AnnotationAlphaProvidedIPAddr] = nodeIP.String() } + } + if externalCloudProvider { // If --cloud-provider=external and node address is already set, // then we return early because provider set addresses should take precedence. // Otherwise, we try to look up the node IP and let the cloud provider override it later @@ -230,10 +242,11 @@ func MachineInfo(nodeName string, maxPods int, podsPerCore int, machineInfoFunc func() (*cadvisorapiv1.MachineInfo, error), // typically Kubelet.GetCachedMachineInfo - capacityFunc func() v1.ResourceList, // typically Kubelet.containerManager.GetCapacity + capacityFunc func(localStorageCapacityIsolation bool) v1.ResourceList, // typically Kubelet.containerManager.GetCapacity devicePluginResourceCapacityFunc func() (v1.ResourceList, v1.ResourceList, []string), // typically Kubelet.containerManager.GetDevicePluginResourceCapacity nodeAllocatableReservationFunc func() v1.ResourceList, // typically Kubelet.containerManager.GetNodeAllocatableReservation recordEventFunc func(eventType, event, message string), // typically Kubelet.recordEvent + localStorageCapacityIsolation bool, ) Setter { return func(node *v1.Node) error { // Note: avoid blindly overwriting the capacity in case opaque @@ -281,16 +294,15 @@ func MachineInfo(nodeName string, } node.Status.NodeInfo.BootID = info.BootID - if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { - // TODO: all the node resources should use ContainerManager.GetCapacity instead of deriving the - // capacity for every node status request - initialCapacity := capacityFunc() - if initialCapacity != nil { - if v, exists := initialCapacity[v1.ResourceEphemeralStorage]; exists { - node.Status.Capacity[v1.ResourceEphemeralStorage] = v - } + // TODO: all the node resources should use ContainerManager.GetCapacity instead of deriving the + // capacity for every node status request + initialCapacity := capacityFunc(localStorageCapacityIsolation) + if initialCapacity != nil { + if v, exists := initialCapacity[v1.ResourceEphemeralStorage]; exists { + node.Status.Capacity[v1.ResourceEphemeralStorage] = v } } + //} devicePluginCapacity, devicePluginAllocatable, removedDevicePlugins = devicePluginResourceCapacityFunc() for k, v := range devicePluginCapacity { @@ -455,6 +467,7 @@ func ReadyCondition( cmStatusFunc func() cm.Status, // typically Kubelet.containerManager.Status nodeShutdownManagerErrorsFunc func() error, // typically kubelet.shutdownManager.errors. recordEventFunc func(eventType, event string), // typically Kubelet.recordNodeStatusEvent + localStorageCapacityIsolation bool, ) Setter { return func(node *v1.Node) error { // NOTE(aaronlevy): NodeReady condition needs to be the last in the list of node conditions. @@ -470,7 +483,7 @@ func ReadyCondition( } errs := []error{runtimeErrorsFunc(), networkErrorsFunc(), storageErrorsFunc(), nodeShutdownManagerErrorsFunc()} requiredCapacities := []v1.ResourceName{v1.ResourceCPU, v1.ResourceMemory, v1.ResourcePods} - if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { + if localStorageCapacityIsolation { requiredCapacities = append(requiredCapacities, v1.ResourceEphemeralStorage) } missingCapacities := []string{} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go index ef1664da8b1..c9ab5bb7689 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pleg/generic.go @@ -325,29 +325,25 @@ func (g *GenericPLEG) relist() { func getContainersFromPods(pods ...*kubecontainer.Pod) []*kubecontainer.Container { cidSet := sets.NewString() var containers []*kubecontainer.Container - for _, p := range pods { - if p == nil { - continue - } - for _, c := range p.Containers { - cid := string(c.ID.ID) + fillCidSet := func(cs []*kubecontainer.Container) { + for _, c := range cs { + cid := c.ID.ID if cidSet.Has(cid) { continue } cidSet.Insert(cid) containers = append(containers, c) } + } + + for _, p := range pods { + if p == nil { + continue + } + fillCidSet(p.Containers) // Update sandboxes as containers // TODO: keep track of sandboxes explicitly. - for _, c := range p.Sandboxes { - cid := string(c.ID.ID) - if cidSet.Has(cid) { - continue - } - cidSet.Insert(cid) - containers = append(containers, c) - } - + fillCidSet(p.Sandboxes) } return containers } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache/types.go index a0dbb3696a0..6b0a9a430f0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache/types.go @@ -20,28 +20,30 @@ package cache // order to consume plugins // The PluginHandler follows the simple following state machine: // -// +--------------------------------------+ -// | ReRegistration | -// | Socket created with same plugin name | -// | | -// | | -// Socket Created v + Socket Deleted -// +------------------> Validate +---------------------------> Register +------------------> DeRegister -// + + + -// | | | -// | Error | Error | -// | | | -// v v v -// Out Out Out +// +--------------------------------------+ +// | ReRegistration | +// | Socket created with same plugin name | +// | | +// | | +// Socket Created v + Socket Deleted +// +------------------> Validate +---------------------------> Register +------------------> DeRegister +// + + + +// | | | +// | Error | Error | +// | | | +// v v v +// Out Out Out // // The pluginwatcher module follows strictly and sequentially this state machine for each *plugin name*. // e.g: If you are Registering a plugin foo, you cannot get a DeRegister call for plugin foo -// until the Register("foo") call returns. Nor will you get a Validate("foo", "Different endpoint", ...) -// call until the Register("foo") call returns. +// +// until the Register("foo") call returns. Nor will you get a Validate("foo", "Different endpoint", ...) +// call until the Register("foo") call returns. // // ReRegistration: Socket created with same plugin name, usually for a plugin update // e.g: plugin with name foo registers at foo.com/foo-1.9.7 later a plugin with name foo -// registers at foo.com/foo-1.9.9 +// +// registers at foo.com/foo-1.9.9 // // DeRegistration: When ReRegistration happens only the deletion of the new socket will trigger a DeRegister call type PluginHandler interface { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/operationexecutor/operation_generator.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/operationexecutor/operation_generator.go index 3941d5de738..65cb549c339 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/operationexecutor/operation_generator.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/operationexecutor/operation_generator.go @@ -30,6 +30,7 @@ import ( "k8s.io/klog/v2" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "k8s.io/client-go/tools/record" registerapi "k8s.io/kubelet/pkg/apis/pluginregistration/v1" "k8s.io/kubernetes/pkg/kubelet/pluginmanager/cache" @@ -178,7 +179,9 @@ func dial(unixSocketPath string, timeout time.Duration) (registerapi.Registratio ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - c, err := grpc.DialContext(ctx, unixSocketPath, grpc.WithInsecure(), grpc.WithBlock(), + c, err := grpc.DialContext(ctx, unixSocketPath, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithBlock(), grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) { return (&net.Dialer{}).DialContext(ctx, "unix", addr) }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/plugin_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/plugin_manager.go index 79e0c8c46b7..e1491165feb 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/plugin_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/plugin_manager.go @@ -108,7 +108,11 @@ var _ PluginManager = &pluginManager{} func (pm *pluginManager) Run(sourcesReady config.SourcesReady, stopCh <-chan struct{}) { defer runtime.HandleCrash() - pm.desiredStateOfWorldPopulator.Start(stopCh) + if err := pm.desiredStateOfWorldPopulator.Start(stopCh); err != nil { + klog.ErrorS(err, "The desired_state_of_world populator (plugin watcher) starts failed!") + return + } + klog.V(2).InfoS("The desired_state_of_world populator (plugin watcher) starts") klog.InfoS("Starting Kubelet Plugin Manager") diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/example_handler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/example_handler.go index 6978826c9ce..e9a40710ea0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/example_handler.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/example_handler.go @@ -26,6 +26,7 @@ import ( "time" "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" "k8s.io/klog/v2" registerapi "k8s.io/kubelet/pkg/apis/pluginregistration/v1" @@ -155,7 +156,9 @@ func dial(unixSocketPath string, timeout time.Duration) (registerapi.Registratio ctx, cancel := context.WithTimeout(context.Background(), timeout) defer cancel() - c, err := grpc.DialContext(ctx, unixSocketPath, grpc.WithInsecure(), grpc.WithBlock(), + c, err := grpc.DialContext(ctx, unixSocketPath, + grpc.WithTransportCredentials(insecure.NewCredentials()), + grpc.WithBlock(), grpc.WithContextDialer(func(ctx context.Context, addr string) (net.Conn, error) { return (&net.Dialer{}).DialContext(ctx, "unix", addr) }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher.go index b3a1a8b67e4..9d5fce72a89 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/pluginwatcher/plugin_watcher.go @@ -131,12 +131,12 @@ func (w *Watcher) traversePluginDir(dir string) error { return nil } - switch mode := info.Mode(); { - case mode.IsDir(): + mode := info.Mode() + if mode.IsDir() { if err := w.fsWatcher.Add(path); err != nil { return fmt.Errorf("failed to watch %s, err: %v", path, err) } - case mode&os.ModeSocket != 0: + } else if isSocket, _ := util.IsUnixDomainSocket(path); isSocket { event := fsnotify.Event{ Name: path, Op: fsnotify.Create, @@ -145,7 +145,7 @@ func (w *Watcher) traversePluginDir(dir string) error { if err := w.handleCreateEvent(event); err != nil { klog.ErrorS(err, "Error when handling create", "event", event) } - default: + } else { klog.V(5).InfoS("Ignoring file", "path", path, "mode", mode) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/reconciler/reconciler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/reconciler/reconciler.go index d8f104eb809..0c14c1c4cb7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/reconciler/reconciler.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pluginmanager/reconciler/reconciler.go @@ -48,12 +48,16 @@ type Reconciler interface { // NewReconciler returns a new instance of Reconciler. // // loopSleepDuration - the amount of time the reconciler loop sleeps between -// successive executions -// syncDuration - the amount of time the syncStates sleeps between -// successive executions +// +// successive executions +// syncDuration - the amount of time the syncStates sleeps between +// successive executions +// // operationExecutor - used to trigger register/unregister operations safely -// (prevents more than one operation from being triggered on the same -// socket path) +// +// (prevents more than one operation from being triggered on the same +// socket path) +// // desiredStateOfWorld - cache containing the desired state of the world // actualStateOfWorld - cache containing the actual state of the world func NewReconciler( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go index ce342ac7209..2eeb4788af8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod/pod_manager.go @@ -22,8 +22,6 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/kubelet/configmap" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/metrics" @@ -162,10 +160,6 @@ func (pm *basicManager) UpdatePod(pod *v1.Pod) { // updateMetrics updates the metrics surfaced by the pod manager. // oldPod or newPod may be nil to signify creation or deletion. func updateMetrics(oldPod, newPod *v1.Pod) { - if !utilfeature.DefaultFeatureGate.Enabled(features.EphemeralContainers) { - return - } - var numEC int if oldPod != nil { numEC -= len(oldPod.Spec.EphemeralContainers) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go index 5632745e060..9dad22b0b3e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/pod_workers.go @@ -313,10 +313,10 @@ func (s *podSyncStatus) IsDeleted() bool { return s.deleted } // Once a pod is set to be "torn down" it cannot be started again for that // UID (corresponding to a delete or eviction) until: // -// 1. The pod worker is finalized (syncTerminatingPod and -// syncTerminatedPod exit without error sequentially) -// 2. The SyncKnownPods method is invoked by kubelet housekeeping and the pod -// is not part of the known config. +// 1. The pod worker is finalized (syncTerminatingPod and +// syncTerminatedPod exit without error sequentially) +// 2. The SyncKnownPods method is invoked by kubelet housekeeping and the pod +// is not part of the known config. // // Pod workers provide a consistent source of information to other kubelet // loops about the status of the pod and whether containers can be @@ -332,36 +332,50 @@ func (s *podSyncStatus) IsDeleted() bool { return s.deleted } // ---| = kubelet config has synced at least once // -------| |- = pod exists in apiserver config // --------| |---------------- = CouldHaveRunningContainers() is true -// ^- pod is observed by pod worker . -// . . +// +// ^- pod is observed by pod worker . +// . . +// // ----------| |------------------------- = syncPod is running -// . ^- pod worker loop sees change and invokes syncPod -// . . . +// +// . ^- pod worker loop sees change and invokes syncPod +// . . . +// // --------------| |------- = ShouldPodContainersBeTerminating() returns true // --------------| |------- = IsPodTerminationRequested() returns true (pod is known) -// . . ^- Kubelet evicts pod . -// . . . +// +// . . ^- Kubelet evicts pod . +// . . . +// // -------------------| |---------------- = syncTerminatingPod runs then exits without error -// . . ^ pod worker loop exits syncPod, sees pod is terminating, -// . . invokes syncTerminatingPod -// . . . +// +// . . ^ pod worker loop exits syncPod, sees pod is terminating, +// . . invokes syncTerminatingPod +// . . . +// // ---| |------------------| . = ShouldPodRuntimeBeRemoved() returns true (post-sync) -// . ^ syncTerminatingPod has exited successfully -// . . +// +// . ^ syncTerminatingPod has exited successfully +// . . +// // ----------------------------| |------- = syncTerminatedPod runs then exits without error -// . ^ other loops can tear down -// . . +// +// . ^ other loops can tear down +// . . +// // ------------------------------------| |---- = status manager is waiting for PodResourcesAreReclaimed() -// . ^ . +// +// . ^ . +// // ----------| |- = status manager can be writing pod status -// ^ status manager deletes pod because no longer exists in config +// +// ^ status manager deletes pod because no longer exists in config // // Other components in the Kubelet can request a termination of the pod // via the UpdatePod method or the killPodNow wrapper - this will ensure // the components of the pod are stopped until the kubelet is restarted // or permanently (if the phase of the pod is set to a terminal phase // in the pod status change). -// type podWorkers struct { // Protects all per worker fields. podLock sync.Mutex diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/prober_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/prober_manager.go index bb073688f89..94ba0022dc1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/prober_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/prober_manager.go @@ -48,6 +48,20 @@ var ProberResults = metrics.NewCounterVec( "pod_uid"}, ) +// ProberDuration stores the duration of a successful probe lifecycle by result as prometheus metrics. +var ProberDuration = metrics.NewHistogramVec( + &metrics.HistogramOpts{ + Subsystem: "prober", + Name: "probe_duration_seconds", + Help: "Duration in seconds for a probe response.", + StabilityLevel: metrics.ALPHA, + }, + []string{"probe_type", + "container", + "pod", + "namespace"}, +) + // Manager manages pod probing. It creates a probe "worker" for every container that specifies a // probe (AddPod). The worker periodically probes its assigned container and caches the results. The // manager use the cached probe results to set the appropriate Ready state in the PodStatus when diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/worker.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/worker.go index 9e472c32edd..75273deadba 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/worker.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/prober/worker.go @@ -17,7 +17,9 @@ limitations under the License. package prober import ( + "fmt" "math/rand" + "strings" "time" v1 "k8s.io/api/core/v1" @@ -25,6 +27,7 @@ import ( "k8s.io/component-base/metrics" "k8s.io/klog/v2" podutil "k8s.io/kubernetes/pkg/api/v1/pod" + "k8s.io/kubernetes/pkg/apis/apps" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/prober/results" ) @@ -74,6 +77,10 @@ type worker struct { proberResultsSuccessfulMetricLabels metrics.Labels proberResultsFailedMetricLabels metrics.Labels proberResultsUnknownMetricLabels metrics.Labels + // proberDurationMetricLabels holds the labels attached to this worker + // for the ProberDuration metric by result. + proberDurationSuccessfulMetricLabels metrics.Labels + proberDurationUnknownMetricLabels metrics.Labels } // Creates and starts a new probe worker. @@ -107,14 +114,23 @@ func newWorker( w.initialValue = results.Unknown } + podName := getPodLabelName(w.pod) + basicMetricLabels := metrics.Labels{ "probe_type": w.probeType.String(), "container": w.container.Name, - "pod": w.pod.Name, + "pod": podName, "namespace": w.pod.Namespace, "pod_uid": string(w.pod.UID), } + proberDurationLabels := metrics.Labels{ + "probe_type": w.probeType.String(), + "container": w.container.Name, + "pod": podName, + "namespace": w.pod.Namespace, + } + w.proberResultsSuccessfulMetricLabels = deepCopyPrometheusLabels(basicMetricLabels) w.proberResultsSuccessfulMetricLabels["result"] = probeResultSuccessful @@ -124,6 +140,9 @@ func newWorker( w.proberResultsUnknownMetricLabels = deepCopyPrometheusLabels(basicMetricLabels) w.proberResultsUnknownMetricLabels["result"] = probeResultUnknown + w.proberDurationSuccessfulMetricLabels = deepCopyPrometheusLabels(proberDurationLabels) + w.proberDurationUnknownMetricLabels = deepCopyPrometheusLabels(proberDurationLabels) + return w } @@ -151,6 +170,8 @@ func (w *worker) run() { ProberResults.Delete(w.proberResultsSuccessfulMetricLabels) ProberResults.Delete(w.proberResultsFailedMetricLabels) ProberResults.Delete(w.proberResultsUnknownMetricLabels) + ProberDuration.Delete(w.proberDurationSuccessfulMetricLabels) + ProberDuration.Delete(w.proberDurationUnknownMetricLabels) }() probeLoop: @@ -181,6 +202,7 @@ func (w *worker) doProbe() (keepGoing bool) { defer func() { recover() }() // Actually eat panics (HandleCrash takes care of logging) defer runtime.HandleCrash(func(_ interface{}) { keepGoing = true }) + startTime := time.Now() status, ok := w.probeManager.statusManager.GetPodStatus(w.pod.UID) if !ok { // Either the pod has not been created yet, or it was already deleted. @@ -271,10 +293,12 @@ func (w *worker) doProbe() (keepGoing bool) { switch result { case results.Success: ProberResults.With(w.proberResultsSuccessfulMetricLabels).Inc() + ProberDuration.With(w.proberDurationSuccessfulMetricLabels).Observe(time.Since(startTime).Seconds()) case results.Failure: ProberResults.With(w.proberResultsFailedMetricLabels).Inc() default: ProberResults.With(w.proberResultsUnknownMetricLabels).Inc() + ProberDuration.With(w.proberDurationUnknownMetricLabels).Observe(time.Since(startTime).Seconds()) } if w.lastResult == result { @@ -311,3 +335,15 @@ func deepCopyPrometheusLabels(m metrics.Labels) metrics.Labels { } return ret } + +func getPodLabelName(pod *v1.Pod) string { + podName := pod.Name + if pod.GenerateName != "" { + podNameSlice := strings.Split(pod.Name, "-") + podName = strings.Join(podNameSlice[:len(podNameSlice)-1], "-") + if label, ok := pod.GetLabels()[apps.DefaultDeploymentUniqueLabelKey]; ok { + podName = strings.ReplaceAll(podName, fmt.Sprintf("-%s", label), "") + } + } + return podName +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/reason_cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/reason_cache.go index 60327baf954..b487a1d9434 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/reason_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/reason_cache.go @@ -29,10 +29,11 @@ import ( // in a string, keyed by _. The goal is to // propagate this reason to the container status. This endeavor is // "best-effort" for two reasons: -// 1. The cache is not persisted. -// 2. We use an LRU cache to avoid extra garbage collection work. This -// means that some entries may be recycled before a pod has been -// deleted. +// 1. The cache is not persisted. +// 2. We use an LRU cache to avoid extra garbage collection work. This +// means that some entries may be recycled before a pod has been +// deleted. +// // TODO(random-liu): Use more reliable cache which could collect garbage of failed pod. // TODO(random-liu): Move reason cache to somewhere better. type ReasonCache struct { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go index 292c833555b..bba17fa8fd9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/secret/secret_manager.go @@ -115,11 +115,11 @@ const ( // NewCachingSecretManager creates a manager that keeps a cache of all secrets // necessary for registered pods. // It implements the following logic: -// - whenever a pod is created or updated, the cached versions of all secrets -// are invalidated -// - every GetObject() call tries to fetch the value from local cache; if it is -// not there, invalidated or too old, we fetch it from apiserver and refresh the -// value in cache; otherwise it is just fetched from cache +// - whenever a pod is created or updated, the cached versions of all secrets +// are invalidated +// - every GetObject() call tries to fetch the value from local cache; if it is +// not there, invalidated or too old, we fetch it from apiserver and refresh the +// value in cache; otherwise it is just fetched from cache func NewCachingSecretManager(kubeClient clientset.Interface, getTTL manager.GetObjectTTLFunc) Manager { getSecret := func(namespace, name string, opts metav1.GetOptions) (runtime.Object, error) { return kubeClient.CoreV1().Secrets(namespace).Get(context.TODO(), name, opts) @@ -133,9 +133,9 @@ func NewCachingSecretManager(kubeClient clientset.Interface, getTTL manager.GetO // NewWatchingSecretManager creates a manager that keeps a cache of all secrets // necessary for registered pods. // It implements the following logic: -// - whenever a pod is created or updated, we start individual watches for all -// referenced objects that aren't referenced from other registered pods -// - every GetObject() returns a value from local cache propagated via watches +// - whenever a pod is created or updated, we start individual watches for all +// referenced objects that aren't referenced from other registered pods +// - every GetObject() returns a value from local cache propagated via watches func NewWatchingSecretManager(kubeClient clientset.Interface, resyncInterval time.Duration) Manager { listSecret := func(namespace string, opts metav1.ListOptions) (runtime.Object, error) { return kubeClient.CoreV1().Secrets(namespace).List(context.TODO(), opts) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/auth.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/auth.go index 469039b9d2b..962e1ce9507 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/auth.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/auth.go @@ -59,9 +59,10 @@ func isSubpath(subpath, path string) bool { // GetRequestAttributes populates authorizer attributes for the requests to the kubelet API. // Default attributes are: {apiVersion=v1,verb=,resource=nodes,name=,subresource=proxy} // More specific verb/resource is set for the following request patterns: -// /stats/* => verb=, resource=nodes, name=, subresource=stats -// /metrics/* => verb=, resource=nodes, name=, subresource=metrics -// /logs/* => verb=, resource=nodes, name=, subresource=log +// +// /stats/* => verb=, resource=nodes, name=, subresource=stats +// /metrics/* => verb=, resource=nodes, name=, subresource=metrics +// /logs/* => verb=, resource=nodes, name=, subresource=log func (n nodeAuthorizerAttributesGetter) GetRequestAttributes(u user.Info, r *http.Request) authorizer.Attributes { apiVerb := "" diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go index 42a74475475..84dbd545842 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/server.go @@ -37,6 +37,8 @@ import ( cadvisorapi "github.com/google/cadvisor/info/v1" cadvisorv2 "github.com/google/cadvisor/info/v2" "github.com/google/cadvisor/metrics" + "go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful" + oteltrace "go.opentelemetry.io/otel/trace" "google.golang.org/grpc" "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/kubelet/metrics/collectors" @@ -62,6 +64,7 @@ import ( "k8s.io/component-base/logs" compbasemetrics "k8s.io/component-base/metrics" "k8s.io/component-base/metrics/legacyregistry" + runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" podresourcesapi "k8s.io/kubelet/pkg/apis/podresources/v1" podresourcesapiv1alpha1 "k8s.io/kubelet/pkg/apis/podresources/v1alpha1" "k8s.io/kubernetes/pkg/api/legacyscheme" @@ -126,6 +129,7 @@ type containerInterface interface { // so we can ensure restful.FilterFunctions are used for all handlers type filteringContainer struct { *restful.Container + registeredHandlePaths []string } @@ -143,12 +147,13 @@ func ListenAndServeKubeletServer( resourceAnalyzer stats.ResourceAnalyzer, kubeCfg *kubeletconfiginternal.KubeletConfiguration, tlsOptions *TLSOptions, - auth AuthInterface) { + auth AuthInterface, + tp oteltrace.TracerProvider) { address := netutils.ParseIPSloppy(kubeCfg.Address) port := uint(kubeCfg.Port) klog.InfoS("Starting to listen", "address", address, "port", port) - handler := NewServer(host, resourceAnalyzer, auth, kubeCfg) + handler := NewServer(host, resourceAnalyzer, auth, tp, kubeCfg) s := &http.Server{ Addr: net.JoinHostPort(address.String(), strconv.FormatUint(uint64(port), 10)), Handler: &handler, @@ -157,6 +162,7 @@ func ListenAndServeKubeletServer( WriteTimeout: 4 * 60 * time.Minute, MaxHeaderBytes: 1 << 20, } + if tlsOptions != nil { s.TLSConfig = tlsOptions.Config // Passing empty strings as the cert and key files means no @@ -173,9 +179,14 @@ func ListenAndServeKubeletServer( } // ListenAndServeKubeletReadOnlyServer initializes a server to respond to HTTP network requests on the Kubelet. -func ListenAndServeKubeletReadOnlyServer(host HostInterface, resourceAnalyzer stats.ResourceAnalyzer, address net.IP, port uint) { +func ListenAndServeKubeletReadOnlyServer( + host HostInterface, + resourceAnalyzer stats.ResourceAnalyzer, + address net.IP, + port uint) { klog.InfoS("Starting to listen read-only", "address", address, "port", port) - s := NewServer(host, resourceAnalyzer, nil, nil) + // TODO: https://github.com/kubernetes/kubernetes/issues/109829 tracer should use WithPublicEndpoint + s := NewServer(host, resourceAnalyzer, nil, oteltrace.NewNoopTracerProvider(), nil) server := &http.Server{ Addr: net.JoinHostPort(address.String(), strconv.FormatUint(uint64(port), 10)), @@ -224,6 +235,7 @@ type HostInterface interface { GetCachedMachineInfo() (*cadvisorapi.MachineInfo, error) GetRunningPods() ([]*v1.Pod, error) RunInContainer(name string, uid types.UID, container string, cmd []string) ([]byte, error) + CheckpointContainer(podUID types.UID, podFullName, containerName string, options *runtimeapi.CheckpointContainerRequest) error GetKubeletContainerLogs(ctx context.Context, podFullName, containerName string, logOptions *v1.PodLogOptions, stdout, stderr io.Writer) error ServeLogs(w http.ResponseWriter, req *http.Request) ResyncInterval() time.Duration @@ -239,7 +251,9 @@ func NewServer( host HostInterface, resourceAnalyzer stats.ResourceAnalyzer, auth AuthInterface, + tp oteltrace.TracerProvider, kubeCfg *kubeletconfiginternal.KubeletConfiguration) Server { + server := Server{ host: host, resourceAnalyzer: resourceAnalyzer, @@ -251,6 +265,9 @@ func NewServer( if auth != nil { server.InstallAuthFilter() } + if utilfeature.DefaultFeatureGate.Enabled(features.KubeletTracing) { + server.InstallTracingFilter(tp) + } server.InstallDefaultHandlers() if kubeCfg != nil && kubeCfg.EnableDebuggingHandlers { server.InstallDebuggingHandlers() @@ -303,6 +320,11 @@ func (s *Server) InstallAuthFilter() { }) } +// InstallTracingFilter installs OpenTelemetry tracing filter with the restful Container. +func (s *Server) InstallTracingFilter(tp oteltrace.TracerProvider) { + s.restfulCont.Filter(otelrestful.OTelFilter("kubelet", otelrestful.WithTracerProvider(tp))) +} + // addMetricsBucketMatcher adds a regexp matcher and the relevant bucket to use when // it matches. Please be aware this is not thread safe and should not be used dynamically func (s *Server) addMetricsBucketMatcher(bucket string) { @@ -370,12 +392,6 @@ func (s *Server) InstallDefaultHandlers() { cadvisormetrics.OOMMetrics: struct{}{}, } - // Only add the Accelerator metrics if the feature is inactive - // Note: Accelerator metrics will be removed in the future, hence the feature gate. - if !utilfeature.DefaultFeatureGate.Enabled(features.DisableAcceleratorUsageMetrics) { - includedMetrics[cadvisormetrics.AcceleratorUsageMetrics] = struct{}{} - } - cadvisorOpts := cadvisorv2.RequestOptions{ IdType: cadvisorv2.TypeName, Count: 1, @@ -400,9 +416,21 @@ func (s *Server) InstallDefaultHandlers() { p := compbasemetrics.NewKubeRegistry() _ = compbasemetrics.RegisterProcessStartTime(p.Register) p.MustRegister(prober.ProberResults) + p.MustRegister(prober.ProberDuration) s.restfulCont.Handle(proberMetricsPath, compbasemetrics.HandlerFor(p, compbasemetrics.HandlerOpts{ErrorHandling: compbasemetrics.ContinueOnError}), ) + + // Only enable checkpoint API if the feature is enabled + if utilfeature.DefaultFeatureGate.Enabled(features.ContainerCheckpoint) { + s.addMetricsBucketMatcher("checkpoint") + ws = &restful.WebService{} + ws.Path("/checkpoint").Produces(restful.MIME_JSON) + ws.Route(ws.POST("/{podNamespace}/{podID}/{containerName}"). + To(s.checkpoint). + Operation("checkpoint")) + s.restfulCont.Add(ws) + } } // InstallDebuggingHandlers registers the HTTP request patterns that serve logs or run commands/containers @@ -878,6 +906,83 @@ func (s *Server) getPortForward(request *restful.Request, response *restful.Resp proxyStream(response.ResponseWriter, request.Request, url) } +// checkpoint handles the checkpoint API request. It checks if the requested +// podNamespace, pod and container actually exist and only then calls out +// to the runtime to actually checkpoint the container. +func (s *Server) checkpoint(request *restful.Request, response *restful.Response) { + pod, ok := s.host.GetPodByName(request.PathParameter("podNamespace"), request.PathParameter("podID")) + if !ok { + response.WriteError(http.StatusNotFound, fmt.Errorf("pod does not exist")) + return + } + + containerName := request.PathParameter("containerName") + + found := false + for _, container := range pod.Spec.Containers { + if container.Name == containerName { + found = true + } + } + if !found { + for _, container := range pod.Spec.InitContainers { + if container.Name == containerName { + found = true + } + } + } + if !found { + for _, container := range pod.Spec.EphemeralContainers { + if container.Name == containerName { + found = true + } + } + } + if !found { + response.WriteError( + http.StatusNotFound, + fmt.Errorf("container %v does not exist", containerName), + ) + return + } + + options := &runtimeapi.CheckpointContainerRequest{} + // Query parameter to select an optional timeout. Without the timeout parameter + // the checkpoint command will use the default CRI timeout. + timeouts := request.Request.URL.Query()["timeout"] + if len(timeouts) > 0 { + // If the user specified one or multiple values for timeouts we + // are using the last available value. + timeout, err := strconv.ParseInt(timeouts[len(timeouts)-1], 10, 64) + if err != nil { + response.WriteError( + http.StatusNotFound, + fmt.Errorf("cannot parse value of timeout parameter"), + ) + return + } + options.Timeout = timeout + } + + if err := s.host.CheckpointContainer(pod.UID, kubecontainer.GetPodFullName(pod), containerName, options); err != nil { + response.WriteError( + http.StatusInternalServerError, + fmt.Errorf( + "checkpointing of %v/%v/%v failed (%v)", + request.PathParameter("podNamespace"), + request.PathParameter("podID"), + containerName, + err, + ), + ) + return + } + writeJSONResponse( + response, + []byte(fmt.Sprintf("{\"items\":[\"%s\"]}", options.Location)), + ) +} + // getURLRootPath trims a URL path. // For paths in the format of "/metrics/xxx", "metrics/xxx" is returned; // For all other paths, the first part of the path is returned. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/volume_stat_calculator.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/volume_stat_calculator.go index f2580e0e679..671c72ca4b5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/volume_stat_calculator.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/server/stats/volume_stat_calculator.go @@ -32,6 +32,7 @@ import ( "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" + utiltrace "k8s.io/utils/trace" ) // volumeStatCalculator calculates volume metrics for a given pod periodically in the background and caches the result @@ -133,7 +134,11 @@ func (s *volumeStatCalculator) calcAndStoreStats() { var ephemeralStats []stats.VolumeStats var persistentStats []stats.VolumeStats for name, v := range metricVolumes { - metric, err := v.GetMetrics() + metric, err := func() (*volume.Metrics, error) { + trace := utiltrace.New(fmt.Sprintf("Calculate volume metrics of %v for pod %v/%v", name, s.pod.Namespace, s.pod.Name)) + defer trace.LogIfLong(1 * time.Second) + return v.GetMetrics() + }() if err != nil { // Expected for Volumes that don't support Metrics if !volume.IsNotSupported(err) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cadvisor_stats_provider.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cadvisor_stats_provider.go index 738f240c2d3..f58cd43e3d9 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cadvisor_stats_provider.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cadvisor_stats_provider.go @@ -351,7 +351,11 @@ func filterTerminatedContainerInfoAndAssembleByPodCgroupKey(containerInfo map[st result := make(map[string]cadvisorapiv2.ContainerInfo) for _, refs := range cinfoMap { if len(refs) == 1 { - result[refs[0].cgroup] = refs[0].cinfo + // ContainerInfo with no CPU/memory/network usage for uncleaned cgroups of + // already terminated containers, which should not be shown in the results. + if !isContainerTerminated(&refs[0].cinfo) { + result[refs[0].cgroup] = refs[0].cinfo + } continue } sort.Sort(ByCreationTime(refs)) @@ -411,6 +415,35 @@ func hasMemoryAndCPUInstUsage(info *cadvisorapiv2.ContainerInfo) bool { return cstat.CpuInst.Usage.Total != 0 && cstat.Memory.RSS != 0 } +// isContainerTerminated returns true if the specified container meet one of the following conditions +// 1. info.spec both cpu memory and network are false conditions +// 2. info.Stats both network and cpu or memory are nil +// 3. both zero CPU instantaneous usage zero memory RSS usage and zero network usage, +// and false otherwise. +func isContainerTerminated(info *cadvisorapiv2.ContainerInfo) bool { + if !info.Spec.HasCpu && !info.Spec.HasMemory && !info.Spec.HasNetwork { + return true + } + cstat, found := latestContainerStats(info) + if !found { + return true + } + if cstat.Network != nil { + iStats := cadvisorInfoToNetworkStats(info) + if iStats != nil { + for _, iStat := range iStats.Interfaces { + if *iStat.RxErrors != 0 || *iStat.TxErrors != 0 || *iStat.RxBytes != 0 || *iStat.TxBytes != 0 { + return false + } + } + } + } + if cstat.CpuInst == nil || cstat.Memory == nil { + return true + } + return cstat.CpuInst.Usage.Total == 0 && cstat.Memory.RSS == 0 +} + func getCadvisorContainerInfo(ca cadvisor.Interface) (map[string]cadvisorapiv2.ContainerInfo, error) { infos, err := ca.ContainerInfoV2("/", cadvisorapiv2.RequestOptions{ IdType: cadvisorapiv2.TypeName, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cri_stats_provider.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cri_stats_provider.go index 650a48a8e60..fa9c64e468f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cri_stats_provider.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/cri_stats_provider.go @@ -74,10 +74,9 @@ type criStatsProvider struct { clock clock.Clock // cpuUsageCache caches the cpu usage for containers. - cpuUsageCache map[string]*cpuUsageRecord - mutex sync.RWMutex - disableAcceleratorUsageMetrics bool - podAndContainerStatsFromCRI bool + cpuUsageCache map[string]*cpuUsageRecord + mutex sync.RWMutex + podAndContainerStatsFromCRI bool } // newCRIStatsProvider returns a containerStatsProvider implementation that @@ -88,19 +87,17 @@ func newCRIStatsProvider( runtimeService internalapi.RuntimeService, imageService internalapi.ImageManagerService, hostStatsProvider HostStatsProvider, - disableAcceleratorUsageMetrics, podAndContainerStatsFromCRI bool, ) containerStatsProvider { return &criStatsProvider{ - cadvisor: cadvisor, - resourceAnalyzer: resourceAnalyzer, - runtimeService: runtimeService, - imageService: imageService, - hostStatsProvider: hostStatsProvider, - cpuUsageCache: make(map[string]*cpuUsageRecord), - disableAcceleratorUsageMetrics: disableAcceleratorUsageMetrics, - podAndContainerStatsFromCRI: podAndContainerStatsFromCRI, - clock: clock.RealClock{}, + cadvisor: cadvisor, + resourceAnalyzer: resourceAnalyzer, + runtimeService: runtimeService, + imageService: imageService, + hostStatsProvider: hostStatsProvider, + cpuUsageCache: make(map[string]*cpuUsageRecord), + podAndContainerStatsFromCRI: podAndContainerStatsFromCRI, + clock: clock.RealClock{}, } } @@ -884,11 +881,6 @@ func (p *criStatsProvider) addCadvisorContainerStats( if memory != nil { cs.Memory = memory } - - if !p.disableAcceleratorUsageMetrics { - accelerators := cadvisorInfoToAcceleratorStats(caPodStats) - cs.Accelerators = accelerators - } } func (p *criStatsProvider) addCadvisorContainerCPUAndMemoryStats( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/helper.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/helper.go index da32fb11eed..fdab200a005 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/helper.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/helper.go @@ -156,27 +156,6 @@ func cadvisorInfoToContainerCPUAndMemoryStats(name string, info *cadvisorapiv2.C return result } -// cadvisorInfoToAcceleratorStats returns the statsapi.AcceleratorStats converted from -// the container info from cadvisor. -func cadvisorInfoToAcceleratorStats(info *cadvisorapiv2.ContainerInfo) []statsapi.AcceleratorStats { - cstat, found := latestContainerStats(info) - if !found || cstat.Accelerators == nil { - return nil - } - var result []statsapi.AcceleratorStats - for _, acc := range cstat.Accelerators { - result = append(result, statsapi.AcceleratorStats{ - Make: acc.Make, - Model: acc.Model, - ID: acc.ID, - MemoryTotal: acc.MemoryTotal, - MemoryUsed: acc.MemoryUsed, - DutyCycle: acc.DutyCycle, - }) - } - return result -} - func cadvisorInfoToProcessStats(info *cadvisorapiv2.ContainerInfo) *statsapi.ProcessStats { cstat, found := latestContainerStats(info) if !found || cstat.Processes == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/provider.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/provider.go index 7c06a550949..3e8a1d38de5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/provider.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/stats/provider.go @@ -42,10 +42,10 @@ func NewCRIStatsProvider( runtimeService internalapi.RuntimeService, imageService internalapi.ImageManagerService, hostStatsProvider HostStatsProvider, - disableAcceleratorUsageMetrics, podAndContainerStatsFromCRI bool, + podAndContainerStatsFromCRI bool, ) *Provider { return newStatsProvider(cadvisor, podManager, runtimeCache, newCRIStatsProvider(cadvisor, resourceAnalyzer, - runtimeService, imageService, hostStatsProvider, disableAcceleratorUsageMetrics, podAndContainerStatsFromCRI)) + runtimeService, imageService, hostStatsProvider, podAndContainerStatsFromCRI)) } // NewCadvisorStatsProvider returns a containerStatsProvider that provides both diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/generate.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/generate.go index 024f1cf4bc2..9f0a40f03cd 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/generate.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/generate.go @@ -22,6 +22,9 @@ import ( v1 "k8s.io/api/core/v1" podutil "k8s.io/kubernetes/pkg/api/v1/pod" + kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" + runtimeutil "k8s.io/kubernetes/pkg/kubelet/kuberuntime/util" + kubetypes "k8s.io/kubernetes/pkg/kubelet/types" ) const ( @@ -195,6 +198,24 @@ func GeneratePodInitializedCondition(spec *v1.PodSpec, containerStatuses []v1.Co } } +func GeneratePodHasNetworkCondition(pod *v1.Pod, podStatus *kubecontainer.PodStatus) v1.PodCondition { + newSandboxNeeded, _, _ := runtimeutil.PodSandboxChanged(pod, podStatus) + // if a new sandbox does not need to be created for a pod, it indicates that + // a sandbox for the pod with networking configured already exists. + // Otherwise, the kubelet needs to invoke the container runtime to create a + // fresh sandbox and configure networking for the sandbox. + if !newSandboxNeeded { + return v1.PodCondition{ + Type: kubetypes.PodHasNetwork, + Status: v1.ConditionTrue, + } + } + return v1.PodCondition{ + Type: kubetypes.PodHasNetwork, + Status: v1.ConditionFalse, + } +} + func generateContainersReadyConditionForTerminalPhase(podPhase v1.PodPhase) v1.PodCondition { condition := v1.PodCondition{ Type: v1.ContainersReady, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/status_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/status_manager.go index 47036de00df..c767e7dc41b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/status_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/status/status_manager.go @@ -483,6 +483,9 @@ func (m *manager) updateStatusInternal(pod *v1.Pod, status v1.PodStatus, forceUp // Set InitializedCondition.LastTransitionTime. updateLastTransitionTime(&status, &oldStatus, v1.PodInitialized) + // Set PodHasNetwork.LastTransitionTime. + updateLastTransitionTime(&status, &oldStatus, kubetypes.PodHasNetwork) + // Set PodScheduledCondition.LastTransitionTime. updateLastTransitionTime(&status, &oldStatus, v1.PodScheduled) @@ -681,7 +684,7 @@ func (m *manager) syncPod(uid types.UID, status versionedPodStatus) { mergedStatus := mergePodStatus(pod.Status, status.status, m.podDeletionSafety.PodCouldHaveRunningContainers(pod)) - newPod, patchBytes, unchanged, err := statusutil.PatchPodStatus(m.kubeClient, pod.Namespace, pod.Name, pod.UID, pod.Status, mergedStatus) + newPod, patchBytes, unchanged, err := statusutil.PatchPodStatus(context.TODO(), m.kubeClient, pod.Namespace, pod.Name, pod.UID, pod.Status, mergedStatus) klog.V(3).InfoS("Patch status for pod", "pod", klog.KObj(pod), "patch", string(patchBytes)) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/allowlist.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/allowlist.go index 022da01dcee..beb1de3ba4e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/allowlist.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/allowlist.go @@ -48,7 +48,7 @@ func NewAllowlist(patterns []string) (*patternAllowlist, error) { } for _, s := range patterns { - if !policyvalidation.IsValidSysctlPattern(s, true) { + if !policyvalidation.IsValidSysctlPattern(s) { return nil, fmt.Errorf("sysctl %q must have at most %d characters and match regex %s", s, validation.SysctlMaxLength, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/util.go index 09f4e75107a..0013fb7f688 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/sysctl/util.go @@ -26,8 +26,9 @@ import ( // The '/' separator is also accepted in place of a '.'. // Convert the sysctl variables to dots separator format for validation. // More info: -// https://man7.org/linux/man-pages/man8/sysctl.8.html -// https://man7.org/linux/man-pages/man5/sysctl.d.5.html +// +// https://man7.org/linux/man-pages/man8/sysctl.8.html +// https://man7.org/linux/man-pages/man5/sysctl.d.5.html func convertSysctlVariableToDotsSeparator(val string) string { if val == "" { return val diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go index 9891348362e..14c64525364 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/constants.go @@ -43,3 +43,13 @@ const ( LimitedSwap = "LimitedSwap" UnlimitedSwap = "UnlimitedSwap" ) + +// Alpha conditions managed by Kubelet that are not yet part of the API. The +// entries here should be moved to staging/src/k8s.io.api/core/v1/types.go +// once the feature managing the condition graduates to Beta. +const ( + // PodHasNetwork indicates networking has been configured successfully for the + // pod and IP address(es) assigned. Images for containers specified in the pod + // spec can be pulled and containers launched after this condition is true. + PodHasNetwork = "PodHasNetwork" +) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go index 360f7c5688b..eb255eb8ef6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/types/pod_status.go @@ -18,6 +18,8 @@ package types import ( v1 "k8s.io/api/core/v1" + utilfeature "k8s.io/apiserver/pkg/util/feature" + "k8s.io/kubernetes/pkg/features" ) // PodConditionsByKubelet is the list of pod conditions owned by kubelet @@ -35,5 +37,10 @@ func PodConditionByKubelet(conditionType v1.PodConditionType) bool { return true } } + if utilfeature.DefaultFeatureGate.Enabled(features.PodHasNetworkCondition) { + if conditionType == PodHasNetwork { + return true + } + } return false } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/userns_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/userns_manager.go new file mode 100644 index 00000000000..07fb6551224 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/userns_manager.go @@ -0,0 +1,595 @@ +/* +Copyright 2022 The Kubernetes 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 kubelet + +import ( + "encoding/json" + "fmt" + "math" + "os" + "path/filepath" + "sync" + + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/sets" + utilfeature "k8s.io/apiserver/pkg/util/feature" + runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" + "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/features" + kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" + utilstore "k8s.io/kubernetes/pkg/kubelet/util/store" + utilfs "k8s.io/kubernetes/pkg/util/filesystem" +) + +// bitsDataElement is the number of bits in a bitArray.data element. +const bitsDataElement = 32 + +type bitArray struct { + data []uint32 + firstIndex int +} + +func makeBitArray(size uint32) *bitArray { + m := bitArray{ + data: make([]uint32, (size+bitsDataElement-1)/bitsDataElement), + firstIndex: 0, + } + return &m +} + +func (b *bitArray) set(index uint32) { + b.data[index/bitsDataElement] |= (uint32(1) << (index % bitsDataElement)) +} + +func (b *bitArray) isSet(index uint32) bool { + return (b.data[index/bitsDataElement]>>(index%bitsDataElement))&0x1 == 1 +} + +func (b *bitArray) findAvailable() (uint32, bool) { + for i := b.firstIndex; i < len(b.data); i++ { + // Check if all bits are used (all 1s). + if b.data[i] == math.MaxUint32 { + continue + } + for j := uint32(0); j < bitsDataElement; j++ { + if (b.data[i]>>j)&0x1 == 0 { + v := uint32(i)*bitsDataElement + j + b.set(v) + // Update firstIndex to the current + // data element since there are no other + // unset bits before the current index. + b.firstIndex = int(i) + return v, true + } + } + } + return 0, false +} + +func (b *bitArray) clear(index uint32) { + i := index / bitsDataElement + // update firstIndex if the index found is less than + // the current one. + if i < uint32(b.firstIndex) { + b.firstIndex = int(i) + } + // clear the bit by ANDing the data element with the + // complement of the bitmask to be cleared. + b.data[i] &= ^(1 << (index % bitsDataElement)) +} + +// length for the user namespace to create (65536). +const userNsLength = (1 << 16) + +// Limit the total number of pods using userns in this node to this value. +// This is an alpha limitation that will probably be lifted later. +const maxPods = 1024 + +// Create a new map when we removed enough pods to avoid memory leaks +// since Go maps never free memory. +const mapReInitializeThreshold = 1000 + +type userNsPodsManager interface { + getPodDir(podUID types.UID) string + listPodsFromDisk() ([]types.UID, error) +} + +type usernsManager struct { + used *bitArray + usedBy map[types.UID]uint32 // Map pod.UID to range used + removed int + numAllocated int + kl userNsPodsManager + // This protects all members except for kl.anager + lock sync.Mutex +} + +// UserNamespace holds the configuration for the user namespace. +type userNamespace struct { + // UIDs mappings for the user namespace. + UIDMappings []idMapping `json:"uidMappings"` + // GIDs mappings for the user namespace. + GIDMappings []idMapping `json:"gidMappings"` +} + +// Pod user namespace mapping +type idMapping struct { + // Required. + HostId uint32 `json:"hostId"` + // Required. + ContainerId uint32 `json:"containerId"` + // Required. + Length uint32 `json:"length"` +} + +// mappingsFile is the file where the user namespace mappings are persisted. +const mappingsFile = "userns" + +// writeMappingsToFile writes the specified user namespace configuration to the pod +// directory. +func (m *usernsManager) writeMappingsToFile(pod types.UID, userNs userNamespace) error { + dir := m.kl.getPodDir(pod) + + data, err := json.Marshal(userNs) + if err != nil { + return err + } + + fstore, err := utilstore.NewFileStore(dir, &utilfs.DefaultFs{}) + if err != nil { + return err + } + if err := fstore.Write(mappingsFile, data); err != nil { + return err + } + + // We need to fsync the parent dir so the file is guaranteed to be there. + // fstore guarantees an atomic write, we need durability too. + parentDir, err := os.Open(dir) + if err != nil { + return err + } + + if err = parentDir.Sync(); err != nil { + // Ignore return here, there is already an error reported. + parentDir.Close() + return err + } + + return parentDir.Close() +} + +// readMappingsFromFile reads the user namespace configuration from the pod directory. +func (m *usernsManager) readMappingsFromFile(pod types.UID) ([]byte, error) { + dir := m.kl.getPodDir(pod) + fstore, err := utilstore.NewFileStore(dir, &utilfs.DefaultFs{}) + if err != nil { + return nil, err + } + return fstore.Read(mappingsFile) +} + +func MakeUserNsManager(kl userNsPodsManager) (*usernsManager, error) { + m := usernsManager{ + // Create a bitArray for all the UID space (2^32). + // As a by product of that, no index param to bitArray can be out of bounds (index is uint32). + used: makeBitArray((math.MaxUint32 + 1) / userNsLength), + usedBy: make(map[types.UID]uint32), + kl: kl, + } + // First block is reserved for the host. + m.used.set(0) + + // Second block will be used for phase II. Don't assign that range for now. + m.used.set(1) + + // do not bother reading the list of pods if user namespaces are not enabled. + if !utilfeature.DefaultFeatureGate.Enabled(features.UserNamespacesStatelessPodsSupport) { + return &m, nil + } + + found, err := kl.listPodsFromDisk() + if err != nil { + if os.IsNotExist(err) { + return &m, nil + } + return nil, fmt.Errorf("user namespace manager can't read pods from disk: %w", err) + + } + for _, podUID := range found { + klog.V(5).InfoS("reading pod from disk for user namespace", "podUID", podUID) + if err := m.recordPodMappings(podUID); err != nil { + return nil, err + } + } + + return &m, nil +} + +// recordPodMappings registers the range used for the user namespace if the +// usernsConfFile exists in the pod directory. +func (m *usernsManager) recordPodMappings(pod types.UID) error { + content, err := m.readMappingsFromFile(pod) + if err != nil && err != utilstore.ErrKeyNotFound { + return err + } + + // If no content, it means the pod doesn't have userns. Nothing else to do + if len(content) == 0 { + return nil + } + + _, err = m.parseUserNsFileAndRecord(pod, content) + return err +} + +// isSet checks if the specified index is already set. +func (m *usernsManager) isSet(v uint32) bool { + index := v / userNsLength + return m.used.isSet(index) +} + +// allocateOne finds a free user namespace and allocate it to the specified pod. +// The first return value is the first ID in the user namespace, the second returns +// the length for the user namespace range. +func (m *usernsManager) allocateOne(pod types.UID) (firstID uint32, length uint32, err error) { + if m.numAllocated >= maxPods { + return 0, 0, fmt.Errorf("limit on count of pods with user namespaces exceeded (limit is %v, current pods with userns: %v)", maxPods, m.numAllocated) + } + m.numAllocated++ + defer func() { + if err != nil { + m.numAllocated-- + } + }() + + firstZero, found := m.used.findAvailable() + if !found { + return 0, 0, fmt.Errorf("could not find an empty slot to allocate a user namespace") + } + + klog.V(5).InfoS("new pod user namespace allocation", "podUID", pod) + + firstID = firstZero * userNsLength + m.usedBy[pod] = firstID + return firstID, userNsLength, nil +} + +// record stores the user namespace [from; from+length] to the specified pod. +func (m *usernsManager) record(pod types.UID, from, length uint32) (err error) { + if length != userNsLength { + return fmt.Errorf("wrong user namespace length %v", length) + } + if from%userNsLength != 0 { + return fmt.Errorf("wrong user namespace offset specified %v", from) + } + prevFrom, found := m.usedBy[pod] + if found && prevFrom != from { + return fmt.Errorf("different user namespace range already used by pod %q", pod) + } + index := from / userNsLength + // if the pod wasn't found then verify the range is free. + if !found && m.used.isSet(index) { + return fmt.Errorf("range picked for pod %q already taken", pod) + } + // The pod is already registered, nothing to do. + if found && prevFrom == from { + return nil + } + if m.numAllocated >= maxPods { + return fmt.Errorf("limit on count of pods with user namespaces exceeded (limit is %v, current pods with userns: %v)", maxPods, m.numAllocated) + } + m.numAllocated++ + defer func() { + if err != nil { + m.numAllocated-- + } + }() + + klog.V(5).InfoS("new pod user namespace allocation", "podUID", pod) + + // "from" is a ID (UID/GID), set the corresponding userns of size + // userNsLength in the bit-array. + m.used.set(index) + m.usedBy[pod] = from + return nil +} + +// Release releases the user namespace allocated to the specified pod. +func (m *usernsManager) Release(podUID types.UID) { + if !utilfeature.DefaultFeatureGate.Enabled(features.UserNamespacesStatelessPodsSupport) { + return + } + + m.lock.Lock() + defer m.lock.Unlock() + + m.releaseWithLock(podUID) +} + +func (m *usernsManager) releaseWithLock(pod types.UID) { + v, ok := m.usedBy[pod] + if !ok { + klog.V(5).InfoS("pod user namespace allocation not present", "podUID", pod) + return + } + delete(m.usedBy, pod) + + klog.V(5).InfoS("releasing pod user namespace allocation", "podUID", pod) + m.numAllocated-- + m.removed++ + + _ = os.Remove(filepath.Join(m.kl.getPodDir(pod), mappingsFile)) + + if m.removed%mapReInitializeThreshold == 0 { + n := make(map[types.UID]uint32) + for k, v := range m.usedBy { + n[k] = v + } + m.usedBy = n + m.removed = 0 + } + m.used.clear(v / userNsLength) +} + +func (m *usernsManager) parseUserNsFileAndRecord(pod types.UID, content []byte) (userNs userNamespace, err error) { + if err = json.Unmarshal([]byte(content), &userNs); err != nil { + err = fmt.Errorf("can't parse file: %w", err) + return + } + + if len(userNs.UIDMappings) != 1 { + err = fmt.Errorf("invalid user namespace configuration: no more than one mapping allowed.") + return + } + + if len(userNs.UIDMappings) != len(userNs.GIDMappings) { + err = fmt.Errorf("invalid user namespace configuration: GID and UID mappings should be identical.") + return + } + + if userNs.UIDMappings[0] != userNs.GIDMappings[0] { + err = fmt.Errorf("invalid user namespace configuration: GID and UID mapping should be identical") + return + } + + // We don't produce configs without root mapped and some runtimes assume it is mapped. + // Validate the file has something we produced and can digest. + if userNs.UIDMappings[0].ContainerId != 0 { + err = fmt.Errorf("invalid user namespace configuration: UID 0 must be mapped") + return + } + + if userNs.GIDMappings[0].ContainerId != 0 { + err = fmt.Errorf("invalid user namespace configuration: GID 0 must be mapped") + return + } + + hostId := userNs.UIDMappings[0].HostId + length := userNs.UIDMappings[0].Length + + err = m.record(pod, hostId, length) + return +} + +func (m *usernsManager) createUserNs(pod *v1.Pod) (userNs userNamespace, err error) { + firstID, length, err := m.allocateOne(pod.UID) + if err != nil { + return + } + + defer func() { + if err != nil { + m.releaseWithLock(pod.UID) + } + }() + + userNs = userNamespace{ + UIDMappings: []idMapping{ + { + ContainerId: 0, + HostId: firstID, + Length: length, + }, + }, + GIDMappings: []idMapping{ + { + ContainerId: 0, + HostId: firstID, + Length: length, + }, + }, + } + + return userNs, m.writeMappingsToFile(pod.UID, userNs) +} + +// GetOrCreateUserNamespaceMappings returns the configuration for the sandbox user namespace +func (m *usernsManager) GetOrCreateUserNamespaceMappings(pod *v1.Pod) (*runtimeapi.UserNamespace, error) { + if !utilfeature.DefaultFeatureGate.Enabled(features.UserNamespacesStatelessPodsSupport) { + return nil, nil + } + + m.lock.Lock() + defer m.lock.Unlock() + + if pod.Spec.HostUsers == nil || *pod.Spec.HostUsers == true { + return &runtimeapi.UserNamespace{ + Mode: runtimeapi.NamespaceMode_NODE, + }, nil + } + + content, err := m.readMappingsFromFile(pod.UID) + if err != nil && err != utilstore.ErrKeyNotFound { + return nil, err + } + + var userNs userNamespace + if string(content) != "" { + userNs, err = m.parseUserNsFileAndRecord(pod.UID, content) + if err != nil { + return nil, err + } + } else { + userNs, err = m.createUserNs(pod) + if err != nil { + return nil, err + } + } + + var uids []*runtimeapi.IDMapping + var gids []*runtimeapi.IDMapping + + for _, u := range userNs.UIDMappings { + uids = append(uids, &runtimeapi.IDMapping{ + HostId: u.HostId, + ContainerId: u.ContainerId, + Length: u.Length, + }) + } + for _, g := range userNs.GIDMappings { + gids = append(gids, &runtimeapi.IDMapping{ + HostId: g.HostId, + ContainerId: g.ContainerId, + Length: g.Length, + }) + } + + return &runtimeapi.UserNamespace{ + Mode: runtimeapi.NamespaceMode_POD, + Uids: uids, + Gids: gids, + }, nil +} + +// CleanupOrphanedPodUsernsAllocations reconciliates the state of user namespace +// allocations with the pods actually running. It frees any user namespace +// allocation for orphaned pods. +func (m *usernsManager) CleanupOrphanedPodUsernsAllocations(pods []*v1.Pod, runningPods []*kubecontainer.Pod) error { + if !utilfeature.DefaultFeatureGate.Enabled(features.UserNamespacesStatelessPodsSupport) { + return nil + } + + m.lock.Lock() + defer m.lock.Unlock() + + allPods := sets.NewString() + for _, pod := range pods { + allPods.Insert(string(pod.UID)) + } + for _, pod := range runningPods { + allPods.Insert(string(pod.ID)) + } + + allFound := sets.NewString() + found, err := m.kl.listPodsFromDisk() + if err != nil { + return err + } + + for _, podUID := range found { + allFound.Insert(string(podUID)) + } + + // Lets remove all the pods "found" that are not known. + for _, podUID := range found { + if allPods.Has(string(podUID)) { + continue + } + + klog.V(5).InfoS("Clean up orphaned pod user namespace possible allocation", "podUID", podUID) + m.releaseWithLock(podUID) + } + + // Lets remove any existing allocation for a pod that is not "found". + for podUID := range m.usedBy { + if allFound.Has(string(podUID)) { + continue + } + + klog.V(5).InfoS("Clean up orphaned pod user namespace possible allocation", "podUID", podUID) + m.releaseWithLock(podUID) + } + + return nil +} + +// getHostIDsForPod if the pod uses user namespaces, takes the uid and gid +// inside the container and returns the host UID and GID those are mapped to on +// the host. If containerUID/containerGID is nil, then it returns the host +// UID/GID for ID 0 inside the container. +// If the pod is not using user namespaces, as there is no mapping needed, the +// same containerUID and containerGID params are returned. +func (m *usernsManager) getHostIDsForPod(pod *v1.Pod, containerUID, containerGID *int64) (hostUID, hostGID *int64, err error) { + if !utilfeature.DefaultFeatureGate.Enabled(features.UserNamespacesStatelessPodsSupport) { + return containerUID, containerGID, nil + } + + if pod == nil || pod.Spec.HostUsers == nil || *pod.Spec.HostUsers == true { + return containerUID, containerGID, nil + } + + mapping, err := m.GetOrCreateUserNamespaceMappings(pod) + if err != nil { + err = fmt.Errorf("Error getting pod user namespace mapping: %w", err) + return + } + + uid, err := hostIDFromMapping(mapping.Uids, containerUID) + if err != nil { + err = fmt.Errorf("Error getting host UID: %w", err) + return + } + + gid, err := hostIDFromMapping(mapping.Gids, containerGID) + if err != nil { + err = fmt.Errorf("Error getting host GID: %w", err) + return + } + + return &uid, &gid, nil +} + +func hostIDFromMapping(mapping []*runtimeapi.IDMapping, containerId *int64) (int64, error) { + if len(mapping) == 0 { + return 0, fmt.Errorf("can't use empty user namespace mapping") + } + + // If none is requested, root inside the container is used + id := int64(0) + if containerId != nil { + id = *containerId + } + + for _, m := range mapping { + if m == nil { + continue + } + + firstId := int64(m.ContainerId) + lastId := firstId + int64(m.Length) - 1 + + // The id we are looking for is in the range + if id >= firstId && id <= lastId { + // Return the host id for this container id + return int64(m.HostId) + id - firstId, nil + } + } + + return 0, fmt.Errorf("ID: %v not present in pod user namespace", id) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/cache_based_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/cache_based_manager.go index a255f364442..22531a28780 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/cache_based_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/cache_based_manager.go @@ -260,11 +260,11 @@ func (c *cacheBasedManager) UnregisterPod(pod *v1.Pod) { // NewCacheBasedManager creates a manager that keeps a cache of all objects // necessary for registered pods. // It implements the following logic: -// - whenever a pod is created or updated, the cached versions of all objects -// is referencing are invalidated -// - every GetObject() call tries to fetch the value from local cache; if it is -// not there, invalidated or too old, we fetch it from apiserver and refresh the -// value in cache; otherwise it is just fetched from cache +// - whenever a pod is created or updated, the cached versions of all objects +// is referencing are invalidated +// - every GetObject() call tries to fetch the value from local cache; if it is +// not there, invalidated or too old, we fetch it from apiserver and refresh the +// value in cache; otherwise it is just fetched from cache func NewCacheBasedManager(objectStore Store, getReferencedObjects func(*v1.Pod) sets.String) Manager { return &cacheBasedManager{ objectStore: objectStore, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/watch_based_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/watch_based_manager.go index 785f01be256..e3a1d7e29d8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/watch_based_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/util/manager/watch_based_manager.go @@ -369,9 +369,9 @@ func (c *objectCache) shutdownWhenStopped(stopCh <-chan struct{}) { // NewWatchBasedManager creates a manager that keeps a cache of all objects // necessary for registered pods. // It implements the following logic: -// - whenever a pod is created or updated, we start individual watches for all -// referenced objects that aren't referenced from other registered pods -// - every GetObject() returns a value from local cache propagated via watches +// - whenever a pod is created or updated, we start individual watches for all +// referenced objects that aren't referenced from other registered pods +// - every GetObject() returns a value from local cache propagated via watches func NewWatchBasedManager( listObject listObjectFunc, watchObject watchObjectFunc, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go index fe880506b2b..9c771c08635 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volume_host.go @@ -128,6 +128,16 @@ func (kvh *kubeletVolumeHost) GetPodsDir() string { return kvh.kubelet.getPodsDir() } +// GetHostIDsForPod if the pod uses user namespaces, takes the uid and gid +// inside the container and returns the host UID and GID those are mapped to on +// the host. If containerUID/containerGID is nil, then it returns the host +// UID/GID for ID 0 inside the container. +// If the pod is not using user namespaces, as there is no mapping needed, the +// same containerUID and containerGID params are returned. +func (kvh *kubeletVolumeHost) GetHostIDsForPod(pod *v1.Pod, containerUID, containerGID *int64) (hostUID, hostGID *int64, err error) { + return kvh.kubelet.getHostIDsForPod(pod, containerUID, containerGID) +} + func (kvh *kubeletVolumeHost) GetPodVolumeDir(podUID types.UID, pluginName string, volumeName string) string { dir := kvh.kubelet.getPodVolumeDir(podUID, pluginName, volumeName) if runtime.GOOS == "windows" { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/actual_state_of_world.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/actual_state_of_world.go index 7deb6df910d..e23dc4dad7d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/actual_state_of_world.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/actual_state_of_world.go @@ -27,7 +27,9 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/types" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" "k8s.io/kubernetes/pkg/volume/util/operationexecutor" @@ -73,7 +75,7 @@ type ActualStateOfWorld interface { // global mount point prior to detach. // If a volume with the name volumeName does not exist in the list of // attached volumes, an error is returned. - SetDeviceMountState(volumeName v1.UniqueVolumeName, deviceMountState operationexecutor.DeviceMountState, devicePath, deviceMountPath string) error + SetDeviceMountState(volumeName v1.UniqueVolumeName, deviceMountState operationexecutor.DeviceMountState, devicePath, deviceMountPath, seLinuxMountContext string) error // DeletePodFromVolume removes the given pod from the given volume in the // cache indicating the volume has been successfully unmounted from the pod. @@ -107,7 +109,7 @@ type ActualStateOfWorld interface { // volumes, depend on this to update the contents of the volume. // All volume mounting calls should be idempotent so a second mount call for // volumes that do not need to update contents should not fail. - PodExistsInVolume(podName volumetypes.UniquePodName, volumeName v1.UniqueVolumeName, desiredVolumeSize resource.Quantity) (bool, string, error) + PodExistsInVolume(podName volumetypes.UniquePodName, volumeName v1.UniqueVolumeName, desiredVolumeSize resource.Quantity, seLinuxLabel string) (bool, string, error) // PodRemovedFromVolume returns true if the given pod does not exist in the list of // mountedPods for the given volume in the cache, indicating that the pod has @@ -182,6 +184,11 @@ type AttachedVolume struct { // DeviceMountState indicates if device has been globally mounted or is not. DeviceMountState operationexecutor.DeviceMountState + + // SELinuxMountContext is the context with that the volume is globally mounted + // (via -o context=XYZ mount option). If empty, the volume is not mounted with + // "-o context=". + SELinuxMountContext string } // DeviceMayBeMounted returns true if device is mounted in global path or is in @@ -196,9 +203,10 @@ func NewActualStateOfWorld( nodeName types.NodeName, volumePluginMgr *volume.VolumePluginMgr) ActualStateOfWorld { return &actualStateOfWorld{ - nodeName: nodeName, - attachedVolumes: make(map[v1.UniqueVolumeName]attachedVolume), - volumePluginMgr: volumePluginMgr, + nodeName: nodeName, + attachedVolumes: make(map[v1.UniqueVolumeName]attachedVolume), + foundDuringReconstruction: make(map[v1.UniqueVolumeName]map[volumetypes.UniquePodName]types.UID), + volumePluginMgr: volumePluginMgr, } } @@ -227,6 +235,9 @@ type actualStateOfWorld struct { // The key in this map is the name of the volume and the value is an object // containing more information about the attached volume. attachedVolumes map[v1.UniqueVolumeName]attachedVolume + // foundDuringReconstruction is a map of volumes which were discovered + // from kubelet root directory when kubelet was restarted. + foundDuringReconstruction map[v1.UniqueVolumeName]map[volumetypes.UniquePodName]types.UID // volumePluginMgr is the volume plugin manager used to create volume // plugin objects. @@ -284,6 +295,11 @@ type attachedVolume struct { // persistentVolumeSize records size of the volume when pod was started or // size after successful completion of volume expansion operation. persistentVolumeSize *resource.Quantity + + // seLinuxMountContext is the context with that the volume is mounted to global directory + // (via -o context=XYZ mount option). If nil, the volume is not mounted. If "", the volume is + // mounted without "-o context=". + seLinuxMountContext *string } // The mountedPod object represents a pod for which the kubelet volume manager @@ -329,6 +345,11 @@ type mountedPod struct { // - VolumeMounted: means volume for pod has been successfully mounted // - VolumeMountUncertain: means volume for pod may not be mounted, but it must be unmounted volumeMountStateForPod operationexecutor.VolumeMountState + + // seLinuxMountContext is the context with that the volume is mounted to Pod directory + // (via -o context=XYZ mount option). If nil, the volume is not mounted. If "", the volume is + // mounted without "-o context=". + seLinuxMountContext string } func (asw *actualStateOfWorld) MarkVolumeAsAttached( @@ -346,6 +367,102 @@ func (asw *actualStateOfWorld) MarkVolumeAsDetached( asw.DeleteVolume(volumeName) } +func (asw *actualStateOfWorld) IsVolumeReconstructed(volumeName v1.UniqueVolumeName, podName volumetypes.UniquePodName) bool { + volumeState := asw.GetVolumeMountState(volumeName, podName) + + // only uncertain volumes are reconstructed + if volumeState != operationexecutor.VolumeMountUncertain { + return false + } + + asw.RLock() + defer asw.RUnlock() + podMap, ok := asw.foundDuringReconstruction[volumeName] + if !ok { + return false + } + _, foundPod := podMap[podName] + return foundPod +} + +func (asw *actualStateOfWorld) CheckAndMarkVolumeAsUncertainViaReconstruction(opts operationexecutor.MarkVolumeOpts) (bool, error) { + asw.Lock() + defer asw.Unlock() + + volumeObj, volumeExists := asw.attachedVolumes[opts.VolumeName] + if !volumeExists { + return false, nil + } + + podObj, podExists := volumeObj.mountedPods[opts.PodName] + if podExists { + // if volume mount was uncertain we should keep trying to unmount the volume + if podObj.volumeMountStateForPod == operationexecutor.VolumeMountUncertain { + return false, nil + } + if podObj.volumeMountStateForPod == operationexecutor.VolumeMounted { + return false, nil + } + } + + podName := opts.PodName + podUID := opts.PodUID + volumeName := opts.VolumeName + mounter := opts.Mounter + blockVolumeMapper := opts.BlockVolumeMapper + outerVolumeSpecName := opts.OuterVolumeSpecName + volumeGidValue := opts.VolumeGidVolume + volumeSpec := opts.VolumeSpec + + podObj = mountedPod{ + podName: podName, + podUID: podUID, + mounter: mounter, + blockVolumeMapper: blockVolumeMapper, + outerVolumeSpecName: outerVolumeSpecName, + volumeGidValue: volumeGidValue, + volumeSpec: volumeSpec, + remountRequired: false, + volumeMountStateForPod: operationexecutor.VolumeMountUncertain, + } + + if mounter != nil { + // The mounter stored in the object may have old information, + // use the newest one. + podObj.mounter = mounter + } + + asw.attachedVolumes[volumeName].mountedPods[podName] = podObj + + podMap, ok := asw.foundDuringReconstruction[opts.VolumeName] + if !ok { + podMap = map[volumetypes.UniquePodName]types.UID{} + } + podMap[opts.PodName] = opts.PodUID + asw.foundDuringReconstruction[opts.VolumeName] = podMap + return true, nil +} + +func (asw *actualStateOfWorld) CheckAndMarkDeviceUncertainViaReconstruction(volumeName v1.UniqueVolumeName, deviceMountPath string) bool { + asw.Lock() + defer asw.Unlock() + + volumeObj, volumeExists := asw.attachedVolumes[volumeName] + // CheckAndMarkDeviceUncertainViaReconstruction requires volume to be marked as attached, so if + // volume does not exist in ASOW or is in any state other than DeviceNotMounted we should return + if !volumeExists || volumeObj.deviceMountState != operationexecutor.DeviceNotMounted { + return false + } + + volumeObj.deviceMountState = operationexecutor.DeviceMountUncertain + // we are only changing deviceMountPath because devicePath at at this stage is + // determined from node object. + volumeObj.deviceMountPath = deviceMountPath + asw.attachedVolumes[volumeName] = volumeObj + return true + +} + func (asw *actualStateOfWorld) MarkVolumeAsMounted(markVolumeOpts operationexecutor.MarkVolumeOpts) error { return asw.AddPodToVolume(markVolumeOpts) } @@ -365,13 +482,13 @@ func (asw *actualStateOfWorld) MarkVolumeAsUnmounted( } func (asw *actualStateOfWorld) MarkDeviceAsMounted( - volumeName v1.UniqueVolumeName, devicePath, deviceMountPath string) error { - return asw.SetDeviceMountState(volumeName, operationexecutor.DeviceGloballyMounted, devicePath, deviceMountPath) + volumeName v1.UniqueVolumeName, devicePath, deviceMountPath, seLinuxMountContext string) error { + return asw.SetDeviceMountState(volumeName, operationexecutor.DeviceGloballyMounted, devicePath, deviceMountPath, seLinuxMountContext) } func (asw *actualStateOfWorld) MarkDeviceAsUncertain( - volumeName v1.UniqueVolumeName, devicePath, deviceMountPath string) error { - return asw.SetDeviceMountState(volumeName, operationexecutor.DeviceMountUncertain, devicePath, deviceMountPath) + volumeName v1.UniqueVolumeName, devicePath, deviceMountPath, seLinuxMountContext string) error { + return asw.SetDeviceMountState(volumeName, operationexecutor.DeviceMountUncertain, devicePath, deviceMountPath, seLinuxMountContext) } func (asw *actualStateOfWorld) MarkVolumeMountAsUncertain(markVolumeOpts operationexecutor.MarkVolumeOpts) error { @@ -381,7 +498,7 @@ func (asw *actualStateOfWorld) MarkVolumeMountAsUncertain(markVolumeOpts operati func (asw *actualStateOfWorld) MarkDeviceAsUnmounted( volumeName v1.UniqueVolumeName) error { - return asw.SetDeviceMountState(volumeName, operationexecutor.DeviceNotMounted, "", "") + return asw.SetDeviceMountState(volumeName, operationexecutor.DeviceNotMounted, "", "", "") } func (asw *actualStateOfWorld) GetDeviceMountState(volumeName v1.UniqueVolumeName) operationexecutor.DeviceMountState { @@ -529,18 +646,33 @@ func (asw *actualStateOfWorld) AddPodToVolume(markVolumeOpts operationexecutor.M volumeGidValue: volumeGidValue, volumeSpec: volumeSpec, volumeMountStateForPod: markVolumeOpts.VolumeMountState, + seLinuxMountContext: markVolumeOpts.SELinuxMountContext, } } // If pod exists, reset remountRequired value podObj.remountRequired = false podObj.volumeMountStateForPod = markVolumeOpts.VolumeMountState + + // if volume is mounted successfully, then it should be removed from foundDuringReconstruction map + if markVolumeOpts.VolumeMountState == operationexecutor.VolumeMounted { + delete(asw.foundDuringReconstruction[volumeName], podName) + } if mounter != nil { // The mounter stored in the object may have old information, // use the newest one. podObj.mounter = mounter } asw.attachedVolumes[volumeName].mountedPods[podName] = podObj + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + // Store the mount context also in the AttachedVolume to have a global volume context + // for a quick comparison in PodExistsInVolume. + if volumeObj.seLinuxMountContext == nil { + volumeObj.seLinuxMountContext = &markVolumeOpts.SELinuxMountContext + asw.attachedVolumes[volumeName] = volumeObj + } + } + return nil } @@ -580,7 +712,7 @@ func (asw *actualStateOfWorld) MarkRemountRequired( } func (asw *actualStateOfWorld) SetDeviceMountState( - volumeName v1.UniqueVolumeName, deviceMountState operationexecutor.DeviceMountState, devicePath, deviceMountPath string) error { + volumeName v1.UniqueVolumeName, deviceMountState operationexecutor.DeviceMountState, devicePath, deviceMountPath, seLinuxMountContext string) error { asw.Lock() defer asw.Unlock() @@ -596,6 +728,11 @@ func (asw *actualStateOfWorld) SetDeviceMountState( if devicePath != "" { volumeObj.devicePath = devicePath } + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + if seLinuxMountContext != "" { + volumeObj.seLinuxMountContext = &seLinuxMountContext + } + } asw.attachedVolumes[volumeName] = volumeObj return nil } @@ -641,6 +778,12 @@ func (asw *actualStateOfWorld) DeletePodFromVolume( delete(asw.attachedVolumes[volumeName].mountedPods, podName) } + // if there were reconstructed volumes, we should remove them + _, podExists = asw.foundDuringReconstruction[volumeName] + if podExists { + delete(asw.foundDuringReconstruction[volumeName], podName) + } + return nil } @@ -661,10 +804,11 @@ func (asw *actualStateOfWorld) DeleteVolume(volumeName v1.UniqueVolumeName) erro } delete(asw.attachedVolumes, volumeName) + delete(asw.foundDuringReconstruction, volumeName) return nil } -func (asw *actualStateOfWorld) PodExistsInVolume(podName volumetypes.UniquePodName, volumeName v1.UniqueVolumeName, desiredVolumeSize resource.Quantity) (bool, string, error) { +func (asw *actualStateOfWorld) PodExistsInVolume(podName volumetypes.UniquePodName, volumeName v1.UniqueVolumeName, desiredVolumeSize resource.Quantity, seLinuxLabel string) (bool, string, error) { asw.RLock() defer asw.RUnlock() @@ -673,6 +817,18 @@ func (asw *actualStateOfWorld) PodExistsInVolume(podName volumetypes.UniquePodNa return false, "", newVolumeNotAttachedError(volumeName) } + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + if volumeObj.seLinuxMountContext != nil { + // The volume is mounted, check its SELinux context mount option + if *volumeObj.seLinuxMountContext != seLinuxLabel { + fullErr := newSELinuxMountMismatchError(volumeName) + if util.VolumeSupportsSELinuxMount(volumeObj.spec) { + return false, volumeObj.devicePath, fullErr + } + } + } + } + podObj, podExists := volumeObj.mountedPods[podName] if podExists { // if volume mount was uncertain we should keep trying to mount the volume @@ -739,7 +895,6 @@ func (asw *actualStateOfWorld) PodRemovedFromVolume( return false } } - return true } @@ -794,7 +949,6 @@ func (asw *actualStateOfWorld) GetAllMountedVolumes() []MountedVolume { mountedVolume, getMountedVolume(&podObj, &volumeObj)) } - } } @@ -899,16 +1053,24 @@ func (asw *actualStateOfWorld) SyncReconstructedVolume(volumeName v1.UniqueVolum func (asw *actualStateOfWorld) newAttachedVolume( attachedVolume *attachedVolume) AttachedVolume { + seLinuxMountContext := "" + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + if attachedVolume.seLinuxMountContext != nil { + seLinuxMountContext = *attachedVolume.seLinuxMountContext + } + } return AttachedVolume{ AttachedVolume: operationexecutor.AttachedVolume{ - VolumeName: attachedVolume.volumeName, - VolumeSpec: attachedVolume.spec, - NodeName: asw.nodeName, - PluginIsAttachable: attachedVolume.pluginIsAttachable, - DevicePath: attachedVolume.devicePath, - DeviceMountPath: attachedVolume.deviceMountPath, - PluginName: attachedVolume.pluginName}, - DeviceMountState: attachedVolume.deviceMountState, + VolumeName: attachedVolume.volumeName, + VolumeSpec: attachedVolume.spec, + NodeName: asw.nodeName, + PluginIsAttachable: attachedVolume.pluginIsAttachable, + DevicePath: attachedVolume.devicePath, + DeviceMountPath: attachedVolume.deviceMountPath, + PluginName: attachedVolume.pluginName, + SELinuxMountContext: seLinuxMountContext}, + DeviceMountState: attachedVolume.deviceMountState, + SELinuxMountContext: seLinuxMountContext, } } @@ -994,6 +1156,10 @@ func IsFSResizeRequiredError(err error) bool { // mountedPod and attachedVolume objects. func getMountedVolume( mountedPod *mountedPod, attachedVolume *attachedVolume) MountedVolume { + seLinuxMountContext := "" + if attachedVolume.seLinuxMountContext != nil { + seLinuxMountContext = *attachedVolume.seLinuxMountContext + } return MountedVolume{ MountedVolume: operationexecutor.MountedVolume{ PodName: mountedPod.podName, @@ -1006,5 +1172,32 @@ func getMountedVolume( BlockVolumeMapper: mountedPod.blockVolumeMapper, VolumeGidValue: mountedPod.volumeGidValue, VolumeSpec: mountedPod.volumeSpec, - DeviceMountPath: attachedVolume.deviceMountPath}} + DeviceMountPath: attachedVolume.deviceMountPath, + SELinuxMountContext: seLinuxMountContext}} + +} + +// seLinuxMountMismatchError is an error returned when PodExistsInVolume() found +// a volume mounted with a different SELinux label than expected. +type seLinuxMountMismatchError struct { + volumeName v1.UniqueVolumeName +} + +func (err seLinuxMountMismatchError) Error() string { + return fmt.Sprintf( + "volumeName %q is already mounted to a different pod with a different SELinux label", + err.volumeName) +} + +func newSELinuxMountMismatchError(volumeName v1.UniqueVolumeName) error { + return seLinuxMountMismatchError{ + volumeName: volumeName, + } +} + +// IsSELinuxMountMismatchError returns true if the specified error is a +// seLinuxMountMismatchError. +func IsSELinuxMountMismatchError(err error) bool { + _, ok := err.(seLinuxMountMismatchError) + return ok } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_wold_selinux_metrics.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_wold_selinux_metrics.go new file mode 100644 index 00000000000..16727d02591 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_wold_selinux_metrics.go @@ -0,0 +1,84 @@ +/* +Copyright 2022 The Kubernetes 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 cache + +import ( + "sync" + + compbasemetrics "k8s.io/component-base/metrics" + "k8s.io/component-base/metrics/legacyregistry" +) + +var ( + // TODO: add plugin name + access mode labels to all these metrics + seLinuxContainerContextErrors = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_container_errors_total", + Help: "Number of errors when kubelet cannot compute SELinux context for a container. Kubelet can't start such a Pod then and it will retry, therefore value of this metric may not represent the actual nr. of containers.", + StabilityLevel: compbasemetrics.ALPHA, + }) + seLinuxContainerContextWarnings = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_container_warnings_total", + StabilityLevel: compbasemetrics.ALPHA, + Help: "Number of errors when kubelet cannot compute SELinux context for a container that are ignored. They will become real errors when SELinuxMountReadWriteOncePod feature is expanded to all volume access modes.", + }) + seLinuxPodContextMismatchErrors = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_pod_context_mismatch_errors_total", + Help: "Number of errors when a Pod defines different SELinux contexts for its containers that use the same volume. Kubelet can't start such a Pod then and it will retry, therefore value of this metric may not represent the actual nr. of Pods.", + StabilityLevel: compbasemetrics.ALPHA, + }) + seLinuxPodContextMismatchWarnings = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_pod_context_mismatch_warnings_total", + Help: "Number of errors when a Pod defines different SELinux contexts for its containers that use the same volume. They are not errors yet, but they will become real errors when SELinuxMountReadWriteOncePod feature is expanded to all volume access modes.", + StabilityLevel: compbasemetrics.ALPHA, + }) + seLinuxVolumeContextMismatchErrors = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_volume_context_mismatch_errors_total", + Help: "Number of errors when a Pod uses a volume that is already mounted with a different SELinux context than the Pod needs. Kubelet can't start such a Pod then and it will retry, therefore value of this metric may not represent the actual nr. of Pods.", + StabilityLevel: compbasemetrics.ALPHA, + }) + seLinuxVolumeContextMismatchWarnings = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_volume_context_mismatch_warnings_total", + Help: "Number of errors when a Pod uses a volume that is already mounted with a different SELinux context than the Pod needs. They are not errors yet, but they will become real errors when SELinuxMountReadWriteOncePod feature is expanded to all volume access modes.", + StabilityLevel: compbasemetrics.ALPHA, + }) + seLinuxVolumesAdmitted = compbasemetrics.NewGauge( + &compbasemetrics.GaugeOpts{ + Name: "volume_manager_selinux_volumes_admitted_total", + Help: "Number of volumes whose SELinux context was fine and will be mounted with mount -o context option.", + StabilityLevel: compbasemetrics.ALPHA, + }) + + registerMetrics sync.Once +) + +func registerSELinuxMetrics() { + registerMetrics.Do(func() { + legacyregistry.MustRegister(seLinuxContainerContextErrors) + legacyregistry.MustRegister(seLinuxContainerContextWarnings) + legacyregistry.MustRegister(seLinuxPodContextMismatchErrors) + legacyregistry.MustRegister(seLinuxPodContextMismatchWarnings) + legacyregistry.MustRegister(seLinuxVolumeContextMismatchErrors) + legacyregistry.MustRegister(seLinuxVolumeContextMismatchWarnings) + legacyregistry.MustRegister(seLinuxVolumesAdmitted) + }) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_world.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_world.go index 0a999833a5e..31e9d621253 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_world.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/cache/desired_state_of_world.go @@ -28,7 +28,11 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apiserver/pkg/util/feature" + "k8s.io/component-base/metrics" + "k8s.io/klog/v2" apiv1resource "k8s.io/kubernetes/pkg/api/v1/resource" + "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" "k8s.io/kubernetes/pkg/volume/util/operationexecutor" @@ -55,7 +59,7 @@ type DesiredStateOfWorld interface { // added. // If a pod with the same unique name already exists under the specified // volume, this is a no-op. - AddPodToVolume(podName types.UniquePodName, pod *v1.Pod, volumeSpec *volume.Spec, outerVolumeSpecName string, volumeGidValue string) (v1.UniqueVolumeName, error) + AddPodToVolume(podName types.UniquePodName, pod *v1.Pod, volumeSpec *volume.Spec, outerVolumeSpecName string, volumeGidValue string, seLinuxContainerContexts []*v1.SELinuxOptions) (v1.UniqueVolumeName, error) // MarkVolumesReportedInUse sets the ReportedInUse value to true for the // reportedVolumes. For volumes not in the reportedVolumes list, the @@ -83,7 +87,7 @@ type DesiredStateOfWorld interface { // volumes that should be attached to this node. // If a pod with the same unique name does not exist under the specified // volume, false is returned. - VolumeExists(volumeName v1.UniqueVolumeName) bool + VolumeExists(volumeName v1.UniqueVolumeName, seLinuxMountContext string) bool // PodExistsInVolume returns true if the given pod exists in the list of // podsToMount for the given volume in the cache. @@ -91,7 +95,7 @@ type DesiredStateOfWorld interface { // volume, false is returned. // If a volume with the name volumeName does not exist in the list of // attached volumes, false is returned. - PodExistsInVolume(podName types.UniquePodName, volumeName v1.UniqueVolumeName) bool + PodExistsInVolume(podName types.UniquePodName, volumeName v1.UniqueVolumeName, seLinuxMountContext string) bool // GetVolumesToMount generates and returns a list of volumes that should be // attached to this node and the pods they should be mounted to based on the @@ -138,11 +142,15 @@ type VolumeToMount struct { } // NewDesiredStateOfWorld returns a new instance of DesiredStateOfWorld. -func NewDesiredStateOfWorld(volumePluginMgr *volume.VolumePluginMgr) DesiredStateOfWorld { +func NewDesiredStateOfWorld(volumePluginMgr *volume.VolumePluginMgr, seLinuxTranslator util.SELinuxLabelTranslator) DesiredStateOfWorld { + if feature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + registerSELinuxMetrics() + } return &desiredStateOfWorld{ - volumesToMount: make(map[v1.UniqueVolumeName]volumeToMount), - volumePluginMgr: volumePluginMgr, - podErrors: make(map[types.UniquePodName]sets.String), + volumesToMount: make(map[v1.UniqueVolumeName]volumeToMount), + volumePluginMgr: volumePluginMgr, + podErrors: make(map[types.UniquePodName]sets.String), + seLinuxTranslator: seLinuxTranslator, } } @@ -157,6 +165,8 @@ type desiredStateOfWorld struct { volumePluginMgr *volume.VolumePluginMgr // podErrors are errors caught by desiredStateOfWorldPopulator about volumes for a given pod. podErrors map[types.UniquePodName]sets.String + // seLinuxTranslator translates v1.SELinuxOptions to a file SELinux label. + seLinuxTranslator util.SELinuxLabelTranslator sync.RWMutex } @@ -195,6 +205,13 @@ type volumeToMount struct { // persistentVolumeSize records desired size of a persistent volume. // Usually this value reflects size recorded in pv.Spec.Capacity persistentVolumeSize *resource.Quantity + + // seLinuxFileLabel is desired SELinux label on files on the volume. If empty, then + // - either the context+label is unknown (assigned randomly by the container runtime) + // - or the volume plugin responsible for this volume does not support mounting with -o context + // - or the OS does not support SELinux + // In all cases, the SELinux context does not matter when mounting the volume. + seLinuxFileLabel string } // The pod object represents a pod that references the underlying volume and @@ -232,7 +249,8 @@ func (dsw *desiredStateOfWorld) AddPodToVolume( pod *v1.Pod, volumeSpec *volume.Spec, outerVolumeSpecName string, - volumeGidValue string) (v1.UniqueVolumeName, error) { + volumeGidValue string, + seLinuxContainerContexts []*v1.SELinuxOptions) (v1.UniqueVolumeName, error) { dsw.Lock() defer dsw.Unlock() @@ -268,7 +286,13 @@ func (dsw *desiredStateOfWorld) AddPodToVolume( volumeName = util.GetUniqueVolumeNameFromSpecWithPod(podName, volumePlugin, volumeSpec) } - if _, volumeExists := dsw.volumesToMount[volumeName]; !volumeExists { + seLinuxFileLabel, pluginSupportsSELinuxContextMount, err := dsw.getSELinuxLabel(volumeSpec, seLinuxContainerContexts) + if err != nil { + return "", err + } + klog.V(4).InfoS("volume final SELinux label decided", "volume", volumeSpec.Name(), "label", seLinuxFileLabel) + + if vol, volumeExists := dsw.volumesToMount[volumeName]; !volumeExists { var sizeLimit *resource.Quantity if volumeSpec.Volume != nil { if util.IsLocalEphemeralVolume(*volumeSpec.Volume) { @@ -283,6 +307,13 @@ func (dsw *desiredStateOfWorld) AddPodToVolume( } } } + if !util.VolumeSupportsSELinuxMount(volumeSpec) { + // Clear SELinux label for the volume with unsupported access modes. + seLinuxFileLabel = "" + } + if seLinuxFileLabel != "" { + seLinuxVolumesAdmitted.Add(1.0) + } vmt := volumeToMount{ volumeName: volumeName, podsToMount: make(map[types.UniquePodName]podToMount), @@ -291,6 +322,7 @@ func (dsw *desiredStateOfWorld) AddPodToVolume( volumeGidValue: volumeGidValue, reportedInUse: false, desiredSizeLimit: sizeLimit, + seLinuxFileLabel: seLinuxFileLabel, } // record desired size of the volume if volumeSpec.PersistentVolume != nil { @@ -300,9 +332,25 @@ func (dsw *desiredStateOfWorld) AddPodToVolume( vmt.persistentVolumeSize = &pvCapCopy } } - dsw.volumesToMount[volumeName] = vmt + } else { + // volume exists + if pluginSupportsSELinuxContextMount { + if seLinuxFileLabel != vol.seLinuxFileLabel { + // TODO: update the error message after tests, e.g. add at least the conflicting pod names. + fullErr := fmt.Errorf("conflicting SELinux labels of volume %s: %q and %q", volumeSpec.Name(), vol.seLinuxFileLabel, seLinuxFileLabel) + supported := util.VolumeSupportsSELinuxMount(volumeSpec) + if err := handleSELinuxMetricError(fullErr, supported, seLinuxVolumeContextMismatchWarnings, seLinuxVolumeContextMismatchErrors); err != nil { + return "", err + } + } else { + if seLinuxFileLabel != "" { + seLinuxVolumesAdmitted.Add(1.0) + } + } + } } + oldPodMount, ok := dsw.volumesToMount[volumeName].podsToMount[podName] mountRequestTime := time.Now() if ok && !volumePlugin.RequiresRemount(volumeSpec) { @@ -322,6 +370,54 @@ func (dsw *desiredStateOfWorld) AddPodToVolume( return volumeName, nil } +func (dsw *desiredStateOfWorld) getSELinuxLabel(volumeSpec *volume.Spec, seLinuxContainerContexts []*v1.SELinuxOptions) (string, bool, error) { + var seLinuxFileLabel string + var pluginSupportsSELinuxContextMount bool + + if feature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + var err error + + if !dsw.seLinuxTranslator.SELinuxEnabled() { + return "", false, nil + } + + pluginSupportsSELinuxContextMount, err = dsw.getSELinuxMountSupport(volumeSpec) + if err != nil { + return "", false, err + } + seLinuxSupported := util.VolumeSupportsSELinuxMount(volumeSpec) + if pluginSupportsSELinuxContextMount { + // Ensure that a volume that can be mounted with "-o context=XYZ" is + // used only by containers with the same SELinux contexts. + for _, containerContext := range seLinuxContainerContexts { + newLabel, err := dsw.seLinuxTranslator.SELinuxOptionsToFileLabel(containerContext) + if err != nil { + fullErr := fmt.Errorf("failed to construct SELinux label from context %q: %s", containerContext, err) + if err := handleSELinuxMetricError(fullErr, seLinuxSupported, seLinuxContainerContextWarnings, seLinuxContainerContextErrors); err != nil { + return "", false, err + } + } + if seLinuxFileLabel == "" { + seLinuxFileLabel = newLabel + continue + } + if seLinuxFileLabel != newLabel { + fullErr := fmt.Errorf("volume %s is used with two different SELinux contexts in the same pod: %q, %q", volumeSpec.Name(), seLinuxFileLabel, newLabel) + if err := handleSELinuxMetricError(fullErr, seLinuxSupported, seLinuxPodContextMismatchWarnings, seLinuxPodContextMismatchErrors); err != nil { + return "", false, err + } + } + } + } else { + // Volume plugin does not support SELinux context mount. + // DSW will track this volume with SELinux label "", i.e. no mount with + // -o context. + seLinuxFileLabel = "" + } + } + return seLinuxFileLabel, pluginSupportsSELinuxContextMount, nil +} + func (dsw *desiredStateOfWorld) MarkVolumesReportedInUse( reportedVolumes []v1.UniqueVolumeName) { dsw.Lock() @@ -380,16 +476,35 @@ func (dsw *desiredStateOfWorld) UpdatePersistentVolumeSize(volumeName v1.UniqueV } func (dsw *desiredStateOfWorld) VolumeExists( - volumeName v1.UniqueVolumeName) bool { + volumeName v1.UniqueVolumeName, seLinuxMountContext string) bool { dsw.RLock() defer dsw.RUnlock() - _, volumeExists := dsw.volumesToMount[volumeName] - return volumeExists + vol, volumeExists := dsw.volumesToMount[volumeName] + if !volumeExists { + return false + } + if feature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + // Handling two volumes with the same name and different SELinux context + // as two *different* volumes here. Because if a volume is mounted with + // an old SELinux context, it must be unmounted first and then mounted again + // with the new context. + // + // This will happen when a pod A with context alpha_t runs and is being + // terminated by kubelet and its volumes are being torn down, while a + // pod B with context beta_t is already scheduled on the same node, + // using the same volumes + // The volumes from Pod A must be fully unmounted (incl. UnmountDevice) + // and mounted with new SELinux mount options for pod B. + // Without SELinux, kubelet can (and often does) reuse device mounted + // for A. + return vol.seLinuxFileLabel == seLinuxMountContext + } + return true } func (dsw *desiredStateOfWorld) PodExistsInVolume( - podName types.UniquePodName, volumeName v1.UniqueVolumeName) bool { + podName types.UniquePodName, volumeName v1.UniqueVolumeName, seLinuxMountOption string) bool { dsw.RLock() defer dsw.RUnlock() @@ -398,6 +513,15 @@ func (dsw *desiredStateOfWorld) PodExistsInVolume( return false } + if feature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + if volumeObj.seLinuxFileLabel != seLinuxMountOption { + // The volume is in DSW, but with a different SELinux mount option. + // Report it as unused, so the volume is unmounted and mounted back + // with the right SELinux option. + return false + } + } + _, podExists := volumeObj.podsToMount[podName] return podExists } @@ -448,6 +572,7 @@ func (dsw *desiredStateOfWorld) GetVolumesToMount() []VolumeToMount { ReportedInUse: volumeObj.reportedInUse, MountRequestTime: podObj.mountRequestTime, DesiredSizeLimit: volumeObj.desiredSizeLimit, + SELinuxLabel: volumeObj.seLinuxFileLabel, }, } if volumeObj.persistentVolumeSize != nil { @@ -504,3 +629,20 @@ func (dsw *desiredStateOfWorld) MarkVolumeAttachability(volumeName v1.UniqueVolu volumeObj.pluginIsAttachable = attachable dsw.volumesToMount[volumeName] = volumeObj } + +func (dsw *desiredStateOfWorld) getSELinuxMountSupport(volumeSpec *volume.Spec) (bool, error) { + return util.SupportsSELinuxContextMount(volumeSpec, dsw.volumePluginMgr) +} + +// Based on isRWOP, bump the right warning / error metric and either consume the error or return it. +func handleSELinuxMetricError(err error, seLinuxSupported bool, warningMetric, errorMetric *metrics.Gauge) error { + if seLinuxSupported { + errorMetric.Add(1.0) + return err + } + + // This is not an error yet, but it will be when support for other access modes is added. + warningMetric.Add(1.0) + klog.V(4).ErrorS(err, "Please report this error in https://github.com/kubernetes/enhancements/issues/1710, together with full Pod yaml file") + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go index f2cbe842eff..7b0c7536356 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go @@ -79,9 +79,13 @@ type podStateProvider interface { // // kubeClient - used to fetch PV and PVC objects from the API server // loopSleepDuration - the amount of time the populator loop sleeps between -// successive executions +// +// successive executions +// // podManager - the kubelet podManager that is the source of truth for the pods -// that exist on this host +// +// that exist on this host +// // desiredStateOfWorld - the cache to populate func NewDesiredStateOfWorldPopulator( kubeClient clientset.Interface, @@ -251,7 +255,6 @@ func (dswp *desiredStateOfWorldPopulator) findAndRemoveDeletedPods() { continue } klog.V(4).InfoS("Removing volume from desired state", "pod", klog.KObj(volumeToMount.Pod), "podUID", volumeToMount.Pod.UID, "volumeName", volumeToMountSpecName) - dswp.desiredStateOfWorld.DeletePodFromVolume( volumeToMount.PodName, volumeToMount.VolumeName) dswp.deleteProcessedPod(volumeToMount.PodName) @@ -280,7 +283,7 @@ func (dswp *desiredStateOfWorldPopulator) processPodVolumes( } allVolumesAdded := true - mounts, devices := util.GetPodVolumeNames(pod) + mounts, devices, seLinuxContainerContexts := util.GetPodVolumeNames(pod) // Process volume spec for each volume defined in pod for _, podVolume := range pod.Spec.Volumes { @@ -301,7 +304,7 @@ func (dswp *desiredStateOfWorldPopulator) processPodVolumes( // Add volume to desired state of world uniqueVolumeName, err := dswp.desiredStateOfWorld.AddPodToVolume( - uniquePodName, pod, volumeSpec, podVolume.Name, volumeGidValue) + uniquePodName, pod, volumeSpec, podVolume.Name, volumeGidValue, seLinuxContainerContexts[podVolume.Name]) if err != nil { klog.ErrorS(err, "Failed to add volume to desiredStateOfWorld", "pod", klog.KObj(pod), "volumeName", podVolume.Name, "volumeSpecName", volumeSpec.Name()) dswp.desiredStateOfWorld.AddErrorToPod(uniquePodName, err.Error()) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/reconciler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/reconciler.go index 3c3b9b4d282..35c14a54c8e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/reconciler.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler/reconciler.go @@ -75,21 +75,31 @@ type Reconciler interface { // NewReconciler returns a new instance of Reconciler. // // controllerAttachDetachEnabled - if true, indicates that the attach/detach -// controller is responsible for managing the attach/detach operations for -// this node, and therefore the volume manager should not +// +// controller is responsible for managing the attach/detach operations for +// this node, and therefore the volume manager should not +// // loopSleepDuration - the amount of time the reconciler loop sleeps between -// successive executions +// +// successive executions +// // waitForAttachTimeout - the amount of time the Mount function will wait for -// the volume to be attached +// +// the volume to be attached +// // nodeName - the Name for this node, used by Attach and Detach methods // desiredStateOfWorld - cache containing the desired state of the world // actualStateOfWorld - cache containing the actual state of the world // populatorHasAddedPods - checker for whether the populator has finished -// adding pods to the desiredStateOfWorld cache at least once after sources -// are all ready (before sources are ready, pods are probably missing) +// +// adding pods to the desiredStateOfWorld cache at least once after sources +// are all ready (before sources are ready, pods are probably missing) +// // operationExecutor - used to trigger attach/detach/mount/unmount operations -// safely (prevents more than one operation from being triggered on the same -// volume) +// +// safely (prevents more than one operation from being triggered on the same +// volume) +// // mounter - mounter passed in from kubelet, passed down unmount path // hostutil - hostutil passed in from kubelet // volumePluginMgr - volume plugin manager passed from kubelet @@ -119,6 +129,7 @@ func NewReconciler( operationExecutor: operationExecutor, mounter: mounter, hostutil: hostutil, + skippedDuringReconstruction: map[v1.UniqueVolumeName]*globalVolumeInfo{}, volumePluginMgr: volumePluginMgr, kubeletPodsDir: kubeletPodsDir, timeOfLastSync: time.Time{}, @@ -138,6 +149,7 @@ type reconciler struct { mounter mount.Interface hostutil hostutil.HostUtils volumePluginMgr *volumepkg.VolumePluginMgr + skippedDuringReconstruction map[v1.UniqueVolumeName]*globalVolumeInfo kubeletPodsDir string timeOfLastSync time.Time } @@ -175,12 +187,19 @@ func (rc *reconciler) reconcile() { // Ensure devices that should be detached/unmounted are detached/unmounted. rc.unmountDetachDevices() + + // After running the above operations if skippedDuringReconstruction is not empty + // then ensure that all volumes which were discovered and skipped during reconstruction + // are added to actualStateOfWorld in uncertain state. + if len(rc.skippedDuringReconstruction) > 0 { + rc.processReconstructedVolumes() + } } func (rc *reconciler) unmountVolumes() { // Ensure volumes that should be unmounted are unmounted. for _, mountedVolume := range rc.actualStateOfWorld.GetAllMountedVolumes() { - if !rc.desiredStateOfWorld.PodExistsInVolume(mountedVolume.PodName, mountedVolume.VolumeName) { + if !rc.desiredStateOfWorld.PodExistsInVolume(mountedVolume.PodName, mountedVolume.VolumeName, mountedVolume.SELinuxMountContext) { // Volume is mounted, unmount it klog.V(5).InfoS(mountedVolume.GenerateMsgDetailed("Starting operationExecutor.UnmountVolume", "")) err := rc.operationExecutor.UnmountVolume( @@ -198,9 +217,14 @@ func (rc *reconciler) unmountVolumes() { func (rc *reconciler) mountOrAttachVolumes() { // Ensure volumes that should be attached/mounted are attached/mounted. for _, volumeToMount := range rc.desiredStateOfWorld.GetVolumesToMount() { - volMounted, devicePath, err := rc.actualStateOfWorld.PodExistsInVolume(volumeToMount.PodName, volumeToMount.VolumeName, volumeToMount.PersistentVolumeSize) + volMounted, devicePath, err := rc.actualStateOfWorld.PodExistsInVolume(volumeToMount.PodName, volumeToMount.VolumeName, volumeToMount.PersistentVolumeSize, volumeToMount.SELinuxLabel) volumeToMount.DevicePath = devicePath - if cache.IsVolumeNotAttachedError(err) { + if cache.IsSELinuxMountMismatchError(err) { + // TODO: check error message + lower frequency, this can be noisy + klog.ErrorS(err, volumeToMount.GenerateErrorDetailed("mount precondition failed, please report this error in https://github.com/kubernetes/enhancements/issues/1710, together with full Pod yaml file", err).Error(), "pod", klog.KObj(volumeToMount.Pod)) + // TODO: report error better, this may be too noisy + rc.desiredStateOfWorld.AddErrorToPod(volumeToMount.PodName, err.Error()) + } else if cache.IsVolumeNotAttachedError(err) { rc.waitForVolumeAttach(volumeToMount) } else if !volMounted || cache.IsRemountRequiredError(err) { rc.mountAttachedVolumes(volumeToMount, err) @@ -249,6 +273,69 @@ func (rc *reconciler) mountAttachedVolumes(volumeToMount cache.VolumeToMount, po } } +// processReconstructedVolumes checks volumes which were skipped during the reconstruction +// process because it was assumed that since these volumes were present in DSOW they would get +// mounted correctly and make it into ASOW. +// But if mount operation fails for some reason then we still need to mark the volume as uncertain +// and wait for the next reconciliation loop to deal with it. +func (rc *reconciler) processReconstructedVolumes() { + for volumeName, glblVolumeInfo := range rc.skippedDuringReconstruction { + // check if volume is marked as attached to the node + // for now lets only process volumes which are at least known as attached to the node + // this should help with most volume types (including secret, configmap etc) + if !rc.actualStateOfWorld.VolumeExists(volumeName) { + klog.V(4).InfoS("Volume is not marked as attached to the node. Skipping processing of the volume", "volumeName", volumeName) + continue + } + uncertainVolumeCount := 0 + // only delete volumes which were marked as attached here. + // This should ensure that - we will wait for volumes which were not marked as attached + // before adding them in uncertain state during reconstruction. + delete(rc.skippedDuringReconstruction, volumeName) + + for podName, volume := range glblVolumeInfo.podVolumes { + markVolumeOpts := operationexecutor.MarkVolumeOpts{ + PodName: volume.podName, + PodUID: types.UID(podName), + VolumeName: volume.volumeName, + Mounter: volume.mounter, + BlockVolumeMapper: volume.blockVolumeMapper, + OuterVolumeSpecName: volume.outerVolumeSpecName, + VolumeGidVolume: volume.volumeGidValue, + VolumeSpec: volume.volumeSpec, + VolumeMountState: operationexecutor.VolumeMountUncertain, + } + + volumeAdded, err := rc.actualStateOfWorld.CheckAndMarkVolumeAsUncertainViaReconstruction(markVolumeOpts) + + // if volume is not mounted then lets mark volume mounted in uncertain state in ASOW + if volumeAdded { + uncertainVolumeCount += 1 + if err != nil { + klog.ErrorS(err, "Could not add pod to volume information to actual state of world", "pod", klog.KObj(volume.pod)) + continue + } + klog.V(4).InfoS("Volume is marked as mounted in uncertain state and added to the actual state", "pod", klog.KObj(volume.pod), "podName", volume.podName, "volumeName", volume.volumeName) + } + } + + if uncertainVolumeCount > 0 { + // If the volume has device to mount, we mark its device as uncertain + if glblVolumeInfo.deviceMounter != nil || glblVolumeInfo.blockVolumeMapper != nil { + deviceMountPath, err := getDeviceMountPath(glblVolumeInfo) + if err != nil { + klog.ErrorS(err, "Could not find device mount path for volume", "volumeName", glblVolumeInfo.volumeName) + continue + } + deviceMounted := rc.actualStateOfWorld.CheckAndMarkDeviceUncertainViaReconstruction(glblVolumeInfo.volumeName, deviceMountPath) + if !deviceMounted { + klog.V(3).InfoS("Could not mark device as mounted in uncertain state", "volumeName", glblVolumeInfo.volumeName) + } + } + } + } +} + func (rc *reconciler) waitForVolumeAttach(volumeToMount cache.VolumeToMount) { if rc.controllerAttachDetachEnabled || !volumeToMount.PluginIsAttachable { //// lets not spin a goroutine and unnecessarily trigger exponential backoff if this happens @@ -291,7 +378,7 @@ func (rc *reconciler) waitForVolumeAttach(volumeToMount cache.VolumeToMount) { func (rc *reconciler) unmountDetachDevices() { for _, attachedVolume := range rc.actualStateOfWorld.GetUnmountedVolumes() { // Check IsOperationPending to avoid marking a volume as detached if it's in the process of mounting. - if !rc.desiredStateOfWorld.VolumeExists(attachedVolume.VolumeName) && + if !rc.desiredStateOfWorld.VolumeExists(attachedVolume.VolumeName, attachedVolume.SELinuxMountContext) && !rc.operationExecutor.IsOperationPending(attachedVolume.VolumeName, nestedpendingoperations.EmptyUniquePodName, nestedpendingoperations.EmptyNodeName) { if attachedVolume.DeviceMayBeMounted() { // Volume is globally mounted to device, unmount it @@ -334,7 +421,7 @@ func (rc *reconciler) unmountDetachDevices() { // it will try to clean up the mount paths with operation executor. func (rc *reconciler) sync() { defer rc.updateLastSyncTime() - rc.syncStates() + rc.syncStates(rc.kubeletPodsDir) } func (rc *reconciler) updateLastSyncTime() { @@ -366,19 +453,38 @@ type reconstructedVolume struct { blockVolumeMapper volumepkg.BlockVolumeMapper } +// globalVolumeInfo stores reconstructed volume information +// for each pod that was using that volume. +type globalVolumeInfo struct { + volumeName v1.UniqueVolumeName + volumeSpec *volumepkg.Spec + devicePath string + mounter volumepkg.Mounter + deviceMounter volumepkg.DeviceMounter + blockVolumeMapper volumepkg.BlockVolumeMapper + podVolumes map[volumetypes.UniquePodName]*reconstructedVolume +} + +func (gvi *globalVolumeInfo) addPodVolume(rcv *reconstructedVolume) { + if gvi.podVolumes == nil { + gvi.podVolumes = map[volumetypes.UniquePodName]*reconstructedVolume{} + } + gvi.podVolumes[rcv.podName] = rcv +} + // syncStates scans the volume directories under the given pod directory. // If the volume is not in desired state of world, this function will reconstruct // the volume related information and put it in both the actual and desired state of worlds. // For some volume plugins that cannot support reconstruction, it will clean up the existing // mount points since the volume is no long needed (removed from desired state) -func (rc *reconciler) syncStates() { +func (rc *reconciler) syncStates(kubeletPodDir string) { // Get volumes information by reading the pod's directory - podVolumes, err := getVolumesFromPodDir(rc.kubeletPodsDir) + podVolumes, err := getVolumesFromPodDir(kubeletPodDir) if err != nil { klog.ErrorS(err, "Cannot get volumes from disk, skip sync states for volume reconstruction") return } - volumesNeedUpdate := make(map[v1.UniqueVolumeName]*reconstructedVolume) + volumesNeedUpdate := make(map[v1.UniqueVolumeName]*globalVolumeInfo) volumeNeedReport := []v1.UniqueVolumeName{} for _, volume := range podVolumes { if rc.actualStateOfWorld.VolumeExistsWithSpecName(volume.podName, volume.volumeSpecName) { @@ -401,6 +507,18 @@ func (rc *reconciler) syncStates() { rc.cleanupMounts(volume) continue } + gvl := &globalVolumeInfo{ + volumeName: reconstructedVolume.volumeName, + volumeSpec: reconstructedVolume.volumeSpec, + devicePath: reconstructedVolume.devicePath, + deviceMounter: reconstructedVolume.deviceMounter, + blockVolumeMapper: reconstructedVolume.blockVolumeMapper, + mounter: reconstructedVolume.mounter, + } + if cachedInfo, ok := volumesNeedUpdate[reconstructedVolume.volumeName]; ok { + gvl = cachedInfo + } + gvl.addPodVolume(reconstructedVolume) if volumeInDSW { // Some pod needs the volume. And it exists on disk. Some previous // kubelet must have created the directory, therefore it must have @@ -408,6 +526,7 @@ func (rc *reconciler) syncStates() { // this new kubelet so reconcile() calls SetUp and re-mounts the // volume if it's necessary. volumeNeedReport = append(volumeNeedReport, reconstructedVolume.volumeName) + rc.skippedDuringReconstruction[reconstructedVolume.volumeName] = gvl klog.V(4).InfoS("Volume exists in desired state, marking as InUse", "podName", volume.podName, "volumeSpecName", volume.volumeSpecName) continue } @@ -416,7 +535,7 @@ func (rc *reconciler) syncStates() { klog.InfoS("Volume is in pending operation, skip cleaning up mounts") } klog.V(2).InfoS("Reconciler sync states: could not find pod information in desired state, update it in actual state", "reconstructedVolume", reconstructedVolume) - volumesNeedUpdate[reconstructedVolume.volumeName] = reconstructedVolume + volumesNeedUpdate[reconstructedVolume.volumeName] = gvl } if len(volumesNeedUpdate) > 0 { @@ -590,7 +709,7 @@ func (rc *reconciler) reconstructVolume(volume podVolume) (*reconstructedVolume, } // updateDevicePath gets the node status to retrieve volume device path information. -func (rc *reconciler) updateDevicePath(volumesNeedUpdate map[v1.UniqueVolumeName]*reconstructedVolume) { +func (rc *reconciler) updateDevicePath(volumesNeedUpdate map[v1.UniqueVolumeName]*globalVolumeInfo) { node, fetchErr := rc.kubeClient.CoreV1().Nodes().Get(context.TODO(), string(rc.nodeName), metav1.GetOptions{}) if fetchErr != nil { klog.ErrorS(fetchErr, "UpdateStates in reconciler: could not get node status with error") @@ -608,19 +727,19 @@ func (rc *reconciler) updateDevicePath(volumesNeedUpdate map[v1.UniqueVolumeName // getDeviceMountPath returns device mount path for block volume which // implements BlockVolumeMapper or filesystem volume which implements // DeviceMounter -func getDeviceMountPath(volume *reconstructedVolume) (string, error) { - if volume.blockVolumeMapper != nil { - // for block volume, we return its global map path - return volume.blockVolumeMapper.GetGlobalMapPath(volume.volumeSpec) - } else if volume.deviceMounter != nil { - // for filesystem volume, we return its device mount path if the plugin implements DeviceMounter - return volume.deviceMounter.GetDeviceMountPath(volume.volumeSpec) +func getDeviceMountPath(gvi *globalVolumeInfo) (string, error) { + if gvi.blockVolumeMapper != nil { + // for block gvi, we return its global map path + return gvi.blockVolumeMapper.GetGlobalMapPath(gvi.volumeSpec) + } else if gvi.deviceMounter != nil { + // for filesystem gvi, we return its device mount path if the plugin implements DeviceMounter + return gvi.deviceMounter.GetDeviceMountPath(gvi.volumeSpec) } else { return "", fmt.Errorf("blockVolumeMapper or deviceMounter required") } } -func (rc *reconciler) updateStates(volumesNeedUpdate map[v1.UniqueVolumeName]*reconstructedVolume) error { +func (rc *reconciler) updateStates(volumesNeedUpdate map[v1.UniqueVolumeName]*globalVolumeInfo) error { // Get the node status to retrieve volume device path information. // Skip reporting devicePath in node objects if kubeClient is nil. // In standalone mode, kubelet is not expected to mount any attachable volume types or secret, configmaps etc. @@ -628,49 +747,57 @@ func (rc *reconciler) updateStates(volumesNeedUpdate map[v1.UniqueVolumeName]*re rc.updateDevicePath(volumesNeedUpdate) } - for _, volume := range volumesNeedUpdate { + for _, gvl := range volumesNeedUpdate { err := rc.actualStateOfWorld.MarkVolumeAsAttached( //TODO: the devicePath might not be correct for some volume plugins: see issue #54108 - volume.volumeName, volume.volumeSpec, "" /* nodeName */, volume.devicePath) + gvl.volumeName, gvl.volumeSpec, "" /* nodeName */, gvl.devicePath) if err != nil { - klog.ErrorS(err, "Could not add volume information to actual state of world", "pod", klog.KObj(volume.pod)) + klog.ErrorS(err, "Could not add volume information to actual state of world", "volumeName", gvl.volumeName) continue } - markVolumeOpts := operationexecutor.MarkVolumeOpts{ - PodName: volume.podName, - PodUID: types.UID(volume.podName), - VolumeName: volume.volumeName, - Mounter: volume.mounter, - BlockVolumeMapper: volume.blockVolumeMapper, - OuterVolumeSpecName: volume.outerVolumeSpecName, - VolumeGidVolume: volume.volumeGidValue, - VolumeSpec: volume.volumeSpec, - VolumeMountState: operationexecutor.VolumeMounted, - } - err = rc.actualStateOfWorld.MarkVolumeAsMounted(markVolumeOpts) - if err != nil { - klog.ErrorS(err, "Could not add pod to volume information to actual state of world", "pod", klog.KObj(volume.pod)) - continue + for _, volume := range gvl.podVolumes { + err = rc.markVolumeState(volume, operationexecutor.VolumeMounted) + if err != nil { + klog.ErrorS(err, "Could not add pod to volume information to actual state of world", "pod", klog.KObj(volume.pod)) + continue + } + klog.V(4).InfoS("Volume is marked as mounted and added into the actual state", "pod", klog.KObj(volume.pod), "podName", volume.podName, "volumeName", volume.volumeName) } - klog.V(4).InfoS("Volume is marked as mounted and added into the actual state", "pod", klog.KObj(volume.pod), "podName", volume.podName, "volumeName", volume.volumeName) // If the volume has device to mount, we mark its device as mounted. - if volume.deviceMounter != nil || volume.blockVolumeMapper != nil { - deviceMountPath, err := getDeviceMountPath(volume) + if gvl.deviceMounter != nil || gvl.blockVolumeMapper != nil { + deviceMountPath, err := getDeviceMountPath(gvl) if err != nil { - klog.ErrorS(err, "Could not find device mount path for volume", "volumeName", volume.volumeName, "pod", klog.KObj(volume.pod)) + klog.ErrorS(err, "Could not find device mount path for volume", "volumeName", gvl.volumeName) continue } - err = rc.actualStateOfWorld.MarkDeviceAsMounted(volume.volumeName, volume.devicePath, deviceMountPath) + // TODO(jsafrane): add reconstructed SELinux context + err = rc.actualStateOfWorld.MarkDeviceAsMounted(gvl.volumeName, gvl.devicePath, deviceMountPath, "") if err != nil { - klog.ErrorS(err, "Could not mark device is mounted to actual state of world", "pod", klog.KObj(volume.pod)) + klog.ErrorS(err, "Could not mark device is mounted to actual state of world", "volume", gvl.volumeName) continue } - klog.V(4).InfoS("Volume is marked device as mounted and added into the actual state", "pod", klog.KObj(volume.pod), "podName", volume.podName, "volumeName", volume.volumeName) + klog.V(4).InfoS("Volume is marked device as mounted and added into the actual state", "volumeName", gvl.volumeName) } } return nil } +func (rc *reconciler) markVolumeState(volume *reconstructedVolume, volumeState operationexecutor.VolumeMountState) error { + markVolumeOpts := operationexecutor.MarkVolumeOpts{ + PodName: volume.podName, + PodUID: types.UID(volume.podName), + VolumeName: volume.volumeName, + Mounter: volume.mounter, + BlockVolumeMapper: volume.blockVolumeMapper, + OuterVolumeSpecName: volume.outerVolumeSpecName, + VolumeGidVolume: volume.volumeGidValue, + VolumeSpec: volume.volumeSpec, + VolumeMountState: volumeState, + } + err := rc.actualStateOfWorld.MarkVolumeAsMounted(markVolumeOpts) + return err +} + // getVolumesFromPodDir scans through the volumes directories under the given pod directory. // It returns a list of pod volume information including pod's uid, volume's plugin name, mount path, // and volume spec name. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/volume_manager.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/volume_manager.go index 6152080493a..ee58b2fcaa7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/volume_manager.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/volumemanager/volume_manager.go @@ -165,9 +165,12 @@ type podStateProvider interface { // VolumeManager interface. // // kubeClient - kubeClient is the kube API client used by DesiredStateOfWorldPopulator -// to communicate with the API server to fetch PV and PVC objects +// +// to communicate with the API server to fetch PV and PVC objects +// // volumePluginMgr - the volume plugin manager used to access volume plugins. -// Must be pre-initialized. +// +// Must be pre-initialized. func NewVolumeManager( controllerAttachDetachEnabled bool, nodeName k8stypes.NodeName, @@ -183,10 +186,11 @@ func NewVolumeManager( keepTerminatedPodVolumes bool, blockVolumePathHandler volumepathhandler.BlockVolumePathHandler) VolumeManager { + seLinuxTranslator := util.NewSELinuxLabelTranslator() vm := &volumeManager{ kubeClient: kubeClient, volumePluginMgr: volumePluginMgr, - desiredStateOfWorld: cache.NewDesiredStateOfWorld(volumePluginMgr), + desiredStateOfWorld: cache.NewDesiredStateOfWorld(volumePluginMgr, seLinuxTranslator), actualStateOfWorld: cache.NewActualStateOfWorld(nodeName, volumePluginMgr), operationExecutor: operationexecutor.NewOperationExecutor(operationexecutor.NewOperationGenerator( kubeClient, @@ -533,7 +537,7 @@ func filterUnmountedVolumes(mountedVolumes sets.String, expectedVolumes []string // getExpectedVolumes returns a list of volumes that must be mounted in order to // consider the volume setup step for this pod satisfied. func getExpectedVolumes(pod *v1.Pod) []string { - mounts, devices := util.GetPodVolumeNames(pod) + mounts, devices, _ := util.GetPodVolumeNames(pod) return mounts.Union(devices).UnsortedList() } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/version.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/version.go index f56327273cd..80e9442f8ce 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/version.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubelet/winstats/version.go @@ -24,7 +24,7 @@ import ( "golang.org/x/sys/windows/registry" ) -//OSInfo is a convenience class for retrieving Windows OS information +// OSInfo is a convenience class for retrieving Windows OS information type OSInfo struct { BuildNumber, ProductName string MajorVersion, MinorVersion, UBR uint64 @@ -75,12 +75,12 @@ func GetOSInfo() (*OSInfo, error) { }, nil } -//GetPatchVersion returns full OS version with patch +// GetPatchVersion returns full OS version with patch func (o *OSInfo) GetPatchVersion() string { return fmt.Sprintf("%d.%d.%s.%d", o.MajorVersion, o.MinorVersion, o.BuildNumber, o.UBR) } -//GetBuild returns OS version upto build number +// GetBuild returns OS version upto build number func (o *OSInfo) GetBuild() string { return fmt.Sprintf("%d.%d.%s", o.MajorVersion, o.MinorVersion, o.BuildNumber) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go index 8c0e5e0d414..ffc625b331e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/kubemark/hollow_kubelet.go @@ -44,7 +44,6 @@ import ( "k8s.io/kubernetes/pkg/volume/downwardapi" "k8s.io/kubernetes/pkg/volume/emptydir" "k8s.io/kubernetes/pkg/volume/fc" - "k8s.io/kubernetes/pkg/volume/flocker" "k8s.io/kubernetes/pkg/volume/git_repo" "k8s.io/kubernetes/pkg/volume/glusterfs" "k8s.io/kubernetes/pkg/volume/hostpath" @@ -53,10 +52,8 @@ import ( "k8s.io/kubernetes/pkg/volume/nfs" "k8s.io/kubernetes/pkg/volume/portworx" "k8s.io/kubernetes/pkg/volume/projected" - "k8s.io/kubernetes/pkg/volume/quobyte" "k8s.io/kubernetes/pkg/volume/rbd" "k8s.io/kubernetes/pkg/volume/secret" - "k8s.io/kubernetes/pkg/volume/storageos" "k8s.io/kubernetes/pkg/volume/util/hostutil" "k8s.io/kubernetes/pkg/volume/util/subpath" "k8s.io/kubernetes/test/utils" @@ -78,16 +75,13 @@ func volumePlugins() []volume.VolumePlugin { allPlugins = append(allPlugins, iscsi.ProbeVolumePlugins()...) allPlugins = append(allPlugins, glusterfs.ProbeVolumePlugins()...) allPlugins = append(allPlugins, rbd.ProbeVolumePlugins()...) - allPlugins = append(allPlugins, quobyte.ProbeVolumePlugins()...) allPlugins = append(allPlugins, cephfs.ProbeVolumePlugins()...) allPlugins = append(allPlugins, downwardapi.ProbeVolumePlugins()...) allPlugins = append(allPlugins, fc.ProbeVolumePlugins()...) - allPlugins = append(allPlugins, flocker.ProbeVolumePlugins()...) allPlugins = append(allPlugins, configmap.ProbeVolumePlugins()...) allPlugins = append(allPlugins, projected.ProbeVolumePlugins()...) allPlugins = append(allPlugins, portworx.ProbeVolumePlugins()...) allPlugins = append(allPlugins, local.ProbeVolumePlugins()...) - allPlugins = append(allPlugins, storageos.ProbeVolumePlugins()...) allPlugins = append(allPlugins, csi.ProbeVolumePlugins()...) return allPlugins } @@ -210,6 +204,7 @@ func GetHollowKubeletConfig(opt *HollowKubletOptions) (*options.KubeletFlags, *k c.ProtectKernelDefaults = false c.RegisterWithTaints = opt.RegisterWithTaints c.RegisterNode = true + c.LocalStorageCapacityIsolation = true return f, c } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/grpc/grpc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/grpc/grpc.go index b7720dd7793..09a8064dae5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/grpc/grpc.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/grpc/grpc.go @@ -24,6 +24,7 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/credentials/insecure" grpchealth "google.golang.org/grpc/health/grpc_health_v1" "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" @@ -55,7 +56,7 @@ func (p grpcProber) Probe(host, service string, port int, timeout time.Duration) opts := []grpc.DialOption{ grpc.WithUserAgent(fmt.Sprintf("kube-probe/%s.%s", v.Major, v.Minor)), grpc.WithBlock(), - grpc.WithInsecure(), //credentials are currently not supported + grpc.WithTransportCredentials(insecure.NewCredentials()), //credentials are currently not supported } ctx, cancel := context.WithTimeout(context.Background(), timeout) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/http.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/http.go index c44f235b169..890f14f9f7d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/http.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/probe/http/http.go @@ -38,7 +38,8 @@ const ( // New creates Prober that will skip TLS verification while probing. // followNonLocalRedirects configures whether the prober should follow redirects to a different hostname. -// If disabled, redirects to other hosts will trigger a warning result. +// +// If disabled, redirects to other hosts will trigger a warning result. func New(followNonLocalRedirects bool) Prober { tlsConfig := &tls.Config{InsecureSkipVerify: true} return NewWithTLSConfig(tlsConfig, followNonLocalRedirects) @@ -46,7 +47,8 @@ func New(followNonLocalRedirects bool) Prober { // NewWithTLSConfig takes tls config as parameter. // followNonLocalRedirects configures whether the prober should follow redirects to a different hostname. -// If disabled, redirects to other hosts will trigger a warning result. +// +// If disabled, redirects to other hosts will trigger a warning result. func NewWithTLSConfig(config *tls.Config, followNonLocalRedirects bool) Prober { // We do not want the probe use node's local proxy set. transport := utilnet.SetTransportDefaults( diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/config/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/config/validation/validation.go index aacc00cfb4e..c3a4da6b4f7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/config/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/apis/config/validation/validation.go @@ -211,7 +211,7 @@ func validateProxyModeWindows(mode kubeproxyconfig.ProxyMode, fldPath *field.Pat return nil } - errMsg := fmt.Sprintf("must be %s or blank (blank means the most-available proxy [currently userspace])", strings.Join(validModes.List(), ",")) + errMsg := fmt.Sprintf("must be %s or blank (blank means the most-available proxy [currently userspace(will be 'kernelspace' in a future release)])", strings.Join(validModes.List(), ",")) return field.ErrorList{field.Invalid(fldPath.Child("ProxyMode"), string(mode), errMsg)} } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/endpoints.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/endpoints.go index ee8e778fe0e..1969fb4b21f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/endpoints.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/endpoints.go @@ -202,8 +202,10 @@ func NewEndpointChangeTracker(hostname string, makeEndpointInfo makeEndpointFunc // if items changed, otherwise return false. Update can be used to add/update/delete items of EndpointsChangeMap. For example, // Add item // - pass as the pair. +// // Update item // - pass as the pair. +// // Delete item // - pass as the pair. func (ect *EndpointChangeTracker) Update(previous, current *v1.Endpoints) bool { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go index c8d133c180a..a5c9f695639 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/iptables/proxier.go @@ -38,11 +38,9 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/tools/events" utilsysctl "k8s.io/component-helpers/node/util/sysctl" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/proxy" "k8s.io/kubernetes/pkg/proxy/healthcheck" "k8s.io/kubernetes/pkg/proxy/metaproxier" @@ -72,14 +70,19 @@ const ( // kubeMarkMasqChain is the mark-for-masquerade chain kubeMarkMasqChain utiliptables.Chain = "KUBE-MARK-MASQ" - // kubeMarkDropChain is the mark-for-drop chain - kubeMarkDropChain utiliptables.Chain = "KUBE-MARK-DROP" - // the kubernetes forward chain kubeForwardChain utiliptables.Chain = "KUBE-FORWARD" + // kubeProxyFirewallChain is the kube-proxy firewall chain + kubeProxyFirewallChain utiliptables.Chain = "KUBE-PROXY-FIREWALL" + // kube proxy canary chain is used for monitoring rule reload kubeProxyCanaryChain utiliptables.Chain = "KUBE-PROXY-CANARY" + + // largeClusterEndpointsThreshold is the number of endpoints at which + // we switch into "large cluster mode" and optimize for iptables + // performance over iptables debuggability + largeClusterEndpointsThreshold = 1000 ) // KernelCompatTester tests whether the required kernel capabilities are @@ -191,6 +194,7 @@ type Proxier struct { initialized int32 syncRunner *async.BoundedFrequencyRunner // governs calls to syncProxyRules syncPeriod time.Duration + lastIPTablesCleanup time.Time // These are effectively const and do not need the mutex to be held. iptables utiliptables.Interface @@ -219,11 +223,10 @@ type Proxier struct { natChains utilproxy.LineBuffer natRules utilproxy.LineBuffer - // endpointChainsNumber is the total amount of endpointChains across all - // services that we will generate (it is computed at the beginning of - // syncProxyRules method). If that is large enough, comments in some - // iptable rules are dropped to improve performance. - endpointChainsNumber int + // largeClusterMode is set at the beginning of syncProxyRules if we are + // going to end up outputting "lots" of iptables rules and so we need to + // optimize for performance over debuggability. + largeClusterMode bool // Values are as a parameter to select the interfaces where nodeport works. nodePortAddresses []string @@ -383,18 +386,14 @@ var iptablesJumpChains = []iptablesJumpChain{ {utiliptables.TableFilter, kubeServicesChain, utiliptables.ChainForward, "kubernetes service portals", []string{"-m", "conntrack", "--ctstate", "NEW"}}, {utiliptables.TableFilter, kubeServicesChain, utiliptables.ChainOutput, "kubernetes service portals", []string{"-m", "conntrack", "--ctstate", "NEW"}}, {utiliptables.TableFilter, kubeForwardChain, utiliptables.ChainForward, "kubernetes forwarding rules", nil}, + {utiliptables.TableFilter, kubeProxyFirewallChain, utiliptables.ChainInput, "kubernetes load balancer firewall", []string{"-m", "conntrack", "--ctstate", "NEW"}}, + {utiliptables.TableFilter, kubeProxyFirewallChain, utiliptables.ChainOutput, "kubernetes load balancer firewall", []string{"-m", "conntrack", "--ctstate", "NEW"}}, + {utiliptables.TableFilter, kubeProxyFirewallChain, utiliptables.ChainForward, "kubernetes load balancer firewall", []string{"-m", "conntrack", "--ctstate", "NEW"}}, {utiliptables.TableNAT, kubeServicesChain, utiliptables.ChainOutput, "kubernetes service portals", nil}, {utiliptables.TableNAT, kubeServicesChain, utiliptables.ChainPrerouting, "kubernetes service portals", nil}, {utiliptables.TableNAT, kubePostroutingChain, utiliptables.ChainPostrouting, "kubernetes postrouting rules", nil}, } -var iptablesEnsureChains = []struct { - table utiliptables.Table - chain utiliptables.Chain -}{ - {utiliptables.TableNAT, kubeMarkDropChain}, -} - var iptablesCleanupOnlyChains = []iptablesJumpChain{ // Present in kube 1.13 - 1.19. Removed by #95252 in favor of adding reject rules for incoming/forwarding packets to kubeExternalServicesChain {utiliptables.TableFilter, kubeServicesChain, utiliptables.ChainInput, "kubernetes service portals", []string{"-m", "conntrack", "--ctstate", "NEW"}}, @@ -423,7 +422,7 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) { klog.ErrorS(err, "Failed to execute iptables-save", "table", utiliptables.TableNAT) encounteredError = true } else { - existingNATChains := utiliptables.GetChainLines(utiliptables.TableNAT, iptablesData.Bytes()) + existingNATChains := utiliptables.GetChainsFromTable(iptablesData.Bytes()) natChains := &utilproxy.LineBuffer{} natRules := &utilproxy.LineBuffer{} natChains.Write("*nat") @@ -431,16 +430,16 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) { for _, chain := range []utiliptables.Chain{kubeServicesChain, kubeNodePortsChain, kubePostroutingChain} { if _, found := existingNATChains[chain]; found { chainString := string(chain) - natChains.WriteBytes(existingNATChains[chain]) // flush - natRules.Write("-X", chainString) // delete + natChains.Write(utiliptables.MakeChainLine(chain)) // flush + natRules.Write("-X", chainString) // delete } } // Hunt for service and endpoint chains. for chain := range existingNATChains { chainString := string(chain) if isServiceChainName(chainString) { - natChains.WriteBytes(existingNATChains[chain]) // flush - natRules.Write("-X", chainString) // delete + natChains.Write(utiliptables.MakeChainLine(chain)) // flush + natRules.Write("-X", chainString) // delete } } natRules.Write("COMMIT") @@ -460,14 +459,14 @@ func CleanupLeftovers(ipt utiliptables.Interface) (encounteredError bool) { klog.ErrorS(err, "Failed to execute iptables-save", "table", utiliptables.TableFilter) encounteredError = true } else { - existingFilterChains := utiliptables.GetChainLines(utiliptables.TableFilter, iptablesData.Bytes()) + existingFilterChains := utiliptables.GetChainsFromTable(iptablesData.Bytes()) filterChains := &utilproxy.LineBuffer{} filterRules := &utilproxy.LineBuffer{} filterChains.Write("*filter") for _, chain := range []utiliptables.Chain{kubeServicesChain, kubeExternalServicesChain, kubeForwardChain, kubeNodePortsChain} { if _, found := existingFilterChains[chain]; found { chainString := string(chain) - filterChains.WriteBytes(existingFilterChains[chain]) + filterChains.Write(utiliptables.MakeChainLine(chain)) filterRules.Write("-X", chainString) } } @@ -628,7 +627,7 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) { proxier.mu.Unlock() klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels) - proxier.syncProxyRules() + proxier.Sync() } // OnNodeUpdate is called whenever modification of an existing @@ -652,7 +651,7 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) { proxier.mu.Unlock() klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels) - proxier.syncProxyRules() + proxier.Sync() } // OnNodeDelete is called whenever deletion of an existing node @@ -667,7 +666,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) { proxier.nodeLabels = nil proxier.mu.Unlock() - proxier.syncProxyRules() + proxier.Sync() } // OnNodeSynced is called once all the initial event handlers were @@ -787,14 +786,12 @@ func (proxier *Proxier) deleteEndpointConnections(connectionMap []proxy.ServiceE } } -const endpointChainsNumberThreshold = 1000 - // Assumes proxier.mu is held. func (proxier *Proxier) appendServiceCommentLocked(args []string, svcName string) []string { // Not printing these comments, can reduce size of iptables (in case of large // number of endpoints) even by 40%+. So if total number of endpoint chains // is large enough, we simply drop those comments. - if proxier.endpointChainsNumber > endpointChainsNumberThreshold { + if proxier.largeClusterMode { return args } return append(args, "-m", "comment", "--comment", svcName) @@ -876,39 +873,10 @@ func (proxier *Proxier) syncProxyRules() { } } - // ensure KUBE-MARK-DROP chain exist but do not change any rules - for _, ch := range iptablesEnsureChains { - if _, err := proxier.iptables.EnsureChain(ch.table, ch.chain); err != nil { - klog.ErrorS(err, "Failed to ensure chain exists", "table", ch.table, "chain", ch.chain) - return - } - } - // // Below this point we will not return until we try to write the iptables rules. // - // Get iptables-save output so we can check for existing chains and rules. - // This will be a map of chain name to chain with rules as stored in iptables-save/iptables-restore - existingFilterChains := make(map[utiliptables.Chain][]byte) - proxier.existingFilterChainsData.Reset() - err := proxier.iptables.SaveInto(utiliptables.TableFilter, proxier.existingFilterChainsData) - if err != nil { // if we failed to get any rules - klog.ErrorS(err, "Failed to execute iptables-save, syncing all rules") - } else { // otherwise parse the output - existingFilterChains = utiliptables.GetChainLines(utiliptables.TableFilter, proxier.existingFilterChainsData.Bytes()) - } - - // IMPORTANT: existingNATChains may share memory with proxier.iptablesData. - existingNATChains := make(map[utiliptables.Chain][]byte) - proxier.iptablesData.Reset() - err = proxier.iptables.SaveInto(utiliptables.TableNAT, proxier.iptablesData) - if err != nil { // if we failed to get any rules - klog.ErrorS(err, "Failed to execute iptables-save, syncing all rules") - } else { // otherwise parse the output - existingNATChains = utiliptables.GetChainLines(utiliptables.TableNAT, proxier.iptablesData.Bytes()) - } - // Reset all buffers used later. // This is to avoid memory reallocations and thus improve performance. proxier.filterChains.Reset() @@ -916,21 +884,12 @@ func (proxier *Proxier) syncProxyRules() { proxier.natChains.Reset() proxier.natRules.Reset() - // Make sure we keep stats for the top-level chains, if they existed - // (which most should have because we created them above). - for _, chainName := range []utiliptables.Chain{kubeServicesChain, kubeExternalServicesChain, kubeForwardChain, kubeNodePortsChain} { - if chain, ok := existingFilterChains[chainName]; ok { - proxier.filterChains.WriteBytes(chain) - } else { - proxier.filterChains.Write(utiliptables.MakeChainLine(chainName)) - } + // Write chain lines for all the "top-level" chains we'll be filling in + for _, chainName := range []utiliptables.Chain{kubeServicesChain, kubeExternalServicesChain, kubeForwardChain, kubeNodePortsChain, kubeProxyFirewallChain} { + proxier.filterChains.Write(utiliptables.MakeChainLine(chainName)) } for _, chainName := range []utiliptables.Chain{kubeServicesChain, kubeNodePortsChain, kubePostroutingChain, kubeMarkMasqChain} { - if chain, ok := existingNATChains[chainName]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(chainName)) - } + proxier.natChains.Write(utiliptables.MakeChainLine(chainName)) } // Install the kubernetes-specific postrouting rules. We use a whole chain for @@ -974,11 +933,13 @@ func (proxier *Proxier) syncProxyRules() { // is just for efficiency, not correctness. args := make([]string, 64) - // Compute total number of endpoint chains across all services. - proxier.endpointChainsNumber = 0 + // Compute total number of endpoint chains across all services to get + // a sense of how big the cluster is. + totalEndpoints := 0 for svcName := range proxier.serviceMap { - proxier.endpointChainsNumber += len(proxier.endpointsMap[svcName]) + totalEndpoints += len(proxier.endpointsMap[svcName]) } + proxier.largeClusterMode = (totalEndpoints > largeClusterEndpointsThreshold) nodeAddresses, err := utilproxy.GetNodeAddresses(proxier.nodePortAddresses, proxier.networkInterfacer) if err != nil { @@ -1010,189 +971,137 @@ func (proxier *Proxier) syncProxyRules() { protocol := strings.ToLower(string(svcInfo.Protocol())) svcPortNameString := svcInfo.nameString - allEndpoints := proxier.endpointsMap[svcName] - // Figure out the endpoints for Cluster and Local traffic policy. // allLocallyReachableEndpoints is the set of all endpoints that can be routed to // from this node, given the service's traffic policies. hasEndpoints is true // if the service has any usable endpoints on any node, not just this one. + allEndpoints := proxier.endpointsMap[svcName] clusterEndpoints, localEndpoints, allLocallyReachableEndpoints, hasEndpoints := proxy.CategorizeEndpoints(allEndpoints, svcInfo, proxier.nodeLabels) - // Generate the per-endpoint chains. + // Note the endpoint chains that will be used for _, ep := range allLocallyReachableEndpoints { - epInfo, ok := ep.(*endpointsInfo) - if !ok { - klog.ErrorS(err, "Failed to cast endpointsInfo", "endpointsInfo", ep) - continue - } - - endpointChain := epInfo.ChainName - - // Create the endpoint chain, retaining counters if possible. - if chain, ok := existingNATChains[endpointChain]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(endpointChain)) + if epInfo, ok := ep.(*endpointsInfo); ok { + activeNATChains[epInfo.ChainName] = true } - activeNATChains[endpointChain] = true - - args = append(args[:0], "-A", string(endpointChain)) - args = proxier.appendServiceCommentLocked(args, svcPortNameString) - // Handle traffic that loops back to the originator with SNAT. - proxier.natRules.Write( - args, - "-s", epInfo.IP(), - "-j", string(kubeMarkMasqChain)) - // Update client-affinity lists. - if svcInfo.SessionAffinityType() == v1.ServiceAffinityClientIP { - args = append(args, "-m", "recent", "--name", string(endpointChain), "--set") - } - // DNAT to final destination. - args = append(args, "-m", protocol, "-p", protocol, "-j", "DNAT", "--to-destination", epInfo.Endpoint) - proxier.natRules.Write(args) } - // These chains represent the sets of endpoints to use when internal or - // external traffic policy is "Cluster" vs "Local". + // clusterPolicyChain contains the endpoints used with "Cluster" traffic policy clusterPolicyChain := svcInfo.clusterPolicyChainName + usesClusterPolicyChain := len(clusterEndpoints) > 0 && svcInfo.UsesClusterEndpoints() + if usesClusterPolicyChain { + activeNATChains[clusterPolicyChain] = true + } + + // localPolicyChain contains the endpoints used with "Local" traffic policy localPolicyChain := svcInfo.localPolicyChainName + usesLocalPolicyChain := len(localEndpoints) > 0 && svcInfo.UsesLocalEndpoints() + if usesLocalPolicyChain { + activeNATChains[localPolicyChain] = true + } - // These chains designate which policy chain to use for internal- and - // external-destination traffic. + // internalPolicyChain is the chain containing the endpoints for + // "internal" (ClusterIP) traffic. internalTrafficChain is the chain that + // internal traffic is routed to (which is always the same as + // internalPolicyChain). hasInternalEndpoints is true if we should + // generate rules pointing to internalTrafficChain, or false if there are + // no available internal endpoints. internalPolicyChain := clusterPolicyChain - externalPolicyChain := clusterPolicyChain + hasInternalEndpoints := hasEndpoints if svcInfo.InternalPolicyLocal() { internalPolicyChain = localPolicyChain + if len(localEndpoints) == 0 { + hasInternalEndpoints = false + } } + internalTrafficChain := internalPolicyChain + + // Similarly, externalPolicyChain is the chain containing the endpoints + // for "external" (NodePort, LoadBalancer, and ExternalIP) traffic. + // externalTrafficChain is the chain that external traffic is routed to + // (which is always the service's "EXT" chain). hasExternalEndpoints is + // true if there are endpoints that will be reached by external traffic. + // (But we may still have to generate externalTrafficChain even if there + // are no external endpoints, to ensure that the short-circuit rules for + // local traffic are set up.) + externalPolicyChain := clusterPolicyChain + hasExternalEndpoints := hasEndpoints if svcInfo.ExternalPolicyLocal() { externalPolicyChain = localPolicyChain + if len(localEndpoints) == 0 { + hasExternalEndpoints = false + } } - - // These chains are where *ALL* rules which match traffic that is - // service-destined should jump. ClusterIP traffic is considered - // "internal" while NodePort, LoadBalancer, and ExternalIPs traffic is - // considered "external". - internalTrafficChain := internalPolicyChain externalTrafficChain := svcInfo.externalChainName // eventually jumps to externalPolicyChain - // Declare the clusterPolicyChain if needed. - if hasEndpoints && svcInfo.UsesClusterEndpoints() { - // Create the Cluster traffic policy chain, retaining counters if possible. - if chain, ok := existingNATChains[clusterPolicyChain]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(clusterPolicyChain)) - } - activeNATChains[clusterPolicyChain] = true + // usesExternalTrafficChain is based on hasEndpoints, not hasExternalEndpoints, + // because we need the local-traffic-short-circuiting rules even when there + // are no externally-usable endpoints. + usesExternalTrafficChain := hasEndpoints && svcInfo.ExternallyAccessible() + if usesExternalTrafficChain { + activeNATChains[externalTrafficChain] = true } - // Declare the localPolicyChain if needed. - if hasEndpoints && svcInfo.UsesLocalEndpoints() { - if chain, ok := existingNATChains[localPolicyChain]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(localPolicyChain)) - } - activeNATChains[localPolicyChain] = true + // Traffic to LoadBalancer IPs can go directly to externalTrafficChain + // unless LoadBalancerSourceRanges is in use in which case we will + // create a firewall chain. + loadBalancerTrafficChain := externalTrafficChain + fwChain := svcInfo.firewallChainName + usesFWChain := hasEndpoints && len(svcInfo.LoadBalancerIPStrings()) > 0 && len(svcInfo.LoadBalancerSourceRanges()) > 0 + if usesFWChain { + activeNATChains[fwChain] = true + loadBalancerTrafficChain = fwChain } - // If any "external" destinations are enabled, set up external traffic - // handling. All captured traffic for all external destinations should - // jump to externalTrafficChain, which will handle some special-cases - // and then jump to externalPolicyChain. - if hasEndpoints && svcInfo.ExternallyAccessible() { - if chain, ok := existingNATChains[externalTrafficChain]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(externalTrafficChain)) + var internalTrafficFilterTarget, internalTrafficFilterComment string + var externalTrafficFilterTarget, externalTrafficFilterComment string + if !hasEndpoints { + // The service has no endpoints at all; hasInternalEndpoints and + // hasExternalEndpoints will also be false, and we will not + // generate any chains in the "nat" table for the service; only + // rules in the "filter" table rejecting incoming packets for + // the service's IPs. + internalTrafficFilterTarget = "REJECT" + internalTrafficFilterComment = fmt.Sprintf(`"%s has no endpoints"`, svcPortNameString) + externalTrafficFilterTarget = "REJECT" + externalTrafficFilterComment = internalTrafficFilterComment + } else { + if !hasInternalEndpoints { + // The internalTrafficPolicy is "Local" but there are no local + // endpoints. Traffic to the clusterIP will be dropped, but + // external traffic may still be accepted. + internalTrafficFilterTarget = "DROP" + internalTrafficFilterComment = fmt.Sprintf(`"%s has no local endpoints"`, svcPortNameString) + serviceNoLocalEndpointsTotalInternal++ } - activeNATChains[externalTrafficChain] = true - - if !svcInfo.ExternalPolicyLocal() { - // If we are using non-local endpoints we need to masquerade, - // in case we cross nodes. - proxier.natRules.Write( - "-A", string(externalTrafficChain), - "-m", "comment", "--comment", fmt.Sprintf(`"masquerade traffic for %s external destinations"`, svcPortNameString), - "-j", string(kubeMarkMasqChain)) - } else { - // If we are only using same-node endpoints, we can retain the - // source IP in most cases. - - if proxier.localDetector.IsImplemented() { - // Treat all locally-originated pod -> external destination - // traffic as a special-case. It is subject to neither - // form of traffic policy, which simulates going up-and-out - // to an external load-balancer and coming back in. - proxier.natRules.Write( - "-A", string(externalTrafficChain), - "-m", "comment", "--comment", fmt.Sprintf(`"pod traffic for %s external destinations"`, svcPortNameString), - proxier.localDetector.IfLocal(), - "-j", string(clusterPolicyChain)) - } - - // Locally originated traffic (not a pod, but the host node) - // still needs masquerade because the LBIP itself is a local - // address, so that will be the chosen source IP. - proxier.natRules.Write( - "-A", string(externalTrafficChain), - "-m", "comment", "--comment", fmt.Sprintf(`"masquerade LOCAL traffic for %s external destinations"`, svcPortNameString), - "-m", "addrtype", "--src-type", "LOCAL", - "-j", string(kubeMarkMasqChain)) - - // Redirect all src-type=LOCAL -> external destination to the - // policy=cluster chain. This allows traffic originating - // from the host to be redirected to the service correctly. - proxier.natRules.Write( - "-A", string(externalTrafficChain), - "-m", "comment", "--comment", fmt.Sprintf(`"route LOCAL traffic for %s external destinations"`, svcPortNameString), - "-m", "addrtype", "--src-type", "LOCAL", - "-j", string(clusterPolicyChain)) + if !hasExternalEndpoints { + // The externalTrafficPolicy is "Local" but there are no + // local endpoints. Traffic to "external" IPs from outside + // the cluster will be dropped, but traffic from inside + // the cluster may still be accepted. + externalTrafficFilterTarget = "DROP" + externalTrafficFilterComment = fmt.Sprintf(`"%s has no local endpoints"`, svcPortNameString) + serviceNoLocalEndpointsTotalExternal++ } - - // Anything else falls thru to the appropriate policy chain. - proxier.natRules.Write( - "-A", string(externalTrafficChain), - "-j", string(externalPolicyChain)) } // Capture the clusterIP. - if hasEndpoints { - args = append(args[:0], + if hasInternalEndpoints { + proxier.natRules.Write( + "-A", string(kubeServicesChain), "-m", "comment", "--comment", fmt.Sprintf(`"%s cluster IP"`, svcPortNameString), "-m", protocol, "-p", protocol, "-d", svcInfo.ClusterIP().String(), "--dport", strconv.Itoa(svcInfo.Port()), - ) - if proxier.masqueradeAll { - proxier.natRules.Write( - "-A", string(internalTrafficChain), - args, - "-j", string(kubeMarkMasqChain)) - } else if proxier.localDetector.IsImplemented() { - // This masquerades off-cluster traffic to a service VIP. The idea - // is that you can establish a static route for your Service range, - // routing to any node, and that node will bridge into the Service - // for you. Since that might bounce off-node, we masquerade here. - proxier.natRules.Write( - "-A", string(internalTrafficChain), - args, - proxier.localDetector.IfNotLocal(), - "-j", string(kubeMarkMasqChain)) - } - proxier.natRules.Write( - "-A", string(kubeServicesChain), - args, "-j", string(internalTrafficChain)) } else { // No endpoints. proxier.filterRules.Write( "-A", string(kubeServicesChain), - "-m", "comment", "--comment", fmt.Sprintf(`"%s has no endpoints"`, svcPortNameString), + "-m", "comment", "--comment", internalTrafficFilterComment, "-m", protocol, "-p", protocol, "-d", svcInfo.ClusterIP().String(), "--dport", strconv.Itoa(svcInfo.Port()), - "-j", "REJECT", + "-j", internalTrafficFilterTarget, ) } @@ -1208,103 +1117,56 @@ func (proxier *Proxier) syncProxyRules() { "-d", externalIP, "--dport", strconv.Itoa(svcInfo.Port()), "-j", string(externalTrafficChain)) - - } else { - // No endpoints. + } + if !hasExternalEndpoints { + // Either no endpoints at all (REJECT) or no endpoints for + // external traffic (DROP anything that didn't get + // short-circuited by the EXT chain.) proxier.filterRules.Write( "-A", string(kubeExternalServicesChain), - "-m", "comment", "--comment", fmt.Sprintf(`"%s has no endpoints"`, svcPortNameString), + "-m", "comment", "--comment", externalTrafficFilterComment, "-m", protocol, "-p", protocol, "-d", externalIP, "--dport", strconv.Itoa(svcInfo.Port()), - "-j", "REJECT", + "-j", externalTrafficFilterTarget, ) } } // Capture load-balancer ingress. - if len(svcInfo.LoadBalancerIPStrings()) > 0 && hasEndpoints { - // Normally we send LB matches to the "external destination" chain. - nextChain := externalTrafficChain - - // If the service specifies any LB source ranges, we need to insert - // a firewall chain first. - if len(svcInfo.LoadBalancerSourceRanges()) > 0 { - fwChain := svcInfo.firewallChainName - - // Declare the service firewall chain. - if chain, ok := existingNATChains[fwChain]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(fwChain)) - } - activeNATChains[fwChain] = true - - // The firewall chain will jump to the "external destination" - // chain. - nextChain = svcInfo.firewallChainName - - // The service firewall rules are created based on the - // loadBalancerSourceRanges field. This only works for - // VIP-like loadbalancers that preserve source IPs. For - // loadbalancers which direct traffic to service NodePort, the - // firewall rules will not apply. - args = append(args[:0], - "-A", string(nextChain), - "-m", "comment", "--comment", fmt.Sprintf(`"%s loadbalancer IP"`, svcPortNameString), - ) - - // firewall filter based on each source range - allowFromNode := false - for _, src := range svcInfo.LoadBalancerSourceRanges() { - proxier.natRules.Write(args, "-s", src, "-j", string(externalTrafficChain)) - _, cidr, err := netutils.ParseCIDRSloppy(src) - if err != nil { - klog.ErrorS(err, "Error parsing CIDR in LoadBalancerSourceRanges, dropping it", "cidr", cidr) - } else if cidr.Contains(proxier.nodeIP) { - allowFromNode = true - } - } - // For VIP-like LBs, the VIP is often added as a local - // address (via an IP route rule). In that case, a request - // from a node to the VIP will not hit the loadbalancer but - // will loop back with the source IP set to the VIP. We - // need the following rules to allow requests from this node. - if allowFromNode { - for _, lbip := range svcInfo.LoadBalancerIPStrings() { - proxier.natRules.Write( - args, - "-s", lbip, - "-j", string(externalTrafficChain)) - } - } - - // If the packet was able to reach the end of firewall chain, - // then it did not get DNATed. It means the packet cannot go - // thru the firewall, then mark it for DROP. - proxier.natRules.Write(args, "-j", string(kubeMarkDropChain)) - } - - for _, lbip := range svcInfo.LoadBalancerIPStrings() { + for _, lbip := range svcInfo.LoadBalancerIPStrings() { + if hasEndpoints { proxier.natRules.Write( "-A", string(kubeServicesChain), "-m", "comment", "--comment", fmt.Sprintf(`"%s loadbalancer IP"`, svcPortNameString), "-m", protocol, "-p", protocol, "-d", lbip, "--dport", strconv.Itoa(svcInfo.Port()), - "-j", string(nextChain)) + "-j", string(loadBalancerTrafficChain)) } - } else { - // No endpoints. + if usesFWChain { + proxier.filterRules.Write( + "-A", string(kubeProxyFirewallChain), + "-m", "comment", "--comment", fmt.Sprintf(`"%s traffic not accepted by %s"`, svcPortNameString, svcInfo.firewallChainName), + "-m", protocol, "-p", protocol, + "-d", lbip, + "--dport", strconv.Itoa(svcInfo.Port()), + "-j", "DROP") + } + } + if !hasExternalEndpoints { + // Either no endpoints at all (REJECT) or no endpoints for + // external traffic (DROP anything that didn't get short-circuited + // by the EXT chain.) for _, lbip := range svcInfo.LoadBalancerIPStrings() { proxier.filterRules.Write( "-A", string(kubeExternalServicesChain), - "-m", "comment", "--comment", fmt.Sprintf(`"%s has no endpoints"`, svcPortNameString), + "-m", "comment", "--comment", externalTrafficFilterComment, "-m", protocol, "-p", protocol, "-d", lbip, "--dport", strconv.Itoa(svcInfo.Port()), - "-j", "REJECT", + "-j", externalTrafficFilterTarget, ) } } @@ -1321,15 +1183,18 @@ func (proxier *Proxier) syncProxyRules() { "-m", protocol, "-p", protocol, "--dport", strconv.Itoa(svcInfo.NodePort()), "-j", string(externalTrafficChain)) - } else { - // No endpoints. + } + if !hasExternalEndpoints { + // Either no endpoints at all (REJECT) or no endpoints for + // external traffic (DROP anything that didn't get + // short-circuited by the EXT chain.) proxier.filterRules.Write( "-A", string(kubeExternalServicesChain), - "-m", "comment", "--comment", fmt.Sprintf(`"%s has no endpoints"`, svcPortNameString), + "-m", "comment", "--comment", externalTrafficFilterComment, "-m", "addrtype", "--dst-type", "LOCAL", "-m", protocol, "-p", protocol, "--dport", strconv.Itoa(svcInfo.NodePort()), - "-j", "REJECT", + "-j", externalTrafficFilterTarget, ) } } @@ -1347,45 +1212,206 @@ func (proxier *Proxier) syncProxyRules() { ) } - if svcInfo.UsesClusterEndpoints() { - // Write rules jumping from clusterPolicyChain to clusterEndpoints - proxier.writeServiceToEndpointRules(svcPortNameString, svcInfo, clusterPolicyChain, clusterEndpoints, args) + // Set up internal traffic handling. + if hasInternalEndpoints { + args = append(args[:0], + "-m", "comment", "--comment", fmt.Sprintf(`"%s cluster IP"`, svcPortNameString), + "-m", protocol, "-p", protocol, + "-d", svcInfo.ClusterIP().String(), + "--dport", strconv.Itoa(svcInfo.Port()), + ) + if proxier.masqueradeAll { + proxier.natRules.Write( + "-A", string(internalTrafficChain), + args, + "-j", string(kubeMarkMasqChain)) + } else if proxier.localDetector.IsImplemented() { + // This masquerades off-cluster traffic to a service VIP. The + // idea is that you can establish a static route for your + // Service range, routing to any node, and that node will + // bridge into the Service for you. Since that might bounce + // off-node, we masquerade here. + proxier.natRules.Write( + "-A", string(internalTrafficChain), + args, + proxier.localDetector.IfNotLocal(), + "-j", string(kubeMarkMasqChain)) + } } - if svcInfo.UsesLocalEndpoints() { - if len(localEndpoints) != 0 { - // Write rules jumping from localPolicyChain to localEndpointChains - proxier.writeServiceToEndpointRules(svcPortNameString, svcInfo, localPolicyChain, localEndpoints, args) - } else if hasEndpoints { - if svcInfo.InternalPolicyLocal() && utilfeature.DefaultFeatureGate.Enabled(features.ServiceInternalTrafficPolicy) { - serviceNoLocalEndpointsTotalInternal++ - } - if svcInfo.ExternalPolicyLocal() { - serviceNoLocalEndpointsTotalExternal++ + // Set up external traffic handling (if any "external" destinations are + // enabled). All captured traffic for all external destinations should + // jump to externalTrafficChain, which will handle some special cases and + // then jump to externalPolicyChain. + if usesExternalTrafficChain { + proxier.natChains.Write(utiliptables.MakeChainLine(externalTrafficChain)) + + if !svcInfo.ExternalPolicyLocal() { + // If we are using non-local endpoints we need to masquerade, + // in case we cross nodes. + proxier.natRules.Write( + "-A", string(externalTrafficChain), + "-m", "comment", "--comment", fmt.Sprintf(`"masquerade traffic for %s external destinations"`, svcPortNameString), + "-j", string(kubeMarkMasqChain)) + } else { + // If we are only using same-node endpoints, we can retain the + // source IP in most cases. + + if proxier.localDetector.IsImplemented() { + // Treat all locally-originated pod -> external destination + // traffic as a special-case. It is subject to neither + // form of traffic policy, which simulates going up-and-out + // to an external load-balancer and coming back in. + proxier.natRules.Write( + "-A", string(externalTrafficChain), + "-m", "comment", "--comment", fmt.Sprintf(`"pod traffic for %s external destinations"`, svcPortNameString), + proxier.localDetector.IfLocal(), + "-j", string(clusterPolicyChain)) } - // Blackhole all traffic since there are no local endpoints + + // Locally originated traffic (not a pod, but the host node) + // still needs masquerade because the LBIP itself is a local + // address, so that will be the chosen source IP. + proxier.natRules.Write( + "-A", string(externalTrafficChain), + "-m", "comment", "--comment", fmt.Sprintf(`"masquerade LOCAL traffic for %s external destinations"`, svcPortNameString), + "-m", "addrtype", "--src-type", "LOCAL", + "-j", string(kubeMarkMasqChain)) + + // Redirect all src-type=LOCAL -> external destination to the + // policy=cluster chain. This allows traffic originating + // from the host to be redirected to the service correctly. proxier.natRules.Write( - "-A", string(localPolicyChain), - "-m", "comment", "--comment", - fmt.Sprintf(`"%s has no local endpoints"`, svcPortNameString), - "-j", string(kubeMarkDropChain)) + "-A", string(externalTrafficChain), + "-m", "comment", "--comment", fmt.Sprintf(`"route LOCAL traffic for %s external destinations"`, svcPortNameString), + "-m", "addrtype", "--src-type", "LOCAL", + "-j", string(clusterPolicyChain)) + } + + // Anything else falls thru to the appropriate policy chain. + if hasExternalEndpoints { + proxier.natRules.Write( + "-A", string(externalTrafficChain), + "-j", string(externalPolicyChain)) } } - } - // Delete chains no longer in use. - for chain := range existingNATChains { - if !activeNATChains[chain] { - chainString := string(chain) - if !isServiceChainName(chainString) { - // Ignore chains that aren't ours. + // Set up firewall chain, if needed + if usesFWChain { + proxier.natChains.Write(utiliptables.MakeChainLine(fwChain)) + + // The service firewall rules are created based on the + // loadBalancerSourceRanges field. This only works for VIP-like + // loadbalancers that preserve source IPs. For loadbalancers which + // direct traffic to service NodePort, the firewall rules will not + // apply. + args = append(args[:0], + "-A", string(fwChain), + "-m", "comment", "--comment", fmt.Sprintf(`"%s loadbalancer IP"`, svcPortNameString), + ) + + // firewall filter based on each source range + allowFromNode := false + for _, src := range svcInfo.LoadBalancerSourceRanges() { + proxier.natRules.Write(args, "-s", src, "-j", string(externalTrafficChain)) + _, cidr, err := netutils.ParseCIDRSloppy(src) + if err != nil { + klog.ErrorS(err, "Error parsing CIDR in LoadBalancerSourceRanges, dropping it", "cidr", cidr) + } else if cidr.Contains(proxier.nodeIP) { + allowFromNode = true + } + } + // For VIP-like LBs, the VIP is often added as a local + // address (via an IP route rule). In that case, a request + // from a node to the VIP will not hit the loadbalancer but + // will loop back with the source IP set to the VIP. We + // need the following rules to allow requests from this node. + if allowFromNode { + for _, lbip := range svcInfo.LoadBalancerIPStrings() { + proxier.natRules.Write( + args, + "-s", lbip, + "-j", string(externalTrafficChain)) + } + } + // If the packet was able to reach the end of firewall chain, + // then it did not get DNATed and will be dropped later by the + // corresponding KUBE-PROXY-FIREWALL rule. + } + + // If Cluster policy is in use, create the chain and create rules jumping + // from clusterPolicyChain to the clusterEndpoints + if usesClusterPolicyChain { + proxier.natChains.Write(utiliptables.MakeChainLine(clusterPolicyChain)) + proxier.writeServiceToEndpointRules(svcPortNameString, svcInfo, clusterPolicyChain, clusterEndpoints, args) + } + + // If Local policy is in use, create the chain and create rules jumping + // from localPolicyChain to the localEndpoints + if usesLocalPolicyChain { + proxier.natChains.Write(utiliptables.MakeChainLine(localPolicyChain)) + proxier.writeServiceToEndpointRules(svcPortNameString, svcInfo, localPolicyChain, localEndpoints, args) + } + + // Generate the per-endpoint chains. + for _, ep := range allLocallyReachableEndpoints { + epInfo, ok := ep.(*endpointsInfo) + if !ok { + klog.ErrorS(err, "Failed to cast endpointsInfo", "endpointsInfo", ep) continue } - // We must (as per iptables) write a chain-line for it, which has - // the nice effect of flushing the chain. Then we can remove the - // chain. - proxier.natChains.WriteBytes(existingNATChains[chain]) - proxier.natRules.Write("-X", chainString) + + endpointChain := epInfo.ChainName + + // Create the endpoint chain + proxier.natChains.Write(utiliptables.MakeChainLine(endpointChain)) + activeNATChains[endpointChain] = true + + args = append(args[:0], "-A", string(endpointChain)) + args = proxier.appendServiceCommentLocked(args, svcPortNameString) + // Handle traffic that loops back to the originator with SNAT. + proxier.natRules.Write( + args, + "-s", epInfo.IP(), + "-j", string(kubeMarkMasqChain)) + // Update client-affinity lists. + if svcInfo.SessionAffinityType() == v1.ServiceAffinityClientIP { + args = append(args, "-m", "recent", "--name", string(endpointChain), "--set") + } + // DNAT to final destination. + args = append(args, "-m", protocol, "-p", protocol, "-j", "DNAT", "--to-destination", epInfo.Endpoint) + proxier.natRules.Write(args) + } + } + + // Delete chains no longer in use. Since "iptables-save" can take several seconds + // to run on hosts with lots of iptables rules, we don't bother to do this on + // every sync in large clusters. (Stale chains will not be referenced by any + // active rules, so they're harmless other than taking up memory.) + if !proxier.largeClusterMode || time.Since(proxier.lastIPTablesCleanup) > proxier.syncPeriod { + var existingNATChains map[utiliptables.Chain]struct{} + + proxier.iptablesData.Reset() + if err := proxier.iptables.SaveInto(utiliptables.TableNAT, proxier.iptablesData); err == nil { + existingNATChains = utiliptables.GetChainsFromTable(proxier.iptablesData.Bytes()) + + for chain := range existingNATChains { + if !activeNATChains[chain] { + chainString := string(chain) + if !isServiceChainName(chainString) { + // Ignore chains that aren't ours. + continue + } + // We must (as per iptables) write a chain-line + // for it, which has the nice effect of flushing + // the chain. Then we can remove the chain. + proxier.natChains.Write(utiliptables.MakeChainLine(chain)) + proxier.natRules.Write("-X", chainString) + } + } + proxier.lastIPTablesCleanup = time.Now() + } else { + klog.ErrorS(err, "Failed to execute iptables-save: stale chains will not be deleted") } } @@ -1460,7 +1486,7 @@ func (proxier *Proxier) syncProxyRules() { klog.V(2).InfoS("Reloading service iptables data", "numServices", len(proxier.serviceMap), - "numEndpoints", proxier.endpointChainsNumber, + "numEndpoints", totalEndpoints, "numFilterChains", proxier.filterChains.Lines(), "numFilterRules", proxier.filterRules.Lines(), "numNATChains", proxier.natChains.Lines(), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/ipset.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/ipset.go index 510d4c98fe8..5f2891c5893 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/ipset.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/ipset.go @@ -133,7 +133,7 @@ func (set *IPSet) validateEntry(entry *utilipset.Entry) bool { } func (set *IPSet) isEmpty() bool { - return len(set.activeEntries.UnsortedList()) == 0 + return set.activeEntries.Len() == 0 } func (set *IPSet) getComment() string { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go index 74e2f1c471c..de9348e5ec4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/ipvs/proxier.go @@ -304,11 +304,10 @@ type realIPGetter struct { // NodeIPs returns all LOCAL type IP addresses from host which are // taken as the Node IPs of NodePort service. Filtered addresses: // -// * Loopback addresses -// * Addresses of the "other" family (not handled by this proxier instance) -// * Link-local IPv6 addresses -// * Addresses on the created dummy device `kube-ipvs0` -// +// - Loopback addresses +// - Addresses of the "other" family (not handled by this proxier instance) +// - Link-local IPv6 addresses +// - Addresses on the created dummy device `kube-ipvs0` func (r *realIPGetter) NodeIPs() (ips []net.IP, err error) { nodeAddress, err := r.nl.GetAllLocalAddresses() @@ -955,7 +954,7 @@ func (proxier *Proxier) OnNodeAdd(node *v1.Node) { proxier.mu.Unlock() klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels) - proxier.syncProxyRules() + proxier.Sync() } // OnNodeUpdate is called whenever modification of an existing @@ -978,7 +977,7 @@ func (proxier *Proxier) OnNodeUpdate(oldNode, node *v1.Node) { proxier.mu.Unlock() klog.V(4).InfoS("Updated proxier node labels", "labels", node.Labels) - proxier.syncProxyRules() + proxier.Sync() } // OnNodeDelete is called whenever deletion of an existing node @@ -992,7 +991,7 @@ func (proxier *Proxier) OnNodeDelete(node *v1.Node) { proxier.nodeLabels = nil proxier.mu.Unlock() - proxier.syncProxyRules() + proxier.Sync() } // OnNodeSynced is called once all the initial event handlers were @@ -1839,27 +1838,15 @@ func (proxier *Proxier) acceptIPVSTraffic() { // createAndLinkKubeChain create all kube chains that ipvs proxier need and write basic link. func (proxier *Proxier) createAndLinkKubeChain() { - existingFilterChains := proxier.getExistingChains(proxier.filterChainsData, utiliptables.TableFilter) - existingNATChains := proxier.getExistingChains(proxier.iptablesData, utiliptables.TableNAT) - - // Make sure we keep stats for the top-level chains for _, ch := range iptablesChains { if _, err := proxier.iptables.EnsureChain(ch.table, ch.chain); err != nil { klog.ErrorS(err, "Failed to ensure chain exists", "table", ch.table, "chain", ch.chain) return } if ch.table == utiliptables.TableNAT { - if chain, ok := existingNATChains[ch.chain]; ok { - proxier.natChains.WriteBytes(chain) - } else { - proxier.natChains.Write(utiliptables.MakeChainLine(ch.chain)) - } + proxier.natChains.Write(utiliptables.MakeChainLine(ch.chain)) } else { - if chain, ok := existingFilterChains[ch.chain]; ok { - proxier.filterChains.WriteBytes(chain) - } else { - proxier.filterChains.Write(utiliptables.MakeChainLine(ch.chain)) - } + proxier.filterChains.Write(utiliptables.MakeChainLine(ch.chain)) } } @@ -1872,20 +1859,6 @@ func (proxier *Proxier) createAndLinkKubeChain() { } -// getExistingChains get iptables-save output so we can check for existing chains and rules. -// This will be a map of chain name to chain with rules as stored in iptables-save/iptables-restore -// Result may SHARE memory with contents of buffer. -func (proxier *Proxier) getExistingChains(buffer *bytes.Buffer, table utiliptables.Table) map[utiliptables.Chain][]byte { - buffer.Reset() - err := proxier.iptables.SaveInto(table, buffer) - if err != nil { // if we failed to get any rules - klog.ErrorS(err, "Failed to execute iptables-save, syncing all rules") - } else { // otherwise parse the output - return utiliptables.GetChainLines(table, buffer.Bytes()) - } - return nil -} - // After a UDP or SCTP endpoint has been removed, we must flush any pending conntrack entries to it, or else we // risk sending more traffic to it, all of which will be lost (because UDP). // This assumes the proxier mutex is held diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/service.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/service.go index 17e746fbfac..2346565ed25 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/service.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/service.go @@ -289,8 +289,10 @@ func NewServiceChangeTracker(makeServiceInfo makeServicePortFunc, ipFamily v1.IP // otherwise return false. Update can be used to add/update/delete items of ServiceChangeMap. For example, // Add item // - pass as the pair. +// // Update item // - pass as the pair. +// // Delete item // - pass as the pair. func (sct *ServiceChangeTracker) Update(previous, current *v1.Service) bool { @@ -415,17 +417,18 @@ func (sm *ServiceMap) apply(changes *ServiceChangeTracker, UDPStaleClusterIP set // tell if a service is deleted or updated. // The returned value is one of the arguments of ServiceMap.unmerge(). // ServiceMap A Merge ServiceMap B will do following 2 things: -// * update ServiceMap A. -// * produce a string set which stores all other ServiceMap's ServicePortName.String(). +// - update ServiceMap A. +// - produce a string set which stores all other ServiceMap's ServicePortName.String(). +// // For example, // - A{} // - B{{"ns", "cluster-ip", "http"}: {"172.16.55.10", 1234, "TCP"}} -// - A updated to be {{"ns", "cluster-ip", "http"}: {"172.16.55.10", 1234, "TCP"}} -// - produce string set {"ns/cluster-ip:http"} +// - A updated to be {{"ns", "cluster-ip", "http"}: {"172.16.55.10", 1234, "TCP"}} +// - produce string set {"ns/cluster-ip:http"} // - A{{"ns", "cluster-ip", "http"}: {"172.16.55.10", 345, "UDP"}} // - B{{"ns", "cluster-ip", "http"}: {"172.16.55.10", 1234, "TCP"}} -// - A updated to be {{"ns", "cluster-ip", "http"}: {"172.16.55.10", 1234, "TCP"}} -// - produce string set {"ns/cluster-ip:http"} +// - A updated to be {{"ns", "cluster-ip", "http"}: {"172.16.55.10", 1234, "TCP"}} +// - produce string set {"ns/cluster-ip:http"} func (sm *ServiceMap) merge(other ServiceMap) sets.String { // existingPorts is going to store all identifiers of all services in `other` ServiceMap. existingPorts := sets.NewString() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hnsV2.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hns.go similarity index 84% rename from cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hnsV2.go rename to cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hns.go index 78ce01b2f87..051a5b30035 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hnsV2.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hns.go @@ -29,14 +29,27 @@ import ( "strings" ) -type hnsV2 struct{} +type HostNetworkService interface { + getNetworkByName(name string) (*hnsNetworkInfo, error) + getAllEndpointsByNetwork(networkName string) (map[string]*endpointsInfo, error) + getEndpointByID(id string) (*endpointsInfo, error) + getEndpointByIpAddress(ip string, networkName string) (*endpointsInfo, error) + getEndpointByName(id string) (*endpointsInfo, error) + createEndpoint(ep *endpointsInfo, networkName string) (*endpointsInfo, error) + deleteEndpoint(hnsID string) error + getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFlags, sourceVip string, vip string, protocol uint16, internalPort uint16, externalPort uint16, previousLoadBalancers map[loadBalancerIdentifier]*loadBalancerInfo) (*loadBalancerInfo, error) + getAllLoadBalancers() (map[loadBalancerIdentifier]*loadBalancerInfo, error) + deleteLoadBalancer(hnsID string) error +} + +type hns struct{} var ( // LoadBalancerFlagsIPv6 enables IPV6. LoadBalancerFlagsIPv6 hcn.LoadBalancerFlags = 2 ) -func (hns hnsV2) getNetworkByName(name string) (*hnsNetworkInfo, error) { +func (hns hns) getNetworkByName(name string) (*hnsNetworkInfo, error) { hnsnetwork, err := hcn.GetNetworkByName(name) if err != nil { klog.ErrorS(err, "Error getting network by name") @@ -69,7 +82,7 @@ func (hns hnsV2) getNetworkByName(name string) (*hnsNetworkInfo, error) { }, nil } -func (hns hnsV2) getAllEndpointsByNetwork(networkName string) (map[string]*(endpointsInfo), error) { +func (hns hns) getAllEndpointsByNetwork(networkName string) (map[string]*(endpointsInfo), error) { hcnnetwork, err := hcn.GetNetworkByName(networkName) if err != nil { klog.ErrorS(err, "failed to get HNS network by name", "name", networkName) @@ -101,7 +114,7 @@ func (hns hnsV2) getAllEndpointsByNetwork(networkName string) (map[string]*(endp return endpointInfos, nil } -func (hns hnsV2) getEndpointByID(id string) (*endpointsInfo, error) { +func (hns hns) getEndpointByID(id string) (*endpointsInfo, error) { hnsendpoint, err := hcn.GetEndpointByID(id) if err != nil { return nil, err @@ -114,7 +127,7 @@ func (hns hnsV2) getEndpointByID(id string) (*endpointsInfo, error) { hns: hns, }, nil } -func (hns hnsV2) getEndpointByIpAddress(ip string, networkName string) (*endpointsInfo, error) { +func (hns hns) getEndpointByIpAddress(ip string, networkName string) (*endpointsInfo, error) { hnsnetwork, err := hcn.GetNetworkByName(networkName) if err != nil { klog.ErrorS(err, "Error getting network by name") @@ -146,7 +159,7 @@ func (hns hnsV2) getEndpointByIpAddress(ip string, networkName string) (*endpoin } return nil, fmt.Errorf("Endpoint %v not found on network %s", ip, networkName) } -func (hns hnsV2) getEndpointByName(name string) (*endpointsInfo, error) { +func (hns hns) getEndpointByName(name string) (*endpointsInfo, error) { hnsendpoint, err := hcn.GetEndpointByName(name) if err != nil { return nil, err @@ -159,7 +172,7 @@ func (hns hnsV2) getEndpointByName(name string) (*endpointsInfo, error) { hns: hns, }, nil } -func (hns hnsV2) createEndpoint(ep *endpointsInfo, networkName string) (*endpointsInfo, error) { +func (hns hns) createEndpoint(ep *endpointsInfo, networkName string) (*endpointsInfo, error) { hnsNetwork, err := hcn.GetNetworkByName(networkName) if err != nil { return nil, err @@ -216,7 +229,7 @@ func (hns hnsV2) createEndpoint(ep *endpointsInfo, networkName string) (*endpoin hns: hns, }, nil } -func (hns hnsV2) deleteEndpoint(hnsID string) error { +func (hns hns) deleteEndpoint(hnsID string) error { hnsendpoint, err := hcn.GetEndpointByID(hnsID) if err != nil { return err @@ -228,7 +241,7 @@ func (hns hnsV2) deleteEndpoint(hnsID string) error { return err } -func (hns hnsV2) getAllLoadBalancers() (map[loadBalancerIdentifier]*loadBalancerInfo, error) { +func (hns hns) getAllLoadBalancers() (map[loadBalancerIdentifier]*loadBalancerInfo, error) { lbs, err := hcn.ListLoadBalancers() var id loadBalancerIdentifier if err != nil { @@ -251,7 +264,7 @@ func (hns hnsV2) getAllLoadBalancers() (map[loadBalancerIdentifier]*loadBalancer return loadBalancers, nil } -func (hns hnsV2) getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFlags, sourceVip string, vip string, protocol uint16, internalPort uint16, externalPort uint16, previousLoadBalancers map[loadBalancerIdentifier]*loadBalancerInfo) (*loadBalancerInfo, error) { +func (hns hns) getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFlags, sourceVip string, vip string, protocol uint16, internalPort uint16, externalPort uint16, previousLoadBalancers map[loadBalancerIdentifier]*loadBalancerInfo) (*loadBalancerInfo, error) { var id loadBalancerIdentifier vips := []string{} if len(vip) > 0 { @@ -333,7 +346,7 @@ func (hns hnsV2) getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFl return lbInfo, err } -func (hns hnsV2) deleteLoadBalancer(hnsID string) error { +func (hns hns) deleteLoadBalancer(hnsID string) error { lb, err := hcn.GetLoadBalancerByID(hnsID) if err != nil { // Return silently diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hnsV1.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hnsV1.go deleted file mode 100644 index 8f3d6c2acb4..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/hnsV1.go +++ /dev/null @@ -1,315 +0,0 @@ -//go:build windows -// +build windows - -/* -Copyright 2018 The Kubernetes 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 winkernel - -import ( - "encoding/json" - "fmt" - "strings" - - "github.com/Microsoft/hcsshim" - "k8s.io/klog/v2" - netutils "k8s.io/utils/net" -) - -type HostNetworkService interface { - getNetworkByName(name string) (*hnsNetworkInfo, error) - getAllEndpointsByNetwork(networkName string) (map[string]*endpointsInfo, error) - getEndpointByID(id string) (*endpointsInfo, error) - getEndpointByIpAddress(ip string, networkName string) (*endpointsInfo, error) - getEndpointByName(id string) (*endpointsInfo, error) - createEndpoint(ep *endpointsInfo, networkName string) (*endpointsInfo, error) - deleteEndpoint(hnsID string) error - getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFlags, sourceVip string, vip string, protocol uint16, internalPort uint16, externalPort uint16, previousLoadBalancers map[loadBalancerIdentifier]*loadBalancerInfo) (*loadBalancerInfo, error) - getAllLoadBalancers() (map[loadBalancerIdentifier]*loadBalancerInfo, error) - deleteLoadBalancer(hnsID string) error -} - -// V1 HNS API -type hnsV1 struct{} - -func (hns hnsV1) getNetworkByName(name string) (*hnsNetworkInfo, error) { - hnsnetwork, err := hcsshim.GetHNSNetworkByName(name) - if err != nil { - klog.ErrorS(err, "failed to get HNS network by name", "name", name) - return nil, err - } - - return &hnsNetworkInfo{ - id: hnsnetwork.Id, - name: hnsnetwork.Name, - networkType: hnsnetwork.Type, - }, nil -} - -func (hns hnsV1) getAllEndpointsByNetwork(networkName string) (map[string]*(endpointsInfo), error) { - hnsnetwork, err := hcsshim.GetHNSNetworkByName(networkName) - if err != nil { - klog.ErrorS(err, "failed to get HNS network by name", "name", networkName) - return nil, err - } - endpoints, err := hcsshim.HNSListEndpointRequest() - if err != nil { - return nil, fmt.Errorf("failed to list endpoints: %w", err) - } - endpointInfos := make(map[string]*(endpointsInfo)) - for _, endpoint := range endpoints { - if strings.EqualFold(endpoint.VirtualNetwork, hnsnetwork.Id) { - // Add to map with key endpoint ID or IP address - // Storing this is expensive in terms of memory, however there is a bug in Windows Server 2019 that can cause two endpoints to be created with the same IP address. - // TODO: Store by IP only and remove any lookups by endpoint ID. - endpointInfos[endpoint.Id] = &endpointsInfo{ - ip: endpoint.IPAddress.String(), - isLocal: !endpoint.IsRemoteEndpoint, - macAddress: endpoint.MacAddress, - hnsID: endpoint.Id, - hns: hns, - // only ready and not terminating endpoints were added to HNS - ready: true, - serving: true, - terminating: false, - } - endpointInfos[endpoint.IPAddress.String()] = endpointInfos[endpoint.Id] - } - } - klog.V(3).InfoS("Queried endpoints from network", "network", networkName) - return endpointInfos, nil -} - -func (hns hnsV1) getEndpointByID(id string) (*endpointsInfo, error) { - hnsendpoint, err := hcsshim.GetHNSEndpointByID(id) - if err != nil { - klog.ErrorS(err, "failed to get HNS endpoint by id", "id", id) - return nil, err - } - return &endpointsInfo{ - ip: hnsendpoint.IPAddress.String(), - //TODO: Change isLocal to isRemote - isLocal: !hnsendpoint.IsRemoteEndpoint, - macAddress: hnsendpoint.MacAddress, - hnsID: hnsendpoint.Id, - hns: hns, - - // only ready and not terminating endpoints were added to HNS - ready: true, - serving: true, - terminating: false, - }, nil -} -func (hns hnsV1) getEndpointByIpAddress(ip string, networkName string) (*endpointsInfo, error) { - hnsnetwork, err := hcsshim.GetHNSNetworkByName(networkName) - if err != nil { - klog.ErrorS(err, "failed to get HNS network by name", "name", networkName) - return nil, err - } - - endpoints, err := hcsshim.HNSListEndpointRequest() - if err != nil { - return nil, fmt.Errorf("failed to list endpoints: %w", err) - } - for _, endpoint := range endpoints { - equal := false - if endpoint.IPAddress != nil { - equal = endpoint.IPAddress.String() == ip - } - if equal && strings.EqualFold(endpoint.VirtualNetwork, hnsnetwork.Id) { - return &endpointsInfo{ - ip: endpoint.IPAddress.String(), - isLocal: !endpoint.IsRemoteEndpoint, - macAddress: endpoint.MacAddress, - hnsID: endpoint.Id, - hns: hns, - - // only ready and not terminating endpoints were added to HNS - ready: true, - serving: true, - terminating: false, - }, nil - } - } - - return nil, fmt.Errorf("Endpoint %v not found on network %s", ip, networkName) -} - -func (hns hnsV1) getEndpointByName(name string) (*endpointsInfo, error) { - hnsendpoint, err := hcsshim.GetHNSEndpointByName(name) - if err != nil { - klog.ErrorS(err, "failed to get HNS endpoint by name", "name", name) - return nil, err - } - return &endpointsInfo{ - ip: hnsendpoint.IPAddress.String(), - //TODO: Change isLocal to isRemote - isLocal: !hnsendpoint.IsRemoteEndpoint, - macAddress: hnsendpoint.MacAddress, - hnsID: hnsendpoint.Id, - hns: hns, - }, nil -} - -func (hns hnsV1) createEndpoint(ep *endpointsInfo, networkName string) (*endpointsInfo, error) { - hnsNetwork, err := hcsshim.GetHNSNetworkByName(networkName) - if err != nil { - return nil, err - } - hnsEndpoint := &hcsshim.HNSEndpoint{ - MacAddress: ep.macAddress, - IPAddress: netutils.ParseIPSloppy(ep.ip), - } - - var createdEndpoint *hcsshim.HNSEndpoint - if !ep.isLocal { - if len(ep.providerAddress) != 0 { - paPolicy := hcsshim.PaPolicy{ - Type: hcsshim.PA, - PA: ep.providerAddress, - } - paPolicyJson, err := json.Marshal(paPolicy) - if err != nil { - return nil, err - } - hnsEndpoint.Policies = append(hnsEndpoint.Policies, paPolicyJson) - } - createdEndpoint, err = hnsNetwork.CreateRemoteEndpoint(hnsEndpoint) - if err != nil { - return nil, err - } - - } else { - createdEndpoint, err = hnsNetwork.CreateEndpoint(hnsEndpoint) - if err != nil { - return nil, fmt.Errorf("local endpoint creation failed: %w", err) - } - } - return &endpointsInfo{ - ip: createdEndpoint.IPAddress.String(), - isLocal: createdEndpoint.IsRemoteEndpoint, - macAddress: createdEndpoint.MacAddress, - hnsID: createdEndpoint.Id, - providerAddress: ep.providerAddress, //TODO get from createdEndpoint - hns: hns, - - ready: ep.ready, - serving: ep.serving, - terminating: ep.terminating, - }, nil -} -func (hns hnsV1) deleteEndpoint(hnsID string) error { - hnsendpoint, err := hcsshim.GetHNSEndpointByID(hnsID) - if err != nil { - return err - } - _, err = hnsendpoint.Delete() - if err == nil { - klog.V(3).InfoS("Remote endpoint resource deleted id", "id", hnsID) - } - return err -} - -func (hns hnsV1) getAllLoadBalancers() (map[loadBalancerIdentifier]*loadBalancerInfo, error) { - plists, err := hcsshim.HNSListPolicyListRequest() - var id loadBalancerIdentifier - if err != nil { - return nil, err - } - loadBalancers := make(map[loadBalancerIdentifier]*(loadBalancerInfo)) - for _, plist := range plists { - // Validate if input meets any of the policy lists - lb := hcsshim.ELBPolicy{} - if err = json.Unmarshal(plist.Policies[0], &lb); err != nil { - continue - } - // Policy is ELB policy - portMap := lb.LBPolicy - if len(lb.VIPs) == 0 { - // Leave VIP uninitialized - id = loadBalancerIdentifier{protocol: uint16(portMap.Protocol), internalPort: portMap.InternalPort, externalPort: portMap.ExternalPort} - } else { - id = loadBalancerIdentifier{protocol: portMap.Protocol, internalPort: portMap.InternalPort, externalPort: portMap.ExternalPort, vip: lb.VIPs[0]} - } - loadBalancers[id] = &loadBalancerInfo{ - hnsID: plist.ID, - } - } - return loadBalancers, nil -} - -func (hns hnsV1) getLoadBalancer(endpoints []endpointsInfo, flags loadBalancerFlags, sourceVip string, vip string, protocol uint16, internalPort uint16, externalPort uint16, previousLoadBalancers map[loadBalancerIdentifier]*loadBalancerInfo) (*loadBalancerInfo, error) { - if flags.isDSR { - klog.V(3).InfoS("DSR is not supported in V1. Using non DSR instead") - } - var id loadBalancerIdentifier - if len(vip) > 0 { - id = loadBalancerIdentifier{protocol: protocol, internalPort: internalPort, externalPort: externalPort, vip: vip, endpointsCount: len(endpoints)} - } else { - id = loadBalancerIdentifier{protocol: protocol, internalPort: internalPort, externalPort: externalPort, endpointsCount: len(endpoints)} - } - - if lb, found := previousLoadBalancers[id]; found { - klog.V(1).InfoS("Found existing Hns loadbalancer policy resource", "policies", lb) - return lb, nil - } - - var hnsEndpoints []hcsshim.HNSEndpoint - for _, ep := range endpoints { - endpoint, err := hcsshim.GetHNSEndpointByID(ep.hnsID) - if err != nil { - return nil, err - } - hnsEndpoints = append(hnsEndpoints, *endpoint) - } - lb, err := hcsshim.AddLoadBalancer( - hnsEndpoints, - flags.isILB, - sourceVip, - vip, - protocol, - internalPort, - externalPort, - ) - - if err == nil { - klog.V(1).InfoS("Hns loadbalancer policy resource", "policies", lb) - } else { - return nil, err - } - lbInfo := &loadBalancerInfo{ - hnsID: lb.ID, - } - // Add to map of load balancers - previousLoadBalancers[id] = lbInfo - return lbInfo, err -} -func (hns hnsV1) deleteLoadBalancer(hnsID string) error { - if len(hnsID) == 0 { - // Return silently - return nil - } - - // Cleanup HNS policies - hnsloadBalancer, err := hcsshim.GetPolicyListByID(hnsID) - if err != nil { - return err - } - klog.V(2).InfoS("Removing Policy", "policies", hnsloadBalancer) - - _, err = hnsloadBalancer.Delete() - return err -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/proxier.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/proxier.go index 0deea637fba..74f85f136ee 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/proxier.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/proxy/winkernel/proxier.go @@ -146,14 +146,15 @@ type remoteSubnetInfo struct { const NETWORK_TYPE_OVERLAY = "overlay" func newHostNetworkService() (HostNetworkService, hcn.SupportedFeatures) { - var hns HostNetworkService - hns = hnsV1{} + var h HostNetworkService supportedFeatures := hcn.GetSupportedFeatures() if supportedFeatures.Api.V2 { - hns = hnsV2{} + h = hns{} + } else { + panic("Windows HNS Api V2 required. This version of windows does not support API V2") } - return hns, supportedFeatures + return h, supportedFeatures } func getNetworkName(hnsNetworkName string) (string, error) { @@ -296,10 +297,10 @@ func (info *endpointsInfo) GetZone() string { return "" } -//Uses mac prefix and IPv4 address to return a mac address -//This ensures mac addresses are unique for proper load balancing -//There is a possibility of MAC collisions but this Mac address is used for remote endpoints only -//and not sent on the wire. +// Uses mac prefix and IPv4 address to return a mac address +// This ensures mac addresses are unique for proper load balancing +// There is a possibility of MAC collisions but this Mac address is used for remote endpoints only +// and not sent on the wire. func conjureMac(macPrefix string, ip net.IP) string { if ip4 := ip.To4(); ip4 != nil { a, b, c, d := ip4[0], ip4[1], ip4[2], ip4[3] diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/latest/latest.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/latest/latest.go index 1833b873fe9..49c196c8a25 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/latest/latest.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/latest/latest.go @@ -18,7 +18,7 @@ package latest import ( "k8s.io/component-base/config/v1alpha1" - "k8s.io/kube-scheduler/config/v1beta3" + v1 "k8s.io/kube-scheduler/config/v1" "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme" ) @@ -26,7 +26,7 @@ import ( // Default creates a default configuration of the latest versioned type. // This function needs to be updated whenever we bump the scheduler's component config version. func Default() (*config.KubeSchedulerConfiguration, error) { - versionedCfg := v1beta3.KubeSchedulerConfiguration{} + versionedCfg := v1.KubeSchedulerConfiguration{} versionedCfg.DebuggingConfiguration = *v1alpha1.NewRecommendedDebuggingConfiguration() scheme.Scheme.Default(&versionedCfg) @@ -38,6 +38,6 @@ func Default() (*config.KubeSchedulerConfiguration, error) { // because the field will be cleared later by API machinery during // conversion. See KubeSchedulerConfiguration internal type definition for // more details. - cfg.TypeMeta.APIVersion = v1beta3.SchemeGroupVersion.String() + cfg.TypeMeta.APIVersion = v1.SchemeGroupVersion.String() return &cfg, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/scheme/scheme.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/scheme/scheme.go index f8bbad2d1fe..375b49b569a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/scheme/scheme.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/scheme/scheme.go @@ -21,6 +21,7 @@ import ( "k8s.io/apimachinery/pkg/runtime/serializer" utilruntime "k8s.io/apimachinery/pkg/util/runtime" config "k8s.io/kubernetes/pkg/scheduler/apis/config" + configv1 "k8s.io/kubernetes/pkg/scheduler/apis/config/v1" configv1beta2 "k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta2" configv1beta3 "k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta3" ) @@ -42,7 +43,10 @@ func AddToScheme(scheme *runtime.Scheme) { utilruntime.Must(config.AddToScheme(scheme)) utilruntime.Must(configv1beta2.AddToScheme(scheme)) utilruntime.Must(configv1beta3.AddToScheme(scheme)) + utilruntime.Must(configv1.AddToScheme(scheme)) utilruntime.Must(scheme.SetVersionPriority( + configv1.SchemeGroupVersion, configv1beta3.SchemeGroupVersion, - configv1beta2.SchemeGroupVersion)) + configv1beta2.SchemeGroupVersion, + )) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/conversion.go new file mode 100644 index 00000000000..18115f93f49 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/conversion.go @@ -0,0 +1,107 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + "fmt" + "sync" + + "k8s.io/apimachinery/pkg/conversion" + "k8s.io/apimachinery/pkg/runtime" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + v1 "k8s.io/kube-scheduler/config/v1" + "k8s.io/kubernetes/pkg/scheduler/apis/config" +) + +var ( + // pluginArgConversionScheme is a scheme with internal and v1 registered, + // used for defaulting/converting typed PluginConfig Args. + // Access via getPluginArgConversionScheme() + pluginArgConversionScheme *runtime.Scheme + initPluginArgConversionScheme sync.Once +) + +func GetPluginArgConversionScheme() *runtime.Scheme { + initPluginArgConversionScheme.Do(func() { + // set up the scheme used for plugin arg conversion + pluginArgConversionScheme = runtime.NewScheme() + utilruntime.Must(AddToScheme(pluginArgConversionScheme)) + utilruntime.Must(config.AddToScheme(pluginArgConversionScheme)) + }) + return pluginArgConversionScheme +} + +func Convert_v1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in *v1.KubeSchedulerConfiguration, out *config.KubeSchedulerConfiguration, s conversion.Scope) error { + if err := autoConvert_v1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in, out, s); err != nil { + return err + } + return convertToInternalPluginConfigArgs(out) +} + +// convertToInternalPluginConfigArgs converts PluginConfig#Args into internal +// types using a scheme, after applying defaults. +func convertToInternalPluginConfigArgs(out *config.KubeSchedulerConfiguration) error { + scheme := GetPluginArgConversionScheme() + for i := range out.Profiles { + prof := &out.Profiles[i] + for j := range prof.PluginConfig { + args := prof.PluginConfig[j].Args + if args == nil { + continue + } + if _, isUnknown := args.(*runtime.Unknown); isUnknown { + continue + } + internalArgs, err := scheme.ConvertToVersion(args, config.SchemeGroupVersion) + if err != nil { + return fmt.Errorf("converting .Profiles[%d].PluginConfig[%d].Args into internal type: %w", i, j, err) + } + prof.PluginConfig[j].Args = internalArgs + } + } + return nil +} + +func Convert_config_KubeSchedulerConfiguration_To_v1_KubeSchedulerConfiguration(in *config.KubeSchedulerConfiguration, out *v1.KubeSchedulerConfiguration, s conversion.Scope) error { + if err := autoConvert_config_KubeSchedulerConfiguration_To_v1_KubeSchedulerConfiguration(in, out, s); err != nil { + return err + } + return convertToExternalPluginConfigArgs(out) +} + +// convertToExternalPluginConfigArgs converts PluginConfig#Args into +// external (versioned) types using a scheme. +func convertToExternalPluginConfigArgs(out *v1.KubeSchedulerConfiguration) error { + scheme := GetPluginArgConversionScheme() + for i := range out.Profiles { + for j := range out.Profiles[i].PluginConfig { + args := out.Profiles[i].PluginConfig[j].Args + if args.Object == nil { + continue + } + if _, isUnknown := args.Object.(*runtime.Unknown); isUnknown { + continue + } + externalArgs, err := scheme.ConvertToVersion(args.Object, SchemeGroupVersion) + if err != nil { + return err + } + out.Profiles[i].PluginConfig[j].Args.Object = externalArgs + } + } + return nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/default_plugins.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/default_plugins.go new file mode 100644 index 00000000000..73c3635b57e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/default_plugins.go @@ -0,0 +1,135 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/klog/v2" + v1 "k8s.io/kube-scheduler/config/v1" + "k8s.io/kubernetes/pkg/scheduler/framework/plugins/names" + "k8s.io/utils/pointer" +) + +// getDefaultPlugins returns the default set of plugins. +func getDefaultPlugins() *v1.Plugins { + plugins := &v1.Plugins{ + MultiPoint: v1.PluginSet{ + Enabled: []v1.Plugin{ + {Name: names.PrioritySort}, + {Name: names.NodeUnschedulable}, + {Name: names.NodeName}, + {Name: names.TaintToleration, Weight: pointer.Int32(3)}, + {Name: names.NodeAffinity, Weight: pointer.Int32(2)}, + {Name: names.NodePorts}, + {Name: names.NodeResourcesFit, Weight: pointer.Int32(1)}, + {Name: names.VolumeRestrictions}, + {Name: names.EBSLimits}, + {Name: names.GCEPDLimits}, + {Name: names.NodeVolumeLimits}, + {Name: names.AzureDiskLimits}, + {Name: names.VolumeBinding}, + {Name: names.VolumeZone}, + {Name: names.PodTopologySpread, Weight: pointer.Int32(2)}, + {Name: names.InterPodAffinity, Weight: pointer.Int32(2)}, + {Name: names.DefaultPreemption}, + {Name: names.NodeResourcesBalancedAllocation, Weight: pointer.Int32(1)}, + {Name: names.ImageLocality, Weight: pointer.Int32(1)}, + {Name: names.DefaultBinder}, + }, + }, + } + + return plugins +} + +// mergePlugins merges the custom set into the given default one, handling disabled sets. +func mergePlugins(defaultPlugins, customPlugins *v1.Plugins) *v1.Plugins { + if customPlugins == nil { + return defaultPlugins + } + + defaultPlugins.MultiPoint = mergePluginSet(defaultPlugins.MultiPoint, customPlugins.MultiPoint) + defaultPlugins.QueueSort = mergePluginSet(defaultPlugins.QueueSort, customPlugins.QueueSort) + defaultPlugins.PreFilter = mergePluginSet(defaultPlugins.PreFilter, customPlugins.PreFilter) + defaultPlugins.Filter = mergePluginSet(defaultPlugins.Filter, customPlugins.Filter) + defaultPlugins.PostFilter = mergePluginSet(defaultPlugins.PostFilter, customPlugins.PostFilter) + defaultPlugins.PreScore = mergePluginSet(defaultPlugins.PreScore, customPlugins.PreScore) + defaultPlugins.Score = mergePluginSet(defaultPlugins.Score, customPlugins.Score) + defaultPlugins.Reserve = mergePluginSet(defaultPlugins.Reserve, customPlugins.Reserve) + defaultPlugins.Permit = mergePluginSet(defaultPlugins.Permit, customPlugins.Permit) + defaultPlugins.PreBind = mergePluginSet(defaultPlugins.PreBind, customPlugins.PreBind) + defaultPlugins.Bind = mergePluginSet(defaultPlugins.Bind, customPlugins.Bind) + defaultPlugins.PostBind = mergePluginSet(defaultPlugins.PostBind, customPlugins.PostBind) + return defaultPlugins +} + +type pluginIndex struct { + index int + plugin v1.Plugin +} + +func mergePluginSet(defaultPluginSet, customPluginSet v1.PluginSet) v1.PluginSet { + disabledPlugins := sets.NewString() + enabledCustomPlugins := make(map[string]pluginIndex) + // replacedPluginIndex is a set of index of plugins, which have replaced the default plugins. + replacedPluginIndex := sets.NewInt() + var disabled []v1.Plugin + for _, disabledPlugin := range customPluginSet.Disabled { + // if the user is manually disabling any (or all, with "*") default plugins for an extension point, + // we need to track that so that the MultiPoint extension logic in the framework can know to skip + // inserting unspecified default plugins to this point. + disabled = append(disabled, v1.Plugin{Name: disabledPlugin.Name}) + disabledPlugins.Insert(disabledPlugin.Name) + } + + // With MultiPoint, we may now have some disabledPlugins in the default registry + // For example, we enable PluginX with Filter+Score through MultiPoint but disable its Score plugin by default. + for _, disabledPlugin := range defaultPluginSet.Disabled { + disabled = append(disabled, v1.Plugin{Name: disabledPlugin.Name}) + disabledPlugins.Insert(disabledPlugin.Name) + } + + for index, enabledPlugin := range customPluginSet.Enabled { + enabledCustomPlugins[enabledPlugin.Name] = pluginIndex{index, enabledPlugin} + } + var enabledPlugins []v1.Plugin + if !disabledPlugins.Has("*") { + for _, defaultEnabledPlugin := range defaultPluginSet.Enabled { + if disabledPlugins.Has(defaultEnabledPlugin.Name) { + continue + } + // The default plugin is explicitly re-configured, update the default plugin accordingly. + if customPlugin, ok := enabledCustomPlugins[defaultEnabledPlugin.Name]; ok { + klog.InfoS("Default plugin is explicitly re-configured; overriding", "plugin", defaultEnabledPlugin.Name) + // Update the default plugin in place to preserve order. + defaultEnabledPlugin = customPlugin.plugin + replacedPluginIndex.Insert(customPlugin.index) + } + enabledPlugins = append(enabledPlugins, defaultEnabledPlugin) + } + } + + // Append all the custom plugins which haven't replaced any default plugins. + // Note: duplicated custom plugins will still be appended here. + // If so, the instantiation of scheduler framework will detect it and abort. + for index, plugin := range customPluginSet.Enabled { + if !replacedPluginIndex.Has(index) { + enabledPlugins = append(enabledPlugins, plugin) + } + } + return v1.PluginSet{Enabled: enabledPlugins, Disabled: disabled} +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/defaults.go new file mode 100644 index 00000000000..6916123f281 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/defaults.go @@ -0,0 +1,242 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + v1 "k8s.io/api/core/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/util/sets" + "k8s.io/apiserver/pkg/util/feature" + componentbaseconfigv1alpha1 "k8s.io/component-base/config/v1alpha1" + configv1 "k8s.io/kube-scheduler/config/v1" + "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/scheduler/apis/config" + "k8s.io/utils/pointer" +) + +var defaultResourceSpec = []configv1.ResourceSpec{ + {Name: string(v1.ResourceCPU), Weight: 1}, + {Name: string(v1.ResourceMemory), Weight: 1}, +} + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + return RegisterDefaults(scheme) +} + +func pluginsNames(p *configv1.Plugins) []string { + if p == nil { + return nil + } + extensions := []configv1.PluginSet{ + p.MultiPoint, + p.PreFilter, + p.Filter, + p.PostFilter, + p.Reserve, + p.PreScore, + p.Score, + p.PreBind, + p.Bind, + p.PostBind, + p.Permit, + p.QueueSort, + } + n := sets.NewString() + for _, e := range extensions { + for _, pg := range e.Enabled { + n.Insert(pg.Name) + } + } + return n.List() +} + +func setDefaults_KubeSchedulerProfile(prof *configv1.KubeSchedulerProfile) { + // Set default plugins. + prof.Plugins = mergePlugins(getDefaultPlugins(), prof.Plugins) + // Set default plugin configs. + scheme := GetPluginArgConversionScheme() + existingConfigs := sets.NewString() + for j := range prof.PluginConfig { + existingConfigs.Insert(prof.PluginConfig[j].Name) + args := prof.PluginConfig[j].Args.Object + if _, isUnknown := args.(*runtime.Unknown); isUnknown { + continue + } + scheme.Default(args) + } + + // Append default configs for plugins that didn't have one explicitly set. + for _, name := range pluginsNames(prof.Plugins) { + if existingConfigs.Has(name) { + continue + } + gvk := configv1.SchemeGroupVersion.WithKind(name + "Args") + args, err := scheme.New(gvk) + if err != nil { + // This plugin is out-of-tree or doesn't require configuration. + continue + } + scheme.Default(args) + args.GetObjectKind().SetGroupVersionKind(gvk) + prof.PluginConfig = append(prof.PluginConfig, configv1.PluginConfig{ + Name: name, + Args: runtime.RawExtension{Object: args}, + }) + } +} + +// SetDefaults_KubeSchedulerConfiguration sets additional defaults +func SetDefaults_KubeSchedulerConfiguration(obj *configv1.KubeSchedulerConfiguration) { + if obj.Parallelism == nil { + obj.Parallelism = pointer.Int32Ptr(16) + } + + if len(obj.Profiles) == 0 { + obj.Profiles = append(obj.Profiles, configv1.KubeSchedulerProfile{}) + } + // Only apply a default scheduler name when there is a single profile. + // Validation will ensure that every profile has a non-empty unique name. + if len(obj.Profiles) == 1 && obj.Profiles[0].SchedulerName == nil { + obj.Profiles[0].SchedulerName = pointer.StringPtr(v1.DefaultSchedulerName) + } + + // Add the default set of plugins and apply the configuration. + for i := range obj.Profiles { + prof := &obj.Profiles[i] + setDefaults_KubeSchedulerProfile(prof) + } + + if obj.PercentageOfNodesToScore == nil { + percentageOfNodesToScore := int32(config.DefaultPercentageOfNodesToScore) + obj.PercentageOfNodesToScore = &percentageOfNodesToScore + } + + if len(obj.LeaderElection.ResourceLock) == 0 { + // Use lease-based leader election to reduce cost. + // We migrated for EndpointsLease lock in 1.17 and starting in 1.20 we + // migrated to Lease lock. + obj.LeaderElection.ResourceLock = "leases" + } + if len(obj.LeaderElection.ResourceNamespace) == 0 { + obj.LeaderElection.ResourceNamespace = configv1.SchedulerDefaultLockObjectNamespace + } + if len(obj.LeaderElection.ResourceName) == 0 { + obj.LeaderElection.ResourceName = configv1.SchedulerDefaultLockObjectName + } + + if len(obj.ClientConnection.ContentType) == 0 { + obj.ClientConnection.ContentType = "application/vnd.kubernetes.protobuf" + } + // Scheduler has an opinion about QPS/Burst, setting specific defaults for itself, instead of generic settings. + if obj.ClientConnection.QPS == 0.0 { + obj.ClientConnection.QPS = 50.0 + } + if obj.ClientConnection.Burst == 0 { + obj.ClientConnection.Burst = 100 + } + + // Use the default LeaderElectionConfiguration options + componentbaseconfigv1alpha1.RecommendedDefaultLeaderElectionConfiguration(&obj.LeaderElection) + + if obj.PodInitialBackoffSeconds == nil { + obj.PodInitialBackoffSeconds = pointer.Int64(1) + } + + if obj.PodMaxBackoffSeconds == nil { + obj.PodMaxBackoffSeconds = pointer.Int64(10) + } + + // Enable profiling by default in the scheduler + if obj.EnableProfiling == nil { + obj.EnableProfiling = pointer.Bool(true) + } + + // Enable contention profiling by default if profiling is enabled + if *obj.EnableProfiling && obj.EnableContentionProfiling == nil { + obj.EnableContentionProfiling = pointer.Bool(true) + } +} + +func SetDefaults_DefaultPreemptionArgs(obj *configv1.DefaultPreemptionArgs) { + if obj.MinCandidateNodesPercentage == nil { + obj.MinCandidateNodesPercentage = pointer.Int32Ptr(10) + } + if obj.MinCandidateNodesAbsolute == nil { + obj.MinCandidateNodesAbsolute = pointer.Int32Ptr(100) + } +} + +func SetDefaults_InterPodAffinityArgs(obj *configv1.InterPodAffinityArgs) { + if obj.HardPodAffinityWeight == nil { + obj.HardPodAffinityWeight = pointer.Int32Ptr(1) + } +} + +func SetDefaults_VolumeBindingArgs(obj *configv1.VolumeBindingArgs) { + if obj.BindTimeoutSeconds == nil { + obj.BindTimeoutSeconds = pointer.Int64Ptr(600) + } + if len(obj.Shape) == 0 && feature.DefaultFeatureGate.Enabled(features.VolumeCapacityPriority) { + obj.Shape = []configv1.UtilizationShapePoint{ + { + Utilization: 0, + Score: 0, + }, + { + Utilization: 100, + Score: int32(config.MaxCustomPriorityScore), + }, + } + } +} + +func SetDefaults_NodeResourcesBalancedAllocationArgs(obj *configv1.NodeResourcesBalancedAllocationArgs) { + if len(obj.Resources) == 0 { + obj.Resources = defaultResourceSpec + return + } + // If the weight is not set or it is explicitly set to 0, then apply the default weight(1) instead. + for i := range obj.Resources { + if obj.Resources[i].Weight == 0 { + obj.Resources[i].Weight = 1 + } + } +} + +func SetDefaults_PodTopologySpreadArgs(obj *configv1.PodTopologySpreadArgs) { + if obj.DefaultingType == "" { + obj.DefaultingType = configv1.SystemDefaulting + } +} + +func SetDefaults_NodeResourcesFitArgs(obj *configv1.NodeResourcesFitArgs) { + if obj.ScoringStrategy == nil { + obj.ScoringStrategy = &configv1.ScoringStrategy{ + Type: configv1.ScoringStrategyType(config.LeastAllocated), + Resources: defaultResourceSpec, + } + } + if len(obj.ScoringStrategy.Resources) == 0 { + // If no resources specified, use the default set. + obj.ScoringStrategy.Resources = append(obj.ScoringStrategy.Resources, defaultResourceSpec...) + } + for i := range obj.ScoringStrategy.Resources { + if obj.ScoringStrategy.Resources[i].Weight == 0 { + obj.ScoringStrategy.Resources[i].Weight = 1 + } + } +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/doc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/doc.go new file mode 100644 index 00000000000..7fa215827be --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/doc.go @@ -0,0 +1,24 @@ +/* +Copyright 2022 The Kubernetes 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. +*/ + +// +k8s:deepcopy-gen=package +// +k8s:conversion-gen=k8s.io/kubernetes/pkg/scheduler/apis/config +// +k8s:conversion-gen-external-types=k8s.io/kube-scheduler/config/v1 +// +k8s:defaulter-gen=TypeMeta +// +k8s:defaulter-gen-input=k8s.io/kube-scheduler/config/v1 +// +groupName=kubescheduler.config.k8s.io + +package v1 // import "k8s.io/kubernetes/pkg/scheduler/apis/config/v1" diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/register.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/register.go new file mode 100644 index 00000000000..9a32736c837 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/register.go @@ -0,0 +1,42 @@ +/* +Copyright 2022 The Kubernetes 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 v1 + +import ( + v1 "k8s.io/kube-scheduler/config/v1" +) + +// GroupName is the group name used in this package +const GroupName = v1.GroupName + +// SchemeGroupVersion is group version used to register these objects +var SchemeGroupVersion = v1.SchemeGroupVersion + +var ( + // localSchemeBuilder extends the SchemeBuilder instance with the external types. In this package, + // defaulting and conversion init funcs are registered as well. + localSchemeBuilder = &v1.SchemeBuilder + // AddToScheme is a global function that registers this API group & version to a scheme + AddToScheme = localSchemeBuilder.AddToScheme +) + +func init() { + // We only register manually written functions here. The registration of the + // generated functions takes place in the generated files. The separation + // makes the code compile even when the generated files are missing. + localSchemeBuilder.Register(addDefaultingFuncs) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.conversion.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.conversion.go new file mode 100644 index 00000000000..792131e5eec --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.conversion.go @@ -0,0 +1,940 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by conversion-gen. DO NOT EDIT. + +package v1 + +import ( + unsafe "unsafe" + + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + conversion "k8s.io/apimachinery/pkg/conversion" + runtime "k8s.io/apimachinery/pkg/runtime" + v1alpha1 "k8s.io/component-base/config/v1alpha1" + v1 "k8s.io/kube-scheduler/config/v1" + config "k8s.io/kubernetes/pkg/scheduler/apis/config" +) + +func init() { + localSchemeBuilder.Register(RegisterConversions) +} + +// RegisterConversions adds conversion functions to the given scheme. +// Public to allow building arbitrary schemes. +func RegisterConversions(s *runtime.Scheme) error { + if err := s.AddGeneratedConversionFunc((*v1.DefaultPreemptionArgs)(nil), (*config.DefaultPreemptionArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_DefaultPreemptionArgs_To_config_DefaultPreemptionArgs(a.(*v1.DefaultPreemptionArgs), b.(*config.DefaultPreemptionArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.DefaultPreemptionArgs)(nil), (*v1.DefaultPreemptionArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_DefaultPreemptionArgs_To_v1_DefaultPreemptionArgs(a.(*config.DefaultPreemptionArgs), b.(*v1.DefaultPreemptionArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.Extender)(nil), (*config.Extender)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_Extender_To_config_Extender(a.(*v1.Extender), b.(*config.Extender), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.Extender)(nil), (*v1.Extender)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_Extender_To_v1_Extender(a.(*config.Extender), b.(*v1.Extender), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.ExtenderManagedResource)(nil), (*config.ExtenderManagedResource)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ExtenderManagedResource_To_config_ExtenderManagedResource(a.(*v1.ExtenderManagedResource), b.(*config.ExtenderManagedResource), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.ExtenderManagedResource)(nil), (*v1.ExtenderManagedResource)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_ExtenderManagedResource_To_v1_ExtenderManagedResource(a.(*config.ExtenderManagedResource), b.(*v1.ExtenderManagedResource), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.ExtenderTLSConfig)(nil), (*config.ExtenderTLSConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ExtenderTLSConfig_To_config_ExtenderTLSConfig(a.(*v1.ExtenderTLSConfig), b.(*config.ExtenderTLSConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.ExtenderTLSConfig)(nil), (*v1.ExtenderTLSConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_ExtenderTLSConfig_To_v1_ExtenderTLSConfig(a.(*config.ExtenderTLSConfig), b.(*v1.ExtenderTLSConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.InterPodAffinityArgs)(nil), (*config.InterPodAffinityArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_InterPodAffinityArgs_To_config_InterPodAffinityArgs(a.(*v1.InterPodAffinityArgs), b.(*config.InterPodAffinityArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.InterPodAffinityArgs)(nil), (*v1.InterPodAffinityArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_InterPodAffinityArgs_To_v1_InterPodAffinityArgs(a.(*config.InterPodAffinityArgs), b.(*v1.InterPodAffinityArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.KubeSchedulerProfile)(nil), (*config.KubeSchedulerProfile)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_KubeSchedulerProfile_To_config_KubeSchedulerProfile(a.(*v1.KubeSchedulerProfile), b.(*config.KubeSchedulerProfile), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.KubeSchedulerProfile)(nil), (*v1.KubeSchedulerProfile)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_KubeSchedulerProfile_To_v1_KubeSchedulerProfile(a.(*config.KubeSchedulerProfile), b.(*v1.KubeSchedulerProfile), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.NodeAffinityArgs)(nil), (*config.NodeAffinityArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_NodeAffinityArgs_To_config_NodeAffinityArgs(a.(*v1.NodeAffinityArgs), b.(*config.NodeAffinityArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.NodeAffinityArgs)(nil), (*v1.NodeAffinityArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_NodeAffinityArgs_To_v1_NodeAffinityArgs(a.(*config.NodeAffinityArgs), b.(*v1.NodeAffinityArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.NodeResourcesBalancedAllocationArgs)(nil), (*config.NodeResourcesBalancedAllocationArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_NodeResourcesBalancedAllocationArgs_To_config_NodeResourcesBalancedAllocationArgs(a.(*v1.NodeResourcesBalancedAllocationArgs), b.(*config.NodeResourcesBalancedAllocationArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.NodeResourcesBalancedAllocationArgs)(nil), (*v1.NodeResourcesBalancedAllocationArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_NodeResourcesBalancedAllocationArgs_To_v1_NodeResourcesBalancedAllocationArgs(a.(*config.NodeResourcesBalancedAllocationArgs), b.(*v1.NodeResourcesBalancedAllocationArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.NodeResourcesFitArgs)(nil), (*config.NodeResourcesFitArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_NodeResourcesFitArgs_To_config_NodeResourcesFitArgs(a.(*v1.NodeResourcesFitArgs), b.(*config.NodeResourcesFitArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.NodeResourcesFitArgs)(nil), (*v1.NodeResourcesFitArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_NodeResourcesFitArgs_To_v1_NodeResourcesFitArgs(a.(*config.NodeResourcesFitArgs), b.(*v1.NodeResourcesFitArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.Plugin)(nil), (*config.Plugin)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_Plugin_To_config_Plugin(a.(*v1.Plugin), b.(*config.Plugin), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.Plugin)(nil), (*v1.Plugin)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_Plugin_To_v1_Plugin(a.(*config.Plugin), b.(*v1.Plugin), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.PluginConfig)(nil), (*config.PluginConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_PluginConfig_To_config_PluginConfig(a.(*v1.PluginConfig), b.(*config.PluginConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.PluginConfig)(nil), (*v1.PluginConfig)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_PluginConfig_To_v1_PluginConfig(a.(*config.PluginConfig), b.(*v1.PluginConfig), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.PluginSet)(nil), (*config.PluginSet)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_PluginSet_To_config_PluginSet(a.(*v1.PluginSet), b.(*config.PluginSet), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.PluginSet)(nil), (*v1.PluginSet)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_PluginSet_To_v1_PluginSet(a.(*config.PluginSet), b.(*v1.PluginSet), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.Plugins)(nil), (*config.Plugins)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_Plugins_To_config_Plugins(a.(*v1.Plugins), b.(*config.Plugins), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.Plugins)(nil), (*v1.Plugins)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_Plugins_To_v1_Plugins(a.(*config.Plugins), b.(*v1.Plugins), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.PodTopologySpreadArgs)(nil), (*config.PodTopologySpreadArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(a.(*v1.PodTopologySpreadArgs), b.(*config.PodTopologySpreadArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.PodTopologySpreadArgs)(nil), (*v1.PodTopologySpreadArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_PodTopologySpreadArgs_To_v1_PodTopologySpreadArgs(a.(*config.PodTopologySpreadArgs), b.(*v1.PodTopologySpreadArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.RequestedToCapacityRatioParam)(nil), (*config.RequestedToCapacityRatioParam)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_RequestedToCapacityRatioParam_To_config_RequestedToCapacityRatioParam(a.(*v1.RequestedToCapacityRatioParam), b.(*config.RequestedToCapacityRatioParam), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.RequestedToCapacityRatioParam)(nil), (*v1.RequestedToCapacityRatioParam)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_RequestedToCapacityRatioParam_To_v1_RequestedToCapacityRatioParam(a.(*config.RequestedToCapacityRatioParam), b.(*v1.RequestedToCapacityRatioParam), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.ResourceSpec)(nil), (*config.ResourceSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ResourceSpec_To_config_ResourceSpec(a.(*v1.ResourceSpec), b.(*config.ResourceSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.ResourceSpec)(nil), (*v1.ResourceSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_ResourceSpec_To_v1_ResourceSpec(a.(*config.ResourceSpec), b.(*v1.ResourceSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.ScoringStrategy)(nil), (*config.ScoringStrategy)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_ScoringStrategy_To_config_ScoringStrategy(a.(*v1.ScoringStrategy), b.(*config.ScoringStrategy), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.ScoringStrategy)(nil), (*v1.ScoringStrategy)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_ScoringStrategy_To_v1_ScoringStrategy(a.(*config.ScoringStrategy), b.(*v1.ScoringStrategy), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.UtilizationShapePoint)(nil), (*config.UtilizationShapePoint)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_UtilizationShapePoint_To_config_UtilizationShapePoint(a.(*v1.UtilizationShapePoint), b.(*config.UtilizationShapePoint), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.UtilizationShapePoint)(nil), (*v1.UtilizationShapePoint)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_UtilizationShapePoint_To_v1_UtilizationShapePoint(a.(*config.UtilizationShapePoint), b.(*v1.UtilizationShapePoint), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*v1.VolumeBindingArgs)(nil), (*config.VolumeBindingArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_VolumeBindingArgs_To_config_VolumeBindingArgs(a.(*v1.VolumeBindingArgs), b.(*config.VolumeBindingArgs), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*config.VolumeBindingArgs)(nil), (*v1.VolumeBindingArgs)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_VolumeBindingArgs_To_v1_VolumeBindingArgs(a.(*config.VolumeBindingArgs), b.(*v1.VolumeBindingArgs), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*config.KubeSchedulerConfiguration)(nil), (*v1.KubeSchedulerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_config_KubeSchedulerConfiguration_To_v1_KubeSchedulerConfiguration(a.(*config.KubeSchedulerConfiguration), b.(*v1.KubeSchedulerConfiguration), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*v1.KubeSchedulerConfiguration)(nil), (*config.KubeSchedulerConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(a.(*v1.KubeSchedulerConfiguration), b.(*config.KubeSchedulerConfiguration), scope) + }); err != nil { + return err + } + return nil +} + +func autoConvert_v1_DefaultPreemptionArgs_To_config_DefaultPreemptionArgs(in *v1.DefaultPreemptionArgs, out *config.DefaultPreemptionArgs, s conversion.Scope) error { + if err := metav1.Convert_Pointer_int32_To_int32(&in.MinCandidateNodesPercentage, &out.MinCandidateNodesPercentage, s); err != nil { + return err + } + if err := metav1.Convert_Pointer_int32_To_int32(&in.MinCandidateNodesAbsolute, &out.MinCandidateNodesAbsolute, s); err != nil { + return err + } + return nil +} + +// Convert_v1_DefaultPreemptionArgs_To_config_DefaultPreemptionArgs is an autogenerated conversion function. +func Convert_v1_DefaultPreemptionArgs_To_config_DefaultPreemptionArgs(in *v1.DefaultPreemptionArgs, out *config.DefaultPreemptionArgs, s conversion.Scope) error { + return autoConvert_v1_DefaultPreemptionArgs_To_config_DefaultPreemptionArgs(in, out, s) +} + +func autoConvert_config_DefaultPreemptionArgs_To_v1_DefaultPreemptionArgs(in *config.DefaultPreemptionArgs, out *v1.DefaultPreemptionArgs, s conversion.Scope) error { + if err := metav1.Convert_int32_To_Pointer_int32(&in.MinCandidateNodesPercentage, &out.MinCandidateNodesPercentage, s); err != nil { + return err + } + if err := metav1.Convert_int32_To_Pointer_int32(&in.MinCandidateNodesAbsolute, &out.MinCandidateNodesAbsolute, s); err != nil { + return err + } + return nil +} + +// Convert_config_DefaultPreemptionArgs_To_v1_DefaultPreemptionArgs is an autogenerated conversion function. +func Convert_config_DefaultPreemptionArgs_To_v1_DefaultPreemptionArgs(in *config.DefaultPreemptionArgs, out *v1.DefaultPreemptionArgs, s conversion.Scope) error { + return autoConvert_config_DefaultPreemptionArgs_To_v1_DefaultPreemptionArgs(in, out, s) +} + +func autoConvert_v1_Extender_To_config_Extender(in *v1.Extender, out *config.Extender, s conversion.Scope) error { + out.URLPrefix = in.URLPrefix + out.FilterVerb = in.FilterVerb + out.PreemptVerb = in.PreemptVerb + out.PrioritizeVerb = in.PrioritizeVerb + out.Weight = in.Weight + out.BindVerb = in.BindVerb + out.EnableHTTPS = in.EnableHTTPS + out.TLSConfig = (*config.ExtenderTLSConfig)(unsafe.Pointer(in.TLSConfig)) + out.HTTPTimeout = in.HTTPTimeout + out.NodeCacheCapable = in.NodeCacheCapable + out.ManagedResources = *(*[]config.ExtenderManagedResource)(unsafe.Pointer(&in.ManagedResources)) + out.Ignorable = in.Ignorable + return nil +} + +// Convert_v1_Extender_To_config_Extender is an autogenerated conversion function. +func Convert_v1_Extender_To_config_Extender(in *v1.Extender, out *config.Extender, s conversion.Scope) error { + return autoConvert_v1_Extender_To_config_Extender(in, out, s) +} + +func autoConvert_config_Extender_To_v1_Extender(in *config.Extender, out *v1.Extender, s conversion.Scope) error { + out.URLPrefix = in.URLPrefix + out.FilterVerb = in.FilterVerb + out.PreemptVerb = in.PreemptVerb + out.PrioritizeVerb = in.PrioritizeVerb + out.Weight = in.Weight + out.BindVerb = in.BindVerb + out.EnableHTTPS = in.EnableHTTPS + out.TLSConfig = (*v1.ExtenderTLSConfig)(unsafe.Pointer(in.TLSConfig)) + out.HTTPTimeout = in.HTTPTimeout + out.NodeCacheCapable = in.NodeCacheCapable + out.ManagedResources = *(*[]v1.ExtenderManagedResource)(unsafe.Pointer(&in.ManagedResources)) + out.Ignorable = in.Ignorable + return nil +} + +// Convert_config_Extender_To_v1_Extender is an autogenerated conversion function. +func Convert_config_Extender_To_v1_Extender(in *config.Extender, out *v1.Extender, s conversion.Scope) error { + return autoConvert_config_Extender_To_v1_Extender(in, out, s) +} + +func autoConvert_v1_ExtenderManagedResource_To_config_ExtenderManagedResource(in *v1.ExtenderManagedResource, out *config.ExtenderManagedResource, s conversion.Scope) error { + out.Name = in.Name + out.IgnoredByScheduler = in.IgnoredByScheduler + return nil +} + +// Convert_v1_ExtenderManagedResource_To_config_ExtenderManagedResource is an autogenerated conversion function. +func Convert_v1_ExtenderManagedResource_To_config_ExtenderManagedResource(in *v1.ExtenderManagedResource, out *config.ExtenderManagedResource, s conversion.Scope) error { + return autoConvert_v1_ExtenderManagedResource_To_config_ExtenderManagedResource(in, out, s) +} + +func autoConvert_config_ExtenderManagedResource_To_v1_ExtenderManagedResource(in *config.ExtenderManagedResource, out *v1.ExtenderManagedResource, s conversion.Scope) error { + out.Name = in.Name + out.IgnoredByScheduler = in.IgnoredByScheduler + return nil +} + +// Convert_config_ExtenderManagedResource_To_v1_ExtenderManagedResource is an autogenerated conversion function. +func Convert_config_ExtenderManagedResource_To_v1_ExtenderManagedResource(in *config.ExtenderManagedResource, out *v1.ExtenderManagedResource, s conversion.Scope) error { + return autoConvert_config_ExtenderManagedResource_To_v1_ExtenderManagedResource(in, out, s) +} + +func autoConvert_v1_ExtenderTLSConfig_To_config_ExtenderTLSConfig(in *v1.ExtenderTLSConfig, out *config.ExtenderTLSConfig, s conversion.Scope) error { + out.Insecure = in.Insecure + out.ServerName = in.ServerName + out.CertFile = in.CertFile + out.KeyFile = in.KeyFile + out.CAFile = in.CAFile + out.CertData = *(*[]byte)(unsafe.Pointer(&in.CertData)) + out.KeyData = *(*[]byte)(unsafe.Pointer(&in.KeyData)) + out.CAData = *(*[]byte)(unsafe.Pointer(&in.CAData)) + return nil +} + +// Convert_v1_ExtenderTLSConfig_To_config_ExtenderTLSConfig is an autogenerated conversion function. +func Convert_v1_ExtenderTLSConfig_To_config_ExtenderTLSConfig(in *v1.ExtenderTLSConfig, out *config.ExtenderTLSConfig, s conversion.Scope) error { + return autoConvert_v1_ExtenderTLSConfig_To_config_ExtenderTLSConfig(in, out, s) +} + +func autoConvert_config_ExtenderTLSConfig_To_v1_ExtenderTLSConfig(in *config.ExtenderTLSConfig, out *v1.ExtenderTLSConfig, s conversion.Scope) error { + out.Insecure = in.Insecure + out.ServerName = in.ServerName + out.CertFile = in.CertFile + out.KeyFile = in.KeyFile + out.CAFile = in.CAFile + out.CertData = *(*[]byte)(unsafe.Pointer(&in.CertData)) + out.KeyData = *(*[]byte)(unsafe.Pointer(&in.KeyData)) + out.CAData = *(*[]byte)(unsafe.Pointer(&in.CAData)) + return nil +} + +// Convert_config_ExtenderTLSConfig_To_v1_ExtenderTLSConfig is an autogenerated conversion function. +func Convert_config_ExtenderTLSConfig_To_v1_ExtenderTLSConfig(in *config.ExtenderTLSConfig, out *v1.ExtenderTLSConfig, s conversion.Scope) error { + return autoConvert_config_ExtenderTLSConfig_To_v1_ExtenderTLSConfig(in, out, s) +} + +func autoConvert_v1_InterPodAffinityArgs_To_config_InterPodAffinityArgs(in *v1.InterPodAffinityArgs, out *config.InterPodAffinityArgs, s conversion.Scope) error { + if err := metav1.Convert_Pointer_int32_To_int32(&in.HardPodAffinityWeight, &out.HardPodAffinityWeight, s); err != nil { + return err + } + return nil +} + +// Convert_v1_InterPodAffinityArgs_To_config_InterPodAffinityArgs is an autogenerated conversion function. +func Convert_v1_InterPodAffinityArgs_To_config_InterPodAffinityArgs(in *v1.InterPodAffinityArgs, out *config.InterPodAffinityArgs, s conversion.Scope) error { + return autoConvert_v1_InterPodAffinityArgs_To_config_InterPodAffinityArgs(in, out, s) +} + +func autoConvert_config_InterPodAffinityArgs_To_v1_InterPodAffinityArgs(in *config.InterPodAffinityArgs, out *v1.InterPodAffinityArgs, s conversion.Scope) error { + if err := metav1.Convert_int32_To_Pointer_int32(&in.HardPodAffinityWeight, &out.HardPodAffinityWeight, s); err != nil { + return err + } + return nil +} + +// Convert_config_InterPodAffinityArgs_To_v1_InterPodAffinityArgs is an autogenerated conversion function. +func Convert_config_InterPodAffinityArgs_To_v1_InterPodAffinityArgs(in *config.InterPodAffinityArgs, out *v1.InterPodAffinityArgs, s conversion.Scope) error { + return autoConvert_config_InterPodAffinityArgs_To_v1_InterPodAffinityArgs(in, out, s) +} + +func autoConvert_v1_KubeSchedulerConfiguration_To_config_KubeSchedulerConfiguration(in *v1.KubeSchedulerConfiguration, out *config.KubeSchedulerConfiguration, s conversion.Scope) error { + if err := metav1.Convert_Pointer_int32_To_int32(&in.Parallelism, &out.Parallelism, s); err != nil { + return err + } + if err := v1alpha1.Convert_v1alpha1_LeaderElectionConfiguration_To_config_LeaderElectionConfiguration(&in.LeaderElection, &out.LeaderElection, s); err != nil { + return err + } + if err := v1alpha1.Convert_v1alpha1_ClientConnectionConfiguration_To_config_ClientConnectionConfiguration(&in.ClientConnection, &out.ClientConnection, s); err != nil { + return err + } + if err := v1alpha1.Convert_v1alpha1_DebuggingConfiguration_To_config_DebuggingConfiguration(&in.DebuggingConfiguration, &out.DebuggingConfiguration, s); err != nil { + return err + } + if err := metav1.Convert_Pointer_int32_To_int32(&in.PercentageOfNodesToScore, &out.PercentageOfNodesToScore, s); err != nil { + return err + } + if err := metav1.Convert_Pointer_int64_To_int64(&in.PodInitialBackoffSeconds, &out.PodInitialBackoffSeconds, s); err != nil { + return err + } + if err := metav1.Convert_Pointer_int64_To_int64(&in.PodMaxBackoffSeconds, &out.PodMaxBackoffSeconds, s); err != nil { + return err + } + if in.Profiles != nil { + in, out := &in.Profiles, &out.Profiles + *out = make([]config.KubeSchedulerProfile, len(*in)) + for i := range *in { + if err := Convert_v1_KubeSchedulerProfile_To_config_KubeSchedulerProfile(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Profiles = nil + } + out.Extenders = *(*[]config.Extender)(unsafe.Pointer(&in.Extenders)) + return nil +} + +func autoConvert_config_KubeSchedulerConfiguration_To_v1_KubeSchedulerConfiguration(in *config.KubeSchedulerConfiguration, out *v1.KubeSchedulerConfiguration, s conversion.Scope) error { + if err := metav1.Convert_int32_To_Pointer_int32(&in.Parallelism, &out.Parallelism, s); err != nil { + return err + } + if err := v1alpha1.Convert_config_LeaderElectionConfiguration_To_v1alpha1_LeaderElectionConfiguration(&in.LeaderElection, &out.LeaderElection, s); err != nil { + return err + } + if err := v1alpha1.Convert_config_ClientConnectionConfiguration_To_v1alpha1_ClientConnectionConfiguration(&in.ClientConnection, &out.ClientConnection, s); err != nil { + return err + } + // WARNING: in.HealthzBindAddress requires manual conversion: does not exist in peer-type + // WARNING: in.MetricsBindAddress requires manual conversion: does not exist in peer-type + if err := v1alpha1.Convert_config_DebuggingConfiguration_To_v1alpha1_DebuggingConfiguration(&in.DebuggingConfiguration, &out.DebuggingConfiguration, s); err != nil { + return err + } + if err := metav1.Convert_int32_To_Pointer_int32(&in.PercentageOfNodesToScore, &out.PercentageOfNodesToScore, s); err != nil { + return err + } + if err := metav1.Convert_int64_To_Pointer_int64(&in.PodInitialBackoffSeconds, &out.PodInitialBackoffSeconds, s); err != nil { + return err + } + if err := metav1.Convert_int64_To_Pointer_int64(&in.PodMaxBackoffSeconds, &out.PodMaxBackoffSeconds, s); err != nil { + return err + } + if in.Profiles != nil { + in, out := &in.Profiles, &out.Profiles + *out = make([]v1.KubeSchedulerProfile, len(*in)) + for i := range *in { + if err := Convert_config_KubeSchedulerProfile_To_v1_KubeSchedulerProfile(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Profiles = nil + } + out.Extenders = *(*[]v1.Extender)(unsafe.Pointer(&in.Extenders)) + return nil +} + +func autoConvert_v1_KubeSchedulerProfile_To_config_KubeSchedulerProfile(in *v1.KubeSchedulerProfile, out *config.KubeSchedulerProfile, s conversion.Scope) error { + if err := metav1.Convert_Pointer_string_To_string(&in.SchedulerName, &out.SchedulerName, s); err != nil { + return err + } + if in.Plugins != nil { + in, out := &in.Plugins, &out.Plugins + *out = new(config.Plugins) + if err := Convert_v1_Plugins_To_config_Plugins(*in, *out, s); err != nil { + return err + } + } else { + out.Plugins = nil + } + if in.PluginConfig != nil { + in, out := &in.PluginConfig, &out.PluginConfig + *out = make([]config.PluginConfig, len(*in)) + for i := range *in { + if err := Convert_v1_PluginConfig_To_config_PluginConfig(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PluginConfig = nil + } + return nil +} + +// Convert_v1_KubeSchedulerProfile_To_config_KubeSchedulerProfile is an autogenerated conversion function. +func Convert_v1_KubeSchedulerProfile_To_config_KubeSchedulerProfile(in *v1.KubeSchedulerProfile, out *config.KubeSchedulerProfile, s conversion.Scope) error { + return autoConvert_v1_KubeSchedulerProfile_To_config_KubeSchedulerProfile(in, out, s) +} + +func autoConvert_config_KubeSchedulerProfile_To_v1_KubeSchedulerProfile(in *config.KubeSchedulerProfile, out *v1.KubeSchedulerProfile, s conversion.Scope) error { + if err := metav1.Convert_string_To_Pointer_string(&in.SchedulerName, &out.SchedulerName, s); err != nil { + return err + } + if in.Plugins != nil { + in, out := &in.Plugins, &out.Plugins + *out = new(v1.Plugins) + if err := Convert_config_Plugins_To_v1_Plugins(*in, *out, s); err != nil { + return err + } + } else { + out.Plugins = nil + } + if in.PluginConfig != nil { + in, out := &in.PluginConfig, &out.PluginConfig + *out = make([]v1.PluginConfig, len(*in)) + for i := range *in { + if err := Convert_config_PluginConfig_To_v1_PluginConfig(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.PluginConfig = nil + } + return nil +} + +// Convert_config_KubeSchedulerProfile_To_v1_KubeSchedulerProfile is an autogenerated conversion function. +func Convert_config_KubeSchedulerProfile_To_v1_KubeSchedulerProfile(in *config.KubeSchedulerProfile, out *v1.KubeSchedulerProfile, s conversion.Scope) error { + return autoConvert_config_KubeSchedulerProfile_To_v1_KubeSchedulerProfile(in, out, s) +} + +func autoConvert_v1_NodeAffinityArgs_To_config_NodeAffinityArgs(in *v1.NodeAffinityArgs, out *config.NodeAffinityArgs, s conversion.Scope) error { + out.AddedAffinity = (*corev1.NodeAffinity)(unsafe.Pointer(in.AddedAffinity)) + return nil +} + +// Convert_v1_NodeAffinityArgs_To_config_NodeAffinityArgs is an autogenerated conversion function. +func Convert_v1_NodeAffinityArgs_To_config_NodeAffinityArgs(in *v1.NodeAffinityArgs, out *config.NodeAffinityArgs, s conversion.Scope) error { + return autoConvert_v1_NodeAffinityArgs_To_config_NodeAffinityArgs(in, out, s) +} + +func autoConvert_config_NodeAffinityArgs_To_v1_NodeAffinityArgs(in *config.NodeAffinityArgs, out *v1.NodeAffinityArgs, s conversion.Scope) error { + out.AddedAffinity = (*corev1.NodeAffinity)(unsafe.Pointer(in.AddedAffinity)) + return nil +} + +// Convert_config_NodeAffinityArgs_To_v1_NodeAffinityArgs is an autogenerated conversion function. +func Convert_config_NodeAffinityArgs_To_v1_NodeAffinityArgs(in *config.NodeAffinityArgs, out *v1.NodeAffinityArgs, s conversion.Scope) error { + return autoConvert_config_NodeAffinityArgs_To_v1_NodeAffinityArgs(in, out, s) +} + +func autoConvert_v1_NodeResourcesBalancedAllocationArgs_To_config_NodeResourcesBalancedAllocationArgs(in *v1.NodeResourcesBalancedAllocationArgs, out *config.NodeResourcesBalancedAllocationArgs, s conversion.Scope) error { + out.Resources = *(*[]config.ResourceSpec)(unsafe.Pointer(&in.Resources)) + return nil +} + +// Convert_v1_NodeResourcesBalancedAllocationArgs_To_config_NodeResourcesBalancedAllocationArgs is an autogenerated conversion function. +func Convert_v1_NodeResourcesBalancedAllocationArgs_To_config_NodeResourcesBalancedAllocationArgs(in *v1.NodeResourcesBalancedAllocationArgs, out *config.NodeResourcesBalancedAllocationArgs, s conversion.Scope) error { + return autoConvert_v1_NodeResourcesBalancedAllocationArgs_To_config_NodeResourcesBalancedAllocationArgs(in, out, s) +} + +func autoConvert_config_NodeResourcesBalancedAllocationArgs_To_v1_NodeResourcesBalancedAllocationArgs(in *config.NodeResourcesBalancedAllocationArgs, out *v1.NodeResourcesBalancedAllocationArgs, s conversion.Scope) error { + out.Resources = *(*[]v1.ResourceSpec)(unsafe.Pointer(&in.Resources)) + return nil +} + +// Convert_config_NodeResourcesBalancedAllocationArgs_To_v1_NodeResourcesBalancedAllocationArgs is an autogenerated conversion function. +func Convert_config_NodeResourcesBalancedAllocationArgs_To_v1_NodeResourcesBalancedAllocationArgs(in *config.NodeResourcesBalancedAllocationArgs, out *v1.NodeResourcesBalancedAllocationArgs, s conversion.Scope) error { + return autoConvert_config_NodeResourcesBalancedAllocationArgs_To_v1_NodeResourcesBalancedAllocationArgs(in, out, s) +} + +func autoConvert_v1_NodeResourcesFitArgs_To_config_NodeResourcesFitArgs(in *v1.NodeResourcesFitArgs, out *config.NodeResourcesFitArgs, s conversion.Scope) error { + out.IgnoredResources = *(*[]string)(unsafe.Pointer(&in.IgnoredResources)) + out.IgnoredResourceGroups = *(*[]string)(unsafe.Pointer(&in.IgnoredResourceGroups)) + out.ScoringStrategy = (*config.ScoringStrategy)(unsafe.Pointer(in.ScoringStrategy)) + return nil +} + +// Convert_v1_NodeResourcesFitArgs_To_config_NodeResourcesFitArgs is an autogenerated conversion function. +func Convert_v1_NodeResourcesFitArgs_To_config_NodeResourcesFitArgs(in *v1.NodeResourcesFitArgs, out *config.NodeResourcesFitArgs, s conversion.Scope) error { + return autoConvert_v1_NodeResourcesFitArgs_To_config_NodeResourcesFitArgs(in, out, s) +} + +func autoConvert_config_NodeResourcesFitArgs_To_v1_NodeResourcesFitArgs(in *config.NodeResourcesFitArgs, out *v1.NodeResourcesFitArgs, s conversion.Scope) error { + out.IgnoredResources = *(*[]string)(unsafe.Pointer(&in.IgnoredResources)) + out.IgnoredResourceGroups = *(*[]string)(unsafe.Pointer(&in.IgnoredResourceGroups)) + out.ScoringStrategy = (*v1.ScoringStrategy)(unsafe.Pointer(in.ScoringStrategy)) + return nil +} + +// Convert_config_NodeResourcesFitArgs_To_v1_NodeResourcesFitArgs is an autogenerated conversion function. +func Convert_config_NodeResourcesFitArgs_To_v1_NodeResourcesFitArgs(in *config.NodeResourcesFitArgs, out *v1.NodeResourcesFitArgs, s conversion.Scope) error { + return autoConvert_config_NodeResourcesFitArgs_To_v1_NodeResourcesFitArgs(in, out, s) +} + +func autoConvert_v1_Plugin_To_config_Plugin(in *v1.Plugin, out *config.Plugin, s conversion.Scope) error { + out.Name = in.Name + if err := metav1.Convert_Pointer_int32_To_int32(&in.Weight, &out.Weight, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Plugin_To_config_Plugin is an autogenerated conversion function. +func Convert_v1_Plugin_To_config_Plugin(in *v1.Plugin, out *config.Plugin, s conversion.Scope) error { + return autoConvert_v1_Plugin_To_config_Plugin(in, out, s) +} + +func autoConvert_config_Plugin_To_v1_Plugin(in *config.Plugin, out *v1.Plugin, s conversion.Scope) error { + out.Name = in.Name + if err := metav1.Convert_int32_To_Pointer_int32(&in.Weight, &out.Weight, s); err != nil { + return err + } + return nil +} + +// Convert_config_Plugin_To_v1_Plugin is an autogenerated conversion function. +func Convert_config_Plugin_To_v1_Plugin(in *config.Plugin, out *v1.Plugin, s conversion.Scope) error { + return autoConvert_config_Plugin_To_v1_Plugin(in, out, s) +} + +func autoConvert_v1_PluginConfig_To_config_PluginConfig(in *v1.PluginConfig, out *config.PluginConfig, s conversion.Scope) error { + out.Name = in.Name + if err := runtime.Convert_runtime_RawExtension_To_runtime_Object(&in.Args, &out.Args, s); err != nil { + return err + } + return nil +} + +// Convert_v1_PluginConfig_To_config_PluginConfig is an autogenerated conversion function. +func Convert_v1_PluginConfig_To_config_PluginConfig(in *v1.PluginConfig, out *config.PluginConfig, s conversion.Scope) error { + return autoConvert_v1_PluginConfig_To_config_PluginConfig(in, out, s) +} + +func autoConvert_config_PluginConfig_To_v1_PluginConfig(in *config.PluginConfig, out *v1.PluginConfig, s conversion.Scope) error { + out.Name = in.Name + if err := runtime.Convert_runtime_Object_To_runtime_RawExtension(&in.Args, &out.Args, s); err != nil { + return err + } + return nil +} + +// Convert_config_PluginConfig_To_v1_PluginConfig is an autogenerated conversion function. +func Convert_config_PluginConfig_To_v1_PluginConfig(in *config.PluginConfig, out *v1.PluginConfig, s conversion.Scope) error { + return autoConvert_config_PluginConfig_To_v1_PluginConfig(in, out, s) +} + +func autoConvert_v1_PluginSet_To_config_PluginSet(in *v1.PluginSet, out *config.PluginSet, s conversion.Scope) error { + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = make([]config.Plugin, len(*in)) + for i := range *in { + if err := Convert_v1_Plugin_To_config_Plugin(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Enabled = nil + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = make([]config.Plugin, len(*in)) + for i := range *in { + if err := Convert_v1_Plugin_To_config_Plugin(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Disabled = nil + } + return nil +} + +// Convert_v1_PluginSet_To_config_PluginSet is an autogenerated conversion function. +func Convert_v1_PluginSet_To_config_PluginSet(in *v1.PluginSet, out *config.PluginSet, s conversion.Scope) error { + return autoConvert_v1_PluginSet_To_config_PluginSet(in, out, s) +} + +func autoConvert_config_PluginSet_To_v1_PluginSet(in *config.PluginSet, out *v1.PluginSet, s conversion.Scope) error { + if in.Enabled != nil { + in, out := &in.Enabled, &out.Enabled + *out = make([]v1.Plugin, len(*in)) + for i := range *in { + if err := Convert_config_Plugin_To_v1_Plugin(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Enabled = nil + } + if in.Disabled != nil { + in, out := &in.Disabled, &out.Disabled + *out = make([]v1.Plugin, len(*in)) + for i := range *in { + if err := Convert_config_Plugin_To_v1_Plugin(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.Disabled = nil + } + return nil +} + +// Convert_config_PluginSet_To_v1_PluginSet is an autogenerated conversion function. +func Convert_config_PluginSet_To_v1_PluginSet(in *config.PluginSet, out *v1.PluginSet, s conversion.Scope) error { + return autoConvert_config_PluginSet_To_v1_PluginSet(in, out, s) +} + +func autoConvert_v1_Plugins_To_config_Plugins(in *v1.Plugins, out *config.Plugins, s conversion.Scope) error { + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.QueueSort, &out.QueueSort, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.PreFilter, &out.PreFilter, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.Filter, &out.Filter, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.PostFilter, &out.PostFilter, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.PreScore, &out.PreScore, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.Score, &out.Score, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.Reserve, &out.Reserve, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.Permit, &out.Permit, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.PreBind, &out.PreBind, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.Bind, &out.Bind, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.PostBind, &out.PostBind, s); err != nil { + return err + } + if err := Convert_v1_PluginSet_To_config_PluginSet(&in.MultiPoint, &out.MultiPoint, s); err != nil { + return err + } + return nil +} + +// Convert_v1_Plugins_To_config_Plugins is an autogenerated conversion function. +func Convert_v1_Plugins_To_config_Plugins(in *v1.Plugins, out *config.Plugins, s conversion.Scope) error { + return autoConvert_v1_Plugins_To_config_Plugins(in, out, s) +} + +func autoConvert_config_Plugins_To_v1_Plugins(in *config.Plugins, out *v1.Plugins, s conversion.Scope) error { + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.QueueSort, &out.QueueSort, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.PreFilter, &out.PreFilter, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.Filter, &out.Filter, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.PostFilter, &out.PostFilter, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.PreScore, &out.PreScore, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.Score, &out.Score, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.Reserve, &out.Reserve, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.Permit, &out.Permit, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.PreBind, &out.PreBind, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.Bind, &out.Bind, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.PostBind, &out.PostBind, s); err != nil { + return err + } + if err := Convert_config_PluginSet_To_v1_PluginSet(&in.MultiPoint, &out.MultiPoint, s); err != nil { + return err + } + return nil +} + +// Convert_config_Plugins_To_v1_Plugins is an autogenerated conversion function. +func Convert_config_Plugins_To_v1_Plugins(in *config.Plugins, out *v1.Plugins, s conversion.Scope) error { + return autoConvert_config_Plugins_To_v1_Plugins(in, out, s) +} + +func autoConvert_v1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(in *v1.PodTopologySpreadArgs, out *config.PodTopologySpreadArgs, s conversion.Scope) error { + out.DefaultConstraints = *(*[]corev1.TopologySpreadConstraint)(unsafe.Pointer(&in.DefaultConstraints)) + out.DefaultingType = config.PodTopologySpreadConstraintsDefaulting(in.DefaultingType) + return nil +} + +// Convert_v1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs is an autogenerated conversion function. +func Convert_v1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(in *v1.PodTopologySpreadArgs, out *config.PodTopologySpreadArgs, s conversion.Scope) error { + return autoConvert_v1_PodTopologySpreadArgs_To_config_PodTopologySpreadArgs(in, out, s) +} + +func autoConvert_config_PodTopologySpreadArgs_To_v1_PodTopologySpreadArgs(in *config.PodTopologySpreadArgs, out *v1.PodTopologySpreadArgs, s conversion.Scope) error { + out.DefaultConstraints = *(*[]corev1.TopologySpreadConstraint)(unsafe.Pointer(&in.DefaultConstraints)) + out.DefaultingType = v1.PodTopologySpreadConstraintsDefaulting(in.DefaultingType) + return nil +} + +// Convert_config_PodTopologySpreadArgs_To_v1_PodTopologySpreadArgs is an autogenerated conversion function. +func Convert_config_PodTopologySpreadArgs_To_v1_PodTopologySpreadArgs(in *config.PodTopologySpreadArgs, out *v1.PodTopologySpreadArgs, s conversion.Scope) error { + return autoConvert_config_PodTopologySpreadArgs_To_v1_PodTopologySpreadArgs(in, out, s) +} + +func autoConvert_v1_RequestedToCapacityRatioParam_To_config_RequestedToCapacityRatioParam(in *v1.RequestedToCapacityRatioParam, out *config.RequestedToCapacityRatioParam, s conversion.Scope) error { + out.Shape = *(*[]config.UtilizationShapePoint)(unsafe.Pointer(&in.Shape)) + return nil +} + +// Convert_v1_RequestedToCapacityRatioParam_To_config_RequestedToCapacityRatioParam is an autogenerated conversion function. +func Convert_v1_RequestedToCapacityRatioParam_To_config_RequestedToCapacityRatioParam(in *v1.RequestedToCapacityRatioParam, out *config.RequestedToCapacityRatioParam, s conversion.Scope) error { + return autoConvert_v1_RequestedToCapacityRatioParam_To_config_RequestedToCapacityRatioParam(in, out, s) +} + +func autoConvert_config_RequestedToCapacityRatioParam_To_v1_RequestedToCapacityRatioParam(in *config.RequestedToCapacityRatioParam, out *v1.RequestedToCapacityRatioParam, s conversion.Scope) error { + out.Shape = *(*[]v1.UtilizationShapePoint)(unsafe.Pointer(&in.Shape)) + return nil +} + +// Convert_config_RequestedToCapacityRatioParam_To_v1_RequestedToCapacityRatioParam is an autogenerated conversion function. +func Convert_config_RequestedToCapacityRatioParam_To_v1_RequestedToCapacityRatioParam(in *config.RequestedToCapacityRatioParam, out *v1.RequestedToCapacityRatioParam, s conversion.Scope) error { + return autoConvert_config_RequestedToCapacityRatioParam_To_v1_RequestedToCapacityRatioParam(in, out, s) +} + +func autoConvert_v1_ResourceSpec_To_config_ResourceSpec(in *v1.ResourceSpec, out *config.ResourceSpec, s conversion.Scope) error { + out.Name = in.Name + out.Weight = in.Weight + return nil +} + +// Convert_v1_ResourceSpec_To_config_ResourceSpec is an autogenerated conversion function. +func Convert_v1_ResourceSpec_To_config_ResourceSpec(in *v1.ResourceSpec, out *config.ResourceSpec, s conversion.Scope) error { + return autoConvert_v1_ResourceSpec_To_config_ResourceSpec(in, out, s) +} + +func autoConvert_config_ResourceSpec_To_v1_ResourceSpec(in *config.ResourceSpec, out *v1.ResourceSpec, s conversion.Scope) error { + out.Name = in.Name + out.Weight = in.Weight + return nil +} + +// Convert_config_ResourceSpec_To_v1_ResourceSpec is an autogenerated conversion function. +func Convert_config_ResourceSpec_To_v1_ResourceSpec(in *config.ResourceSpec, out *v1.ResourceSpec, s conversion.Scope) error { + return autoConvert_config_ResourceSpec_To_v1_ResourceSpec(in, out, s) +} + +func autoConvert_v1_ScoringStrategy_To_config_ScoringStrategy(in *v1.ScoringStrategy, out *config.ScoringStrategy, s conversion.Scope) error { + out.Type = config.ScoringStrategyType(in.Type) + out.Resources = *(*[]config.ResourceSpec)(unsafe.Pointer(&in.Resources)) + out.RequestedToCapacityRatio = (*config.RequestedToCapacityRatioParam)(unsafe.Pointer(in.RequestedToCapacityRatio)) + return nil +} + +// Convert_v1_ScoringStrategy_To_config_ScoringStrategy is an autogenerated conversion function. +func Convert_v1_ScoringStrategy_To_config_ScoringStrategy(in *v1.ScoringStrategy, out *config.ScoringStrategy, s conversion.Scope) error { + return autoConvert_v1_ScoringStrategy_To_config_ScoringStrategy(in, out, s) +} + +func autoConvert_config_ScoringStrategy_To_v1_ScoringStrategy(in *config.ScoringStrategy, out *v1.ScoringStrategy, s conversion.Scope) error { + out.Type = v1.ScoringStrategyType(in.Type) + out.Resources = *(*[]v1.ResourceSpec)(unsafe.Pointer(&in.Resources)) + out.RequestedToCapacityRatio = (*v1.RequestedToCapacityRatioParam)(unsafe.Pointer(in.RequestedToCapacityRatio)) + return nil +} + +// Convert_config_ScoringStrategy_To_v1_ScoringStrategy is an autogenerated conversion function. +func Convert_config_ScoringStrategy_To_v1_ScoringStrategy(in *config.ScoringStrategy, out *v1.ScoringStrategy, s conversion.Scope) error { + return autoConvert_config_ScoringStrategy_To_v1_ScoringStrategy(in, out, s) +} + +func autoConvert_v1_UtilizationShapePoint_To_config_UtilizationShapePoint(in *v1.UtilizationShapePoint, out *config.UtilizationShapePoint, s conversion.Scope) error { + out.Utilization = in.Utilization + out.Score = in.Score + return nil +} + +// Convert_v1_UtilizationShapePoint_To_config_UtilizationShapePoint is an autogenerated conversion function. +func Convert_v1_UtilizationShapePoint_To_config_UtilizationShapePoint(in *v1.UtilizationShapePoint, out *config.UtilizationShapePoint, s conversion.Scope) error { + return autoConvert_v1_UtilizationShapePoint_To_config_UtilizationShapePoint(in, out, s) +} + +func autoConvert_config_UtilizationShapePoint_To_v1_UtilizationShapePoint(in *config.UtilizationShapePoint, out *v1.UtilizationShapePoint, s conversion.Scope) error { + out.Utilization = in.Utilization + out.Score = in.Score + return nil +} + +// Convert_config_UtilizationShapePoint_To_v1_UtilizationShapePoint is an autogenerated conversion function. +func Convert_config_UtilizationShapePoint_To_v1_UtilizationShapePoint(in *config.UtilizationShapePoint, out *v1.UtilizationShapePoint, s conversion.Scope) error { + return autoConvert_config_UtilizationShapePoint_To_v1_UtilizationShapePoint(in, out, s) +} + +func autoConvert_v1_VolumeBindingArgs_To_config_VolumeBindingArgs(in *v1.VolumeBindingArgs, out *config.VolumeBindingArgs, s conversion.Scope) error { + if err := metav1.Convert_Pointer_int64_To_int64(&in.BindTimeoutSeconds, &out.BindTimeoutSeconds, s); err != nil { + return err + } + out.Shape = *(*[]config.UtilizationShapePoint)(unsafe.Pointer(&in.Shape)) + return nil +} + +// Convert_v1_VolumeBindingArgs_To_config_VolumeBindingArgs is an autogenerated conversion function. +func Convert_v1_VolumeBindingArgs_To_config_VolumeBindingArgs(in *v1.VolumeBindingArgs, out *config.VolumeBindingArgs, s conversion.Scope) error { + return autoConvert_v1_VolumeBindingArgs_To_config_VolumeBindingArgs(in, out, s) +} + +func autoConvert_config_VolumeBindingArgs_To_v1_VolumeBindingArgs(in *config.VolumeBindingArgs, out *v1.VolumeBindingArgs, s conversion.Scope) error { + if err := metav1.Convert_int64_To_Pointer_int64(&in.BindTimeoutSeconds, &out.BindTimeoutSeconds, s); err != nil { + return err + } + out.Shape = *(*[]v1.UtilizationShapePoint)(unsafe.Pointer(&in.Shape)) + return nil +} + +// Convert_config_VolumeBindingArgs_To_v1_VolumeBindingArgs is an autogenerated conversion function. +func Convert_config_VolumeBindingArgs_To_v1_VolumeBindingArgs(in *config.VolumeBindingArgs, out *v1.VolumeBindingArgs, s conversion.Scope) error { + return autoConvert_config_VolumeBindingArgs_To_v1_VolumeBindingArgs(in, out, s) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.deepcopy.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.deepcopy.go new file mode 100644 index 00000000000..87181b43048 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.deepcopy.go @@ -0,0 +1,22 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by deepcopy-gen. DO NOT EDIT. + +package v1 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.defaults.go new file mode 100644 index 00000000000..ac93d735c4f --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1/zz_generated.defaults.go @@ -0,0 +1,73 @@ +//go:build !ignore_autogenerated +// +build !ignore_autogenerated + +/* +Copyright The Kubernetes 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. +*/ + +// Code generated by defaulter-gen. DO NOT EDIT. + +package v1 + +import ( + runtime "k8s.io/apimachinery/pkg/runtime" + v1 "k8s.io/kube-scheduler/config/v1" +) + +// RegisterDefaults adds defaulters functions to the given scheme. +// Public to allow building arbitrary schemes. +// All generated defaulters are covering - they call all nested defaulters. +func RegisterDefaults(scheme *runtime.Scheme) error { + scheme.AddTypeDefaultingFunc(&v1.DefaultPreemptionArgs{}, func(obj interface{}) { SetObjectDefaults_DefaultPreemptionArgs(obj.(*v1.DefaultPreemptionArgs)) }) + scheme.AddTypeDefaultingFunc(&v1.InterPodAffinityArgs{}, func(obj interface{}) { SetObjectDefaults_InterPodAffinityArgs(obj.(*v1.InterPodAffinityArgs)) }) + scheme.AddTypeDefaultingFunc(&v1.KubeSchedulerConfiguration{}, func(obj interface{}) { + SetObjectDefaults_KubeSchedulerConfiguration(obj.(*v1.KubeSchedulerConfiguration)) + }) + scheme.AddTypeDefaultingFunc(&v1.NodeResourcesBalancedAllocationArgs{}, func(obj interface{}) { + SetObjectDefaults_NodeResourcesBalancedAllocationArgs(obj.(*v1.NodeResourcesBalancedAllocationArgs)) + }) + scheme.AddTypeDefaultingFunc(&v1.NodeResourcesFitArgs{}, func(obj interface{}) { SetObjectDefaults_NodeResourcesFitArgs(obj.(*v1.NodeResourcesFitArgs)) }) + scheme.AddTypeDefaultingFunc(&v1.PodTopologySpreadArgs{}, func(obj interface{}) { SetObjectDefaults_PodTopologySpreadArgs(obj.(*v1.PodTopologySpreadArgs)) }) + scheme.AddTypeDefaultingFunc(&v1.VolumeBindingArgs{}, func(obj interface{}) { SetObjectDefaults_VolumeBindingArgs(obj.(*v1.VolumeBindingArgs)) }) + return nil +} + +func SetObjectDefaults_DefaultPreemptionArgs(in *v1.DefaultPreemptionArgs) { + SetDefaults_DefaultPreemptionArgs(in) +} + +func SetObjectDefaults_InterPodAffinityArgs(in *v1.InterPodAffinityArgs) { + SetDefaults_InterPodAffinityArgs(in) +} + +func SetObjectDefaults_KubeSchedulerConfiguration(in *v1.KubeSchedulerConfiguration) { + SetDefaults_KubeSchedulerConfiguration(in) +} + +func SetObjectDefaults_NodeResourcesBalancedAllocationArgs(in *v1.NodeResourcesBalancedAllocationArgs) { + SetDefaults_NodeResourcesBalancedAllocationArgs(in) +} + +func SetObjectDefaults_NodeResourcesFitArgs(in *v1.NodeResourcesFitArgs) { + SetDefaults_NodeResourcesFitArgs(in) +} + +func SetObjectDefaults_PodTopologySpreadArgs(in *v1.PodTopologySpreadArgs) { + SetDefaults_PodTopologySpreadArgs(in) +} + +func SetObjectDefaults_VolumeBindingArgs(in *v1.VolumeBindingArgs) { + SetDefaults_VolumeBindingArgs(in) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta2/defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta2/defaults.go index 60ef8f065a8..1d6fa24166d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta2/defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta2/defaults.go @@ -180,9 +180,6 @@ func SetDefaults_DefaultPreemptionArgs(obj *v1beta2.DefaultPreemptionArgs) { } func SetDefaults_InterPodAffinityArgs(obj *v1beta2.InterPodAffinityArgs) { - // Note that an object is created manually in cmd/kube-scheduler/app/options/deprecated.go - // DeprecatedOptions#ApplyTo. - // Update that object if a new default field is added here. if obj.HardPodAffinityWeight == nil { obj.HardPodAffinityWeight = pointer.Int32Ptr(1) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta3/defaults.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta3/defaults.go index 0ff3781a421..84552b5cbdc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta3/defaults.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta3/defaults.go @@ -181,9 +181,6 @@ func SetDefaults_DefaultPreemptionArgs(obj *v1beta3.DefaultPreemptionArgs) { } func SetDefaults_InterPodAffinityArgs(obj *v1beta3.InterPodAffinityArgs) { - // Note that an object is created manually in cmd/kube-scheduler/app/options/deprecated.go - // DeprecatedOptions#ApplyTo. - // Update that object if a new default field is added here. if obj.HardPodAffinityWeight == nil { obj.HardPodAffinityWeight = pointer.Int32Ptr(1) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation.go index 2aae138ce5a..277714c38a0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation.go @@ -117,15 +117,15 @@ func splitHostIntPort(s string) (string, int, error) { return host, portInt, err } -type removedPlugins struct { +type invalidPlugins struct { schemeGroupVersion string plugins []string } -// removedPluginsByVersion maintains a list of removed plugins in each version. +// invalidPluginsByVersion maintains a list of removed/deprecated plugins in each version. // Remember to add an entry to that list when creating a new component config -// version (even if the list of removed plugins is empty). -var removedPluginsByVersion = []removedPlugins{ +// version (even if the list of invalid plugins is empty). +var invalidPluginsByVersion = []invalidPlugins{ { schemeGroupVersion: v1beta2.SchemeGroupVersion.String(), plugins: []string{}, @@ -134,12 +134,16 @@ var removedPluginsByVersion = []removedPlugins{ schemeGroupVersion: v1beta3.SchemeGroupVersion.String(), plugins: []string{}, }, + { + schemeGroupVersion: v1.SchemeGroupVersion.String(), + plugins: []string{"SelectorSpread"}, + }, } -// isPluginRemoved checks if a given plugin was removed in the given component +// isPluginInvalid checks if a given plugin was removed/deprecated in the given component // config version or earlier. -func isPluginRemoved(apiVersion string, name string) (bool, string) { - for _, dp := range removedPluginsByVersion { +func isPluginInvalid(apiVersion string, name string) (bool, string) { + for _, dp := range invalidPluginsByVersion { for _, plugin := range dp.plugins { if name == plugin { return true, dp.schemeGroupVersion @@ -152,11 +156,11 @@ func isPluginRemoved(apiVersion string, name string) (bool, string) { return false, "" } -func validatePluginSetForRemovedPlugins(path *field.Path, apiVersion string, ps config.PluginSet) []error { +func validatePluginSetForInvalidPlugins(path *field.Path, apiVersion string, ps config.PluginSet) []error { var errs []error for i, plugin := range ps.Enabled { - if removed, removedVersion := isPluginRemoved(apiVersion, plugin.Name); removed { - errs = append(errs, field.Invalid(path.Child("enabled").Index(i), plugin.Name, fmt.Sprintf("was removed in version %q (KubeSchedulerConfiguration is version %q)", removedVersion, apiVersion))) + if invalid, invalidVersion := isPluginInvalid(apiVersion, plugin.Name); invalid { + errs = append(errs, field.Invalid(path.Child("enabled").Index(i), plugin.Name, fmt.Sprintf("was invalid in version %q (KubeSchedulerConfiguration is version %q)", invalidVersion, apiVersion))) } } return errs @@ -200,7 +204,7 @@ func validatePluginConfig(path *field.Path, apiVersion string, profile *config.K pluginsPath := path.Child("plugins") for s, p := range stagesToPluginSet { - errs = append(errs, validatePluginSetForRemovedPlugins( + errs = append(errs, validatePluginSetForInvalidPlugins( pluginsPath.Child(s), apiVersion, p)...) } } @@ -216,8 +220,8 @@ func validatePluginConfig(path *field.Path, apiVersion string, profile *config.K } else { seenPluginConfig.Insert(name) } - if removed, removedVersion := isPluginRemoved(apiVersion, name); removed { - errs = append(errs, field.Invalid(pluginConfigPath, name, fmt.Sprintf("was removed in version %q (KubeSchedulerConfiguration is version %q)", removedVersion, apiVersion))) + if invalid, invalidVersion := isPluginInvalid(apiVersion, name); invalid { + errs = append(errs, field.Invalid(pluginConfigPath, name, fmt.Sprintf("was invalid in version %q (KubeSchedulerConfiguration is version %q)", invalidVersion, apiVersion))) } else if validateFunc, ok := m[name]; ok { // type mismatch, no need to validate the `args`. if reflect.TypeOf(args) != reflect.ValueOf(validateFunc).Type().In(1) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation_pluginargs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation_pluginargs.go index 56304b3e8f1..325a6bc6779 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation_pluginargs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/apis/config/validation/validation_pluginargs.go @@ -31,6 +31,12 @@ import ( "k8s.io/kubernetes/pkg/scheduler/apis/config" ) +var supportedScoringStrategyTypes = sets.NewString( + string(config.LeastAllocated), + string(config.MostAllocated), + string(config.RequestedToCapacityRatio), +) + // ValidateDefaultPreemptionArgs validates that DefaultPreemptionArgs are correct. func ValidateDefaultPreemptionArgs(path *field.Path, args *config.DefaultPreemptionArgs) error { var allErrs field.ErrorList @@ -304,10 +310,14 @@ func ValidateNodeResourcesFitArgs(path *field.Path, args *config.NodeResourcesFi } } + strategyPath := path.Child("scoringStrategy") if args.ScoringStrategy != nil { - allErrs = append(allErrs, validateResources(args.ScoringStrategy.Resources, path.Child("resources"))...) + if !supportedScoringStrategyTypes.Has(string(args.ScoringStrategy.Type)) { + allErrs = append(allErrs, field.NotSupported(strategyPath.Child("type"), args.ScoringStrategy.Type, supportedScoringStrategyTypes.List())) + } + allErrs = append(allErrs, validateResources(args.ScoringStrategy.Resources, strategyPath.Child("resources"))...) if args.ScoringStrategy.RequestedToCapacityRatio != nil { - allErrs = append(allErrs, validateFunctionShape(args.ScoringStrategy.RequestedToCapacityRatio.Shape, path.Child("shape"))...) + allErrs = append(allErrs, validateFunctionShape(args.ScoringStrategy.RequestedToCapacityRatio.Shape, strategyPath.Child("shape"))...) } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/extender.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/extender.go index e29026ad155..8350e04c95a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/extender.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/extender.go @@ -114,36 +114,6 @@ func NewHTTPExtender(config *schedulerapi.Extender) (framework.Extender, error) }, nil } -// Equal is used to check if two extenders are equal -// ignoring the client field, exported for testing -func Equal(e1, e2 *HTTPExtender) bool { - if e1.extenderURL != e2.extenderURL { - return false - } - if e1.preemptVerb != e2.preemptVerb { - return false - } - if e1.prioritizeVerb != e2.prioritizeVerb { - return false - } - if e1.bindVerb != e2.bindVerb { - return false - } - if e1.weight != e2.weight { - return false - } - if e1.nodeCacheCapable != e2.nodeCacheCapable { - return false - } - if !e1.managedResources.Equal(e2.managedResources) { - return false - } - if e1.ignorable != e2.ignorable { - return false - } - return true -} - // Name returns extenderURL to identify the extender. func (h *HTTPExtender) Name() string { return h.extenderURL diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go index feadee9af8d..00a14ad1a39 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/interface.go @@ -209,7 +209,7 @@ func (s *Status) IsUnschedulable() bool { return code == Unschedulable || code == UnschedulableAndUnresolvable } -// AsError returns nil if the status is a success or a wait; otherwise returns an "error" object +// AsError returns nil if the status is a success, a wait or a skip; otherwise returns an "error" object // with a concatenated message on reasons of the Status. func (s *Status) AsError() error { if s.IsSuccess() || s.IsWait() || s.IsSkip() { @@ -641,11 +641,11 @@ func (p *PreFilterResult) Merge(in *PreFilterResult) *PreFilterResult { r := PreFilterResult{} if p.AllNodes() { - r.NodeNames = sets.NewString(in.NodeNames.UnsortedList()...) + r.NodeNames = in.NodeNames.Clone() return &r } if in.AllNodes() { - r.NodeNames = sets.NewString(p.NodeNames.UnsortedList()...) + r.NodeNames = p.NodeNames.Clone() return &r } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature/feature.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature/feature.go index 32be4e2dce8..55bd2991518 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature/feature.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/feature/feature.go @@ -24,4 +24,5 @@ type Features struct { EnableVolumeCapacityPriority bool EnableMinDomainsInPodTopologySpread bool EnableNodeInclusionPolicyInPodTopologySpread bool + EnableMatchLabelKeysInPodTopologySpread bool } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/normalize_score.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/normalize_score.go index 2c7c951c851..3d35ca30493 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/normalize_score.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/normalize_score.go @@ -21,8 +21,9 @@ import ( ) // DefaultNormalizeScore generates a Normalize Score function that can normalize the -// scores to [0, maxPriority]. If reverse is set to true, it reverses the scores by -// subtracting it from maxPriority. +// scores from [0, max(scores)] to [0, maxPriority]. If reverse is set to true, it +// reverses the scores by subtracting it from maxPriority. +// Note: The input scores are always assumed to be non-negative integers. func DefaultNormalizeScore(maxPriority int64, reverse bool, scores framework.NodeScoreList) *framework.Status { var maxCount int64 for i := range scores { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/shape_score.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/shape_score.go index dc34b71290c..f12488b14c8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/shape_score.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper/shape_score.go @@ -32,8 +32,10 @@ type FunctionShapePoint struct { // Shape[i].Score represents function values at meeting points. // // function f(p) is defined as: -// shape[0].Score for p < shape[0].Utilization -// shape[n-1].Score for p > shape[n-1].Utilization +// +// shape[0].Score for p < shape[0].Utilization +// shape[n-1].Score for p > shape[n-1].Utilization +// // and linear between points (p < shape[i].Utilization) func BuildBrokenLinearFunction(shape FunctionShape) func(int64) int64 { return func(p int64) int64 { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go index 778a70f2c7b..11e05e9753e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/filtering.go @@ -319,7 +319,7 @@ func satisfyExistingPodsAntiAffinity(state *preFilterState, nodeInfo *framework. return true } -// Checks if the node satisfies the incoming pod's anti-affinity rules. +// Checks if the node satisfies the incoming pod's anti-affinity rules. func satisfyPodAntiAffinity(state *preFilterState, nodeInfo *framework.NodeInfo) bool { if len(state.antiAffinityCounts) > 0 { for _, term := range state.podInfo.RequiredAntiAffinityTerms { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go index f333bb6e3ca..238691bd46f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/interpodaffinity/scoring.go @@ -262,7 +262,7 @@ func (pl *InterPodAffinity) NormalizeScore(ctx context.Context, cycleState *fram } var minCount int64 = math.MaxInt64 - var maxCount int64 = -math.MaxInt64 + var maxCount int64 = math.MinInt64 for i := range scores { score := scores[i].Score if score > maxCount { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/balanced_allocation.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/balanced_allocation.go index 4f91937ba54..baad87699ac 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/balanced_allocation.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/balanced_allocation.go @@ -37,7 +37,7 @@ type BalancedAllocation struct { resourceAllocationScorer } -var _ = framework.ScorePlugin(&BalancedAllocation{}) +var _ framework.ScorePlugin = &BalancedAllocation{} // BalancedAllocationName is the name of the plugin used in the plugin registry and configurations. const BalancedAllocationName = names.NodeResourcesBalancedAllocation diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/fit.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/fit.go index e4b2a5044dd..7fea684e42d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/fit.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/fit.go @@ -135,25 +135,26 @@ func NewFit(plArgs runtime.Object, h framework.Handle, fts feature.Features) (fr // the max in each dimension iteratively. In contrast, we sum the resource vectors for // regular containers since they run simultaneously. // -// The resources defined for Overhead should be added to the calculated Resource request sum +// # The resources defined for Overhead should be added to the calculated Resource request sum // // Example: // // Pod: -// InitContainers -// IC1: -// CPU: 2 -// Memory: 1G -// IC2: -// CPU: 2 -// Memory: 3G -// Containers -// C1: -// CPU: 2 -// Memory: 1G -// C2: -// CPU: 1 -// Memory: 1G +// +// InitContainers +// IC1: +// CPU: 2 +// Memory: 1G +// IC2: +// CPU: 2 +// Memory: 3G +// Containers +// C1: +// CPU: 2 +// Memory: 1G +// C2: +// CPU: 1 +// Memory: 1G // // Result: CPU: 3, Memory: 3G func computePodResourceRequest(pod *v1.Pod) *preFilterState { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/most_allocated.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/most_allocated.go index f32925ed24b..94c55cbe325 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/most_allocated.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/noderesources/most_allocated.go @@ -25,7 +25,7 @@ import ( // based on the maximum of the average of the fraction of requested to capacity. // // Details: -// (cpu(MaxNodeScore * sum(requested) / capacity) + memory(MaxNodeScore * sum(requested) / capacity)) / weightSum +// (cpu(MaxNodeScore * requested * cpuWeight / capacity) + memory(MaxNodeScore * requested * memoryWeight / capacity) + ...) / weightSum func mostResourceScorer(resToWeightMap resourceToWeightMap) func(requested, allocable resourceToValueMap) int64 { return func(requested, allocable resourceToValueMap) int64 { var nodeScore, weightSum int64 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeunschedulable/node_unschedulable.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeunschedulable/node_unschedulable.go index c6537fb2dc1..f9c147560dc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeunschedulable/node_unschedulable.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/nodeunschedulable/node_unschedulable.go @@ -59,7 +59,8 @@ func (pl *NodeUnschedulable) Name() string { // Filter invoked at the filter extension point. func (pl *NodeUnschedulable) Filter(ctx context.Context, _ *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status { - if nodeInfo == nil || nodeInfo.Node() == nil { + node := nodeInfo.Node() + if node == nil { return framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonUnknownCondition) } // If pod tolerate unschedulable taint, it's also tolerate `node.Spec.Unschedulable`. @@ -68,7 +69,7 @@ func (pl *NodeUnschedulable) Filter(ctx context.Context, _ *framework.CycleState Effect: v1.TaintEffectNoSchedule, }) // TODO (k82cn): deprecates `node.Spec.Unschedulable` in 1.13. - if nodeInfo.Node().Spec.Unschedulable && !podToleratesUnschedulable { + if node.Spec.Unschedulable && !podToleratesUnschedulable { return framework.NewStatus(framework.UnschedulableAndUnresolvable, ErrReasonUnschedulable) } return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/common.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/common.go index 29c61a4c770..c7f4d19287a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/common.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/common.go @@ -63,7 +63,7 @@ func (tsc *topologySpreadConstraint) matchNodeInclusionPolicies(pod *v1.Pod, nod // .DefaultConstraints and the selectors from the services, replication // controllers, replica sets and stateful sets that match the pod. func (pl *PodTopologySpread) buildDefaultConstraints(p *v1.Pod, action v1.UnsatisfiableConstraintAction) ([]topologySpreadConstraint, error) { - constraints, err := filterTopologySpreadConstraints(pl.defaultConstraints, action, pl.enableMinDomainsInPodTopologySpread, pl.enableNodeInclusionPolicyInPodTopologySpread) + constraints, err := pl.filterTopologySpreadConstraints(pl.defaultConstraints, p.Labels, action) if err != nil || len(constraints) == 0 { return nil, err } @@ -87,7 +87,7 @@ func nodeLabelsMatchSpreadConstraints(nodeLabels map[string]string, constraints return true } -func filterTopologySpreadConstraints(constraints []v1.TopologySpreadConstraint, action v1.UnsatisfiableConstraintAction, enableMinDomainsInPodTopologySpread, enableNodeInclusionPolicyInPodTopologySpread bool) ([]topologySpreadConstraint, error) { +func (pl *PodTopologySpread) filterTopologySpreadConstraints(constraints []v1.TopologySpreadConstraint, podLabels map[string]string, action v1.UnsatisfiableConstraintAction) ([]topologySpreadConstraint, error) { var result []topologySpreadConstraint for _, c := range constraints { if c.WhenUnsatisfiable == action { @@ -95,6 +95,19 @@ func filterTopologySpreadConstraints(constraints []v1.TopologySpreadConstraint, if err != nil { return nil, err } + + if pl.enableMatchLabelKeysInPodTopologySpread && len(c.MatchLabelKeys) > 0 { + matchLabels := make(labels.Set) + for _, labelKey := range c.MatchLabelKeys { + if value, ok := podLabels[labelKey]; ok { + matchLabels[labelKey] = value + } + } + if len(matchLabels) > 0 { + selector = mergeLabelSetWithSelector(matchLabels, selector) + } + } + tsc := topologySpreadConstraint{ MaxSkew: c.MaxSkew, TopologyKey: c.TopologyKey, @@ -103,10 +116,10 @@ func filterTopologySpreadConstraints(constraints []v1.TopologySpreadConstraint, NodeAffinityPolicy: v1.NodeInclusionPolicyHonor, // If NodeAffinityPolicy is nil, we treat NodeAffinityPolicy as "Honor". NodeTaintsPolicy: v1.NodeInclusionPolicyIgnore, // If NodeTaintsPolicy is nil, we treat NodeTaintsPolicy as "Ignore". } - if enableMinDomainsInPodTopologySpread && c.MinDomains != nil { + if pl.enableMinDomainsInPodTopologySpread && c.MinDomains != nil { tsc.MinDomains = *c.MinDomains } - if enableNodeInclusionPolicyInPodTopologySpread { + if pl.enableNodeInclusionPolicyInPodTopologySpread { if c.NodeAffinityPolicy != nil { tsc.NodeAffinityPolicy = *c.NodeAffinityPolicy } @@ -120,6 +133,17 @@ func filterTopologySpreadConstraints(constraints []v1.TopologySpreadConstraint, return result, nil } +func mergeLabelSetWithSelector(matchLabels labels.Set, s labels.Selector) labels.Selector { + mergedSelector := labels.SelectorFromSet(matchLabels) + if requirements, ok := s.Requirements(); ok { + for _, r := range requirements { + mergedSelector = mergedSelector.Add(r) + } + } + + return mergedSelector +} + func countPodsMatchSelector(podInfos []*framework.PodInfo, selector labels.Selector, ns string) int { count := 0 for _, p := range podInfos { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/filtering.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/filtering.go index 888750d03a0..800f2b4d755 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/filtering.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/filtering.go @@ -147,28 +147,6 @@ func (p *criticalPaths) update(tpVal string, num int) { } } -func (s *preFilterState) updateWithPod(updatedPod, preemptorPod *v1.Pod, node *v1.Node, delta int) { - if s == nil || updatedPod.Namespace != preemptorPod.Namespace || node == nil { - return - } - if !nodeLabelsMatchSpreadConstraints(node.Labels, s.Constraints) { - return - } - - podLabelSet := labels.Set(updatedPod.Labels) - for _, constraint := range s.Constraints { - if !constraint.Selector.Matches(podLabelSet) { - continue - } - - k, v := constraint.TopologyKey, node.Labels[constraint.TopologyKey] - pair := topologyPair{key: k, value: v} - s.TpPairToMatchNum[pair] += delta - - s.TpKeyToCriticalPaths[k].update(v, s.TpPairToMatchNum[pair]) - } -} - // PreFilter invoked at the prefilter extension point. func (pl *PodTopologySpread) PreFilter(ctx context.Context, cycleState *framework.CycleState, pod *v1.Pod) (*framework.PreFilterResult, *framework.Status) { s, err := pl.calPreFilterState(ctx, pod) @@ -191,7 +169,7 @@ func (pl *PodTopologySpread) AddPod(ctx context.Context, cycleState *framework.C return framework.AsStatus(err) } - s.updateWithPod(podInfoToAdd.Pod, podToSchedule, nodeInfo.Node(), 1) + pl.updateWithPod(s, podInfoToAdd.Pod, podToSchedule, nodeInfo.Node(), 1) return nil } @@ -202,10 +180,45 @@ func (pl *PodTopologySpread) RemovePod(ctx context.Context, cycleState *framewor return framework.AsStatus(err) } - s.updateWithPod(podInfoToRemove.Pod, podToSchedule, nodeInfo.Node(), -1) + pl.updateWithPod(s, podInfoToRemove.Pod, podToSchedule, nodeInfo.Node(), -1) return nil } +func (pl *PodTopologySpread) updateWithPod(s *preFilterState, updatedPod, preemptorPod *v1.Pod, node *v1.Node, delta int) { + if s == nil || updatedPod.Namespace != preemptorPod.Namespace || node == nil { + return + } + if !nodeLabelsMatchSpreadConstraints(node.Labels, s.Constraints) { + return + } + + requiredSchedulingTerm := nodeaffinity.GetRequiredNodeAffinity(preemptorPod) + if !pl.enableNodeInclusionPolicyInPodTopologySpread { + // spreading is applied to nodes that pass those filters. + // Ignore parsing errors for backwards compatibility. + if match, _ := requiredSchedulingTerm.Match(node); !match { + return + } + } + + podLabelSet := labels.Set(updatedPod.Labels) + for _, constraint := range s.Constraints { + if !constraint.Selector.Matches(podLabelSet) { + continue + } + if pl.enableNodeInclusionPolicyInPodTopologySpread && + !constraint.matchNodeInclusionPolicies(updatedPod, node, requiredSchedulingTerm) { + continue + } + + k, v := constraint.TopologyKey, node.Labels[constraint.TopologyKey] + pair := topologyPair{key: k, value: v} + s.TpPairToMatchNum[pair] += delta + + s.TpKeyToCriticalPaths[k].update(v, s.TpPairToMatchNum[pair]) + } +} + // getPreFilterState fetches a pre-computed preFilterState. func getPreFilterState(cycleState *framework.CycleState) (*preFilterState, error) { c, err := cycleState.Read(preFilterStateKey) @@ -231,11 +244,10 @@ func (pl *PodTopologySpread) calPreFilterState(ctx context.Context, pod *v1.Pod) if len(pod.Spec.TopologySpreadConstraints) > 0 { // We have feature gating in APIServer to strip the spec // so don't need to re-check feature gate, just check length of Constraints. - constraints, err = filterTopologySpreadConstraints( + constraints, err = pl.filterTopologySpreadConstraints( pod.Spec.TopologySpreadConstraints, + pod.Labels, v1.DoNotSchedule, - pl.enableMinDomainsInPodTopologySpread, - pl.enableNodeInclusionPolicyInPodTopologySpread, ) if err != nil { return nil, fmt.Errorf("obtaining pod's hard topology spread constraints: %w", err) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/plugin.go index 4ca762ca4c8..ed2333e76df 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/plugin.go @@ -64,6 +64,7 @@ type PodTopologySpread struct { statefulSets appslisters.StatefulSetLister enableMinDomainsInPodTopologySpread bool enableNodeInclusionPolicyInPodTopologySpread bool + enableMatchLabelKeysInPodTopologySpread bool } var _ framework.PreFilterPlugin = &PodTopologySpread{} @@ -98,6 +99,7 @@ func New(plArgs runtime.Object, h framework.Handle, fts feature.Features) (frame defaultConstraints: args.DefaultConstraints, enableMinDomainsInPodTopologySpread: fts.EnableMinDomainsInPodTopologySpread, enableNodeInclusionPolicyInPodTopologySpread: fts.EnableNodeInclusionPolicyInPodTopologySpread, + enableMatchLabelKeysInPodTopologySpread: fts.EnableMatchLabelKeysInPodTopologySpread, } if args.DefaultingType == config.SystemDefaulting { pl.defaultConstraints = systemDefaultConstraints diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go index 1cb7355e2a7..2bf96ccf277 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/podtopologyspread/scoring.go @@ -59,11 +59,10 @@ func (s *preScoreState) Clone() framework.StateData { func (pl *PodTopologySpread) initPreScoreState(s *preScoreState, pod *v1.Pod, filteredNodes []*v1.Node, requireAllTopologies bool) error { var err error if len(pod.Spec.TopologySpreadConstraints) > 0 { - s.Constraints, err = filterTopologySpreadConstraints( + s.Constraints, err = pl.filterTopologySpreadConstraints( pod.Spec.TopologySpreadConstraints, + pod.Labels, v1.ScheduleAnyway, - pl.enableMinDomainsInPodTopologySpread, - pl.enableNodeInclusionPolicyInPodTopologySpread, ) if err != nil { return fmt.Errorf("obtaining pod's soft topology spread constraints: %w", err) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/registry.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/registry.go index 3093e681c93..0f29e6ce96a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/registry.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/registry.go @@ -49,6 +49,7 @@ func NewInTreeRegistry() runtime.Registry { EnableVolumeCapacityPriority: feature.DefaultFeatureGate.Enabled(features.VolumeCapacityPriority), EnableMinDomainsInPodTopologySpread: feature.DefaultFeatureGate.Enabled(features.MinDomainsInPodTopologySpread), EnableNodeInclusionPolicyInPodTopologySpread: feature.DefaultFeatureGate.Enabled(features.NodeInclusionPolicyInPodTopologySpread), + EnableMatchLabelKeysInPodTopologySpread: feature.DefaultFeatureGate.Enabled(features.MatchLabelKeysInPodTopologySpread), } return runtime.Registry{ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration/taint_toleration.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration/taint_toleration.go index 9420c06c6ea..8b9412874c6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration/taint_toleration.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/tainttoleration/taint_toleration.go @@ -62,7 +62,8 @@ func (pl *TaintToleration) EventsToRegister() []framework.ClusterEvent { // Filter invoked at the filter extension point. func (pl *TaintToleration) Filter(ctx context.Context, state *framework.CycleState, pod *v1.Pod, nodeInfo *framework.NodeInfo) *framework.Status { - if nodeInfo == nil || nodeInfo.Node() == nil { + node := nodeInfo.Node() + if node == nil { return framework.AsStatus(fmt.Errorf("invalid nodeInfo")) } @@ -71,7 +72,7 @@ func (pl *TaintToleration) Filter(ctx context.Context, state *framework.CycleSta return t.Effect == v1.TaintEffectNoSchedule || t.Effect == v1.TaintEffectNoExecute } - taint, isUntolerated := v1helper.FindMatchingUntoleratedTaint(nodeInfo.Node().Spec.Taints, pod.Spec.Tolerations, filterPredicate) + taint, isUntolerated := v1helper.FindMatchingUntoleratedTaint(node.Spec.Taints, pod.Spec.Tolerations, filterPredicate) if !isUntolerated { return nil } @@ -118,7 +119,7 @@ func (pl *TaintToleration) PreScore(ctx context.Context, cycleState *framework.C func getPreScoreState(cycleState *framework.CycleState) (*preScoreState, error) { c, err := cycleState.Read(preScoreStateKey) if err != nil { - return nil, fmt.Errorf("failed to read %q from cycleState: %v", preScoreStateKey, err) + return nil, fmt.Errorf("failed to read %q from cycleState: %w", preScoreStateKey, err) } s, ok := c.(*preScoreState) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/assume_cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/assume_cache.go index 1ee97a3eb24..d553a02e190 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/assume_cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/assume_cache.go @@ -77,9 +77,9 @@ func (e *errObjectName) Error() string { } // assumeCache stores two pointers to represent a single object: -// * The pointer to the informer object. -// * The pointer to the latest object, which could be the same as -// the informer object, or an in-memory object. +// - The pointer to the informer object. +// - The pointer to the latest object, which could be the same as +// the informer object, or an in-memory object. // // An informer update always overrides the latest object pointer. // diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/binder.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/binder.go index f715699e52d..1c116431b92 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/binder.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/binder.go @@ -123,26 +123,26 @@ type InTreeToCSITranslator interface { // also considered along with the pod's other scheduling requirements. // // This integrates into the existing scheduler workflow as follows: -// 1. The scheduler takes a Pod off the scheduler queue and processes it serially: -// a. Invokes all pre-filter plugins for the pod. GetPodVolumes() is invoked -// here, pod volume information will be saved in current scheduling cycle state for later use. -// b. Invokes all filter plugins, parallelized across nodes. FindPodVolumes() is invoked here. -// c. Invokes all score plugins. Future/TBD -// d. Selects the best node for the Pod. -// e. Invokes all reserve plugins. AssumePodVolumes() is invoked here. -// i. If PVC binding is required, cache in-memory only: -// * For manual binding: update PV objects for prebinding to the corresponding PVCs. -// * For dynamic provisioning: update PVC object with a selected node from c) -// * For the pod, which PVCs and PVs need API updates. -// ii. Afterwards, the main scheduler caches the Pod->Node binding in the scheduler's pod cache, -// This is handled in the scheduler and not here. -// f. Asynchronously bind volumes and pod in a separate goroutine -// i. BindPodVolumes() is called first in PreBind phase. It makes all the necessary API updates and waits for -// PV controller to fully bind and provision the PVCs. If binding fails, the Pod is sent -// back through the scheduler. -// ii. After BindPodVolumes() is complete, then the scheduler does the final Pod->Node binding. -// 2. Once all the assume operations are done in e), the scheduler processes the next Pod in the scheduler queue -// while the actual binding operation occurs in the background. +// 1. The scheduler takes a Pod off the scheduler queue and processes it serially: +// a. Invokes all pre-filter plugins for the pod. GetPodVolumes() is invoked +// here, pod volume information will be saved in current scheduling cycle state for later use. +// b. Invokes all filter plugins, parallelized across nodes. FindPodVolumes() is invoked here. +// c. Invokes all score plugins. Future/TBD +// d. Selects the best node for the Pod. +// e. Invokes all reserve plugins. AssumePodVolumes() is invoked here. +// i. If PVC binding is required, cache in-memory only: +// * For manual binding: update PV objects for prebinding to the corresponding PVCs. +// * For dynamic provisioning: update PVC object with a selected node from c) +// * For the pod, which PVCs and PVs need API updates. +// ii. Afterwards, the main scheduler caches the Pod->Node binding in the scheduler's pod cache, +// This is handled in the scheduler and not here. +// f. Asynchronously bind volumes and pod in a separate goroutine +// i. BindPodVolumes() is called first in PreBind phase. It makes all the necessary API updates and waits for +// PV controller to fully bind and provision the PVCs. If binding fails, the Pod is sent +// back through the scheduler. +// ii. After BindPodVolumes() is complete, then the scheduler does the final Pod->Node binding. +// 2. Once all the assume operations are done in e), the scheduler processes the next Pod in the scheduler queue +// while the actual binding operation occurs in the background. type SchedulerVolumeBinder interface { // GetPodVolumes returns a pod's PVCs separated into bound, unbound with delayed binding (including provisioning) // and unbound with immediate binding (including prebound) @@ -185,7 +185,7 @@ type SchedulerVolumeBinder interface { // 3. Wait for PVCs to be completely bound by the PV controller // // This function can be called in parallel. - BindPodVolumes(assumedPod *v1.Pod, podVolumes *PodVolumes) error + BindPodVolumes(ctx context.Context, assumedPod *v1.Pod, podVolumes *PodVolumes) error } type volumeBinder struct { @@ -432,7 +432,7 @@ func (b *volumeBinder) RevertAssumedPodVolumes(podVolumes *PodVolumes) { // BindPodVolumes gets the cached bindings and PVCs to provision in pod's volumes information, // makes the API update for those PVs/PVCs, and waits for the PVCs to be completely bound // by the PV controller. -func (b *volumeBinder) BindPodVolumes(assumedPod *v1.Pod, podVolumes *PodVolumes) (err error) { +func (b *volumeBinder) BindPodVolumes(ctx context.Context, assumedPod *v1.Pod, podVolumes *PodVolumes) (err error) { klog.V(4).InfoS("BindPodVolumes", "pod", klog.KObj(assumedPod), "node", klog.KRef("", assumedPod.Spec.NodeName)) defer func() { @@ -445,7 +445,7 @@ func (b *volumeBinder) BindPodVolumes(assumedPod *v1.Pod, podVolumes *PodVolumes claimsToProvision := podVolumes.DynamicProvisions // Start API operations - err = b.bindAPIUpdate(assumedPod, bindings, claimsToProvision) + err = b.bindAPIUpdate(ctx, assumedPod, bindings, claimsToProvision) if err != nil { return err } @@ -469,7 +469,7 @@ func getPVCName(pvc *v1.PersistentVolumeClaim) string { } // bindAPIUpdate makes the API update for those PVs/PVCs. -func (b *volumeBinder) bindAPIUpdate(pod *v1.Pod, bindings []*BindingInfo, claimsToProvision []*v1.PersistentVolumeClaim) error { +func (b *volumeBinder) bindAPIUpdate(ctx context.Context, pod *v1.Pod, bindings []*BindingInfo, claimsToProvision []*v1.PersistentVolumeClaim) error { podName := getPodName(pod) if bindings == nil { return fmt.Errorf("failed to get cached bindings for pod %q", podName) @@ -503,7 +503,7 @@ func (b *volumeBinder) bindAPIUpdate(pod *v1.Pod, bindings []*BindingInfo, claim klog.V(5).InfoS("bindAPIUpdate: binding PV to PVC", "pod", klog.KObj(pod), "PV", klog.KObj(binding.pv), "PVC", klog.KObj(binding.pvc)) // TODO: does it hurt if we make an api call and nothing needs to be updated? klog.V(2).InfoS("Claim bound to volume", "PVC", klog.KObj(binding.pvc), "PV", klog.KObj(binding.pv)) - newPV, err := b.kubeClient.CoreV1().PersistentVolumes().Update(context.TODO(), binding.pv, metav1.UpdateOptions{}) + newPV, err := b.kubeClient.CoreV1().PersistentVolumes().Update(ctx, binding.pv, metav1.UpdateOptions{}) if err != nil { klog.V(4).InfoS("Updating PersistentVolume: binding to claim failed", "PV", klog.KObj(binding.pv), "PVC", klog.KObj(binding.pvc), "err", err) return err @@ -518,7 +518,7 @@ func (b *volumeBinder) bindAPIUpdate(pod *v1.Pod, bindings []*BindingInfo, claim // PV controller is expected to signal back by removing related annotations if actual provisioning fails for i, claim = range claimsToProvision { klog.V(5).InfoS("Updating claims objects to trigger volume provisioning", "pod", klog.KObj(pod), "PVC", klog.KObj(claim)) - newClaim, err := b.kubeClient.CoreV1().PersistentVolumeClaims(claim.Namespace).Update(context.TODO(), claim, metav1.UpdateOptions{}) + newClaim, err := b.kubeClient.CoreV1().PersistentVolumeClaims(claim.Namespace).Update(ctx, claim, metav1.UpdateOptions{}) if err != nil { return err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/fake_binder.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/fake_binder.go index 4a07eff9a2f..ef28891f288 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/fake_binder.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/fake_binder.go @@ -16,7 +16,11 @@ limitations under the License. package volumebinding -import v1 "k8s.io/api/core/v1" +import ( + "context" + + v1 "k8s.io/api/core/v1" +) // FakeVolumeBinderConfig holds configurations for fake volume binder. type FakeVolumeBinderConfig struct { @@ -62,7 +66,7 @@ func (b *FakeVolumeBinder) AssumePodVolumes(assumedPod *v1.Pod, nodeName string, func (b *FakeVolumeBinder) RevertAssumedPodVolumes(_ *PodVolumes) {} // BindPodVolumes implements SchedulerVolumeBinder.BindPodVolumes. -func (b *FakeVolumeBinder) BindPodVolumes(assumedPod *v1.Pod, podVolumes *PodVolumes) error { +func (b *FakeVolumeBinder) BindPodVolumes(ctx context.Context, assumedPod *v1.Pod, podVolumes *PodVolumes) error { b.BindCalled = true return b.config.BindErr } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/volume_binding.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/volume_binding.go index 48ee01dea4e..9cbe204e75a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/volume_binding.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/plugins/volumebinding/volume_binding.go @@ -333,7 +333,7 @@ func (pl *VolumeBinding) PreBind(ctx context.Context, cs *framework.CycleState, return framework.AsStatus(fmt.Errorf("no pod volumes found for node %q", nodeName)) } klog.V(5).InfoS("Trying to bind volumes for pod", "pod", klog.KObj(pod)) - err = pl.Binder.BindPodVolumes(pod, podVolumes) + err = pl.Binder.BindPodVolumes(ctx, pod, podVolumes) if err != nil { klog.V(1).InfoS("Failed to bind volumes for pod", "pod", klog.KObj(pod), "err", err) return framework.AsStatus(err) @@ -355,7 +355,6 @@ func (pl *VolumeBinding) Unreserve(ctx context.Context, cs *framework.CycleState return } pl.Binder.RevertAssumedPodVolumes(podVolumes) - return } // New initializes a new plugin and returns it. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go index af5e46d1ae2..5f2c0933f36 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/preemption/preemption.go @@ -28,11 +28,14 @@ import ( policy "k8s.io/api/policy/v1" "k8s.io/apimachinery/pkg/labels" utilerrors "k8s.io/apimachinery/pkg/util/errors" + "k8s.io/apiserver/pkg/util/feature" corelisters "k8s.io/client-go/listers/core/v1" policylisters "k8s.io/client-go/listers/policy/v1" corev1helpers "k8s.io/component-helpers/scheduling/corev1" "k8s.io/klog/v2" extenderv1 "k8s.io/kube-scheduler/extender/v1" + apipod "k8s.io/kubernetes/pkg/api/v1/pod" + "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/scheduler/framework" "k8s.io/kubernetes/pkg/scheduler/metrics" "k8s.io/kubernetes/pkg/scheduler/util" @@ -125,20 +128,24 @@ type Evaluator struct { // Preempt returns a PostFilterResult carrying suggested nominatedNodeName, along with a Status. // The semantics of returned varies on different scenarios: -// - . This denotes it's a transient/rare error that may be self-healed in future cycles. -// - . This status is mostly as expected like the preemptor is waiting for the -// victims to be fully terminated. -// - In both cases above, a nil PostFilterResult is returned to keep the pod's nominatedNodeName unchanged. // -// - . It indicates the pod cannot be scheduled even with preemption. -// In this case, a non-nil PostFilterResult is returned and result.NominatingMode instructs how to deal with -// the nominatedNodeName. -// - . It's the regular happy path -// and the non-empty nominatedNodeName will be applied to the preemptor pod. +// - . This denotes it's a transient/rare error that may be self-healed in future cycles. +// +// - . This status is mostly as expected like the preemptor is waiting for the +// victims to be fully terminated. +// +// - In both cases above, a nil PostFilterResult is returned to keep the pod's nominatedNodeName unchanged. +// +// - . It indicates the pod cannot be scheduled even with preemption. +// In this case, a non-nil PostFilterResult is returned and result.NominatingMode instructs how to deal with +// the nominatedNodeName. +// +// - . It's the regular happy path +// and the non-empty nominatedNodeName will be applied to the preemptor pod. func (ev *Evaluator) Preempt(ctx context.Context, pod *v1.Pod, m framework.NodeToStatusMap) (*framework.PostFilterResult, *framework.Status) { // 0) Fetch the latest version of . // It's safe to directly fetch pod here. Because the informer cache has already been - // initialized when creating the Scheduler obj, i.e., factory.go#MakeDefaultErrorFunc(). + // initialized when creating the Scheduler obj. // However, tests may need to manually initialize the shared pod informer. podNamespace, podName := pod.Namespace, pod.Name pod, err := ev.PodLister.Pods(pod.Namespace).Get(pod.Name) @@ -336,9 +343,26 @@ func (ev *Evaluator) prepareCandidate(ctx context.Context, c Candidate, pod *v1. // Otherwise we should delete the victim. if waitingPod := fh.GetWaitingPod(victim.UID); waitingPod != nil { waitingPod.Reject(pluginName, "preempted") - } else if err := util.DeletePod(ctx, cs, victim); err != nil { - klog.ErrorS(err, "Preempting pod", "pod", klog.KObj(victim), "preemptor", klog.KObj(pod)) - return framework.AsStatus(err) + } else { + if feature.DefaultFeatureGate.Enabled(features.PodDisruptionConditions) { + condition := &v1.PodCondition{ + Type: v1.AlphaNoCompatGuaranteeDisruptionTarget, + Status: v1.ConditionTrue, + Reason: "PreemptionByKubeScheduler", + Message: "Kube-scheduler: preempting", + } + newStatus := pod.Status.DeepCopy() + if apipod.UpdatePodCondition(newStatus, condition) { + if err := util.PatchPodStatus(ctx, cs, victim, newStatus); err != nil { + klog.ErrorS(err, "Preparing pod preemption", "pod", klog.KObj(victim), "preemptor", klog.KObj(pod)) + return framework.AsStatus(err) + } + } + } + if err := util.DeletePod(ctx, cs, victim); err != nil { + klog.ErrorS(err, "Preempting pod", "pod", klog.KObj(victim), "preemptor", klog.KObj(pod)) + return framework.AsStatus(err) + } } fh.EventRecorder().Eventf(victim, pod, v1.EventTypeNormal, "Preempted", "Preempting", "Preempted by %v/%v on node %v", pod.Namespace, pod.Name, c.Name()) @@ -549,6 +573,7 @@ func (ev *Evaluator) DryRunPreemption(ctx context.Context, pod *v1.Pod, potentia nonViolatingCandidates := newCandidateList(numCandidates) violatingCandidates := newCandidateList(numCandidates) parallelCtx, cancel := context.WithCancel(ctx) + defer cancel() nodeStatuses := make(framework.NodeToStatusMap) var statusesLock sync.Mutex var errs []error diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go index 93970327d5a..247c124a7a5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/framework/types.go @@ -29,9 +29,7 @@ import ( "k8s.io/apimachinery/pkg/labels" utilerrors "k8s.io/apimachinery/pkg/util/errors" "k8s.io/apimachinery/pkg/util/sets" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/features" schedutil "k8s.io/kubernetes/pkg/scheduler/util" ) @@ -444,10 +442,7 @@ func (r *Resource) Add(rl v1.ResourceList) { case v1.ResourcePods: r.AllowedPodNumber += int(rQuant.Value()) case v1.ResourceEphemeralStorage: - if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { - // if the local storage capacity isolation feature gate is disabled, pods request 0 disk. - r.EphemeralStorage += rQuant.Value() - } + r.EphemeralStorage += rQuant.Value() default: if schedutil.IsScalarResourceName(rName) { r.AddScalar(rName, rQuant.Value()) @@ -500,9 +495,7 @@ func (r *Resource) SetMaxResource(rl v1.ResourceList) { case v1.ResourceCPU: r.MilliCPU = max(r.MilliCPU, rQuantity.MilliValue()) case v1.ResourceEphemeralStorage: - if utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { - r.EphemeralStorage = max(r.EphemeralStorage, rQuantity.Value()) - } + r.EphemeralStorage = max(r.EphemeralStorage, rQuantity.Value()) default: if schedutil.IsScalarResourceName(rName) { r.SetScalar(rName, max(r.ScalarResources[rName], rQuantity.Value())) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/cache.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/cache.go index 1cd69a9704d..036ab08cfbc 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/cache.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/cache.go @@ -77,6 +77,7 @@ type cacheImpl struct { type podState struct { pod *v1.Pod // Used by assumedPod to determinate expiration. + // If deadline is nil, assumedPod will never expire. deadline *time.Time // Used to block cache from expiring assumedPod if binding still runs bindingFinished bool @@ -401,9 +402,13 @@ func (cache *cacheImpl) finishBinding(pod *v1.Pod, now time.Time) error { klog.V(5).InfoS("Finished binding for pod, can be expired", "pod", klog.KObj(pod)) currState, ok := cache.podStates[key] if ok && cache.assumedPods.Has(key) { - dl := now.Add(cache.ttl) + if cache.ttl == time.Duration(0) { + currState.deadline = nil + } else { + dl := now.Add(cache.ttl) + currState.deadline = &dl + } currState.bindingFinished = true - currState.deadline = &dl } return nil } @@ -750,7 +755,7 @@ func (cache *cacheImpl) cleanupAssumedPods(now time.Time) { "pod", klog.KObj(ps.pod)) continue } - if now.After(*ps.deadline) { + if cache.ttl != 0 && now.After(*ps.deadline) { klog.InfoS("Pod expired", "pod", klog.KObj(ps.pod)) if err := cache.removePod(ps.pod); err != nil { klog.ErrorS(err, "ExpirePod failed", "pod", klog.KObj(ps.pod)) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/interface.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/interface.go index 4cd6d8f8869..f6298bd346b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/interface.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/cache/interface.go @@ -31,31 +31,31 @@ import ( // // State Machine of a pod's events in scheduler's cache: // +// +-------------------------------------------+ +----+ +// | Add | | | +// | | | | Update +// + Assume Add v v | // -// +-------------------------------------------+ +----+ -// | Add | | | -// | | | | Update -// + Assume Add v v | -//Initial +--------> Assumed +------------+---> Added <--+ -// ^ + + | + -// | | | | | -// | | | Add | | Remove -// | | | | | -// | | | + | -// +----------------+ +-----------> Expired +----> Deleted -// Forget Expire +// Initial +--------> Assumed +------------+---> Added <--+ // +// ^ + + | + +// | | | | | +// | | | Add | | Remove +// | | | | | +// | | | + | +// +----------------+ +-----------> Expired +----> Deleted +// Forget Expire // // Note that an assumed pod can expire, because if we haven't received Add event notifying us // for a while, there might be some problems and we shouldn't keep the pod in cache anymore. // // Note that "Initial", "Expired", and "Deleted" pods do not actually exist in cache. // Based on existing use cases, we are making the following assumptions: -// - No pod would be assumed twice -// - A pod could be added without going through scheduler. In this case, we will see Add but not Assume event. -// - If a pod wasn't added, it wouldn't be removed or updated. -// - Both "Expired" and "Deleted" are valid end states. In case of some problems, e.g. network issue, -// a pod might have changed its state (e.g. added and deleted) without delivering notification to the cache. +// - No pod would be assumed twice +// - A pod could be added without going through scheduler. In this case, we will see Add but not Assume event. +// - If a pod wasn't added, it wouldn't be removed or updated. +// - Both "Expired" and "Deleted" are valid end states. In case of some problems, e.g. network issue, +// a pod might have changed its state (e.g. added and deleted) without delivering notification to the cache. type Cache interface { // NodeCount returns the number of nodes in the cache. // DO NOT use outside of tests. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go index a5a4b30ecad..8de1a09c03b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/internal/queue/scheduling_queue.go @@ -127,11 +127,11 @@ func NominatedNodeName(pod *v1.Pod) string { // The head of PriorityQueue is the highest priority pending pod. This structure // has two sub queues and a additional data structure, namely: activeQ, // backoffQ and unschedulablePods. -// - activeQ holds pods that are being considered for scheduling. -// - backoffQ holds pods that moved from unschedulablePods and will move to -// activeQ when their backoff periods complete. -// - unschedulablePods holds pods that were already attempted for scheduling and -// are currently determined to be unschedulable. +// - activeQ holds pods that are being considered for scheduling. +// - backoffQ holds pods that moved from unschedulablePods and will move to +// activeQ when their backoff periods complete. +// - unschedulablePods holds pods that were already attempted for scheduling and +// are currently determined to be unschedulable. type PriorityQueue struct { // PodNominator abstracts the operations to maintain nominated Pods. framework.PodNominator @@ -415,7 +415,7 @@ func (p *PriorityQueue) AddUnschedulableIfNotPresent(pInfo *framework.QueuedPodI } if p.moveRequestCycle >= podSchedulingCycle { if err := p.podBackoffQ.Add(pInfo); err != nil { - return fmt.Errorf("error adding pod %v to the backoff queue: %v", pod.Name, err) + return fmt.Errorf("error adding pod %v to the backoff queue: %v", klog.KObj(pod), err) } metrics.SchedulerQueueIncomingPods.WithLabelValues("backoff", ScheduleAttemptFailure).Inc() } else { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go index dbb739778f6..9d339048c02 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/schedule_one.go @@ -26,6 +26,7 @@ import ( "time" v1 "k8s.io/api/core/v1" + apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/sets" @@ -129,7 +130,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { klog.ErrorS(err, "Error selecting node for pod", "pod", klog.KObj(pod)) metrics.PodScheduleError(fwk.ProfileName(), metrics.SinceInSeconds(start)) } - sched.handleSchedulingFailure(ctx, fwk, podInfo, err, v1.PodReasonUnschedulable, nominatingInfo) + sched.FailureHandler(ctx, fwk, podInfo, err, v1.PodReasonUnschedulable, nominatingInfo) return } metrics.SchedulingAlgorithmLatency.Observe(metrics.SinceInSeconds(start)) @@ -146,7 +147,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { // This relies on the fact that Error will check if the pod has been bound // to a node and if so will not add it back to the unscheduled pods queue // (otherwise this would cause an infinite loop). - sched.handleSchedulingFailure(ctx, fwk, assumedPodInfo, err, SchedulerError, clearNominatedNode) + sched.FailureHandler(ctx, fwk, assumedPodInfo, err, SchedulerError, clearNominatedNode) return } @@ -158,7 +159,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { if forgetErr := sched.Cache.ForgetPod(assumedPod); forgetErr != nil { klog.ErrorS(forgetErr, "Scheduler cache ForgetPod failed") } - sched.handleSchedulingFailure(ctx, fwk, assumedPodInfo, sts.AsError(), SchedulerError, clearNominatedNode) + sched.FailureHandler(ctx, fwk, assumedPodInfo, sts.AsError(), SchedulerError, clearNominatedNode) return } @@ -178,7 +179,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { if forgetErr := sched.Cache.ForgetPod(assumedPod); forgetErr != nil { klog.ErrorS(forgetErr, "Scheduler cache ForgetPod failed") } - sched.handleSchedulingFailure(ctx, fwk, assumedPodInfo, runPermitStatus.AsError(), reason, clearNominatedNode) + sched.FailureHandler(ctx, fwk, assumedPodInfo, runPermitStatus.AsError(), reason, clearNominatedNode) return } @@ -221,7 +222,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { return assumedPod.UID != pod.UID }) } - sched.handleSchedulingFailure(ctx, fwk, assumedPodInfo, waitOnPermitStatus.AsError(), reason, clearNominatedNode) + sched.FailureHandler(ctx, fwk, assumedPodInfo, waitOnPermitStatus.AsError(), reason, clearNominatedNode) return } @@ -239,7 +240,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { // TODO(#103853): de-duplicate the logic. sched.SchedulingQueue.MoveAllToActiveOrBackoffQueue(internalqueue.AssignedPodDelete, nil) } - sched.handleSchedulingFailure(ctx, fwk, assumedPodInfo, preBindStatus.AsError(), SchedulerError, clearNominatedNode) + sched.FailureHandler(ctx, fwk, assumedPodInfo, preBindStatus.AsError(), SchedulerError, clearNominatedNode) return } @@ -256,7 +257,7 @@ func (sched *Scheduler) scheduleOne(ctx context.Context) { // TODO(#103853): de-duplicate the logic. sched.SchedulingQueue.MoveAllToActiveOrBackoffQueue(internalqueue.AssignedPodDelete, nil) } - sched.handleSchedulingFailure(ctx, fwk, assumedPodInfo, fmt.Errorf("binding rejected: %w", err), SchedulerError, clearNominatedNode) + sched.FailureHandler(ctx, fwk, assumedPodInfo, fmt.Errorf("binding rejected: %w", err), SchedulerError, clearNominatedNode) return } // Calculating nodeResourceString can be heavy. Avoid it if klog verbosity is below 2. @@ -367,12 +368,12 @@ func (sched *Scheduler) findNodesThatFitPod(ctx context.Context, fwk framework.F UnschedulablePlugins: sets.NewString(), } - // Run "prefilter" plugins. - preRes, s := fwk.RunPreFilterPlugins(ctx, state, pod) allNodes, err := sched.nodeInfoSnapshot.NodeInfos().List() if err != nil { return nil, diagnosis, err } + // Run "prefilter" plugins. + preRes, s := fwk.RunPreFilterPlugins(ctx, state, pod) if !s.IsSuccess() { if !s.IsUnschedulable() { return nil, diagnosis, s.AsError() @@ -414,6 +415,10 @@ func (sched *Scheduler) findNodesThatFitPod(ctx context.Context, fwk framework.F } } feasibleNodes, err := sched.findNodesThatPassFilters(ctx, fwk, state, pod, diagnosis, nodes) + // always try to update the sched.nextStartNodeIndex regardless of whether an error has occurred + // this is helpful to make sure that all the nodes have a chance to be searched + processedNodes := len(feasibleNodes) + len(diagnosis.NodeToStatusMap) + sched.nextStartNodeIndex = (sched.nextStartNodeIndex + processedNodes) % len(nodes) if err != nil { return nil, diagnosis, err } @@ -453,18 +458,17 @@ func (sched *Scheduler) findNodesThatPassFilters( pod *v1.Pod, diagnosis framework.Diagnosis, nodes []*framework.NodeInfo) ([]*v1.Node, error) { - numNodesToFind := sched.numFeasibleNodesToFind(int32(len(nodes))) + numAllNodes := len(nodes) + numNodesToFind := sched.numFeasibleNodesToFind(int32(numAllNodes)) // Create feasible list with enough space to avoid growing it // and allow assigning. feasibleNodes := make([]*v1.Node, numNodesToFind) if !fwk.HasFilterPlugins() { - length := len(nodes) for i := range feasibleNodes { - feasibleNodes[i] = nodes[(sched.nextStartNodeIndex+i)%length].Node() + feasibleNodes[i] = nodes[(sched.nextStartNodeIndex+i)%numAllNodes].Node() } - sched.nextStartNodeIndex = (sched.nextStartNodeIndex + len(feasibleNodes)) % length return feasibleNodes, nil } @@ -475,7 +479,7 @@ func (sched *Scheduler) findNodesThatPassFilters( checkNode := func(i int) { // We check the nodes starting from where we left off in the previous scheduling cycle, // this is to make sure all nodes have the same chance of being examined across pods. - nodeInfo := nodes[(sched.nextStartNodeIndex+i)%len(nodes)] + nodeInfo := nodes[(sched.nextStartNodeIndex+i)%numAllNodes] status := fwk.RunFilterPluginsWithNominatedPods(ctx, state, pod, nodeInfo) if status.Code() == framework.Error { errCh.SendErrorWithCancel(status.AsError(), cancel) @@ -508,14 +512,11 @@ func (sched *Scheduler) findNodesThatPassFilters( // Stops searching for more nodes once the configured number of feasible nodes // are found. - fwk.Parallelizer().Until(ctx, len(nodes), checkNode) - processedNodes := int(feasibleNodesLen) + len(diagnosis.NodeToStatusMap) - sched.nextStartNodeIndex = (sched.nextStartNodeIndex + processedNodes) % len(nodes) - + fwk.Parallelizer().Until(ctx, numAllNodes, checkNode) feasibleNodes = feasibleNodes[:feasibleNodesLen] if err := errCh.ReceiveError(); err != nil { statusCode = framework.Error - return nil, err + return feasibleNodes, err } return feasibleNodes, nil } @@ -810,7 +811,53 @@ func getAttemptsLabel(p *framework.QueuedPodInfo) string { // handleSchedulingFailure records an event for the pod that indicates the // pod has failed to schedule. Also, update the pod condition and nominated node name if set. func (sched *Scheduler) handleSchedulingFailure(ctx context.Context, fwk framework.Framework, podInfo *framework.QueuedPodInfo, err error, reason string, nominatingInfo *framework.NominatingInfo) { - sched.Error(podInfo, err) + pod := podInfo.Pod + var errMsg string + if err != nil { + errMsg = err.Error() + } + if err == ErrNoNodesAvailable { + klog.V(2).InfoS("Unable to schedule pod; no nodes are registered to the cluster; waiting", "pod", klog.KObj(pod)) + } else if fitError, ok := err.(*framework.FitError); ok { + // Inject UnschedulablePlugins to PodInfo, which will be used later for moving Pods between queues efficiently. + podInfo.UnschedulablePlugins = fitError.Diagnosis.UnschedulablePlugins + klog.V(2).InfoS("Unable to schedule pod; no fit; waiting", "pod", klog.KObj(pod), "err", errMsg) + } else if apierrors.IsNotFound(err) { + klog.V(2).InfoS("Unable to schedule pod, possibly due to node not found; waiting", "pod", klog.KObj(pod), "err", errMsg) + if errStatus, ok := err.(apierrors.APIStatus); ok && errStatus.Status().Details.Kind == "node" { + nodeName := errStatus.Status().Details.Name + // when node is not found, We do not remove the node right away. Trying again to get + // the node and if the node is still not found, then remove it from the scheduler cache. + _, err := fwk.ClientSet().CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{}) + if err != nil && apierrors.IsNotFound(err) { + node := v1.Node{ObjectMeta: metav1.ObjectMeta{Name: nodeName}} + if err := sched.Cache.RemoveNode(&node); err != nil { + klog.V(4).InfoS("Node is not found; failed to remove it from the cache", "node", node.Name) + } + } + } + } else { + klog.ErrorS(err, "Error scheduling pod; retrying", "pod", klog.KObj(pod)) + } + + // Check if the Pod exists in informer cache. + podLister := fwk.SharedInformerFactory().Core().V1().Pods().Lister() + cachedPod, e := podLister.Pods(pod.Namespace).Get(pod.Name) + if e != nil { + klog.InfoS("Pod doesn't exist in informer cache", "pod", klog.KObj(pod), "err", e) + } else { + // In the case of extender, the pod may have been bound successfully, but timed out returning its response to the scheduler. + // It could result in the live version to carry .spec.nodeName, and that's inconsistent with the internal-queued version. + if len(cachedPod.Spec.NodeName) != 0 { + klog.InfoS("Pod has been assigned to node. Abort adding it back to queue.", "pod", klog.KObj(pod), "node", cachedPod.Spec.NodeName) + } else { + // As is from SharedInformer, we need to do a DeepCopy() here. + podInfo.PodInfo = framework.NewPodInfo(cachedPod.DeepCopy()) + if err := sched.SchedulingQueue.AddUnschedulableIfNotPresent(podInfo, sched.SchedulingQueue.SchedulingCycle()); err != nil { + klog.ErrorS(err, "Error occurred") + } + } + } // Update the scheduling queue with the nominated pod information. Without // this, there would be a race condition between the next scheduling cycle @@ -820,14 +867,18 @@ func (sched *Scheduler) handleSchedulingFailure(ctx context.Context, fwk framewo sched.SchedulingQueue.AddNominatedPod(podInfo.PodInfo, nominatingInfo) } - pod := podInfo.Pod - msg := truncateMessage(err.Error()) + if err == nil { + // Only tests can reach here. + return + } + + msg := truncateMessage(errMsg) fwk.EventRecorder().Eventf(pod, nil, v1.EventTypeWarning, "FailedScheduling", "Scheduling", msg) if err := updatePod(ctx, sched.client, pod, &v1.PodCondition{ Type: v1.PodScheduled, Status: v1.ConditionFalse, Reason: reason, - Message: err.Error(), + Message: errMsg, }, nominatingInfo); err != nil { klog.ErrorS(err, "Error updating pod", "pod", klog.KObj(pod)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go index c165b34ffc2..060dcc31ba0 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/scheduler.go @@ -23,7 +23,6 @@ import ( "time" v1 "k8s.io/api/core/v1" - apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" @@ -31,11 +30,10 @@ import ( "k8s.io/client-go/informers" coreinformers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" - corelisters "k8s.io/client-go/listers/core/v1" restclient "k8s.io/client-go/rest" "k8s.io/client-go/tools/cache" "k8s.io/klog/v2" - "k8s.io/kube-scheduler/config/v1beta3" + configv1 "k8s.io/kube-scheduler/config/v1" schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config" "k8s.io/kubernetes/pkg/scheduler/apis/config/scheme" "k8s.io/kubernetes/pkg/scheduler/framework" @@ -53,7 +51,7 @@ import ( const ( // Duration the scheduler will wait before expiring an assumed pod. // See issue #106361 for more details about this parameter and its value. - durationToExpireAssumedPod = 15 * time.Minute + durationToExpireAssumedPod time.Duration = 0 ) // ErrNoNodesAvailable is used to describe the error that no nodes available to schedule pods. @@ -74,9 +72,8 @@ type Scheduler struct { // stale while they sit in a channel. NextPod func() *framework.QueuedPodInfo - // Error is called if there is an error. It is passed the pod in - // question, and the error - Error func(*framework.QueuedPodInfo, error) + // FailureHandler is called upon a scheduling failure. + FailureHandler FailureHandlerFn // SchedulePod tries to schedule the given pod to one of the nodes in the node list. // Return a struct of ScheduleResult with the name of suggested host on success, @@ -134,7 +131,7 @@ type ScheduleResult struct { // WithComponentConfigVersion sets the component config version to the // KubeSchedulerConfiguration version used. The string should be the full // scheme group/version of the external type we converted from (for example -// "kubescheduler.config.k8s.io/v1beta2") +// "kubescheduler.config.k8s.io/v1") func WithComponentConfigVersion(apiVersion string) Option { return func(o *schedulerOptions) { o.componentConfigVersion = apiVersion @@ -249,7 +246,7 @@ func New(client clientset.Interface, } if options.applyDefaultProfile { - var versionedCfg v1beta3.KubeSchedulerConfiguration + var versionedCfg configv1.KubeSchedulerConfiguration scheme.Scheme.Default(&versionedCfg) cfg := schedulerapi.KubeSchedulerConfiguration{} if err := scheme.Scheme.Convert(&versionedCfg, &cfg, nil); err != nil { @@ -318,7 +315,6 @@ func New(client clientset.Interface, schedulerCache, extenders, internalqueue.MakeNextPodFunc(podQueue), - MakeDefaultErrorFunc(client, podLister, podQueue, schedulerCache), stopEverything, podQueue, profiles, @@ -348,56 +344,6 @@ func (sched *Scheduler) Run(ctx context.Context) { sched.SchedulingQueue.Close() } -// MakeDefaultErrorFunc construct a function to handle pod scheduler error -func MakeDefaultErrorFunc(client clientset.Interface, podLister corelisters.PodLister, podQueue internalqueue.SchedulingQueue, schedulerCache internalcache.Cache) func(*framework.QueuedPodInfo, error) { - return func(podInfo *framework.QueuedPodInfo, err error) { - pod := podInfo.Pod - if err == ErrNoNodesAvailable { - klog.V(2).InfoS("Unable to schedule pod; no nodes are registered to the cluster; waiting", "pod", klog.KObj(pod)) - } else if fitError, ok := err.(*framework.FitError); ok { - // Inject UnschedulablePlugins to PodInfo, which will be used later for moving Pods between queues efficiently. - podInfo.UnschedulablePlugins = fitError.Diagnosis.UnschedulablePlugins - klog.V(2).InfoS("Unable to schedule pod; no fit; waiting", "pod", klog.KObj(pod), "err", err) - } else if apierrors.IsNotFound(err) { - klog.V(2).InfoS("Unable to schedule pod, possibly due to node not found; waiting", "pod", klog.KObj(pod), "err", err) - if errStatus, ok := err.(apierrors.APIStatus); ok && errStatus.Status().Details.Kind == "node" { - nodeName := errStatus.Status().Details.Name - // when node is not found, We do not remove the node right away. Trying again to get - // the node and if the node is still not found, then remove it from the scheduler cache. - _, err := client.CoreV1().Nodes().Get(context.TODO(), nodeName, metav1.GetOptions{}) - if err != nil && apierrors.IsNotFound(err) { - node := v1.Node{ObjectMeta: metav1.ObjectMeta{Name: nodeName}} - if err := schedulerCache.RemoveNode(&node); err != nil { - klog.V(4).InfoS("Node is not found; failed to remove it from the cache", "node", node.Name) - } - } - } - } else { - klog.ErrorS(err, "Error scheduling pod; retrying", "pod", klog.KObj(pod)) - } - - // Check if the Pod exists in informer cache. - cachedPod, err := podLister.Pods(pod.Namespace).Get(pod.Name) - if err != nil { - klog.InfoS("Pod doesn't exist in informer cache", "pod", klog.KObj(pod), "err", err) - return - } - - // In the case of extender, the pod may have been bound successfully, but timed out returning its response to the scheduler. - // It could result in the live version to carry .spec.nodeName, and that's inconsistent with the internal-queued version. - if len(cachedPod.Spec.NodeName) != 0 { - klog.InfoS("Pod has been assigned to node. Abort adding it back to queue.", "pod", klog.KObj(pod), "node", cachedPod.Spec.NodeName) - return - } - - // As is from SharedInformer, we need to do a DeepCopy() here. - podInfo.PodInfo = framework.NewPodInfo(cachedPod.DeepCopy()) - if err := podQueue.AddUnschedulableIfNotPresent(podInfo, podQueue.SchedulingCycle()); err != nil { - klog.ErrorS(err, "Error occurred") - } - } -} - // NewInformerFactory creates a SharedInformerFactory and initializes a scheduler specific // in-place podInformer. func NewInformerFactory(cs clientset.Interface, resyncPeriod time.Duration) informers.SharedInformerFactory { @@ -464,12 +410,13 @@ func buildExtenders(extenders []schedulerapi.Extender, profiles []schedulerapi.K return fExtenders, nil } +type FailureHandlerFn func(ctx context.Context, fwk framework.Framework, podInfo *framework.QueuedPodInfo, err error, reason string, nominatingInfo *framework.NominatingInfo) + // newScheduler creates a Scheduler object. func newScheduler( cache internalcache.Cache, extenders []framework.Extender, nextPod func() *framework.QueuedPodInfo, - Error func(*framework.QueuedPodInfo, error), stopEverything <-chan struct{}, schedulingQueue internalqueue.SchedulingQueue, profiles profile.Map, @@ -480,7 +427,6 @@ func newScheduler( Cache: cache, Extenders: extenders, NextPod: nextPod, - Error: Error, StopEverything: stopEverything, SchedulingQueue: schedulingQueue, Profiles: profiles, @@ -489,6 +435,7 @@ func newScheduler( percentageOfNodesToScore: percentageOfNodesToScore, } sched.SchedulePod = sched.schedulePod + sched.FailureHandler = sched.handleSchedulingFailure return &sched } @@ -505,10 +452,11 @@ func unionedGVKs(m map[framework.ClusterEvent]sets.String) map[framework.GVK]fra } // newPodInformer creates a shared index informer that returns only non-terminal pods. +// The PodInformer allows indexers to be added, but note that only non-conflict indexers are allowed. func newPodInformer(cs clientset.Interface, resyncPeriod time.Duration) cache.SharedIndexInformer { selector := fmt.Sprintf("status.phase!=%v,status.phase!=%v", v1.PodSucceeded, v1.PodFailed) tweakListOptions := func(options *metav1.ListOptions) { options.FieldSelector = selector } - return coreinformers.NewFilteredPodInformer(cs, metav1.NamespaceAll, resyncPeriod, nil, tweakListOptions) + return coreinformers.NewFilteredPodInformer(cs, metav1.NamespaceAll, resyncPeriod, cache.Indexers{}, tweakListOptions) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/pod_resources.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/pod_resources.go index b5947349cd4..bf665c68cc6 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/pod_resources.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/pod_resources.go @@ -18,8 +18,6 @@ package util import ( v1 "k8s.io/api/core/v1" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/features" ) // For each of these resources, a pod that doesn't request the resource explicitly @@ -65,11 +63,6 @@ func GetRequestForResource(resource v1.ResourceName, requests *v1.ResourceList, } return requests.Memory().Value() case v1.ResourceEphemeralStorage: - // if the local storage capacity isolation feature gate is disabled, pods request 0 disk. - if !utilfeature.DefaultFeatureGate.Enabled(features.LocalStorageCapacityIsolation) { - return 0 - } - quantity, found := (*requests)[v1.ResourceEphemeralStorage] if !found { return 0 diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/utils.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/utils.go index 929dfb8fa44..c597510fb62 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/utils.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/scheduler/util/utils.go @@ -26,8 +26,10 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" utilerrors "k8s.io/apimachinery/pkg/util/errors" + "k8s.io/apimachinery/pkg/util/net" "k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/client-go/kubernetes" + "k8s.io/client-go/util/retry" corev1helpers "k8s.io/component-helpers/scheduling/corev1" "k8s.io/klog/v2" extenderv1 "k8s.io/kube-scheduler/extender/v1" @@ -115,8 +117,12 @@ func PatchPodStatus(ctx context.Context, cs kubernetes.Interface, old *v1.Pod, n return nil } - _, err = cs.CoreV1().Pods(old.Namespace).Patch(ctx, old.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") - return err + patchFn := func() error { + _, err := cs.CoreV1().Pods(old.Namespace).Patch(ctx, old.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") + return err + } + + return retry.OnError(retry.DefaultBackoff, net.IsConnectionRefused, patchFn) } // DeletePod deletes the given from API server diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/conntrack.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/conntrack.go index 52759266ae4..4dc27d347e4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/conntrack.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/conntrack/conntrack.go @@ -86,7 +86,7 @@ func Exists(execer exec.Interface) bool { // https://github.com/kubernetes/kubernetes/issues/31983 func ClearEntriesForPort(execer exec.Interface, port int, isIPv6 bool, protocol v1.Protocol) error { if port <= 0 { - return fmt.Errorf("Wrong port number. The port number must be greater than zero") + return fmt.Errorf("wrong port number. The port number must be greater than zero") } parameters := parametersWithFamily(isIPv6, "-D", "-p", protoStr(protocol), "--dport", strconv.Itoa(port)) err := Exec(execer, parameters...) @@ -117,7 +117,7 @@ func ClearEntriesForNAT(execer exec.Interface, origin, dest string, protocol v1. // https://github.com/kubernetes/kubernetes/issues/59368 func ClearEntriesForPortNAT(execer exec.Interface, dest string, port int, protocol v1.Protocol) error { if port <= 0 { - return fmt.Errorf("Wrong port number. The port number must be greater than zero") + return fmt.Errorf("wrong port number. The port number must be greater than zero") } parameters := parametersWithFamily(utilnet.IsIPv6String(dest), "-D", "-p", protoStr(protocol), "--dport", strconv.Itoa(port), "--dst-nat", dest) err := Exec(execer, parameters...) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/env/env.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/env/env.go deleted file mode 100644 index 6879c5052b1..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/env/env.go +++ /dev/null @@ -1,57 +0,0 @@ -/* -Copyright 2015 The Kubernetes 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 env - -import ( - "os" - "strconv" -) - -// GetEnvAsStringOrFallback returns the env variable for the given key -// and falls back to the given defaultValue if not set -func GetEnvAsStringOrFallback(key, defaultValue string) string { - if v := os.Getenv(key); v != "" { - return v - } - return defaultValue -} - -// GetEnvAsIntOrFallback returns the env variable (parsed as integer) for -// the given key and falls back to the given defaultValue if not set -func GetEnvAsIntOrFallback(key string, defaultValue int) (int, error) { - if v := os.Getenv(key); v != "" { - value, err := strconv.Atoi(v) - if err != nil { - return defaultValue, err - } - return value, nil - } - return defaultValue, nil -} - -// GetEnvAsFloat64OrFallback returns the env variable (parsed as float64) for -// the given key and falls back to the given defaultValue if not set -func GetEnvAsFloat64OrFallback(key string, defaultValue float64) (float64, error) { - if v := os.Getenv(key); v != "" { - value, err := strconv.ParseFloat(v, 64) - if err != nil { - return defaultValue, err - } - return value, nil - } - return defaultValue, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flag/flags.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flag/flags.go index ff8e40db8e8..9d518f7c659 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flag/flags.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/flag/flags.go @@ -275,7 +275,7 @@ func (t RegisterWithTaintsVar) Set(s string) error { } var taints []v1.Taint for _, ct := range corev1Taints { - taints = append(taints, v1.Taint{Key: ct.Key, Value: ct.Value, Effect: v1.TaintEffect(ct.Effect)}) + taints = append(taints, v1.Taint{Key: ct.Key, Value: ct.Value, Effect: ct.Effect}) } *t.Value = taints return nil diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff/exponential_backoff.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff/exponential_backoff.go index 336f80a5134..1ae4d5e1f73 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff/exponential_backoff.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff/exponential_backoff.go @@ -28,13 +28,13 @@ const ( // that GoroutineMap will refuse to allow another operation to start with // the same target (if exponentialBackOffOnError is enabled). Each // successive error results in a wait 2x times the previous. - initialDurationBeforeRetry time.Duration = 500 * time.Millisecond + initialDurationBeforeRetry = 500 * time.Millisecond // maxDurationBeforeRetry is the maximum amount of time that // durationBeforeRetry will grow to due to exponential backoff. // Value is slightly offset from 2 minutes to make timeouts due to this // constant recognizable. - maxDurationBeforeRetry time.Duration = 2*time.Minute + 2*time.Second + maxDurationBeforeRetry = 2*time.Minute + 2*time.Second ) // ExponentialBackoff contains the last occurrence of an error and the duration diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go index 2b145f08f8b..05fa90be5db 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/ipset/ipset.go @@ -57,15 +57,15 @@ const IPSetCmd = "ipset" // EntryMemberPattern is the regular expression pattern of ipset member list. // The raw output of ipset command `ipset list {set}` is similar to, -//Name: foobar -//Type: hash:ip,port -//Revision: 2 -//Header: family inet hashsize 1024 maxelem 65536 -//Size in memory: 16592 -//References: 0 -//Members: -//192.168.1.2,tcp:8080 -//192.168.1.1,udp:53 +// Name: foobar +// Type: hash:ip,port +// Revision: 2 +// Header: family inet hashsize 1024 maxelem 65536 +// Size in memory: 16592 +// References: 0 +// Members: +// 192.168.1.2,tcp:8080 +// 192.168.1.1,udp:53 var EntryMemberPattern = "(?m)^(.*\n)*Members:\n" // VersionPattern is the regular expression pattern of ipset version string. @@ -121,7 +121,7 @@ func (set *IPSet) Validate() error { return nil } -//setIPSetDefaults sets some IPSet fields if not present to their default values. +// setIPSetDefaults sets some IPSet fields if not present to their default values. func (set *IPSet) setIPSetDefaults() { // Setting default values if not present if set.HashSize == 0 { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go index 7ec11e4f00f..b788beb9113 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/iptables/save_restore.go @@ -21,102 +21,32 @@ import ( "fmt" ) -var ( - commitBytes = []byte("COMMIT") - spaceBytes = []byte(" ") -) - // MakeChainLine return an iptables-save/restore formatted chain line given a Chain func MakeChainLine(chain Chain) string { return fmt.Sprintf(":%s - [0:0]", chain) } -// GetChainLines parses a table's iptables-save data to find chains in the table. -// It returns a map of iptables.Chain to []byte where the []byte is the chain line -// from save (with counters etc.). -// Note that to avoid allocations memory is SHARED with save. -func GetChainLines(table Table, save []byte) map[Chain][]byte { - chainsMap := make(map[Chain][]byte) - tablePrefix := []byte("*" + string(table)) - readIndex := 0 - // find beginning of table - for readIndex < len(save) { - line, n := readLine(readIndex, save) - readIndex = n - if bytes.HasPrefix(line, tablePrefix) { +// GetChainsFromTable parses iptables-save data to find the chains that are defined. It +// assumes that save contains a single table's data, and returns a map with keys for every +// chain defined in that table. +func GetChainsFromTable(save []byte) map[Chain]struct{} { + chainsMap := make(map[Chain]struct{}) + + for { + i := bytes.Index(save, []byte("\n:")) + if i == -1 { break } - } - // parse table lines - for readIndex < len(save) { - line, n := readLine(readIndex, save) - readIndex = n - if len(line) == 0 { - continue - } - if bytes.HasPrefix(line, commitBytes) || line[0] == '*' { + start := i + 2 + save = save[start:] + end := bytes.Index(save, []byte(" ")) + if i == -1 { + // shouldn't happen, but... break - } else if line[0] == '#' { - continue - } else if line[0] == ':' && len(line) > 1 { - // We assume that the contains space - chain lines have 3 fields, - // space delimited. If there is no space, this line will panic. - spaceIndex := bytes.Index(line, spaceBytes) - if spaceIndex == -1 { - panic(fmt.Sprintf("Unexpected chain line in iptables-save output: %v", string(line))) - } - chain := Chain(line[1:spaceIndex]) - chainsMap[chain] = line } + chain := Chain(save[:end]) + chainsMap[chain] = struct{}{} + save = save[end:] } return chainsMap } - -func readLine(readIndex int, byteArray []byte) ([]byte, int) { - currentReadIndex := readIndex - - // consume left spaces - for currentReadIndex < len(byteArray) { - if byteArray[currentReadIndex] == ' ' { - currentReadIndex++ - } else { - break - } - } - - // leftTrimIndex stores the left index of the line after the line is left-trimmed - leftTrimIndex := currentReadIndex - - // rightTrimIndex stores the right index of the line after the line is right-trimmed - // it is set to -1 since the correct value has not yet been determined. - rightTrimIndex := -1 - - for ; currentReadIndex < len(byteArray); currentReadIndex++ { - if byteArray[currentReadIndex] == ' ' { - // set rightTrimIndex - if rightTrimIndex == -1 { - rightTrimIndex = currentReadIndex - } - } else if (byteArray[currentReadIndex] == '\n') || (currentReadIndex == (len(byteArray) - 1)) { - // end of line or byte buffer is reached - if currentReadIndex <= leftTrimIndex { - return nil, currentReadIndex + 1 - } - // set the rightTrimIndex - if rightTrimIndex == -1 { - rightTrimIndex = currentReadIndex - if currentReadIndex == (len(byteArray)-1) && (byteArray[currentReadIndex] != '\n') { - // ensure that the last character is part of the returned string, - // unless the last character is '\n' - rightTrimIndex = currentReadIndex + 1 - } - } - // Avoid unnecessary allocation. - return byteArray[leftTrimIndex:rightTrimIndex], currentReadIndex + 1 - } else { - // unset rightTrimIndex - rightTrimIndex = -1 - } - } - return nil, currentReadIndex -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/pod.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/pod.go index a40f39b3b53..d972e93d6ee 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/pod.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/util/pod/pod.go @@ -30,7 +30,7 @@ import ( ) // PatchPodStatus patches pod status. It returns true and avoids an update if the patch contains no changes. -func PatchPodStatus(c clientset.Interface, namespace, name string, uid types.UID, oldPodStatus, newPodStatus v1.PodStatus) (*v1.Pod, []byte, bool, error) { +func PatchPodStatus(ctx context.Context, c clientset.Interface, namespace, name string, uid types.UID, oldPodStatus, newPodStatus v1.PodStatus) (*v1.Pod, []byte, bool, error) { patchBytes, unchanged, err := preparePatchBytesForPodStatus(namespace, name, uid, oldPodStatus, newPodStatus) if err != nil { return nil, nil, false, err @@ -39,7 +39,7 @@ func PatchPodStatus(c clientset.Interface, namespace, name string, uid types.UID return nil, patchBytes, true, nil } - updatedPod, err := c.CoreV1().Pods(namespace).Patch(context.TODO(), name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") + updatedPod, err := c.CoreV1().Pods(namespace).Patch(ctx, name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") if err != nil { return nil, nil, false, fmt.Errorf("failed to patch status %q for pod %q/%q: %v", patchBytes, namespace, name, err) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs.go index 6d4752d17a7..c50e8e03635 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs.go @@ -100,6 +100,10 @@ func (plugin *awsElasticBlockStorePlugin) SupportsBulkVolumeVerification() bool return true } +func (plugin *awsElasticBlockStorePlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *awsElasticBlockStorePlugin) GetVolumeLimits() (map[string]int64, error) { volumeLimits := map[string]int64{ util.EBSVolumeLimitKey: util.DefaultMaxEBSVolumes, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs_block.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs_block.go index c25808c4a93..2eaab4e46f2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs_block.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/awsebs/aws_ebs_block.go @@ -22,6 +22,7 @@ package awsebs import ( "fmt" "path/filepath" + goruntime "runtime" "strconv" "strings" @@ -66,6 +67,10 @@ func (plugin *awsElasticBlockStorePlugin) getVolumeSpecFromGlobalMapPath(volumeN } fullVolumeID := strings.TrimPrefix(globalMapPath, pluginDir) // /vol-XXXXXX fullVolumeID = strings.TrimLeft(fullVolumeID, "/") // vol-XXXXXX + // Windows paths have \\ instead. + if goruntime.GOOS == "windows" { + fullVolumeID = strings.TrimLeft(fullVolumeID, "\\") // vol-XXXXXX + } vID, err := formatVolumeID(fullVolumeID) if err != nil { return nil, fmt.Errorf("failed to get AWS volume id from map path %q: %v", globalMapPath, err) @@ -151,7 +156,8 @@ var _ volume.BlockVolumeMapper = &awsElasticBlockStoreMapper{} // GetGlobalMapPath returns global map path and error // path: plugins/kubernetes.io/{PluginName}/volumeDevices/volumeID -// plugins/kubernetes.io/aws-ebs/volumeDevices/vol-XXXXXX +// +// plugins/kubernetes.io/aws-ebs/volumeDevices/vol-XXXXXX func (ebs *awsElasticBlockStore) GetGlobalMapPath(spec *volume.Spec) (string, error) { volumeSource, _, err := getVolumeSource(spec) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/azure_file.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/azure_file.go index 61953cf3d48..df331ea9f48 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/azure_file.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azure_file/azure_file.go @@ -100,6 +100,10 @@ func (plugin *azureFilePlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *azureFilePlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *azureFilePlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_common_windows.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_common_windows.go index 3a1bc487397..c137b438ad5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_common_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_common_windows.go @@ -100,10 +100,10 @@ func findDiskByLun(lun int, iohandler ioHandler, exec utilexec.Interface) (strin return "", nil } -func formatIfNotFormatted(disk string, fstype string, exec utilexec.Interface) { +func formatIfNotFormatted(disk string, fstype string, exec utilexec.Interface) error { if err := mount.ValidateDiskNumber(disk); err != nil { klog.Errorf("azureDisk Mount: formatIfNotFormatted failed, err: %v\n", err) - return + return err } if len(fstype) == 0 { @@ -115,7 +115,8 @@ func formatIfNotFormatted(disk string, fstype string, exec utilexec.Interface) { output, err := exec.Command("powershell", "/c", cmd).CombinedOutput() if err != nil { klog.Errorf("azureDisk Mount: Get-Disk failed, error: %v, output: %q", err, string(output)) - } else { - klog.Infof("azureDisk Mount: Disk successfully formatted, disk: %q, fstype: %q\n", disk, fstype) + return err } + klog.Infof("azureDisk Mount: Disk successfully formatted, disk: %q, fstype: %q\n", disk, fstype) + return nil } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd.go index e839474483c..25dd97af883 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd.go @@ -134,6 +134,10 @@ func (plugin *azureDataDiskPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *azureDataDiskPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *azureDataDiskPlugin) GetVolumeLimits() (map[string]int64, error) { volumeLimits := map[string]int64{ util.AzureVolumeLimitKey: defaultAzureVolumeLimit, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_block.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_block.go index e6d6ce6ac11..713bb289b33 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_block.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_block.go @@ -144,7 +144,8 @@ var _ volume.BlockVolumeMapper = &azureDataDiskMapper{} // GetGlobalMapPath returns global map path and error // path: plugins/kubernetes.io/{PluginName}/volumeDevices/volumeID -// plugins/kubernetes.io/azure-disk/volumeDevices/vol-XXXXXX +// +// plugins/kubernetes.io/azure-disk/volumeDevices/vol-XXXXXX func (disk *dataDisk) GetGlobalMapPath(spec *volume.Spec) (string, error) { volumeSource, _, err := getVolumeSource(spec) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_max_disk_count.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_max_disk_count.go index 534bb89679a..09730beccb3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_max_disk_count.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/azuredd/azure_dd_max_disk_count.go @@ -22,403 +22,716 @@ package azuredd // about how to get all VM size list, // refer to https://github.com/kubernetes/kubernetes/issues/77461#issuecomment-492488756 var maxDataDiskCountMap = map[string]int64{ - "BASIC_A0": 1, - "BASIC_A1": 2, - "BASIC_A2": 4, - "BASIC_A3": 8, - "BASIC_A4": 16, - "STANDARD_A0": 1, - "STANDARD_A10": 32, - "STANDARD_A11": 64, - "STANDARD_A1": 2, - "STANDARD_A1_V2": 2, - "STANDARD_A2": 4, - "STANDARD_A2M_V2": 4, - "STANDARD_A2_V2": 4, - "STANDARD_A3": 8, - "STANDARD_A4": 16, - "STANDARD_A4M_V2": 8, - "STANDARD_A4_V2": 8, - "STANDARD_A5": 4, - "STANDARD_A6": 8, - "STANDARD_A7": 16, - "STANDARD_A8": 32, - "STANDARD_A8M_V2": 16, - "STANDARD_A8_V2": 16, - "STANDARD_A9": 64, - "STANDARD_B12MS": 16, - "STANDARD_B16MS": 32, - "STANDARD_B1LS": 2, - "STANDARD_B1MS": 2, - "STANDARD_B1S": 2, - "STANDARD_B20MS": 32, - "STANDARD_B2MS": 4, - "STANDARD_B2S": 4, - "STANDARD_B4MS": 8, - "STANDARD_B8MS": 16, - "STANDARD_D11": 8, - "STANDARD_D11_V2": 8, - "STANDARD_D11_V2_PROMO": 8, - "STANDARD_D12": 16, - "STANDARD_D12_V2": 16, - "STANDARD_D12_V2_PROMO": 16, - "STANDARD_D13": 32, - "STANDARD_D13_V2": 32, - "STANDARD_D13_V2_PROMO": 32, - "STANDARD_D1": 4, - "STANDARD_D14": 64, - "STANDARD_D14_V2": 64, - "STANDARD_D14_V2_PROMO": 64, - "STANDARD_D15_V2": 64, - "STANDARD_D16AS_V4": 32, - "STANDARD_D16A_V4": 32, - "STANDARD_D16DS_V4": 32, - "STANDARD_D16D_V4": 32, - "STANDARD_D16S_V3": 32, - "STANDARD_D16S_V4": 32, - "STANDARD_D16_V3": 32, - "STANDARD_D16_V4": 32, - "STANDARD_D1_V2": 4, - "STANDARD_D2": 8, - "STANDARD_D2AS_V4": 4, - "STANDARD_D2A_V4": 4, - "STANDARD_D2DS_V4": 4, - "STANDARD_D2D_V4": 4, - "STANDARD_D2S_V3": 4, - "STANDARD_D2S_V4": 4, - "STANDARD_D2_V2": 8, - "STANDARD_D2_V2_PROMO": 8, - "STANDARD_D2_V3": 4, - "STANDARD_D2_V4": 4, - "STANDARD_D3": 16, - "STANDARD_D32AS_V4": 32, - "STANDARD_D32A_V4": 32, - "STANDARD_D32DS_V4": 32, - "STANDARD_D32D_V4": 32, - "STANDARD_D32S_V3": 32, - "STANDARD_D32S_V4": 32, - "STANDARD_D32_V3": 32, - "STANDARD_D32_V4": 32, - "STANDARD_D3_V2": 16, - "STANDARD_D3_V2_PROMO": 16, - "STANDARD_D4": 32, - "STANDARD_D48AS_V4": 32, - "STANDARD_D48A_V4": 32, - "STANDARD_D48DS_V4": 32, - "STANDARD_D48D_V4": 32, - "STANDARD_D48S_V3": 32, - "STANDARD_D48S_V4": 32, - "STANDARD_D48_V3": 32, - "STANDARD_D48_V4": 32, - "STANDARD_D4AS_V4": 8, - "STANDARD_D4A_V4": 8, - "STANDARD_D4DS_V4": 8, - "STANDARD_D4D_V4": 8, - "STANDARD_D4S_V3": 8, - "STANDARD_D4S_V4": 8, - "STANDARD_D4_V2": 32, - "STANDARD_D4_V2_PROMO": 32, - "STANDARD_D4_V3": 8, - "STANDARD_D4_V4": 8, - "STANDARD_D5_V2": 64, - "STANDARD_D5_V2_PROMO": 64, - "STANDARD_D64AS_V4": 32, - "STANDARD_D64A_V4": 32, - "STANDARD_D64DS_V4": 32, - "STANDARD_D64D_V4": 32, - "STANDARD_D64S_V3": 32, - "STANDARD_D64S_V4": 32, - "STANDARD_D64_V3": 32, - "STANDARD_D64_V4": 32, - "STANDARD_D8AS_V4": 16, - "STANDARD_D8A_V4": 16, - "STANDARD_D8DS_V4": 16, - "STANDARD_D8D_V4": 16, - "STANDARD_D8S_V3": 16, - "STANDARD_D8S_V4": 16, - "STANDARD_D8_V3": 16, - "STANDARD_D8_V4": 16, - "STANDARD_D96AS_V4": 32, - "STANDARD_D96A_V4": 32, - "STANDARD_DC1S_V2": 1, - "STANDARD_DC2S": 2, - "STANDARD_DC2S_V2": 2, - "STANDARD_DC4S": 4, - "STANDARD_DC4S_V2": 4, - "STANDARD_DC8S": 8, - "STANDARD_DC8_V2": 8, - "STANDARD_DS11-1_V2": 8, - "STANDARD_DS11": 8, - "STANDARD_DS11_V2": 8, - "STANDARD_DS11_V2_PROMO": 8, - "STANDARD_DS12": 16, - "STANDARD_DS12-1_V2": 16, - "STANDARD_DS12-2_V2": 16, - "STANDARD_DS12_V2": 16, - "STANDARD_DS12_V2_PROMO": 16, - "STANDARD_DS13-2_V2": 32, - "STANDARD_DS13": 32, - "STANDARD_DS13-4_V2": 32, - "STANDARD_DS13_V2": 32, - "STANDARD_DS13_V2_PROMO": 32, - "STANDARD_DS1": 4, - "STANDARD_DS14-4_V2": 64, - "STANDARD_DS14": 64, - "STANDARD_DS14-8_V2": 64, - "STANDARD_DS14_V2": 64, - "STANDARD_DS14_V2_PROMO": 64, - "STANDARD_DS15_V2": 64, - "STANDARD_DS1_V2": 4, - "STANDARD_DS2": 8, - "STANDARD_DS2_V2": 8, - "STANDARD_DS2_V2_PROMO": 8, - "STANDARD_DS3": 16, - "STANDARD_DS3_V2": 16, - "STANDARD_DS3_V2_PROMO": 16, - "STANDARD_DS4": 32, - "STANDARD_DS4_V2": 32, - "STANDARD_DS4_V2_PROMO": 32, - "STANDARD_DS5_V2": 64, - "STANDARD_DS5_V2_PROMO": 64, - "STANDARD_E16-4AS_V4": 32, - "STANDARD_E16-4DS_V4": 32, - "STANDARD_E16-4S_V3": 32, - "STANDARD_E16-4S_V4": 32, - "STANDARD_E16-8AS_V4": 32, - "STANDARD_E16-8DS_V4": 32, - "STANDARD_E16-8S_V3": 32, - "STANDARD_E16-8S_V4": 32, - "STANDARD_E16AS_V4": 32, - "STANDARD_E16A_V4": 32, - "STANDARD_E16DS_V4": 32, - "STANDARD_E16D_V4": 32, - "STANDARD_E16S_V3": 32, - "STANDARD_E16S_V4": 32, - "STANDARD_E16_V3": 32, - "STANDARD_E16_V4": 32, - "STANDARD_E20AS_V4": 32, - "STANDARD_E20A_V4": 32, - "STANDARD_E20DS_V4": 32, - "STANDARD_E20D_V4": 32, - "STANDARD_E20S_V3": 32, - "STANDARD_E20S_V4": 32, - "STANDARD_E20_V3": 32, - "STANDARD_E20_V4": 32, - "STANDARD_E2AS_V4": 4, - "STANDARD_E2A_V4": 4, - "STANDARD_E2DS_V4": 4, - "STANDARD_E2D_V4": 4, - "STANDARD_E2S_V3": 4, - "STANDARD_E2S_V4": 4, - "STANDARD_E2_V3": 4, - "STANDARD_E2_V4": 4, - "STANDARD_E32-16AS_V4": 32, - "STANDARD_E32-16DS_V4": 32, - "STANDARD_E32-16S_V3": 32, - "STANDARD_E32-16S_V4": 32, - "STANDARD_E32-8AS_V4": 32, - "STANDARD_E32-8DS_V4": 32, - "STANDARD_E32-8S_V3": 32, - "STANDARD_E32-8S_V4": 32, - "STANDARD_E32AS_V4": 32, - "STANDARD_E32A_V4": 32, - "STANDARD_E32DS_V4": 32, - "STANDARD_E32D_V4": 32, - "STANDARD_E32S_V3": 32, - "STANDARD_E32S_V4": 32, - "STANDARD_E32_V3": 32, - "STANDARD_E32_V4": 32, - "STANDARD_E4-2AS_V4": 8, - "STANDARD_E4-2DS_V4": 8, - "STANDARD_E4-2S_V3": 8, - "STANDARD_E4-2S_V4": 8, - "STANDARD_E48AS_V4": 32, - "STANDARD_E48A_V4": 32, - "STANDARD_E48DS_V4": 32, - "STANDARD_E48D_V4": 32, - "STANDARD_E48S_V3": 32, - "STANDARD_E48S_V4": 32, - "STANDARD_E48_V3": 32, - "STANDARD_E48_V4": 32, - "STANDARD_E4AS_V4": 8, - "STANDARD_E4A_V4": 8, - "STANDARD_E4DS_V4": 8, - "STANDARD_E4D_V4": 8, - "STANDARD_E4S_V3": 8, - "STANDARD_E4S_V4": 8, - "STANDARD_E4_V3": 8, - "STANDARD_E4_V4": 8, - "STANDARD_E64-16AS_V4": 32, - "STANDARD_E64-16DS_V4": 32, - "STANDARD_E64-16S_V3": 32, - "STANDARD_E64-16S_V4": 32, - "STANDARD_E64-32AS_V4": 32, - "STANDARD_E64-32DS_V4": 32, - "STANDARD_E64-32S_V3": 32, - "STANDARD_E64-32S_V4": 32, - "STANDARD_E64AS_V4": 32, - "STANDARD_E64A_V4": 32, - "STANDARD_E64DS_V4": 32, - "STANDARD_E64D_V4": 32, - "STANDARD_E64IS_V3": 32, - "STANDARD_E64I_V3": 32, - "STANDARD_E64S_V3": 32, - "STANDARD_E64S_V4": 32, - "STANDARD_E64_V3": 32, - "STANDARD_E64_V4": 32, - "STANDARD_E80IDS_V4": 32, - "STANDARD_E80IS_V4": 32, - "STANDARD_E8-2AS_V4": 16, - "STANDARD_E8-2DS_V4": 16, - "STANDARD_E8-2S_V3": 16, - "STANDARD_E8-2S_V4": 16, - "STANDARD_E8-4AS_V4": 16, - "STANDARD_E8-4DS_V4": 16, - "STANDARD_E8-4S_V3": 16, - "STANDARD_E8-4S_V4": 16, - "STANDARD_E8AS_V4": 16, - "STANDARD_E8A_V4": 16, - "STANDARD_E8DS_V4": 16, - "STANDARD_E8D_V4": 16, - "STANDARD_E8S_V3": 16, - "STANDARD_E8S_V4": 16, - "STANDARD_E8_V3": 16, - "STANDARD_E8_V4": 16, - "STANDARD_E96-24AS_V4": 32, - "STANDARD_E96-48AS_V4": 32, - "STANDARD_E96AS_V4": 32, - "STANDARD_E96A_V4": 32, - "STANDARD_F1": 4, - "STANDARD_F16": 64, - "STANDARD_F16S": 64, - "STANDARD_F16S_V2": 32, - "STANDARD_F1S": 4, - "STANDARD_F2": 8, - "STANDARD_F2S": 8, - "STANDARD_F2S_V2": 4, - "STANDARD_F32S_V2": 32, - "STANDARD_F4": 16, - "STANDARD_F48S_V2": 32, - "STANDARD_F4S": 16, - "STANDARD_F4S_V2": 8, - "STANDARD_F64S_V2": 32, - "STANDARD_F72S_V2": 32, - "STANDARD_F8": 32, - "STANDARD_F8S": 32, - "STANDARD_F8S_V2": 16, - "STANDARD_G1": 8, - "STANDARD_G2": 16, - "STANDARD_G3": 32, - "STANDARD_G4": 64, - "STANDARD_G5": 64, - "STANDARD_GS1": 8, - "STANDARD_GS2": 16, - "STANDARD_GS3": 32, - "STANDARD_GS4-4": 64, - "STANDARD_GS4": 64, - "STANDARD_GS4-8": 64, - "STANDARD_GS5-16": 64, - "STANDARD_GS5": 64, - "STANDARD_GS5-8": 64, - "STANDARD_H16": 64, - "STANDARD_H16M": 64, - "STANDARD_H16M_PROMO": 64, - "STANDARD_H16MR": 64, - "STANDARD_H16MR_PROMO": 64, - "STANDARD_H16_PROMO": 64, - "STANDARD_H16R": 64, - "STANDARD_H16R_PROMO": 64, - "STANDARD_H8": 32, - "STANDARD_H8M": 32, - "STANDARD_H8M_PROMO": 32, - "STANDARD_H8_PROMO": 32, - "STANDARD_HB120RS_V2": 8, - "STANDARD_HB60RS": 4, - "STANDARD_HC44RS": 4, - "STANDARD_L16S": 64, - "STANDARD_L16S_V2": 32, - "STANDARD_L32S": 64, - "STANDARD_L32S_V2": 32, - "STANDARD_L48S_V2": 32, - "STANDARD_L4S": 16, - "STANDARD_L64S_V2": 32, - "STANDARD_L80S_V2": 32, - "STANDARD_L8S": 32, - "STANDARD_L8S_V2": 16, - "STANDARD_M128-32MS": 64, - "STANDARD_M128": 64, - "STANDARD_M128-64MS": 64, - "STANDARD_M128M": 64, - "STANDARD_M128MS": 64, - "STANDARD_M128S": 64, - "STANDARD_M16-4MS": 16, - "STANDARD_M16-8MS": 16, - "STANDARD_M16MS": 16, - "STANDARD_M208MS_V2": 64, - "STANDARD_M208S_V2": 64, - "STANDARD_M32-16MS": 32, - "STANDARD_M32-8MS": 32, - "STANDARD_M32LS": 32, - "STANDARD_M32MS": 32, - "STANDARD_M32TS": 32, - "STANDARD_M416-208MS_V2": 64, - "STANDARD_M416-208S_V2": 64, - "STANDARD_M416MS_V2": 64, - "STANDARD_M416S_V2": 64, - "STANDARD_M64-16MS": 64, - "STANDARD_M64-32MS": 64, - "STANDARD_M64": 64, - "STANDARD_M64LS": 64, - "STANDARD_M64M": 64, - "STANDARD_M64MS": 64, - "STANDARD_M64S": 64, - "STANDARD_M8-2MS": 8, - "STANDARD_M8-4MS": 8, - "STANDARD_M8MS": 8, - "STANDARD_NC12": 48, - "STANDARD_NC12_PROMO": 48, - "STANDARD_NC12S_V2": 24, - "STANDARD_NC12S_V3": 24, - "STANDARD_NC16AS_T4_V3": 32, - "STANDARD_NC24": 64, - "STANDARD_NC24_PROMO": 64, - "STANDARD_NC24R": 64, - "STANDARD_NC24R_PROMO": 64, - "STANDARD_NC24RS_V2": 32, - "STANDARD_NC24RS_V3": 32, - "STANDARD_NC24S_V2": 32, - "STANDARD_NC24S_V3": 32, - "STANDARD_NC4AS_T4_V3": 8, - "STANDARD_NC6": 24, - "STANDARD_NC64AS_T4_V3": 32, - "STANDARD_NC6_PROMO": 24, - "STANDARD_NC6S_V2": 12, - "STANDARD_NC6S_V3": 12, - "STANDARD_NC8AS_T4_V3": 16, - "STANDARD_ND12S": 24, - "STANDARD_ND24RS": 32, - "STANDARD_ND24S": 32, - "STANDARD_ND40RS_V2": 8, - "STANDARD_ND40S_V3": 32, - "STANDARD_ND6S": 12, - "STANDARD_NP10S": 8, - "STANDARD_NP20S": 16, - "STANDARD_NP40S": 32, - "STANDARD_NV12": 48, - "STANDARD_NV12_PROMO": 48, - "STANDARD_NV12S_V2": 24, - "STANDARD_NV12S_V3": 12, - "STANDARD_NV16AS_V4": 32, - "STANDARD_NV24": 64, - "STANDARD_NV24_PROMO": 64, - "STANDARD_NV24S_V2": 32, - "STANDARD_NV24S_V3": 24, - "STANDARD_NV32AS_V4": 32, - "STANDARD_NV48S_V3": 32, - "STANDARD_NV4AS_V4": 8, - "STANDARD_NV6": 24, - "STANDARD_NV6_PROMO": 24, - "STANDARD_NV6S_V2": 12, - "STANDARD_NV8AS_V4": 16, - "STANDARD_PB6S": 12, + "BASIC_A0": 1, + "BASIC_A1": 2, + "BASIC_A2": 4, + "BASIC_A3": 8, + "BASIC_A4": 16, + "STANDARD_A0": 1, + "STANDARD_A1": 2, + "STANDARD_A1_V2": 2, + "STANDARD_A2": 4, + "STANDARD_A2M_V2": 4, + "STANDARD_A2_V2": 4, + "STANDARD_A3": 8, + "STANDARD_A4": 16, + "STANDARD_A4M_V2": 8, + "STANDARD_A4_V2": 8, + "STANDARD_A5": 4, + "STANDARD_A6": 8, + "STANDARD_A7": 16, + "STANDARD_A8M_V2": 16, + "STANDARD_A8_V2": 16, + "STANDARD_B12MS": 16, + "STANDARD_B16MS": 32, + "STANDARD_B1LS": 2, + "STANDARD_B1MS": 2, + "STANDARD_B1S": 2, + "STANDARD_B20MS": 32, + "STANDARD_B2MS": 4, + "STANDARD_B2S": 4, + "STANDARD_B4MS": 8, + "STANDARD_B8MS": 16, + "STANDARD_D11": 8, + "STANDARD_D11_V2": 8, + "STANDARD_D11_V2_PROMO": 8, + "STANDARD_D12": 16, + "STANDARD_D12_V2": 16, + "STANDARD_D12_V2_PROMO": 16, + "STANDARD_D13": 32, + "STANDARD_D13_V2": 32, + "STANDARD_D13_V2_PROMO": 32, + "STANDARD_D1": 4, + "STANDARD_D14": 64, + "STANDARD_D14_V2": 64, + "STANDARD_D14_V2_PROMO": 64, + "STANDARD_D15_V2": 64, + "STANDARD_D16ADS_V5": 32, + "STANDARD_D16AS_V4": 32, + "STANDARD_D16AS_V5": 32, + "STANDARD_D16A_V4": 32, + "STANDARD_D16DS_V4": 32, + "STANDARD_D16DS_V5": 32, + "STANDARD_D16D_V4": 32, + "STANDARD_D16D_V5": 32, + "STANDARD_D16PDS_V5": 32, + "STANDARD_D16PLDS_V5": 32, + "STANDARD_D16PLS_V5": 32, + "STANDARD_D16PS_V5": 32, + "STANDARD_D16S_V3": 32, + "STANDARD_D16S_V4": 32, + "STANDARD_D16S_V5": 32, + "STANDARD_D16_V3": 32, + "STANDARD_D16_V4": 32, + "STANDARD_D16_V5": 32, + "STANDARD_D1_V2": 4, + "STANDARD_D2": 8, + "STANDARD_D2ADS_V5": 4, + "STANDARD_D2AS_V4": 4, + "STANDARD_D2AS_V5": 4, + "STANDARD_D2A_V4": 4, + "STANDARD_D2DS_V4": 4, + "STANDARD_D2DS_V5": 4, + "STANDARD_D2D_V4": 4, + "STANDARD_D2D_V5": 4, + "STANDARD_D2PDS_V5": 4, + "STANDARD_D2PLDS_V5": 4, + "STANDARD_D2PLS_V5": 4, + "STANDARD_D2PS_V5": 4, + "STANDARD_D2S_V3": 4, + "STANDARD_D2S_V4": 4, + "STANDARD_D2S_V5": 4, + "STANDARD_D2_V2": 8, + "STANDARD_D2_V2_PROMO": 8, + "STANDARD_D2_V3": 4, + "STANDARD_D2_V4": 4, + "STANDARD_D2_V5": 4, + "STANDARD_D3": 16, + "STANDARD_D32ADS_V5": 32, + "STANDARD_D32AS_V4": 32, + "STANDARD_D32AS_V5": 32, + "STANDARD_D32A_V4": 32, + "STANDARD_D32DS_V4": 32, + "STANDARD_D32DS_V5": 32, + "STANDARD_D32D_V4": 32, + "STANDARD_D32D_V5": 32, + "STANDARD_D32PDS_V5": 32, + "STANDARD_D32PLDS_V5": 32, + "STANDARD_D32PLS_V5": 32, + "STANDARD_D32PS_V5": 32, + "STANDARD_D32S_V3": 32, + "STANDARD_D32S_V4": 32, + "STANDARD_D32S_V5": 32, + "STANDARD_D32_V3": 32, + "STANDARD_D32_V4": 32, + "STANDARD_D32_V5": 32, + "STANDARD_D3_V2": 16, + "STANDARD_D3_V2_PROMO": 16, + "STANDARD_D4": 32, + "STANDARD_D48ADS_V5": 32, + "STANDARD_D48AS_V4": 32, + "STANDARD_D48AS_V5": 32, + "STANDARD_D48A_V4": 32, + "STANDARD_D48DS_V4": 32, + "STANDARD_D48DS_V5": 32, + "STANDARD_D48D_V4": 32, + "STANDARD_D48D_V5": 32, + "STANDARD_D48PDS_V5": 32, + "STANDARD_D48PLDS_V5": 32, + "STANDARD_D48PLS_V5": 32, + "STANDARD_D48PS_V5": 32, + "STANDARD_D48S_V3": 32, + "STANDARD_D48S_V4": 32, + "STANDARD_D48S_V5": 32, + "STANDARD_D48_V3": 32, + "STANDARD_D48_V4": 32, + "STANDARD_D48_V5": 32, + "STANDARD_D4ADS_V5": 8, + "STANDARD_D4AS_V4": 8, + "STANDARD_D4AS_V5": 8, + "STANDARD_D4A_V4": 8, + "STANDARD_D4DS_V4": 8, + "STANDARD_D4DS_V5": 8, + "STANDARD_D4D_V4": 8, + "STANDARD_D4D_V5": 8, + "STANDARD_D4PDS_V5": 8, + "STANDARD_D4PLDS_V5": 8, + "STANDARD_D4PLS_V5": 8, + "STANDARD_D4PS_V5": 8, + "STANDARD_D4S_V3": 8, + "STANDARD_D4S_V4": 8, + "STANDARD_D4S_V5": 8, + "STANDARD_D4_V2": 32, + "STANDARD_D4_V2_PROMO": 32, + "STANDARD_D4_V3": 8, + "STANDARD_D4_V4": 8, + "STANDARD_D4_V5": 8, + "STANDARD_D5_V2": 64, + "STANDARD_D5_V2_PROMO": 64, + "STANDARD_D64ADS_V5": 32, + "STANDARD_D64AS_V4": 32, + "STANDARD_D64AS_V5": 32, + "STANDARD_D64A_V4": 32, + "STANDARD_D64DS_V4": 32, + "STANDARD_D64DS_V5": 32, + "STANDARD_D64D_V4": 32, + "STANDARD_D64D_V5": 32, + "STANDARD_D64PDS_V5": 32, + "STANDARD_D64PLDS_V5": 32, + "STANDARD_D64PLS_V5": 32, + "STANDARD_D64PS_V5": 32, + "STANDARD_D64S_V3": 32, + "STANDARD_D64S_V4": 32, + "STANDARD_D64S_V5": 32, + "STANDARD_D64_V3": 32, + "STANDARD_D64_V4": 32, + "STANDARD_D64_V5": 32, + "STANDARD_D8ADS_V5": 16, + "STANDARD_D8AS_V4": 16, + "STANDARD_D8AS_V5": 16, + "STANDARD_D8A_V4": 16, + "STANDARD_D8DS_V4": 16, + "STANDARD_D8DS_V5": 16, + "STANDARD_D8D_V4": 16, + "STANDARD_D8D_V5": 16, + "STANDARD_D8PDS_V5": 16, + "STANDARD_D8PLDS_V5": 16, + "STANDARD_D8PLS_V5": 16, + "STANDARD_D8PS_V5": 16, + "STANDARD_D8S_V3": 16, + "STANDARD_D8S_V4": 16, + "STANDARD_D8S_V5": 16, + "STANDARD_D8_V3": 16, + "STANDARD_D8_V4": 16, + "STANDARD_D8_V5": 16, + "STANDARD_D96ADS_V5": 32, + "STANDARD_D96AS_V4": 32, + "STANDARD_D96AS_V5": 32, + "STANDARD_D96A_V4": 32, + "STANDARD_D96DS_V5": 32, + "STANDARD_D96D_V5": 32, + "STANDARD_D96S_V5": 32, + "STANDARD_D96_V5": 32, + "STANDARD_DC16ADS_V5": 32, + "STANDARD_DC16AS_V5": 32, + "STANDARD_DC16DS_V3": 32, + "STANDARD_DC16S_V3": 32, + "STANDARD_DC1DS_V3": 4, + "STANDARD_DC1S_V2": 1, + "STANDARD_DC1S_V3": 4, + "STANDARD_DC24DS_V3": 32, + "STANDARD_DC24S_V3": 32, + "STANDARD_DC2ADS_V5": 4, + "STANDARD_DC2AS_V5": 4, + "STANDARD_DC2DS_V3": 8, + "STANDARD_DC2S": 2, + "STANDARD_DC2S_V2": 2, + "STANDARD_DC2S_V3": 8, + "STANDARD_DC32ADS_V5": 32, + "STANDARD_DC32AS_V5": 32, + "STANDARD_DC32DS_V3": 32, + "STANDARD_DC32S_V3": 32, + "STANDARD_DC48ADS_V5": 32, + "STANDARD_DC48AS_V5": 32, + "STANDARD_DC48DS_V3": 32, + "STANDARD_DC48S_V3": 32, + "STANDARD_DC4ADS_V5": 8, + "STANDARD_DC4AS_V5": 8, + "STANDARD_DC4DS_V3": 16, + "STANDARD_DC4S": 4, + "STANDARD_DC4S_V2": 4, + "STANDARD_DC4S_V3": 16, + "STANDARD_DC64ADS_V5": 32, + "STANDARD_DC64AS_V5": 32, + "STANDARD_DC8ADS_V5": 16, + "STANDARD_DC8AS_V5": 16, + "STANDARD_DC8DS_V3": 32, + "STANDARD_DC8S_V3": 32, + "STANDARD_DC8_V2": 8, + "STANDARD_DC96ADS_V5": 32, + "STANDARD_DC96AS_V5": 32, + "STANDARD_DS11-1_V2": 8, + "STANDARD_DS11": 8, + "STANDARD_DS11_V2": 8, + "STANDARD_DS11_V2_PROMO": 8, + "STANDARD_DS12": 16, + "STANDARD_DS12-1_V2": 16, + "STANDARD_DS12-2_V2": 16, + "STANDARD_DS12_V2": 16, + "STANDARD_DS12_V2_PROMO": 16, + "STANDARD_DS13-2_V2": 32, + "STANDARD_DS13": 32, + "STANDARD_DS13-4_V2": 32, + "STANDARD_DS13_V2": 32, + "STANDARD_DS13_V2_PROMO": 32, + "STANDARD_DS1": 4, + "STANDARD_DS14-4_V2": 64, + "STANDARD_DS14": 64, + "STANDARD_DS14-8_V2": 64, + "STANDARD_DS14_V2": 64, + "STANDARD_DS14_V2_PROMO": 64, + "STANDARD_DS15_V2": 64, + "STANDARD_DS1_V2": 4, + "STANDARD_DS2": 8, + "STANDARD_DS2_V2": 8, + "STANDARD_DS2_V2_PROMO": 8, + "STANDARD_DS3": 16, + "STANDARD_DS3_V2": 16, + "STANDARD_DS3_V2_PROMO": 16, + "STANDARD_DS4": 32, + "STANDARD_DS4_V2": 32, + "STANDARD_DS4_V2_PROMO": 32, + "STANDARD_DS5_V2": 64, + "STANDARD_DS5_V2_PROMO": 64, + "STANDARD_E104IDS_V5": 64, + "STANDARD_E104ID_V5": 64, + "STANDARD_E104IS_V5": 64, + "STANDARD_E104I_V5": 64, + "STANDARD_E112IADS_V5": 64, + "STANDARD_E112IAS_V5": 64, + "STANDARD_E16-4ADS_V5": 32, + "STANDARD_E16-4AS_V4": 32, + "STANDARD_E16-4AS_V5": 32, + "STANDARD_E16-4DS_V4": 32, + "STANDARD_E16-4DS_V5": 32, + "STANDARD_E16-4S_V3": 32, + "STANDARD_E16-4S_V4": 32, + "STANDARD_E16-4S_V5": 32, + "STANDARD_E16-8ADS_V5": 32, + "STANDARD_E16-8AS_V4": 32, + "STANDARD_E16-8AS_V5": 32, + "STANDARD_E16-8DS_V4": 32, + "STANDARD_E16-8DS_V5": 32, + "STANDARD_E16-8S_V3": 32, + "STANDARD_E16-8S_V4": 32, + "STANDARD_E16-8S_V5": 32, + "STANDARD_E16ADS_V5": 32, + "STANDARD_E16AS_V4": 32, + "STANDARD_E16AS_V5": 32, + "STANDARD_E16A_V4": 32, + "STANDARD_E16BDS_V5": 32, + "STANDARD_E16BS_V5": 32, + "STANDARD_E16DS_V4": 32, + "STANDARD_E16DS_V5": 32, + "STANDARD_E16D_V4": 32, + "STANDARD_E16D_V5": 32, + "STANDARD_E16PDS_V5": 32, + "STANDARD_E16PS_V5": 32, + "STANDARD_E16S_V3": 32, + "STANDARD_E16S_V4": 32, + "STANDARD_E16S_V5": 32, + "STANDARD_E16_V3": 32, + "STANDARD_E16_V4": 32, + "STANDARD_E16_V5": 32, + "STANDARD_E20ADS_V5": 32, + "STANDARD_E20AS_V4": 32, + "STANDARD_E20AS_V5": 32, + "STANDARD_E20A_V4": 32, + "STANDARD_E20DS_V4": 32, + "STANDARD_E20DS_V5": 32, + "STANDARD_E20D_V4": 32, + "STANDARD_E20D_V5": 32, + "STANDARD_E20PDS_V5": 32, + "STANDARD_E20PS_V5": 32, + "STANDARD_E20S_V3": 32, + "STANDARD_E20S_V4": 32, + "STANDARD_E20S_V5": 32, + "STANDARD_E20_V3": 32, + "STANDARD_E20_V4": 32, + "STANDARD_E20_V5": 32, + "STANDARD_E2ADS_V5": 4, + "STANDARD_E2AS_V4": 4, + "STANDARD_E2AS_V5": 4, + "STANDARD_E2A_V4": 4, + "STANDARD_E2BDS_V5": 4, + "STANDARD_E2BS_V5": 4, + "STANDARD_E2DS_V4": 4, + "STANDARD_E2DS_V5": 4, + "STANDARD_E2D_V4": 4, + "STANDARD_E2D_V5": 4, + "STANDARD_E2PDS_V5": 4, + "STANDARD_E2PS_V5": 4, + "STANDARD_E2S_V3": 4, + "STANDARD_E2S_V4": 4, + "STANDARD_E2S_V5": 4, + "STANDARD_E2_V3": 4, + "STANDARD_E2_V4": 4, + "STANDARD_E2_V5": 4, + "STANDARD_E32-16ADS_V5": 32, + "STANDARD_E32-16AS_V4": 32, + "STANDARD_E32-16AS_V5": 32, + "STANDARD_E32-16DS_V4": 32, + "STANDARD_E32-16DS_V5": 32, + "STANDARD_E32-16S_V3": 32, + "STANDARD_E32-16S_V4": 32, + "STANDARD_E32-16S_V5": 32, + "STANDARD_E32-8ADS_V5": 32, + "STANDARD_E32-8AS_V4": 32, + "STANDARD_E32-8AS_V5": 32, + "STANDARD_E32-8DS_V4": 32, + "STANDARD_E32-8DS_V5": 32, + "STANDARD_E32-8S_V3": 32, + "STANDARD_E32-8S_V4": 32, + "STANDARD_E32-8S_V5": 32, + "STANDARD_E32ADS_V5": 32, + "STANDARD_E32AS_V4": 32, + "STANDARD_E32AS_V5": 32, + "STANDARD_E32A_V4": 32, + "STANDARD_E32BDS_V5": 32, + "STANDARD_E32BS_V5": 32, + "STANDARD_E32DS_V4": 32, + "STANDARD_E32DS_V5": 32, + "STANDARD_E32D_V4": 32, + "STANDARD_E32D_V5": 32, + "STANDARD_E32PDS_V5": 32, + "STANDARD_E32PS_V5": 32, + "STANDARD_E32S_V3": 32, + "STANDARD_E32S_V4": 32, + "STANDARD_E32S_V5": 32, + "STANDARD_E32_V3": 32, + "STANDARD_E32_V4": 32, + "STANDARD_E32_V5": 32, + "STANDARD_E4-2ADS_V5": 8, + "STANDARD_E4-2AS_V4": 8, + "STANDARD_E4-2AS_V5": 8, + "STANDARD_E4-2DS_V4": 8, + "STANDARD_E4-2DS_V5": 8, + "STANDARD_E4-2S_V3": 8, + "STANDARD_E4-2S_V4": 8, + "STANDARD_E4-2S_V5": 8, + "STANDARD_E48ADS_V5": 32, + "STANDARD_E48AS_V4": 32, + "STANDARD_E48AS_V5": 32, + "STANDARD_E48A_V4": 32, + "STANDARD_E48BDS_V5": 32, + "STANDARD_E48BS_V5": 32, + "STANDARD_E48DS_V4": 32, + "STANDARD_E48DS_V5": 32, + "STANDARD_E48D_V4": 32, + "STANDARD_E48D_V5": 32, + "STANDARD_E48S_V3": 32, + "STANDARD_E48S_V4": 32, + "STANDARD_E48S_V5": 32, + "STANDARD_E48_V3": 32, + "STANDARD_E48_V4": 32, + "STANDARD_E48_V5": 32, + "STANDARD_E4ADS_V5": 8, + "STANDARD_E4AS_V4": 8, + "STANDARD_E4AS_V5": 8, + "STANDARD_E4A_V4": 8, + "STANDARD_E4BDS_V5": 8, + "STANDARD_E4BS_V5": 8, + "STANDARD_E4DS_V4": 8, + "STANDARD_E4DS_V5": 8, + "STANDARD_E4D_V4": 8, + "STANDARD_E4D_V5": 8, + "STANDARD_E4PDS_V5": 8, + "STANDARD_E4PS_V5": 8, + "STANDARD_E4S_V3": 8, + "STANDARD_E4S_V4": 8, + "STANDARD_E4S_V5": 8, + "STANDARD_E4_V3": 8, + "STANDARD_E4_V4": 8, + "STANDARD_E4_V5": 8, + "STANDARD_E64-16ADS_V5": 32, + "STANDARD_E64-16AS_V4": 32, + "STANDARD_E64-16AS_V5": 32, + "STANDARD_E64-16DS_V4": 32, + "STANDARD_E64-16DS_V5": 32, + "STANDARD_E64-16S_V3": 32, + "STANDARD_E64-16S_V4": 32, + "STANDARD_E64-16S_V5": 32, + "STANDARD_E64-32ADS_V5": 32, + "STANDARD_E64-32AS_V4": 32, + "STANDARD_E64-32AS_V5": 32, + "STANDARD_E64-32DS_V4": 32, + "STANDARD_E64-32DS_V5": 32, + "STANDARD_E64-32S_V3": 32, + "STANDARD_E64-32S_V4": 32, + "STANDARD_E64-32S_V5": 32, + "STANDARD_E64ADS_V5": 32, + "STANDARD_E64AS_V4": 32, + "STANDARD_E64AS_V5": 32, + "STANDARD_E64A_V4": 32, + "STANDARD_E64BDS_V5": 32, + "STANDARD_E64BS_V5": 32, + "STANDARD_E64DS_V4": 32, + "STANDARD_E64DS_V5": 32, + "STANDARD_E64D_V4": 32, + "STANDARD_E64D_V5": 32, + "STANDARD_E64IS_V3": 32, + "STANDARD_E64I_V3": 32, + "STANDARD_E64S_V3": 32, + "STANDARD_E64S_V4": 32, + "STANDARD_E64S_V5": 32, + "STANDARD_E64_V3": 32, + "STANDARD_E64_V4": 32, + "STANDARD_E64_V5": 32, + "STANDARD_E80IDS_V4": 64, + "STANDARD_E80IS_V4": 64, + "STANDARD_E8-2ADS_V5": 16, + "STANDARD_E8-2AS_V4": 16, + "STANDARD_E8-2AS_V5": 16, + "STANDARD_E8-2DS_V4": 16, + "STANDARD_E8-2DS_V5": 16, + "STANDARD_E8-2S_V3": 16, + "STANDARD_E8-2S_V4": 16, + "STANDARD_E8-2S_V5": 16, + "STANDARD_E8-4ADS_V5": 16, + "STANDARD_E8-4AS_V4": 16, + "STANDARD_E8-4AS_V5": 16, + "STANDARD_E8-4DS_V4": 16, + "STANDARD_E8-4DS_V5": 32, + "STANDARD_E8-4S_V3": 16, + "STANDARD_E8-4S_V4": 16, + "STANDARD_E8-4S_V5": 32, + "STANDARD_E8ADS_V5": 16, + "STANDARD_E8AS_V4": 16, + "STANDARD_E8AS_V5": 16, + "STANDARD_E8A_V4": 16, + "STANDARD_E8BDS_V5": 16, + "STANDARD_E8BS_V5": 16, + "STANDARD_E8DS_V4": 16, + "STANDARD_E8DS_V5": 16, + "STANDARD_E8D_V4": 16, + "STANDARD_E8D_V5": 16, + "STANDARD_E8PDS_V5": 16, + "STANDARD_E8PS_V5": 16, + "STANDARD_E8S_V3": 16, + "STANDARD_E8S_V4": 16, + "STANDARD_E8S_V5": 16, + "STANDARD_E8_V3": 16, + "STANDARD_E8_V4": 16, + "STANDARD_E8_V5": 16, + "STANDARD_E96-24ADS_V5": 32, + "STANDARD_E96-24AS_V4": 32, + "STANDARD_E96-24AS_V5": 32, + "STANDARD_E96-24DS_V5": 32, + "STANDARD_E96-24S_V5": 32, + "STANDARD_E96-48ADS_V5": 32, + "STANDARD_E96-48AS_V4": 32, + "STANDARD_E96-48AS_V5": 32, + "STANDARD_E96-48DS_V5": 32, + "STANDARD_E96-48S_V5": 32, + "STANDARD_E96ADS_V5": 32, + "STANDARD_E96AS_V4": 32, + "STANDARD_E96AS_V5": 32, + "STANDARD_E96A_V4": 32, + "STANDARD_E96DS_V5": 32, + "STANDARD_E96D_V5": 32, + "STANDARD_E96IAS_V4": 32, + "STANDARD_E96S_V5": 32, + "STANDARD_E96_V5": 32, + "STANDARD_EC16ADS_V5": 32, + "STANDARD_EC16AS_V5": 32, + "STANDARD_EC20ADS_V5": 32, + "STANDARD_EC20AS_V5": 32, + "STANDARD_EC2ADS_V5": 4, + "STANDARD_EC2AS_V5": 4, + "STANDARD_EC32ADS_V5": 32, + "STANDARD_EC32AS_V5": 32, + "STANDARD_EC48ADS_V5": 32, + "STANDARD_EC48AS_V5": 32, + "STANDARD_EC4ADS_V5": 8, + "STANDARD_EC4AS_V5": 8, + "STANDARD_EC64ADS_V5": 32, + "STANDARD_EC64AS_V5": 32, + "STANDARD_EC8ADS_V5": 16, + "STANDARD_EC8AS_V5": 16, + "STANDARD_EC96ADS_V5": 32, + "STANDARD_EC96AS_V5": 32, + "STANDARD_EC96IADS_V5": 32, + "STANDARD_EC96IAS_V5": 32, + "STANDARD_F1": 4, + "STANDARD_F16": 64, + "STANDARD_F16S": 64, + "STANDARD_F16S_V2": 32, + "STANDARD_F1S": 4, + "STANDARD_F2": 8, + "STANDARD_F2S": 8, + "STANDARD_F2S_V2": 4, + "STANDARD_F32S_V2": 32, + "STANDARD_F4": 16, + "STANDARD_F48S_V2": 32, + "STANDARD_F4S": 16, + "STANDARD_F4S_V2": 8, + "STANDARD_F64S_V2": 32, + "STANDARD_F72S_V2": 32, + "STANDARD_F8": 32, + "STANDARD_F8S": 32, + "STANDARD_F8S_V2": 16, + "STANDARD_FX12MDS": 24, + "STANDARD_FX24MDS": 32, + "STANDARD_FX36MDS": 32, + "STANDARD_FX48MDS": 32, + "STANDARD_FX4MDS": 8, + "STANDARD_G1": 8, + "STANDARD_G2": 16, + "STANDARD_G3": 32, + "STANDARD_G4": 64, + "STANDARD_G5": 64, + "STANDARD_GS1": 8, + "STANDARD_GS2": 16, + "STANDARD_GS3": 32, + "STANDARD_GS4-4": 64, + "STANDARD_GS4": 64, + "STANDARD_GS4-8": 64, + "STANDARD_GS5-16": 64, + "STANDARD_GS5": 64, + "STANDARD_GS5-8": 64, + "STANDARD_H16": 64, + "STANDARD_H16M": 64, + "STANDARD_H16M_PROMO": 64, + "STANDARD_H16MR": 64, + "STANDARD_H16MR_PROMO": 64, + "STANDARD_H16_PROMO": 64, + "STANDARD_H16R": 64, + "STANDARD_H16R_PROMO": 64, + "STANDARD_H8": 32, + "STANDARD_H8M": 32, + "STANDARD_H8M_PROMO": 32, + "STANDARD_H8_PROMO": 32, + "STANDARD_HB120-16RS_V2": 32, + "STANDARD_HB120-16RS_V3": 32, + "STANDARD_HB120-32RS_V2": 32, + "STANDARD_HB120-32RS_V3": 32, + "STANDARD_HB120-64RS_V2": 32, + "STANDARD_HB120-64RS_V3": 32, + "STANDARD_HB120-96RS_V2": 32, + "STANDARD_HB120-96RS_V3": 32, + "STANDARD_HB120RS_V2": 32, + "STANDARD_HB120RS_V3": 32, + "STANDARD_HB60-15RS": 4, + "STANDARD_HB60-30RS": 4, + "STANDARD_HB60-45RS": 4, + "STANDARD_HB60RS": 4, + "STANDARD_HC44-16RS": 4, + "STANDARD_HC44-32RS": 4, + "STANDARD_HC44RS": 4, + "STANDARD_L16AS_V3": 32, + "STANDARD_L16S": 64, + "STANDARD_L16S_V2": 32, + "STANDARD_L16S_V3": 32, + "STANDARD_L32AS_V3": 32, + "STANDARD_L32S": 64, + "STANDARD_L32S_V2": 32, + "STANDARD_L32S_V3": 32, + "STANDARD_L48AS_V3": 32, + "STANDARD_L48S_V2": 32, + "STANDARD_L48S_V3": 32, + "STANDARD_L4S": 16, + "STANDARD_L64AS_V3": 32, + "STANDARD_L64S_V2": 32, + "STANDARD_L64S_V3": 32, + "STANDARD_L80AS_V3": 32, + "STANDARD_L80S_V2": 32, + "STANDARD_L80S_V3": 32, + "STANDARD_L8AS_V3": 16, + "STANDARD_L8S": 32, + "STANDARD_L8S_V2": 16, + "STANDARD_L8S_V3": 16, + "STANDARD_M128-32MS": 64, + "STANDARD_M128": 64, + "STANDARD_M128-64MS": 64, + "STANDARD_M128DMS_V2": 64, + "STANDARD_M128DS_V2": 64, + "STANDARD_M128M": 64, + "STANDARD_M128MS": 64, + "STANDARD_M128MS_V2": 64, + "STANDARD_M128S": 64, + "STANDARD_M128S_V2": 64, + "STANDARD_M16-4MS": 16, + "STANDARD_M16-8MS": 16, + "STANDARD_M16MS": 16, + "STANDARD_M192IDMS_V2": 64, + "STANDARD_M192IDS_V2": 64, + "STANDARD_M192IMS_V2": 64, + "STANDARD_M192IS_V2": 64, + "STANDARD_M208MS_V2": 64, + "STANDARD_M208S_V2": 64, + "STANDARD_M32-16MS": 32, + "STANDARD_M32-8MS": 32, + "STANDARD_M32DMS_V2": 32, + "STANDARD_M32LS": 32, + "STANDARD_M32MS": 32, + "STANDARD_M32MS_V2": 32, + "STANDARD_M32TS": 32, + "STANDARD_M416-208MS_V2": 64, + "STANDARD_M416-208S_V2": 64, + "STANDARD_M416MS_V2": 64, + "STANDARD_M416S_V2": 64, + "STANDARD_M64-16MS": 64, + "STANDARD_M64-32MS": 64, + "STANDARD_M64": 64, + "STANDARD_M64DMS_V2": 64, + "STANDARD_M64DS_V2": 64, + "STANDARD_M64LS": 64, + "STANDARD_M64M": 64, + "STANDARD_M64MS": 64, + "STANDARD_M64MS_V2": 64, + "STANDARD_M64S": 64, + "STANDARD_M64S_V2": 64, + "STANDARD_M8-2MS": 8, + "STANDARD_M8-4MS": 8, + "STANDARD_M8MS": 8, + "STANDARD_NC12": 48, + "STANDARD_NC12_PROMO": 48, + "STANDARD_NC12S_V2": 24, + "STANDARD_NC12S_V3": 24, + "STANDARD_NC16ADS_A10_V4": 16, + "STANDARD_NC16AS_T4_V3": 32, + "STANDARD_NC24": 64, + "STANDARD_NC24ADS_A100_V4": 8, + "STANDARD_NC24_PROMO": 64, + "STANDARD_NC24R": 64, + "STANDARD_NC24R_PROMO": 64, + "STANDARD_NC24RS_V2": 32, + "STANDARD_NC24RS_V3": 32, + "STANDARD_NC24S_V2": 32, + "STANDARD_NC24S_V3": 32, + "STANDARD_NC32ADS_A10_V4": 32, + "STANDARD_NC48ADS_A100_V4": 16, + "STANDARD_NC4AS_T4_V3": 8, + "STANDARD_NC6": 24, + "STANDARD_NC64AS_T4_V3": 32, + "STANDARD_NC6_PROMO": 24, + "STANDARD_NC6S_V2": 12, + "STANDARD_NC6S_V3": 12, + "STANDARD_NC8ADS_A10_V4": 8, + "STANDARD_NC8AS_T4_V3": 16, + "STANDARD_NC96ADS_A100_V4": 32, + "STANDARD_ND12S": 24, + "STANDARD_ND24RS": 32, + "STANDARD_ND24S": 32, + "STANDARD_ND40RS_V2": 8, + "STANDARD_ND40S_V3": 32, + "STANDARD_ND6S": 12, + "STANDARD_ND96AMSR_A100_V4": 16, + "STANDARD_ND96ASR_V4": 16, + "STANDARD_NP10S": 8, + "STANDARD_NP20S": 16, + "STANDARD_NP40S": 32, + "STANDARD_NV12": 48, + "STANDARD_NV12ADS_A10_V5": 8, + "STANDARD_NV12_PROMO": 48, + "STANDARD_NV12S_V2": 24, + "STANDARD_NV12S_V3": 12, + "STANDARD_NV16AS_V4": 32, + "STANDARD_NV18ADS_A10_V5": 16, + "STANDARD_NV24": 64, + "STANDARD_NV24_PROMO": 64, + "STANDARD_NV24S_V2": 32, + "STANDARD_NV24S_V3": 24, + "STANDARD_NV32AS_V4": 32, + "STANDARD_NV36ADMS_A10_V5": 32, + "STANDARD_NV36ADS_A10_V5": 32, + "STANDARD_NV48S_V3": 32, + "STANDARD_NV4AS_V4": 8, + "STANDARD_NV6": 24, + "STANDARD_NV6ADS_A10_V5": 4, + "STANDARD_NV6_PROMO": 24, + "STANDARD_NV6S_V2": 12, + "STANDARD_NV72ADS_A10_V5": 32, + "STANDARD_NV8AS_V4": 16, + "STANDARD_PB6S": 12, } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/cephfs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/cephfs.go index 6aaec9963f7..2fc27d6248b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/cephfs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cephfs/cephfs.go @@ -85,6 +85,10 @@ func (plugin *cephfsPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *cephfsPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *cephfsPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, @@ -340,7 +344,9 @@ func (cephfsVolume *cephfs) execFuseMount(mountpoint string) error { klog.V(4).Info("cephfs mount begin using fuse.") keyringPath := cephfsVolume.GetKeyringPath() - os.MkdirAll(keyringPath, 0750) + if err := os.MkdirAll(keyringPath, 0750); err != nil { + return err + } payload := make(map[string]util.FileProjection, 1) var fileProjection util.FileProjection diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go index 88f89489aec..ef422e24c5c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder.go @@ -123,6 +123,10 @@ func (plugin *cinderPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *cinderPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + var _ volume.VolumePluginWithAttachLimits = &cinderPlugin{} func (plugin *cinderPlugin) GetVolumeLimits() (map[string]int64, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go index edb1891fdf9..618115770e3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/cinder/cinder_block.go @@ -155,7 +155,8 @@ var _ volume.BlockVolumeMapper = &cinderVolumeMapper{} // GetGlobalMapPath returns global map path and error // path: plugins/kubernetes.io/{PluginName}/volumeDevices/volumeID -// plugins/kubernetes.io/cinder/volumeDevices/vol-XXXXXX +// +// plugins/kubernetes.io/cinder/volumeDevices/vol-XXXXXX func (cd *cinderVolume) GetGlobalMapPath(spec *volume.Spec) (string, error) { pdName, _, _, err := getVolumeInfo(spec) if err != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go index e72f5bccb70..8aca9bc2314 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/configmap/configmap.go @@ -90,6 +90,10 @@ func (plugin *configMapPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *configMapPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *configMapPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { return &configMapVolumeMounter{ configMapVolume: &configMapVolume{ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go index 11de3c558bc..57fbcb7e9c5 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_attacher.go @@ -26,9 +26,6 @@ import ( "strings" "time" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/klog/v2" - v1 "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -36,9 +33,12 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/watch" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/kubernetes" + "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" + "k8s.io/kubernetes/pkg/volume/util" volumetypes "k8s.io/kubernetes/pkg/volume/util/types" "k8s.io/utils/clock" ) @@ -331,8 +331,9 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo klog.V(4).Info(log("created target path successfully [%s]", deviceMountPath)) dataDir := filepath.Dir(deviceMountPath) data := map[string]string{ - volDataKey.volHandle: csiSource.VolumeHandle, - volDataKey.driverName: csiSource.Driver, + volDataKey.volHandle: csiSource.VolumeHandle, + volDataKey.driverName: csiSource.Driver, + volDataKey.seLinuxMountContext: deviceMounterArgs.SELinuxLabel, } err = saveVolumeData(dataDir, volDataFileName, data) @@ -371,6 +372,16 @@ func (c *csiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMo mountOptions = spec.PersistentVolume.Spec.MountOptions } + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + support, err := c.plugin.SupportsSELinuxContextMount(spec) + if err != nil { + return errors.New(log("failed to query for SELinuxMount support: %s", err)) + } + if support { + mountOptions = util.AddSELinuxMountOption(mountOptions, deviceMounterArgs.SELinuxLabel) + } + } + var nodeStageFSGroupArg *int64 if utilfeature.DefaultFeatureGate.Enabled(features.DelegateFSGroupToCSIDriver) { driverSupportsCSIVolumeMountGroup, err := csi.NodeSupportsVolumeMountGroup(ctx) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_client.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_client.go index fc5a6a42c50..bbbe762def2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_client.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_client.go @@ -28,6 +28,7 @@ import ( csipbv1 "github.com/container-storage-interface/spec/lib/go/csi" "google.golang.org/grpc" "google.golang.org/grpc/codes" + "google.golang.org/grpc/credentials/insecure" "google.golang.org/grpc/status" api "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" @@ -534,7 +535,7 @@ func newGrpcConn(addr csiAddr, metricsManager *MetricsManager) (*grpc.ClientConn return grpc.Dial( string(addr), - grpc.WithInsecure(), + grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithContextDialer(func(ctx context.Context, target string) (net.Conn, error) { return (&net.Dialer{}).DialContext(ctx, network, target) }), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go index 5621318a2e4..6c67b6ac86b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_mounter.go @@ -24,8 +24,6 @@ import ( "os" "path/filepath" - "k8s.io/klog/v2" - authenticationv1 "k8s.io/api/authentication/v1" api "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" @@ -33,6 +31,7 @@ import ( "k8s.io/apimachinery/pkg/types" utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/kubernetes" + "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util" @@ -41,7 +40,7 @@ import ( utilstrings "k8s.io/utils/strings" ) -//TODO (vladimirvivien) move this in a central loc later +// TODO (vladimirvivien) move this in a central loc later var ( volDataKey = struct { specVolID, @@ -49,7 +48,8 @@ var ( driverName, nodeName, attachmentID, - volumeLifecycleMode string + volumeLifecycleMode, + seLinuxMountContext string }{ "specVolID", "volumeHandle", @@ -57,6 +57,7 @@ var ( "nodeName", "attachmentID", "volumeLifecycleMode", + "seLinuxMountContext", } ) @@ -70,7 +71,7 @@ type csiMountMgr struct { volumeID string specVolumeID string readOnly bool - supportsSELinux bool + needSELinuxRelabel bool spec *volume.Spec pod *api.Pod podUID types.UID @@ -133,9 +134,6 @@ func (c *csiMountMgr) SetUpAt(dir string, mounterArgs volume.MounterArgs) error switch { case volSrc != nil: - if !utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { - return fmt.Errorf("CSIInlineVolume feature required") - } if c.volumeLifecycleMode != storage.VolumeLifecycleEphemeral { return fmt.Errorf("unexpected volume mode: %s", c.volumeLifecycleMode) } @@ -245,6 +243,18 @@ func (c *csiMountMgr) SetUpAt(dir string, mounterArgs volume.MounterArgs) error } } + var selinuxLabelMount bool + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + support, err := c.plugin.SupportsSELinuxContextMount(c.spec) + if err != nil { + return errors.New(log("failed to query for SELinuxMount support: %s", err)) + } + if support { + mountOptions = util.AddSELinuxMountOption(mountOptions, mounterArgs.SELinuxLabel) + selinuxLabelMount = true + } + } + err = csi.NodePublishVolume( ctx, volumeHandle, @@ -270,10 +280,12 @@ func (c *csiMountMgr) SetUpAt(dir string, mounterArgs volume.MounterArgs) error return err } - c.supportsSELinux, err = c.kubeVolHost.GetHostUtil().GetSELinuxSupport(dir) - if err != nil { - // The volume is mounted. Return UncertainProgressError, so kubelet will unmount it when user deletes the pod. - return volumetypes.NewUncertainProgressError(fmt.Sprintf("error checking for SELinux support: %s", err)) + if !selinuxLabelMount { + c.needSELinuxRelabel, err = c.kubeVolHost.GetHostUtil().GetSELinuxSupport(dir) + if err != nil { + // The volume is mounted. Return UncertainProgressError, so kubelet will unmount it when user deletes the pod. + return volumetypes.NewUncertainProgressError(fmt.Sprintf("error checking for SELinux support: %s", err)) + } } if !driverSupportsCSIVolumeMountGroup && c.supportsFSGroup(fsType, mounterArgs.FsGroup, c.fsGroupPolicy) { @@ -350,7 +362,7 @@ func (c *csiMountMgr) GetAttributes() volume.Attributes { return volume.Attributes{ ReadOnly: c.readOnly, Managed: !c.readOnly, - SELinuxRelabel: c.supportsSELinux, + SELinuxRelabel: c.needSELinuxRelabel, } } @@ -415,10 +427,6 @@ func (c *csiMountMgr) supportsFSGroup(fsType string, fsGroup *int64, driverPolic } return true } else if c.spec.Volume != nil && c.spec.Volume.CSI != nil { - if !utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { - klog.V(4).Info(log("mounter.SetupAt WARNING: skipping fsGroup, CSIInlineVolume feature required")) - return false - } // Inline CSI volumes are always mounted with RWO AccessMode by SetUpAt return true } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go index 592aaaeaaf6..976292de20e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_plugin.go @@ -334,12 +334,8 @@ func (p *csiPlugin) CanSupport(spec *volume.Spec) bool { if spec == nil { return false } - if utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { - return (spec.PersistentVolume != nil && spec.PersistentVolume.Spec.CSI != nil) || - (spec.Volume != nil && spec.Volume.CSI != nil) - } - - return spec.PersistentVolume != nil && spec.PersistentVolume.Spec.CSI != nil + return (spec.PersistentVolume != nil && spec.PersistentVolume.Spec.CSI != nil) || + (spec.Volume != nil && spec.Volume.CSI != nil) } func (p *csiPlugin) RequiresRemount(spec *volume.Spec) bool { @@ -351,7 +347,7 @@ func (p *csiPlugin) RequiresRemount(spec *volume.Spec) bool { klog.V(5).Info(log("Failed to mark %q as republish required, err: %v", spec.Name(), err)) return false } - csiDriver, err := p.csiDriverLister.Get(driverName) + csiDriver, err := p.getCSIDriver(driverName) if err != nil { klog.V(5).Info(log("Failed to mark %q as republish required, err: %v", spec.Name(), err)) return false @@ -376,7 +372,7 @@ func (p *csiPlugin) NewMounter( ) switch { - case volSrc != nil && utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume): + case volSrc != nil: volumeHandle = makeVolumeHandle(string(pod.UID), spec.Name()) driverName = volSrc.Driver if volSrc.ReadOnly != nil { @@ -520,13 +516,10 @@ func (p *csiPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.S klog.V(4).Info(log("plugin.ConstructVolumeSpec extracted [%#v]", volData)) var spec *volume.Spec - inlineEnabled := utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) - - // If inlineEnabled is true and mode is VolumeLifecycleEphemeral, - // use constructVolSourceSpec to construct volume source spec. - // If inlineEnabled is false or mode is VolumeLifecyclePersistent, + // If mode is VolumeLifecycleEphemeral, use constructVolSourceSpec + // to construct volume source spec. If mode is VolumeLifecyclePersistent, // use constructPVSourceSpec to construct volume construct pv source spec. - if inlineEnabled && storage.VolumeLifecycleMode(volData[volDataKey.volumeLifecycleMode]) == storage.VolumeLifecycleEphemeral { + if storage.VolumeLifecycleMode(volData[volDataKey.volumeLifecycleMode]) == storage.VolumeLifecycleEphemeral { spec = p.constructVolSourceSpec(volData[volDataKey.specVolID], volData[volDataKey.driverName]) return spec, nil } @@ -548,7 +541,7 @@ func (p *csiPlugin) constructVolSourceSpec(volSpecName, driverName string) *volu return volume.NewSpecFromVolume(vol) } -//constructPVSourceSpec constructs volume.Spec with CSIPersistentVolumeSource +// constructPVSourceSpec constructs volume.Spec with CSIPersistentVolumeSource func (p *csiPlugin) constructPVSourceSpec(volSpecName, driverName, volumeHandle string) *volume.Spec { fsMode := api.PersistentVolumeFilesystem pv := &api.PersistentVolume{ @@ -581,6 +574,24 @@ func (p *csiPlugin) SupportsBulkVolumeVerification() bool { return false } +func (p *csiPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + driver, err := GetCSIDriverName(spec) + if err != nil { + return false, err + } + csiDriver, err := p.getCSIDriver(driver) + if err != nil { + return false, err + } + if csiDriver.Spec.SELinuxMount != nil { + return *csiDriver.Spec.SELinuxMount, nil + } + return false, nil + } + return false, nil +} + // volume.AttachableVolumePlugin methods var _ volume.AttachableVolumePlugin = &csiPlugin{} @@ -599,17 +610,14 @@ func (p *csiPlugin) NewDetacher() (volume.Detacher, error) { } func (p *csiPlugin) CanAttach(spec *volume.Spec) (bool, error) { - inlineEnabled := utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) - if inlineEnabled { - volumeLifecycleMode, err := p.getVolumeLifecycleMode(spec) - if err != nil { - return false, err - } + volumeLifecycleMode, err := p.getVolumeLifecycleMode(spec) + if err != nil { + return false, err + } - if volumeLifecycleMode == storage.VolumeLifecycleEphemeral { - klog.V(5).Info(log("plugin.CanAttach = false, ephemeral mode detected for spec %v", spec.Name())) - return false, nil - } + if volumeLifecycleMode == storage.VolumeLifecycleEphemeral { + klog.V(5).Info(log("plugin.CanAttach = false, ephemeral mode detected for spec %v", spec.Name())) + return false, nil } pvSrc, err := getCSISourceFromSpec(spec) @@ -629,12 +637,6 @@ func (p *csiPlugin) CanAttach(spec *volume.Spec) (bool, error) { // CanDeviceMount returns true if the spec supports device mount func (p *csiPlugin) CanDeviceMount(spec *volume.Spec) (bool, error) { - inlineEnabled := utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) - if !inlineEnabled { - // No need to check anything, we assume it is a persistent volume. - return true, nil - } - volumeLifecycleMode, err := p.getVolumeLifecycleMode(spec) if err != nil { return false, err @@ -791,17 +793,7 @@ func (p *csiPlugin) ConstructBlockVolumeSpec(podUID types.UID, specVolName, mapP // skipAttach looks up CSIDriver object associated with driver name // to determine if driver requires attachment volume operation func (p *csiPlugin) skipAttach(driver string) (bool, error) { - kletHost, ok := p.host.(volume.KubeletVolumeHost) - if ok { - if err := kletHost.WaitForCacheSync(); err != nil { - return false, err - } - } - - if p.csiDriverLister == nil { - return false, errors.New("CSIDriver lister does not exist") - } - csiDriver, err := p.csiDriverLister.Get(driver) + csiDriver, err := p.getCSIDriver(driver) if err != nil { if apierrors.IsNotFound(err) { // Don't skip attach if CSIDriver does not exist @@ -815,31 +807,31 @@ func (p *csiPlugin) skipAttach(driver string) (bool, error) { return false, nil } -// supportsVolumeMode checks whether the CSI driver supports a volume in the given mode. -// An error indicates that it isn't supported and explains why. -func (p *csiPlugin) supportsVolumeLifecycleMode(driver string, volumeMode storage.VolumeLifecycleMode) error { - if !utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { - // Feature disabled, therefore only "persistent" volumes are supported. - if volumeMode != storage.VolumeLifecyclePersistent { - return fmt.Errorf("CSIInlineVolume feature not enabled, %q volumes not supported", volumeMode) +func (p *csiPlugin) getCSIDriver(driver string) (*storage.CSIDriver, error) { + kletHost, ok := p.host.(volume.KubeletVolumeHost) + if ok { + if err := kletHost.WaitForCacheSync(); err != nil { + return nil, err } - return nil } + if p.csiDriverLister == nil { + return nil, errors.New("CSIDriver lister does not exist") + } + csiDriver, err := p.csiDriverLister.Get(driver) + return csiDriver, err +} + +// supportsVolumeMode checks whether the CSI driver supports a volume in the given mode. +// An error indicates that it isn't supported and explains why. +func (p *csiPlugin) supportsVolumeLifecycleMode(driver string, volumeMode storage.VolumeLifecycleMode) error { // Retrieve CSIDriver. It's not an error if that isn't // possible (we don't have the lister if CSIDriverRegistry is // disabled) or the driver isn't found (CSIDriver is // optional), but then only persistent volumes are supported. var csiDriver *storage.CSIDriver if p.csiDriverLister != nil { - kletHost, ok := p.host.(volume.KubeletVolumeHost) - if ok { - if err := kletHost.WaitForCacheSync(); err != nil { - return err - } - } - - c, err := p.csiDriverLister.Get(driver) + c, err := p.getCSIDriver(driver) if err != nil && !apierrors.IsNotFound(err) { // Some internal error. return err @@ -885,7 +877,7 @@ func (p *csiPlugin) getVolumeLifecycleMode(spec *volume.Spec) (storage.VolumeLif return "", err } - if volSrc != nil && utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { + if volSrc != nil { return storage.VolumeLifecycleEphemeral, nil } return storage.VolumeLifecyclePersistent, nil @@ -900,14 +892,7 @@ func (p *csiPlugin) getFSGroupPolicy(driver string) (storage.FSGroupPolicy, erro // optional) var csiDriver *storage.CSIDriver if p.csiDriverLister != nil { - kletHost, ok := p.host.(volume.KubeletVolumeHost) - if ok { - if err := kletHost.WaitForCacheSync(); err != nil { - return storage.ReadWriteOnceWithFSTypeFSGroupPolicy, err - } - } - - c, err := p.csiDriverLister.Get(driver) + c, err := p.getCSIDriver(driver) if err != nil && !apierrors.IsNotFound(err) { // Some internal error. return storage.ReadWriteOnceWithFSTypeFSGroupPolicy, err @@ -965,16 +950,7 @@ func (p *csiPlugin) newAttacherDetacher() (*csiAttacher, error) { // podInfoEnabled check CSIDriver enabled pod info flag func (p *csiPlugin) podInfoEnabled(driverName string) (bool, error) { - kletHost, ok := p.host.(volume.KubeletVolumeHost) - if ok { - kletHost.WaitForCacheSync() - } - - if p.csiDriverLister == nil { - return false, fmt.Errorf("CSIDriverLister not found") - } - - csiDriver, err := p.csiDriverLister.Get(driverName) + csiDriver, err := p.getCSIDriver(driverName) if err != nil { if apierrors.IsNotFound(err) { klog.V(4).Infof(log("CSIDriver %q not found, not adding pod information", driverName)) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_util.go index ad9098b4ef8..ee2bdc193b3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/csi/csi_util.go @@ -29,10 +29,8 @@ import ( api "k8s.io/api/core/v1" storage "k8s.io/api/storage/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/client-go/kubernetes" "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" utilstrings "k8s.io/utils/strings" ) @@ -151,7 +149,7 @@ func getSourceFromSpec(spec *volume.Spec) (*api.CSIVolumeSource, *api.CSIPersist if spec.Volume != nil && spec.PersistentVolume != nil { return nil, nil, fmt.Errorf("volume.Spec has both volume and persistent volume sources") } - if spec.Volume != nil && spec.Volume.CSI != nil && utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { + if spec.Volume != nil && spec.Volume.CSI != nil { return spec.Volume.CSI, nil, nil } if spec.PersistentVolume != nil && @@ -187,7 +185,7 @@ func GetCSIDriverName(spec *volume.Spec) (string, error) { } switch { - case volSrc != nil && utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume): + case volSrc != nil: return volSrc.Driver, nil case pvSrc != nil: return pvSrc.Driver, nil @@ -212,9 +210,7 @@ func getPodInfoAttrs(pod *api.Pod, volumeMode storage.VolumeLifecycleMode) map[s "csi.storage.k8s.io/pod.namespace": pod.Namespace, "csi.storage.k8s.io/pod.uid": string(pod.UID), "csi.storage.k8s.io/serviceAccount.name": pod.Spec.ServiceAccountName, - } - if utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { - attrs["csi.storage.k8s.io/ephemeral"] = strconv.FormatBool(volumeMode == storage.VolumeLifecycleEphemeral) + "csi.storage.k8s.io/ephemeral": strconv.FormatBool(volumeMode == storage.VolumeLifecycleEphemeral), } return attrs } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go index 08899bfb359..714254c5c79 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/downwardapi/downwardapi.go @@ -92,6 +92,10 @@ func (plugin *downwardAPIPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *downwardAPIPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *downwardAPIPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { v := &downwardAPIVolume{ volName: spec.Name(), diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/emptydir/empty_dir.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/emptydir/empty_dir.go index 19cd6aea282..6370902d0ea 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/emptydir/empty_dir.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/emptydir/empty_dir.go @@ -103,6 +103,10 @@ func (plugin *emptyDirPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *emptyDirPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *emptyDirPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { return plugin.newMounterInternal(spec, pod, plugin.host.GetMounter(plugin.GetPluginName()), &realMountDetector{plugin.host.GetMounter(plugin.GetPluginName())}, opts) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go index 622624829ee..8c8920d6dc2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/fc/fc.go @@ -99,6 +99,10 @@ func (plugin *fcPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *fcPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *fcPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, @@ -286,9 +290,11 @@ func (plugin *fcPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volu // - Searches a file whose name is {pod uuid} under volume plugin directory. // - If a file is found, then retreives volumePluginDependentPath from globalMapPathUUID. // - Once volumePluginDependentPath is obtained, store volume information to VolumeSource +// // examples: -// mapPath: pods/{podUid}/{DefaultKubeletVolumeDevicesDirName}/{escapeQualifiedPluginName}/{volumeName} -// globalMapPathUUID : plugins/kubernetes.io/{PluginName}/{DefaultKubeletVolumeDevicesDirName}/{volumePluginDependentPath}/{pod uuid} +// +// mapPath: pods/{podUid}/{DefaultKubeletVolumeDevicesDirName}/{escapeQualifiedPluginName}/{volumeName} +// globalMapPathUUID : plugins/kubernetes.io/{PluginName}/{DefaultKubeletVolumeDevicesDirName}/{volumePluginDependentPath}/{pod uuid} func (plugin *fcPlugin) ConstructBlockVolumeSpec(podUID types.UID, volumeName, mapPath string) (*volume.Spec, error) { pluginDir := plugin.host.GetVolumeDevicePluginDir(fcPluginName) blkutil := volumepathhandler.NewBlockVolumePathHandler() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go index a13b3af9326..92e5c8d91db 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flexvolume/plugin.go @@ -287,6 +287,10 @@ func (plugin *flexVolumePlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *flexVolumePlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + // Returns true iff the given command is known to be unsupported. func (plugin *flexVolumePlugin) isUnsupported(command string) bool { plugin.Lock() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/OWNERS deleted file mode 100644 index 4e2f2d2a690..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/OWNERS +++ /dev/null @@ -1,11 +0,0 @@ -# See the OWNERS docs at https://go.k8s.io/owners - -approvers: - - saad-ali -reviewers: - - saad-ali - - jsafrane - - jingxu97 - - msau42 -emeritus_approvers: - - rootfs diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker.go deleted file mode 100644 index 85442526fa1..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker.go +++ /dev/null @@ -1,457 +0,0 @@ -/* -Copyright 2015 The Kubernetes 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 flocker - -import ( - "fmt" - "os" - "path/filepath" - "time" - - flockerapi "github.com/clusterhq/flocker-go" - "k8s.io/klog/v2" - "k8s.io/mount-utils" - utilstrings "k8s.io/utils/strings" - - v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - "k8s.io/kubernetes/pkg/util/env" - "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" -) - -// ProbeVolumePlugins is the primary entrypoint for volume plugins. -func ProbeVolumePlugins() []volume.VolumePlugin { - return []volume.VolumePlugin{&flockerPlugin{nil}} -} - -type flockerPlugin struct { - host volume.VolumeHost -} - -type flockerVolume struct { - volName string - podUID types.UID - // dataset metadata name deprecated - datasetName string - // dataset uuid - datasetUUID string - //pod *v1.Pod - flockerClient flockerapi.Clientable - manager volumeManager - plugin *flockerPlugin - mounter mount.Interface - volume.MetricsProvider -} - -var _ volume.VolumePlugin = &flockerPlugin{} -var _ volume.PersistentVolumePlugin = &flockerPlugin{} -var _ volume.DeletableVolumePlugin = &flockerPlugin{} -var _ volume.ProvisionableVolumePlugin = &flockerPlugin{} - -const ( - flockerPluginName = "kubernetes.io/flocker" - - defaultHost = "localhost" - defaultPort = 4523 - defaultCACertFile = "/etc/flocker/cluster.crt" - defaultClientKeyFile = "/etc/flocker/apiuser.key" - defaultClientCertFile = "/etc/flocker/apiuser.crt" - defaultMountPath = "/flocker" - - timeoutWaitingForVolume = 2 * time.Minute - tickerWaitingForVolume = 5 * time.Second -) - -func getPath(uid types.UID, volName string, host volume.VolumeHost) string { - return host.GetPodVolumeDir(uid, utilstrings.EscapeQualifiedName(flockerPluginName), volName) -} - -func makeGlobalFlockerPath(datasetUUID string) string { - return filepath.Join(defaultMountPath, datasetUUID) -} - -func (p *flockerPlugin) Init(host volume.VolumeHost) error { - p.host = host - return nil -} - -func (p *flockerPlugin) GetPluginName() string { - return flockerPluginName -} - -func (p *flockerPlugin) GetVolumeName(spec *volume.Spec) (string, error) { - volumeSource, _, err := getVolumeSource(spec) - if err != nil { - return "", err - } - - return volumeSource.DatasetName, nil -} - -func (p *flockerPlugin) CanSupport(spec *volume.Spec) bool { - return (spec.PersistentVolume != nil && spec.PersistentVolume.Spec.Flocker != nil) || - (spec.Volume != nil && spec.Volume.Flocker != nil) -} - -func (p *flockerPlugin) RequiresRemount(spec *volume.Spec) bool { - return false -} - -func (p *flockerPlugin) SupportsMountOption() bool { - return false -} - -func (p *flockerPlugin) SupportsBulkVolumeVerification() bool { - return false -} - -func (p *flockerPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { - return []v1.PersistentVolumeAccessMode{ - v1.ReadWriteOnce, - } -} - -func (p *flockerPlugin) getFlockerVolumeSource(spec *volume.Spec) (*v1.FlockerVolumeSource, bool) { - // AFAIK this will always be r/w, but perhaps for the future it will be needed - readOnly := false - - if spec.Volume != nil && spec.Volume.Flocker != nil { - return spec.Volume.Flocker, readOnly - } - return spec.PersistentVolume.Spec.Flocker, readOnly -} - -func (p *flockerPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, _ volume.VolumeOptions) (volume.Mounter, error) { - // Inject real implementations here, test through the internal function. - return p.newMounterInternal(spec, pod.UID, &flockerUtil{}, p.host.GetMounter(p.GetPluginName())) -} - -func (p *flockerPlugin) newMounterInternal(spec *volume.Spec, podUID types.UID, manager volumeManager, mounter mount.Interface) (volume.Mounter, error) { - volumeSource, readOnly, err := getVolumeSource(spec) - if err != nil { - return nil, err - } - - datasetName := volumeSource.DatasetName - datasetUUID := volumeSource.DatasetUUID - - return &flockerVolumeMounter{ - flockerVolume: &flockerVolume{ - podUID: podUID, - volName: spec.Name(), - datasetName: datasetName, - datasetUUID: datasetUUID, - mounter: mounter, - manager: manager, - plugin: p, - MetricsProvider: volume.NewMetricsStatFS(getPath(podUID, spec.Name(), p.host)), - }, - readOnly: readOnly}, nil -} - -func (p *flockerPlugin) NewUnmounter(volName string, podUID types.UID) (volume.Unmounter, error) { - // Inject real implementations here, test through the internal function. - return p.newUnmounterInternal(volName, podUID, &flockerUtil{}, p.host.GetMounter(p.GetPluginName())) -} - -func (p *flockerPlugin) newUnmounterInternal(volName string, podUID types.UID, manager volumeManager, mounter mount.Interface) (volume.Unmounter, error) { - return &flockerVolumeUnmounter{&flockerVolume{ - podUID: podUID, - volName: volName, - manager: manager, - mounter: mounter, - plugin: p, - MetricsProvider: volume.NewMetricsStatFS(getPath(podUID, volName, p.host)), - }}, nil -} - -func (p *flockerPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.Spec, error) { - flockerVolume := &v1.Volume{ - Name: volumeName, - VolumeSource: v1.VolumeSource{ - Flocker: &v1.FlockerVolumeSource{ - DatasetName: volumeName, - }, - }, - } - return volume.NewSpecFromVolume(flockerVolume), nil -} - -func (b *flockerVolume) GetDatasetUUID() (datasetUUID string, err error) { - - // return UUID if set - if len(b.datasetUUID) > 0 { - return b.datasetUUID, nil - } - - if b.flockerClient == nil { - return "", fmt.Errorf("flocker client is not initialized") - } - - // lookup in flocker API otherwise - return b.flockerClient.GetDatasetID(b.datasetName) -} - -type flockerVolumeMounter struct { - *flockerVolume - readOnly bool -} - -func (b *flockerVolumeMounter) GetAttributes() volume.Attributes { - return volume.Attributes{ - ReadOnly: b.readOnly, - Managed: false, - SELinuxRelabel: false, - } -} - -func (b *flockerVolumeMounter) GetPath() string { - return getPath(b.podUID, b.volName, b.plugin.host) -} - -// SetUp bind mounts the disk global mount to the volume path. -func (b *flockerVolumeMounter) SetUp(mounterArgs volume.MounterArgs) error { - return b.SetUpAt(b.GetPath(), mounterArgs) -} - -// newFlockerClient uses environment variables and pod attributes to return a -// flocker client capable of talking with the Flocker control service. -func (p *flockerPlugin) newFlockerClient(hostIP string) (*flockerapi.Client, error) { - host := env.GetEnvAsStringOrFallback("FLOCKER_CONTROL_SERVICE_HOST", defaultHost) - port, err := env.GetEnvAsIntOrFallback("FLOCKER_CONTROL_SERVICE_PORT", defaultPort) - - if err != nil { - return nil, err - } - caCertPath := env.GetEnvAsStringOrFallback("FLOCKER_CONTROL_SERVICE_CA_FILE", defaultCACertFile) - keyPath := env.GetEnvAsStringOrFallback("FLOCKER_CONTROL_SERVICE_CLIENT_KEY_FILE", defaultClientKeyFile) - certPath := env.GetEnvAsStringOrFallback("FLOCKER_CONTROL_SERVICE_CLIENT_CERT_FILE", defaultClientCertFile) - - c, err := flockerapi.NewClient(host, port, hostIP, caCertPath, keyPath, certPath) - return c, err -} - -func (b *flockerVolumeMounter) newFlockerClient() (*flockerapi.Client, error) { - - hostIP, err := b.plugin.host.GetHostIP() - if err != nil { - return nil, err - } - - return b.plugin.newFlockerClient(hostIP.String()) -} - -/* -SetUpAt will setup a Flocker volume following this flow of calls to the Flocker -control service: - -1. Get the dataset id for the given volume name/dir -2. It should already be there, if it's not the user needs to manually create it -3. Check the current Primary UUID -4. If it doesn't match with the Primary UUID that we got on 2, then we will - need to update the Primary UUID for this volume. -5. Wait until the Primary UUID was updated or timeout. -*/ -func (b *flockerVolumeMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { - var err error - if b.flockerClient == nil { - b.flockerClient, err = b.newFlockerClient() - if err != nil { - return err - } - } - - datasetUUID, err := b.GetDatasetUUID() - if err != nil { - return fmt.Errorf("the datasetUUID for volume with datasetName='%s' can not be found using flocker: %s", b.datasetName, err) - } - - datasetState, err := b.flockerClient.GetDatasetState(datasetUUID) - if err != nil { - return fmt.Errorf("the datasetState for volume with datasetUUID='%s' could not determinted uusing flocker: %s", datasetUUID, err) - } - - primaryUUID, err := b.flockerClient.GetPrimaryUUID() - if err != nil { - return err - } - - if datasetState.Primary != primaryUUID { - if err := b.updateDatasetPrimary(datasetUUID, primaryUUID); err != nil { - return err - } - _, err := b.flockerClient.GetDatasetState(datasetUUID) - if err != nil { - return fmt.Errorf("the volume with datasetUUID='%s' migrated unsuccessfully", datasetUUID) - } - } - - // TODO: handle failed mounts here. - notMnt, err := b.mounter.IsLikelyNotMountPoint(dir) - klog.V(4).Infof("flockerVolume set up: %s %v %v, datasetUUID %v readOnly %v", dir, !notMnt, err, datasetUUID, b.readOnly) - if err != nil && !os.IsNotExist(err) { - klog.Errorf("cannot validate mount point: %s %v", dir, err) - return err - } - if !notMnt { - return nil - } - - if err := os.MkdirAll(dir, 0750); err != nil { - klog.Errorf("mkdir failed on disk %s (%v)", dir, err) - return err - } - - // Perform a bind mount to the full path to allow duplicate mounts of the same PD. - options := []string{"bind"} - if b.readOnly { - options = append(options, "ro") - } - - globalFlockerPath := makeGlobalFlockerPath(datasetUUID) - klog.V(4).Infof("attempting to mount %s", dir) - - err = b.mounter.MountSensitiveWithoutSystemd(globalFlockerPath, dir, "", options, nil) - if err != nil { - notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir) - if mntErr != nil { - klog.Errorf("isLikelyNotMountPoint check failed: %v", mntErr) - return err - } - if !notMnt { - if mntErr = b.mounter.Unmount(dir); mntErr != nil { - klog.Errorf("failed to unmount: %v", mntErr) - return err - } - notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir) - if mntErr != nil { - klog.Errorf("isLikelyNotMountPoint check failed: %v", mntErr) - return err - } - if !notMnt { - // This is very odd, we don't expect it. We'll try again next sync loop. - klog.Errorf("%s is still mounted, despite call to unmount(). Will try again next sync loop.", dir) - return err - } - } - os.Remove(dir) - klog.Errorf("mount of disk %s failed: %v", dir, err) - return err - } - - if !b.readOnly { - volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin, nil)) - } - - klog.V(4).Infof("successfully mounted %s", dir) - return nil -} - -// updateDatasetPrimary will update the primary in Flocker and wait for it to -// be ready. If it never gets to ready state it will timeout and error. -func (b *flockerVolumeMounter) updateDatasetPrimary(datasetUUID string, primaryUUID string) error { - // We need to update the primary and wait for it to be ready - _, err := b.flockerClient.UpdatePrimaryForDataset(primaryUUID, datasetUUID) - if err != nil { - return err - } - - timeoutChan := time.NewTimer(timeoutWaitingForVolume) - defer timeoutChan.Stop() - tickChan := time.NewTicker(tickerWaitingForVolume) - defer tickChan.Stop() - - for { - if s, err := b.flockerClient.GetDatasetState(datasetUUID); err == nil && s.Primary == primaryUUID { - return nil - } - - select { - case <-timeoutChan.C: - return fmt.Errorf( - "Timed out waiting for the datasetUUID: '%s' to be moved to the primary: '%s'\n%v", - datasetUUID, primaryUUID, err, - ) - case <-tickChan.C: - } - } - -} - -func getVolumeSource(spec *volume.Spec) (*v1.FlockerVolumeSource, bool, error) { - if spec.Volume != nil && spec.Volume.Flocker != nil { - return spec.Volume.Flocker, spec.ReadOnly, nil - } else if spec.PersistentVolume != nil && - spec.PersistentVolume.Spec.Flocker != nil { - return spec.PersistentVolume.Spec.Flocker, spec.ReadOnly, nil - } - - return nil, false, fmt.Errorf("Spec does not reference a Flocker volume type") -} - -type flockerVolumeUnmounter struct { - *flockerVolume -} - -var _ volume.Unmounter = &flockerVolumeUnmounter{} - -func (c *flockerVolumeUnmounter) GetPath() string { - return getPath(c.podUID, c.volName, c.plugin.host) -} - -// Unmounts the bind mount, and detaches the disk only if the PD -// resource was the last reference to that disk on the kubelet. -func (c *flockerVolumeUnmounter) TearDown() error { - return c.TearDownAt(c.GetPath()) -} - -// TearDownAt unmounts the bind mount -func (c *flockerVolumeUnmounter) TearDownAt(dir string) error { - return mount.CleanupMountPoint(dir, c.mounter, false) -} - -func (p *flockerPlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, error) { - return p.newDeleterInternal(spec, &flockerUtil{}) -} - -func (p *flockerPlugin) newDeleterInternal(spec *volume.Spec, manager volumeManager) (volume.Deleter, error) { - if spec.PersistentVolume != nil && spec.PersistentVolume.Spec.Flocker == nil { - return nil, fmt.Errorf("spec.PersistentVolumeSource.Flocker is nil") - } - return &flockerVolumeDeleter{ - flockerVolume: &flockerVolume{ - volName: spec.Name(), - datasetName: spec.PersistentVolume.Spec.Flocker.DatasetName, - datasetUUID: spec.PersistentVolume.Spec.Flocker.DatasetUUID, - manager: manager, - }}, nil -} - -func (p *flockerPlugin) NewProvisioner(options volume.VolumeOptions) (volume.Provisioner, error) { - return p.newProvisionerInternal(options, &flockerUtil{}) -} - -func (p *flockerPlugin) newProvisionerInternal(options volume.VolumeOptions, manager volumeManager) (volume.Provisioner, error) { - return &flockerVolumeProvisioner{ - flockerVolume: &flockerVolume{ - manager: manager, - plugin: p, - }, - options: options, - }, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker_util.go deleted file mode 100644 index 75b1a3b56ef..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker_util.go +++ /dev/null @@ -1,98 +0,0 @@ -/* -Copyright 2016 The Kubernetes 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 flocker - -import ( - "fmt" - - "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/util/rand" - - volumehelpers "k8s.io/cloud-provider/volume/helpers" - - flockerapi "github.com/clusterhq/flocker-go" - "k8s.io/klog/v2" -) - -type flockerUtil struct{} - -func (util *flockerUtil) DeleteVolume(d *flockerVolumeDeleter) error { - var err error - - if d.flockerClient == nil { - d.flockerClient, err = d.plugin.newFlockerClient("") - if err != nil { - return err - } - } - - datasetUUID, err := d.GetDatasetUUID() - if err != nil { - return err - } - - return d.flockerClient.DeleteDataset(datasetUUID) -} - -func (util *flockerUtil) CreateVolume(c *flockerVolumeProvisioner) (datasetUUID string, volumeSizeGiB int, labels map[string]string, err error) { - - if c.flockerClient == nil { - c.flockerClient, err = c.plugin.newFlockerClient("") - if err != nil { - return - } - } - - nodes, err := c.flockerClient.ListNodes() - if err != nil { - return - } - if len(nodes) < 1 { - err = fmt.Errorf("no nodes found inside the flocker cluster to provision a dataset") - return - } - - // select random node - node := nodes[rand.Intn(len(nodes))] - klog.V(2).Infof("selected flocker node with UUID '%s' to provision dataset", node.UUID) - - capacity := c.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)] - requestBytes := capacity.Value() - volumeSizeGiB, err = volumehelpers.RoundUpToGiBInt(capacity) - if err != nil { - return - } - - createOptions := &flockerapi.CreateDatasetOptions{ - MaximumSize: requestBytes, - Metadata: map[string]string{ - "type": "k8s-dynamic-prov", - "pvc": c.options.PVC.Name, - }, - Primary: node.UUID, - } - - datasetState, err := c.flockerClient.CreateDataset(createOptions) - if err != nil { - return - } - datasetUUID = datasetState.DatasetID - - klog.V(2).Infof("successfully created Flocker dataset with UUID '%s'", datasetUUID) - - return -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker_volume.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker_volume.go deleted file mode 100644 index 68a03bd41d3..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/flocker/flocker_volume.go +++ /dev/null @@ -1,114 +0,0 @@ -/* -Copyright 2015 The Kubernetes 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 flocker - -import ( - "fmt" - - "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" -) - -type volumeManager interface { - // Creates a volume - CreateVolume(provisioner *flockerVolumeProvisioner) (datasetUUID string, volumeSizeGB int, labels map[string]string, err error) - // Deletes a volume - DeleteVolume(deleter *flockerVolumeDeleter) error -} - -type flockerVolumeDeleter struct { - *flockerVolume -} - -var _ volume.Deleter = &flockerVolumeDeleter{} - -func (b *flockerVolumeDeleter) GetPath() string { - return getPath(b.podUID, b.volName, b.plugin.host) -} - -func (b *flockerVolumeDeleter) Delete() error { - return b.manager.DeleteVolume(b) -} - -type flockerVolumeProvisioner struct { - *flockerVolume - options volume.VolumeOptions -} - -var _ volume.Provisioner = &flockerVolumeProvisioner{} - -func (c *flockerVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) { - if !util.ContainsAllAccessModes(c.plugin.GetAccessModes(), c.options.PVC.Spec.AccessModes) { - return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", c.options.PVC.Spec.AccessModes, c.plugin.GetAccessModes()) - } - - if len(c.options.Parameters) > 0 { - return nil, fmt.Errorf("provisioning failed: Specified at least one unsupported parameter") - } - - if c.options.PVC.Spec.Selector != nil { - return nil, fmt.Errorf("provisioning failed: Specified unsupported selector") - } - - if util.CheckPersistentVolumeClaimModeBlock(c.options.PVC) { - return nil, fmt.Errorf("%s does not support block volume provisioning", c.plugin.GetPluginName()) - } - - datasetUUID, sizeGB, labels, err := c.manager.CreateVolume(c) - if err != nil { - return nil, err - } - - pv := &v1.PersistentVolume{ - ObjectMeta: metav1.ObjectMeta{ - Name: c.options.PVName, - Labels: map[string]string{}, - Annotations: map[string]string{ - util.VolumeDynamicallyCreatedByKey: "flocker-dynamic-provisioner", - }, - }, - Spec: v1.PersistentVolumeSpec{ - PersistentVolumeReclaimPolicy: c.options.PersistentVolumeReclaimPolicy, - AccessModes: c.options.PVC.Spec.AccessModes, - Capacity: v1.ResourceList{ - v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), - }, - PersistentVolumeSource: v1.PersistentVolumeSource{ - Flocker: &v1.FlockerVolumeSource{ - DatasetUUID: datasetUUID, - }, - }, - }, - } - if len(c.options.PVC.Spec.AccessModes) == 0 { - pv.Spec.AccessModes = c.plugin.GetAccessModes() - } - - if len(labels) != 0 { - if pv.Labels == nil { - pv.Labels = make(map[string]string) - } - for k, v := range labels { - pv.Labels[k] = v - } - } - - return pv, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gcepd/gce_pd.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gcepd/gce_pd.go index 302d6be9613..cb33c1e3dd3 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gcepd/gce_pd.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/gcepd/gce_pd.go @@ -111,6 +111,10 @@ func (plugin *gcePersistentDiskPlugin) SupportsBulkVolumeVerification() bool { return true } +func (plugin *gcePersistentDiskPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *gcePersistentDiskPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go index 5f0e7075eb7..76dafd7c839 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/git_repo/git_repo.go @@ -89,6 +89,10 @@ func (plugin *gitRepoPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *gitRepoPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *gitRepoPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { if err := validateVolume(spec.Volume.GitRepo); err != nil { return nil, err diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go index e915db930cf..10e571a8b5d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs.go @@ -132,6 +132,10 @@ func (plugin *glusterfsPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *glusterfsPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *glusterfsPlugin) RequiresFSResize() bool { return false } @@ -415,7 +419,7 @@ func (b *glusterfsMounter) setUpAtInternal(dir string) error { } -//getVolumeInfo returns 'path' and 'readonly' field values from the provided glusterfs spec. +// getVolumeInfo returns 'path' and 'readonly' field values from the provided glusterfs spec. func getVolumeInfo(spec *volume.Spec) (string, bool, error) { if spec.Volume != nil && spec.Volume.Glusterfs != nil { return spec.Volume.Glusterfs.Path, spec.Volume.Glusterfs.ReadOnly, nil @@ -559,9 +563,9 @@ func (plugin *glusterfsPlugin) collectGids(className string, gidTable *MinMaxAll } // Return the gid table for a storage class. -// - If this is the first time, fill it with all the gids -// used in PVs of this storage class by traversing the PVs. -// - Adapt the range of the table to the current range of the SC. +// - If this is the first time, fill it with all the gids +// used in PVs of this storage class by traversing the PVs. +// - Adapt the range of the table to the current range of the SC. func (plugin *glusterfsPlugin) getGidTable(className string, min int, max int) (*MinMaxAllocator, error) { plugin.gidTableLock.Lock() gidTable, ok := plugin.gidTable[className] diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs_minmax.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs_minmax.go index fc1f2887106..f99bdc71486 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs_minmax.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/glusterfs/glusterfs_minmax.go @@ -44,7 +44,7 @@ var ( ErrInternal = errors.New("internal error") ) -//MinMaxAllocator defines allocator struct. +// MinMaxAllocator defines allocator struct. type MinMaxAllocator struct { lock sync.Mutex min int @@ -79,7 +79,7 @@ func NewMinMaxAllocator(min, max int) (*MinMaxAllocator, error) { }, nil } -//SetRange defines the range/pool with provided min and max values. +// SetRange defines the range/pool with provided min and max values. func (a *MinMaxAllocator) SetRange(min, max int) error { if min > max { return ErrInvalidRange @@ -108,7 +108,7 @@ func (a *MinMaxAllocator) SetRange(min, max int) error { return nil } -//Allocate allocates provided value in the allocator and mark it as used. +// Allocate allocates provided value in the allocator and mark it as used. func (a *MinMaxAllocator) Allocate(i int) (bool, error) { a.lock.Lock() defer a.lock.Unlock() @@ -127,7 +127,7 @@ func (a *MinMaxAllocator) Allocate(i int) (bool, error) { return true, nil } -//AllocateNext allocates next value from the allocator. +// AllocateNext allocates next value from the allocator. func (a *MinMaxAllocator) AllocateNext() (int, bool, error) { a.lock.Lock() defer a.lock.Unlock() @@ -150,7 +150,7 @@ func (a *MinMaxAllocator) AllocateNext() (int, bool, error) { return 0, false, ErrInternal } -//Release free/delete provided value from the allocator. +// Release free/delete provided value from the allocator. func (a *MinMaxAllocator) Release(i int) error { a.lock.Lock() defer a.lock.Unlock() @@ -173,7 +173,7 @@ func (a *MinMaxAllocator) has(i int) bool { return ok } -//Has check whether the provided value is used in the allocator +// Has check whether the provided value is used in the allocator func (a *MinMaxAllocator) Has(i int) bool { a.lock.Lock() defer a.lock.Unlock() @@ -181,7 +181,7 @@ func (a *MinMaxAllocator) Has(i int) bool { return a.has(i) } -//Free returns the number of free values in the allocator. +// Free returns the number of free values in the allocator. func (a *MinMaxAllocator) Free() int { a.lock.Lock() defer a.lock.Unlock() diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/hostpath/host_path.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/hostpath/host_path.go index 8900023c51f..c6f5b4c779c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/hostpath/host_path.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/hostpath/host_path.go @@ -108,6 +108,10 @@ func (plugin *hostPathPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *hostPathPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *hostPathPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go index f4871d901af..8aa184c3a59 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/attacher.go @@ -98,7 +98,7 @@ func (attacher *iscsiAttacher) GetDeviceMountPath( return attacher.manager.MakeGlobalPDName(*mounter.iscsiDisk), nil } -func (attacher *iscsiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMountPath string, _ volume.DeviceMounterArgs) error { +func (attacher *iscsiAttacher) MountDevice(spec *volume.Spec, devicePath string, deviceMountPath string, mountArgs volume.DeviceMounterArgs) error { mounter := attacher.host.GetMounter(iscsiPluginName) notMnt, err := mounter.IsLikelyNotMountPoint(deviceMountPath) if err != nil { @@ -120,6 +120,9 @@ func (attacher *iscsiAttacher) MountDevice(spec *volume.Spec, devicePath string, if readOnly { options = append(options, "ro") } + if mountArgs.SELinuxLabel != "" { + options = volumeutil.AddSELinuxMountOption(options, mountArgs.SELinuxLabel) + } if notMnt { diskMounter := &mount.SafeFormatAndMount{Interface: mounter, Exec: attacher.host.GetExec(iscsiPluginName)} mountOptions := volumeutil.MountOptionFromSpec(spec, options...) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go index 3d6cb58dbec..7f24a4e32ff 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi.go @@ -24,7 +24,9 @@ import ( "strconv" "strings" + utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/klog/v2" + "k8s.io/kubernetes/pkg/features" "k8s.io/mount-utils" utilexec "k8s.io/utils/exec" "k8s.io/utils/io" @@ -35,12 +37,11 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" ioutil "k8s.io/kubernetes/pkg/volume/util" "k8s.io/kubernetes/pkg/volume/util/volumepathhandler" ) -// ProbeVolumePlugins is the primary entrypoint for volume plugins. +// ProbeVolumePlugins is the primary entrypoint for volume plugins. func ProbeVolumePlugins() []volume.VolumePlugin { return []volume.VolumePlugin{&iscsiPlugin{}} } @@ -93,6 +94,10 @@ func (plugin *iscsiPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *iscsiPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return true, nil +} + func (plugin *iscsiPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, @@ -224,7 +229,7 @@ func (plugin *iscsiPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*v // leave the global mount still mounted, while marking the volume as unused. // The volume can then be mounted on several nodes, resulting in volume // corruption. - paths, err := util.GetReliableMountRefs(mounter, mountPath) + paths, err := ioutil.GetReliableMountRefs(mounter, mountPath) if io.IsInconsistentReadError(err) { klog.Errorf("Failed to read mount refs from /proc/mounts for %s: %s", mountPath, err) klog.Errorf("Kubelet cannot unmount volume at %s, please unmount it and all mounts of the same device manually.", mountPath) @@ -333,13 +338,14 @@ func (iscsi *iscsiDisk) iscsiPodDeviceMapPath() (string, string) { type iscsiDiskMounter struct { *iscsiDisk - readOnly bool - fsType string - volumeMode v1.PersistentVolumeMode - mounter *mount.SafeFormatAndMount - exec utilexec.Interface - deviceUtil ioutil.DeviceUtil - mountOptions []string + readOnly bool + fsType string + volumeMode v1.PersistentVolumeMode + mounter *mount.SafeFormatAndMount + exec utilexec.Interface + deviceUtil ioutil.DeviceUtil + mountOptions []string + mountedWithSELinuxContext bool } var _ volume.Mounter = &iscsiDiskMounter{} @@ -348,7 +354,7 @@ func (b *iscsiDiskMounter) GetAttributes() volume.Attributes { return volume.Attributes{ ReadOnly: b.readOnly, Managed: !b.readOnly, - SELinuxRelabel: true, + SELinuxRelabel: !b.mountedWithSELinuxContext, } } @@ -362,6 +368,12 @@ func (b *iscsiDiskMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) e if err != nil { klog.Errorf("iscsi: failed to setup") } + + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + // The volume must have been mounted in MountDevice with -o context. + // TODO: extract from mount table in GetAttributes() to be sure? + b.mountedWithSELinuxContext = mounterArgs.SELinuxLabel != "" + } return err } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go index e2f62f72061..b51127aa92f 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/iscsi/iscsi_util.go @@ -406,10 +406,16 @@ func (util *ISCSIUtil) AttachDisk(b iscsiDiskMounter) (string, error) { klog.Errorf("iscsi: could not find transport name in iface %s", b.Iface) return "", fmt.Errorf("could not parse iface file for %s", b.Iface) } + + addr := tp + if strings.HasPrefix(tp, "[") { + // Delete [] from IP address, links in /dev/disk/by-path do not have it. + addr = strings.NewReplacer("[", "", "]", "").Replace(tp) + } if iscsiTransport == "tcp" { - devicePath = strings.Join([]string{"/dev/disk/by-path/ip", tp, "iscsi", b.Iqn, "lun", b.Lun}, "-") + devicePath = strings.Join([]string{"/dev/disk/by-path/ip", addr, "iscsi", b.Iqn, "lun", b.Lun}, "-") } else { - devicePath = strings.Join([]string{"/dev/disk/by-path/pci", "*", "ip", tp, "iscsi", b.Iqn, "lun", b.Lun}, "-") + devicePath = strings.Join([]string{"/dev/disk/by-path/pci", "*", "ip", addr, "iscsi", b.Iqn, "lun", b.Lun}, "-") } if exist := waitForPathToExist(&devicePath, deviceDiscoveryTimeout, iscsiTransport); !exist { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go index df9b7f560f9..ab2af54c2e4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/local/local.go @@ -96,6 +96,10 @@ func (plugin *localVolumePlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *localVolumePlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *localVolumePlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { // The current meaning of AccessMode is how many nodes can attach to it, not how many pods can mount it return []v1.PersistentVolumeAccessMode{ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/nfs.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/nfs.go index 4a557e884bd..f292be4a506 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/nfs.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/nfs/nfs.go @@ -105,6 +105,10 @@ func (plugin *nfsPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *nfsPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *nfsPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/noop_expandable_plugin.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/noop_expandable_plugin.go index fac27426301..8e3872e3712 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/noop_expandable_plugin.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/noop_expandable_plugin.go @@ -75,3 +75,7 @@ func (n *noopExpandableVolumePluginInstance) SupportsBulkVolumeVerification() bo func (n *noopExpandableVolumePluginInstance) RequiresFSResize() bool { return true } + +func (n *noopExpandableVolumePluginInstance) SupportsSELinuxContextMount(spec *Spec) (bool, error) { + return false, nil +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go index 6de244f3728..23afc41539b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/plugins.go @@ -70,6 +70,7 @@ var ( "kubernetes.io/storageos": "The StorageOS volume provider is deprecated and will be removed in a future release", "kubernetes.io/quobyte": "The Quobyte volume provider is deprecated and will be removed in a future release", "kubernetes.io/flocker": "The Flocker volume provider is deprecated and will be removed in a future release", + "kubernetes.io/glusterfs": "The GlusterFS volume provider is deprecated and will be removed soon after in a subsequent release", } ) @@ -186,6 +187,10 @@ type VolumePlugin interface { // of enabling bulk polling of all nodes. This can speed up verification of // attached volumes by quite a bit, but underlying pluging must support it. SupportsBulkVolumeVerification() bool + + // SupportsSELinuxContextMount returns true if volume plugins supports + // mount -o context=XYZ for a given volume. + SupportsSELinuxContextMount(spec *Spec) (bool, error) } // PersistentVolumePlugin is an extended interface of VolumePlugin and is used @@ -339,6 +344,13 @@ type KubeletVolumeHost interface { WaitForCacheSync() error // Returns hostutil.HostUtils GetHostUtil() hostutil.HostUtils + // GetHostIDsForPod if the pod uses user namespaces, takes the uid and + // gid inside the container and returns the host UID and GID those are + // mapped to on the host. If containerUID/containerGID is nil, then it + // returns the host UID/GID for ID 0 inside the container. + // If the pod is not using user namespaces, as there is no mapping needed, the + // same containerUID and containerGID params are returned. + GetHostIDsForPod(pod *v1.Pod, containerUID, containerGID *int64) (hostUID, hostGID *int64, err error) } // AttachDetachVolumeHost is a AttachDetach Controller specific interface that plugins can use @@ -662,34 +674,33 @@ func (pm *VolumePluginMgr) FindPluginBySpec(spec *Spec) (VolumePlugin, error) { return nil, fmt.Errorf("could not find plugin because volume spec is nil") } - matches := []VolumePlugin{} + var match VolumePlugin + matchedPluginNames := []string{} for _, v := range pm.plugins { if v.CanSupport(spec) { - matches = append(matches, v) + match = v + matchedPluginNames = append(matchedPluginNames, v.GetPluginName()) } } pm.refreshProbedPlugins() for _, plugin := range pm.probedPlugins { if plugin.CanSupport(spec) { - matches = append(matches, plugin) + match = plugin + matchedPluginNames = append(matchedPluginNames, plugin.GetPluginName()) } } - if len(matches) == 0 { + if len(matchedPluginNames) == 0 { return nil, fmt.Errorf("no volume plugin matched") } - if len(matches) > 1 { - matchedPluginNames := []string{} - for _, plugin := range matches { - matchedPluginNames = append(matchedPluginNames, plugin.GetPluginName()) - } + if len(matchedPluginNames) > 1 { return nil, fmt.Errorf("multiple volume plugins matched: %s", strings.Join(matchedPluginNames, ",")) } // Issue warning if the matched provider is deprecated - pm.logDeprecation(matches[0].GetPluginName()) - return matches[0], nil + pm.logDeprecation(match.GetPluginName()) + return match, nil } // FindPluginByName fetches a plugin by name or by legacy name. If no plugin @@ -1044,11 +1055,11 @@ func (pm *VolumePluginMgr) Run(stopCh <-chan struct{}) { // plugin implementations. The following attributes can be overridden per // plugin via configuration: // -// 1. pod.Spec.Volumes[0].VolumeSource must be overridden. Recycler +// 1. pod.Spec.Volumes[0].VolumeSource must be overridden. Recycler // implementations without a valid VolumeSource will fail. -// 2. pod.GenerateName helps distinguish recycler pods by name. Recommended. +// 2. pod.GenerateName helps distinguish recycler pods by name. Recommended. // Default is "pv-recycler-". -// 3. pod.Spec.ActiveDeadlineSeconds gives the recycler pod a maximum timeout +// 3. pod.Spec.ActiveDeadlineSeconds gives the recycler pod a maximum timeout // before failing. Recommended. Default is 60 seconds. // // See HostPath and NFS for working recycler examples diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx.go index b5429b9de61..417929b780d 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx.go @@ -230,6 +230,10 @@ func (plugin *portworxVolumePlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *portworxVolumePlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func getVolumeSource( spec *volume.Spec) (*v1.PortworxVolumeSource, bool, error) { if spec.Volume != nil && spec.Volume.PortworxVolume != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go index 58c62e7f1fe..8f014c1940e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/portworx/portworx_util.go @@ -282,9 +282,10 @@ func createDriverClient(hostname string, port int32) (*osdclient.Client, error) } // getPortworxDriver returns a Portworx volume driver which can be used for cluster wide operations. -// Operations like create and delete volume don't need to be restricted to local volume host since -// any node in the Portworx cluster can co-ordinate the create/delete request and forward the operations to -// the Portworx node that will own/owns the data. +// +// Operations like create and delete volume don't need to be restricted to local volume host since +// any node in the Portworx cluster can co-ordinate the create/delete request and forward the operations to +// the Portworx node that will own/owns the data. func (util *portworxVolumeUtil) getPortworxDriver(volumeHost volume.VolumeHost) (volumeapi.VolumeDriver, error) { // check if existing saved client is valid if isValid, _ := isClientValid(util.portworxClient); isValid { @@ -319,10 +320,11 @@ func (util *portworxVolumeUtil) getPortworxDriver(volumeHost volume.VolumeHost) } // getLocalPortworxDriver returns driver connected to Portworx API server on volume host. -// This is required to force certain operations (mount, unmount, detach, attach) to -// go to the volume host instead of the k8s service which might route it to any host. This pertains to how -// Portworx mounts and attaches a volume to the running container. The node getting these requests needs to -// see the pod container mounts (specifically /var/lib/kubelet/pods/) +// +// This is required to force certain operations (mount, unmount, detach, attach) to +// go to the volume host instead of the k8s service which might route it to any host. This pertains to how +// Portworx mounts and attaches a volume to the running container. The node getting these requests needs to +// see the pod container mounts (specifically /var/lib/kubelet/pods/) func (util *portworxVolumeUtil) getLocalPortworxDriver(volumeHost volume.VolumeHost) (volumeapi.VolumeDriver, error) { if util.portworxClient != nil { // check if existing saved client is valid diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go index e30cb802243..ecbe408098e 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/projected/projected.go @@ -105,6 +105,10 @@ func (plugin *projectedPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *projectedPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *projectedPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { return &projectedVolumeMounter{ projectedVolume: &projectedVolume{ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/OWNERS b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/OWNERS deleted file mode 100644 index 4e2f2d2a690..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/OWNERS +++ /dev/null @@ -1,11 +0,0 @@ -# See the OWNERS docs at https://go.k8s.io/owners - -approvers: - - saad-ali -reviewers: - - saad-ali - - jsafrane - - jingxu97 - - msau42 -emeritus_approvers: - - rootfs diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/quobyte.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/quobyte.go deleted file mode 100644 index 90d4f8cc32d..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/quobyte.go +++ /dev/null @@ -1,511 +0,0 @@ -/* -Copyright 2016 The Kubernetes 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 quobyte - -import ( - "errors" - "fmt" - "os" - "path/filepath" - gostrings "strings" - - "github.com/google/uuid" - "k8s.io/klog/v2" - "k8s.io/mount-utils" - utilstrings "k8s.io/utils/strings" - - v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - proxyutil "k8s.io/kubernetes/pkg/proxy/util" - "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" -) - -// ProbeVolumePlugins is the primary entrypoint for volume plugins. -func ProbeVolumePlugins() []volume.VolumePlugin { - return []volume.VolumePlugin{&quobytePlugin{nil}} -} - -type quobytePlugin struct { - host volume.VolumeHost -} - -// This user is used to authenticate against the -// Quobyte API server and holds all information -type quobyteAPIConfig struct { - quobyteUser string - quobytePassword string `datapolicy:"password"` - quobyteAPIServer string -} - -var _ volume.VolumePlugin = &quobytePlugin{} -var _ volume.PersistentVolumePlugin = &quobytePlugin{} -var _ volume.DeletableVolumePlugin = &quobytePlugin{} -var _ volume.ProvisionableVolumePlugin = &quobytePlugin{} -var _ volume.Provisioner = &quobyteVolumeProvisioner{} -var _ volume.Deleter = &quobyteVolumeDeleter{} - -const ( - quobytePluginName = "kubernetes.io/quobyte" -) - -func (plugin *quobytePlugin) Init(host volume.VolumeHost) error { - if host == nil { - return errors.New("host must not be nil") - } - plugin.host = host - return nil -} - -func (plugin *quobytePlugin) GetPluginName() string { - return quobytePluginName -} - -func (plugin *quobytePlugin) GetVolumeName(spec *volume.Spec) (string, error) { - volumeSource, _, err := getVolumeSource(spec) - if err != nil { - return "", err - } - - return fmt.Sprintf( - "%v:%v", - volumeSource.Registry, - volumeSource.Volume), nil -} - -func (plugin *quobytePlugin) CanSupport(spec *volume.Spec) bool { - if (spec.PersistentVolume != nil && spec.PersistentVolume.Spec.Quobyte == nil) || - (spec.Volume != nil && spec.Volume.Quobyte == nil) { - return false - } - - // If Quobyte is already mounted we don't need to check if the binary is installed - if mounter, err := plugin.newMounterInternal(spec, nil, plugin.host.GetMounter(plugin.GetPluginName())); err == nil { - qm, _ := mounter.(*quobyteMounter) - pluginDir := plugin.host.GetPluginDir(utilstrings.EscapeQualifiedName(quobytePluginName)) - if mounted, err := qm.pluginDirIsMounted(pluginDir); mounted && err == nil { - klog.V(4).Infof("quobyte: can support") - return true - } - } else { - klog.V(4).Infof("quobyte: Error: %v", err) - } - - exec := plugin.host.GetExec(plugin.GetPluginName()) - if out, err := exec.Command("ls", "/sbin/mount.quobyte").CombinedOutput(); err == nil { - klog.V(4).Infof("quobyte: can support: %s", string(out)) - return true - } - - return false -} - -func (plugin *quobytePlugin) RequiresRemount(spec *volume.Spec) bool { - return false -} - -func (plugin *quobytePlugin) SupportsMountOption() bool { - return true -} - -func (plugin *quobytePlugin) SupportsBulkVolumeVerification() bool { - return false -} - -func (plugin *quobytePlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { - return []v1.PersistentVolumeAccessMode{ - v1.ReadWriteOnce, - v1.ReadOnlyMany, - v1.ReadWriteMany, - } -} - -func getVolumeSource(spec *volume.Spec) (*v1.QuobyteVolumeSource, bool, error) { - if spec.Volume != nil && spec.Volume.Quobyte != nil { - return spec.Volume.Quobyte, spec.Volume.Quobyte.ReadOnly, nil - } else if spec.PersistentVolume != nil && - spec.PersistentVolume.Spec.Quobyte != nil { - return spec.PersistentVolume.Spec.Quobyte, spec.ReadOnly, nil - } - - return nil, false, fmt.Errorf("Spec does not reference a Quobyte volume type") -} - -func (plugin *quobytePlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.Spec, error) { - quobyteVolume := &v1.Volume{ - Name: volumeName, - VolumeSource: v1.VolumeSource{ - Quobyte: &v1.QuobyteVolumeSource{ - Volume: volumeName, - }, - }, - } - return volume.NewSpecFromVolume(quobyteVolume), nil -} - -func (plugin *quobytePlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, _ volume.VolumeOptions) (volume.Mounter, error) { - return plugin.newMounterInternal(spec, pod, plugin.host.GetMounter(plugin.GetPluginName())) -} - -func (plugin *quobytePlugin) newMounterInternal(spec *volume.Spec, pod *v1.Pod, mounter mount.Interface) (volume.Mounter, error) { - source, readOnly, err := getVolumeSource(spec) - if err != nil { - return nil, err - } - - return &quobyteMounter{ - quobyte: &quobyte{ - volName: spec.Name(), - user: source.User, - group: source.Group, - mounter: mounter, - pod: pod, - volume: source.Volume, - plugin: plugin, - }, - registry: source.Registry, - readOnly: readOnly, - mountOptions: util.MountOptionFromSpec(spec), - }, nil -} - -func (plugin *quobytePlugin) NewUnmounter(volName string, podUID types.UID) (volume.Unmounter, error) { - return plugin.newUnmounterInternal(volName, podUID, plugin.host.GetMounter(plugin.GetPluginName())) -} - -func (plugin *quobytePlugin) newUnmounterInternal(volName string, podUID types.UID, mounter mount.Interface) (volume.Unmounter, error) { - return &quobyteUnmounter{ - &quobyte{ - volName: volName, - mounter: mounter, - pod: &v1.Pod{ObjectMeta: metav1.ObjectMeta{UID: podUID}}, - plugin: plugin, - }, - }, nil -} - -// Quobyte volumes represent a bare host directory mount of an quobyte export. -type quobyte struct { - volName string - pod *v1.Pod - user string - group string - volume string - tenant string - config string - mounter mount.Interface - plugin *quobytePlugin - volume.MetricsNil -} - -type quobyteMounter struct { - *quobyte - registry string - readOnly bool - mountOptions []string -} - -var _ volume.Mounter = &quobyteMounter{} - -func (mounter *quobyteMounter) GetAttributes() volume.Attributes { - return volume.Attributes{ - ReadOnly: mounter.readOnly, - Managed: false, - SELinuxRelabel: false, - } -} - -// SetUp attaches the disk and bind mounts to the volume path. -func (mounter *quobyteMounter) SetUp(mounterArgs volume.MounterArgs) error { - pluginDir := mounter.plugin.host.GetPluginDir(utilstrings.EscapeQualifiedName(quobytePluginName)) - return mounter.SetUpAt(pluginDir, mounterArgs) -} - -func (mounter *quobyteMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { - // Check if Quobyte is already mounted on the host in the Plugin Dir - // if so we can use this mountpoint instead of creating a new one - // IsLikelyNotMountPoint wouldn't check the mount type - if mounted, err := mounter.pluginDirIsMounted(dir); err != nil { - return err - } else if mounted { - return nil - } - - os.MkdirAll(dir, 0750) - var options []string - options = append(options, "allow-usermapping-in-volumename") - if mounter.readOnly { - options = append(options, "ro") - } - - //if a trailing slash is missing we add it here - mountOptions := util.JoinMountOptions(mounter.mountOptions, options) - if err := mounter.mounter.MountSensitiveWithoutSystemd(mounter.correctTraillingSlash(mounter.registry), dir, "quobyte", mountOptions, nil); err != nil { - return fmt.Errorf("quobyte: mount failed: %v", err) - } - - klog.V(4).Infof("quobyte: mount set up: %s", dir) - - return nil -} - -// GetPath returns the path to the user specific mount of a Quobyte volume -// Returns a path in the format ../user#group@volume -func (quobyteVolume *quobyte) GetPath() string { - user := quobyteVolume.user - if len(user) == 0 { - user = "root" - } - - group := quobyteVolume.group - if len(group) == 0 { - group = "nfsnobody" - } - - // Quobyte has only one mount in the PluginDir where all Volumes are mounted - // The Quobyte client does a fixed-user mapping - pluginDir := quobyteVolume.plugin.host.GetPluginDir(utilstrings.EscapeQualifiedName(quobytePluginName)) - return filepath.Join(pluginDir, fmt.Sprintf("%s#%s@%s", user, group, quobyteVolume.volume)) -} - -type quobyteUnmounter struct { - *quobyte -} - -var _ volume.Unmounter = &quobyteUnmounter{} - -func (unmounter *quobyteUnmounter) TearDown() error { - return unmounter.TearDownAt(unmounter.GetPath()) -} - -// We don't need to unmount on the host because only one mount exists -func (unmounter *quobyteUnmounter) TearDownAt(dir string) error { - return nil -} - -type quobyteVolumeDeleter struct { - *quobyteMounter - pv *v1.PersistentVolume - dialOptions *proxyutil.FilteredDialOptions -} - -func (plugin *quobytePlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, error) { - if spec.PersistentVolume != nil && spec.PersistentVolume.Spec.Quobyte == nil { - return nil, fmt.Errorf("spec.PersistentVolume.Spec.Quobyte is nil") - } - - return plugin.newDeleterInternal(spec) -} - -func (plugin *quobytePlugin) newDeleterInternal(spec *volume.Spec) (volume.Deleter, error) { - source, readOnly, err := getVolumeSource(spec) - if err != nil { - return nil, err - } - if plugin.host == nil { - return nil, errors.New("host must not be nil") - } - - return &quobyteVolumeDeleter{ - quobyteMounter: &quobyteMounter{ - quobyte: &quobyte{ - volName: spec.Name(), - user: source.User, - group: source.Group, - volume: source.Volume, - plugin: plugin, - tenant: source.Tenant, - }, - registry: source.Registry, - readOnly: readOnly, - }, - pv: spec.PersistentVolume, - dialOptions: plugin.host.GetFilteredDialOptions(), - }, nil -} - -func (plugin *quobytePlugin) NewProvisioner(options volume.VolumeOptions) (volume.Provisioner, error) { - return plugin.newProvisionerInternal(options) -} - -func (plugin *quobytePlugin) newProvisionerInternal(options volume.VolumeOptions) (volume.Provisioner, error) { - if plugin.host == nil { - return nil, errors.New("host must not be nil") - } - return &quobyteVolumeProvisioner{ - quobyteMounter: &quobyteMounter{ - quobyte: &quobyte{ - plugin: plugin, - }, - }, - options: options, - dialOptions: plugin.host.GetFilteredDialOptions(), - }, nil -} - -type quobyteVolumeProvisioner struct { - *quobyteMounter - options volume.VolumeOptions - dialOptions *proxyutil.FilteredDialOptions -} - -func (provisioner *quobyteVolumeProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) { - if !util.ContainsAllAccessModes(provisioner.plugin.GetAccessModes(), provisioner.options.PVC.Spec.AccessModes) { - return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", provisioner.options.PVC.Spec.AccessModes, provisioner.plugin.GetAccessModes()) - } - - if util.CheckPersistentVolumeClaimModeBlock(provisioner.options.PVC) { - return nil, fmt.Errorf("%s does not support block volume provisioning", provisioner.plugin.GetPluginName()) - } - - if provisioner.options.PVC.Spec.Selector != nil { - return nil, fmt.Errorf("claim Selector is not supported") - } - provisioner.config = "BASE" - provisioner.tenant = "DEFAULT" - createQuota := false - - cfg, err := parseAPIConfig(provisioner.plugin, provisioner.options.Parameters) - if err != nil { - return nil, err - } - for k, v := range provisioner.options.Parameters { - switch gostrings.ToLower(k) { - case "registry": - provisioner.registry = v - case "user": - provisioner.user = v - case "group": - provisioner.group = v - case "quobytetenant": - provisioner.tenant = v - case "quobyteconfig": - provisioner.config = v - case "createquota": - createQuota = gostrings.ToLower(v) == "true" - case "adminsecretname", - "adminsecretnamespace", - "quobyteapiserver": - continue - default: - return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, provisioner.plugin.GetPluginName()) - } - } - - if !validateRegistry(provisioner.registry) { - return nil, fmt.Errorf("quobyte registry missing or malformed: must be a host:port pair or multiple pairs separated by commas") - } - - // create random image name - provisioner.volume = fmt.Sprintf("kubernetes-dynamic-pvc-%s", uuid.New().String()) - - manager := &quobyteVolumeManager{ - config: cfg, - dialOptions: provisioner.dialOptions, - } - - vol, sizeGB, err := manager.createVolume(provisioner, createQuota) - if err != nil { - // don't log error details from client calls in events - klog.V(4).Infof("CreateVolume failed: %v", err) - return nil, errors.New("CreateVolume failed: see kube-controller-manager.log for details") - } - pv := new(v1.PersistentVolume) - metav1.SetMetaDataAnnotation(&pv.ObjectMeta, util.VolumeDynamicallyCreatedByKey, "quobyte-dynamic-provisioner") - pv.Spec.PersistentVolumeSource.Quobyte = vol - pv.Spec.PersistentVolumeReclaimPolicy = provisioner.options.PersistentVolumeReclaimPolicy - pv.Spec.AccessModes = provisioner.options.PVC.Spec.AccessModes - if len(pv.Spec.AccessModes) == 0 { - pv.Spec.AccessModes = provisioner.plugin.GetAccessModes() - } - pv.Spec.Capacity = v1.ResourceList{ - v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", sizeGB)), - } - pv.Spec.MountOptions = provisioner.options.MountOptions - pv.Spec.PersistentVolumeSource.Quobyte.Tenant = provisioner.tenant - return pv, nil -} - -func (deleter *quobyteVolumeDeleter) GetPath() string { - return deleter.quobyte.GetPath() -} - -func (deleter *quobyteVolumeDeleter) Delete() error { - class, err := util.GetClassForVolume(deleter.plugin.host.GetKubeClient(), deleter.pv) - if err != nil { - return err - } - - cfg, err := parseAPIConfig(deleter.plugin, class.Parameters) - if err != nil { - return err - } - manager := &quobyteVolumeManager{ - config: cfg, - dialOptions: deleter.dialOptions, - } - err = manager.deleteVolume(deleter) - if err != nil { - // don't log error details from client calls in events - klog.V(4).Infof("DeleteVolume failed: %v", err) - return errors.New("DeleteVolume failed: see kube-controller-manager.log for details") - } - return nil -} - -// Parse API configuration (url, username and password) out of class.Parameters. -func parseAPIConfig(plugin *quobytePlugin, params map[string]string) (*quobyteAPIConfig, error) { - var apiServer, secretName string - secretNamespace := "default" - - for k, v := range params { - switch gostrings.ToLower(k) { - case "adminsecretname": - secretName = v - case "adminsecretnamespace": - secretNamespace = v - case "quobyteapiserver": - apiServer = v - } - } - - if len(apiServer) == 0 { - return nil, fmt.Errorf("quobyte API server missing or malformed: must be a http(s)://host:port pair or multiple pairs separated by commas") - } - - secretMap, err := util.GetSecretForPV(secretNamespace, secretName, quobytePluginName, plugin.host.GetKubeClient()) - if err != nil { - return nil, err - } - - cfg := &quobyteAPIConfig{ - quobyteAPIServer: apiServer, - } - - var ok bool - if cfg.quobyteUser, ok = secretMap["user"]; !ok { - return nil, fmt.Errorf("missing \"user\" in secret %s/%s", secretNamespace, secretName) - } - - if cfg.quobytePassword, ok = secretMap["password"]; !ok { - return nil, fmt.Errorf("missing \"password\" in secret %s/%s", secretNamespace, secretName) - } - - return cfg, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/quobyte_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/quobyte_util.go deleted file mode 100644 index a5857a8243a..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/quobyte/quobyte_util.go +++ /dev/null @@ -1,132 +0,0 @@ -/* -Copyright 2016 The Kubernetes 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 quobyte - -import ( - "net" - "net/http" - "os" - "path/filepath" - "strings" - - v1 "k8s.io/api/core/v1" - volumehelpers "k8s.io/cloud-provider/volume/helpers" - proxyutil "k8s.io/kubernetes/pkg/proxy/util" - - quobyteapi "github.com/quobyte/api" - "k8s.io/klog/v2" -) - -type quobyteVolumeManager struct { - config *quobyteAPIConfig - dialOptions *proxyutil.FilteredDialOptions -} - -func (manager *quobyteVolumeManager) createVolume(provisioner *quobyteVolumeProvisioner, createQuota bool) (quobyte *v1.QuobyteVolumeSource, size int, err error) { - capacity := provisioner.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)] - volumeSize, err := volumehelpers.RoundUpToGiBInt(capacity) - if err != nil { - return nil, 0, err - } - // Quobyte has the concept of Volumes which doesn't have a specific size (they can grow unlimited) - // to simulate a size constraint we set here a Quota for logical space - volumeRequest := &quobyteapi.CreateVolumeRequest{ - Name: provisioner.volume, - RootUserID: provisioner.user, - RootGroupID: provisioner.group, - TenantID: provisioner.tenant, - ConfigurationName: provisioner.config, - } - - quobyteClient := manager.createQuobyteClient() - volumeUUID, err := quobyteClient.CreateVolume(volumeRequest) - if err != nil { - return &v1.QuobyteVolumeSource{}, volumeSize, err - } - - // Set Quota for Volume with specified byte size - if createQuota { - err = quobyteClient.SetVolumeQuota(volumeUUID, uint64(capacity.Value())) - if err != nil { - return &v1.QuobyteVolumeSource{}, volumeSize, err - } - } - - klog.V(4).Infof("Created Quobyte volume %s", provisioner.volume) - return &v1.QuobyteVolumeSource{ - Registry: provisioner.registry, - Volume: provisioner.volume, - User: provisioner.user, - Group: provisioner.group, - }, volumeSize, nil -} - -func (manager *quobyteVolumeManager) deleteVolume(deleter *quobyteVolumeDeleter) error { - return manager.createQuobyteClient().DeleteVolumeByName(deleter.volume, deleter.tenant) -} - -func (manager *quobyteVolumeManager) createQuobyteClient() *quobyteapi.QuobyteClient { - client := quobyteapi.NewQuobyteClient( - manager.config.quobyteAPIServer, - manager.config.quobyteUser, - manager.config.quobytePassword, - ) - // quobyte client library @v0.1.7 uses a zero-value http.Client with a nil - // transport which is equivalent to using http.DefaultTransport. - rt := http.DefaultTransport.(*http.Transport).Clone() - rt.DialContext = proxyutil.NewFilteredDialContext(rt.DialContext, nil, manager.dialOptions) - client.SetTransport(rt) - return client -} - -func (mounter *quobyteMounter) pluginDirIsMounted(pluginDir string) (bool, error) { - mounts, err := mounter.mounter.List() - if err != nil { - return false, err - } - - for _, mountPoint := range mounts { - if strings.HasPrefix(mountPoint.Type, "quobyte") { - continue - } - - if mountPoint.Path == pluginDir { - klog.V(4).Infof("quobyte: found mountpoint %s in /proc/mounts", mountPoint.Path) - return true, nil - } - } - - return false, nil -} - -func (mounter *quobyteMounter) correctTraillingSlash(regStr string) string { - return filepath.Clean(regStr) + string(os.PathSeparator) -} - -func validateRegistry(registry string) bool { - if len(registry) == 0 { - return false - } - - for _, hostPortPair := range strings.Split(registry, ",") { - if _, _, err := net.SplitHostPort(hostPortPair); err != nil { - return false - } - } - - return true -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go index 9766a2895c4..c931b14da67 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/attacher.go @@ -199,11 +199,12 @@ var _ volume.DeviceUnmounter = &rbdDetacher{} // mount of the RBD image. This is called once all bind mounts have been // unmounted. // Internally, it does four things: -// - Unmount device from deviceMountPath. -// - Detach device from the node. -// - Remove lock if found. (No need to check volume readonly or not, because -// device is not on the node anymore, it's safe to remove lock.) -// - Remove the deviceMountPath at last. +// - Unmount device from deviceMountPath. +// - Detach device from the node. +// - Remove lock if found. (No need to check volume readonly or not, because +// device is not on the node anymore, it's safe to remove lock.) +// - Remove the deviceMountPath at last. +// // This method is idempotent, callers are responsible for retrying on failure. func (detacher *rbdDetacher) UnmountDevice(deviceMountPath string) error { if pathExists, pathErr := mount.PathExists(deviceMountPath); pathErr != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go index dcfb0880442..adb4e61376c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/rbd/rbd.go @@ -44,6 +44,7 @@ import ( var ( supportedFeatures = sets.NewString("layering") + pathSeparator = string(os.PathSeparator) ) // ProbeVolumePlugins is the primary entrypoint for volume plugins. @@ -124,6 +125,10 @@ func (plugin *rbdPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *rbdPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *rbdPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { return []v1.PersistentVolumeAccessMode{ v1.ReadWriteOnce, @@ -846,6 +851,7 @@ func (b *rbdMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { err := diskSetUp(b.manager, *b, dir, b.mounter, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy) if err != nil { klog.Errorf("rbd: failed to setup at %s %v", dir, err) + return err } klog.V(3).Infof("rbd: successfully setup at %s", dir) return err @@ -948,7 +954,7 @@ type rbdDiskUnmapper struct { func getPoolAndImageFromMapPath(mapPath string) (string, string, error) { - pathParts := dstrings.Split(mapPath, "/") + pathParts := dstrings.Split(mapPath, pathSeparator) if len(pathParts) < 2 { return "", "", fmt.Errorf("corrupted mapPath") } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go index 0899f512667..a8a2d633b5c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/secret/secret.go @@ -93,6 +93,10 @@ func (plugin *secretPlugin) SupportsBulkVolumeVerification() bool { return false } +func (plugin *secretPlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *secretPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, opts volume.VolumeOptions) (volume.Mounter, error) { return &secretVolumeMounter{ secretVolume: &secretVolume{ diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/storageos.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/storageos.go deleted file mode 100644 index d3d938d3b29..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/storageos.go +++ /dev/null @@ -1,762 +0,0 @@ -/* -Copyright 2017 The Kubernetes 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 storageos - -import ( - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - - "k8s.io/klog/v2" - "k8s.io/mount-utils" - utilexec "k8s.io/utils/exec" - utilstrings "k8s.io/utils/strings" - - v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" - clientset "k8s.io/client-go/kubernetes" - volumehelpers "k8s.io/cloud-provider/volume/helpers" - "k8s.io/kubernetes/pkg/volume" - "k8s.io/kubernetes/pkg/volume/util" -) - -// ProbeVolumePlugins is the primary entrypoint for volume plugins. -func ProbeVolumePlugins() []volume.VolumePlugin { - return []volume.VolumePlugin{&storageosPlugin{nil}} -} - -type storageosPlugin struct { - host volume.VolumeHost -} - -var _ volume.VolumePlugin = &storageosPlugin{} -var _ volume.PersistentVolumePlugin = &storageosPlugin{} -var _ volume.DeletableVolumePlugin = &storageosPlugin{} -var _ volume.ProvisionableVolumePlugin = &storageosPlugin{} - -const ( - storageosPluginName = "kubernetes.io/storageos" - defaultDeviceDir = "/var/lib/storageos/volumes" - defaultAPIAddress = "tcp://localhost:5705" - defaultAPIUser = "storageos" - defaultAPIPassword = "storageos" - defaultAPIVersion = "1" - defaultFSType = "ext4" - defaultNamespace = "default" -) - -func getPath(uid types.UID, volNamespace string, volName string, pvName string, host volume.VolumeHost) string { - if len(volNamespace) != 0 && len(volName) != 0 && strings.Count(volName, ".") == 0 { - return host.GetPodVolumeDir(uid, utilstrings.EscapeQualifiedName(storageosPluginName), pvName+"."+volNamespace+"."+volName) - } - return host.GetPodVolumeDir(uid, utilstrings.EscapeQualifiedName(storageosPluginName), pvName) -} - -func (plugin *storageosPlugin) Init(host volume.VolumeHost) error { - plugin.host = host - return nil -} - -func (plugin *storageosPlugin) GetPluginName() string { - return storageosPluginName -} - -func (plugin *storageosPlugin) GetVolumeName(spec *volume.Spec) (string, error) { - volumeSource, _, err := getVolumeSource(spec) - if err != nil { - return "", err - } - return fmt.Sprintf("%s/%s", volumeSource.VolumeNamespace, volumeSource.VolumeName), nil -} - -func (plugin *storageosPlugin) CanSupport(spec *volume.Spec) bool { - return (spec.PersistentVolume != nil && spec.PersistentVolume.Spec.StorageOS != nil) || - (spec.Volume != nil && spec.Volume.StorageOS != nil) -} - -func (plugin *storageosPlugin) RequiresRemount(spec *volume.Spec) bool { - return false -} - -func (plugin *storageosPlugin) GetAccessModes() []v1.PersistentVolumeAccessMode { - return []v1.PersistentVolumeAccessMode{ - v1.ReadWriteOnce, - v1.ReadOnlyMany, - } -} - -func (plugin *storageosPlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, _ volume.VolumeOptions) (volume.Mounter, error) { - - apiCfg, err := getAPICfg(spec, pod, plugin.host.GetKubeClient()) - if err != nil { - return nil, err - } - - return plugin.newMounterInternal(spec, pod, apiCfg, &storageosUtil{host: plugin.host}, plugin.host.GetMounter(plugin.GetPluginName()), plugin.host.GetExec(plugin.GetPluginName())) -} - -func (plugin *storageosPlugin) newMounterInternal(spec *volume.Spec, pod *v1.Pod, apiCfg *storageosAPIConfig, manager storageosManager, mounter mount.Interface, exec utilexec.Interface) (volume.Mounter, error) { - - volName, volNamespace, fsType, readOnly, err := getVolumeInfoFromSpec(spec) - if err != nil { - return nil, err - } - - return &storageosMounter{ - storageos: &storageos{ - podUID: pod.UID, - podNamespace: pod.GetNamespace(), - pvName: spec.Name(), - volName: volName, - volNamespace: volNamespace, - fsType: fsType, - readOnly: readOnly, - apiCfg: apiCfg, - manager: manager, - mounter: mounter, - exec: exec, - plugin: plugin, - MetricsProvider: volume.NewMetricsStatFS(getPath(pod.UID, volNamespace, volName, spec.Name(), plugin.host)), - }, - diskMounter: &mount.SafeFormatAndMount{Interface: mounter, Exec: exec}, - mountOptions: util.MountOptionFromSpec(spec), - }, nil -} - -func (plugin *storageosPlugin) NewUnmounter(pvName string, podUID types.UID) (volume.Unmounter, error) { - return plugin.newUnmounterInternal(pvName, podUID, &storageosUtil{host: plugin.host}, plugin.host.GetMounter(plugin.GetPluginName()), plugin.host.GetExec(plugin.GetPluginName())) -} - -func (plugin *storageosPlugin) newUnmounterInternal(pvName string, podUID types.UID, manager storageosManager, mounter mount.Interface, exec utilexec.Interface) (volume.Unmounter, error) { - - // Parse volume namespace & name from mountpoint if mounted - volNamespace, volName, err := getVolumeInfo(pvName, podUID, plugin.host) - if err != nil { - return nil, err - } - - return &storageosUnmounter{ - storageos: &storageos{ - podUID: podUID, - pvName: pvName, - volName: volName, - volNamespace: volNamespace, - manager: manager, - mounter: mounter, - exec: exec, - plugin: plugin, - MetricsProvider: volume.NewMetricsStatFS(getPath(podUID, volNamespace, volName, pvName, plugin.host)), - }, - }, nil -} - -func (plugin *storageosPlugin) NewDeleter(spec *volume.Spec) (volume.Deleter, error) { - if spec.PersistentVolume != nil && spec.PersistentVolume.Spec.StorageOS == nil { - return nil, fmt.Errorf("spec.PersistentVolumeSource.StorageOS is nil") - } - - class, err := util.GetClassForVolume(plugin.host.GetKubeClient(), spec.PersistentVolume) - if err != nil { - return nil, err - } - - var adminSecretName, adminSecretNamespace string - - for k, v := range class.Parameters { - switch strings.ToLower(k) { - case "adminsecretname": - adminSecretName = v - case "adminsecretnamespace": - adminSecretNamespace = v - } - } - - apiCfg, err := parsePVSecret(adminSecretNamespace, adminSecretName, plugin.host.GetKubeClient()) - if err != nil { - return nil, fmt.Errorf("failed to get admin secret from [%q/%q]: %v", adminSecretNamespace, adminSecretName, err) - } - - return plugin.newDeleterInternal(spec, apiCfg, &storageosUtil{host: plugin.host}) -} - -func (plugin *storageosPlugin) newDeleterInternal(spec *volume.Spec, apiCfg *storageosAPIConfig, manager storageosManager) (volume.Deleter, error) { - - return &storageosDeleter{ - storageosMounter: &storageosMounter{ - storageos: &storageos{ - pvName: spec.Name(), - volName: spec.PersistentVolume.Spec.StorageOS.VolumeName, - volNamespace: spec.PersistentVolume.Spec.StorageOS.VolumeNamespace, - apiCfg: apiCfg, - manager: manager, - plugin: plugin, - }, - }, - pvUID: spec.PersistentVolume.UID, - }, nil -} - -func (plugin *storageosPlugin) NewProvisioner(options volume.VolumeOptions) (volume.Provisioner, error) { - return plugin.newProvisionerInternal(options, &storageosUtil{host: plugin.host}) -} - -func (plugin *storageosPlugin) newProvisionerInternal(options volume.VolumeOptions, manager storageosManager) (volume.Provisioner, error) { - return &storageosProvisioner{ - storageosMounter: &storageosMounter{ - storageos: &storageos{ - manager: manager, - plugin: plugin, - }, - }, - options: options, - }, nil -} - -func (plugin *storageosPlugin) ConstructVolumeSpec(volumeName, mountPath string) (*volume.Spec, error) { - volNamespace, volName, err := getVolumeFromRef(volumeName) - if err != nil { - volNamespace = defaultNamespace - volName = volumeName - } - storageosVolume := &v1.Volume{ - Name: volumeName, - VolumeSource: v1.VolumeSource{ - StorageOS: &v1.StorageOSVolumeSource{ - VolumeName: volName, - VolumeNamespace: volNamespace, - }, - }, - } - return volume.NewSpecFromVolume(storageosVolume), nil -} - -func (plugin *storageosPlugin) SupportsMountOption() bool { - return true -} - -func (plugin *storageosPlugin) SupportsBulkVolumeVerification() bool { - return false -} - -func getVolumeSource(spec *volume.Spec) (*v1.StorageOSVolumeSource, bool, error) { - if spec.Volume != nil && spec.Volume.StorageOS != nil { - return spec.Volume.StorageOS, spec.Volume.StorageOS.ReadOnly, nil - } - return nil, false, fmt.Errorf("Spec does not reference a StorageOS volume type") -} - -func getPersistentVolumeSource(spec *volume.Spec) (*v1.StorageOSPersistentVolumeSource, bool, error) { - if spec.PersistentVolume != nil && spec.PersistentVolume.Spec.StorageOS != nil { - return spec.PersistentVolume.Spec.StorageOS, spec.ReadOnly, nil - } - return nil, false, fmt.Errorf("Spec does not reference a StorageOS persistent volume type") -} - -// storageosManager is the abstract interface to StorageOS volume ops. -type storageosManager interface { - // Connects to the StorageOS API using the supplied configuration. - NewAPI(apiCfg *storageosAPIConfig) error - // Creates a StorageOS volume. - CreateVolume(provisioner *storageosProvisioner) (*storageosVolume, error) - // Attaches the disk to the kubelet's host machine. - AttachVolume(mounter *storageosMounter) (string, error) - // Attaches the device to the host at a mount path. - AttachDevice(mounter *storageosMounter, deviceMountPath string) error - // Detaches the disk from the kubelet's host machine. - DetachVolume(unmounter *storageosUnmounter, dir string) error - // Mounts the disk on the Kubelet's host machine. - MountVolume(mounter *storageosMounter, mnt, dir string) error - // Unmounts the disk from the Kubelet's host machine. - UnmountVolume(unounter *storageosUnmounter) error - // Deletes the storageos volume. All data will be lost. - DeleteVolume(deleter *storageosDeleter) error - // Gets the node's device path. - DeviceDir(mounter *storageosMounter) string -} - -// storageos volumes represent a bare host directory mount of an StorageOS export. -type storageos struct { - podUID types.UID - podNamespace string - pvName string - volName string - volNamespace string - readOnly bool - description string - pool string - fsType string - sizeGB int - labels map[string]string - apiCfg *storageosAPIConfig - manager storageosManager - mounter mount.Interface - exec utilexec.Interface - plugin *storageosPlugin - volume.MetricsProvider -} - -type storageosMounter struct { - *storageos - - // The directory containing the StorageOS devices - deviceDir string - - // Interface used to mount the file or block device - diskMounter *mount.SafeFormatAndMount - mountOptions []string -} - -var _ volume.Mounter = &storageosMounter{} - -func (b *storageosMounter) GetAttributes() volume.Attributes { - return volume.Attributes{ - ReadOnly: b.readOnly, - Managed: !b.readOnly, - SELinuxRelabel: true, - } -} - -// SetUp attaches the disk and bind mounts to the volume path. -func (b *storageosMounter) SetUp(mounterArgs volume.MounterArgs) error { - // Need a namespace to find the volume, try pod's namespace if not set. - if b.volNamespace == "" { - klog.V(2).Infof("Setting StorageOS volume namespace to pod namespace: %s", b.podNamespace) - b.volNamespace = b.podNamespace - } - - targetPath := makeGlobalPDName(b.plugin.host, b.pvName, b.volNamespace, b.volName) - - // Attach the device to the host. - if err := b.manager.AttachDevice(b, targetPath); err != nil { - klog.Errorf("Failed to attach device at %s: %s", targetPath, err.Error()) - return err - } - - // Attach the StorageOS volume as a block device - devicePath, err := b.manager.AttachVolume(b) - if err != nil { - klog.Errorf("Failed to attach StorageOS volume %s: %s", b.volName, err.Error()) - return err - } - - // Mount the loop device into the plugin's disk global mount dir. - err = b.manager.MountVolume(b, devicePath, targetPath) - if err != nil { - return err - } - klog.V(4).Infof("Successfully mounted StorageOS volume %s into global mount directory", b.volName) - - // Bind mount the volume into the pod - return b.SetUpAt(b.GetPath(), mounterArgs) -} - -// SetUp bind mounts the disk global mount to the give volume path. -func (b *storageosMounter) SetUpAt(dir string, mounterArgs volume.MounterArgs) error { - notMnt, err := b.mounter.IsLikelyNotMountPoint(dir) - klog.V(4).Infof("StorageOS volume set up: %s %v %v", dir, !notMnt, err) - if err != nil && !os.IsNotExist(err) { - klog.Errorf("Cannot validate mount point: %s %v", dir, err) - return err - } - if !notMnt { - return nil - } - - if err = os.MkdirAll(dir, 0750); err != nil { - klog.Errorf("mkdir failed on disk %s (%v)", dir, err) - return err - } - - // Perform a bind mount to the full path to allow duplicate mounts of the same PD. - options := []string{"bind"} - if b.readOnly { - options = append(options, "ro") - } - mountOptions := util.JoinMountOptions(b.mountOptions, options) - - globalPDPath := makeGlobalPDName(b.plugin.host, b.pvName, b.volNamespace, b.volName) - klog.V(4).Infof("Attempting to bind mount to pod volume at %s", dir) - - err = b.mounter.MountSensitiveWithoutSystemd(globalPDPath, dir, "", mountOptions, nil) - if err != nil { - notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir) - if mntErr != nil { - klog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr) - return err - } - if !notMnt { - if mntErr = b.mounter.Unmount(dir); mntErr != nil { - klog.Errorf("Failed to unmount: %v", mntErr) - return err - } - notMnt, mntErr := b.mounter.IsLikelyNotMountPoint(dir) - if mntErr != nil { - klog.Errorf("IsLikelyNotMountPoint check failed: %v", mntErr) - return err - } - if !notMnt { - klog.Errorf("%s is still mounted, despite call to unmount(). Will try again next sync loop.", dir) - return err - } - } - os.Remove(dir) - klog.Errorf("Mount of disk %s failed: %v", dir, err) - return err - } - - if !b.readOnly { - volume.SetVolumeOwnership(b, mounterArgs.FsGroup, mounterArgs.FSGroupChangePolicy, util.FSGroupCompleteHook(b.plugin, nil)) - } - klog.V(4).Infof("StorageOS volume setup complete on %s", dir) - return nil -} - -func makeGlobalPDName(host volume.VolumeHost, pvName, volNamespace, volName string) string { - return filepath.Join(host.GetPluginDir(utilstrings.EscapeQualifiedName(storageosPluginName)), util.MountsInGlobalPDPath, pvName+"."+volNamespace+"."+volName) -} - -// Given the pod id and PV name, finds the volume's namespace and name from the -// name or volume mount. We mount as volNamespace.pvName, but k8s will specify -// only the pvName to unmount. -// Will return empty volNamespace/pvName if the volume is not mounted. -func getVolumeInfo(pvName string, podUID types.UID, host volume.VolumeHost) (string, string, error) { - if volNamespace, volName, err := getVolumeFromRef(pvName); err == nil { - return volNamespace, volName, nil - } - - volumeDir := filepath.Dir(host.GetPodVolumeDir(podUID, utilstrings.EscapeQualifiedName(storageosPluginName), pvName)) - files, err := ioutil.ReadDir(volumeDir) - if err != nil { - return "", "", fmt.Errorf("could not read mounts from pod volume dir: %s", err) - } - for _, f := range files { - if f.Mode().IsDir() && strings.HasPrefix(f.Name(), pvName+".") { - if volNamespace, volName, err := getVolumeFromRef(f.Name()); err == nil { - return volNamespace, volName, nil - } - } - } - return "", "", fmt.Errorf("could not get info from unmounted pv %q at %q", pvName, volumeDir) -} - -// Splits the volume ref on "." to return the volNamespace and pvName. Neither -// namespaces nor service names allow "." in their names. -func getVolumeFromRef(ref string) (volNamespace string, volName string, err error) { - refParts := strings.Split(ref, ".") - switch len(refParts) { - case 2: - return refParts[0], refParts[1], nil - case 3: - return refParts[1], refParts[2], nil - } - return "", "", fmt.Errorf("ref not in format volNamespace.volName or pvName.volNamespace.volName") -} - -// GetPath returns the path to the user specific mount of a StorageOS volume -func (storageosVolume *storageos) GetPath() string { - return getPath(storageosVolume.podUID, storageosVolume.volNamespace, storageosVolume.volName, storageosVolume.pvName, storageosVolume.plugin.host) -} - -type storageosUnmounter struct { - *storageos -} - -var _ volume.Unmounter = &storageosUnmounter{} - -func (b *storageosUnmounter) GetPath() string { - return getPath(b.podUID, b.volNamespace, b.volName, b.pvName, b.plugin.host) -} - -// Unmounts the bind mount, and detaches the disk only if the PD -// resource was the last reference to that disk on the kubelet. -func (b *storageosUnmounter) TearDown() error { - if len(b.volNamespace) == 0 || len(b.volName) == 0 { - klog.Warningf("volNamespace: %q, volName: %q not set, skipping TearDown", b.volNamespace, b.volName) - return fmt.Errorf("pvName not specified for TearDown, waiting for next sync loop") - } - // Unmount from pod - mountPath := b.GetPath() - - err := b.TearDownAt(mountPath) - if err != nil { - klog.Errorf("Unmount from pod failed: %v", err) - return err - } - - // Find device name from global mount - globalPDPath := makeGlobalPDName(b.plugin.host, b.pvName, b.volNamespace, b.volName) - devicePath, _, err := mount.GetDeviceNameFromMount(b.mounter, globalPDPath) - if err != nil { - klog.Errorf("Detach failed when getting device from global mount: %v", err) - return err - } - - // Unmount from plugin's disk global mount dir. - err = b.TearDownAt(globalPDPath) - if err != nil { - klog.Errorf("Detach failed during unmount: %v", err) - return err - } - - // Detach loop device - err = b.manager.DetachVolume(b, devicePath) - if err != nil { - klog.Errorf("Detach device %s failed for volume %s: %v", devicePath, b.pvName, err) - return err - } - - klog.V(4).Infof("Successfully unmounted StorageOS volume %s and detached devices", b.pvName) - - return nil -} - -// Unmounts the bind mount, and detaches the disk only if the PD -// resource was the last reference to that disk on the kubelet. -func (b *storageosUnmounter) TearDownAt(dir string) error { - if err := mount.CleanupMountPoint(dir, b.mounter, false); err != nil { - klog.V(4).Infof("Unmounted StorageOS volume %s failed with: %v", b.pvName, err) - } - if err := b.manager.UnmountVolume(b); err != nil { - klog.V(4).Infof("Mount reference for volume %s could not be removed from StorageOS: %v", b.pvName, err) - } - return nil -} - -type storageosDeleter struct { - *storageosMounter - pvUID types.UID -} - -var _ volume.Deleter = &storageosDeleter{} - -func (d *storageosDeleter) GetPath() string { - return getPath(d.podUID, d.volNamespace, d.volName, d.pvName, d.plugin.host) -} - -func (d *storageosDeleter) Delete() error { - return d.manager.DeleteVolume(d) -} - -type storageosProvisioner struct { - *storageosMounter - options volume.VolumeOptions -} - -var _ volume.Provisioner = &storageosProvisioner{} - -func (c *storageosProvisioner) Provision(selectedNode *v1.Node, allowedTopologies []v1.TopologySelectorTerm) (*v1.PersistentVolume, error) { - if !util.ContainsAllAccessModes(c.plugin.GetAccessModes(), c.options.PVC.Spec.AccessModes) { - return nil, fmt.Errorf("invalid AccessModes %v: only AccessModes %v are supported", c.options.PVC.Spec.AccessModes, c.plugin.GetAccessModes()) - } - if util.CheckPersistentVolumeClaimModeBlock(c.options.PVC) { - return nil, fmt.Errorf("%s does not support block volume provisioning", c.plugin.GetPluginName()) - } - - var adminSecretName, adminSecretNamespace string - - // Apply ProvisionerParameters (case-insensitive). We leave validation of - // the values to the cloud provider. - for k, v := range c.options.Parameters { - switch strings.ToLower(k) { - case "adminsecretname": - adminSecretName = v - case "adminsecretnamespace": - adminSecretNamespace = v - case "volumenamespace": - c.volNamespace = v - case "description": - c.description = v - case "pool": - c.pool = v - case "fstype": - c.fsType = v - default: - return nil, fmt.Errorf("invalid option %q for volume plugin %s", k, c.plugin.GetPluginName()) - } - } - - // Set from PVC - c.podNamespace = c.options.PVC.Namespace - c.volName = c.options.PVName - if c.volNamespace == "" { - c.volNamespace = c.options.PVC.Namespace - } - c.labels = make(map[string]string) - for k, v := range c.options.PVC.Labels { - c.labels[k] = v - } - capacity := c.options.PVC.Spec.Resources.Requests[v1.ResourceName(v1.ResourceStorage)] - var err error - c.sizeGB, err = volumehelpers.RoundUpToGiBInt(capacity) - if err != nil { - return nil, err - } - - apiCfg, err := parsePVSecret(adminSecretNamespace, adminSecretName, c.plugin.host.GetKubeClient()) - if err != nil { - return nil, err - } - c.apiCfg = apiCfg - - vol, err := c.manager.CreateVolume(c) - if err != nil { - klog.Errorf("failed to create volume: %v", err) - return nil, err - } - if vol.FSType == "" { - vol.FSType = defaultFSType - } - - pv := &v1.PersistentVolume{ - ObjectMeta: metav1.ObjectMeta{ - Name: vol.Name, - Labels: map[string]string{}, - Annotations: map[string]string{ - util.VolumeDynamicallyCreatedByKey: "storageos-dynamic-provisioner", - }, - }, - Spec: v1.PersistentVolumeSpec{ - PersistentVolumeReclaimPolicy: c.options.PersistentVolumeReclaimPolicy, - AccessModes: c.options.PVC.Spec.AccessModes, - Capacity: v1.ResourceList{ - v1.ResourceName(v1.ResourceStorage): resource.MustParse(fmt.Sprintf("%dGi", vol.SizeGB)), - }, - PersistentVolumeSource: v1.PersistentVolumeSource{ - StorageOS: &v1.StorageOSPersistentVolumeSource{ - VolumeName: vol.Name, - VolumeNamespace: vol.Namespace, - FSType: vol.FSType, - ReadOnly: false, - SecretRef: &v1.ObjectReference{ - Name: adminSecretName, - Namespace: adminSecretNamespace, - }, - }, - }, - MountOptions: c.options.MountOptions, - }, - } - if len(c.options.PVC.Spec.AccessModes) == 0 { - pv.Spec.AccessModes = c.plugin.GetAccessModes() - } - if len(vol.Labels) != 0 { - if pv.Labels == nil { - pv.Labels = make(map[string]string) - } - for k, v := range vol.Labels { - pv.Labels[k] = v - } - } - return pv, nil -} - -// Returns StorageOS volume name, namespace, fstype and readonly from spec -func getVolumeInfoFromSpec(spec *volume.Spec) (string, string, string, bool, error) { - if spec.PersistentVolume != nil { - source, readOnly, err := getPersistentVolumeSource(spec) - if err != nil { - return "", "", "", false, err - } - return source.VolumeName, source.VolumeNamespace, source.FSType, readOnly, nil - } - - if spec.Volume != nil { - source, readOnly, err := getVolumeSource(spec) - if err != nil { - return "", "", "", false, err - } - return source.VolumeName, source.VolumeNamespace, source.FSType, readOnly, nil - } - return "", "", "", false, fmt.Errorf("spec not Volume or PersistentVolume") -} - -// Returns API config if secret set, otherwise empty struct so defaults can be -// attempted. -func getAPICfg(spec *volume.Spec, pod *v1.Pod, kubeClient clientset.Interface) (*storageosAPIConfig, error) { - if spec.PersistentVolume != nil { - source, _, err := getPersistentVolumeSource(spec) - if err != nil { - return nil, err - } - if source.SecretRef == nil { - return nil, nil - } - return parsePVSecret(source.SecretRef.Namespace, source.SecretRef.Name, kubeClient) - } - - if spec.Volume != nil { - source, _, err := getVolumeSource(spec) - if err != nil { - return nil, err - } - if source.SecretRef == nil { - return nil, nil - } - return parsePodSecret(pod, source.SecretRef.Name, kubeClient) - } - - return nil, fmt.Errorf("spec not Volume or PersistentVolume") -} - -func parsePodSecret(pod *v1.Pod, secretName string, kubeClient clientset.Interface) (*storageosAPIConfig, error) { - secret, err := util.GetSecretForPod(pod, secretName, kubeClient) - if err != nil { - klog.Errorf("failed to get secret from [%q/%q]", pod.Namespace, secretName) - return nil, fmt.Errorf("failed to get secret from [%q/%q]", pod.Namespace, secretName) - } - return parseAPIConfig(secret) -} - -// Important: Only to be called with data from a PV to avoid secrets being -// loaded from a user-suppler namespace. -func parsePVSecret(namespace, secretName string, kubeClient clientset.Interface) (*storageosAPIConfig, error) { - secret, err := util.GetSecretForPV(namespace, secretName, storageosPluginName, kubeClient) - if err != nil { - klog.Errorf("failed to get secret from [%q/%q]", namespace, secretName) - return nil, fmt.Errorf("failed to get secret from [%q/%q]", namespace, secretName) - } - return parseAPIConfig(secret) -} - -// Parse API configuration from parameters or secret -func parseAPIConfig(params map[string]string) (*storageosAPIConfig, error) { - - if len(params) == 0 { - return nil, fmt.Errorf("empty API config") - } - - c := &storageosAPIConfig{} - - for name, data := range params { - switch strings.ToLower(name) { - case "apiaddress": - c.apiAddr = string(data) - case "apiusername": - c.apiUser = string(data) - case "apipassword": - c.apiPass = string(data) - case "apiversion": - c.apiVersion = string(data) - } - } - - return c, nil -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/storageos_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/storageos_util.go deleted file mode 100644 index 3199c915709..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/storageos/storageos_util.go +++ /dev/null @@ -1,436 +0,0 @@ -/* -Copyright 2017 The Kubernetes 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 storageos - -import ( - "errors" - "fmt" - "io/ioutil" - "os" - "path/filepath" - "strings" - - storageosapi "github.com/storageos/go-api" - storageostypes "github.com/storageos/go-api/types" - "k8s.io/klog/v2" - proxyutil "k8s.io/kubernetes/pkg/proxy/util" - "k8s.io/kubernetes/pkg/volume" - utilexec "k8s.io/utils/exec" -) - -const ( - losetupPath = "losetup" - - modeBlock deviceType = iota - modeFile - modeUnsupported - - //ErrDeviceNotFound defines "device not found" - ErrDeviceNotFound = "device not found" - //ErrDeviceNotSupported defines "device not supported" - ErrDeviceNotSupported = "device not supported" - //ErrNotAvailable defines "not available" - ErrNotAvailable = "not available" -) - -type deviceType int - -// storageosVolume describes a provisioned volume -type storageosVolume struct { - ID string - Name string - Namespace string - Description string - Pool string - SizeGB int - Labels map[string]string - FSType string -} - -type storageosAPIConfig struct { - apiAddr string - apiUser string - apiPass string - apiVersion string -} - -type apiImplementer interface { - Volume(namespace string, ref string) (*storageostypes.Volume, error) - VolumeCreate(opts storageostypes.VolumeCreateOptions) (*storageostypes.Volume, error) - VolumeMount(opts storageostypes.VolumeMountOptions) error - VolumeUnmount(opts storageostypes.VolumeUnmountOptions) error - VolumeDelete(opt storageostypes.DeleteOptions) error - Node(ref string) (*storageostypes.Node, error) -} - -// storageosUtil is the utility structure to interact with the StorageOS API. -type storageosUtil struct { - api apiImplementer - host volume.VolumeHost -} - -func (u *storageosUtil) NewAPI(apiCfg *storageosAPIConfig) error { - if u.api != nil { - return nil - } - if u.host == nil { - return errors.New("host must not be nil") - } - if apiCfg == nil { - apiCfg = &storageosAPIConfig{ - apiAddr: defaultAPIAddress, - apiUser: defaultAPIUser, - apiPass: defaultAPIPassword, - apiVersion: defaultAPIVersion, - } - klog.V(4).Infof("using default StorageOS API settings: addr %s, version: %s", apiCfg.apiAddr, defaultAPIVersion) - } - - api, err := storageosapi.NewVersionedClient(apiCfg.apiAddr, defaultAPIVersion) - if err != nil { - return err - } - api.SetAuth(apiCfg.apiUser, apiCfg.apiPass) - if err := api.SetDialContext(proxyutil.NewFilteredDialContext(api.GetDialContext(), nil, u.host.GetFilteredDialOptions())); err != nil { - return fmt.Errorf("failed to set DialContext in storageos client: %v", err) - } - u.api = api - return nil -} - -// Creates a new StorageOS volume and makes it available as a device within -// /var/lib/storageos/volumes. -func (u *storageosUtil) CreateVolume(p *storageosProvisioner) (*storageosVolume, error) { - - klog.V(4).Infof("creating StorageOS volume %q with namespace %q", p.volName, p.volNamespace) - - if err := u.NewAPI(p.apiCfg); err != nil { - return nil, err - } - - if p.labels == nil { - p.labels = make(map[string]string) - } - opts := storageostypes.VolumeCreateOptions{ - Name: p.volName, - Size: p.sizeGB, - Description: p.description, - Pool: p.pool, - FSType: p.fsType, - Namespace: p.volNamespace, - Labels: p.labels, - } - - vol, err := u.api.VolumeCreate(opts) - if err != nil { - // don't log error details from client calls in events - klog.V(4).Infof("volume create failed for volume %q (%v)", opts.Name, err) - return nil, errors.New("volume create failed: see kube-controller-manager.log for details") - } - return &storageosVolume{ - ID: vol.ID, - Name: vol.Name, - Namespace: vol.Namespace, - Description: vol.Description, - Pool: vol.Pool, - FSType: vol.FSType, - SizeGB: int(vol.Size), - Labels: vol.Labels, - }, nil -} - -// Attach exposes a volume on the host as a block device. StorageOS uses a -// global namespace, so if the volume exists, it should already be available as -// a device within `/var/lib/storageos/volumes/`. -// -// Depending on the host capabilities, the device may be either a block device -// or a file device. Block devices can be used directly, but file devices must -// be made accessible as a block device before using. -func (u *storageosUtil) AttachVolume(b *storageosMounter) (string, error) { - - klog.V(4).Infof("attaching StorageOS volume %q with namespace %q", b.volName, b.volNamespace) - - if err := u.NewAPI(b.apiCfg); err != nil { - return "", err - } - - // Get the node's device path from the API, falling back to the default if - // not set on the node. - if b.deviceDir == "" { - b.deviceDir = u.DeviceDir(b) - } - - vol, err := u.api.Volume(b.volNamespace, b.volName) - if err != nil { - klog.Warningf("volume retrieve failed for volume %q with namespace %q (%v)", b.volName, b.volNamespace, err) - return "", err - } - - srcPath := filepath.Join(b.deviceDir, vol.ID) - dt, err := pathDeviceType(srcPath) - if err != nil { - klog.Warningf("volume source path %q for volume %q not ready (%v)", srcPath, b.volName, err) - return "", err - } - - switch dt { - case modeBlock: - return srcPath, nil - case modeFile: - return attachFileDevice(srcPath, b.exec) - default: - return "", fmt.Errorf(ErrDeviceNotSupported) - } -} - -// Detach detaches a volume from the host. This is only needed when NBD is not -// enabled and loop devices are used to simulate a block device. -func (u *storageosUtil) DetachVolume(b *storageosUnmounter, devicePath string) error { - - klog.V(4).Infof("detaching StorageOS volume %q with namespace %q", b.volName, b.volNamespace) - - if !isLoopDevice(devicePath) { - return nil - } - if _, err := os.Stat(devicePath); os.IsNotExist(err) { - return nil - } - return removeLoopDevice(devicePath, b.exec) -} - -// AttachDevice attaches the volume device to the host at a given mount path. -func (u *storageosUtil) AttachDevice(b *storageosMounter, deviceMountPath string) error { - - klog.V(4).Infof("attaching StorageOS device for volume %q with namespace %q", b.volName, b.volNamespace) - - if err := u.NewAPI(b.apiCfg); err != nil { - return err - } - - opts := storageostypes.VolumeMountOptions{ - Name: b.volName, - Namespace: b.volNamespace, - FsType: b.fsType, - Mountpoint: deviceMountPath, - Client: b.plugin.host.GetHostName(), - } - if err := u.api.VolumeMount(opts); err != nil { - return err - } - return nil -} - -// Mount mounts the volume on the host. -func (u *storageosUtil) MountVolume(b *storageosMounter, mntDevice, deviceMountPath string) error { - - klog.V(4).Infof("mounting StorageOS volume %q with namespace %q", b.volName, b.volNamespace) - - notMnt, err := b.mounter.IsLikelyNotMountPoint(deviceMountPath) - if err != nil { - if os.IsNotExist(err) { - if err = os.MkdirAll(deviceMountPath, 0750); err != nil { - return err - } - notMnt = true - } else { - return err - } - } - if err = os.MkdirAll(deviceMountPath, 0750); err != nil { - klog.Errorf("mkdir failed on disk %s (%v)", deviceMountPath, err) - return err - } - options := []string{} - if b.readOnly { - options = append(options, "ro") - } - if notMnt { - err = b.diskMounter.FormatAndMount(mntDevice, deviceMountPath, b.fsType, options) - if err != nil { - os.Remove(deviceMountPath) - return err - } - } - return err -} - -// Unmount removes the mount reference from the volume allowing it to be -// re-mounted elsewhere. -func (u *storageosUtil) UnmountVolume(b *storageosUnmounter) error { - - klog.V(4).Infof("clearing StorageOS mount reference for volume %q with namespace %q", b.volName, b.volNamespace) - - if err := u.NewAPI(b.apiCfg); err != nil { - // We can't always get the config we need, so allow the unmount to - // succeed even if we can't remove the mount reference from the API. - klog.Warningf("could not remove mount reference in the StorageOS API as no credentials available to the unmount operation") - return nil - } - - opts := storageostypes.VolumeUnmountOptions{ - Name: b.volName, - Namespace: b.volNamespace, - Client: b.plugin.host.GetHostName(), - } - return u.api.VolumeUnmount(opts) -} - -// Deletes a StorageOS volume. Assumes it has already been unmounted and detached. -func (u *storageosUtil) DeleteVolume(d *storageosDeleter) error { - if err := u.NewAPI(d.apiCfg); err != nil { - return err - } - - // Deletes must be forced as the StorageOS API will not normally delete - // volumes that it thinks are mounted. We can't be sure the unmount was - // registered via the API so we trust k8s to only delete volumes it knows - // are unmounted. - opts := storageostypes.DeleteOptions{ - Name: d.volName, - Namespace: d.volNamespace, - Force: true, - } - if err := u.api.VolumeDelete(opts); err != nil { - // don't log error details from client calls in events - klog.V(4).Infof("volume deleted failed for volume %q in namespace %q: %v", d.volName, d.volNamespace, err) - return errors.New("volume delete failed: see kube-controller-manager.log for details") - } - return nil -} - -// Get the node's device path from the API, falling back to the default if not -// specified. -func (u *storageosUtil) DeviceDir(b *storageosMounter) string { - - ctrl, err := u.api.Node(b.plugin.host.GetHostName()) - if err != nil { - klog.Warningf("node device path lookup failed: %v", err) - return defaultDeviceDir - } - if ctrl == nil || ctrl.DeviceDir == "" { - klog.Warningf("node device path not set, using default: %s", defaultDeviceDir) - return defaultDeviceDir - } - return ctrl.DeviceDir -} - -// pathMode returns the FileMode for a path. -func pathDeviceType(path string) (deviceType, error) { - fi, err := os.Stat(path) - if err != nil { - return modeUnsupported, err - } - switch mode := fi.Mode(); { - case mode&os.ModeDevice != 0: - return modeBlock, nil - case mode.IsRegular(): - return modeFile, nil - default: - return modeUnsupported, nil - } -} - -// attachFileDevice takes a path to a regular file and makes it available as an -// attached block device. -func attachFileDevice(path string, exec utilexec.Interface) (string, error) { - blockDevicePath, err := getLoopDevice(path) - if err != nil && err.Error() != ErrDeviceNotFound { - return "", err - } - - // If no existing loop device for the path, create one - if blockDevicePath == "" { - klog.V(4).Infof("Creating device for path: %s", path) - blockDevicePath, err = makeLoopDevice(path, exec) - if err != nil { - return "", err - } - } - return blockDevicePath, nil -} - -// Returns the full path to the loop device associated with the given path. -func getLoopDevice(path string) (string, error) { - _, err := os.Stat(path) - if os.IsNotExist(err) { - return "", errors.New(ErrNotAvailable) - } - if err != nil { - return "", fmt.Errorf("not attachable: %v", err) - } - - return getLoopDeviceFromSysfs(path) -} - -func makeLoopDevice(path string, exec utilexec.Interface) (string, error) { - args := []string{"-f", "-P", path} - out, err := exec.Command(losetupPath, args...).CombinedOutput() - if err != nil { - klog.V(2).Infof("Failed device create command for path %s: %v %s", path, err, out) - return "", err - } - - return getLoopDeviceFromSysfs(path) -} - -func removeLoopDevice(device string, exec utilexec.Interface) error { - args := []string{"-d", device} - out, err := exec.Command(losetupPath, args...).CombinedOutput() - if err != nil { - if !strings.Contains(string(out), "No such device or address") { - return err - } - } - return nil -} - -func isLoopDevice(device string) bool { - return strings.HasPrefix(device, "/dev/loop") -} - -// getLoopDeviceFromSysfs finds the backing file for a loop -// device from sysfs via "/sys/block/loop*/loop/backing_file". -func getLoopDeviceFromSysfs(path string) (string, error) { - // If the file is a symlink. - realPath, err := filepath.EvalSymlinks(path) - if err != nil { - return "", errors.New(ErrDeviceNotFound) - } - - devices, err := filepath.Glob("/sys/block/loop*") - if err != nil { - return "", errors.New(ErrDeviceNotFound) - } - - for _, device := range devices { - backingFile := fmt.Sprintf("%s/loop/backing_file", device) - - // The contents of this file is the absolute path of "path". - data, err := ioutil.ReadFile(backingFile) - if err != nil { - continue - } - - // Return the first match. - backingFilePath := strings.TrimSpace(string(data)) - if backingFilePath == path || backingFilePath == realPath { - return fmt.Sprintf("/dev/%s", filepath.Base(device)), nil - } - } - - return "", errors.New(ErrDeviceNotFound) -} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/atomic_writer.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/atomic_writer.go index 805647ab7ed..94428f6ffc8 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/atomic_writer.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/atomic_writer.go @@ -42,9 +42,9 @@ const ( // // Note: // -// 1. AtomicWriter reserves the set of pathnames starting with `..`. -// 2. AtomicWriter offers no concurrency guarantees and must be synchronized -// by the caller. +// 1. AtomicWriter reserves the set of pathnames starting with `..`. +// 2. AtomicWriter offers no concurrency guarantees and must be synchronized +// by the caller. // // The visible files in this volume are symlinks to files in the writer's data // directory. Actual files are stored in a hidden timestamped directory which @@ -89,36 +89,40 @@ const ( // // The Write algorithm is: // -// 1. The payload is validated; if the payload is invalid, the function returns -// 2.  The current timestamped directory is detected by reading the data directory -// symlink -// 3. The old version of the volume is walked to determine whether any -// portion of the payload was deleted and is still present on disk. -// 4. The data in the current timestamped directory is compared to the projected -// data to determine if an update is required. -// 5.  A new timestamped dir is created -// 6. The payload is written to the new timestamped directory -// 7.  A symlink to the new timestamped directory ..data_tmp is created that will -// become the new data directory -// 8.  The new data directory symlink is renamed to the data directory; rename is atomic -// 9.  Symlinks and directory for new user-visible files are created (if needed). +// 1. The payload is validated; if the payload is invalid, the function returns +// 2.  The current timestamped directory is detected by reading the data directory +// symlink // -// For example, consider the files: -// /podName -// /user/labels -// /k8s/annotations +// 3. The old version of the volume is walked to determine whether any +// portion of the payload was deleted and is still present on disk. // -// The user visible files are symbolic links into the internal data directory: -// /podName -> ..data/podName -// /usr -> ..data/usr -// /k8s -> ..data/k8s +// 4. The data in the current timestamped directory is compared to the projected +// data to determine if an update is required. +// 5.  A new timestamped dir is created +// +// 6. The payload is written to the new timestamped directory +// 7.  A symlink to the new timestamped directory ..data_tmp is created that will +// become the new data directory +// 8.  The new data directory symlink is renamed to the data directory; rename is atomic +// 9.  Symlinks and directory for new user-visible files are created (if needed). +// +// For example, consider the files: +// /podName +// /user/labels +// /k8s/annotations +// +// The user visible files are symbolic links into the internal data directory: +// /podName -> ..data/podName +// /usr -> ..data/usr +// /k8s -> ..data/k8s +// +// The data directory itself is a link to a timestamped directory with +// the real data: +// /..data -> ..2016_02_01_15_04_05.12345678/ +// NOTE(claudiub): We need to create these symlinks AFTER we've finished creating and +// linking everything else. On Windows, if a target does not exist, the created symlink +// will not work properly if the target ends up being a directory. // -// The data directory itself is a link to a timestamped directory with -// the real data: -// /..data -> ..2016_02_01_15_04_05.12345678/ -// NOTE(claudiub): We need to create these symlinks AFTER we've finished creating and -// linking everything else. On Windows, if a target does not exist, the created symlink -// will not work properly if the target ends up being a directory. // 10. Old paths are removed from the user-visible portion of the target directory // 11.  The previous timestamped directory is removed, if it exists func (w *AtomicWriter) Write(payload map[string]FileProjection) error { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util.go index 1d0791ee05c..4b2fc88546b 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util.go @@ -16,7 +16,7 @@ limitations under the License. package util -//DeviceUtil is a util for common device methods +// DeviceUtil is a util for common device methods type DeviceUtil interface { FindMultipathDeviceForDevice(disk string) string FindSlaveDevicesOnMultipath(disk string) []string @@ -28,7 +28,7 @@ type deviceHandler struct { getIo IoUtil } -//NewDeviceHandler Create a new IoHandler implementation +// NewDeviceHandler Create a new IoHandler implementation func NewDeviceHandler(io IoUtil) DeviceUtil { return &deviceHandler{getIo: io} } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util_linux.go index ae7078b23ab..4fc3291dbee 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/device_util_linux.go @@ -22,6 +22,7 @@ package util import ( "errors" "fmt" + "net" "os" "path/filepath" "strconv" @@ -89,10 +90,11 @@ func (handler *deviceHandler) FindSlaveDevicesOnMultipath(dm string) []string { // GetISCSIPortalHostMapForTarget given a target iqn, find all the scsi hosts logged into // that target. Returns a map of iSCSI portals (string) to SCSI host numbers (integers). -// For example: { -// "192.168.30.7:3260": 2, -// "192.168.30.8:3260": 3, -// } +// +// For example: { +// "192.168.30.7:3260": 2, +// "192.168.30.8:3260": 3, +// } func (handler *deviceHandler) GetISCSIPortalHostMapForTarget(targetIqn string) (map[string]int, error) { portalHostMap := make(map[string]int) io := handler.getIo @@ -199,12 +201,11 @@ func (handler *deviceHandler) GetISCSIPortalHostMapForTarget(targetIqn string) ( // Add entries to the map for both the current and persistent portals // pointing to the SCSI host for those connections - portal := strings.TrimSpace(string(addr)) + ":" + - strings.TrimSpace(string(port)) + // JoinHostPort will add `[]` around IPv6 addresses. + portal := net.JoinHostPort(strings.TrimSpace(string(addr)), strings.TrimSpace(string(port))) portalHostMap[portal] = hostNumber - persistentPortal := strings.TrimSpace(string(persistentAddr)) + ":" + - strings.TrimSpace(string(persistentPort)) + persistentPortal := net.JoinHostPort(strings.TrimSpace(string(persistentAddr)), strings.TrimSpace(string(persistentPort))) portalHostMap[persistentPortal] = hostNumber } } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_unsupported.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_unsupported.go index c54a7b23f91..0c25c352426 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/hostutil/hostutil_unsupported.go @@ -93,7 +93,7 @@ func (hu *HostUtil) GetSELinuxSupport(pathname string) (bool, error) { return false, errUnsupported } -//GetMode always returns an error on unsupported platforms +// GetMode always returns an error on unsupported platforms func (hu *HostUtil) GetMode(pathname string) (os.FileMode, error) { return 0, errUnsupported } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/io_util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/io_util.go index aff453e196c..8d65a6e48d2 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/io_util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/io_util.go @@ -32,7 +32,7 @@ type IoUtil interface { type osIOHandler struct{} -//NewIOHandler Create a new IoHandler implementation +// NewIOHandler Create a new IoHandler implementation func NewIOHandler() IoUtil { return &osIOHandler{} } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/metrics.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/metrics.go index e80008f7464..af37abba808 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/metrics.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/metrics.go @@ -23,10 +23,8 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - utilfeature "k8s.io/apiserver/pkg/util/feature" "k8s.io/component-base/metrics" "k8s.io/component-base/metrics/legacyregistry" - "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util/types" ) @@ -120,7 +118,7 @@ func FSGroupCompleteHook(plugin volume.VolumePlugin, spec *volume.Spec) func(typ // CSI plugin drivers. func GetFullQualifiedPluginNameForVolume(pluginName string, spec *volume.Spec) string { if spec != nil { - if spec.Volume != nil && spec.Volume.CSI != nil && utilfeature.DefaultFeatureGate.Enabled(features.CSIInlineVolume) { + if spec.Volume != nil && spec.Volume.CSI != nil { return fmt.Sprintf("%s:%s", pluginName, spec.Volume.CSI.Driver) } if spec.PersistentVolume != nil && spec.PersistentVolume.Spec.CSI != nil { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go index 3cbc4e61a57..d16e287be68 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_executor.go @@ -166,7 +166,7 @@ func NewOperationExecutor( } } -// MarkVolumeOpts is an struct to pass arguments to MountVolume functions +// MarkVolumeOpts is a struct to pass arguments to MountVolume functions type MarkVolumeOpts struct { PodName volumetypes.UniquePodName PodUID types.UID @@ -177,6 +177,7 @@ type MarkVolumeOpts struct { VolumeGidVolume string VolumeSpec *volume.Spec VolumeMountState VolumeMountState + SELinuxMountContext string } // ActualStateOfWorldMounterUpdater defines a set of operations updating the actual @@ -192,10 +193,10 @@ type ActualStateOfWorldMounterUpdater interface { MarkVolumeMountAsUncertain(markVolumeOpts MarkVolumeOpts) error // Marks the specified volume as having been globally mounted. - MarkDeviceAsMounted(volumeName v1.UniqueVolumeName, devicePath, deviceMountPath string) error + MarkDeviceAsMounted(volumeName v1.UniqueVolumeName, devicePath, deviceMountPath, seLinuxMountContext string) error // MarkDeviceAsUncertain marks device state in global mount path as uncertain - MarkDeviceAsUncertain(volumeName v1.UniqueVolumeName, devicePath, deviceMountPath string) error + MarkDeviceAsUncertain(volumeName v1.UniqueVolumeName, devicePath, deviceMountPath, seLinuxMountContext string) error // Marks the specified volume as having its global mount unmounted. MarkDeviceAsUnmounted(volumeName v1.UniqueVolumeName) error @@ -215,6 +216,23 @@ type ActualStateOfWorldMounterUpdater interface { // MarkForInUseExpansionError marks the volume to have in-use error during expansion. // volume expansion must not be retried for this volume MarkForInUseExpansionError(volumeName v1.UniqueVolumeName) + + // CheckAndMarkVolumeAsUncertainViaReconstruction only adds volume to actual state of the world + // if volume was not already there. This avoid overwriting in any previously stored + // state. It returns error if there was an error adding the volume to ASOW. + // It returns true, if this operation resulted in volume being added to ASOW + // otherwise it returns false. + CheckAndMarkVolumeAsUncertainViaReconstruction(opts MarkVolumeOpts) (bool, error) + + // CheckAndMarkDeviceUncertainViaReconstruction only adds device to actual state of the world + // if device was not already there. This avoids overwriting in any previously stored + // state. We only supply deviceMountPath because devicePath is already determined from + // VerifyControllerAttachedVolume function. + CheckAndMarkDeviceUncertainViaReconstruction(volumeName v1.UniqueVolumeName, deviceMountPath string) bool + + // IsVolumeReconstructed returns true if volume currently added to actual state of the world + // was found during reconstruction. + IsVolumeReconstructed(volumeName v1.UniqueVolumeName, podName volumetypes.UniquePodName) bool } // ActualStateOfWorldAttacherUpdater defines a set of operations updating the @@ -429,6 +447,9 @@ type VolumeToMount struct { // PersistentVolumeSize stores desired size of the volume. // usually this is the size if pv.Spec.Capacity PersistentVolumeSize resource.Quantity + + // SELinux label that should be used to mount. + SELinuxLabel string } // DeviceMountState represents device mount state in a global path. @@ -535,6 +556,8 @@ type AttachedVolume struct { // PluginName is the Unescaped Qualified name of the volume plugin used to // attach and mount this volume. PluginName string + + SELinuxMountContext string } // GenerateMsgDetailed returns detailed msgs for attached volumes @@ -711,6 +734,10 @@ type MountedVolume struct { // DeviceMountPath contains the path on the node where the device should // be mounted after it is attached. DeviceMountPath string + + // SELinuxMountContext is value of mount option 'mount -o context=XYZ'. + // If empty, no such mount option was used. + SELinuxMountContext string } // GenerateMsgDetailed returns detailed msgs for mounted volumes diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go index 636aa4176d8..80f22a0108c 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/operationexecutor/operation_generator.go @@ -645,7 +645,7 @@ func (og *operationGenerator) GenerateMountVolumeFunc( volumeToMount.VolumeSpec, devicePath, deviceMountPath, - volume.DeviceMounterArgs{FsGroup: fsGroup}, + volume.DeviceMounterArgs{FsGroup: fsGroup, SELinuxLabel: volumeToMount.SELinuxLabel}, ) if err != nil { og.checkForFailedMount(volumeToMount, err) @@ -659,7 +659,7 @@ func (og *operationGenerator) GenerateMountVolumeFunc( // Update actual state of world to reflect volume is globally mounted markDeviceMountedErr := actualStateOfWorld.MarkDeviceAsMounted( - volumeToMount.VolumeName, devicePath, deviceMountPath) + volumeToMount.VolumeName, devicePath, deviceMountPath, volumeToMount.SELinuxLabel) if markDeviceMountedErr != nil { // On failure, return error. Caller will log and retry. eventErr, detailedErr := volumeToMount.GenerateError("MountVolume.MarkDeviceAsMounted failed", markDeviceMountedErr) @@ -669,12 +669,38 @@ func (og *operationGenerator) GenerateMountVolumeFunc( resizeOptions.DeviceStagePath = deviceMountPath } + // No mapping is needed for hostUID/hostGID if userns is not used. + // Therefore, just assign the container users to host UID/GID. + hostUID := util.FsUserFrom(volumeToMount.Pod) + hostGID := fsGroup + if utilfeature.DefaultFeatureGate.Enabled(features.UserNamespacesStatelessPodsSupport) { + // Without userns hostUID/GID was the user inside the container too. + containerUID, containerGID := hostUID, hostGID + + kvh, ok := og.GetVolumePluginMgr().Host.(volume.KubeletVolumeHost) + if !ok { + msg := fmt.Errorf("volume host does not implement KubeletVolumeHost interface") + eventErr, detailedErr := volumeToMount.GenerateError("MountVolume type assertion error", msg) + return volumetypes.NewOperationContext(eventErr, detailedErr, migrated) + } + + // This pod _might_ use userns. GetHostIDsForPod() will give us the right + // UID/GID to use for this pod (no matter if the pod uses userns or not). + hostUID, hostGID, err = kvh.GetHostIDsForPod(volumeToMount.Pod, containerUID, containerGID) + if err != nil { + msg := fmt.Sprintf("MountVolume.GetHostIDsForPod failed to find host ID in user namespace (UID: %v GID: %v)", containerUID, containerGID) + eventErr, detailedErr := volumeToMount.GenerateError(msg, err) + return volumetypes.NewOperationContext(eventErr, detailedErr, migrated) + } + } + // Execute mount mountErr := volumeMounter.SetUp(volume.MounterArgs{ - FsUser: util.FsUserFrom(volumeToMount.Pod), - FsGroup: fsGroup, + FsUser: hostUID, + FsGroup: hostGID, DesiredSize: volumeToMount.DesiredSizeLimit, FSGroupChangePolicy: fsGroupChangePolicy, + SELinuxLabel: volumeToMount.SELinuxLabel, }) // Update actual state of world markOpts := MarkVolumeOpts{ @@ -686,6 +712,7 @@ func (og *operationGenerator) GenerateMountVolumeFunc( VolumeGidVolume: volumeToMount.VolumeGidValue, VolumeSpec: volumeToMount.VolumeSpec, VolumeMountState: VolumeMounted, + SELinuxMountContext: volumeToMount.SELinuxLabel, } if mountErr != nil { og.checkForFailedMount(volumeToMount, mountErr) @@ -774,7 +801,7 @@ func (og *operationGenerator) markDeviceErrorState(volumeToMount VolumeToMount, actualStateOfWorld.GetDeviceMountState(volumeToMount.VolumeName) == DeviceNotMounted { // only devices which are not mounted can be marked as uncertain. We do not want to mark a device // which was previously marked as mounted here as uncertain. - markDeviceUncertainError := actualStateOfWorld.MarkDeviceAsUncertain(volumeToMount.VolumeName, devicePath, deviceMountPath) + markDeviceUncertainError := actualStateOfWorld.MarkDeviceAsUncertain(volumeToMount.VolumeName, devicePath, deviceMountPath, volumeToMount.SELinuxLabel) if markDeviceUncertainError != nil { klog.Errorf(volumeToMount.GenerateErrorDetailed("MountDevice.MarkDeviceAsUncertain failed", markDeviceUncertainError).Error()) } @@ -785,11 +812,19 @@ func (og *operationGenerator) markDeviceErrorState(volumeToMount VolumeToMount, func (og *operationGenerator) markVolumeErrorState(volumeToMount VolumeToMount, markOpts MarkVolumeOpts, mountError error, actualStateOfWorld ActualStateOfWorldMounterUpdater) { if volumetypes.IsOperationFinishedError(mountError) && actualStateOfWorld.GetVolumeMountState(volumeToMount.VolumeName, markOpts.PodName) == VolumeMountUncertain { + // if volume was previously reconstructed we are not going to change its state as unmounted even + // if mount operation fails. + if actualStateOfWorld.IsVolumeReconstructed(volumeToMount.VolumeName, volumeToMount.PodName) { + klog.V(3).InfoS("MountVolume.markVolumeErrorState leaving volume uncertain", "volumeName", volumeToMount.VolumeName) + return + } + t := actualStateOfWorld.MarkVolumeAsUnmounted(volumeToMount.PodName, volumeToMount.VolumeName) if t != nil { klog.Errorf(volumeToMount.GenerateErrorDetailed("MountVolume.MarkVolumeAsUnmounted failed", t).Error()) } return + } if volumetypes.IsUncertainProgressError(mountError) && @@ -799,7 +834,6 @@ func (og *operationGenerator) markVolumeErrorState(volumeToMount VolumeToMount, klog.Errorf(volumeToMount.GenerateErrorDetailed("MountVolume.MarkVolumeMountAsUncertain failed", t).Error()) } } - } func (og *operationGenerator) GenerateUnmountVolumeFunc( @@ -935,7 +969,7 @@ func (og *operationGenerator) GenerateUnmountDeviceFunc( unmountDeviceErr := volumeDeviceUnmounter.UnmountDevice(deviceMountPath) if unmountDeviceErr != nil { // Mark the device as uncertain, so MountDevice is called for new pods. UnmountDevice may be already in progress. - markDeviceUncertainErr := actualStateOfWorld.MarkDeviceAsUncertain(deviceToDetach.VolumeName, deviceToDetach.DevicePath, deviceMountPath) + markDeviceUncertainErr := actualStateOfWorld.MarkDeviceAsUncertain(deviceToDetach.VolumeName, deviceToDetach.DevicePath, deviceMountPath, deviceToDetach.SELinuxMountContext) if markDeviceUncertainErr != nil { // There is nothing else we can do. Hope that UnmountDevice will be re-tried shortly. klog.Errorf(deviceToDetach.GenerateErrorDetailed("UnmountDevice.MarkDeviceAsUncertain failed", markDeviceUncertainErr).Error()) @@ -956,7 +990,7 @@ func (og *operationGenerator) GenerateUnmountDeviceFunc( // The device is still in use elsewhere. Caller will log and retry. if deviceOpened { // Mark the device as uncertain, so MountDevice is called for new pods. - markDeviceUncertainErr := actualStateOfWorld.MarkDeviceAsUncertain(deviceToDetach.VolumeName, deviceToDetach.DevicePath, deviceMountPath) + markDeviceUncertainErr := actualStateOfWorld.MarkDeviceAsUncertain(deviceToDetach.VolumeName, deviceToDetach.DevicePath, deviceMountPath, deviceToDetach.SELinuxMountContext) if markDeviceUncertainErr != nil { // There is nothing else we can do. Hope that UnmountDevice will be re-tried shortly. klog.Errorf(deviceToDetach.GenerateErrorDetailed("UnmountDevice.MarkDeviceAsUncertain failed", markDeviceUncertainErr).Error()) @@ -1094,7 +1128,7 @@ func (og *operationGenerator) GenerateMapVolumeFunc( // Update actual state of world to reflect volume is globally mounted markedDevicePath := devicePath markDeviceMappedErr := actualStateOfWorld.MarkDeviceAsMounted( - volumeToMount.VolumeName, markedDevicePath, globalMapPath) + volumeToMount.VolumeName, markedDevicePath, globalMapPath, "") if markDeviceMappedErr != nil { // On failure, return error. Caller will log and retry. eventErr, detailedErr := volumeToMount.GenerateError("MapVolume.MarkDeviceAsMounted failed", markDeviceMappedErr) @@ -1163,7 +1197,7 @@ func (og *operationGenerator) GenerateMapVolumeFunc( // TODO: This can be improved after #82492 is merged and ASW has state. if markedDevicePath != devicePath { markDeviceMappedErr := actualStateOfWorld.MarkDeviceAsMounted( - volumeToMount.VolumeName, devicePath, globalMapPath) + volumeToMount.VolumeName, devicePath, globalMapPath, "") if markDeviceMappedErr != nil { // On failure, return error. Caller will log and retry. eventErr, detailedErr := volumeToMount.GenerateError("MapVolume.MarkDeviceAsMounted failed", markDeviceMappedErr) @@ -1391,7 +1425,7 @@ func (og *operationGenerator) GenerateUnmapDeviceFunc( // cases below. The volume is marked as fully un-mapped at the end of this function, when everything // succeeds. markDeviceUncertainErr := actualStateOfWorld.MarkDeviceAsUncertain( - deviceToDetach.VolumeName, deviceToDetach.DevicePath, globalMapPath) + deviceToDetach.VolumeName, deviceToDetach.DevicePath, globalMapPath, "" /* seLinuxMountContext */) if markDeviceUncertainErr != nil { // On failure, return error. Caller will log and retry. eventErr, detailedErr := deviceToDetach.GenerateError("UnmapDevice.MarkDeviceAsUncertain failed", markDeviceUncertainErr) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/recycler_client.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/recycler_client.go index 2afbc9a53ac..b7197dbdfe4 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/recycler_client.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/recyclerclient/recycler_client.go @@ -43,9 +43,9 @@ type RecycleEventRecorder func(eventtype, message string) // function deletes it as it is not able to judge if it is an old recycler // or user has forged a fake recycler to block Kubernetes from recycling.// // -// pod - the pod designed by a volume plugin to recycle the volume. pod.Name -// will be overwritten with unique name based on PV.Name. -// client - kube client for API operations. +// pod - the pod designed by a volume plugin to recycle the volume. pod.Name +// will be overwritten with unique name based on PV.Name. +// client - kube client for API operations. func RecycleVolumeByWatchingPodUntilCompletion(pvName string, pod *v1.Pod, kubeClient clientset.Interface, recorder RecycleEventRecorder) error { return internalRecycleVolumeByWatchingPodUntilCompletion(pvName, pod, newRecyclerClient(kubeClient, recorder)) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/selinux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/selinux.go new file mode 100644 index 00000000000..22854734f30 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/selinux.go @@ -0,0 +1,198 @@ +/* +Copyright 2022 The Kubernetes 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 util + +import ( + "fmt" + + "github.com/opencontainers/selinux/go-selinux" + "github.com/opencontainers/selinux/go-selinux/label" + v1 "k8s.io/api/core/v1" + utilfeature "k8s.io/apiserver/pkg/util/feature" + v1helper "k8s.io/kubernetes/pkg/apis/core/v1/helper" + "k8s.io/kubernetes/pkg/features" + "k8s.io/kubernetes/pkg/volume" +) + +// SELinuxLabelTranslator translates v1.SELinuxOptions of a process to SELinux file label. +type SELinuxLabelTranslator interface { + // SELinuxOptionsToFileLabel returns SELinux file label for given SELinuxOptions + // of a container process. + // When Role, User or Type are empty, they're read from the system defaults. + // It returns "" and no error on platforms that do not have SELinux enabled + // or don't support SELinux at all. + SELinuxOptionsToFileLabel(opts *v1.SELinuxOptions) (string, error) + + // SELinuxEnabled returns true when the OS has enabled SELinux support. + SELinuxEnabled() bool +} + +// Real implementation of the interface. +// On Linux with SELinux enabled it translates. Otherwise it always returns an empty string and no error. +type translator struct{} + +var _ SELinuxLabelTranslator = &translator{} + +// NewSELinuxLabelTranslator returns new SELinuxLabelTranslator for the platform. +func NewSELinuxLabelTranslator() SELinuxLabelTranslator { + return &translator{} +} + +// SELinuxOptionsToFileLabel returns SELinux file label for given SELinuxOptions +// of a container process. +// When Role, User or Type are empty, they're read from the system defaults. +// It returns "" and no error on platforms that do not have SELinux enabled +// or don't support SELinux at all. +func (l *translator) SELinuxOptionsToFileLabel(opts *v1.SELinuxOptions) (string, error) { + if opts == nil { + return "", nil + } + + args := contextOptions(opts) + if len(args) == 0 { + return "", nil + } + + processLabel, fileLabel, err := label.InitLabels(args) + if err != nil { + // In theory, this should be unreachable. InitLabels can fail only when args contain an unknown option, + // and all options returned by contextOptions are known. + return "", err + } + // InitLabels() may allocate a new unique SELinux label in kubelet memory. The label is *not* allocated + // in the container runtime. Clear it to avoid memory problems. + // ReleaseLabel on non-allocated label is NOOP. + selinux.ReleaseLabel(processLabel) + + return fileLabel, nil +} + +// Convert SELinuxOptions to []string accepted by label.InitLabels +func contextOptions(opts *v1.SELinuxOptions) []string { + if opts == nil { + return nil + } + args := make([]string, 0, 3) + if opts.User != "" { + args = append(args, "user:"+opts.User) + } + if opts.Role != "" { + args = append(args, "role:"+opts.Role) + } + if opts.Type != "" { + args = append(args, "type:"+opts.Type) + } + if opts.Level != "" { + args = append(args, "level:"+opts.Level) + } + return args +} + +func (l *translator) SELinuxEnabled() bool { + return selinux.GetEnabled() +} + +// Fake implementation of the interface for unit tests. +type fakeTranslator struct{} + +var _ SELinuxLabelTranslator = &fakeTranslator{} + +// NewFakeSELinuxLabelTranslator returns a fake translator for unit tests. +// It imitates a real translator on platforms that do not have SELinux enabled +// or don't support SELinux at all. +func NewFakeSELinuxLabelTranslator() SELinuxLabelTranslator { + return &fakeTranslator{} +} + +// SELinuxOptionsToFileLabel returns SELinux file label for given options. +func (l *fakeTranslator) SELinuxOptionsToFileLabel(opts *v1.SELinuxOptions) (string, error) { + if opts == nil { + return "", nil + } + // Fill empty values from "system defaults" (taken from Fedora Linux). + user := opts.User + if user == "" { + user = "system_u" + } + + role := opts.Role + if role == "" { + role = "object_r" + } + + // opts is context of the *process* to run in a container. Translate + // process type "container_t" to file label type "container_file_t". + // (The rest of the context is the same for processes and files). + fileType := opts.Type + if fileType == "" || fileType == "container_t" { + fileType = "container_file_t" + } + + level := opts.Level + if level == "" { + // If empty, level is allocated randomly. + level = "s0:c998,c999" + } + + ctx := fmt.Sprintf("%s:%s:%s:%s", user, role, fileType, level) + return ctx, nil +} + +func (l *fakeTranslator) SELinuxEnabled() bool { + return true +} + +// SupportsSELinuxContextMount checks if the given volumeSpec supports with mount -o context +func SupportsSELinuxContextMount(volumeSpec *volume.Spec, volumePluginMgr *volume.VolumePluginMgr) (bool, error) { + plugin, _ := volumePluginMgr.FindPluginBySpec(volumeSpec) + if plugin != nil { + return plugin.SupportsSELinuxContextMount(volumeSpec) + } + + return false, nil +} + +// VolumeSupportsSELinuxMount returns true if given volume access mode can support mount with SELinux mount options. +func VolumeSupportsSELinuxMount(volumeSpec *volume.Spec) bool { + // Right now, SELinux mount is supported only for ReadWriteOncePod volumes. + if !utilfeature.DefaultFeatureGate.Enabled(features.ReadWriteOncePod) { + return false + } + if !utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + return false + } + if volumeSpec.PersistentVolume == nil { + return false + } + if len(volumeSpec.PersistentVolume.Spec.AccessModes) != 1 { + return false + } + if !v1helper.ContainsAccessMode(volumeSpec.PersistentVolume.Spec.AccessModes, v1.ReadWriteOncePod) { + return false + } + return true +} + +// AddSELinuxMountOption adds -o context="XYZ" mount option to a given list +func AddSELinuxMountOption(options []string, seLinuxContext string) []string { + if !utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + return options + } + // Use double quotes to support a comma "," in the SELinux context string. + // For example: dirsync,context="system_u:object_r:container_file_t:s0:c15,c25",noatime + return append(options, fmt.Sprintf("context=%q", seLinuxContext)) +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/storageclass.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/storageclass.go new file mode 100644 index 00000000000..5350bc8e963 --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/storageclass.go @@ -0,0 +1,76 @@ +/* +Copyright 2022 The Kubernetes 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 util + +import ( + "fmt" + storagev1 "k8s.io/api/storage/v1" + "k8s.io/apimachinery/pkg/api/errors" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" + storagev1listers "k8s.io/client-go/listers/storage/v1" + "k8s.io/klog/v2" +) + +const ( + // isDefaultStorageClassAnnotation represents a StorageClass annotation that + // marks a class as the default StorageClass + IsDefaultStorageClassAnnotation = "storageclass.kubernetes.io/is-default-class" + + // betaIsDefaultStorageClassAnnotation is the beta version of IsDefaultStorageClassAnnotation. + // TODO: remove Beta when no longer used + BetaIsDefaultStorageClassAnnotation = "storageclass.beta.kubernetes.io/is-default-class" +) + +// GetDefaultClass returns the default StorageClass from the store, or nil. +func GetDefaultClass(lister storagev1listers.StorageClassLister) (*storagev1.StorageClass, error) { + list, err := lister.List(labels.Everything()) + if err != nil { + return nil, err + } + + defaultClasses := []*storagev1.StorageClass{} + for _, class := range list { + if IsDefaultAnnotation(class.ObjectMeta) { + defaultClasses = append(defaultClasses, class) + klog.V(4).Infof("GetDefaultClass added: %s", class.Name) + } + } + + if len(defaultClasses) == 0 { + return nil, nil + } + if len(defaultClasses) > 1 { + klog.V(4).Infof("GetDefaultClass %d defaults found", len(defaultClasses)) + return nil, errors.NewInternalError(fmt.Errorf("%d default StorageClasses were found", len(defaultClasses))) + } + return defaultClasses[0], nil +} + +// IsDefaultAnnotation returns a boolean if the default storage class +// annotation is set +// TODO: remove Beta when no longer needed +func IsDefaultAnnotation(obj metav1.ObjectMeta) bool { + if obj.Annotations[IsDefaultStorageClassAnnotation] == "true" { + return true + } + if obj.Annotations[BetaIsDefaultStorageClassAnnotation] == "true" { + return true + } + + return false +} diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go index 4a505be3b3c..583939bdc4a 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/subpath/subpath_linux.go @@ -566,18 +566,23 @@ func doSafeOpen(pathname string, base string) (int, error) { // Follow the segments one by one using openat() to make // sure the user cannot change already existing directories into symlinks. for _, seg := range segments { + var deviceStat unix.Stat_t + currentPath = filepath.Join(currentPath, seg) if !mount.PathWithinBase(currentPath, base) { return -1, fmt.Errorf("path %s is outside of allowed base %s", currentPath, base) } + // Trigger auto mount if it's an auto-mounted directory, ignore error if not a directory. + // Notice the trailing slash is mandatory, see "automount" in openat(2) and open_by_handle_at(2). + unix.Fstatat(parentFD, seg+"/", &deviceStat, unix.AT_SYMLINK_NOFOLLOW) + klog.V(5).Infof("Opening path %s", currentPath) childFD, err = syscall.Openat(parentFD, seg, openFDFlags|unix.O_CLOEXEC, 0) if err != nil { return -1, fmt.Errorf("cannot open %s: %s", currentPath, err) } - var deviceStat unix.Stat_t err := unix.Fstat(childFD, &deviceStat) if err != nil { return -1, fmt.Errorf("error running fstat on %s with %v", currentPath, err) diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go index f772bd5869f..e7df9538f32 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/util.go @@ -35,11 +35,13 @@ import ( utypes "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/wait" + utilfeature "k8s.io/apiserver/pkg/util/feature" clientset "k8s.io/client-go/kubernetes" storagehelpers "k8s.io/component-helpers/storage/volume" "k8s.io/klog/v2" "k8s.io/kubernetes/pkg/api/legacyscheme" podutil "k8s.io/kubernetes/pkg/api/v1/pod" + "k8s.io/kubernetes/pkg/features" "k8s.io/kubernetes/pkg/securitycontext" "k8s.io/kubernetes/pkg/volume" "k8s.io/kubernetes/pkg/volume/util/types" @@ -572,15 +574,29 @@ func IsLocalEphemeralVolume(volume v1.Volume) bool { } // GetPodVolumeNames returns names of volumes that are used in a pod, -// either as filesystem mount or raw block device. -func GetPodVolumeNames(pod *v1.Pod) (mounts sets.String, devices sets.String) { +// either as filesystem mount or raw block device, together with list +// of all SELinux contexts of all containers that use the volumes. +func GetPodVolumeNames(pod *v1.Pod) (mounts sets.String, devices sets.String, seLinuxContainerContexts map[string][]*v1.SELinuxOptions) { mounts = sets.NewString() devices = sets.NewString() + seLinuxContainerContexts = make(map[string][]*v1.SELinuxOptions) podutil.VisitContainers(&pod.Spec, podutil.AllFeatureEnabledContainers(), func(container *v1.Container, containerType podutil.ContainerType) bool { + var seLinuxOptions *v1.SELinuxOptions + if utilfeature.DefaultFeatureGate.Enabled(features.SELinuxMountReadWriteOncePod) { + effectiveContainerSecurity := securitycontext.DetermineEffectiveSecurityContext(pod, container) + if effectiveContainerSecurity != nil { + // No DeepCopy, SELinuxOptions is already a copy of Pod's or container's SELinuxOptions + seLinuxOptions = effectiveContainerSecurity.SELinuxOptions + } + } + if container.VolumeMounts != nil { for _, mount := range container.VolumeMounts { mounts.Insert(mount.Name) + if seLinuxOptions != nil { + seLinuxContainerContexts[mount.Name] = append(seLinuxContainerContexts[mount.Name], seLinuxOptions.DeepCopy()) + } } } if container.VolumeDevices != nil { @@ -631,7 +647,7 @@ func HasMountRefs(mountPath string, mountRefs []string) bool { return false } -//WriteVolumeCache flush disk data given the spcified mount path +// WriteVolumeCache flush disk data given the spcified mount path func WriteVolumeCache(deviceMountPath string, exec utilexec.Interface) error { // If runtime os is windows, execute Write-VolumeCache powershell command on the disk if runtime.GOOS == "windows" { diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/volume_path_handler_linux.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/volume_path_handler_linux.go index b0031961a3b..aae1b39acb1 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/volume_path_handler_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/util/volumepathhandler/volume_path_handler_linux.go @@ -152,7 +152,8 @@ func getLoopDeviceFromSysfs(path string) (string, error) { // corresponding to map path symlink, and then return global map path with pod uuid. // (See pkg/volume/volume.go for details on a global map path and a pod device map path.) // ex. mapPath symlink: pods/{podUid}}/{DefaultKubeletVolumeDevicesDirName}/{escapeQualifiedPluginName}/{volumeName} -> /dev/sdX -// globalMapPath/{pod uuid} bind mount: plugins/kubernetes.io/{PluginName}/{DefaultKubeletVolumeDevicesDirName}/{volumePluginDependentPath}/{pod uuid} -> /dev/sdX +// +// globalMapPath/{pod uuid} bind mount: plugins/kubernetes.io/{PluginName}/{DefaultKubeletVolumeDevicesDirName}/{volumePluginDependentPath}/{pod uuid} -> /dev/sdX func (v VolumePathHandler) FindGlobalMapPathUUIDFromPod(pluginDir, mapPath string, podUID types.UID) (string, error) { var globalMapPathUUID string // Find symbolic link named pod uuid under plugin dir @@ -211,7 +212,8 @@ func compareBindMountAndSymlinks(global, pod string) (bool, error) { // getDeviceMajorMinor returns major/minor number for the path with below format: // major:minor (in hex) // ex) -// fc:10 +// +// fc:10 func getDeviceMajorMinor(path string) (string, error) { var stat unix.Stat_t diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/volume.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/volume.go index f46f7d4876a..75c2d906151 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/volume.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/volume.go @@ -129,6 +129,7 @@ type MounterArgs struct { FsGroup *int64 FSGroupChangePolicy *v1.PodFSGroupChangePolicy DesiredSize *resource.Quantity + SELinuxLabel string } // Mounter interface provides methods to set up/mount the volume. @@ -262,7 +263,8 @@ type Attacher interface { // DeviceMounterArgs provides auxiliary, optional arguments to DeviceMounter. type DeviceMounterArgs struct { - FsGroup *int64 + FsGroup *int64 + SELinuxLabel string } // DeviceMounter can mount a block volume to a global path. diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/vsphere_volume.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/vsphere_volume.go index 904f3688669..15072690373 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/vsphere_volume.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/pkg/volume/vsphere_volume/vsphere_volume.go @@ -104,6 +104,10 @@ func (plugin *vsphereVolumePlugin) SupportsBulkVolumeVerification() bool { return true } +func (plugin *vsphereVolumePlugin) SupportsSELinuxContextMount(spec *volume.Spec) (bool, error) { + return false, nil +} + func (plugin *vsphereVolumePlugin) NewMounter(spec *volume.Spec, pod *v1.Pod, _ volume.VolumeOptions) (volume.Mounter, error) { return plugin.newMounterInternal(spec, pod.UID, &VsphereDiskUtil{}, plugin.host.GetMounter(plugin.GetPluginName())) } diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/admission_webhook.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/admission_webhook.go index dbec166d2e7..5114e9951ac 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/admission_webhook.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/admission_webhook.go @@ -86,7 +86,8 @@ func AdmissionWebhookHandler(t *testing.T, admit func(*v1beta1.AdmissionReview) } // LocalhostCert was generated from crypto/tls/generate_cert.go with the following command: -// go run generate_cert.go --rsa-bits 2048 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h +// +// go run generate_cert.go --rsa-bits 2048 --host 127.0.0.1,::1,example.com --ca --start-date "Jan 1 00:00:00 1970" --duration=1000000h var LocalhostCert = []byte(`-----BEGIN CERTIFICATE----- MIIDGDCCAgCgAwIBAgIQTKCKn99d5HhQVCLln2Q+eTANBgkqhkiG9w0BAQsFADAS MRAwDgYDVQQKEwdBY21lIENvMCAXDTcwMDEwMTAwMDAwMFoYDzIwODQwMTI5MTYw diff --git a/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/runners.go b/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/runners.go index d3d37944f7c..45c269014a7 100644 --- a/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/runners.go +++ b/cluster-autoscaler/vendor/k8s.io/kubernetes/test/utils/runners.go @@ -1319,7 +1319,7 @@ func MakePodSpec() v1.PodSpec { return v1.PodSpec{ Containers: []v1.Container{{ Name: "pause", - Image: "registry.k8s.io/pause:3.7", + Image: "registry.k8s.io/pause:3.8", Ports: []v1.ContainerPort{{ContainerPort: 80}}, Resources: v1.ResourceRequirements{ Limits: v1.ResourceList{ @@ -1741,7 +1741,7 @@ type DaemonConfig struct { func (config *DaemonConfig) Run() error { if config.Image == "" { - config.Image = "registry.k8s.io/pause:3.7" + config.Image = "registry.k8s.io/pause:3.8" } nameLabel := map[string]string{ "name": config.Name + "-daemon", diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws.go index 541f741cfd1..93ed45472b9 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws.go @@ -175,7 +175,9 @@ const ServiceAnnotationLoadBalancerSSLNegotiationPolicy = "service.beta.kubernet // ServiceAnnotationLoadBalancerBEProtocol is the annotation used on the service // to specify the protocol spoken by the backend (pod) behind a listener. // If `http` (default) or `https`, an HTTPS listener that terminates the -// connection and parses headers is created. +// +// connection and parses headers is created. +// // If set to `ssl` or `tcp`, a "raw" SSL listener is used. // If set to `http` and `aws-load-balancer-ssl-cert` is not used then // a HTTP listener is used. @@ -238,9 +240,9 @@ const ServiceAnnotationLoadBalancerTargetNodeLabels = "service.beta.kubernetes.i // subnetID or subnetName from different AZs // By default, the controller will auto-discover the subnets. If there are multiple subnets per AZ, auto-discovery // will break the tie in the following order - -// 1. prefer the subnet with the correct role tag. kubernetes.io/role/elb for public and kubernetes.io/role/internal-elb for private access -// 2. prefer the subnet with the cluster tag kubernetes.io/cluster/ -// 3. prefer the subnet that is first in lexicographic order +// 1. prefer the subnet with the correct role tag. kubernetes.io/role/elb for public and kubernetes.io/role/internal-elb for private access +// 2. prefer the subnet with the cluster tag kubernetes.io/cluster/ +// 3. prefer the subnet that is first in lexicographic order const ServiceAnnotationLoadBalancerSubnets = "service.beta.kubernetes.io/aws-load-balancer-subnets" // Event key when a volume is stuck on attaching state when being attached to a volume @@ -1207,7 +1209,7 @@ func init() { creds = credentials.NewChainCredentials( []credentials.Provider{ &credentials.EnvProvider{}, - provider, + assumeRoleProvider(provider), }) } @@ -3751,8 +3753,8 @@ func (c *Cloud) buildELBSecurityGroupList(serviceName types.NamespacedName, load // sortELBSecurityGroupList returns a list of sorted securityGroupIDs based on the original order // from buildELBSecurityGroupList. The logic is: -// * securityGroups specified by ServiceAnnotationLoadBalancerSecurityGroups appears first in order -// * securityGroups specified by ServiceAnnotationLoadBalancerExtraSecurityGroups appears last in order +// - securityGroups specified by ServiceAnnotationLoadBalancerSecurityGroups appears first in order +// - securityGroups specified by ServiceAnnotationLoadBalancerExtraSecurityGroups appears last in order func (c *Cloud) sortELBSecurityGroupList(securityGroupIDs []string, annotations map[string]string) { annotatedSGList := getSGListFromAnnotation(annotations[ServiceAnnotationLoadBalancerSecurityGroups]) annotatedExtraSGList := getSGListFromAnnotation(annotations[ServiceAnnotationLoadBalancerExtraSecurityGroups]) diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_assumerole_provider.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_assumerole_provider.go new file mode 100644 index 00000000000..1f96538eadf --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_assumerole_provider.go @@ -0,0 +1,62 @@ +/* +Copyright 2014 The Kubernetes 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 aws + +import ( + "sync" + "time" + + "github.com/aws/aws-sdk-go/aws/credentials" +) + +const ( + invalidateCredsCacheAfter = 1 * time.Second +) + +// assumeRoleProviderWithRateLimiting makes sure we call the underlying provider only +// once after `invalidateCredsCacheAfter` period +type assumeRoleProviderWithRateLimiting struct { + provider credentials.Provider + invalidateCredsCacheAfter time.Duration + sync.RWMutex + lastError error + lastValue credentials.Value + lastRetrieveTime time.Time +} + +func assumeRoleProvider(provider credentials.Provider) credentials.Provider { + return &assumeRoleProviderWithRateLimiting{provider: provider, + invalidateCredsCacheAfter: invalidateCredsCacheAfter} +} + +func (l *assumeRoleProviderWithRateLimiting) Retrieve() (credentials.Value, error) { + l.Lock() + defer l.Unlock() + if time.Since(l.lastRetrieveTime) < l.invalidateCredsCacheAfter { + if l.lastError != nil { + return credentials.Value{}, l.lastError + } + return l.lastValue, nil + } + l.lastValue, l.lastError = l.provider.Retrieve() + l.lastRetrieveTime = time.Now() + return l.lastValue, l.lastError +} + +func (l *assumeRoleProviderWithRateLimiting) IsExpired() bool { + return l.provider.IsExpired() +} diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_loadbalancer.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_loadbalancer.go index f295bca546f..6cca19b105d 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_loadbalancer.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/aws_loadbalancer.go @@ -1240,7 +1240,8 @@ func (c *Cloud) ensureLoadBalancer(namespacedName types.NamespacedName, loadBala // syncElbListeners computes a plan to reconcile the desired vs actual state of the listeners on an ELB // NOTE: there exists an O(nlgn) implementation for this function. However, as the default limit of -// listeners per elb is 100, this implementation is reduced from O(m*n) => O(n). +// +// listeners per elb is 100, this implementation is reduced from O(m*n) => O(n). func syncElbListeners(loadBalancerName string, listeners []*elb.Listener, listenerDescriptions []*elb.ListenerDescription) ([]*elb.Listener, []*int64) { foundSet := make(map[int]bool) removals := []*int64{} diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/instances.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/instances.go index 7768deb3bb2..c2970382759 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/instances.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/instances.go @@ -50,9 +50,9 @@ func (i InstanceID) awsString() *string { // KubernetesInstanceID represents the id for an instance in the kubernetes API; // the following form -// * aws://// -// * aws://// -// * +// - aws://// +// - aws://// +// - type KubernetesInstanceID string // MapToAWSInstanceID extracts the InstanceID from the KubernetesInstanceID diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/volumes.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/volumes.go index b106bd63f18..48fde1187fa 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/volumes.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/aws/volumes.go @@ -43,9 +43,9 @@ func (i EBSVolumeID) awsString() *string { // KubernetesVolumeID represents the id for a volume in the kubernetes API; // a few forms are recognized: -// * aws:/// -// * aws:/// -// * +// - aws:/// +// - aws:/// +// - type KubernetesVolumeID string // DiskInfo returns aws disk information in easy to use manner diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_blobDiskController.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_blobDiskController.go index dd967b932f9..905f71c6c7b 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_blobDiskController.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_blobDiskController.go @@ -57,7 +57,7 @@ type storageAccountState struct { defaultContainerCreated bool } -//BlobDiskController : blob disk controller struct +// BlobDiskController : blob disk controller struct type BlobDiskController struct { common *controllerCommon accounts map[string]*storageAccountState @@ -227,7 +227,7 @@ func (c *BlobDiskController) deleteVhdBlob(accountName, accountKey, blobName str return blob.Delete(nil) } -//CreateBlobDisk : create a blob disk in a node +// CreateBlobDisk : create a blob disk in a node func (c *BlobDiskController) CreateBlobDisk(dataDiskName string, storageAccountType storage.SkuName, sizeGB int) (string, error) { klog.V(4).Infof("azureDisk - creating blob data disk named:%s on StorageAccountType:%s", dataDiskName, storageAccountType) @@ -253,7 +253,7 @@ func (c *BlobDiskController) CreateBlobDisk(dataDiskName string, storageAccountT return diskURI, nil } -//DeleteBlobDisk : delete a blob disk from a node +// DeleteBlobDisk : delete a blob disk from a node func (c *BlobDiskController) DeleteBlobDisk(diskURI string) error { storageAccountName, vhdName, err := diskNameAndSANameFromURI(diskURI) if err != nil { @@ -602,7 +602,7 @@ func (c *BlobDiskController) findSANameForDisk(storageAccountType storage.SkuNam return SAName, nil } -//Gets storage account exist, provisionStatus, Error if any +// Gets storage account exist, provisionStatus, Error if any func (c *BlobDiskController) getStorageAccountState(storageAccountName string) (bool, storage.ProvisioningState, error) { ctx, cancel := getContextWithCancel() defer cancel() diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_instances.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_instances.go index f02fc4e2e0f..4af0f0dd4b4 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_instances.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_instances.go @@ -369,7 +369,8 @@ func (az *Cloud) InstanceTypeByProviderID(ctx context.Context, providerID string // InstanceType returns the type of the specified instance. // Note that if the instance does not exist or is no longer running, we must return ("", cloudprovider.InstanceNotFound) // (Implementer Note): This is used by kubelet. Kubelet will label the node. Real log from kubelet: -// Adding node label from cloud provider: beta.kubernetes.io/instance-type=[value] +// +// Adding node label from cloud provider: beta.kubernetes.io/instance-type=[value] func (az *Cloud) InstanceType(ctx context.Context, name types.NodeName) (string, error) { // Returns "" for unmanaged nodes because azure cloud provider couldn't fetch information for them. unmanaged, err := az.IsNodeUnmanaged(string(name)) diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_loadbalancer.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_loadbalancer.go index b63194f8e9e..13246826f69 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_loadbalancer.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_loadbalancer.go @@ -190,7 +190,9 @@ func (az *Cloud) EnsureLoadBalancer(ctx context.Context, clusterName string, ser lbStatus, err := az.getServiceLoadBalancerStatus(service, lb) if err != nil { klog.Errorf("getServiceLoadBalancerStatus(%s) failed: %v", serviceName, err) - return nil, err + if err != cloudprovider.InstanceNotFound { + return nil, err + } } var serviceIP *string @@ -2142,7 +2144,7 @@ func shouldReleaseExistingOwnedPublicIP(existingPip *network.PublicIPAddress, lb (ipTagRequest.IPTagsRequestedByAnnotation && !areIPTagsEquivalent(currentIPTags, ipTagRequest.IPTags)) } -// ensurePIPTagged ensures the public IP of the service is tagged as configured +// ensurePIPTagged ensures the public IP of the service is tagged as configured func (az *Cloud) ensurePIPTagged(service *v1.Service, pip *network.PublicIPAddress) bool { configTags := parseTags(az.Tags) annotationTags := make(map[string]*string) diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_managedDiskController.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_managedDiskController.go index e7eb3d59e65..9eb6ba2acc8 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_managedDiskController.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_managedDiskController.go @@ -46,7 +46,7 @@ const ( diskEncryptionSetIDFormat = "/subscriptions/{subs-id}/resourceGroups/{rg-name}/providers/Microsoft.Compute/diskEncryptionSets/{diskEncryptionSet-name}" ) -//ManagedDiskController : managed disk controller struct +// ManagedDiskController : managed disk controller struct type ManagedDiskController struct { common *controllerCommon } @@ -81,7 +81,7 @@ type ManagedDiskOptions struct { MaxShares int32 } -//CreateManagedDisk : create managed disk +// CreateManagedDisk : create managed disk func (c *ManagedDiskController) CreateManagedDisk(options *ManagedDiskOptions) (string, error) { var err error klog.V(4).Infof("azureDisk - creating new managed Name:%s StorageAccountType:%s Size:%v", options.DiskName, options.StorageAccountType, options.SizeGB) @@ -212,7 +212,7 @@ func (c *ManagedDiskController) CreateManagedDisk(options *ManagedDiskOptions) ( return diskID, nil } -//DeleteManagedDisk : delete managed disk +// DeleteManagedDisk : delete managed disk func (c *ManagedDiskController) DeleteManagedDisk(diskURI string) error { diskName := path.Base(diskURI) resourceGroup, err := getResourceGroupFromDiskURI(diskURI) diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_routes.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_routes.go index d15d2659bba..900160ff4cc 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_routes.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_routes.go @@ -74,8 +74,9 @@ func (op *delayedRouteOperation) wait() error { // delayedRouteUpdater defines a delayed route updater, which batches all the // route updating operations within "interval" period. // Example usage: -// op, err := updater.addRouteOperation(routeOperationAdd, route) -// err = op.wait() +// +// op, err := updater.addRouteOperation(routeOperationAdd, route) +// err = op.wait() type delayedRouteUpdater struct { az *Cloud interval time.Duration @@ -553,7 +554,7 @@ func findFirstIPByFamily(ips []string, v6 bool) (string, error) { return "", fmt.Errorf("no match found matching the ipfamily requested") } -//strips : . / +// strips : . / func cidrtoRfc1035(cidr string) string { cidr = strings.ReplaceAll(cidr, ":", "") cidr = strings.ReplaceAll(cidr, ".", "") @@ -561,7 +562,7 @@ func cidrtoRfc1035(cidr string) string { return cidr } -// ensureRouteTableTagged ensures the route table is tagged as configured +// ensureRouteTableTagged ensures the route table is tagged as configured func (az *Cloud) ensureRouteTableTagged(rt *network.RouteTable) (map[string]*string, bool) { if az.Tags == "" { return nil, false diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_standard.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_standard.go index 28ddfe0409b..f0f0c5fad70 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_standard.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_standard.go @@ -271,8 +271,10 @@ func isInternalLoadBalancer(lb *network.LoadBalancer) bool { // SingleStack -v4 (pre v1.16) => BackendPool name == clusterName // SingleStack -v6 => BackendPool name == -IPv6 (all cluster bootstrap uses this name) // DualStack -// => IPv4 BackendPool name == clusterName -// => IPv6 BackendPool name == -IPv6 +// +// => IPv4 BackendPool name == clusterName +// => IPv6 BackendPool name == -IPv6 +// // This means: // clusters moving from IPv4 to dualstack will require no changes // clusters moving from IPv6 to dualstack will require no changes as the IPv4 backend pool will created with @@ -425,7 +427,7 @@ outer: var polyTable = crc32.MakeTable(crc32.Koopman) -//MakeCRC32 : convert string to CRC32 format +// MakeCRC32 : convert string to CRC32 format func MakeCRC32(str string) string { crc := crc32.New(polyTable) crc.Write([]byte(str)) @@ -821,7 +823,9 @@ func (as *availabilitySet) EnsureHostInPool(service *v1.Service, nodeName types. } klog.Errorf("error: az.EnsureHostInPool(%s), az.VMSet.GetPrimaryInterface.Get(%s, %s), err=%v", nodeName, vmName, vmSetName, err) - return "", "", "", nil, err + if err != cloudprovider.InstanceNotFound { + return "", "", "", nil, err + } } if nic.ProvisioningState != nil && *nic.ProvisioningState == nicFailedState { diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_vmss.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_vmss.go index c6b18407467..cdc43a6ee9b 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_vmss.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_vmss.go @@ -359,10 +359,10 @@ func (ss *scaleSet) GetInstanceIDByNodeName(name string) (string, error) { // GetNodeNameByProviderID gets the node name by provider ID. // providerID example: -// 1. vmas providerID: azure:///subscriptions/subsid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/aks-nodepool1-27053986-0 -// 2. vmss providerID: -// azure:///subscriptions/subsid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/aks-agentpool-22126781-vmss/virtualMachines/1 -// /subscriptions/subsid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/aks-agentpool-22126781-vmss/virtualMachines/k8s-agentpool-36841236-vmss_1 +// 1. vmas providerID: azure:///subscriptions/subsid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachines/aks-nodepool1-27053986-0 +// 2. vmss providerID: +// azure:///subscriptions/subsid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/aks-agentpool-22126781-vmss/virtualMachines/1 +// /subscriptions/subsid/resourceGroups/rg/providers/Microsoft.Compute/virtualMachineScaleSets/aks-agentpool-22126781-vmss/virtualMachines/k8s-agentpool-36841236-vmss_1 func (ss *scaleSet) GetNodeNameByProviderID(providerID string) (types.NodeName, error) { // NodeName is not part of providerID for vmss instances. scaleSetName, err := extractScaleSetNameByProviderID(providerID) diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_wrap.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_wrap.go index 915051529f9..9ebdec2d065 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_wrap.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/azure/azure_wrap.go @@ -62,9 +62,9 @@ func checkResourceExistsFromError(err *retry.Error) (bool, *retry.Error) { return false, err } -/// getVirtualMachine calls 'VirtualMachinesClient.Get' with a timed cache -/// The service side has throttling control that delays responses if there are multiple requests onto certain vm -/// resource request in short period. +// / getVirtualMachine calls 'VirtualMachinesClient.Get' with a timed cache +// / The service side has throttling control that delays responses if there are multiple requests onto certain vm +// / resource request in short period. func (az *Cloud) getVirtualMachine(nodeName types.NodeName, crt azcache.AzureCacheReadType) (vm compute.VirtualMachine, err error) { vmName := string(nodeName) cachedVM, err := az.vmCache.Get(vmName, crt) diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external.go index f82b748e904..b95ad4166c0 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_external.go @@ -23,6 +23,7 @@ import ( "context" "fmt" "net/http" + "reflect" "strconv" "strings" @@ -902,6 +903,13 @@ func (g *Cloud) firewallNeedsUpdate(name, serviceName, ipAddress string, ports [ if !sourceRanges.Equal(actualSourceRanges) { return true, true, nil } + + destinationRanges := []string{ipAddress} + + if !reflect.DeepEqual(destinationRanges, fw.DestinationRanges) { + return true, true, nil + } + return true, false, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal.go index ae8ef31ed1f..179c2567e0e 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_loadbalancer_internal.go @@ -776,6 +776,7 @@ func firewallRuleEqual(a, b *compute.Firewall) bool { a.Allowed[0].IPProtocol == b.Allowed[0].IPProtocol && equalStringSets(a.Allowed[0].Ports, b.Allowed[0].Ports) && equalStringSets(a.SourceRanges, b.SourceRanges) && + equalStringSets(a.DestinationRanges, b.DestinationRanges) && equalStringSets(a.TargetTags, b.TargetTags) } diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_util.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_util.go index 0a2729dd88c..035ff25bbeb 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_util.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/gce/gce_util.go @@ -78,6 +78,7 @@ func fakeGCECloud(vals TestClusterValues) (*Cloud, error) { mockGCE.MockRegionBackendServices.UpdateHook = mock.UpdateRegionBackendServiceHook mockGCE.MockHealthChecks.UpdateHook = mock.UpdateHealthCheckHook mockGCE.MockFirewalls.UpdateHook = mock.UpdateFirewallHook + mockGCE.MockFirewalls.PatchHook = mock.UpdateFirewallHook keyGA := meta.GlobalKey("key-ga") mockGCE.MockZones.Objects[*keyGA] = &cloud.MockZonesObj{ @@ -372,7 +373,7 @@ func removeFinalizer(service *v1.Service, kubeClient v1core.CoreV1Interface, key return err } -//hasFinalizer returns if the given service has the specified key in its list of finalizers. +// hasFinalizer returns if the given service has the specified key in its list of finalizers. func hasFinalizer(service *v1.Service, key string) bool { for _, finalizer := range service.ObjectMeta.Finalizers { if finalizer == key { diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/openstack/openstack_loadbalancer.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/openstack/openstack_loadbalancer.go index 8a29760d92d..c735fbc0929 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/openstack/openstack_loadbalancer.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/openstack/openstack_loadbalancer.go @@ -522,7 +522,7 @@ func nodeAddressForLB(node *v1.Node) (string, error) { return "", ErrNoAddressFound } -//getStringFromServiceAnnotation searches a given v1.Service for a specific annotationKey and either returns the annotation's value or a specified defaultSetting +// getStringFromServiceAnnotation searches a given v1.Service for a specific annotationKey and either returns the annotation's value or a specified defaultSetting func getStringFromServiceAnnotation(service *v1.Service, annotationKey string, defaultSetting string) string { klog.V(4).Infof("getStringFromServiceAnnotation(%v, %v, %v)", service, annotationKey, defaultSetting) if annotationValue, ok := service.Annotations[annotationKey]; ok { diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go index 65586e0ea50..d7b826b7d7c 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/nodemanager.go @@ -437,9 +437,9 @@ func (nodeInfo *NodeInfo) VM() *vclib.VirtualMachine { // vcConnect connects to vCenter with existing credentials // If credentials are invalid: -// 1. It will fetch credentials from credentialManager -// 2. Update the credentials -// 3. Connects again to vCenter with fetched credentials +// 1. It will fetch credentials from credentialManager +// 2. Update the credentials +// 3. Connects again to vCenter with fetched credentials func (nm *NodeManager) vcConnect(ctx context.Context, vsphereInstance *VSphereInstance) error { err := vsphereInstance.conn.Connect(ctx) if err == nil { diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/connection.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/connection.go index 44d8f4a9dcd..761d85b75eb 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/connection.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/connection.go @@ -29,9 +29,8 @@ import ( "github.com/vmware/govmomi/sts" "github.com/vmware/govmomi/vim25" "github.com/vmware/govmomi/vim25/soap" - "k8s.io/klog/v2" - "k8s.io/client-go/pkg/version" + "k8s.io/klog/v2" ) // VSphereConnection contains information for connecting to vCenter @@ -218,16 +217,12 @@ func (connection *VSphereConnection) NewClient(ctx context.Context) (*vim25.Clie connection.RoundTripperCount = RoundTripperDefaultCount } client.RoundTripper = vim25.Retry(client.RoundTripper, vim25.TemporaryNetworkError(int(connection.RoundTripperCount))) - vcdeprecated, err := isvCenterDeprecated(client.ServiceContent.About.Version, client.ServiceContent.About.ApiVersion) + vcNotSupported, err := isvCenterNotSupported(client.ServiceContent.About.Version, client.ServiceContent.About.ApiVersion) if err != nil { - klog.Errorf("failed to check if vCenter version:%v and api version: %s is deprecated. Error: %v", client.ServiceContent.About.Version, client.ServiceContent.About.ApiVersion, err) - } - if vcdeprecated { - // After this deprecation, vSphere 6.5 support period is extended to October 15, 2022 as - // https://blogs.vmware.com/vsphere/2021/03/announcing-limited-extension-of-vmware-vsphere-6-5-general-support-period.html - // In addition, the external vSphere cloud provider does not support vSphere 6.5. - // Please keep vSphere 6.5 support til the period. - klog.Warningf("vCenter is deprecated. version: %s, api verson: %s Please consider upgrading vCenter and ESXi servers to 6.7u3 or higher", client.ServiceContent.About.Version, client.ServiceContent.About.ApiVersion) + klog.Errorf("failed to check if vCenter version:%v and api version: %s is supported or not. Error: %v", client.ServiceContent.About.Version, client.ServiceContent.About.ApiVersion, err) + } + if vcNotSupported { + klog.Warningf("vCenter version (version: %q, api verson: %q) is not supported for CSI Migration. Please consider upgrading vCenter and ESXi servers to 7.0u2 or higher for migrating vSphere volumes to CSI.", client.ServiceContent.About.Version, client.ServiceContent.About.ApiVersion) } return client, nil } diff --git a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/utils.go b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/utils.go index 3662248d596..da468b3c86b 100644 --- a/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/utils.go +++ b/cluster-autoscaler/vendor/k8s.io/legacy-cloud-providers/vsphere/vclib/utils.go @@ -146,7 +146,7 @@ func GetPathFromVMDiskPath(vmDiskPath string) string { return datastorePathObj.Path } -//GetDatastorePathObjFromVMDiskPath gets the datastorePathObj from VM disk path. +// GetDatastorePathObjFromVMDiskPath gets the datastorePathObj from VM disk path. func GetDatastorePathObjFromVMDiskPath(vmDiskPath string) (*object.DatastorePath, error) { datastorePathObj := new(object.DatastorePath) isSuccess := datastorePathObj.FromString(vmDiskPath) @@ -157,7 +157,7 @@ func GetDatastorePathObjFromVMDiskPath(vmDiskPath string) (*object.DatastorePath return datastorePathObj, nil } -//IsValidUUID checks if the string is a valid UUID. +// IsValidUUID checks if the string is a valid UUID. func IsValidUUID(uuid string) bool { r := regexp.MustCompile("^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$") return r.MatchString(uuid) @@ -201,8 +201,9 @@ func VerifyVolumePathsForVMDevices(vmDevices object.VirtualDeviceList, volPaths } -// isvCenterDeprecated takes vCenter version and vCenter API version as input and return true if vCenter is deprecated -func isvCenterDeprecated(vCenterVersion string, vCenterAPIVersion string) (bool, error) { +// isvCenterNotSupported takes vCenter version and vCenter API version as input and return true if vCenter is no longer +// supported by VMware for in-tree vSphere volume plugin +func isvCenterNotSupported(vCenterVersion string, vCenterAPIVersion string) (bool, error) { var vcversion, vcapiversion, minvcversion vcVersion var err error err = vcversion.parse(vCenterVersion) diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/fake_mounter.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/fake_mounter.go index 55ea5e2986b..5a570159883 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/fake_mounter.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/fake_mounter.go @@ -32,8 +32,9 @@ type FakeMounter struct { MountCheckErrors map[string]error // Some tests run things in parallel, make sure the mounter does not produce // any golang's DATA RACE warnings. - mutex sync.Mutex - UnmountFunc UnmountFunc + mutex sync.Mutex + UnmountFunc UnmountFunc + skipMountPointCheck bool } // UnmountFunc is a function callback to be executed during the Unmount() call. @@ -64,6 +65,11 @@ func NewFakeMounter(mps []MountPoint) *FakeMounter { } } +func (f *FakeMounter) WithSkipMountPointCheck() *FakeMounter { + f.skipMountPointCheck = true + return f +} + // ResetLog clears all the log entries in FakeMounter func (f *FakeMounter) ResetLog() { f.mutex.Lock() @@ -212,6 +218,18 @@ func (f *FakeMounter) IsLikelyNotMountPoint(file string) (bool, error) { return true, nil } +func (f *FakeMounter) canSafelySkipMountPointCheck() bool { + return f.skipMountPointCheck +} + +func (f *FakeMounter) IsMountPoint(file string) (bool, error) { + notMnt, err := f.IsLikelyNotMountPoint(file) + if err != nil { + return false, err + } + return !notMnt, nil +} + // GetMountRefs finds all mount references to the path, returns a // list of paths. func (f *FakeMounter) GetMountRefs(pathname string) ([]string, error) { diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/go.mod b/cluster-autoscaler/vendor/k8s.io/mount-utils/go.mod deleted file mode 100644 index 9c18b0be4f7..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/go.mod +++ /dev/null @@ -1,21 +0,0 @@ -// This is a generated file. Do not edit directly. - -module k8s.io/mount-utils - -go 1.18 - -require ( - github.com/stretchr/testify v1.7.0 - k8s.io/klog/v2 v2.70.0 - k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 -) - -require ( - github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect - gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect -) diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/go.sum b/cluster-autoscaler/vendor/k8s.io/mount-utils/go.sum deleted file mode 100644 index e1a87670da4..00000000000 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/go.sum +++ /dev/null @@ -1,33 +0,0 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -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/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -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/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.70.0 h1:GMmmjoFOrNepPN0ZeGCzvD2Gh5IKRwdFx8W5PBxVTQU= -k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 h1:HNSDgDCrr/6Ly3WEGKZftiE7IY19Vz2GdbOCyI4qqhc= -k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount.go index a882fcc7399..c42836f06c4 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount.go @@ -21,7 +21,6 @@ package mount import ( "fmt" - "os" "path/filepath" "strings" "time" @@ -66,6 +65,18 @@ type Interface interface { // care about such situations, this is a faster alternative to calling List() // and scanning that output. IsLikelyNotMountPoint(file string) (bool, error) + // canSafelySkipMountPointCheck indicates whether this mounter returns errors on + // operations for targets that are not mount points. If this returns true, no such + // errors will be returned. + canSafelySkipMountPointCheck() bool + // IsMountPoint determines if a directory is a mountpoint. + // It should return ErrNotExist when the directory does not exist. + // IsMountPoint is more expensive than IsLikelyNotMountPoint. + // IsMountPoint detects bind mounts in linux. + // IsMountPoint may enumerate all the mountpoints using List() and + // the list of mountpoints may be large, then it uses + // isMountPointMatch to evaluate whether the directory is a mountpoint. + IsMountPoint(file string) (bool, error) // GetMountRefs finds all mount references to pathname, returning a slice of // paths. Pathname can be a mountpoint path or a normal directory // (for bind mount). On Linux, pathname is excluded from the slice. @@ -187,6 +198,24 @@ func getMountRefsByDev(mounter Interface, mountPath string) ([]string, error) { return refs, nil } +// IsNotMountPoint determines if a directory is a mountpoint. +// It should return ErrNotExist when the directory does not exist. +// IsNotMountPoint is more expensive than IsLikelyNotMountPoint +// and depends on IsMountPoint. +// +// If an error occurs, it returns true (assuming it is not a mountpoint) +// when ErrNotExist is returned for callers similar to IsLikelyNotMountPoint. +// +// Deprecated: This function is kept to keep changes backward compatible with +// previous library version. Callers should prefer mounter.IsMountPoint. +func IsNotMountPoint(mounter Interface, file string) (bool, error) { + isMnt, err := mounter.IsMountPoint(file) + if err != nil { + return true, err + } + return !isMnt, nil +} + // GetDeviceNameFromMount given a mnt point, find the device from /proc/mounts // returns the device name, reference count, and error code. func GetDeviceNameFromMount(mounter Interface, mountPath string) (string, int, error) { @@ -220,56 +249,11 @@ func GetDeviceNameFromMount(mounter Interface, mountPath string) (string, int, e return device, refCount, nil } -// IsNotMountPoint determines if a directory is a mountpoint. -// It should return ErrNotExist when the directory does not exist. -// IsNotMountPoint is more expensive than IsLikelyNotMountPoint. -// IsNotMountPoint detects bind mounts in linux. -// IsNotMountPoint enumerates all the mountpoints using List() and -// the list of mountpoints may be large, then it uses -// isMountPointMatch to evaluate whether the directory is a mountpoint. -func IsNotMountPoint(mounter Interface, file string) (bool, error) { - // IsLikelyNotMountPoint provides a quick check - // to determine whether file IS A mountpoint. - notMnt, notMntErr := mounter.IsLikelyNotMountPoint(file) - if notMntErr != nil && os.IsPermission(notMntErr) { - // We were not allowed to do the simple stat() check, e.g. on NFS with - // root_squash. Fall back to /proc/mounts check below. - notMnt = true - notMntErr = nil - } - if notMntErr != nil { - return notMnt, notMntErr - } - // identified as mountpoint, so return this fact. - if notMnt == false { - return notMnt, nil - } - - // Resolve any symlinks in file, kernel would do the same and use the resolved path in /proc/mounts. - resolvedFile, err := filepath.EvalSymlinks(file) - if err != nil { - return true, err - } - - // check all mountpoints since IsLikelyNotMountPoint - // is not reliable for some mountpoint types. - mountPoints, mountPointsErr := mounter.List() - if mountPointsErr != nil { - return notMnt, mountPointsErr - } - for _, mp := range mountPoints { - if isMountPointMatch(mp, resolvedFile) { - notMnt = false - break - } - } - return notMnt, nil -} - // MakeBindOpts detects whether a bind mount is being requested and makes the remount options to // use in case of bind mount, due to the fact that bind mount doesn't respect mount options. // The list equals: -// options - 'bind' + 'remount' (no duplicate) +// +// options - 'bind' + 'remount' (no duplicate) func MakeBindOpts(options []string) (bool, []string, []string) { bind, bindOpts, bindRemountOpts, _ := MakeBindOptsSensitive(options, nil /* sensitiveOptions */) return bind, bindOpts, bindRemountOpts diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_common.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_common.go index 196ae30ad1a..dc4131d78e3 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_common.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_helper_common.go @@ -31,7 +31,7 @@ import ( func CleanupMountPoint(mountPath string, mounter Interface, extensiveMountPointCheck bool) error { pathExists, pathErr := PathExists(mountPath) if !pathExists && pathErr == nil { - klog.Warningf("Warning: Unmount skipped because path does not exist: %v", mountPath) + klog.Warningf("Warning: mount cleanup skipped because path does not exist: %v", mountPath) return nil } corruptedMnt := IsCorruptedMnt(pathErr) @@ -44,36 +44,41 @@ func CleanupMountPoint(mountPath string, mounter Interface, extensiveMountPointC func CleanupMountWithForce(mountPath string, mounter MounterForceUnmounter, extensiveMountPointCheck bool, umountTimeout time.Duration) error { pathExists, pathErr := PathExists(mountPath) if !pathExists && pathErr == nil { - klog.Warningf("Warning: Unmount skipped because path does not exist: %v", mountPath) + klog.Warningf("Warning: mount cleanup skipped because path does not exist: %v", mountPath) return nil } corruptedMnt := IsCorruptedMnt(pathErr) if pathErr != nil && !corruptedMnt { return fmt.Errorf("Error checking path: %v", pathErr) } - var notMnt bool - var err error - if !corruptedMnt { - notMnt, err = removePathIfNotMountPoint(mountPath, mounter, extensiveMountPointCheck) - // if mountPath was not a mount point - we would have attempted to remove mountPath - // and hence return errors if any. - if err != nil || notMnt { + + if corruptedMnt || mounter.canSafelySkipMountPointCheck() { + klog.V(4).Infof("unmounting %q (corruptedMount: %t, mounterCanSkipMountPointChecks: %t)", + mountPath, corruptedMnt, mounter.canSafelySkipMountPointCheck()) + if err := mounter.UnmountWithForce(mountPath, umountTimeout); err != nil { return err } + return removePath(mountPath) + } + + notMnt, err := removePathIfNotMountPoint(mountPath, mounter, extensiveMountPointCheck) + // if mountPath is not a mount point, it's just been removed or there was an error + if err != nil || notMnt { + return err } - // Unmount the mount path klog.V(4).Infof("%q is a mountpoint, unmounting", mountPath) if err := mounter.UnmountWithForce(mountPath, umountTimeout); err != nil { return err } notMnt, err = removePathIfNotMountPoint(mountPath, mounter, extensiveMountPointCheck) - // mountPath is not a mount point we should return whatever error we saw + // if mountPath is not a mount point, it's either just been removed or there was an error if notMnt { return err } - return fmt.Errorf("Failed to unmount path %v", mountPath) + // mountPath is still a mount point + return fmt.Errorf("failed to cleanup mount point %v", mountPath) } // doCleanupMountPoint unmounts the given path and @@ -82,31 +87,35 @@ func CleanupMountWithForce(mountPath string, mounter MounterForceUnmounter, exte // IsNotMountPoint will be called instead of IsLikelyNotMountPoint. // IsNotMountPoint is more expensive but properly handles bind mounts within the same fs. // if corruptedMnt is true, it means that the mountPath is a corrupted mountpoint, and the mount point check -// will be skipped +// will be skipped. The mount point check will also be skipped if the mounter supports it. func doCleanupMountPoint(mountPath string, mounter Interface, extensiveMountPointCheck bool, corruptedMnt bool) error { - var notMnt bool - var err error - if !corruptedMnt { - notMnt, err = removePathIfNotMountPoint(mountPath, mounter, extensiveMountPointCheck) - // if mountPath was not a mount point - we would have attempted to remove mountPath - // and hence return errors if any. - if err != nil || notMnt { + if corruptedMnt || mounter.canSafelySkipMountPointCheck() { + klog.V(4).Infof("unmounting %q (corruptedMount: %t, mounterCanSkipMountPointChecks: %t)", + mountPath, corruptedMnt, mounter.canSafelySkipMountPointCheck()) + if err := mounter.Unmount(mountPath); err != nil { return err } + return removePath(mountPath) + } + + notMnt, err := removePathIfNotMountPoint(mountPath, mounter, extensiveMountPointCheck) + // if mountPath is not a mount point, it's just been removed or there was an error + if err != nil || notMnt { + return err } - // Unmount the mount path klog.V(4).Infof("%q is a mountpoint, unmounting", mountPath) if err := mounter.Unmount(mountPath); err != nil { return err } notMnt, err = removePathIfNotMountPoint(mountPath, mounter, extensiveMountPointCheck) - // mountPath is not a mount point we should return whatever error we saw + // if mountPath is not a mount point, it's either just been removed or there was an error if notMnt { return err } - return fmt.Errorf("Failed to unmount path %v", mountPath) + // mountPath is still a mount point + return fmt.Errorf("failed to cleanup mount point %v", mountPath) } // removePathIfNotMountPoint verifies if given mountPath is a mount point if not it attempts @@ -135,3 +144,14 @@ func removePathIfNotMountPoint(mountPath string, mounter Interface, extensiveMou } return notMnt, nil } + +// removePath attempts to remove the directory. Returns nil if the directory was removed or does not exist. +func removePath(mountPath string) error { + klog.V(4).Infof("Warning: deleting path %q", mountPath) + err := os.Remove(mountPath) + if os.IsNotExist(err) { + klog.V(4).Infof("%q does not exist", mountPath) + return nil + } + return err +} diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_linux.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_linux.go index aaa592161d4..86323b71234 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_linux.go @@ -21,7 +21,11 @@ package mount import ( "context" + "errors" "fmt" + "github.com/moby/sys/mountinfo" + "io/fs" + "io/ioutil" "os" "os/exec" "path/filepath" @@ -48,14 +52,18 @@ const ( fsckErrorsUncorrected = 4 // Error thrown by exec cmd.Run() when process spawned by cmd.Start() completes before cmd.Wait() is called (see - k/k issue #103753) errNoChildProcesses = "wait: no child processes" + // Error returned by some `umount` implementations when the specified path is not a mount point + errNotMounted = "not mounted" ) // Mounter provides the default implementation of mount.Interface // for the linux platform. This implementation assumes that the // kubelet is running in the host's root mount namespace. type Mounter struct { - mounterPath string - withSystemd bool + mounterPath string + withSystemd *bool + trySystemd bool + withSafeNotMountedBehavior bool } var _ MounterForceUnmounter = &Mounter{} @@ -65,11 +73,39 @@ var _ MounterForceUnmounter = &Mounter{} // mounterPath allows using an alternative to `/bin/mount` for mounting. func New(mounterPath string) Interface { return &Mounter{ - mounterPath: mounterPath, - withSystemd: detectSystemd(), + mounterPath: mounterPath, + trySystemd: true, + withSafeNotMountedBehavior: detectSafeNotMountedBehavior(), } } +// NewWithoutSystemd returns a Linux specific mount.Interface for the current +// system. It provides options to override the default mounter behavior. +// mounterPath allows using an alternative to `/bin/mount` for mounting. Any +// detection for systemd functionality is disabled with this Mounter. +func NewWithoutSystemd(mounterPath string) Interface { + return &Mounter{ + mounterPath: mounterPath, + trySystemd: false, + withSafeNotMountedBehavior: detectSafeNotMountedBehavior(), + } +} + +// hasSystemd validates that the withSystemd bool is set, if it is not, +// detectSystemd will be called once for this Mounter instance. +func (mounter *Mounter) hasSystemd() bool { + if !mounter.trySystemd { + mounter.withSystemd = &mounter.trySystemd + } + + if mounter.withSystemd == nil { + withSystemd := detectSystemd() + mounter.withSystemd = &withSystemd + } + + return *mounter.withSystemd +} + // Mount mounts source to target as fstype with given options. 'source' and 'fstype' must // be an empty string in case it's not required, e.g. for remount, or for auto filesystem // type, where kernel handles fstype for you. The mount 'options' is a list of options, @@ -90,11 +126,11 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri mounterPath := "" bind, bindOpts, bindRemountOpts, bindRemountOptsSensitive := MakeBindOptsSensitive(options, sensitiveOptions) if bind { - err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, nil /* mountFlags */, true) + err := mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd) if err != nil { return err } - return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, nil /* mountFlags */, true) + return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, bindRemountOpts, bindRemountOptsSensitive, nil /* mountFlags */, mounter.trySystemd) } // The list of filesystems that require containerized mounter on GCI image cluster fsTypesNeedMounter := map[string]struct{}{ @@ -106,7 +142,7 @@ func (mounter *Mounter) MountSensitive(source string, target string, fstype stri if _, ok := fsTypesNeedMounter[fstype]; ok { mounterPath = mounter.mounterPath } - return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, options, sensitiveOptions, nil /* mountFlags */, true) + return mounter.doMount(mounterPath, defaultMountCommand, source, target, fstype, options, sensitiveOptions, nil /* mountFlags */, mounter.trySystemd) } // MountSensitiveWithoutSystemd is the same as MountSensitive() but disable using systemd mount. @@ -149,7 +185,7 @@ func (mounter *Mounter) doMount(mounterPath string, mountCmd string, source stri mountCmd = mounterPath } - if mounter.withSystemd && systemdMountRequired { + if systemdMountRequired && mounter.hasSystemd() { // Try to run mount via systemd-run --scope. This will escape the // service where kubelet runs and any fuse daemons will be started in a // specific scope. kubelet service than can be restarted without killing @@ -223,6 +259,36 @@ func detectSystemd() bool { return true } +// detectSafeNotMountedBehavior returns true if the umount implementation replies "not mounted" +// when the specified path is not mounted. When not sure (permission errors, ...), it returns false. +// When possible, we will trust umount's message and avoid doing our own mount point checks. +// More info: https://github.com/util-linux/util-linux/blob/v2.2/mount/umount.c#L179 +func detectSafeNotMountedBehavior() bool { + return detectSafeNotMountedBehaviorWithExec(utilexec.New()) +} + +// detectSafeNotMountedBehaviorWithExec is for testing with FakeExec. +func detectSafeNotMountedBehaviorWithExec(exec utilexec.Interface) bool { + // create a temp dir and try to umount it + path, err := ioutil.TempDir("", "kubelet-detect-safe-umount") + if err != nil { + klog.V(4).Infof("Cannot create temp dir to detect safe 'not mounted' behavior: %v", err) + return false + } + defer os.RemoveAll(path) + cmd := exec.Command("umount", path) + output, err := cmd.CombinedOutput() + if err != nil { + if strings.Contains(string(output), errNotMounted) { + klog.V(4).Infof("Detected umount with safe 'not mounted' behavior") + return true + } + klog.V(4).Infof("'umount %s' failed with: %v, output: %s", path, err, string(output)) + } + klog.V(4).Infof("Detected umount with unsafe 'not mounted' behavior") + return false +} + // MakeMountArgs makes the arguments to the mount(8) command. // options MUST not contain sensitive material (like passwords). func MakeMountArgs(source, target, fstype string, options []string) (mountArgs []string) { @@ -290,6 +356,7 @@ func AddSystemdScopeSensitive(systemdRunPath, mountName, command string, args [] } // Unmount unmounts the target. +// If the mounter has safe "not mounted" behavior, no error will be returned when the target is not a mount point. func (mounter *Mounter) Unmount(target string) error { klog.V(4).Infof("Unmounting %s", target) command := exec.Command("umount", target) @@ -303,6 +370,10 @@ func (mounter *Mounter) Unmount(target string) error { // Rewrite err with the actual exit error of the process. err = &exec.ExitError{ProcessState: command.ProcessState} } + if mounter.withSafeNotMountedBehavior && strings.Contains(string(output), errNotMounted) { + klog.V(4).Infof("ignoring 'not mounted' error for %s", target) + return nil + } return fmt.Errorf("unmount failed: %v\nUnmounting arguments: %s\nOutput: %s", err, target, string(output)) } return nil @@ -351,6 +422,11 @@ func (mounter *Mounter) IsLikelyNotMountPoint(file string) (bool, error) { return true, nil } +// canSafelySkipMountPointCheck relies on the detected behavior of umount when given a target that is not a mount point. +func (mounter *Mounter) canSafelySkipMountPointCheck() bool { + return mounter.withSafeNotMountedBehavior +} + // GetMountRefs finds all mount references to pathname, returns a // list of paths. Path could be a mountpoint or a normal // directory (for bind mount). @@ -637,6 +713,63 @@ func SearchMountPoints(hostSource, mountInfoPath string) ([]string, error) { return refs, nil } +// IsMountPoint determines if a file is a mountpoint. +// It first detects bind & any other mountpoints using +// MountedFast function. If the MountedFast function returns +// sure as true and err as nil, then a mountpoint is detected +// successfully. When an error is returned by MountedFast, the +// following is true: +// 1. All errors are returned with IsMountPoint as false +// except os.IsPermission. +// 2. When os.IsPermission is returned by MountedFast, List() +// is called to confirm if the given file is a mountpoint are not. +// +// os.ErrNotExist should always be returned if a file does not exist +// as callers have in past relied on this error and not fallback. +// +// When MountedFast returns sure as false and err as nil (eg: in +// case of bindmounts on kernel version 5.10- ); mounter.List() +// endpoint is called to enumerate all the mountpoints and check if +// it is mountpoint match or not. +func (mounter *Mounter) IsMountPoint(file string) (bool, error) { + isMnt, sure, isMntErr := mountinfo.MountedFast(file) + if sure && isMntErr == nil { + return isMnt, nil + } + if isMntErr != nil { + if errors.Is(isMntErr, fs.ErrNotExist) { + return false, fs.ErrNotExist + } + // We were not allowed to do the simple stat() check, e.g. on NFS with + // root_squash. Fall back to /proc/mounts check below when + // fs.ErrPermission is returned. + if !errors.Is(isMntErr, fs.ErrPermission) { + return false, isMntErr + } + } + // Resolve any symlinks in file, kernel would do the same and use the resolved path in /proc/mounts. + resolvedFile, err := filepath.EvalSymlinks(file) + if err != nil { + if errors.Is(isMntErr, fs.ErrNotExist) { + return false, fs.ErrNotExist + } + return false, err + } + + // check all mountpoints since MountedFast is not sure. + // is not reliable for some mountpoint types. + mountPoints, mountPointsErr := mounter.List() + if mountPointsErr != nil { + return false, mountPointsErr + } + for _, mp := range mountPoints { + if isMountPointMatch(mp, resolvedFile) { + return true, nil + } + } + return false, nil +} + // tryUnmount calls plain "umount" and waits for unmountTimeout for it to finish. func tryUnmount(path string, unmountTimeout time.Duration) error { klog.V(4).Infof("Unmounting %s", path) diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_unsupported.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_unsupported.go index 93ba9b2e3f9..026505282ce 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_unsupported.go @@ -74,6 +74,17 @@ func (mounter *Mounter) IsLikelyNotMountPoint(file string) (bool, error) { return true, errUnsupported } +// canSafelySkipMountPointCheck always returns false on unsupported platforms +func (mounter *Mounter) canSafelySkipMountPointCheck() bool { + return false +} + +// IsMountPoint determines if a directory is a mountpoint. +// It always returns an error on unsupported platforms. +func (mounter *Mounter) IsMountPoint(file string) (bool, error) { + return false, errUnsupported +} + // GetMountRefs always returns an error on unsupported platforms func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { return nil, errUnsupported @@ -86,3 +97,9 @@ func (mounter *SafeFormatAndMount) formatAndMountSensitive(source string, target func (mounter *SafeFormatAndMount) diskLooksUnformatted(disk string) (bool, error) { return true, errUnsupported } + +// IsMountPoint determines if a directory is a mountpoint. +// It always returns an error on unsupported platforms. +func (mounter *SafeFormatAndMount) IsMountPoint(file string) (bool, error) { + return false, errUnsupported +} diff --git a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_windows.go b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_windows.go index 3286a69c46b..3800f75d4ac 100644 --- a/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_windows.go +++ b/cluster-autoscaler/vendor/k8s.io/mount-utils/mount_windows.go @@ -244,6 +244,20 @@ func (mounter *Mounter) IsLikelyNotMountPoint(file string) (bool, error) { return true, nil } +// canSafelySkipMountPointCheck always returns false on Windows +func (mounter *Mounter) canSafelySkipMountPointCheck() bool { + return false +} + +// IsMountPoint: determines if a directory is a mountpoint. +func (mounter *Mounter) IsMountPoint(file string) (bool, error) { + isNotMnt, err := mounter.IsLikelyNotMountPoint(file) + if err != nil { + return false, err + } + return !isNotMnt, nil +} + // GetMountRefs : empty implementation here since there is no place to query all mount points on Windows func (mounter *Mounter) GetMountRefs(pathname string) ([]string, error) { windowsPath := NormalizeWindowsPath(pathname) diff --git a/cluster-autoscaler/vendor/k8s.io/utils/exec/exec.go b/cluster-autoscaler/vendor/k8s.io/utils/exec/exec.go index 96bec01ca8b..d9c91e3ca3c 100644 --- a/cluster-autoscaler/vendor/k8s.io/utils/exec/exec.go +++ b/cluster-autoscaler/vendor/k8s.io/utils/exec/exec.go @@ -19,6 +19,7 @@ package exec import ( "context" "io" + "io/fs" osexec "os/exec" "syscall" "time" @@ -98,17 +99,18 @@ func New() Interface { // Command is part of the Interface interface. func (executor *executor) Command(cmd string, args ...string) Cmd { - return (*cmdWrapper)(osexec.Command(cmd, args...)) + return (*cmdWrapper)(maskErrDotCmd(osexec.Command(cmd, args...))) } // CommandContext is part of the Interface interface. func (executor *executor) CommandContext(ctx context.Context, cmd string, args ...string) Cmd { - return (*cmdWrapper)(osexec.CommandContext(ctx, cmd, args...)) + return (*cmdWrapper)(maskErrDotCmd(osexec.CommandContext(ctx, cmd, args...))) } // LookPath is part of the Interface interface func (executor *executor) LookPath(file string) (string, error) { - return osexec.LookPath(file) + path, err := osexec.LookPath(file) + return path, handleError(maskErrDot(err)) } // Wraps exec.Cmd so we can capture errors. @@ -198,6 +200,8 @@ func handleError(err error) error { switch e := err.(type) { case *osexec.ExitError: return &ExitErrorWrapper{e} + case *fs.PathError: + return ErrExecutableNotFound case *osexec.Error: if e.Err == osexec.ErrNotFound { return ErrExecutableNotFound diff --git a/cluster-autoscaler/vendor/k8s.io/utils/exec/fixup_go118.go b/cluster-autoscaler/vendor/k8s.io/utils/exec/fixup_go118.go new file mode 100644 index 00000000000..acf45f1cd5b --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/utils/exec/fixup_go118.go @@ -0,0 +1,32 @@ +//go:build !go1.19 +// +build !go1.19 + +/* +Copyright 2022 The Kubernetes 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 exec + +import ( + osexec "os/exec" +) + +func maskErrDotCmd(cmd *osexec.Cmd) *osexec.Cmd { + return cmd +} + +func maskErrDot(err error) error { + return err +} diff --git a/cluster-autoscaler/vendor/k8s.io/utils/exec/fixup_go119.go b/cluster-autoscaler/vendor/k8s.io/utils/exec/fixup_go119.go new file mode 100644 index 00000000000..55874c9297e --- /dev/null +++ b/cluster-autoscaler/vendor/k8s.io/utils/exec/fixup_go119.go @@ -0,0 +1,40 @@ +//go:build go1.19 +// +build go1.19 + +/* +Copyright 2022 The Kubernetes 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 exec + +import ( + "errors" + osexec "os/exec" +) + +// maskErrDotCmd reverts the behavior of osexec.Cmd to what it was before go1.19 +// specifically set the Err field to nil (LookPath returns a new error when the file +// is resolved to the current directory. +func maskErrDotCmd(cmd *osexec.Cmd) *osexec.Cmd { + cmd.Err = maskErrDot(cmd.Err) + return cmd +} + +func maskErrDot(err error) error { + if err != nil && errors.Is(err, osexec.ErrDot) { + return nil + } + return err +} diff --git a/cluster-autoscaler/vendor/k8s.io/utils/inotify/inotify_linux.go b/cluster-autoscaler/vendor/k8s.io/utils/inotify/inotify_linux.go index 2963042e474..fbb50c23887 100644 --- a/cluster-autoscaler/vendor/k8s.io/utils/inotify/inotify_linux.go +++ b/cluster-autoscaler/vendor/k8s.io/utils/inotify/inotify_linux.go @@ -1,3 +1,4 @@ +//go:build linux // +build linux // Copyright 2010 The Go Authors. All rights reserved. diff --git a/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter.go b/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter.go index 545883900f4..237b636bceb 100644 --- a/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter.go +++ b/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter.go @@ -1,3 +1,4 @@ +//go:build linux // +build linux /* diff --git a/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter_unsupported.go b/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter_unsupported.go index e38c7e81133..8b56e91d2bf 100644 --- a/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter_unsupported.go +++ b/cluster-autoscaler/vendor/k8s.io/utils/nsenter/nsenter_unsupported.go @@ -1,3 +1,4 @@ +//go:build !linux // +build !linux /* diff --git a/cluster-autoscaler/vendor/k8s.io/utils/pointer/pointer.go b/cluster-autoscaler/vendor/k8s.io/utils/pointer/pointer.go index f5802d2e81b..e745a81be3e 100644 --- a/cluster-autoscaler/vendor/k8s.io/utils/pointer/pointer.go +++ b/cluster-autoscaler/vendor/k8s.io/utils/pointer/pointer.go @@ -52,6 +52,8 @@ func Int(i int) *int { return &i } +// IntPtr is a function variable referring to Int. +// Deprecated: Use Int instead. var IntPtr = Int // for back-compat // IntDeref dereferences the int ptr and returns it if not nil, or else @@ -63,6 +65,8 @@ func IntDeref(ptr *int, def int) int { return def } +// IntPtrDerefOr is a function variable referring to IntDeref. +// Deprecated: Use IntDeref instead. var IntPtrDerefOr = IntDeref // for back-compat // Int32 returns a pointer to an int32. @@ -70,6 +74,8 @@ func Int32(i int32) *int32 { return &i } +// Int32Ptr is a function variable referring to Int32. +// Deprecated: Use Int32 instead. var Int32Ptr = Int32 // for back-compat // Int32Deref dereferences the int32 ptr and returns it if not nil, or else @@ -81,6 +87,8 @@ func Int32Deref(ptr *int32, def int32) int32 { return def } +// Int32PtrDerefOr is a function variable referring to Int32Deref. +// Deprecated: Use Int32Deref instead. var Int32PtrDerefOr = Int32Deref // for back-compat // Int32Equal returns true if both arguments are nil or both arguments @@ -100,6 +108,8 @@ func Int64(i int64) *int64 { return &i } +// Int64Ptr is a function variable referring to Int64. +// Deprecated: Use Int64 instead. var Int64Ptr = Int64 // for back-compat // Int64Deref dereferences the int64 ptr and returns it if not nil, or else @@ -111,6 +121,8 @@ func Int64Deref(ptr *int64, def int64) int64 { return def } +// Int64PtrDerefOr is a function variable referring to Int64Deref. +// Deprecated: Use Int64Deref instead. var Int64PtrDerefOr = Int64Deref // for back-compat // Int64Equal returns true if both arguments are nil or both arguments @@ -130,6 +142,8 @@ func Bool(b bool) *bool { return &b } +// BoolPtr is a function variable referring to Bool. +// Deprecated: Use Bool instead. var BoolPtr = Bool // for back-compat // BoolDeref dereferences the bool ptr and returns it if not nil, or else @@ -141,6 +155,8 @@ func BoolDeref(ptr *bool, def bool) bool { return def } +// BoolPtrDerefOr is a function variable referring to BoolDeref. +// Deprecated: Use BoolDeref instead. var BoolPtrDerefOr = BoolDeref // for back-compat // BoolEqual returns true if both arguments are nil or both arguments @@ -160,6 +176,8 @@ func String(s string) *string { return &s } +// StringPtr is a function variable referring to String. +// Deprecated: Use String instead. var StringPtr = String // for back-compat // StringDeref dereferences the string ptr and returns it if not nil, or else @@ -171,6 +189,8 @@ func StringDeref(ptr *string, def string) string { return def } +// StringPtrDerefOr is a function variable referring to StringDeref. +// Deprecated: Use StringDeref instead. var StringPtrDerefOr = StringDeref // for back-compat // StringEqual returns true if both arguments are nil or both arguments @@ -190,6 +210,8 @@ func Float32(i float32) *float32 { return &i } +// Float32Ptr is a function variable referring to Float32. +// Deprecated: Use Float32 instead. var Float32Ptr = Float32 // Float32Deref dereferences the float32 ptr and returns it if not nil, or else @@ -201,6 +223,8 @@ func Float32Deref(ptr *float32, def float32) float32 { return def } +// Float32PtrDerefOr is a function variable referring to Float32Deref. +// Deprecated: Use Float32Deref instead. var Float32PtrDerefOr = Float32Deref // for back-compat // Float32Equal returns true if both arguments are nil or both arguments @@ -220,6 +244,8 @@ func Float64(i float64) *float64 { return &i } +// Float64Ptr is a function variable referring to Float64. +// Deprecated: Use Float64 instead. var Float64Ptr = Float64 // Float64Deref dereferences the float64 ptr and returns it if not nil, or else @@ -231,6 +257,8 @@ func Float64Deref(ptr *float64, def float64) float64 { return def } +// Float64PtrDerefOr is a function variable referring to Float64Deref. +// Deprecated: Use Float64Deref instead. var Float64PtrDerefOr = Float64Deref // for back-compat // Float64Equal returns true if both arguments are nil or both arguments diff --git a/cluster-autoscaler/vendor/modules.txt b/cluster-autoscaler/vendor/modules.txt index 415c3b7eb2d..a5eaafa00df 100644 --- a/cluster-autoscaler/vendor/modules.txt +++ b/cluster-autoscaler/vendor/modules.txt @@ -1,5 +1,5 @@ # cloud.google.com/go v0.97.0 -## explicit +## explicit; go 1.11 cloud.google.com/go/compute/metadata # github.com/Azure/azure-sdk-for-go v65.0.0+incompatible ## explicit @@ -18,49 +18,59 @@ github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2021-02-01/storage github.com/Azure/azure-sdk-for-go/storage github.com/Azure/azure-sdk-for-go/version # github.com/Azure/go-autorest v14.2.0+incompatible +## explicit github.com/Azure/go-autorest # github.com/Azure/go-autorest/autorest v0.11.27 -## explicit +## explicit; go 1.15 github.com/Azure/go-autorest/autorest github.com/Azure/go-autorest/autorest/azure # github.com/Azure/go-autorest/autorest/adal v0.9.20 -## explicit +## explicit; go 1.15 github.com/Azure/go-autorest/autorest/adal # github.com/Azure/go-autorest/autorest/azure/auth v0.5.8 -## explicit +## explicit; go 1.12 github.com/Azure/go-autorest/autorest/azure/auth # github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 +## explicit; go 1.12 github.com/Azure/go-autorest/autorest/azure/cli # github.com/Azure/go-autorest/autorest/date v0.3.0 -## explicit +## explicit; go 1.12 github.com/Azure/go-autorest/autorest/date # github.com/Azure/go-autorest/autorest/mocks v0.4.2 +## explicit; go 1.15 github.com/Azure/go-autorest/autorest/mocks # github.com/Azure/go-autorest/autorest/to v0.4.0 -## explicit +## explicit; go 1.12 github.com/Azure/go-autorest/autorest/to # github.com/Azure/go-autorest/autorest/validation v0.3.1 +## explicit; go 1.12 github.com/Azure/go-autorest/autorest/validation # github.com/Azure/go-autorest/logger v0.2.1 +## explicit; go 1.12 github.com/Azure/go-autorest/logger # github.com/Azure/go-autorest/tracing v0.6.0 +## explicit; go 1.12 github.com/Azure/go-autorest/tracing # github.com/Azure/skewer v0.0.14 -## explicit +## explicit; go 1.13 github.com/Azure/skewer # github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b +## explicit; go 1.13 github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/filter github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/mock # github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab +## explicit github.com/JeffAshton/win_pdh # github.com/Microsoft/go-winio v0.4.17 +## explicit; go 1.12 github.com/Microsoft/go-winio github.com/Microsoft/go-winio/pkg/guid github.com/Microsoft/go-winio/pkg/security github.com/Microsoft/go-winio/vhd # github.com/Microsoft/hcsshim v0.8.22 +## explicit; go 1.13 github.com/Microsoft/hcsshim github.com/Microsoft/hcsshim/computestorage github.com/Microsoft/hcsshim/hcn @@ -86,17 +96,22 @@ github.com/Microsoft/hcsshim/internal/wclayer github.com/Microsoft/hcsshim/internal/winapi github.com/Microsoft/hcsshim/osversion # github.com/NYTimes/gziphandler v1.1.1 +## explicit; go 1.11 github.com/NYTimes/gziphandler # github.com/PuerkitoBio/purell v1.1.1 +## explicit github.com/PuerkitoBio/purell # github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 +## explicit github.com/PuerkitoBio/urlesc # github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e +## explicit github.com/armon/circbuf # github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a +## explicit github.com/asaskevich/govalidator # github.com/aws/aws-sdk-go v1.38.49 -## explicit +## explicit; go 1.11 github.com/aws/aws-sdk-go/aws github.com/aws/aws-sdk-go/aws/awserr github.com/aws/aws-sdk-go/aws/awsutil @@ -137,7 +152,6 @@ github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil github.com/aws/aws-sdk-go/service/autoscaling github.com/aws/aws-sdk-go/service/ec2 github.com/aws/aws-sdk-go/service/ecr -github.com/aws/aws-sdk-go/service/eks github.com/aws/aws-sdk-go/service/elb github.com/aws/aws-sdk-go/service/elbv2 github.com/aws/aws-sdk-go/service/kms @@ -146,104 +160,128 @@ github.com/aws/aws-sdk-go/service/sso/ssoiface github.com/aws/aws-sdk-go/service/sts github.com/aws/aws-sdk-go/service/sts/stsiface # github.com/beorn7/perks v1.0.1 +## explicit; go 1.11 github.com/beorn7/perks/quantile # github.com/blang/semver/v4 v4.0.0 +## explicit; go 1.14 github.com/blang/semver/v4 # github.com/cespare/xxhash/v2 v2.1.2 +## explicit; go 1.11 github.com/cespare/xxhash/v2 # github.com/checkpoint-restore/go-criu/v5 v5.3.0 +## explicit; go 1.13 github.com/checkpoint-restore/go-criu/v5 github.com/checkpoint-restore/go-criu/v5/rpc # github.com/cilium/ebpf v0.7.0 +## explicit; go 1.16 github.com/cilium/ebpf github.com/cilium/ebpf/asm github.com/cilium/ebpf/internal github.com/cilium/ebpf/internal/btf github.com/cilium/ebpf/internal/unix github.com/cilium/ebpf/link -# github.com/clusterhq/flocker-go v0.0.0-20160920122132-2b8b7259d313 -github.com/clusterhq/flocker-go # github.com/container-storage-interface/spec v1.6.0 +## explicit; go 1.16 github.com/container-storage-interface/spec/lib/go/csi # github.com/containerd/cgroups v1.0.1 +## explicit; go 1.13 github.com/containerd/cgroups/stats/v1 # github.com/containerd/console v1.0.3 +## explicit; go 1.13 github.com/containerd/console -# github.com/containerd/containerd v1.4.12 -github.com/containerd/containerd/api/services/containers/v1 -github.com/containerd/containerd/api/services/tasks/v1 -github.com/containerd/containerd/api/services/version/v1 -github.com/containerd/containerd/api/types -github.com/containerd/containerd/api/types/task # github.com/containerd/ttrpc v1.0.2 +## explicit; go 1.13 github.com/containerd/ttrpc # github.com/coreos/go-semver v0.3.0 +## explicit github.com/coreos/go-semver/semver # github.com/coreos/go-systemd/v22 v22.3.2 +## explicit; go 1.12 github.com/coreos/go-systemd/v22/daemon github.com/coreos/go-systemd/v22/dbus github.com/coreos/go-systemd/v22/journal # github.com/cyphar/filepath-securejoin v0.2.3 +## explicit; go 1.13 github.com/cyphar/filepath-securejoin # github.com/davecgh/go-spew v1.1.1 +## explicit github.com/davecgh/go-spew/spew # github.com/digitalocean/godo v1.27.0 => github.com/digitalocean/godo v1.27.0 -## explicit +## explicit; go 1.13 github.com/digitalocean/godo # github.com/dimchansky/utfbom v1.1.1 +## explicit github.com/dimchansky/utfbom # github.com/docker/distribution v2.8.1+incompatible +## explicit github.com/docker/distribution/digestset github.com/docker/distribution/reference # github.com/docker/go-units v0.4.0 +## explicit github.com/docker/go-units # github.com/emicklei/go-restful/v3 v3.8.0 +## explicit; go 1.13 github.com/emicklei/go-restful/v3 github.com/emicklei/go-restful/v3/log # github.com/euank/go-kmsg-parser v2.0.0+incompatible +## explicit github.com/euank/go-kmsg-parser/kmsgparser # github.com/evanphx/json-patch v5.6.0+incompatible +## explicit github.com/evanphx/json-patch # github.com/felixge/httpsnoop v1.0.1 +## explicit; go 1.13 github.com/felixge/httpsnoop # github.com/form3tech-oss/jwt-go v3.2.3+incompatible +## explicit github.com/form3tech-oss/jwt-go # github.com/fsnotify/fsnotify v1.5.4 +## explicit; go 1.16 github.com/fsnotify/fsnotify # github.com/ghodss/yaml v1.0.0 ## explicit github.com/ghodss/yaml # github.com/go-logr/logr v1.2.3 +## explicit; go 1.16 github.com/go-logr/logr # github.com/go-openapi/jsonpointer v0.19.5 +## explicit; go 1.13 github.com/go-openapi/jsonpointer # github.com/go-openapi/jsonreference v0.19.5 +## explicit; go 1.13 github.com/go-openapi/jsonreference # github.com/go-openapi/swag v0.19.14 +## explicit; go 1.11 github.com/go-openapi/swag # github.com/go-ozzo/ozzo-validation v3.5.0+incompatible +## explicit github.com/go-ozzo/ozzo-validation github.com/go-ozzo/ozzo-validation/is # github.com/godbus/dbus/v5 v5.0.6 +## explicit; go 1.12 github.com/godbus/dbus/v5 # github.com/gofrs/uuid v4.0.0+incompatible ## explicit github.com/gofrs/uuid # github.com/gogo/protobuf v1.3.2 +## explicit; go 1.15 github.com/gogo/protobuf/gogoproto github.com/gogo/protobuf/proto github.com/gogo/protobuf/protoc-gen-gogo/descriptor github.com/gogo/protobuf/sortkeys github.com/gogo/protobuf/types # github.com/golang-jwt/jwt/v4 v4.2.0 +## explicit; go 1.15 github.com/golang-jwt/jwt/v4 # github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da +## explicit github.com/golang/groupcache/lru # github.com/golang/mock v1.6.0 -## explicit +## explicit; go 1.11 github.com/golang/mock/gomock github.com/golang/mock/mockgen/model # github.com/golang/protobuf v1.5.2 +## explicit; go 1.9 github.com/golang/protobuf/descriptor github.com/golang/protobuf/jsonpb github.com/golang/protobuf/proto @@ -253,7 +291,8 @@ github.com/golang/protobuf/ptypes/any github.com/golang/protobuf/ptypes/duration github.com/golang/protobuf/ptypes/timestamp github.com/golang/protobuf/ptypes/wrappers -# github.com/google/cadvisor v0.44.1 +# github.com/google/cadvisor v0.45.0 +## explicit; go 1.16 github.com/google/cadvisor/accelerators github.com/google/cadvisor/cache/memory github.com/google/cadvisor/collector @@ -286,6 +325,11 @@ github.com/google/cadvisor/resctrl github.com/google/cadvisor/stats github.com/google/cadvisor/storage github.com/google/cadvisor/summary +github.com/google/cadvisor/third_party/containerd/api/services/containers/v1 +github.com/google/cadvisor/third_party/containerd/api/services/tasks/v1 +github.com/google/cadvisor/third_party/containerd/api/services/version/v1 +github.com/google/cadvisor/third_party/containerd/api/types +github.com/google/cadvisor/third_party/containerd/api/types/task github.com/google/cadvisor/utils github.com/google/cadvisor/utils/cloudinfo github.com/google/cadvisor/utils/cloudinfo/aws @@ -299,13 +343,14 @@ github.com/google/cadvisor/utils/sysinfo github.com/google/cadvisor/version github.com/google/cadvisor/watcher # github.com/google/gnostic v0.5.7-v3refs +## explicit; go 1.12 github.com/google/gnostic/compiler github.com/google/gnostic/extensions github.com/google/gnostic/jsonschema github.com/google/gnostic/openapiv2 github.com/google/gnostic/openapiv3 # github.com/google/go-cmp v0.5.6 -## explicit +## explicit; go 1.8 github.com/google/go-cmp/cmp github.com/google/go-cmp/cmp/cmpopts github.com/google/go-cmp/cmp/internal/diff @@ -316,15 +361,18 @@ github.com/google/go-cmp/cmp/internal/value ## explicit github.com/google/go-querystring/query # github.com/google/gofuzz v1.1.0 +## explicit; go 1.12 github.com/google/gofuzz # github.com/google/uuid v1.1.2 ## explicit github.com/google/uuid # github.com/googleapis/gax-go/v2 v2.1.1 +## explicit; go 1.11 github.com/googleapis/gax-go/v2 github.com/googleapis/gax-go/v2/apierror github.com/googleapis/gax-go/v2/apierror/internal/proto # github.com/gophercloud/gophercloud v0.1.0 +## explicit github.com/gophercloud/gophercloud github.com/gophercloud/gophercloud/openstack github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions @@ -357,30 +405,38 @@ github.com/gophercloud/gophercloud/openstack/networking/v2/ports github.com/gophercloud/gophercloud/openstack/utils github.com/gophercloud/gophercloud/pagination # github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 +## explicit github.com/grpc-ecosystem/go-grpc-prometheus # github.com/grpc-ecosystem/grpc-gateway v1.16.0 +## explicit; go 1.14 github.com/grpc-ecosystem/grpc-gateway/internal github.com/grpc-ecosystem/grpc-gateway/runtime github.com/grpc-ecosystem/grpc-gateway/utilities # github.com/heketi/heketi v10.3.0+incompatible +## explicit github.com/heketi/heketi/client/api/go-client github.com/heketi/heketi/pkg/glusterfs/api github.com/heketi/heketi/pkg/utils -# github.com/imdario/mergo v0.3.5 +# github.com/imdario/mergo v0.3.6 +## explicit github.com/imdario/mergo # github.com/inconshreveable/mousetrap v1.0.0 +## explicit github.com/inconshreveable/mousetrap # github.com/jmespath/go-jmespath v0.4.0 -## explicit +## explicit; go 1.14 github.com/jmespath/go-jmespath # github.com/josharian/intern v1.0.0 +## explicit; go 1.5 github.com/josharian/intern # github.com/json-iterator/go v1.1.12 -## explicit +## explicit; go 1.12 github.com/json-iterator/go # github.com/karrick/godirwalk v1.16.1 +## explicit; go 1.13 github.com/karrick/godirwalk # github.com/libopenstorage/openstorage v1.0.0 +## explicit github.com/libopenstorage/openstorage/api github.com/libopenstorage/openstorage/api/client github.com/libopenstorage/openstorage/api/client/volume @@ -389,43 +445,61 @@ github.com/libopenstorage/openstorage/pkg/parser github.com/libopenstorage/openstorage/pkg/units github.com/libopenstorage/openstorage/volume # github.com/lithammer/dedent v1.1.0 +## explicit github.com/lithammer/dedent # github.com/mailru/easyjson v0.7.6 +## explicit; go 1.12 github.com/mailru/easyjson/buffer github.com/mailru/easyjson/jlexer github.com/mailru/easyjson/jwriter # github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 +## explicit; go 1.9 github.com/matttproud/golang_protobuf_extensions/pbutil # github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 +## explicit github.com/mindprince/gonvml # github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible +## explicit github.com/mistifyio/go-zfs # github.com/mitchellh/go-homedir v1.1.0 +## explicit github.com/mitchellh/go-homedir # github.com/mitchellh/mapstructure v1.4.1 +## explicit; go 1.14 github.com/mitchellh/mapstructure # github.com/moby/ipvs v1.0.1 +## explicit; go 1.13 github.com/moby/ipvs # github.com/moby/spdystream v0.2.0 +## explicit; go 1.13 github.com/moby/spdystream github.com/moby/spdystream/spdy # github.com/moby/sys/mountinfo v0.6.0 +## explicit; go 1.16 github.com/moby/sys/mountinfo # github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd +## explicit github.com/modern-go/concurrent # github.com/modern-go/reflect2 v1.0.2 +## explicit; go 1.12 github.com/modern-go/reflect2 # github.com/mohae/deepcopy v0.0.0-20170603005431-491d3605edfb +## explicit github.com/mohae/deepcopy # github.com/mrunalp/fileutils v0.5.0 +## explicit; go 1.13 github.com/mrunalp/fileutils # github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 +## explicit github.com/munnerz/goautoneg # github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f +## explicit github.com/mxk/go-flowrate/flowrate # github.com/opencontainers/go-digest v1.0.0 +## explicit; go 1.13 github.com/opencontainers/go-digest # github.com/opencontainers/runc v1.1.3 +## explicit; go 1.16 github.com/opencontainers/runc/libcontainer github.com/opencontainers/runc/libcontainer/apparmor github.com/opencontainers/runc/libcontainer/capabilities @@ -452,8 +526,10 @@ github.com/opencontainers/runc/libcontainer/userns github.com/opencontainers/runc/libcontainer/utils github.com/opencontainers/runc/types # github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 +## explicit github.com/opencontainers/runtime-spec/specs-go # github.com/opencontainers/selinux v1.10.0 +## explicit; go 1.13 github.com/opencontainers/selinux/go-selinux github.com/opencontainers/selinux/go-selinux/label github.com/opencontainers/selinux/pkg/pwalk @@ -462,61 +538,67 @@ github.com/opencontainers/selinux/pkg/pwalkdir ## explicit github.com/pkg/errors # github.com/pmezard/go-difflib v1.0.0 +## explicit github.com/pmezard/go-difflib/difflib # github.com/prometheus/client_golang v1.12.1 -## explicit +## explicit; go 1.13 github.com/prometheus/client_golang/prometheus github.com/prometheus/client_golang/prometheus/internal github.com/prometheus/client_golang/prometheus/promhttp github.com/prometheus/client_golang/prometheus/testutil github.com/prometheus/client_golang/prometheus/testutil/promlint # github.com/prometheus/client_model v0.2.0 +## explicit; go 1.9 github.com/prometheus/client_model/go # github.com/prometheus/common v0.32.1 +## explicit; go 1.13 github.com/prometheus/common/expfmt github.com/prometheus/common/internal/bitbucket.org/ww/goautoneg github.com/prometheus/common/model # github.com/prometheus/procfs v0.7.3 +## explicit; go 1.13 github.com/prometheus/procfs github.com/prometheus/procfs/internal/fs github.com/prometheus/procfs/internal/util -# github.com/quobyte/api v0.1.8 -github.com/quobyte/api # github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021 +## explicit github.com/rubiojr/go-vhd/vhd # github.com/satori/go.uuid v1.2.0 ## explicit github.com/satori/go.uuid # github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646 +## explicit; go 1.14 github.com/seccomp/libseccomp-golang # github.com/sirupsen/logrus v1.8.1 +## explicit; go 1.13 github.com/sirupsen/logrus # github.com/spf13/cobra v1.4.0 +## explicit; go 1.15 github.com/spf13/cobra # github.com/spf13/pflag v1.0.5 -## explicit +## explicit; go 1.12 github.com/spf13/pflag -# github.com/storageos/go-api v2.2.0+incompatible -github.com/storageos/go-api -github.com/storageos/go-api/netutil -github.com/storageos/go-api/serror -github.com/storageos/go-api/types # github.com/stretchr/objx v0.2.0 +## explicit; go 1.12 github.com/stretchr/objx # github.com/stretchr/testify v1.7.2 -## explicit +## explicit; go 1.13 github.com/stretchr/testify/assert github.com/stretchr/testify/mock github.com/stretchr/testify/require github.com/stretchr/testify/suite # github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 +## explicit github.com/syndtr/gocapability/capability # github.com/vishvananda/netlink v1.1.0 +## explicit; go 1.12 github.com/vishvananda/netlink github.com/vishvananda/netlink/nl # github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae +## explicit; go 1.12 github.com/vishvananda/netns # github.com/vmware/govmomi v0.20.3 +## explicit github.com/vmware/govmomi/find github.com/vmware/govmomi/list github.com/vmware/govmomi/lookup @@ -544,6 +626,7 @@ github.com/vmware/govmomi/vim25/soap github.com/vmware/govmomi/vim25/types github.com/vmware/govmomi/vim25/xml # go.etcd.io/etcd/api/v3 v3.5.4 +## explicit; go 1.16 go.etcd.io/etcd/api/v3/authpb go.etcd.io/etcd/api/v3/etcdserverpb go.etcd.io/etcd/api/v3/membershippb @@ -551,6 +634,7 @@ go.etcd.io/etcd/api/v3/mvccpb go.etcd.io/etcd/api/v3/v3rpc/rpctypes go.etcd.io/etcd/api/v3/version # go.etcd.io/etcd/client/pkg/v3 v3.5.4 +## explicit; go 1.16 go.etcd.io/etcd/client/pkg/v3/fileutil go.etcd.io/etcd/client/pkg/v3/logutil go.etcd.io/etcd/client/pkg/v3/systemd @@ -558,11 +642,13 @@ go.etcd.io/etcd/client/pkg/v3/tlsutil go.etcd.io/etcd/client/pkg/v3/transport go.etcd.io/etcd/client/pkg/v3/types # go.etcd.io/etcd/client/v3 v3.5.4 +## explicit; go 1.16 go.etcd.io/etcd/client/v3 go.etcd.io/etcd/client/v3/credentials go.etcd.io/etcd/client/v3/internal/endpoint go.etcd.io/etcd/client/v3/internal/resolver # go.opencensus.io v0.23.0 +## explicit; go 1.13 go.opencensus.io go.opencensus.io/internal go.opencensus.io/internal/tagencoding @@ -580,12 +666,19 @@ go.opencensus.io/trace/internal go.opencensus.io/trace/propagation go.opencensus.io/trace/tracestate # go.opentelemetry.io/contrib v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/contrib +# go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.20.0 +## explicit; go 1.14 +go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful # go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc # go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp # go.opentelemetry.io/otel v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel go.opentelemetry.io/otel/attribute go.opentelemetry.io/otel/baggage @@ -599,24 +692,29 @@ go.opentelemetry.io/otel/propagation go.opentelemetry.io/otel/semconv go.opentelemetry.io/otel/unit # go.opentelemetry.io/otel/exporters/otlp v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel/exporters/otlp go.opentelemetry.io/otel/exporters/otlp/internal/otlpconfig go.opentelemetry.io/otel/exporters/otlp/internal/transform go.opentelemetry.io/otel/exporters/otlp/otlpgrpc # go.opentelemetry.io/otel/metric v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel/metric go.opentelemetry.io/otel/metric/global go.opentelemetry.io/otel/metric/number go.opentelemetry.io/otel/metric/registry # go.opentelemetry.io/otel/sdk v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel/sdk/instrumentation go.opentelemetry.io/otel/sdk/internal go.opentelemetry.io/otel/sdk/resource go.opentelemetry.io/otel/sdk/trace # go.opentelemetry.io/otel/sdk/export/metric v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel/sdk/export/metric go.opentelemetry.io/otel/sdk/export/metric/aggregation # go.opentelemetry.io/otel/sdk/metric v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel/sdk/metric go.opentelemetry.io/otel/sdk/metric/aggregator go.opentelemetry.io/otel/sdk/metric/aggregator/exact @@ -629,8 +727,10 @@ go.opentelemetry.io/otel/sdk/metric/controller/time go.opentelemetry.io/otel/sdk/metric/processor/basic go.opentelemetry.io/otel/sdk/metric/selector/simple # go.opentelemetry.io/otel/trace v0.20.0 +## explicit; go 1.14 go.opentelemetry.io/otel/trace # go.opentelemetry.io/proto/otlp v0.7.0 +## explicit; go 1.15 go.opentelemetry.io/proto/otlp/collector/metrics/v1 go.opentelemetry.io/proto/otlp/collector/trace/v1 go.opentelemetry.io/proto/otlp/common/v1 @@ -638,10 +738,13 @@ go.opentelemetry.io/proto/otlp/metrics/v1 go.opentelemetry.io/proto/otlp/resource/v1 go.opentelemetry.io/proto/otlp/trace/v1 # go.uber.org/atomic v1.7.0 +## explicit; go 1.13 go.uber.org/atomic # go.uber.org/multierr v1.6.0 +## explicit; go 1.12 go.uber.org/multierr # go.uber.org/zap v1.19.0 +## explicit; go 1.13 go.uber.org/zap go.uber.org/zap/buffer go.uber.org/zap/internal/bufferpool @@ -650,7 +753,7 @@ go.uber.org/zap/internal/exit go.uber.org/zap/zapcore go.uber.org/zap/zapgrpc # golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd -## explicit +## explicit; go 1.17 golang.org/x/crypto/cryptobyte golang.org/x/crypto/cryptobyte/asn1 golang.org/x/crypto/internal/poly1305 @@ -659,8 +762,8 @@ golang.org/x/crypto/nacl/secretbox golang.org/x/crypto/pkcs12 golang.org/x/crypto/pkcs12/internal/rc2 golang.org/x/crypto/salsa20/salsa -# golang.org/x/net v0.0.0-20220225172249-27dd8689420f -## explicit +# golang.org/x/net v0.0.0-20220722155237-a158d28d115b +## explicit; go 1.17 golang.org/x/net/bpf golang.org/x/net/context golang.org/x/net/context/ctxhttp @@ -676,7 +779,7 @@ golang.org/x/net/proxy golang.org/x/net/trace golang.org/x/net/websocket # golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 -## explicit +## explicit; go 1.11 golang.org/x/oauth2 golang.org/x/oauth2/authhandler golang.org/x/oauth2/clientcredentials @@ -685,9 +788,11 @@ golang.org/x/oauth2/google/internal/externalaccount golang.org/x/oauth2/internal golang.org/x/oauth2/jws golang.org/x/oauth2/jwt -# golang.org/x/sync v0.0.0-20210220032951-036812b2e83c +# golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 +## explicit golang.org/x/sync/singleflight -# golang.org/x/sys v0.0.0-20220412211240-33da011f77ad +# golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f +## explicit; go 1.17 golang.org/x/sys/cpu golang.org/x/sys/internal/unsafeheader golang.org/x/sys/plan9 @@ -696,8 +801,10 @@ golang.org/x/sys/windows golang.org/x/sys/windows/registry golang.org/x/sys/windows/svc # golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 +## explicit; go 1.17 golang.org/x/term # golang.org/x/text v0.3.7 +## explicit; go 1.17 golang.org/x/text/encoding golang.org/x/text/encoding/internal golang.org/x/text/encoding/internal/identifier @@ -710,12 +817,14 @@ golang.org/x/text/unicode/bidi golang.org/x/text/unicode/norm golang.org/x/text/width # golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 +## explicit golang.org/x/time/rate # golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 +## explicit; go 1.11 golang.org/x/xerrors golang.org/x/xerrors/internal # google.golang.org/api v0.60.0 -## explicit +## explicit; go 1.11 google.golang.org/api/compute/v0.alpha google.golang.org/api/compute/v0.beta google.golang.org/api/compute/v1 @@ -734,6 +843,7 @@ google.golang.org/api/transport/http google.golang.org/api/transport/http/internal/propagation google.golang.org/api/transport/internal/dca # google.golang.org/appengine v1.6.7 +## explicit; go 1.11 google.golang.org/appengine google.golang.org/appengine/internal google.golang.org/appengine/internal/app_identity @@ -744,7 +854,8 @@ google.golang.org/appengine/internal/modules google.golang.org/appengine/internal/remote_api google.golang.org/appengine/internal/urlfetch google.golang.org/appengine/urlfetch -# google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6 +# google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21 +## explicit; go 1.15 google.golang.org/genproto/googleapis/api/annotations google.golang.org/genproto/googleapis/api/httpbody google.golang.org/genproto/googleapis/rpc/code @@ -752,7 +863,7 @@ google.golang.org/genproto/googleapis/rpc/errdetails google.golang.org/genproto/googleapis/rpc/status google.golang.org/genproto/protobuf/field_mask # google.golang.org/grpc v1.47.0 -## explicit +## explicit; go 1.14 google.golang.org/grpc google.golang.org/grpc/attributes google.golang.org/grpc/backoff @@ -804,8 +915,8 @@ google.golang.org/grpc/serviceconfig google.golang.org/grpc/stats google.golang.org/grpc/status google.golang.org/grpc/tap -# google.golang.org/protobuf v1.27.1 -## explicit +# google.golang.org/protobuf v1.28.0 +## explicit; go 1.11 google.golang.org/protobuf/encoding/protojson google.golang.org/protobuf/encoding/prototext google.golang.org/protobuf/encoding/protowire @@ -847,18 +958,22 @@ gopkg.in/gcfg.v1/scanner gopkg.in/gcfg.v1/token gopkg.in/gcfg.v1/types # gopkg.in/inf.v0 v0.9.1 +## explicit gopkg.in/inf.v0 # gopkg.in/natefinch/lumberjack.v2 v2.0.0 +## explicit gopkg.in/natefinch/lumberjack.v2 # gopkg.in/warnings.v0 v0.1.1 +## explicit gopkg.in/warnings.v0 # gopkg.in/yaml.v2 v2.4.0 -## explicit +## explicit; go 1.15 gopkg.in/yaml.v2 # gopkg.in/yaml.v3 v3.0.1 -gopkg.in/yaml.v3 -# k8s.io/api v0.25.0-alpha.2 => k8s.io/api v0.25.0-alpha.2 ## explicit +gopkg.in/yaml.v3 +# k8s.io/api v0.25.0 => k8s.io/api v0.25.0 +## explicit; go 1.19 k8s.io/api/admission/v1 k8s.io/api/admission/v1beta1 k8s.io/api/admissionregistration/v1 @@ -891,6 +1006,7 @@ k8s.io/api/flowcontrol/v1alpha1 k8s.io/api/flowcontrol/v1beta1 k8s.io/api/flowcontrol/v1beta2 k8s.io/api/networking/v1 +k8s.io/api/networking/v1alpha1 k8s.io/api/networking/v1beta1 k8s.io/api/node/v1 k8s.io/api/node/v1alpha1 @@ -906,8 +1022,8 @@ k8s.io/api/scheduling/v1beta1 k8s.io/api/storage/v1 k8s.io/api/storage/v1alpha1 k8s.io/api/storage/v1beta1 -# k8s.io/apimachinery v0.25.0-alpha.2 => k8s.io/apimachinery v0.25.0-alpha.2 -## explicit +# k8s.io/apimachinery v0.25.0 => k8s.io/apimachinery v0.26.0-alpha.0 +## explicit; go 1.19 k8s.io/apimachinery/pkg/api/equality k8s.io/apimachinery/pkg/api/errors k8s.io/apimachinery/pkg/api/meta @@ -966,8 +1082,8 @@ k8s.io/apimachinery/pkg/watch k8s.io/apimachinery/third_party/forked/golang/json k8s.io/apimachinery/third_party/forked/golang/netutil k8s.io/apimachinery/third_party/forked/golang/reflect -# k8s.io/apiserver v0.25.0-alpha.2 => k8s.io/apiserver v0.25.0-alpha.2 -## explicit +# k8s.io/apiserver v0.25.0 => k8s.io/apiserver v0.25.0 +## explicit; go 1.19 k8s.io/apiserver/pkg/admission k8s.io/apiserver/pkg/admission/configuration k8s.io/apiserver/pkg/admission/initializer @@ -1064,11 +1180,15 @@ k8s.io/apiserver/pkg/storage/storagebackend/factory k8s.io/apiserver/pkg/storage/value k8s.io/apiserver/pkg/storage/value/encrypt/aes k8s.io/apiserver/pkg/storage/value/encrypt/envelope +k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2 +k8s.io/apiserver/pkg/storage/value/encrypt/envelope/kmsv2/v2alpha1 +k8s.io/apiserver/pkg/storage/value/encrypt/envelope/metrics +k8s.io/apiserver/pkg/storage/value/encrypt/envelope/util k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v1beta1 +k8s.io/apiserver/pkg/storage/value/encrypt/envelope/v2alpha1 k8s.io/apiserver/pkg/storage/value/encrypt/identity k8s.io/apiserver/pkg/storage/value/encrypt/secretbox k8s.io/apiserver/pkg/storageversion -k8s.io/apiserver/pkg/tracing k8s.io/apiserver/pkg/util/apihelpers k8s.io/apiserver/pkg/util/dryrun k8s.io/apiserver/pkg/util/feature @@ -1094,8 +1214,8 @@ k8s.io/apiserver/plugin/pkg/audit/truncate k8s.io/apiserver/plugin/pkg/audit/webhook k8s.io/apiserver/plugin/pkg/authenticator/token/webhook k8s.io/apiserver/plugin/pkg/authorizer/webhook -# k8s.io/client-go v0.25.0-alpha.2 => k8s.io/client-go v0.25.0-alpha.2 -## explicit +# k8s.io/client-go v0.25.0 => k8s.io/client-go v0.25.0 +## explicit; go 1.19 k8s.io/client-go/applyconfigurations/admissionregistration/v1 k8s.io/client-go/applyconfigurations/admissionregistration/v1beta1 k8s.io/client-go/applyconfigurations/apiserverinternal/v1alpha1 @@ -1124,6 +1244,7 @@ k8s.io/client-go/applyconfigurations/flowcontrol/v1beta2 k8s.io/client-go/applyconfigurations/internal k8s.io/client-go/applyconfigurations/meta/v1 k8s.io/client-go/applyconfigurations/networking/v1 +k8s.io/client-go/applyconfigurations/networking/v1alpha1 k8s.io/client-go/applyconfigurations/networking/v1beta1 k8s.io/client-go/applyconfigurations/node/v1 k8s.io/client-go/applyconfigurations/node/v1alpha1 @@ -1187,6 +1308,7 @@ k8s.io/client-go/informers/flowcontrol/v1beta2 k8s.io/client-go/informers/internalinterfaces k8s.io/client-go/informers/networking k8s.io/client-go/informers/networking/v1 +k8s.io/client-go/informers/networking/v1alpha1 k8s.io/client-go/informers/networking/v1beta1 k8s.io/client-go/informers/node k8s.io/client-go/informers/node/v1 @@ -1270,6 +1392,8 @@ k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2 k8s.io/client-go/kubernetes/typed/flowcontrol/v1beta2/fake k8s.io/client-go/kubernetes/typed/networking/v1 k8s.io/client-go/kubernetes/typed/networking/v1/fake +k8s.io/client-go/kubernetes/typed/networking/v1alpha1 +k8s.io/client-go/kubernetes/typed/networking/v1alpha1/fake k8s.io/client-go/kubernetes/typed/networking/v1beta1 k8s.io/client-go/kubernetes/typed/networking/v1beta1/fake k8s.io/client-go/kubernetes/typed/node/v1 @@ -1326,6 +1450,7 @@ k8s.io/client-go/listers/flowcontrol/v1alpha1 k8s.io/client-go/listers/flowcontrol/v1beta1 k8s.io/client-go/listers/flowcontrol/v1beta2 k8s.io/client-go/listers/networking/v1 +k8s.io/client-go/listers/networking/v1alpha1 k8s.io/client-go/listers/networking/v1beta1 k8s.io/client-go/listers/node/v1 k8s.io/client-go/listers/node/v1alpha1 @@ -1391,8 +1516,8 @@ k8s.io/client-go/util/homedir k8s.io/client-go/util/keyutil k8s.io/client-go/util/retry k8s.io/client-go/util/workqueue -# k8s.io/cloud-provider v0.25.0-alpha.2 => k8s.io/cloud-provider v0.25.0-alpha.2 -## explicit +# k8s.io/cloud-provider v0.25.0 => k8s.io/cloud-provider v0.25.0 +## explicit; go 1.19 k8s.io/cloud-provider k8s.io/cloud-provider/api k8s.io/cloud-provider/credentialconfig @@ -1401,8 +1526,8 @@ k8s.io/cloud-provider/service/helpers k8s.io/cloud-provider/volume k8s.io/cloud-provider/volume/errors k8s.io/cloud-provider/volume/helpers -# k8s.io/component-base v0.25.0-alpha.2 => k8s.io/component-base v0.25.0-alpha.2 -## explicit +# k8s.io/component-base v0.25.0 => k8s.io/component-base v0.25.0 +## explicit; go 1.19 k8s.io/component-base/cli/flag k8s.io/component-base/codec k8s.io/component-base/config @@ -1421,11 +1546,12 @@ k8s.io/component-base/metrics/prometheus/restclient k8s.io/component-base/metrics/prometheus/workqueue k8s.io/component-base/metrics/prometheusextension k8s.io/component-base/metrics/testutil -k8s.io/component-base/traces +k8s.io/component-base/tracing +k8s.io/component-base/tracing/api/v1 k8s.io/component-base/version k8s.io/component-base/version/verflag -# k8s.io/component-helpers v0.25.0-alpha.2 => k8s.io/component-helpers v0.25.0-alpha.2 -## explicit +# k8s.io/component-helpers v0.25.0 => k8s.io/component-helpers v0.25.0 +## explicit; go 1.19 k8s.io/component-helpers/apimachinery/lease k8s.io/component-helpers/node/topology k8s.io/component-helpers/node/util @@ -1434,22 +1560,26 @@ k8s.io/component-helpers/scheduling/corev1 k8s.io/component-helpers/scheduling/corev1/nodeaffinity k8s.io/component-helpers/storage/ephemeral k8s.io/component-helpers/storage/volume -# k8s.io/cri-api v0.0.0 => k8s.io/cri-api v0.25.0-alpha.2 +# k8s.io/cri-api v0.0.0 => k8s.io/cri-api v0.25.1-rc.0 +## explicit; go 1.19 k8s.io/cri-api/pkg/apis k8s.io/cri-api/pkg/apis/runtime/v1 k8s.io/cri-api/pkg/apis/runtime/v1alpha2 k8s.io/cri-api/pkg/errors -# k8s.io/csi-translation-lib v0.25.0-alpha.2 => k8s.io/csi-translation-lib v0.25.0-alpha.2 +# k8s.io/csi-translation-lib v0.25.0 => k8s.io/csi-translation-lib v0.25.0 +## explicit; go 1.19 k8s.io/csi-translation-lib k8s.io/csi-translation-lib/plugins -# k8s.io/klog/v2 v2.70.0 -## explicit +# k8s.io/klog/v2 v2.70.1 +## explicit; go 1.13 k8s.io/klog/v2 k8s.io/klog/v2/internal/buffer k8s.io/klog/v2/internal/clock +k8s.io/klog/v2/internal/dbg k8s.io/klog/v2/internal/serialize k8s.io/klog/v2/internal/severity -# k8s.io/kube-openapi v0.0.0-20220603121420-31174f50af60 +# k8s.io/kube-openapi v0.0.0-20220803162953-67bda5d908f1 +## explicit; go 1.18 k8s.io/kube-openapi/pkg/builder k8s.io/kube-openapi/pkg/builder3 k8s.io/kube-openapi/pkg/builder3/util @@ -1465,16 +1595,20 @@ k8s.io/kube-openapi/pkg/spec3 k8s.io/kube-openapi/pkg/util k8s.io/kube-openapi/pkg/util/proto k8s.io/kube-openapi/pkg/validation/spec -# k8s.io/kube-proxy v0.0.0 => k8s.io/kube-proxy v0.25.0-alpha.2 +# k8s.io/kube-proxy v0.0.0 => k8s.io/kube-proxy v0.25.0 +## explicit; go 1.19 k8s.io/kube-proxy/config/v1alpha1 -# k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.25.0-alpha.2 +# k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.25.0 +## explicit; go 1.19 +k8s.io/kube-scheduler/config/v1 k8s.io/kube-scheduler/config/v1beta2 k8s.io/kube-scheduler/config/v1beta3 k8s.io/kube-scheduler/extender/v1 -# k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.25.0-alpha.2 +# k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.25.0 +## explicit; go 1.19 k8s.io/kubectl/pkg/scale -# k8s.io/kubelet v0.24.1 => k8s.io/kubelet v0.25.0-alpha.2 -## explicit +# k8s.io/kubelet v0.24.1 => k8s.io/kubelet v0.25.0 +## explicit; go 1.19 k8s.io/kubelet/config/v1alpha1 k8s.io/kubelet/config/v1beta1 k8s.io/kubelet/pkg/apis @@ -1487,8 +1621,8 @@ k8s.io/kubelet/pkg/apis/pluginregistration/v1 k8s.io/kubelet/pkg/apis/podresources/v1 k8s.io/kubelet/pkg/apis/podresources/v1alpha1 k8s.io/kubelet/pkg/apis/stats/v1alpha1 -# k8s.io/kubernetes v1.25.0-alpha.2 -## explicit +# k8s.io/kubernetes v1.25.0 +## explicit; go 1.19 k8s.io/kubernetes/cmd/kube-proxy/app k8s.io/kubernetes/cmd/kubelet/app k8s.io/kubernetes/cmd/kubelet/app/options @@ -1564,7 +1698,6 @@ k8s.io/kubernetes/pkg/kubelet/configmap k8s.io/kubernetes/pkg/kubelet/container k8s.io/kubernetes/pkg/kubelet/container/testing k8s.io/kubernetes/pkg/kubelet/cri/remote -k8s.io/kubernetes/pkg/kubelet/cri/remote/util k8s.io/kubernetes/pkg/kubelet/cri/streaming k8s.io/kubernetes/pkg/kubelet/cri/streaming/portforward k8s.io/kubernetes/pkg/kubelet/cri/streaming/remotecommand @@ -1577,6 +1710,7 @@ k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec k8s.io/kubernetes/pkg/kubelet/kuberuntime k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs +k8s.io/kubernetes/pkg/kubelet/kuberuntime/util k8s.io/kubernetes/pkg/kubelet/leaky k8s.io/kubernetes/pkg/kubelet/lifecycle k8s.io/kubernetes/pkg/kubelet/logs @@ -1654,6 +1788,7 @@ k8s.io/kubernetes/pkg/scheduler k8s.io/kubernetes/pkg/scheduler/apis/config k8s.io/kubernetes/pkg/scheduler/apis/config/latest k8s.io/kubernetes/pkg/scheduler/apis/config/scheme +k8s.io/kubernetes/pkg/scheduler/apis/config/v1 k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta2 k8s.io/kubernetes/pkg/scheduler/apis/config/v1beta3 k8s.io/kubernetes/pkg/scheduler/apis/config/validation @@ -1695,7 +1830,6 @@ k8s.io/kubernetes/pkg/securitycontext k8s.io/kubernetes/pkg/util/async k8s.io/kubernetes/pkg/util/config k8s.io/kubernetes/pkg/util/conntrack -k8s.io/kubernetes/pkg/util/env k8s.io/kubernetes/pkg/util/filesystem k8s.io/kubernetes/pkg/util/flag k8s.io/kubernetes/pkg/util/flock @@ -1729,7 +1863,6 @@ k8s.io/kubernetes/pkg/volume/downwardapi k8s.io/kubernetes/pkg/volume/emptydir k8s.io/kubernetes/pkg/volume/fc k8s.io/kubernetes/pkg/volume/flexvolume -k8s.io/kubernetes/pkg/volume/flocker k8s.io/kubernetes/pkg/volume/gcepd k8s.io/kubernetes/pkg/volume/git_repo k8s.io/kubernetes/pkg/volume/glusterfs @@ -1739,10 +1872,8 @@ k8s.io/kubernetes/pkg/volume/local k8s.io/kubernetes/pkg/volume/nfs k8s.io/kubernetes/pkg/volume/portworx k8s.io/kubernetes/pkg/volume/projected -k8s.io/kubernetes/pkg/volume/quobyte k8s.io/kubernetes/pkg/volume/rbd k8s.io/kubernetes/pkg/volume/secret -k8s.io/kubernetes/pkg/volume/storageos k8s.io/kubernetes/pkg/volume/util k8s.io/kubernetes/pkg/volume/util/fs k8s.io/kubernetes/pkg/volume/util/fsquota @@ -1759,8 +1890,8 @@ k8s.io/kubernetes/pkg/volume/vsphere_volume k8s.io/kubernetes/pkg/windows/service k8s.io/kubernetes/test/utils k8s.io/kubernetes/third_party/forked/golang/expansion -# k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.25.0-alpha.2 -## explicit +# k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.25.0 +## explicit; go 1.19 k8s.io/legacy-cloud-providers/aws k8s.io/legacy-cloud-providers/azure k8s.io/legacy-cloud-providers/azure/auth @@ -1803,10 +1934,11 @@ k8s.io/legacy-cloud-providers/openstack k8s.io/legacy-cloud-providers/vsphere k8s.io/legacy-cloud-providers/vsphere/vclib k8s.io/legacy-cloud-providers/vsphere/vclib/diskmanagers -# k8s.io/mount-utils v0.25.0-alpha.2 => k8s.io/mount-utils v0.25.0-alpha.2 +# k8s.io/mount-utils v0.25.0 => k8s.io/mount-utils v0.25.1-rc.0 +## explicit; go 1.19 k8s.io/mount-utils -# k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 -## explicit +# k8s.io/utils v0.0.0-20220728103510-ee6ede2d64ed +## explicit; go 1.12 k8s.io/utils/buffer k8s.io/utils/clock k8s.io/utils/clock/testing @@ -1826,10 +1958,11 @@ k8s.io/utils/strings k8s.io/utils/strings/slices k8s.io/utils/trace # sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.32 +## explicit; go 1.17 sigs.k8s.io/apiserver-network-proxy/konnectivity-client/pkg/client sigs.k8s.io/apiserver-network-proxy/konnectivity-client/proto/client # sigs.k8s.io/cloud-provider-azure v1.24.2 -## explicit +## explicit; go 1.18 sigs.k8s.io/cloud-provider-azure/pkg/auth sigs.k8s.io/cloud-provider-azure/pkg/azureclients sigs.k8s.io/cloud-provider-azure/pkg/azureclients/armclient @@ -1880,44 +2013,47 @@ sigs.k8s.io/cloud-provider-azure/pkg/provider sigs.k8s.io/cloud-provider-azure/pkg/provider/virtualmachine sigs.k8s.io/cloud-provider-azure/pkg/retry sigs.k8s.io/cloud-provider-azure/pkg/version -# sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 +# sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2 +## explicit; go 1.18 sigs.k8s.io/json sigs.k8s.io/json/internal/golang/encoding/json -# sigs.k8s.io/structured-merge-diff/v4 v4.2.1 +# sigs.k8s.io/structured-merge-diff/v4 v4.2.3 +## explicit; go 1.13 sigs.k8s.io/structured-merge-diff/v4/fieldpath sigs.k8s.io/structured-merge-diff/v4/merge sigs.k8s.io/structured-merge-diff/v4/schema sigs.k8s.io/structured-merge-diff/v4/typed sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 +## explicit; go 1.12 sigs.k8s.io/yaml # github.com/aws/aws-sdk-go/service/eks => github.com/aws/aws-sdk-go/service/eks v1.38.49 # github.com/digitalocean/godo => github.com/digitalocean/godo v1.27.0 # github.com/rancher/go-rancher => github.com/rancher/go-rancher v0.1.0 -# k8s.io/api => k8s.io/api v0.25.0-alpha.2 -# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.25.0-alpha.2 -# k8s.io/apimachinery => k8s.io/apimachinery v0.25.0-alpha.2 -# k8s.io/apiserver => k8s.io/apiserver v0.25.0-alpha.2 -# k8s.io/cli-runtime => k8s.io/cli-runtime v0.25.0-alpha.2 -# k8s.io/client-go => k8s.io/client-go v0.25.0-alpha.2 -# k8s.io/cloud-provider => k8s.io/cloud-provider v0.25.0-alpha.2 -# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.25.0-alpha.2 -# k8s.io/code-generator => k8s.io/code-generator v0.25.0-alpha.2 -# k8s.io/component-base => k8s.io/component-base v0.25.0-alpha.2 -# k8s.io/component-helpers => k8s.io/component-helpers v0.25.0-alpha.2 -# k8s.io/controller-manager => k8s.io/controller-manager v0.25.0-alpha.2 -# k8s.io/cri-api => k8s.io/cri-api v0.25.0-alpha.2 -# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.25.0-alpha.2 -# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.25.0-alpha.2 -# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.25.0-alpha.2 -# k8s.io/kube-proxy => k8s.io/kube-proxy v0.25.0-alpha.2 -# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.25.0-alpha.2 -# k8s.io/kubectl => k8s.io/kubectl v0.25.0-alpha.2 -# k8s.io/kubelet => k8s.io/kubelet v0.25.0-alpha.2 -# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.25.0-alpha.2 -# k8s.io/metrics => k8s.io/metrics v0.25.0-alpha.2 -# k8s.io/mount-utils => k8s.io/mount-utils v0.25.0-alpha.2 -# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.25.0-alpha.2 -# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.25.0-alpha.2 -# k8s.io/sample-controller => k8s.io/sample-controller v0.25.0-alpha.2 -# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.25.0-alpha.2 +# k8s.io/api => k8s.io/api v0.25.0 +# k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.25.0 +# k8s.io/apimachinery => k8s.io/apimachinery v0.26.0-alpha.0 +# k8s.io/apiserver => k8s.io/apiserver v0.25.0 +# k8s.io/cli-runtime => k8s.io/cli-runtime v0.25.0 +# k8s.io/client-go => k8s.io/client-go v0.25.0 +# k8s.io/cloud-provider => k8s.io/cloud-provider v0.25.0 +# k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.25.0 +# k8s.io/code-generator => k8s.io/code-generator v0.25.1-rc.0 +# k8s.io/component-base => k8s.io/component-base v0.25.0 +# k8s.io/component-helpers => k8s.io/component-helpers v0.25.0 +# k8s.io/controller-manager => k8s.io/controller-manager v0.25.0 +# k8s.io/cri-api => k8s.io/cri-api v0.25.1-rc.0 +# k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.25.0 +# k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.25.0 +# k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.25.0 +# k8s.io/kube-proxy => k8s.io/kube-proxy v0.25.0 +# k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.25.0 +# k8s.io/kubectl => k8s.io/kubectl v0.25.0 +# k8s.io/kubelet => k8s.io/kubelet v0.25.0 +# k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.25.0 +# k8s.io/metrics => k8s.io/metrics v0.25.0 +# k8s.io/mount-utils => k8s.io/mount-utils v0.25.1-rc.0 +# k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.25.0 +# k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.25.0 +# k8s.io/sample-controller => k8s.io/sample-controller v0.25.0 +# k8s.io/pod-security-admission => k8s.io/pod-security-admission v0.25.0 diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/json/go.mod b/cluster-autoscaler/vendor/sigs.k8s.io/json/go.mod deleted file mode 100644 index 6fad584a0c7..00000000000 --- a/cluster-autoscaler/vendor/sigs.k8s.io/json/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module sigs.k8s.io/json - -go 1.17 diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go index 3a8b64547da..a6c419365bb 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/decode.go @@ -93,7 +93,7 @@ import ( // Instead, they are replaced by the Unicode replacement // character U+FFFD. // -func Unmarshal(data []byte, v interface{}, opts ...UnmarshalOpt) error { +func Unmarshal(data []byte, v any, opts ...UnmarshalOpt) error { // Check for well-formedness. // Avoids filling out half a data structure // before discovering a JSON syntax error. @@ -167,16 +167,16 @@ func (e *InvalidUnmarshalError) Error() string { return "json: Unmarshal(nil)" } - if e.Type.Kind() != reflect.Ptr { + if e.Type.Kind() != reflect.Pointer { return "json: Unmarshal(non-pointer " + e.Type.String() + ")" } return "json: Unmarshal(nil " + e.Type.String() + ")" } */ -func (d *decodeState) unmarshal(v interface{}) error { +func (d *decodeState) unmarshal(v any) error { rv := reflect.ValueOf(v) - if rv.Kind() != reflect.Ptr || rv.IsNil() { + if rv.Kind() != reflect.Pointer || rv.IsNil() { return &InvalidUnmarshalError{reflect.TypeOf(v)} } @@ -233,7 +233,7 @@ type decodeState struct { disallowUnknownFields bool savedStrictErrors []error - seenStrictErrors map[string]struct{} + seenStrictErrors map[strictError]struct{} strictFieldStack []string caseSensitive bool @@ -425,7 +425,7 @@ type unquotedValue struct{} // quoted string literal or literal null into an interface value. // If it finds anything other than a quoted string literal or null, // valueQuoted returns unquotedValue{}. -func (d *decodeState) valueQuoted() interface{} { +func (d *decodeState) valueQuoted() any { switch d.opcode { default: panic(phasePanicMsg) @@ -467,7 +467,7 @@ func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnm // If v is a named type and is addressable, // start with its address, so that if the type has pointer methods, // we find them. - if v.Kind() != reflect.Ptr && v.Type().Name() != "" && v.CanAddr() { + if v.Kind() != reflect.Pointer && v.Type().Name() != "" && v.CanAddr() { haveAddr = true v = v.Addr() } @@ -476,14 +476,14 @@ func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnm // usefully addressable. if v.Kind() == reflect.Interface && !v.IsNil() { e := v.Elem() - if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { + if e.Kind() == reflect.Pointer && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Pointer) { haveAddr = false v = e continue } } - if v.Kind() != reflect.Ptr { + if v.Kind() != reflect.Pointer { break } @@ -678,7 +678,7 @@ func (d *decodeState) object(v reflect.Value) error { reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr: default: - if !reflect.PtrTo(t.Key()).Implements(textUnmarshalerType) { + if !reflect.PointerTo(t.Key()).Implements(textUnmarshalerType) { d.saveError(&UnmarshalTypeError{Value: "object", Type: t, Offset: int64(d.off)}) d.skip() return nil @@ -695,7 +695,7 @@ func (d *decodeState) object(v reflect.Value) error { seenKeys = map[string]struct{}{} } if _, seen := seenKeys[fieldName]; seen { - d.saveStrictError(d.newFieldError("duplicate field", fieldName)) + d.saveStrictError(d.newFieldError(duplicateStrictErrType, fieldName)) } else { seenKeys[fieldName] = struct{}{} } @@ -711,7 +711,7 @@ func (d *decodeState) object(v reflect.Value) error { var seenKeys uint64 checkDuplicateField = func(fieldNameIndex int, fieldName string) { if seenKeys&(1< 0 { - return fmt.Errorf("%s %q", msg, strings.Join(d.strictFieldStack, "")+"."+field) + return &strictError{ + ErrType: errType, + Path: strings.Join(d.strictFieldStack, "") + "." + field, + } } else { - return fmt.Errorf("%s %q", msg, field) + return &strictError{ + ErrType: errType, + Path: field, + } } } // saveStrictError saves a strict decoding error, // for reporting at the end of the unmarshal if no other errors occurred. -func (d *decodeState) saveStrictError(err error) { +func (d *decodeState) saveStrictError(err *strictError) { // prevent excessive numbers of accumulated errors if len(d.savedStrictErrors) >= 100 { return } // dedupe accumulated strict errors if d.seenStrictErrors == nil { - d.seenStrictErrors = map[string]struct{}{} + d.seenStrictErrors = map[strictError]struct{}{} } - msg := err.Error() - if _, seen := d.seenStrictErrors[msg]; seen { + if _, seen := d.seenStrictErrors[*err]; seen { return } // accumulate the error - d.seenStrictErrors[msg] = struct{}{} + d.seenStrictErrors[*err] = struct{}{} d.savedStrictErrors = append(d.savedStrictErrors, err) } @@ -118,6 +122,33 @@ func (d *decodeState) appendStrictFieldStackIndex(i int) { d.strictFieldStack = append(d.strictFieldStack, "[", strconv.Itoa(i), "]") } +type strictErrType string + +const ( + unknownStrictErrType strictErrType = "unknown field" + duplicateStrictErrType strictErrType = "duplicate field" +) + +// strictError is a strict decoding error +// It has an ErrType (either unknown or duplicate) +// and a path to the erroneous field +type strictError struct { + ErrType strictErrType + Path string +} + +func (e *strictError) Error() string { + return string(e.ErrType) + " " + strconv.Quote(e.Path) +} + +func (e *strictError) FieldPath() string { + return e.Path +} + +func (e *strictError) SetFieldPath(path string) { + e.Path = path +} + // UnmarshalStrictError holds errors resulting from use of strict disallow___ decoder directives. // If this is returned from Unmarshal(), it means the decoding was successful in all other respects. type UnmarshalStrictError struct { diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/scanner.go b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/scanner.go index 9dc1903e2db..dbaa821becc 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/scanner.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/scanner.go @@ -83,7 +83,7 @@ type scanner struct { } var scannerPool = sync.Pool{ - New: func() interface{} { + New: func() any { return &scanner{} }, } diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/stream.go b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/stream.go index 5f87df1c628..6775b4cf8aa 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/stream.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/stream.go @@ -45,7 +45,7 @@ func (dec *Decoder) DisallowUnknownFields() { dec.d.disallowUnknownFields = true // // See the documentation for Unmarshal for details about // the conversion of JSON into a Go value. -func (dec *Decoder) Decode(v interface{}) error { +func (dec *Decoder) Decode(v any) error { if dec.err != nil { return dec.err } @@ -197,7 +197,7 @@ func NewEncoder(w io.Writer) *Encoder { // // See the documentation for Marshal for details about the // conversion of Go values to JSON. -func (enc *Encoder) Encode(v interface{}) error { +func (enc *Encoder) Encode(v any) error { if enc.err != nil { return enc.err } @@ -290,7 +290,7 @@ var _ Unmarshaler = (*RawMessage)(nil) // string, for JSON string literals // nil, for JSON null // -type Token interface{} +type Token any */ const ( @@ -457,7 +457,7 @@ func (dec *Decoder) Token() (Token, error) { if !dec.tokenValueAllowed() { return dec.tokenError(c) } - var x interface{} + var x any if err := dec.Decode(&x); err != nil { return nil, err } diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/tags.go b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/tags.go index c38fd5102f6..b490328f4c4 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/tags.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/json/internal/golang/encoding/json/tags.go @@ -15,10 +15,8 @@ type tagOptions string // parseTag splits a struct field's json tag into its name and // comma-separated options. func parseTag(tag string) (string, tagOptions) { - if idx := strings.Index(tag, ","); idx != -1 { - return tag[:idx], tagOptions(tag[idx+1:]) - } - return tag, tagOptions("") + tag, opt, _ := strings.Cut(tag, ",") + return tag, tagOptions(opt) } // Contains reports whether a comma-separated list of options @@ -30,15 +28,11 @@ func (o tagOptions) Contains(optionName string) bool { } s := string(o) for s != "" { - var next string - i := strings.Index(s, ",") - if i >= 0 { - s, next = s[:i], s[i+1:] - } - if s == optionName { + var name string + name, s, _ = strings.Cut(s, ",") + if name == optionName { return true } - s = next } return false } diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/json/json.go b/cluster-autoscaler/vendor/sigs.k8s.io/json/json.go index 764e2a84c72..d3a42b4261f 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/json/json.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/json/json.go @@ -84,6 +84,8 @@ const ( // and a list of the strict failures (if any) are returned. If no `strictOptions` are selected, // all supported strict checks are performed. // +// Strict errors returned will implement the FieldError interface for the specific erroneous fields. +// // Currently supported strict checks are: // - DisallowDuplicateFields: ensure the data contains no duplicate fields // - DisallowUnknownFields: ensure the data contains no unknown fields (when decoding into typed structs) @@ -137,3 +139,12 @@ func SyntaxErrorOffset(err error) (isSyntaxError bool, offset int64) { return false, 0 } } + +// FieldError is an error that provides access to the path of the erroneous field +type FieldError interface { + error + // FieldPath provides the full path of the erroneous field within the json object. + FieldPath() string + // SetFieldPath updates the path of the erroneous field output in the error message. + SetFieldPath(path string) +} diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go index 33a3085bf2c..1b23dcbd5ef 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/merge/update.go @@ -250,33 +250,54 @@ func (s *Updater) addBackOwnedItems(merged, pruned *typed.TypedValue, managedFie } managedAtVersion[managerSet.APIVersion()] = managedAtVersion[managerSet.APIVersion()].Union(managerSet.Set()) } - for version, managed := range managedAtVersion { - merged, err = s.Converter.Convert(merged, version) + // Add back owned items at pruned version first to avoid conversion failure + // caused by pruned fields which are required for conversion. + prunedVersion := fieldpath.APIVersion(*pruned.TypeRef().NamedType) + if managed, ok := managedAtVersion[prunedVersion]; ok { + merged, pruned, err = s.addBackOwnedItemsForVersion(merged, pruned, prunedVersion, managed) if err != nil { - if s.Converter.IsMissingVersionError(err) { - continue - } - return nil, fmt.Errorf("failed to convert merged object at version %v: %v", version, err) + return nil, err } - pruned, err = s.Converter.Convert(pruned, version) + delete(managedAtVersion, prunedVersion) + } + for version, managed := range managedAtVersion { + merged, pruned, err = s.addBackOwnedItemsForVersion(merged, pruned, version, managed) if err != nil { - if s.Converter.IsMissingVersionError(err) { - continue - } - return nil, fmt.Errorf("failed to convert pruned object at version %v: %v", version, err) + return nil, err } - mergedSet, err := merged.ToFieldSet() - if err != nil { - return nil, fmt.Errorf("failed to create field set from merged object at version %v: %v", version, err) + } + return pruned, nil +} + +// addBackOwnedItemsForVersion adds back any fields, list and map items that were removed by prune with specific managed field path at a version. +// It is an extracted sub-function from addBackOwnedItems for code reuse. +func (s *Updater) addBackOwnedItemsForVersion(merged, pruned *typed.TypedValue, version fieldpath.APIVersion, managed *fieldpath.Set) (*typed.TypedValue, *typed.TypedValue, error) { + var err error + merged, err = s.Converter.Convert(merged, version) + if err != nil { + if s.Converter.IsMissingVersionError(err) { + return merged, pruned, nil } - prunedSet, err := pruned.ToFieldSet() - if err != nil { - return nil, fmt.Errorf("failed to create field set from pruned object at version %v: %v", version, err) + return nil, nil, fmt.Errorf("failed to convert merged object at version %v: %v", version, err) + } + pruned, err = s.Converter.Convert(pruned, version) + if err != nil { + if s.Converter.IsMissingVersionError(err) { + return merged, pruned, nil } - sc, tr := merged.Schema(), merged.TypeRef() - pruned = merged.RemoveItems(mergedSet.EnsureNamedFieldsAreMembers(sc, tr).Difference(prunedSet.EnsureNamedFieldsAreMembers(sc, tr).Union(managed.EnsureNamedFieldsAreMembers(sc, tr)))) + return nil, nil, fmt.Errorf("failed to convert pruned object at version %v: %v", version, err) } - return pruned, nil + mergedSet, err := merged.ToFieldSet() + if err != nil { + return nil, nil, fmt.Errorf("failed to create field set from merged object at version %v: %v", version, err) + } + prunedSet, err := pruned.ToFieldSet() + if err != nil { + return nil, nil, fmt.Errorf("failed to create field set from pruned object at version %v: %v", version, err) + } + sc, tr := merged.Schema(), merged.TypeRef() + pruned = merged.RemoveItems(mergedSet.EnsureNamedFieldsAreMembers(sc, tr).Difference(prunedSet.EnsureNamedFieldsAreMembers(sc, tr).Union(managed.EnsureNamedFieldsAreMembers(sc, tr)))) + return merged, pruned, nil } // addBackDanglingItems makes sure that the fields list and map items removed by prune were diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go index 01103b38a90..7e5dc758274 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/elements.go @@ -16,7 +16,9 @@ limitations under the License. package schema -import "sync" +import ( + "sync" +) // Schema is a list of named types. // @@ -27,6 +29,11 @@ type Schema struct { once sync.Once m map[string]TypeDef + + lock sync.Mutex + // Cached results of resolving type references to atoms. Only stores + // type references which require fields of Atom to be overriden. + resolvedTypes map[TypeRef]Atom } // A TypeSpecifier references a particular type in a schema. @@ -48,6 +55,12 @@ type TypeRef struct { // Either the name or one member of Atom should be set. NamedType *string `yaml:"namedType,omitempty"` Inlined Atom `yaml:",inline,omitempty"` + + // If this reference refers to a map-type or list-type, this field overrides + // the `ElementRelationship` of the referred type when resolved. + // If this field is nil, then it has no effect. + // See `Map` and `List` for more information about `ElementRelationship` + ElementRelationship *ElementRelationship `yaml:"elementRelationship,omitempty"` } // Atom represents the smallest possible pieces of the type system. @@ -88,11 +101,11 @@ const ( // Map is a key-value pair. Its default semantics are the same as an // associative list, but: -// * It is serialized differently: +// - It is serialized differently: // map: {"k": {"value": "v"}} // list: [{"key": "k", "value": "v"}] -// * Keys must be string typed. -// * Keys can't have multiple components. +// - Keys must be string typed. +// - Keys can't have multiple components. // // Optionally, maps may be atomic (for example, imagine representing an RGB // color value--it doesn't make sense to have different actors own the R and G @@ -146,6 +159,31 @@ func (m *Map) FindField(name string) (StructField, bool) { return sf, ok } +// CopyInto this instance of Map into the other +// If other is nil this method does nothing. +// If other is already initialized, overwrites it with this instance +// Warning: Not thread safe +func (m *Map) CopyInto(dst *Map) { + if dst == nil { + return + } + + // Map type is considered immutable so sharing references + dst.Fields = m.Fields + dst.ElementType = m.ElementType + dst.Unions = m.Unions + dst.ElementRelationship = m.ElementRelationship + + if m.m != nil { + // If cache is non-nil then the once token had been consumed. + // Must reset token and use it again to ensure same semantics. + dst.once = sync.Once{} + dst.once.Do(func() { + dst.m = m.m + }) + } +} + // UnionFields are mapping between the fields that are part of the union and // their discriminated value. The discriminated value has to be set, and // should not conflict with other discriminated value in the list. @@ -244,18 +282,93 @@ func (s *Schema) FindNamedType(name string) (TypeDef, bool) { return t, ok } +func (s *Schema) resolveNoOverrides(tr TypeRef) (Atom, bool) { + result := Atom{} + + if tr.NamedType != nil { + t, ok := s.FindNamedType(*tr.NamedType) + if !ok { + return Atom{}, false + } + + result = t.Atom + } else { + result = tr.Inlined + } + + return result, true +} + // Resolve is a convenience function which returns the atom referenced, whether // it is inline or named. Returns (Atom{}, false) if the type can't be resolved. // // This allows callers to not care about the difference between a (possibly // inlined) reference and a definition. func (s *Schema) Resolve(tr TypeRef) (Atom, bool) { - if tr.NamedType != nil { - t, ok := s.FindNamedType(*tr.NamedType) - if !ok { + // If this is a plain reference with no overrides, just return the type + if tr.ElementRelationship == nil { + return s.resolveNoOverrides(tr) + } + + s.lock.Lock() + defer s.lock.Unlock() + + if s.resolvedTypes == nil { + s.resolvedTypes = make(map[TypeRef]Atom) + } + + var result Atom + var exists bool + + // Return cached result if available + // If not, calculate result and cache it + if result, exists = s.resolvedTypes[tr]; !exists { + if result, exists = s.resolveNoOverrides(tr); exists { + // Allow field-level electives to override the referred type's modifiers + switch { + case result.Map != nil: + mapCopy := Map{} + result.Map.CopyInto(&mapCopy) + mapCopy.ElementRelationship = *tr.ElementRelationship + result.Map = &mapCopy + case result.List != nil: + listCopy := *result.List + listCopy.ElementRelationship = *tr.ElementRelationship + result.List = &listCopy + case result.Scalar != nil: + return Atom{}, false + default: + return Atom{}, false + } + } else { return Atom{}, false } - return t.Atom, true + + // Save result. If it is nil, that is also recorded as not existing. + s.resolvedTypes[tr] = result + } + + return result, true +} + +// Clones this instance of Schema into the other +// If other is nil this method does nothing. +// If other is already initialized, overwrites it with this instance +// Warning: Not thread safe +func (s *Schema) CopyInto(dst *Schema) { + if dst == nil { + return + } + + // Schema type is considered immutable so sharing references + dst.Types = s.Types + + if s.m != nil { + // If cache is non-nil then the once token had been consumed. + // Must reset token and use it again to ensure same semantics. + dst.once = sync.Once{} + dst.once.Do(func() { + dst.m = s.m + }) } - return tr.Inlined, true } diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/equals.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/equals.go index 4c303eecc54..b668eff8339 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/equals.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/equals.go @@ -52,6 +52,9 @@ func (a *TypeRef) Equals(b *TypeRef) bool { } //return true } + if a.ElementRelationship != b.ElementRelationship { + return false + } return a.Inlined.Equals(&b.Inlined) } diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go index bb60e2a5fda..7d64d1308ce 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/schema/schemaschema.go @@ -66,6 +66,9 @@ var SchemaSchemaYAML = `types: - name: untyped type: namedType: untyped + - name: elementRelationship + type: + scalar: string - name: scalar scalar: string - name: map diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/helpers.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/helpers.go index 6b2b2cb4a1e..19c77334f6c 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/helpers.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/helpers.go @@ -105,7 +105,11 @@ type atomHandler interface { func resolveSchema(s *schema.Schema, tr schema.TypeRef, v value.Value, ah atomHandler) ValidationErrors { a, ok := s.Resolve(tr) if !ok { - return errorf("schema error: no type found matching: %v", *tr.NamedType) + typeName := "inlined type" + if tr.NamedType != nil { + typeName = *tr.NamedType + } + return errorf("schema error: no type found matching: %v", typeName) } a = deduceAtom(a, v) diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go index 75244ef6467..91364408307 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/merge.go @@ -80,7 +80,12 @@ func (w *mergingWalker) merge(prefixFn func() string) (errs ValidationErrors) { alhs := deduceAtom(a, w.lhs) arhs := deduceAtom(a, w.rhs) - if alhs.Equals(&arhs) { + + // deduceAtom does not fix the type for nil values + // nil is a wildcard and will accept whatever form the other operand takes + if w.rhs == nil { + errs = append(errs, handleAtom(alhs, w.typeRef, w)...) + } else if w.lhs == nil || alhs.Equals(&arhs) { errs = append(errs, handleAtom(arhs, w.typeRef, w)...) } else { w2 := *w diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/reconcile_schema.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/reconcile_schema.go index 2b98b729cac..6a7697e3b76 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/reconcile_schema.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/reconcile_schema.go @@ -110,7 +110,7 @@ func (v *reconcileWithSchemaWalker) finishDescent(v2 *reconcileWithSchemaWalker) } // ReconcileFieldSetWithSchema reconciles the a field set with any changes to the -//// object's schema since the field set was written. Returns the reconciled field set, or nil of +// object's schema since the field set was written. Returns the reconciled field set, or nil of // no changes were made to the field set. // // Supports: diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go index e9e6be8befa..d63a97fe20a 100644 --- a/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go +++ b/cluster-autoscaler/vendor/sigs.k8s.io/structured-merge-diff/v4/typed/typed.go @@ -99,12 +99,13 @@ func (tv TypedValue) ToFieldSet() (*fieldpath.Set, error) { // Merge returns the result of merging tv and pso ("partially specified // object") together. Of note: -// * No fields can be removed by this operation. -// * If both tv and pso specify a given leaf field, the result will keep pso's -// value. -// * Container typed elements will have their items ordered: -// * like tv, if pso doesn't change anything in the container -// * like pso, if pso does change something in the container. +// - No fields can be removed by this operation. +// - If both tv and pso specify a given leaf field, the result will keep pso's +// value. +// - Container typed elements will have their items ordered: +// 1. like tv, if pso doesn't change anything in the container +// 2. like pso, if pso does change something in the container. +// // tv and pso must both be of the same type (their Schema and TypeRef must // match), or an error will be returned. Validation errors will be returned if // the objects don't conform to the schema. diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/yaml/go.mod b/cluster-autoscaler/vendor/sigs.k8s.io/yaml/go.mod deleted file mode 100644 index 818bbb51937..00000000000 --- a/cluster-autoscaler/vendor/sigs.k8s.io/yaml/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module sigs.k8s.io/yaml - -go 1.12 - -require ( - github.com/davecgh/go-spew v1.1.1 - gopkg.in/yaml.v2 v2.4.0 -) diff --git a/cluster-autoscaler/vendor/sigs.k8s.io/yaml/go.sum b/cluster-autoscaler/vendor/sigs.k8s.io/yaml/go.sum deleted file mode 100644 index b7b8cbb104f..00000000000 --- a/cluster-autoscaler/vendor/sigs.k8s.io/yaml/go.sum +++ /dev/null @@ -1,6 +0,0 @@ -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= -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/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=