diff --git a/Gopkg.lock b/Gopkg.lock index d785ed812..79e1f7743 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -470,8 +470,7 @@ version = "kubernetes-1.12.0-beta.1" [[projects]] - branch = "master" - digest = "1:3f17b5076dfd753cc5f4f21e4d569ed2e94b3a4ff3965874582939afb85ab6f1" + digest = "1:fc72e958c0a0028b7e7e61d9e80df28dec65508a9176928b046c02f353805d42" name = "k8s.io/apiextensions-apiserver" packages = [ "pkg/apis/apiextensions", @@ -481,7 +480,8 @@ "pkg/client/clientset/clientset/typed/apiextensions/v1beta1", ] pruneopts = "" - revision = "29a2b5e2b48eeaba42bba7d57afe9414f1e9e40a" + revision = "e138199d57ae5108ebe5e18447f6b21c0efe9677" + version = "kubernetes-1.12.0-beta.1" [[projects]] digest = "1:a36b0af9cb67dd558016e48ff172c14e1c22766860fab00938f69eafd1fcac7b" diff --git a/Gopkg.toml b/Gopkg.toml index 61d9c1d0b..d1a670f97 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -49,3 +49,7 @@ required = [ [[constraint]] name = "k8s.io/code-generator" version = "kubernetes-1.12.0-beta.1" + +[[constraint]] + name = "k8s.io/apiextensions-apiserver" + version = "kubernetes-1.12.0-beta.1" diff --git a/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json b/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json index f171b13b9..a21770294 100644 --- a/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json +++ b/vendor/k8s.io/apiextensions-apiserver/Godeps/Godeps.json @@ -1,6 +1,6 @@ { "ImportPath": "k8s.io/apiextensions-apiserver", - "GoVersion": "go1.9", + "GoVersion": "go1.10", "GodepVersion": "v80", "Packages": [ "./..." @@ -10,6 +10,14 @@ "ImportPath": "bitbucket.org/ww/goautoneg", "Rev": "75cd24fc2f2c2a2088577d12123ddee5f54e0675" }, + { + "ImportPath": "github.com/Azure/go-ansiterm", + "Rev": "d6e3b3328b783f23731bc4d058875b0371ff8109" + }, + { + "ImportPath": "github.com/Azure/go-ansiterm/winterm", + "Rev": "d6e3b3328b783f23731bc4d058875b0371ff8109" + }, { "ImportPath": "github.com/NYTimes/gziphandler", "Rev": "56545f4a5d46df9a6648819d1664c3a03a13ffdb" @@ -354,6 +362,14 @@ "ImportPath": "github.com/dgrijalva/jwt-go", "Rev": "01aeca54ebda6e0fbfafd0a524d234159c05ec20" }, + { + "ImportPath": "github.com/docker/docker/pkg/term", + "Rev": "a9fbbdc8dd8794b20af358382ab780559bca589d" + }, + { + "ImportPath": "github.com/docker/docker/pkg/term/windows", + "Rev": "a9fbbdc8dd8794b20af358382ab780559bca589d" + }, { "ImportPath": "github.com/elazarl/go-bindata-assetfs", "Rev": "3dcc96556217539f50599357fb481ac0dc7439b9" @@ -520,7 +536,7 @@ }, { "ImportPath": "github.com/imdario/mergo", - "Rev": "6633656539c1639d9d78127b7d47c622b5d7b6dc" + "Rev": "9316a62528ac99aaecb4e47eadd6dc8aa6533d58" }, { "ImportPath": "github.com/inconshreveable/mousetrap", @@ -548,7 +564,7 @@ }, { "ImportPath": "github.com/matttproud/golang_protobuf_extensions/pbutil", - "Rev": "fc2b8d3a73c4867e51861bbdd5ae3c1f0869dd6a" + "Rev": "c12348ce28de40eed0136aa2b644d0ee0650e56c" }, { "ImportPath": "github.com/modern-go/concurrent", @@ -598,6 +614,10 @@ "ImportPath": "github.com/prometheus/procfs/xfs", "Rev": "65c1f6f8f0fc1e2185eb9863a3bc751496404259" }, + { + "ImportPath": "github.com/sirupsen/logrus", + "Rev": "89742aefa4b206dcf400792f3bd35b542998eb3b" + }, { "ImportPath": "github.com/spf13/cobra", "Rev": "c439c4fa093711d42e1b01acb1235b52004753c1" @@ -624,15 +644,15 @@ }, { "ImportPath": "golang.org/x/crypto/bcrypt", - "Rev": "49796115aa4b964c318aad4f3084fdb41e9aa067" + "Rev": "de0752318171da717af4ce24d0a2e8626afaeb11" }, { "ImportPath": "golang.org/x/crypto/blowfish", - "Rev": "49796115aa4b964c318aad4f3084fdb41e9aa067" + "Rev": "de0752318171da717af4ce24d0a2e8626afaeb11" }, { "ImportPath": "golang.org/x/crypto/ssh/terminal", - "Rev": "49796115aa4b964c318aad4f3084fdb41e9aa067" + "Rev": "de0752318171da717af4ce24d0a2e8626afaeb11" }, { "ImportPath": "golang.org/x/net/context", @@ -666,6 +686,14 @@ "ImportPath": "golang.org/x/net/websocket", "Rev": "1c05540f6879653db88113bc4a2b70aec4bd491f" }, + { + "ImportPath": "golang.org/x/oauth2", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, + { + "ImportPath": "golang.org/x/oauth2/internal", + "Rev": "a6bd8cefa1811bd24b86f8902872e4e8225f74c4" + }, { "ImportPath": "golang.org/x/sys/unix", "Rev": "95c6576299259db960f6c5b9b69ea52422860fce" @@ -816,1311 +844,1343 @@ }, { "ImportPath": "k8s.io/api/admission/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/admissionregistration/v1alpha1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/admissionregistration/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/apps/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/apps/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/apps/v1beta2", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/authentication/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/authentication/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/authorization/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/authorization/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/autoscaling/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/autoscaling/v2beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" + }, + { + "ImportPath": "k8s.io/api/autoscaling/v2beta2", + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/batch/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/batch/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/batch/v2alpha1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/certificates/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/coordination/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/core/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/events/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/extensions/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/networking/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/policy/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/rbac/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/rbac/v1alpha1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/rbac/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/scheduling/v1alpha1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/scheduling/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/settings/v1alpha1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/storage/v1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/storage/v1alpha1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { "ImportPath": "k8s.io/api/storage/v1beta1", - "Rev": "8be2a0b24ed0dac9cfc1ac2d987ea16cfcdbecb6" + "Rev": "0527d9f2238346a310e6cf1e6afe2422f329cc3d" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/equality", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/apitesting", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/errors", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/apitesting/fuzzer", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/meta", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/apitesting/roundtrip", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/meta/table", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/equality", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/resource", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/errors", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/meta", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing/fuzzer", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/meta/table", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { - "ImportPath": "k8s.io/apimachinery/pkg/api/testing/roundtrip", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "ImportPath": "k8s.io/apimachinery/pkg/api/resource", + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/validation", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/api/validation/path", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/fuzzer", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/internalversion", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1/validation", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/apis/meta/v1beta1", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/conversion/queryparams", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/fields", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/labels", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/schema", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/json", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/protobuf", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/recognizer", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/streaming", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/runtime/serializer/versioning", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/selection", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/types", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/cache", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/clock", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/diff", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/duration", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/errors", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/framer", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/intstr", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/json", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/mergepatch", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/naming", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/net", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/rand", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/runtime", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/sets", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/strategicpatch", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/uuid", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/validation/field", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/wait", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/waitgroup", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/util/yaml", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/version", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/pkg/watch", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/json", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apimachinery/third_party/forked/golang/reflect", - "Rev": "241e268dc8e07223510442ab7d7902695c585d80" + "Rev": "63dd81ab0848cd58da3257a806f599808708029c" }, { "ImportPath": "k8s.io/apiserver/pkg/admission", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/configuration", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/initializer", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/metrics", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/initialization", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/namespace/lifecycle", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/config", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/config/apis/webhookadmission/v1alpha1", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/errors", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/generic", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/mutating", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/namespace", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/request", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/rules", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" + }, + { + "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/util", + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/admission/plugin/webhook/validating", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver/install", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/apiserver/v1alpha1", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/install", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" + }, + { + "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1", + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1alpha1", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/v1beta1", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/apis/audit/validation", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/audit", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/audit/policy", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/authenticator", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/authenticatorfactory", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/group", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/anonymous", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/bearertoken", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/headerrequest", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/union", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/websocket", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/request/x509", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/serviceaccount", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/token/tokenfile", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authentication/user", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/authorizer", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/authorizerfactory", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" + }, + { + "ImportPath": "k8s.io/apiserver/pkg/authorization/path", + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/authorization/union", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/discovery", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/filters", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers/negotiation", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/handlers/responsewriters", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/metrics", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/openapi", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/endpoints/request", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/features", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/generic", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/generic/registry", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/generic/testing", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/rest", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/registry/rest/resttest", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/filters", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/healthz", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/httplog", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/mux", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/options", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/resourceconfig", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/routes", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/routes/data/swagger", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/server/storage", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/cacher", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/errors", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/etcdtest", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/metrics", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/testing", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/testing/testingcert", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd/util", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/etcd3", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/names", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/storagebackend", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/storagebackend/factory", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/testing", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/storage/value", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" + }, + { + "ImportPath": "k8s.io/apiserver/pkg/util/dryrun", + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/feature", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/flag", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/flushwriter", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/logs", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/openapi", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/trace", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/webhook", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/pkg/util/wsstream", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/audit/buffered", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/audit/log", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/audit/truncate", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/audit/webhook", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/authenticator/token/webhook", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/apiserver/plugin/pkg/authorizer/webhook", - "Rev": "2eca029519f62c8c618a3dd7d652c54a6786cc5b" + "Rev": "401c12dcc30371b4ca17946f63489964f282963b" }, { "ImportPath": "k8s.io/client-go/discovery", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/discovery/fake", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/dynamic", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/admissionregistration/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/apps", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/apps/v1beta2", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" + }, + { + "ImportPath": "k8s.io/client-go/informers/autoscaling/v2beta2", + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/batch", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/batch/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/batch/v2alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/certificates", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/certificates/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/coordination", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/coordination/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/core", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/core/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/events", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/events/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/extensions", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/extensions/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/internalinterfaces", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/networking", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/networking/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/policy", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/policy/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/rbac", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/rbac/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/scheduling", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/scheduling/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/scheduling/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/settings", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/settings/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/storage", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/informers/storage/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/scheme", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/admissionregistration/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/apps/v1beta2", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authentication/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/authorization/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" + }, + { + "ImportPath": "k8s.io/client-go/kubernetes/typed/autoscaling/v2beta2", + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/batch/v2alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/certificates/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/coordination/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/core/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/events/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/extensions/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/networking/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/policy/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/rbac/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/scheduling/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/settings/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/kubernetes/typed/storage/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/admissionregistration/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/apps/v1beta2", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" + }, + { + "ImportPath": "k8s.io/client-go/listers/autoscaling/v2beta2", + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/batch/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/batch/v2alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/certificates/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/coordination/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/core/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/events/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/extensions/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/networking/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/policy/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/rbac/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/scheduling/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/scheduling/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/settings/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/listers/storage/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1alpha1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/pkg/apis/clientauthentication/v1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/pkg/version", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/plugin/pkg/client/auth/exec", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/rest", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/rest/watch", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/restmapper", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme/appsint", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme/appsv1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme/appsv1beta2", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme/autoscalingv1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme/extensionsint", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/scale/scheme/extensionsv1beta1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/testing", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/third_party/forked/golang/template", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/auth", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/cache", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/latest", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/clientcmd/api/v1", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/metrics", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/pager", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/tools/reference", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/transport", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/buffer", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/cert", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/connrotation", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/flowcontrol", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/homedir", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/integer", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/jsonpath", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/retry", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/client-go/util/workqueue", - "Rev": "0ec73abb067faf46eeb80234f4df6e8413ef3e09" + "Rev": "173ad5fde8e4ee8f92763f78c6ba37322f2125ab" }, { "ImportPath": "k8s.io/kube-openapi/pkg/builder", - "Rev": "91cfa479c814065e420cee7ed227db0f63a5854e" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/common", - "Rev": "91cfa479c814065e420cee7ed227db0f63a5854e" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/handler", - "Rev": "91cfa479c814065e420cee7ed227db0f63a5854e" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/util", - "Rev": "91cfa479c814065e420cee7ed227db0f63a5854e" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" }, { "ImportPath": "k8s.io/kube-openapi/pkg/util/proto", - "Rev": "91cfa479c814065e420cee7ed227db0f63a5854e" + "Rev": "0cf8f7e6ed1d2e3d47d02e3b6e559369af24d803" } ] } diff --git a/vendor/k8s.io/apiextensions-apiserver/OWNERS b/vendor/k8s.io/apiextensions-apiserver/OWNERS index d9cb557fc..f76281ad3 100644 --- a/vendor/k8s.io/apiextensions-apiserver/OWNERS +++ b/vendor/k8s.io/apiextensions-apiserver/OWNERS @@ -7,3 +7,5 @@ approvers: - deads2k - lavalamp - sttts +labels: +- sig/api-machinery diff --git a/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh b/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh index a586b48e0..0dc83d07f 100755 --- a/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh +++ b/vendor/k8s.io/apiextensions-apiserver/hack/update-codegen.sh @@ -18,63 +18,17 @@ set -o errexit set -o nounset set -o pipefail -SCRIPT_ROOT=$(dirname "${BASH_SOURCE}")/.. -SCRIPT_BASE=${SCRIPT_ROOT}/../.. -CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${SCRIPT_ROOT}; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo k8s.io/code-generator)} - -if LANG=C sed --help 2>&1 | grep -q GNU; then - SED="sed" -elif which gsed &>/dev/null; then - SED="gsed" -else - echo "Failed to find GNU sed as sed or gsed. If you are on Mac: brew install gnu-sed." >&2 - exit 1 -fi - -# Register function to be called on EXIT to remove generated binary. -function cleanup { - rm -f "${CLIENTGEN:-}" - rm -f "${listergen:-}" - rm -f "${informergen:-}" -} -trap cleanup EXIT - -echo "Building client-gen" -CLIENTGEN="${PWD}/client-gen" -go build -o "${CLIENTGEN}" ${CODEGEN_PKG}/cmd/client-gen - -PREFIX=k8s.io/apiextensions-apiserver/pkg/apis -INPUT_BASE="--input-base ${PREFIX}" -INPUT_APIS=( -apiextensions/ -apiextensions/v1beta1 -) -INPUT="--input ${INPUT_APIS[@]}" -CLIENTSET_PATH="--output-package k8s.io/apiextensions-apiserver/pkg/client/clientset" - -${CLIENTGEN} ${INPUT_BASE} ${INPUT} ${CLIENTSET_PATH} --output-base ${SCRIPT_BASE} -${CLIENTGEN} --clientset-name="clientset" ${INPUT_BASE} --input apiextensions/v1beta1 ${CLIENTSET_PATH} --output-base ${SCRIPT_BASE} --go-header-file ${SCRIPT_ROOT}/hack/boilerplate.go.txt - - -echo "Building lister-gen" -listergen="${PWD}/lister-gen" -go build -o "${listergen}" ${CODEGEN_PKG}/cmd/lister-gen - -LISTER_INPUT="--input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions --input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1" -LISTER_PATH="--output-package k8s.io/apiextensions-apiserver/pkg/client/listers" -${listergen} ${LISTER_INPUT} ${LISTER_PATH} --output-base ${SCRIPT_BASE} --go-header-file ${SCRIPT_ROOT}/hack/boilerplate.go.txt - - -echo "Building informer-gen" -informergen="${PWD}/informer-gen" -go build -o "${informergen}" ${CODEGEN_PKG}/cmd/informer-gen - -${informergen} \ - --output-base ${SCRIPT_BASE} \ - --input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions --input-dirs k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1 \ - --versioned-clientset-package k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset \ - --internal-clientset-package k8s.io/apiextensions-apiserver/pkg/client/clientset/internalclientset \ - --listers-package k8s.io/apiextensions-apiserver/pkg/client/listers \ - --output-package k8s.io/apiextensions-apiserver/pkg/client/informers \ +SCRIPT_ROOT=$(dirname ${BASH_SOURCE})/.. +CODEGEN_PKG=${CODEGEN_PKG:-$(cd ${SCRIPT_ROOT}; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo ../code-generator)} + +# generate the code with: +# --output-base because this script should also be able to run inside the vendor dir of +# k8s.io/kubernetes. The output-base is needed for the generators to output into the vendor dir +# instead of the $GOPATH directly. For normal projects this can be dropped. +CLIENTSET_NAME_VERSIONED=clientset \ +CLIENTSET_NAME_INTERNAL=internalclientset \ +${CODEGEN_PKG}/generate-internal-groups.sh all \ + k8s.io/apiextensions-apiserver/pkg/client k8s.io/apiextensions-apiserver/pkg/apis k8s.io/apiextensions-apiserver/pkg/apis \ + "apiextensions:v1beta1" \ + --output-base "$(dirname ${BASH_SOURCE})/../../.." \ --go-header-file ${SCRIPT_ROOT}/hack/boilerplate.go.txt - "$@" diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go index 353e81287..f199dd5e5 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install/roundtrip_test.go @@ -20,7 +20,7 @@ import ( "testing" apiextensionsfuzzer "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/fuzzer" - "k8s.io/apimachinery/pkg/api/testing/roundtrip" + "k8s.io/apimachinery/pkg/api/apitesting/roundtrip" ) func TestRoundTrip(t *testing.T) { diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go index 8e30403c8..c771e61cb 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.pb.go @@ -5874,150 +5874,149 @@ func init() { } var fileDescriptorGenerated = []byte{ - // 2306 bytes of a gzipped FileDescriptorProto + // 2292 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x6f, 0x5b, 0x49, - 0x15, 0xef, 0xb5, 0xe3, 0xc4, 0x19, 0x27, 0x4d, 0x32, 0x6d, 0xca, 0x6d, 0x68, 0xed, 0xd4, 0x65, - 0x57, 0x01, 0xb6, 0x36, 0xed, 0xee, 0xb2, 0xcb, 0x4a, 0x3c, 0xc4, 0x49, 0x41, 0x5d, 0x9a, 0x26, - 0x1a, 0xb7, 0x45, 0xb0, 0x9f, 0x13, 0x7b, 0xe2, 0xdc, 0xe6, 0x7e, 0x75, 0x66, 0xae, 0x9b, 0x48, - 0x80, 0xf8, 0xd0, 0x0a, 0x09, 0x01, 0x0b, 0x6c, 0x85, 0x84, 0xc4, 0x0b, 0x48, 0xbc, 0x20, 0x04, - 0x0f, 0xf0, 0x06, 0x7f, 0x40, 0x1f, 0xf7, 0x71, 0x9f, 0x2c, 0x6a, 0xfe, 0x05, 0x24, 0xa4, 0x3c, - 0xa1, 0xf9, 0xb8, 0x73, 0xef, 0xb5, 0xe3, 0x6d, 0xb5, 0x6b, 0x6f, 0xdf, 0x7c, 0xcf, 0x39, 0x73, - 0x7e, 0xbf, 0x39, 0x73, 0xe6, 0xcc, 0x39, 0x09, 0xd8, 0x3b, 0x78, 0x95, 0xd5, 0x9c, 0xa0, 0x7e, - 0x10, 0xed, 0x12, 0xea, 0x13, 0x4e, 0x58, 0xbd, 0x4b, 0xfc, 0x76, 0x40, 0xeb, 0x5a, 0x81, 0x43, - 0x87, 0x1c, 0x72, 0xe2, 0x33, 0x27, 0xf0, 0xd9, 0x15, 0x1c, 0x3a, 0x8c, 0xd0, 0x2e, 0xa1, 0xf5, - 0xf0, 0xa0, 0x23, 0x74, 0x2c, 0x6b, 0x50, 0xef, 0x5e, 0xdd, 0x25, 0x1c, 0x5f, 0xad, 0x77, 0x88, - 0x4f, 0x28, 0xe6, 0xa4, 0x5d, 0x0b, 0x69, 0xc0, 0x03, 0xf8, 0x75, 0xe5, 0xae, 0x96, 0xb1, 0x7e, - 0xc7, 0xb8, 0xab, 0x85, 0x07, 0x1d, 0xa1, 0x63, 0x59, 0x83, 0x9a, 0x76, 0xb7, 0x72, 0xa5, 0xe3, - 0xf0, 0xfd, 0x68, 0xb7, 0xd6, 0x0a, 0xbc, 0x7a, 0x27, 0xe8, 0x04, 0x75, 0xe9, 0x75, 0x37, 0xda, - 0x93, 0x5f, 0xf2, 0x43, 0xfe, 0x52, 0x68, 0x2b, 0x2f, 0x25, 0xe4, 0x3d, 0xdc, 0xda, 0x77, 0x7c, - 0x42, 0x8f, 0x12, 0xc6, 0x1e, 0xe1, 0xb8, 0xde, 0x1d, 0xe2, 0xb8, 0x52, 0x1f, 0xb5, 0x8a, 0x46, - 0x3e, 0x77, 0x3c, 0x32, 0xb4, 0xe0, 0xab, 0x4f, 0x5a, 0xc0, 0x5a, 0xfb, 0xc4, 0xc3, 0x43, 0xeb, - 0x5e, 0x1c, 0xb5, 0x2e, 0xe2, 0x8e, 0x5b, 0x77, 0x7c, 0xce, 0x38, 0x1d, 0x5c, 0x54, 0xfd, 0x20, - 0x07, 0xca, 0x1b, 0x11, 0xe3, 0x81, 0x87, 0x08, 0x0b, 0x22, 0xda, 0x22, 0x1b, 0x81, 0x1b, 0x79, - 0xfe, 0x26, 0xd9, 0x73, 0x7c, 0x87, 0x3b, 0x81, 0x0f, 0x57, 0xc1, 0x94, 0x8f, 0x3d, 0x62, 0x5b, - 0xab, 0xd6, 0xda, 0x6c, 0x63, 0xee, 0x51, 0xaf, 0x72, 0xaa, 0xdf, 0xab, 0x4c, 0xdd, 0xc2, 0x1e, - 0x41, 0x52, 0x23, 0x2c, 0xf8, 0x51, 0x48, 0xec, 0x5c, 0xd6, 0xe2, 0xf6, 0x51, 0x48, 0x90, 0xd4, - 0xc0, 0xe7, 0xc1, 0xf4, 0x5e, 0x40, 0x3d, 0xcc, 0xed, 0xbc, 0xb4, 0x39, 0xad, 0x6d, 0xa6, 0xbf, - 0x21, 0xa5, 0x48, 0x6b, 0xe1, 0xcb, 0xa0, 0xd4, 0x26, 0xac, 0x45, 0x9d, 0x50, 0x40, 0xdb, 0x53, - 0xd2, 0xf8, 0x8c, 0x36, 0x2e, 0x6d, 0x26, 0x2a, 0x94, 0xb6, 0x83, 0x2f, 0x80, 0x62, 0x48, 0x9d, - 0x80, 0x3a, 0xfc, 0xc8, 0x2e, 0xac, 0x5a, 0x6b, 0x85, 0xc6, 0xa2, 0x5e, 0x53, 0xdc, 0xd1, 0x72, - 0x64, 0x2c, 0xe0, 0x2a, 0x28, 0xbe, 0xde, 0xdc, 0xbe, 0xb5, 0x83, 0xf9, 0xbe, 0x3d, 0x2d, 0x11, - 0xa6, 0x84, 0x35, 0x2a, 0xde, 0xd3, 0xd2, 0xea, 0x4f, 0xf2, 0xc0, 0xce, 0x46, 0x25, 0x15, 0x8f, - 0x77, 0x41, 0x51, 0x9c, 0x75, 0x1b, 0x73, 0x2c, 0x63, 0x52, 0xba, 0xf6, 0x95, 0x5a, 0x92, 0x87, - 0x26, 0xf4, 0x49, 0xf2, 0x09, 0xeb, 0x5a, 0xf7, 0x6a, 0x6d, 0x7b, 0xf7, 0x1e, 0x69, 0xf1, 0x2d, - 0xc2, 0x71, 0x03, 0x6a, 0x7a, 0x20, 0x91, 0x21, 0xe3, 0x15, 0x7e, 0x1f, 0x4c, 0xb1, 0x90, 0xb4, - 0x64, 0x3c, 0x4b, 0xd7, 0xde, 0xa8, 0x7d, 0xaa, 0x2c, 0xaf, 0x8d, 0xda, 0x48, 0x33, 0x24, 0xad, - 0xe4, 0xb0, 0xc4, 0x17, 0x92, 0xb0, 0xf0, 0x3d, 0x0b, 0x4c, 0x33, 0x8e, 0x79, 0xc4, 0xe4, 0x69, - 0x95, 0xae, 0xbd, 0x35, 0x29, 0x06, 0x12, 0x24, 0x49, 0x06, 0xf5, 0x8d, 0x34, 0x78, 0xf5, 0xbf, - 0x39, 0x70, 0x69, 0xd4, 0xd2, 0x8d, 0xc0, 0x6f, 0xab, 0xe3, 0xb8, 0xa1, 0x93, 0x4f, 0xa5, 0xe7, - 0xcb, 0xe9, 0xe4, 0x3b, 0xee, 0x55, 0x9e, 0x7b, 0xa2, 0x83, 0x54, 0x96, 0x7e, 0xcd, 0xec, 0x5b, - 0x65, 0xf2, 0xa5, 0x2c, 0xb1, 0xe3, 0x5e, 0x65, 0xc1, 0x2c, 0xcb, 0x72, 0x85, 0x5d, 0x00, 0x5d, - 0xcc, 0xf8, 0x6d, 0x8a, 0x7d, 0xa6, 0xdc, 0x3a, 0x1e, 0xd1, 0xe1, 0xfb, 0xd2, 0xd3, 0xa5, 0x87, - 0x58, 0xd1, 0x58, 0xd1, 0x90, 0xf0, 0xe6, 0x90, 0x37, 0x74, 0x02, 0x82, 0xb8, 0x58, 0x94, 0x60, - 0x66, 0xee, 0x8a, 0x89, 0x25, 0x92, 0x52, 0xa4, 0xb5, 0xf0, 0x8b, 0x60, 0xc6, 0x23, 0x8c, 0xe1, - 0x0e, 0x91, 0x17, 0x64, 0xb6, 0xb1, 0xa0, 0x0d, 0x67, 0xb6, 0x94, 0x18, 0xc5, 0xfa, 0xea, 0xb1, - 0x05, 0x2e, 0x8c, 0x8a, 0xda, 0x4d, 0x87, 0x71, 0xf8, 0xe6, 0xd0, 0x05, 0xa8, 0x3d, 0xdd, 0x0e, - 0xc5, 0x6a, 0x99, 0xfe, 0xe6, 0x76, 0xc6, 0x92, 0x54, 0xf2, 0x7f, 0x0f, 0x14, 0x1c, 0x4e, 0x3c, - 0x71, 0x06, 0xf9, 0xb5, 0xd2, 0xb5, 0x6f, 0x4f, 0x28, 0xf7, 0x1a, 0xf3, 0x9a, 0x43, 0xe1, 0x86, - 0x40, 0x43, 0x0a, 0xb4, 0xfa, 0xa7, 0x1c, 0xb8, 0x38, 0x6a, 0x89, 0xa8, 0x78, 0x4c, 0x44, 0x3c, - 0x74, 0x23, 0x8a, 0x5d, 0x9d, 0x71, 0x26, 0xe2, 0x3b, 0x52, 0x8a, 0xb4, 0x56, 0xd4, 0x24, 0xe6, - 0xf8, 0x9d, 0xc8, 0xc5, 0x54, 0xa7, 0x93, 0xd9, 0x75, 0x53, 0xcb, 0x91, 0xb1, 0x80, 0x35, 0x00, - 0xd8, 0x7e, 0x40, 0xb9, 0xc4, 0xb0, 0xf3, 0xab, 0x79, 0xe1, 0x59, 0x14, 0x88, 0xa6, 0x91, 0xa2, - 0x94, 0x85, 0x28, 0xb9, 0x07, 0x8e, 0xdf, 0xd6, 0xa7, 0x6e, 0x6e, 0xf1, 0xb7, 0x1c, 0xbf, 0x8d, - 0xa4, 0x46, 0xe0, 0xbb, 0x0e, 0xe3, 0x42, 0xa2, 0x8f, 0x3c, 0x13, 0x75, 0x69, 0x69, 0x2c, 0x04, - 0x7e, 0x0b, 0x73, 0xd2, 0x09, 0xa8, 0x43, 0x98, 0x3d, 0x9d, 0xe0, 0x6f, 0x18, 0x29, 0x4a, 0x59, - 0x54, 0x7f, 0x3d, 0x33, 0x3a, 0x49, 0x44, 0x29, 0x81, 0x97, 0x41, 0xa1, 0x43, 0x83, 0x28, 0xd4, - 0x51, 0x32, 0xd1, 0xfe, 0xa6, 0x10, 0x22, 0xa5, 0x13, 0x59, 0xd9, 0x25, 0x54, 0x1c, 0x98, 0x0e, - 0x91, 0xc9, 0xca, 0xbb, 0x4a, 0x8c, 0x62, 0x3d, 0xfc, 0x91, 0x05, 0x0a, 0xbe, 0x0e, 0x8e, 0x48, - 0xb9, 0x37, 0x27, 0x94, 0x17, 0x32, 0xbc, 0x09, 0x5d, 0x15, 0x79, 0x85, 0x0c, 0x5f, 0x02, 0x05, - 0xd6, 0x0a, 0x42, 0xa2, 0xa3, 0x5e, 0x8e, 0x8d, 0x9a, 0x42, 0x78, 0xdc, 0xab, 0xcc, 0xc7, 0xee, - 0xa4, 0x00, 0x29, 0x63, 0xf8, 0x53, 0x0b, 0x80, 0x2e, 0x76, 0x9d, 0x36, 0x96, 0x6f, 0x5a, 0x41, - 0xd2, 0x1f, 0x6f, 0x5a, 0xdf, 0x35, 0xee, 0xd5, 0xa1, 0x25, 0xdf, 0x28, 0x05, 0x0d, 0xdf, 0xb7, - 0xc0, 0x1c, 0x8b, 0x76, 0xa9, 0x5e, 0xc5, 0xe4, 0xeb, 0x57, 0xba, 0xf6, 0x9d, 0xb1, 0x72, 0x69, - 0xa6, 0x00, 0x1a, 0x8b, 0xfd, 0x5e, 0x65, 0x2e, 0x2d, 0x41, 0x19, 0x02, 0xf0, 0xe7, 0x16, 0x28, - 0xea, 0x13, 0x66, 0xf6, 0x8c, 0xbc, 0xf0, 0x6f, 0x4f, 0xe8, 0x60, 0x75, 0x46, 0x25, 0xb7, 0x40, - 0x0b, 0x18, 0x32, 0x0c, 0xe0, 0x3f, 0x2d, 0x60, 0xe3, 0xb6, 0x2a, 0xf0, 0xd8, 0xdd, 0xa1, 0x8e, - 0xcf, 0x09, 0x55, 0x0d, 0x11, 0xb3, 0x8b, 0x92, 0xde, 0x78, 0xdf, 0xc2, 0xc1, 0x66, 0xab, 0xb1, - 0xaa, 0xd9, 0xd9, 0xeb, 0x23, 0x68, 0xa0, 0x91, 0x04, 0xab, 0xef, 0xe7, 0x07, 0x7b, 0xb9, 0xc1, - 0xa7, 0x16, 0x3e, 0xb4, 0x00, 0x68, 0xc5, 0x4f, 0x18, 0xb3, 0x2d, 0xb9, 0xa5, 0x77, 0x27, 0x14, - 0x71, 0xf3, 0x56, 0x26, 0xed, 0x8e, 0x11, 0x89, 0x6a, 0x62, 0x7e, 0xc3, 0xdf, 0x59, 0x60, 0x1e, - 0xb7, 0x5a, 0x24, 0xe4, 0xa4, 0xad, 0x2a, 0x60, 0xee, 0x33, 0xb8, 0xe4, 0xcb, 0x9a, 0xd5, 0xfc, - 0x7a, 0x1a, 0x1a, 0x65, 0x99, 0xc0, 0xd7, 0xc0, 0x69, 0xc6, 0x03, 0x4a, 0xda, 0x71, 0xbe, 0xe8, - 0xea, 0x0c, 0xfb, 0xbd, 0xca, 0xe9, 0x66, 0x46, 0x83, 0x06, 0x2c, 0xab, 0xbf, 0xb5, 0x40, 0xe5, - 0x09, 0xf9, 0xf8, 0x14, 0xed, 0xf5, 0xf3, 0x60, 0x5a, 0x6e, 0xb7, 0x2d, 0xa3, 0x52, 0x4c, 0xf5, - 0x4b, 0x52, 0x8a, 0xb4, 0x56, 0x54, 0x53, 0x81, 0x2f, 0xde, 0xf8, 0xbc, 0x34, 0x34, 0xd5, 0xb4, - 0xa9, 0xc4, 0x28, 0xd6, 0x57, 0xff, 0x67, 0x0d, 0xa6, 0x4a, 0xea, 0x92, 0x36, 0x5b, 0xd8, 0x25, - 0x70, 0x13, 0x2c, 0x8a, 0x6e, 0x10, 0x91, 0xd0, 0x75, 0x5a, 0x98, 0xc9, 0x6e, 0x59, 0x71, 0xb4, - 0xb5, 0xdb, 0xc5, 0xe6, 0x80, 0x1e, 0x0d, 0xad, 0x80, 0xaf, 0x03, 0xa8, 0x3a, 0xa4, 0x8c, 0x1f, - 0x55, 0xec, 0x4d, 0xaf, 0xd3, 0x1c, 0xb2, 0x40, 0x27, 0xac, 0x82, 0x1b, 0x60, 0xc9, 0xc5, 0xbb, - 0xc4, 0x6d, 0x12, 0x97, 0xb4, 0x78, 0x40, 0xa5, 0x2b, 0x35, 0x4f, 0x2c, 0xf7, 0x7b, 0x95, 0xa5, - 0x9b, 0x83, 0x4a, 0x34, 0x6c, 0x5f, 0xbd, 0x34, 0x78, 0x22, 0xe9, 0x8d, 0xab, 0xbe, 0xf3, 0x0f, - 0x39, 0xb0, 0x32, 0xba, 0xa6, 0xc1, 0x1f, 0x27, 0xed, 0xb1, 0xea, 0x7e, 0xde, 0x9e, 0x54, 0xfd, - 0xd4, 0xfd, 0x31, 0x18, 0xee, 0x8d, 0xe1, 0x0f, 0xc4, 0x53, 0x84, 0x5d, 0xa2, 0x2f, 0xca, 0x5b, - 0x13, 0xa3, 0x20, 0x40, 0x1a, 0xb3, 0xea, 0x95, 0xc3, 0xae, 0x7c, 0xd4, 0xb0, 0x4b, 0xaa, 0x7f, - 0xb6, 0x06, 0x27, 0xa4, 0xe4, 0xcd, 0x81, 0xbf, 0xb0, 0xc0, 0x42, 0x10, 0x12, 0x7f, 0x7d, 0xe7, - 0xc6, 0xdd, 0x17, 0x9b, 0x72, 0x5a, 0xd5, 0xa1, 0xba, 0xf5, 0x29, 0x79, 0x8a, 0xb9, 0x4d, 0x39, - 0xdc, 0xa1, 0x41, 0xc8, 0x1a, 0x67, 0xfa, 0xbd, 0xca, 0xc2, 0x76, 0x16, 0x0a, 0x0d, 0x62, 0x57, - 0x3d, 0xb0, 0x7c, 0xfd, 0x90, 0x13, 0xea, 0x63, 0x77, 0x33, 0x68, 0x45, 0x1e, 0xf1, 0xb9, 0x22, - 0x3a, 0x30, 0x6e, 0x5a, 0x4f, 0x39, 0x6e, 0x5e, 0x04, 0xf9, 0x88, 0xba, 0x3a, 0x8b, 0x4b, 0xda, - 0x3c, 0x7f, 0x07, 0xdd, 0x44, 0x42, 0x5e, 0xbd, 0x04, 0xa6, 0x04, 0x4f, 0x78, 0x1e, 0xe4, 0x29, - 0x7e, 0x20, 0xbd, 0xce, 0x35, 0x66, 0x84, 0x09, 0xc2, 0x0f, 0x90, 0x90, 0x55, 0xff, 0x72, 0x01, - 0x2c, 0x0c, 0xec, 0x05, 0xae, 0x80, 0x9c, 0xd3, 0xd6, 0x1c, 0x80, 0x76, 0x9a, 0xbb, 0xb1, 0x89, - 0x72, 0x4e, 0x1b, 0xbe, 0x02, 0xa6, 0xd5, 0xd4, 0xaf, 0x41, 0x2b, 0xa6, 0x04, 0x48, 0xa9, 0xe8, - 0x3d, 0x12, 0x77, 0x82, 0x88, 0x36, 0x97, 0x1c, 0xc8, 0x9e, 0xbe, 0x25, 0x8a, 0x03, 0xd9, 0x43, - 0x42, 0xf6, 0x49, 0x67, 0xed, 0x78, 0xd8, 0x2f, 0x3c, 0xc5, 0xb0, 0x3f, 0xfd, 0xb1, 0xc3, 0xfe, - 0x65, 0x50, 0xe0, 0x0e, 0x77, 0x89, 0x3d, 0x93, 0x6d, 0x11, 0x6f, 0x0b, 0x21, 0x52, 0x3a, 0x78, - 0x0f, 0xcc, 0xb4, 0xc9, 0x1e, 0x8e, 0x5c, 0x6e, 0x17, 0x65, 0x0a, 0x6d, 0x8c, 0x21, 0x85, 0x1a, - 0x25, 0x51, 0x15, 0x37, 0x95, 0x5f, 0x14, 0x03, 0xc0, 0xe7, 0xc0, 0x8c, 0x87, 0x0f, 0x1d, 0x2f, - 0xf2, 0xec, 0xd9, 0x55, 0x6b, 0xcd, 0x52, 0x66, 0x5b, 0x4a, 0x84, 0x62, 0x9d, 0xa8, 0x8c, 0xe4, - 0xb0, 0xe5, 0x46, 0xcc, 0xe9, 0x12, 0xad, 0xb4, 0x81, 0x2c, 0xb8, 0xa6, 0x32, 0x5e, 0x1f, 0xd0, - 0xa3, 0xa1, 0x15, 0x12, 0xcc, 0xf1, 0xe5, 0xe2, 0x52, 0x0a, 0x4c, 0x89, 0x50, 0xac, 0xcb, 0x82, - 0x69, 0xfb, 0xb9, 0x51, 0x60, 0x7a, 0xf1, 0xd0, 0x0a, 0xf8, 0x65, 0x30, 0xeb, 0xe1, 0xc3, 0x9b, - 0xc4, 0xef, 0xf0, 0x7d, 0x7b, 0x7e, 0xd5, 0x5a, 0xcb, 0x37, 0xe6, 0xfb, 0xbd, 0xca, 0xec, 0x56, - 0x2c, 0x44, 0x89, 0x5e, 0x1a, 0x3b, 0xbe, 0x36, 0x3e, 0x9d, 0x32, 0x8e, 0x85, 0x28, 0xd1, 0x8b, - 0x47, 0x27, 0xc4, 0x5c, 0x5c, 0x2e, 0x7b, 0x21, 0xdb, 0xc2, 0xef, 0x28, 0x31, 0x8a, 0xf5, 0x70, - 0x0d, 0x14, 0x3d, 0x7c, 0x28, 0xc7, 0x2d, 0x7b, 0x51, 0xba, 0x9d, 0x13, 0x7d, 0xd8, 0x96, 0x96, - 0x21, 0xa3, 0x95, 0x96, 0x8e, 0xaf, 0x2c, 0x97, 0x52, 0x96, 0x5a, 0x86, 0x8c, 0x56, 0x24, 0x71, - 0xe4, 0x3b, 0xf7, 0x23, 0xa2, 0x8c, 0xa1, 0x8c, 0x8c, 0x49, 0xe2, 0x3b, 0x89, 0x0a, 0xa5, 0xed, - 0xc4, 0xb8, 0xe3, 0x45, 0x2e, 0x77, 0x42, 0x97, 0x6c, 0xef, 0xd9, 0x67, 0x64, 0xfc, 0x65, 0xe7, - 0xbc, 0x65, 0xa4, 0x28, 0x65, 0x01, 0x09, 0x98, 0x22, 0x7e, 0xe4, 0xd9, 0x67, 0x65, 0xc3, 0x34, - 0x96, 0x14, 0x34, 0x37, 0xe7, 0xba, 0x1f, 0x79, 0x48, 0xba, 0x87, 0xaf, 0x80, 0x79, 0x0f, 0x1f, - 0x8a, 0x72, 0x40, 0x28, 0x17, 0x83, 0xd8, 0xb2, 0xdc, 0xfc, 0x92, 0x68, 0x52, 0xb6, 0xd2, 0x0a, - 0x94, 0xb5, 0x93, 0x0b, 0x1d, 0x3f, 0xb5, 0xf0, 0x5c, 0x6a, 0x61, 0x5a, 0x81, 0xb2, 0x76, 0x22, - 0xd2, 0x94, 0xdc, 0x8f, 0x1c, 0x4a, 0xda, 0xf6, 0xe7, 0x64, 0x5f, 0x23, 0x23, 0x8d, 0xb4, 0x0c, - 0x19, 0x2d, 0xec, 0xc6, 0x73, 0xb9, 0x2d, 0xaf, 0xe1, 0x9d, 0xf1, 0x56, 0xf2, 0x6d, 0xba, 0x4e, - 0x29, 0x3e, 0x52, 0x2f, 0x4d, 0x7a, 0x22, 0x87, 0x0c, 0x14, 0xb0, 0xeb, 0x6e, 0xef, 0xd9, 0xe7, - 0x65, 0xec, 0xc7, 0xfd, 0x82, 0x98, 0xaa, 0xb3, 0x2e, 0x40, 0x90, 0xc2, 0x12, 0xa0, 0x81, 0x2f, - 0x52, 0x63, 0x65, 0xb2, 0xa0, 0xdb, 0x02, 0x04, 0x29, 0x2c, 0xb9, 0x53, 0xff, 0x68, 0x7b, 0xcf, - 0xfe, 0xfc, 0x84, 0x77, 0x2a, 0x40, 0x90, 0xc2, 0x82, 0x0e, 0xc8, 0xfb, 0x01, 0xb7, 0x2f, 0x4c, - 0xe4, 0x79, 0x96, 0x0f, 0xce, 0xad, 0x80, 0x23, 0x81, 0x01, 0x7f, 0x63, 0x01, 0x10, 0x26, 0x29, - 0x7a, 0x71, 0x2c, 0xe3, 0xde, 0x00, 0x64, 0x2d, 0xc9, 0xed, 0xeb, 0x3e, 0xa7, 0x47, 0xc9, 0xe8, - 0x91, 0xba, 0x03, 0x29, 0x16, 0xf0, 0x8f, 0x16, 0x38, 0x9b, 0x9e, 0xa8, 0x0c, 0xbd, 0xb2, 0x8c, - 0xc8, 0xed, 0x71, 0xa7, 0x79, 0x23, 0x08, 0xdc, 0x86, 0xdd, 0xef, 0x55, 0xce, 0xae, 0x9f, 0x80, - 0x8a, 0x4e, 0xe4, 0x02, 0xff, 0x6a, 0x81, 0x25, 0x5d, 0x45, 0x53, 0x0c, 0x2b, 0x32, 0x80, 0x64, - 0xdc, 0x01, 0x1c, 0xc4, 0x51, 0x71, 0x3c, 0xaf, 0xe3, 0xb8, 0x34, 0xa4, 0x47, 0xc3, 0xd4, 0xe0, - 0x3f, 0x2c, 0x30, 0xd7, 0x26, 0x21, 0xf1, 0xdb, 0xc4, 0x6f, 0x09, 0xae, 0xab, 0x63, 0x99, 0x34, - 0x07, 0xb9, 0x6e, 0xa6, 0x20, 0x14, 0xcd, 0x9a, 0xa6, 0x39, 0x97, 0x56, 0x1d, 0xf7, 0x2a, 0xe7, - 0x92, 0xa5, 0x69, 0x0d, 0xca, 0xb0, 0x84, 0x1f, 0x58, 0x60, 0x21, 0x39, 0x00, 0xf5, 0xa4, 0x5c, - 0x9a, 0x60, 0x1e, 0xc8, 0xf6, 0x75, 0x3d, 0x0b, 0x88, 0x06, 0x19, 0xc0, 0xbf, 0x59, 0xa2, 0x53, - 0x8b, 0xe7, 0x46, 0x66, 0x57, 0x65, 0x2c, 0xdf, 0x19, 0x7b, 0x2c, 0x0d, 0x82, 0x0a, 0xe5, 0x0b, - 0x49, 0x2b, 0x68, 0x34, 0xc7, 0xbd, 0xca, 0x72, 0x3a, 0x92, 0x46, 0x81, 0xd2, 0x0c, 0xe1, 0xcf, - 0x2c, 0x30, 0x47, 0x92, 0x8e, 0x9b, 0xd9, 0x97, 0xc7, 0x12, 0xc4, 0x13, 0x9b, 0x78, 0xf5, 0x37, - 0xa6, 0x94, 0x8a, 0xa1, 0x0c, 0xb6, 0xe8, 0x20, 0xc9, 0x21, 0xf6, 0x42, 0x97, 0xd8, 0x5f, 0x18, - 0x73, 0x07, 0x79, 0x5d, 0xf9, 0x45, 0x31, 0xc0, 0x8a, 0x98, 0x7c, 0x06, 0x6e, 0x0e, 0x5c, 0x04, - 0xf9, 0x03, 0x72, 0xa4, 0x1a, 0x7b, 0x24, 0x7e, 0xc2, 0x36, 0x28, 0x74, 0xb1, 0x1b, 0xc5, 0xc3, - 0xdb, 0x98, 0xab, 0x2e, 0x52, 0xce, 0x5f, 0xcb, 0xbd, 0x6a, 0xad, 0x3c, 0xb4, 0xc0, 0xb9, 0x93, - 0x2f, 0xf4, 0x33, 0xa5, 0xf5, 0x7b, 0x0b, 0x2c, 0x0d, 0xdd, 0xdd, 0x13, 0x18, 0xdd, 0xcf, 0x32, - 0x7a, 0x63, 0xdc, 0x97, 0xb0, 0xc9, 0xa9, 0xe3, 0x77, 0x64, 0xe7, 0x91, 0xa6, 0xf7, 0x4b, 0x0b, - 0x2c, 0x0e, 0x5e, 0x87, 0x67, 0x19, 0xaf, 0xea, 0xc3, 0x1c, 0x38, 0x77, 0x72, 0xc3, 0x04, 0xa9, - 0x99, 0x0c, 0x27, 0x33, 0x61, 0x83, 0x64, 0xca, 0x34, 0x43, 0xe5, 0x7b, 0x16, 0x28, 0xdd, 0x33, - 0x76, 0xf1, 0x7f, 0x6a, 0xc6, 0x3e, 0xdb, 0xc7, 0xf5, 0x27, 0x51, 0x30, 0x94, 0xc6, 0xad, 0xfe, - 0xdd, 0x02, 0xcb, 0x27, 0x16, 0x56, 0x31, 0x82, 0x62, 0xd7, 0x0d, 0x1e, 0xa8, 0x3f, 0xd1, 0xa4, - 0xfe, 0x64, 0xb6, 0x2e, 0xa5, 0x48, 0x6b, 0x53, 0xd1, 0xcb, 0x7d, 0x56, 0xd1, 0xab, 0xfe, 0xcb, - 0x02, 0x17, 0x3e, 0x2e, 0x13, 0x9f, 0xc9, 0x91, 0xae, 0x81, 0xa2, 0x6e, 0x8a, 0x8e, 0xe4, 0x71, - 0xea, 0x39, 0x40, 0x17, 0x0d, 0xf9, 0xdf, 0x73, 0xf5, 0xab, 0x71, 0xe5, 0xd1, 0xe3, 0xf2, 0xa9, - 0x0f, 0x1f, 0x97, 0x4f, 0x7d, 0xf4, 0xb8, 0x7c, 0xea, 0x87, 0xfd, 0xb2, 0xf5, 0xa8, 0x5f, 0xb6, - 0x3e, 0xec, 0x97, 0xad, 0x8f, 0xfa, 0x65, 0xeb, 0xdf, 0xfd, 0xb2, 0xf5, 0xab, 0xff, 0x94, 0x4f, - 0x7d, 0x77, 0x46, 0x83, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0x9e, 0x11, 0xe8, 0x41, 0x0b, 0x22, - 0x00, 0x00, + 0x15, 0xef, 0xd8, 0x71, 0xe2, 0x8c, 0x93, 0x26, 0x99, 0x6d, 0xca, 0x6d, 0x68, 0xed, 0xd4, 0x65, + 0x57, 0x01, 0xb6, 0x0e, 0x2d, 0xbb, 0xec, 0xb2, 0x12, 0x0f, 0x71, 0x52, 0x50, 0x97, 0xa6, 0x89, + 0xc6, 0x6d, 0x11, 0xec, 0xe7, 0xc4, 0x9e, 0x38, 0xb7, 0xb9, 0x5f, 0xbd, 0x33, 0xd7, 0x4d, 0x24, + 0x40, 0x7c, 0x68, 0x85, 0x84, 0x80, 0x05, 0xb6, 0x42, 0x42, 0xe2, 0x05, 0x24, 0x5e, 0x10, 0x82, + 0x07, 0x78, 0x83, 0x3f, 0xa0, 0x8f, 0xfb, 0xb8, 0x4f, 0x16, 0x35, 0xff, 0x02, 0x12, 0x52, 0x9e, + 0xd0, 0x7c, 0xdc, 0xb9, 0x1f, 0x4e, 0xb6, 0x11, 0x6b, 0x6f, 0xdf, 0x7c, 0xcf, 0x39, 0x73, 0x7e, + 0xbf, 0x39, 0x73, 0xe6, 0xcc, 0x39, 0x09, 0xdc, 0xdd, 0x7f, 0x95, 0x35, 0x6c, 0x7f, 0x75, 0x3f, + 0xda, 0xa1, 0xa1, 0x47, 0x39, 0x65, 0xab, 0x3d, 0xea, 0x75, 0xfc, 0x70, 0x55, 0x2b, 0x48, 0x60, + 0xd3, 0x03, 0x4e, 0x3d, 0x66, 0xfb, 0x1e, 0xbb, 0x4a, 0x02, 0x9b, 0xd1, 0xb0, 0x47, 0xc3, 0xd5, + 0x60, 0xbf, 0x2b, 0x74, 0x2c, 0x6b, 0xb0, 0xda, 0xbb, 0xb6, 0x43, 0x39, 0xb9, 0xb6, 0xda, 0xa5, + 0x1e, 0x0d, 0x09, 0xa7, 0x9d, 0x46, 0x10, 0xfa, 0xdc, 0x47, 0x5f, 0x53, 0xee, 0x1a, 0x19, 0xeb, + 0x77, 0x8c, 0xbb, 0x46, 0xb0, 0xdf, 0x15, 0x3a, 0x96, 0x35, 0x68, 0x68, 0x77, 0x4b, 0x57, 0xbb, + 0x36, 0xdf, 0x8b, 0x76, 0x1a, 0x6d, 0xdf, 0x5d, 0xed, 0xfa, 0x5d, 0x7f, 0x55, 0x7a, 0xdd, 0x89, + 0x76, 0xe5, 0x97, 0xfc, 0x90, 0xbf, 0x14, 0xda, 0xd2, 0x4b, 0x09, 0x79, 0x97, 0xb4, 0xf7, 0x6c, + 0x8f, 0x86, 0x87, 0x09, 0x63, 0x97, 0x72, 0xb2, 0xda, 0x1b, 0xe2, 0xb8, 0xb4, 0x7a, 0xd2, 0xaa, + 0x30, 0xf2, 0xb8, 0xed, 0xd2, 0xa1, 0x05, 0x5f, 0x79, 0xda, 0x02, 0xd6, 0xde, 0xa3, 0x2e, 0xc9, + 0xaf, 0xab, 0x7f, 0x50, 0x80, 0xd5, 0xf5, 0x88, 0x71, 0xdf, 0xc5, 0x94, 0xf9, 0x51, 0xd8, 0xa6, + 0xeb, 0xbe, 0x13, 0xb9, 0xde, 0x06, 0xdd, 0xb5, 0x3d, 0x9b, 0xdb, 0xbe, 0x87, 0x96, 0xe1, 0x84, + 0x47, 0x5c, 0x6a, 0x81, 0x65, 0xb0, 0x32, 0xdd, 0x9c, 0x79, 0xdc, 0xaf, 0x9d, 0x19, 0xf4, 0x6b, + 0x13, 0xb7, 0x89, 0x4b, 0xb1, 0xd4, 0x08, 0x0b, 0x7e, 0x18, 0x50, 0xab, 0x90, 0xb5, 0xb8, 0x73, + 0x18, 0x50, 0x2c, 0x35, 0xe8, 0x05, 0x38, 0xb9, 0xeb, 0x87, 0x2e, 0xe1, 0x56, 0x51, 0xda, 0x9c, + 0xd5, 0x36, 0x93, 0x5f, 0x97, 0x52, 0xac, 0xb5, 0xe8, 0x65, 0x58, 0xe9, 0x50, 0xd6, 0x0e, 0xed, + 0x40, 0x40, 0x5b, 0x13, 0xd2, 0xf8, 0x39, 0x6d, 0x5c, 0xd9, 0x48, 0x54, 0x38, 0x6d, 0x87, 0x5e, + 0x84, 0xe5, 0x20, 0xb4, 0xfd, 0xd0, 0xe6, 0x87, 0x56, 0x69, 0x19, 0xac, 0x94, 0x9a, 0xf3, 0x7a, + 0x4d, 0x79, 0x5b, 0xcb, 0xb1, 0xb1, 0x40, 0xcb, 0xb0, 0xfc, 0x7a, 0x6b, 0xeb, 0xf6, 0x36, 0xe1, + 0x7b, 0xd6, 0xa4, 0x44, 0x98, 0x10, 0xd6, 0xb8, 0x7c, 0x5f, 0x4b, 0xeb, 0x3f, 0x2e, 0x42, 0x2b, + 0x1b, 0x95, 0x54, 0x3c, 0xde, 0x85, 0x65, 0x71, 0x6c, 0x1d, 0xc2, 0x89, 0x8c, 0x49, 0xe5, 0xfa, + 0x97, 0x1a, 0x49, 0x4a, 0x99, 0xe8, 0x27, 0x79, 0x24, 0xac, 0x1b, 0xbd, 0x6b, 0x8d, 0xad, 0x9d, + 0xfb, 0xb4, 0xcd, 0x37, 0x29, 0x27, 0x4d, 0xa4, 0xe9, 0xc1, 0x44, 0x86, 0x8d, 0x57, 0xf4, 0x3d, + 0x38, 0xc1, 0x02, 0xda, 0x96, 0xf1, 0xac, 0x5c, 0x7f, 0xa3, 0xf1, 0x89, 0x12, 0xb6, 0x71, 0xd2, + 0x46, 0x5a, 0x01, 0x6d, 0x27, 0x87, 0x25, 0xbe, 0xb0, 0x84, 0x45, 0xef, 0x01, 0x38, 0xc9, 0x38, + 0xe1, 0x11, 0x93, 0xa7, 0x55, 0xb9, 0xfe, 0xd6, 0xb8, 0x18, 0x48, 0x90, 0x24, 0x19, 0xd4, 0x37, + 0xd6, 0xe0, 0xf5, 0xff, 0x14, 0xe0, 0xe5, 0x93, 0x96, 0xae, 0xfb, 0x5e, 0x47, 0x1d, 0xc7, 0x4d, + 0x9d, 0x7c, 0x2a, 0x3d, 0x5f, 0x4e, 0x27, 0xdf, 0x51, 0xbf, 0xf6, 0xfc, 0x53, 0x1d, 0xa4, 0xb2, + 0xf4, 0xab, 0x66, 0xdf, 0x2a, 0x93, 0x2f, 0x67, 0x89, 0x1d, 0xf5, 0x6b, 0x73, 0x66, 0x59, 0x96, + 0x2b, 0xea, 0x41, 0xe4, 0x10, 0xc6, 0xef, 0x84, 0xc4, 0x63, 0xca, 0xad, 0xed, 0x52, 0x1d, 0xbe, + 0x2f, 0x9c, 0x2e, 0x3d, 0xc4, 0x8a, 0xe6, 0x92, 0x86, 0x44, 0xb7, 0x86, 0xbc, 0xe1, 0x63, 0x10, + 0xc4, 0xc5, 0x0a, 0x29, 0x61, 0xe6, 0xae, 0x98, 0x58, 0x62, 0x29, 0xc5, 0x5a, 0x8b, 0x3e, 0x0f, + 0xa7, 0x5c, 0xca, 0x18, 0xe9, 0x52, 0x79, 0x41, 0xa6, 0x9b, 0x73, 0xda, 0x70, 0x6a, 0x53, 0x89, + 0x71, 0xac, 0xaf, 0x1f, 0x01, 0x78, 0xf1, 0xa4, 0xa8, 0xdd, 0xb2, 0x19, 0x47, 0x6f, 0x0e, 0x5d, + 0x80, 0xc6, 0xe9, 0x76, 0x28, 0x56, 0xcb, 0xf4, 0x37, 0xb7, 0x33, 0x96, 0xa4, 0x92, 0xff, 0xbb, + 0xb0, 0x64, 0x73, 0xea, 0x8a, 0x33, 0x28, 0xae, 0x54, 0xae, 0x7f, 0x6b, 0x4c, 0xb9, 0xd7, 0x9c, + 0xd5, 0x1c, 0x4a, 0x37, 0x05, 0x1a, 0x56, 0xa0, 0xf5, 0x3f, 0x16, 0xe0, 0xa5, 0x93, 0x96, 0x88, + 0x8a, 0xc7, 0x44, 0xc4, 0x03, 0x27, 0x0a, 0x89, 0xa3, 0x33, 0xce, 0x44, 0x7c, 0x5b, 0x4a, 0xb1, + 0xd6, 0x8a, 0x9a, 0xc4, 0x6c, 0xaf, 0x1b, 0x39, 0x24, 0xd4, 0xe9, 0x64, 0x76, 0xdd, 0xd2, 0x72, + 0x6c, 0x2c, 0x50, 0x03, 0x42, 0xb6, 0xe7, 0x87, 0x5c, 0x62, 0x58, 0xc5, 0xe5, 0xa2, 0xf0, 0x2c, + 0x0a, 0x44, 0xcb, 0x48, 0x71, 0xca, 0x42, 0x94, 0xdc, 0x7d, 0xdb, 0xeb, 0xe8, 0x53, 0x37, 0xb7, + 0xf8, 0x9b, 0xb6, 0xd7, 0xc1, 0x52, 0x23, 0xf0, 0x1d, 0x9b, 0x71, 0x21, 0xd1, 0x47, 0x9e, 0x89, + 0xba, 0xb4, 0x34, 0x16, 0x02, 0xbf, 0x4d, 0x38, 0xed, 0xfa, 0xa1, 0x4d, 0x99, 0x35, 0x99, 0xe0, + 0xaf, 0x1b, 0x29, 0x4e, 0x59, 0xd4, 0x7f, 0x35, 0x75, 0x72, 0x92, 0x88, 0x52, 0x82, 0xae, 0xc0, + 0x52, 0x37, 0xf4, 0xa3, 0x40, 0x47, 0xc9, 0x44, 0xfb, 0x1b, 0x42, 0x88, 0x95, 0x4e, 0x64, 0x65, + 0x8f, 0x86, 0xe2, 0xc0, 0x74, 0x88, 0x4c, 0x56, 0xde, 0x53, 0x62, 0x1c, 0xeb, 0xd1, 0x0f, 0x01, + 0x2c, 0x79, 0x3a, 0x38, 0x22, 0xe5, 0xde, 0x1c, 0x53, 0x5e, 0xc8, 0xf0, 0x26, 0x74, 0x55, 0xe4, + 0x15, 0x32, 0x7a, 0x09, 0x96, 0x58, 0xdb, 0x0f, 0xa8, 0x8e, 0x7a, 0x35, 0x36, 0x6a, 0x09, 0xe1, + 0x51, 0xbf, 0x36, 0x1b, 0xbb, 0x93, 0x02, 0xac, 0x8c, 0xd1, 0x4f, 0x00, 0x84, 0x3d, 0xe2, 0xd8, + 0x1d, 0x22, 0xdf, 0xb4, 0x92, 0xa4, 0x3f, 0xda, 0xb4, 0xbe, 0x67, 0xdc, 0xab, 0x43, 0x4b, 0xbe, + 0x71, 0x0a, 0x1a, 0xbd, 0x0f, 0xe0, 0x0c, 0x8b, 0x76, 0x42, 0xbd, 0x8a, 0xc9, 0xd7, 0xaf, 0x72, + 0xfd, 0xdb, 0x23, 0xe5, 0xd2, 0x4a, 0x01, 0x34, 0xe7, 0x07, 0xfd, 0xda, 0x4c, 0x5a, 0x82, 0x33, + 0x04, 0xd0, 0xcf, 0x00, 0x2c, 0xeb, 0x13, 0x66, 0xd6, 0x94, 0xbc, 0xf0, 0x6f, 0x8f, 0xe9, 0x60, + 0x75, 0x46, 0x25, 0xb7, 0x40, 0x0b, 0x18, 0x36, 0x0c, 0xd0, 0x3f, 0x00, 0xb4, 0x48, 0x47, 0x15, + 0x78, 0xe2, 0x6c, 0x87, 0xb6, 0xc7, 0x69, 0xa8, 0x1a, 0x22, 0x66, 0x95, 0x25, 0xbd, 0xd1, 0xbe, + 0x85, 0xf9, 0x66, 0xab, 0xb9, 0xac, 0xd9, 0x59, 0x6b, 0x27, 0xd0, 0xc0, 0x27, 0x12, 0xac, 0xbf, + 0x5f, 0xcc, 0xf7, 0x72, 0xf9, 0xa7, 0x16, 0x3d, 0x02, 0x10, 0xb6, 0xe3, 0x27, 0x8c, 0x59, 0x40, + 0x6e, 0xe9, 0xdd, 0x31, 0x45, 0xdc, 0xbc, 0x95, 0x49, 0xbb, 0x63, 0x44, 0xa2, 0x9a, 0x98, 0xdf, + 0xe8, 0xb7, 0x00, 0xce, 0x92, 0x76, 0x9b, 0x06, 0x9c, 0x76, 0x54, 0x05, 0x2c, 0x7c, 0x0a, 0x97, + 0x7c, 0x51, 0xb3, 0x9a, 0x5d, 0x4b, 0x43, 0xe3, 0x2c, 0x13, 0xf4, 0x1a, 0x3c, 0xcb, 0xb8, 0x1f, + 0xd2, 0x4e, 0x9c, 0x2f, 0xba, 0x3a, 0xa3, 0x41, 0xbf, 0x76, 0xb6, 0x95, 0xd1, 0xe0, 0x9c, 0x65, + 0xfd, 0x37, 0x00, 0xd6, 0x9e, 0x92, 0x8f, 0xa7, 0x68, 0xaf, 0x5f, 0x80, 0x93, 0x72, 0xbb, 0x1d, + 0x19, 0x95, 0x72, 0xaa, 0x5f, 0x92, 0x52, 0xac, 0xb5, 0xa2, 0x9a, 0x0a, 0x7c, 0xf1, 0xc6, 0x17, + 0xa5, 0xa1, 0xa9, 0xa6, 0x2d, 0x25, 0xc6, 0xb1, 0xbe, 0xfe, 0x5f, 0x90, 0x4f, 0x95, 0xd4, 0x25, + 0x6d, 0xb5, 0x89, 0x43, 0xd1, 0x06, 0x9c, 0x17, 0xdd, 0x20, 0xa6, 0x81, 0x63, 0xb7, 0x09, 0x93, + 0xdd, 0xb2, 0xe2, 0x68, 0x69, 0xb7, 0xf3, 0xad, 0x9c, 0x1e, 0x0f, 0xad, 0x40, 0xaf, 0x43, 0xa4, + 0x3a, 0xa4, 0x8c, 0x1f, 0x55, 0xec, 0x4d, 0xaf, 0xd3, 0x1a, 0xb2, 0xc0, 0xc7, 0xac, 0x42, 0xeb, + 0x70, 0xc1, 0x21, 0x3b, 0xd4, 0x69, 0x51, 0x87, 0xb6, 0xb9, 0x1f, 0x4a, 0x57, 0x6a, 0x9e, 0x58, + 0x1c, 0xf4, 0x6b, 0x0b, 0xb7, 0xf2, 0x4a, 0x3c, 0x6c, 0x5f, 0xbf, 0x9c, 0x3f, 0x91, 0xf4, 0xc6, + 0x55, 0xdf, 0xf9, 0xfb, 0x02, 0x5c, 0x3a, 0xb9, 0xa6, 0xa1, 0x1f, 0x25, 0xed, 0xb1, 0xea, 0x7e, + 0xde, 0x1e, 0x57, 0xfd, 0xd4, 0xfd, 0x31, 0x1c, 0xee, 0x8d, 0xd1, 0xf7, 0xc5, 0x53, 0x44, 0x1c, + 0xaa, 0x2f, 0xca, 0x5b, 0x63, 0xa3, 0x20, 0x40, 0x9a, 0xd3, 0xea, 0x95, 0x23, 0x8e, 0x7c, 0xd4, + 0x88, 0x43, 0xeb, 0x7f, 0x02, 0xf9, 0x09, 0x29, 0x79, 0x73, 0xd0, 0xcf, 0x01, 0x9c, 0xf3, 0x03, + 0xea, 0xad, 0x6d, 0xdf, 0xbc, 0xf7, 0xe5, 0x96, 0x1c, 0x3c, 0x75, 0xa8, 0x6e, 0x7f, 0x42, 0x9e, + 0x62, 0x6e, 0x53, 0x0e, 0xb7, 0x43, 0x3f, 0x60, 0xcd, 0xe7, 0x06, 0xfd, 0xda, 0xdc, 0x56, 0x16, + 0x0a, 0xe7, 0xb1, 0xeb, 0x2e, 0x5c, 0xbc, 0x71, 0xc0, 0x69, 0xe8, 0x11, 0x67, 0xc3, 0x6f, 0x47, + 0x2e, 0xf5, 0xb8, 0x22, 0x9a, 0x1b, 0x37, 0xc1, 0x29, 0xc7, 0xcd, 0x4b, 0xb0, 0x18, 0x85, 0x8e, + 0xce, 0xe2, 0x8a, 0x36, 0x2f, 0xde, 0xc5, 0xb7, 0xb0, 0x90, 0xd7, 0x2f, 0xc3, 0x09, 0xc1, 0x13, + 0x5d, 0x80, 0xc5, 0x90, 0x3c, 0x94, 0x5e, 0x67, 0x9a, 0x53, 0xc2, 0x04, 0x93, 0x87, 0x58, 0xc8, + 0xea, 0x7f, 0xbe, 0x08, 0xe7, 0x72, 0x7b, 0x41, 0x4b, 0xb0, 0x60, 0x77, 0x34, 0x07, 0xa8, 0x9d, + 0x16, 0x6e, 0x6e, 0xe0, 0x82, 0xdd, 0x41, 0xaf, 0xc0, 0x49, 0x35, 0xc0, 0x6b, 0xd0, 0x9a, 0x29, + 0x01, 0x52, 0x2a, 0x7a, 0x8f, 0xc4, 0x9d, 0x20, 0xa2, 0xcd, 0x25, 0x07, 0xba, 0xab, 0x6f, 0x89, + 0xe2, 0x40, 0x77, 0xb1, 0x90, 0xfd, 0xbf, 0xb3, 0x76, 0x3c, 0xec, 0x97, 0x4e, 0x31, 0xec, 0x4f, + 0x7e, 0xec, 0xb0, 0x7f, 0x05, 0x96, 0xb8, 0xcd, 0x1d, 0x6a, 0x4d, 0x65, 0x5b, 0xc4, 0x3b, 0x42, + 0x88, 0x95, 0x0e, 0xdd, 0x87, 0x53, 0x1d, 0xba, 0x4b, 0x22, 0x87, 0x5b, 0x65, 0x99, 0x42, 0xeb, + 0x23, 0x48, 0xa1, 0x66, 0x45, 0x54, 0xc5, 0x0d, 0xe5, 0x17, 0xc7, 0x00, 0xe8, 0x79, 0x38, 0xe5, + 0x92, 0x03, 0xdb, 0x8d, 0x5c, 0x6b, 0x7a, 0x19, 0xac, 0x00, 0x65, 0xb6, 0xa9, 0x44, 0x38, 0xd6, + 0x89, 0xca, 0x48, 0x0f, 0xda, 0x4e, 0xc4, 0xec, 0x1e, 0xd5, 0x4a, 0x0b, 0xca, 0x82, 0x6b, 0x2a, + 0xe3, 0x8d, 0x9c, 0x1e, 0x0f, 0xad, 0x90, 0x60, 0xb6, 0x27, 0x17, 0x57, 0x52, 0x60, 0x4a, 0x84, + 0x63, 0x5d, 0x16, 0x4c, 0xdb, 0xcf, 0x9c, 0x04, 0xa6, 0x17, 0x0f, 0xad, 0x40, 0x5f, 0x84, 0xd3, + 0x2e, 0x39, 0xb8, 0x45, 0xbd, 0x2e, 0xdf, 0xb3, 0x66, 0x97, 0xc1, 0x4a, 0xb1, 0x39, 0x3b, 0xe8, + 0xd7, 0xa6, 0x37, 0x63, 0x21, 0x4e, 0xf4, 0xd2, 0xd8, 0xf6, 0xb4, 0xf1, 0xd9, 0x94, 0x71, 0x2c, + 0xc4, 0x89, 0x5e, 0x3c, 0x3a, 0x01, 0xe1, 0xe2, 0x72, 0x59, 0x73, 0xd9, 0x16, 0x7e, 0x5b, 0x89, + 0x71, 0xac, 0x47, 0x2b, 0xb0, 0xec, 0x92, 0x03, 0x39, 0x6e, 0x59, 0xf3, 0xd2, 0xed, 0x8c, 0xe8, + 0xc3, 0x36, 0xb5, 0x0c, 0x1b, 0xad, 0xb4, 0xb4, 0x3d, 0x65, 0xb9, 0x90, 0xb2, 0xd4, 0x32, 0x6c, + 0xb4, 0x22, 0x89, 0x23, 0xcf, 0x7e, 0x10, 0x51, 0x65, 0x8c, 0x64, 0x64, 0x4c, 0x12, 0xdf, 0x4d, + 0x54, 0x38, 0x6d, 0x27, 0xc6, 0x1d, 0x37, 0x72, 0xb8, 0x1d, 0x38, 0x74, 0x6b, 0xd7, 0x7a, 0x4e, + 0xc6, 0x5f, 0x76, 0xce, 0x9b, 0x46, 0x8a, 0x53, 0x16, 0x88, 0xc2, 0x09, 0xea, 0x45, 0xae, 0x75, + 0x4e, 0x36, 0x4c, 0x23, 0x49, 0x41, 0x73, 0x73, 0x6e, 0x78, 0x91, 0x8b, 0xa5, 0x7b, 0xf4, 0x0a, + 0x9c, 0x75, 0xc9, 0x81, 0x28, 0x07, 0x34, 0xe4, 0x62, 0x10, 0x5b, 0x94, 0x9b, 0x5f, 0x10, 0x4d, + 0xca, 0x66, 0x5a, 0x81, 0xb3, 0x76, 0x72, 0xa1, 0xed, 0xa5, 0x16, 0x9e, 0x4f, 0x2d, 0x4c, 0x2b, + 0x70, 0xd6, 0x4e, 0x44, 0x3a, 0xa4, 0x0f, 0x22, 0x3b, 0xa4, 0x1d, 0xeb, 0x33, 0xb2, 0xaf, 0x91, + 0x91, 0xc6, 0x5a, 0x86, 0x8d, 0x16, 0xf5, 0xe2, 0xb9, 0xdc, 0x92, 0xd7, 0xf0, 0xee, 0x68, 0x2b, + 0xf9, 0x56, 0xb8, 0x16, 0x86, 0xe4, 0x50, 0xbd, 0x34, 0xe9, 0x89, 0x1c, 0x31, 0x58, 0x22, 0x8e, + 0xb3, 0xb5, 0x6b, 0x5d, 0x90, 0xb1, 0x1f, 0xf5, 0x0b, 0x62, 0xaa, 0xce, 0x9a, 0x00, 0xc1, 0x0a, + 0x4b, 0x80, 0xfa, 0x9e, 0x48, 0x8d, 0xa5, 0xf1, 0x82, 0x6e, 0x09, 0x10, 0xac, 0xb0, 0xe4, 0x4e, + 0xbd, 0xc3, 0xad, 0x5d, 0xeb, 0xb3, 0x63, 0xde, 0xa9, 0x00, 0xc1, 0x0a, 0x0b, 0xd9, 0xb0, 0xe8, + 0xf9, 0xdc, 0xba, 0x38, 0x96, 0xe7, 0x59, 0x3e, 0x38, 0xb7, 0x7d, 0x8e, 0x05, 0x06, 0xfa, 0x35, + 0x80, 0x30, 0x48, 0x52, 0xf4, 0xd2, 0x48, 0xc6, 0xbd, 0x1c, 0x64, 0x23, 0xc9, 0xed, 0x1b, 0x1e, + 0x0f, 0x0f, 0x93, 0xd1, 0x23, 0x75, 0x07, 0x52, 0x2c, 0xd0, 0x1f, 0x00, 0x3c, 0x97, 0x9e, 0xa8, + 0x0c, 0xbd, 0xaa, 0x8c, 0xc8, 0x9d, 0x51, 0xa7, 0x79, 0xd3, 0xf7, 0x9d, 0xa6, 0x35, 0xe8, 0xd7, + 0xce, 0xad, 0x1d, 0x83, 0x8a, 0x8f, 0xe5, 0x82, 0xfe, 0x02, 0xe0, 0x82, 0xae, 0xa2, 0x29, 0x86, + 0x35, 0x19, 0x40, 0x3a, 0xea, 0x00, 0xe6, 0x71, 0x54, 0x1c, 0x2f, 0xe8, 0x38, 0x2e, 0x0c, 0xe9, + 0xf1, 0x30, 0x35, 0xf4, 0x77, 0x00, 0x67, 0x3a, 0x34, 0xa0, 0x5e, 0x87, 0x7a, 0x6d, 0xc1, 0x75, + 0x79, 0x24, 0x93, 0x66, 0x9e, 0xeb, 0x46, 0x0a, 0x42, 0xd1, 0x6c, 0x68, 0x9a, 0x33, 0x69, 0xd5, + 0x51, 0xbf, 0x76, 0x3e, 0x59, 0x9a, 0xd6, 0xe0, 0x0c, 0x4b, 0xf4, 0x01, 0x80, 0x73, 0xc9, 0x01, + 0xa8, 0x27, 0xe5, 0xf2, 0x18, 0xf3, 0x40, 0xb6, 0xaf, 0x6b, 0x59, 0x40, 0x9c, 0x67, 0x80, 0xfe, + 0x0a, 0x44, 0xa7, 0x16, 0xcf, 0x8d, 0xcc, 0xaa, 0xcb, 0x58, 0xbe, 0x33, 0xf2, 0x58, 0x1a, 0x04, + 0x15, 0xca, 0x17, 0x93, 0x56, 0xd0, 0x68, 0x8e, 0xfa, 0xb5, 0xc5, 0x74, 0x24, 0x8d, 0x02, 0xa7, + 0x19, 0xa2, 0x9f, 0x02, 0x38, 0x43, 0x93, 0x8e, 0x9b, 0x59, 0x57, 0x46, 0x12, 0xc4, 0x63, 0x9b, + 0x78, 0xf5, 0x37, 0xa6, 0x94, 0x8a, 0xe1, 0x0c, 0xb6, 0xe8, 0x20, 0xe9, 0x01, 0x71, 0x03, 0x87, + 0x5a, 0x9f, 0x1b, 0x71, 0x07, 0x79, 0x43, 0xf9, 0xc5, 0x31, 0xc0, 0x92, 0x98, 0x7c, 0x72, 0x37, + 0x07, 0xcd, 0xc3, 0xe2, 0x3e, 0x3d, 0x54, 0x8d, 0x3d, 0x16, 0x3f, 0x51, 0x07, 0x96, 0x7a, 0xc4, + 0x89, 0xe2, 0xe1, 0x6d, 0xc4, 0x55, 0x17, 0x2b, 0xe7, 0xaf, 0x15, 0x5e, 0x05, 0x4b, 0x8f, 0x00, + 0x3c, 0x7f, 0xfc, 0x85, 0x7e, 0xa6, 0xb4, 0x7e, 0x07, 0xe0, 0xc2, 0xd0, 0xdd, 0x3d, 0x86, 0xd1, + 0x83, 0x2c, 0xa3, 0x37, 0x46, 0x7d, 0x09, 0x5b, 0x3c, 0xb4, 0xbd, 0xae, 0xec, 0x3c, 0xd2, 0xf4, + 0x7e, 0x01, 0xe0, 0x7c, 0xfe, 0x3a, 0x3c, 0xcb, 0x78, 0xd5, 0x1f, 0x15, 0xe0, 0xf9, 0xe3, 0x1b, + 0x26, 0x14, 0x9a, 0xc9, 0x70, 0x3c, 0x13, 0x36, 0x4c, 0xa6, 0x4c, 0x33, 0x54, 0xbe, 0x07, 0x60, + 0xe5, 0xbe, 0xb1, 0x8b, 0xff, 0x53, 0x33, 0xf2, 0xd9, 0x3e, 0xae, 0x3f, 0x89, 0x82, 0xe1, 0x34, + 0x6e, 0xfd, 0x6f, 0x00, 0x2e, 0x1e, 0x5b, 0x58, 0xc5, 0x08, 0x4a, 0x1c, 0xc7, 0x7f, 0xa8, 0xfe, + 0x44, 0x93, 0xfa, 0x93, 0xd9, 0x9a, 0x94, 0x62, 0xad, 0x4d, 0x45, 0xaf, 0xf0, 0x69, 0x45, 0xaf, + 0xfe, 0x4f, 0x00, 0x2f, 0x7e, 0x5c, 0x26, 0x3e, 0x93, 0x23, 0x5d, 0x81, 0x65, 0xdd, 0x14, 0x1d, + 0xca, 0xe3, 0xd4, 0x73, 0x80, 0x2e, 0x1a, 0xf2, 0xbf, 0xe7, 0xea, 0x57, 0xf3, 0xea, 0xe3, 0x27, + 0xd5, 0x33, 0x1f, 0x3e, 0xa9, 0x9e, 0xf9, 0xe8, 0x49, 0xf5, 0xcc, 0x0f, 0x06, 0x55, 0xf0, 0x78, + 0x50, 0x05, 0x1f, 0x0e, 0xaa, 0xe0, 0xa3, 0x41, 0x15, 0xfc, 0x6b, 0x50, 0x05, 0xbf, 0xfc, 0x77, + 0xf5, 0xcc, 0x77, 0xa6, 0x34, 0xf8, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x5b, 0x62, 0x04, + 0xd6, 0x21, 0x00, 0x00, } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto index 2a75484ff..b23163d04 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto @@ -24,7 +24,6 @@ package k8s.io.apiextensions_apiserver.pkg.apis.apiextensions.v1beta1; 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"; -import "k8s.io/apimachinery/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". option go_package = "v1beta1"; @@ -41,14 +40,17 @@ message CustomResourceColumnDefinition { // format is an optional OpenAPI type definition for this column. The 'name' format is applied // to the primary identifier column to assist in clients identifying column is the resource name. // See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more. + // +optional optional string format = 3; // description is a human readable description of this column. + // +optional optional string description = 4; // priority is an integer defining the relative importance of this column compared to others. Lower // numbers are considered higher priority. Columns that may be omitted in limited space scenarios // should be given a higher priority. + // +optional optional int32 priority = 5; // JSONPath is a simple JSON path, i.e. with array notation. @@ -64,6 +66,7 @@ message CustomResourceDefinition { optional CustomResourceDefinitionSpec spec = 2; // Status indicates the actual state of the CustomResourceDefinition + // +optional optional CustomResourceDefinitionStatus status = 3; } @@ -104,15 +107,18 @@ message CustomResourceDefinitionNames { optional string plural = 1; // Singular is the singular name of the resource. It must be all lowercase Defaults to lowercased + // +optional optional string singular = 2; // ShortNames are short names for the resource. It must be all lowercase. + // +optional repeated string shortNames = 3; // Kind is the serialized kind of the resource. It is normally CamelCase and singular. optional string kind = 4; // ListKind is the serialized kind of the list for this resource. Defaults to List. + // +optional optional string listKind = 5; // Categories is a list of grouped resources custom resources belong to (e.g. 'all') @@ -157,9 +163,11 @@ message CustomResourceDefinitionSpec { // by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing // major version, then minor version. An example sorted list of versions: // v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. + // +optional repeated CustomResourceDefinitionVersion versions = 7; // AdditionalPrinterColumns are additional columns shown e.g. in kubectl next to the name. Defaults to a created-at column. + // +optional repeated CustomResourceColumnDefinition additionalPrinterColumns = 8; } @@ -229,15 +237,18 @@ message CustomResourceSubresourceStatus { // CustomResourceSubresources defines the status and scale subresources for CustomResources. message CustomResourceSubresources { // Status denotes the status subresource for CustomResources + // +optional optional CustomResourceSubresourceStatus status = 1; // Scale denotes the scale subresource for CustomResources + // +optional optional CustomResourceSubresourceScale scale = 2; } // CustomResourceValidation is a list of validation methods for CustomResources. message CustomResourceValidation { // OpenAPIV3Schema is the OpenAPI v3 schema to be validated against. + // +optional optional JSONSchemaProps openAPIV3Schema = 1; } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go index 2080cc821..cab705d92 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/types.go @@ -51,8 +51,10 @@ type CustomResourceDefinitionSpec struct { // by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing // major version, then minor version. An example sorted list of versions: // v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10. + // +optional Versions []CustomResourceDefinitionVersion `json:"versions,omitempty" protobuf:"bytes,7,rep,name=versions"` // AdditionalPrinterColumns are additional columns shown e.g. in kubectl next to the name. Defaults to a created-at column. + // +optional AdditionalPrinterColumns []CustomResourceColumnDefinition `json:"additionalPrinterColumns,omitempty" protobuf:"bytes,8,rep,name=additionalPrinterColumns"` } @@ -76,12 +78,15 @@ type CustomResourceColumnDefinition struct { // format is an optional OpenAPI type definition for this column. The 'name' format is applied // to the primary identifier column to assist in clients identifying column is the resource name. // See https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#data-types for more. + // +optional Format string `json:"format,omitempty" protobuf:"bytes,3,opt,name=format"` // description is a human readable description of this column. + // +optional Description string `json:"description,omitempty" protobuf:"bytes,4,opt,name=description"` // priority is an integer defining the relative importance of this column compared to others. Lower // numbers are considered higher priority. Columns that may be omitted in limited space scenarios // should be given a higher priority. + // +optional Priority int32 `json:"priority,omitempty" protobuf:"bytes,5,opt,name=priority"` // JSONPath is a simple JSON path, i.e. with array notation. @@ -94,12 +99,15 @@ type CustomResourceDefinitionNames struct { // too: plural.group and it must be all lowercase. Plural string `json:"plural" protobuf:"bytes,1,opt,name=plural"` // Singular is the singular name of the resource. It must be all lowercase Defaults to lowercased + // +optional Singular string `json:"singular,omitempty" protobuf:"bytes,2,opt,name=singular"` // ShortNames are short names for the resource. It must be all lowercase. + // +optional ShortNames []string `json:"shortNames,omitempty" protobuf:"bytes,3,opt,name=shortNames"` // Kind is the serialized kind of the resource. It is normally CamelCase and singular. Kind string `json:"kind" protobuf:"bytes,4,opt,name=kind"` // ListKind is the serialized kind of the list for this resource. Defaults to List. + // +optional ListKind string `json:"listKind,omitempty" protobuf:"bytes,5,opt,name=listKind"` // Categories is a list of grouped resources custom resources belong to (e.g. 'all') // +optional @@ -192,8 +200,9 @@ type CustomResourceDefinition struct { metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"` // Spec describes how the user wants the resources to appear - Spec CustomResourceDefinitionSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"` + Spec CustomResourceDefinitionSpec `json:"spec" protobuf:"bytes,2,opt,name=spec"` // Status indicates the actual state of the CustomResourceDefinition + // +optional Status CustomResourceDefinitionStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"` } @@ -211,14 +220,17 @@ type CustomResourceDefinitionList struct { // CustomResourceValidation is a list of validation methods for CustomResources. type CustomResourceValidation struct { // OpenAPIV3Schema is the OpenAPI v3 schema to be validated against. + // +optional OpenAPIV3Schema *JSONSchemaProps `json:"openAPIV3Schema,omitempty" protobuf:"bytes,1,opt,name=openAPIV3Schema"` } // CustomResourceSubresources defines the status and scale subresources for CustomResources. type CustomResourceSubresources struct { // Status denotes the status subresource for CustomResources + // +optional Status *CustomResourceSubresourceStatus `json:"status,omitempty" protobuf:"bytes,1,opt,name=status"` // Scale denotes the scale subresource for CustomResources + // +optional Scale *CustomResourceSubresourceScale `json:"scale,omitempty" protobuf:"bytes,2,opt,name=scale"` } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go index bcb2527c8..32fe1c8af 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/zz_generated.conversion.go @@ -34,45 +34,203 @@ func init() { // RegisterConversions adds conversion functions to the given scheme. // Public to allow building arbitrary schemes. -func RegisterConversions(scheme *runtime.Scheme) error { - return scheme.AddGeneratedConversionFuncs( - Convert_v1beta1_CustomResourceColumnDefinition_To_apiextensions_CustomResourceColumnDefinition, - Convert_apiextensions_CustomResourceColumnDefinition_To_v1beta1_CustomResourceColumnDefinition, - Convert_v1beta1_CustomResourceDefinition_To_apiextensions_CustomResourceDefinition, - Convert_apiextensions_CustomResourceDefinition_To_v1beta1_CustomResourceDefinition, - Convert_v1beta1_CustomResourceDefinitionCondition_To_apiextensions_CustomResourceDefinitionCondition, - Convert_apiextensions_CustomResourceDefinitionCondition_To_v1beta1_CustomResourceDefinitionCondition, - Convert_v1beta1_CustomResourceDefinitionList_To_apiextensions_CustomResourceDefinitionList, - Convert_apiextensions_CustomResourceDefinitionList_To_v1beta1_CustomResourceDefinitionList, - Convert_v1beta1_CustomResourceDefinitionNames_To_apiextensions_CustomResourceDefinitionNames, - Convert_apiextensions_CustomResourceDefinitionNames_To_v1beta1_CustomResourceDefinitionNames, - Convert_v1beta1_CustomResourceDefinitionSpec_To_apiextensions_CustomResourceDefinitionSpec, - Convert_apiextensions_CustomResourceDefinitionSpec_To_v1beta1_CustomResourceDefinitionSpec, - Convert_v1beta1_CustomResourceDefinitionStatus_To_apiextensions_CustomResourceDefinitionStatus, - Convert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus, - Convert_v1beta1_CustomResourceDefinitionVersion_To_apiextensions_CustomResourceDefinitionVersion, - Convert_apiextensions_CustomResourceDefinitionVersion_To_v1beta1_CustomResourceDefinitionVersion, - Convert_v1beta1_CustomResourceSubresourceScale_To_apiextensions_CustomResourceSubresourceScale, - Convert_apiextensions_CustomResourceSubresourceScale_To_v1beta1_CustomResourceSubresourceScale, - Convert_v1beta1_CustomResourceSubresourceStatus_To_apiextensions_CustomResourceSubresourceStatus, - Convert_apiextensions_CustomResourceSubresourceStatus_To_v1beta1_CustomResourceSubresourceStatus, - Convert_v1beta1_CustomResourceSubresources_To_apiextensions_CustomResourceSubresources, - Convert_apiextensions_CustomResourceSubresources_To_v1beta1_CustomResourceSubresources, - Convert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation, - Convert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation, - Convert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation, - Convert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation, - Convert_v1beta1_JSON_To_apiextensions_JSON, - Convert_apiextensions_JSON_To_v1beta1_JSON, - Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps, - Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps, - Convert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray, - Convert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray, - Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool, - Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool, - Convert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray, - Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray, - ) +func RegisterConversions(s *runtime.Scheme) error { + if err := s.AddGeneratedConversionFunc((*CustomResourceColumnDefinition)(nil), (*apiextensions.CustomResourceColumnDefinition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceColumnDefinition_To_apiextensions_CustomResourceColumnDefinition(a.(*CustomResourceColumnDefinition), b.(*apiextensions.CustomResourceColumnDefinition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceColumnDefinition)(nil), (*CustomResourceColumnDefinition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceColumnDefinition_To_v1beta1_CustomResourceColumnDefinition(a.(*apiextensions.CustomResourceColumnDefinition), b.(*CustomResourceColumnDefinition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinition)(nil), (*apiextensions.CustomResourceDefinition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinition_To_apiextensions_CustomResourceDefinition(a.(*CustomResourceDefinition), b.(*apiextensions.CustomResourceDefinition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinition)(nil), (*CustomResourceDefinition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinition_To_v1beta1_CustomResourceDefinition(a.(*apiextensions.CustomResourceDefinition), b.(*CustomResourceDefinition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinitionCondition)(nil), (*apiextensions.CustomResourceDefinitionCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinitionCondition_To_apiextensions_CustomResourceDefinitionCondition(a.(*CustomResourceDefinitionCondition), b.(*apiextensions.CustomResourceDefinitionCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinitionCondition)(nil), (*CustomResourceDefinitionCondition)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinitionCondition_To_v1beta1_CustomResourceDefinitionCondition(a.(*apiextensions.CustomResourceDefinitionCondition), b.(*CustomResourceDefinitionCondition), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinitionList)(nil), (*apiextensions.CustomResourceDefinitionList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinitionList_To_apiextensions_CustomResourceDefinitionList(a.(*CustomResourceDefinitionList), b.(*apiextensions.CustomResourceDefinitionList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinitionList)(nil), (*CustomResourceDefinitionList)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinitionList_To_v1beta1_CustomResourceDefinitionList(a.(*apiextensions.CustomResourceDefinitionList), b.(*CustomResourceDefinitionList), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinitionNames)(nil), (*apiextensions.CustomResourceDefinitionNames)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinitionNames_To_apiextensions_CustomResourceDefinitionNames(a.(*CustomResourceDefinitionNames), b.(*apiextensions.CustomResourceDefinitionNames), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinitionNames)(nil), (*CustomResourceDefinitionNames)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinitionNames_To_v1beta1_CustomResourceDefinitionNames(a.(*apiextensions.CustomResourceDefinitionNames), b.(*CustomResourceDefinitionNames), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinitionSpec)(nil), (*apiextensions.CustomResourceDefinitionSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinitionSpec_To_apiextensions_CustomResourceDefinitionSpec(a.(*CustomResourceDefinitionSpec), b.(*apiextensions.CustomResourceDefinitionSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinitionSpec)(nil), (*CustomResourceDefinitionSpec)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinitionSpec_To_v1beta1_CustomResourceDefinitionSpec(a.(*apiextensions.CustomResourceDefinitionSpec), b.(*CustomResourceDefinitionSpec), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinitionStatus)(nil), (*apiextensions.CustomResourceDefinitionStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinitionStatus_To_apiextensions_CustomResourceDefinitionStatus(a.(*CustomResourceDefinitionStatus), b.(*apiextensions.CustomResourceDefinitionStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinitionStatus)(nil), (*CustomResourceDefinitionStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinitionStatus_To_v1beta1_CustomResourceDefinitionStatus(a.(*apiextensions.CustomResourceDefinitionStatus), b.(*CustomResourceDefinitionStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceDefinitionVersion)(nil), (*apiextensions.CustomResourceDefinitionVersion)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceDefinitionVersion_To_apiextensions_CustomResourceDefinitionVersion(a.(*CustomResourceDefinitionVersion), b.(*apiextensions.CustomResourceDefinitionVersion), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceDefinitionVersion)(nil), (*CustomResourceDefinitionVersion)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceDefinitionVersion_To_v1beta1_CustomResourceDefinitionVersion(a.(*apiextensions.CustomResourceDefinitionVersion), b.(*CustomResourceDefinitionVersion), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceSubresourceScale)(nil), (*apiextensions.CustomResourceSubresourceScale)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceSubresourceScale_To_apiextensions_CustomResourceSubresourceScale(a.(*CustomResourceSubresourceScale), b.(*apiextensions.CustomResourceSubresourceScale), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceSubresourceScale)(nil), (*CustomResourceSubresourceScale)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceSubresourceScale_To_v1beta1_CustomResourceSubresourceScale(a.(*apiextensions.CustomResourceSubresourceScale), b.(*CustomResourceSubresourceScale), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceSubresourceStatus)(nil), (*apiextensions.CustomResourceSubresourceStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceSubresourceStatus_To_apiextensions_CustomResourceSubresourceStatus(a.(*CustomResourceSubresourceStatus), b.(*apiextensions.CustomResourceSubresourceStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceSubresourceStatus)(nil), (*CustomResourceSubresourceStatus)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceSubresourceStatus_To_v1beta1_CustomResourceSubresourceStatus(a.(*apiextensions.CustomResourceSubresourceStatus), b.(*CustomResourceSubresourceStatus), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceSubresources)(nil), (*apiextensions.CustomResourceSubresources)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceSubresources_To_apiextensions_CustomResourceSubresources(a.(*CustomResourceSubresources), b.(*apiextensions.CustomResourceSubresources), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceSubresources)(nil), (*CustomResourceSubresources)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceSubresources_To_v1beta1_CustomResourceSubresources(a.(*apiextensions.CustomResourceSubresources), b.(*CustomResourceSubresources), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*CustomResourceValidation)(nil), (*apiextensions.CustomResourceValidation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_CustomResourceValidation_To_apiextensions_CustomResourceValidation(a.(*CustomResourceValidation), b.(*apiextensions.CustomResourceValidation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.CustomResourceValidation)(nil), (*CustomResourceValidation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_CustomResourceValidation_To_v1beta1_CustomResourceValidation(a.(*apiextensions.CustomResourceValidation), b.(*CustomResourceValidation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*ExternalDocumentation)(nil), (*apiextensions.ExternalDocumentation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_ExternalDocumentation_To_apiextensions_ExternalDocumentation(a.(*ExternalDocumentation), b.(*apiextensions.ExternalDocumentation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.ExternalDocumentation)(nil), (*ExternalDocumentation)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_ExternalDocumentation_To_v1beta1_ExternalDocumentation(a.(*apiextensions.ExternalDocumentation), b.(*ExternalDocumentation), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*JSON)(nil), (*apiextensions.JSON)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_JSON_To_apiextensions_JSON(a.(*JSON), b.(*apiextensions.JSON), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.JSON)(nil), (*JSON)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSON_To_v1beta1_JSON(a.(*apiextensions.JSON), b.(*JSON), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*JSONSchemaProps)(nil), (*apiextensions.JSONSchemaProps)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_JSONSchemaProps_To_apiextensions_JSONSchemaProps(a.(*JSONSchemaProps), b.(*apiextensions.JSONSchemaProps), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.JSONSchemaProps)(nil), (*JSONSchemaProps)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(a.(*apiextensions.JSONSchemaProps), b.(*JSONSchemaProps), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*JSONSchemaPropsOrArray)(nil), (*apiextensions.JSONSchemaPropsOrArray)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_JSONSchemaPropsOrArray_To_apiextensions_JSONSchemaPropsOrArray(a.(*JSONSchemaPropsOrArray), b.(*apiextensions.JSONSchemaPropsOrArray), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.JSONSchemaPropsOrArray)(nil), (*JSONSchemaPropsOrArray)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSONSchemaPropsOrArray_To_v1beta1_JSONSchemaPropsOrArray(a.(*apiextensions.JSONSchemaPropsOrArray), b.(*JSONSchemaPropsOrArray), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*JSONSchemaPropsOrBool)(nil), (*apiextensions.JSONSchemaPropsOrBool)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_JSONSchemaPropsOrBool_To_apiextensions_JSONSchemaPropsOrBool(a.(*JSONSchemaPropsOrBool), b.(*apiextensions.JSONSchemaPropsOrBool), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.JSONSchemaPropsOrBool)(nil), (*JSONSchemaPropsOrBool)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSONSchemaPropsOrBool_To_v1beta1_JSONSchemaPropsOrBool(a.(*apiextensions.JSONSchemaPropsOrBool), b.(*JSONSchemaPropsOrBool), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*JSONSchemaPropsOrStringArray)(nil), (*apiextensions.JSONSchemaPropsOrStringArray)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_JSONSchemaPropsOrStringArray_To_apiextensions_JSONSchemaPropsOrStringArray(a.(*JSONSchemaPropsOrStringArray), b.(*apiextensions.JSONSchemaPropsOrStringArray), scope) + }); err != nil { + return err + } + if err := s.AddGeneratedConversionFunc((*apiextensions.JSONSchemaPropsOrStringArray)(nil), (*JSONSchemaPropsOrStringArray)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSONSchemaPropsOrStringArray_To_v1beta1_JSONSchemaPropsOrStringArray(a.(*apiextensions.JSONSchemaPropsOrStringArray), b.(*JSONSchemaPropsOrStringArray), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*apiextensions.JSONSchemaProps)(nil), (*JSONSchemaProps)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSONSchemaProps_To_v1beta1_JSONSchemaProps(a.(*apiextensions.JSONSchemaProps), b.(*JSONSchemaProps), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*apiextensions.JSON)(nil), (*JSON)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_apiextensions_JSON_To_v1beta1_JSON(a.(*apiextensions.JSON), b.(*JSON), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*JSON)(nil), (*apiextensions.JSON)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta1_JSON_To_apiextensions_JSON(a.(*JSON), b.(*apiextensions.JSON), scope) + }); err != nil { + return err + } + return nil } func autoConvert_v1beta1_CustomResourceColumnDefinition_To_apiextensions_CustomResourceColumnDefinition(in *CustomResourceColumnDefinition, out *apiextensions.CustomResourceColumnDefinition, s conversion.Scope) error { diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go index 2177cbd7e..0568bc181 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation/validation.go @@ -255,7 +255,7 @@ func ValidateCustomResourceColumnDefinition(col *apiextensions.CustomResourceCol allErrs := field.ErrorList{} if len(col.Name) == 0 { - allErrs = append(allErrs, field.Required(fldPath.Child("header"), "")) + allErrs = append(allErrs, field.Required(fldPath.Child("name"), "")) } if len(col.Type) == 0 { @@ -269,8 +269,8 @@ func ValidateCustomResourceColumnDefinition(col *apiextensions.CustomResourceCol } if len(col.JSONPath) == 0 { - allErrs = append(allErrs, field.Required(fldPath.Child("path"), "")) - } else if errs := validateSimpleJSONPath(col.JSONPath, fldPath.Child("path")); len(errs) > 0 { + allErrs = append(allErrs, field.Required(fldPath.Child("JSONPath"), "")) + } else if errs := validateSimpleJSONPath(col.JSONPath, fldPath.Child("JSONPath")); len(errs) > 0 { allErrs = append(allErrs, errs...) } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go index df50ce4ac..697c5e591 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler.go @@ -664,6 +664,7 @@ type CRDRESTOptionsGetter struct { DefaultWatchCacheSize int EnableGarbageCollection bool DeleteCollectionWorkers int + CountMetricPollPeriod time.Duration } func (t CRDRESTOptionsGetter) GetRESTOptions(resource schema.GroupResource) (generic.RESTOptions, error) { @@ -673,6 +674,7 @@ func (t CRDRESTOptionsGetter) GetRESTOptions(resource schema.GroupResource) (gen EnableGarbageCollection: t.EnableGarbageCollection, DeleteCollectionWorkers: t.DeleteCollectionWorkers, ResourcePrefix: resource.Group + "/" + resource.Resource, + CountMetricPollPeriod: t.CountMetricPollPeriod, } if t.EnableWatchCache { ret.Decorator = genericregistry.StorageWithCacher(t.DefaultWatchCacheSize) diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go index 206178537..fa7c84e66 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/customresource_handler_test.go @@ -24,8 +24,8 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions" "k8s.io/apiextensions-apiserver/pkg/apiserver/conversion" + "k8s.io/apimachinery/pkg/api/apitesting/fuzzer" "k8s.io/apimachinery/pkg/api/equality" - "k8s.io/apimachinery/pkg/api/testing/fuzzer" metafuzzer "k8s.io/apimachinery/pkg/apis/meta/fuzzer" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go index 3d9c50c84..ef73c008b 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/apiserver/validation/validation_test.go @@ -22,8 +22,8 @@ import ( "github.com/go-openapi/spec" + "k8s.io/apimachinery/pkg/api/apitesting/fuzzer" apiequality "k8s.io/apimachinery/pkg/api/equality" - "k8s.io/apimachinery/pkg/api/testing/fuzzer" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/serializer" "k8s.io/apimachinery/pkg/util/json" diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/options/options.go b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/options/options.go index 5e18ba3bd..995a31555 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/options/options.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/options/options.go @@ -108,6 +108,7 @@ func NewCRDRESTOptionsGetter(etcdOptions genericoptions.EtcdOptions) genericregi DefaultWatchCacheSize: etcdOptions.DefaultWatchCacheSize, EnableGarbageCollection: etcdOptions.EnableGarbageCollection, DeleteCollectionWorkers: etcdOptions.DeleteCollectionWorkers, + CountMetricPollPeriod: etcdOptions.StorageConfig.CountMetricPollPeriod, } ret.StorageConfig.Codec = unstructured.UnstructuredJSONScheme diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testdata/localhost_127.0.0.1_localhost.crt b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testdata/localhost_127.0.0.1_localhost.crt new file mode 100644 index 000000000..6143ecc60 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testdata/localhost_127.0.0.1_localhost.crt @@ -0,0 +1,37 @@ +-----BEGIN CERTIFICATE----- +MIIDGjCCAgKgAwIBAgIBAjANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdsb2Nh +bGhvc3QtY2FAMTUzMTQ2ODA4NTAgFw0xODA3MTMwNjQ4MDVaGA8yMTE4MDYxOTA2 +NDgwNVowHzEdMBsGA1UEAwwUbG9jYWxob3N0QDE1MzE0NjgwODYwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDC9Qfx1YAEp+wrSIjbinWw3pWIDbf57Lut +fXgS84ilZpc7M2zeu1QrPyhCedL/gPP0QxKbPS6AR5R/DibH4RWcujL6CU5FB0Y9 +on+IpN/Iml2XzgGiU82gTkJg185VgWwDaHOPKvUF9N1GpvxcSvRsNGoiBJ/LlE4N +hxyUQ0V/lAalYxYybxgl8/xghWMkGnQc3YKWKqGmtBaaax3xvMzamxpWPphoLG07 ++YZfAf0Q7vslVMmlslRmx9OpJFvRnkelbXoHHx73umbMiFp28njY8NK2dqXwb6Z8 +0BCezppCKYpbjnupOIDAAE0KvjzhhzSS68ZgukiBZOcUlnWLzL39AgMBAAGjXDBa +MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAMBgNVHRMBAf8E +AjAAMCUGA1UdEQQeMByCCWxvY2FsaG9zdIIJbG9jYWxob3N0hwR/AAABMA0GCSqG +SIb3DQEBCwUAA4IBAQBm9Z15QxsRqoaRDh/ELA93eE9105gwrXrR3AK/iKuJyxIc +/SXVbpAaYHArMrUzaZs0GXEzgW31tZn8D3dgFy8XdZxk1ztaFTm+QTnFRogMNB8A +kvpq7jwTa44c7G0wuNO2nATMu2Ifi/nSdQadTxzmZacSrevN/zcjmvSoV4VFkKO5 +VBnr7e1ruffxAaVAzrRraplpZvuJzlcvqTYAME8fq8H9QidvaXF6yIbEPwwUHK67 +8W4rXn9Zp6NDuQhH0eNPAGlEAaYuyCJvJZeM68ootMi7Uh6RJOTDw1HIdekYEr1/ +FAg4+rH/9Gi+o/LXsBmYXabO+GjsOwfezv3THDnw +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIC5DCCAcygAwIBAgIBATANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdsb2Nh +bGhvc3QtY2FAMTUzMTQ2ODA4NTAgFw0xODA3MTMwNjQ4MDVaGA8yMTE4MDYxOTA2 +NDgwNVowIjEgMB4GA1UEAwwXbG9jYWxob3N0LWNhQDE1MzE0NjgwODUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDFDtkZLlseubpzPQr1IT3xE28/1cDM +3UB2vp+pbiwvkmHvfm9RxMmDZbYWqXL5beCG/ladHaJ0RW4f3sBPzxDzUP1zFM94 +iYDZmVA0f7ZvtijuiUrwc6TP21ctX5TlN2YYoh4Er+aZ6E5MQIMAxkP+w1lwyYmj +oxopD1wf/4cmZgv9axZV1zR5MrpyVboQa4mQRUoMlLQFE0erMc0yIJsIVWXx9yS7 +9dzhEXC2WPYnPHh6AYSQZBdzumj5HdZhOQhL/UOWq6AJGP1p7l0uXPArmDG0g9pS +aFxAQx6IxtdSUOZFBlel/p+iOab3H8eoNkgCPMXmrM3WZLW7Uy5Onx6LAgMBAAGj +IzAhMA4GA1UdDwEB/wQEAwICpDAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQC0BaURRhpRbORaOiZJFeQR0gCD9goggXNj+cPh8yYol2GNBdLfed6x +B6ZxGW2Y14pOjo2Ba5FdZyzfOenjhkqhUujQSMxKjkWxX03blLjPEvLo/Wi6TLnp +H3Qmm/Gq1GAxmkZUaovcE71/zpZ/lJLWVVxz21wxcGQIA30DUKgdycfOvWdYkYGf +tnsXpY4yIyHvKvfeIbxo8doBnoRvYd4a7QyY0zw/Q3qaCdINo9zKJYV0CnpSZhKy +5RLcrlfvXttEYryP57RWP9GYJMNmiovGcbls4pOwZMNueUx5qEzIbC9lsfyt13Bc +oZ1lk1TqzwJERoALmgT0ccp7LRxIV90P +-----END CERTIFICATE----- diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testdata/localhost_127.0.0.1_localhost.key b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testdata/localhost_127.0.0.1_localhost.key new file mode 100644 index 000000000..3d652c869 --- /dev/null +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testdata/localhost_127.0.0.1_localhost.key @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpgIBAAKCAQEAwvUH8dWABKfsK0iI24p1sN6ViA23+ey7rX14EvOIpWaXOzNs +3rtUKz8oQnnS/4Dz9EMSmz0ugEeUfw4mx+EVnLoy+glORQdGPaJ/iKTfyJpdl84B +olPNoE5CYNfOVYFsA2hzjyr1BfTdRqb8XEr0bDRqIgSfy5RODYcclENFf5QGpWMW +Mm8YJfP8YIVjJBp0HN2CliqhprQWmmsd8bzM2psaVj6YaCxtO/mGXwH9EO77JVTJ +pbJUZsfTqSRb0Z5HpW16Bx8e97pmzIhadvJ42PDStnal8G+mfNAQns6aQimKW457 +qTiAwABNCr484Yc0kuvGYLpIgWTnFJZ1i8y9/QIDAQABAoIBAQC3rgioLpEI0fVO +6m4W+iLcWznjD5nQnNxOHrJsmIqb20aM/myKhVBN1pll2EWVeLdf4Xm8TS5sqgQc +mQast0KXgU7aCL53ht0E4P7rjPtSky2vAubDO9W2PUWI3IqIQQG1TEnkD4L+868v +C9EkW3JiKBf+qQCs27OWR0AD6EWoZfc9NT5AVnL1aTwKnLpSt80umXUMmR5c4ddT +58FO9JgZCzHbcoAyosf4v8fiz588zjBDRRienHourxmUnsKJrIyCMrygBpQ7wIcO +R86e+PuQ+toeSbldq8EfN/XoY0POUvLL/zu6HkbZLhOEjEHQMkMRCMtmLCjuU+sy +TwdRl0xBAoGBAOtC+kqh5eYgQAYtvPaW/XQwrang+G2xIYd/OTXzIlU2T3sTPrDo +IEkwsXwAeKcJx+Z7XcipSG5l1s5QZbc+GIARmJ0DrAwLkDhlwz8RssxBY4q64Jtn +FWRm6CBJkPDq4t16ZbXDdUleXAaqbvxTTnPZMz2o1XHEDpUcPG29MnF1AoGBANQk +hh44qY3IUxRwp6ZoNHVRz7oJC2JLj1++QNoLXX/8LWTXd49RZpI7Byk2lEXl7clf +3rErBuWElrxxuikOahEdzkjKSZq4RSKj1lNpy14spBRo7O9Q+GrJgcr3tcuyT6ri +sXOo6ET5bG72j+uVzv/QbuyCS8elZQHifBIi58FpAoGBAIXsQ8TWcqPUuf2KbeZF +v5Qz3bg1y9XNnpOedbfjZyjw2L/sDaTxDuf7Ix2+uvADnlry4UlILGZD7MrXc3+j +hpjo62J+Y6MbtgaUz1eIwKqLkpm3lgKA5OmZtwwiNLMgUvLXKS0WTh7s6yAUR0e2 +OJO0EfpIsPCpNc/mGfQyXpO9AoGBANEVblo63mGvHrL2lUWdTpaSm3lvkJjAf/6N +NL2yleSeVt8cvemzALT/GH+2G00I4OOoaYOUNKfhle8E58WvPzq/daCoPwMOupT5 +hTORAa8/sDetclgsJaqaECJLIhIxG/QAmYS05LeWXRjASfiXHf1jIPBZOvb6PCMv +Zbk6TdCBAoGBAIxT9W5FhHl+uUpuHIuFvCUg0AoERk9dUPXVEz1C1lqsYfetZ0uz +wh9KtFq2puWrez+K4o04LoInXHFeb34Hx/9SRDCTawmMicuLxivbTm4yjG2RsShl +nbq376nyawu9rcjM3F5ucYLiGHmQOPYWSOvGr2QhGgFgzXiBQ1RcAYdH +-----END RSA PRIVATE KEY----- diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go index af2f0d2e6..3d705576f 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/cmd/server/testing/testserver.go @@ -21,6 +21,8 @@ import ( "io/ioutil" "net" "os" + "path" + "runtime" "time" "github.com/spf13/pflag" @@ -109,11 +111,19 @@ func StartTestServer(t Logger, instanceOptions *TestServerInstanceOptions, custo s := options.NewCustomResourceDefinitionsServerOptions(os.Stdout, os.Stderr) s.AddFlags(fs) - s.RecommendedOptions.SecureServing.Listener, s.RecommendedOptions.SecureServing.BindPort, err = createListenerOnFreePort() + s.RecommendedOptions.SecureServing.Listener, s.RecommendedOptions.SecureServing.BindPort, err = createLocalhostListenerOnFreePort() if err != nil { return result, fmt.Errorf("failed to create listener: %v", err) } s.RecommendedOptions.SecureServing.ServerCert.CertDirectory = result.TmpDir + s.RecommendedOptions.SecureServing.ExternalAddress = s.RecommendedOptions.SecureServing.Listener.Addr().(*net.TCPAddr).IP // use listener addr although it is a loopback device + + _, thisFile, _, ok := runtime.Caller(0) + if !ok { + return result, fmt.Errorf("failed to get current file") + } + s.RecommendedOptions.SecureServing.ServerCert.FixtureDirectory = path.Join(path.Dir(thisFile), "testdata") + if storageConfig != nil { s.RecommendedOptions.Etcd.StorageConfig = *storageConfig } @@ -184,8 +194,8 @@ func StartTestServerOrDie(t Logger, instanceOptions *TestServerInstanceOptions, return nil } -func createListenerOnFreePort() (net.Listener, int, error) { - ln, err := net.Listen("tcp", ":0") +func createLocalhostListenerOnFreePort() (net.Listener, int, error) { + ln, err := net.Listen("tcp", "127.0.0.1:0") if err != nil { return nil, 0, err } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go index 5c2ebbcaa..6420c3a6f 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/controller/establish/establishing_controller.go @@ -99,6 +99,7 @@ func (ec *EstablishingController) processNextWorkItem() bool { err := ec.syncFn(key.(string)) if err == nil { + ec.queue.Forget(key) return true } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go index 4c0dd4da5..0a94bc5c4 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd.go @@ -42,7 +42,6 @@ type CustomResourceStorage struct { func NewStorage(resource schema.GroupResource, listKind schema.GroupVersionKind, strategy customResourceStrategy, optsGetter generic.RESTOptionsGetter, categories []string, tableConvertor rest.TableConvertor) CustomResourceStorage { customResourceREST, customResourceStatusREST := newREST(resource, listKind, strategy, optsGetter, categories, tableConvertor) - customResourceRegistry := NewRegistry(customResourceREST) s := CustomResourceStorage{ CustomResource: customResourceREST, @@ -59,7 +58,7 @@ func NewStorage(resource schema.GroupResource, listKind schema.GroupVersionKind, } s.Scale = &ScaleREST{ - registry: customResourceRegistry, + store: customResourceREST.Store, specReplicasPath: scale.SpecReplicasPath, statusReplicasPath: scale.StatusReplicasPath, labelSelectorPath: labelSelectorPath, @@ -182,14 +181,14 @@ func (r *StatusREST) Get(ctx context.Context, name string, options *metav1.GetOp } // Update alters the status subset of an object. -func (r *StatusREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool) (runtime.Object, bool, error) { +func (r *StatusREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error) { // We are explicitly setting forceAllowCreate to false in the call to the underlying storage because // subresources should never allow create on update. - return r.store.Update(ctx, name, objInfo, createValidation, updateValidation, false) + return r.store.Update(ctx, name, objInfo, createValidation, updateValidation, false, options) } type ScaleREST struct { - registry Registry + store *genericregistry.Store specReplicasPath string statusReplicasPath string labelSelectorPath string @@ -209,10 +208,11 @@ func (r *ScaleREST) New() runtime.Object { } func (r *ScaleREST) Get(ctx context.Context, name string, options *metav1.GetOptions) (runtime.Object, error) { - cr, err := r.registry.GetCustomResource(ctx, name, options) + obj, err := r.store.Get(ctx, name, options) if err != nil { return nil, err } + cr := obj.(*unstructured.Unstructured) scaleObject, replicasFound, err := scaleFromCustomResource(cr, r.specReplicasPath, r.statusReplicasPath, r.labelSelectorPath) if err != nil { @@ -224,11 +224,12 @@ func (r *ScaleREST) Get(ctx context.Context, name string, options *metav1.GetOpt return scaleObject, err } -func (r *ScaleREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool) (runtime.Object, bool, error) { - cr, err := r.registry.GetCustomResource(ctx, name, &metav1.GetOptions{}) +func (r *ScaleREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error) { + obj, err := r.store.Get(ctx, name, &metav1.GetOptions{}) if err != nil { return nil, false, err } + cr := obj.(*unstructured.Unstructured) const invalidSpecReplicas = -2147483648 // smallest int32 oldScale, replicasFound, err := scaleFromCustomResource(cr, r.specReplicasPath, r.statusReplicasPath, r.labelSelectorPath) @@ -239,7 +240,7 @@ func (r *ScaleREST) Update(ctx context.Context, name string, objInfo rest.Update oldScale.Spec.Replicas = invalidSpecReplicas // signal that this was not set before } - obj, err := objInfo.UpdatedObject(ctx, oldScale) + obj, err = objInfo.UpdatedObject(ctx, oldScale) if err != nil { return nil, false, err } @@ -262,10 +263,11 @@ func (r *ScaleREST) Update(ctx context.Context, name string, objInfo rest.Update } cr.SetResourceVersion(scale.ResourceVersion) - cr, err = r.registry.UpdateCustomResource(ctx, cr, createValidation, updateValidation) + obj, _, err = r.store.Update(ctx, cr.GetName(), rest.DefaultUpdatedObjectInfo(cr), createValidation, updateValidation, false, options) if err != nil { return nil, false, err } + cr = obj.(*unstructured.Unstructured) newScale, _, err := scaleFromCustomResource(cr, r.specReplicasPath, r.statusReplicasPath, r.labelSelectorPath) if err != nil { diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go index 86351582d..0a6870dc0 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/etcd_test.go @@ -112,7 +112,7 @@ func newStorage(t *testing.T) (customresource.CustomResourceStorage, *etcdtestin // createCustomResource is a helper function that returns a CustomResource with the updated resource version. func createCustomResource(storage *customresource.REST, cr unstructured.Unstructured, t *testing.T) (unstructured.Unstructured, error) { ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), cr.GetNamespace()) - obj, err := storage.Create(ctx, &cr, rest.ValidateAllObjectFunc, false) + obj, err := storage.Create(ctx, &cr, rest.ValidateAllObjectFunc, &metav1.CreateOptions{}) if err != nil { t.Errorf("Failed to create CustomResource, %v", err) } @@ -205,7 +205,7 @@ func TestGenerationNumber(t *testing.T) { // Updates to spec should increment the generation number setSpecReplicas(storedCR, getSpecReplicas(storedCR)+1) - if _, _, err := storage.CustomResource.Update(ctx, storedCR.GetName(), rest.DefaultUpdatedObjectInfo(storedCR), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false); err != nil { + if _, _, err := storage.CustomResource.Update(ctx, storedCR.GetName(), rest.DefaultUpdatedObjectInfo(storedCR), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}); err != nil { t.Errorf("unexpected error: %v", err) } etcdCR, err = storage.CustomResource.Get(ctx, cr.GetName(), &metav1.GetOptions{}) @@ -219,7 +219,7 @@ func TestGenerationNumber(t *testing.T) { // Updates to status should not increment the generation number setStatusReplicas(storedCR, getStatusReplicas(storedCR)+1) - if _, _, err := storage.CustomResource.Update(ctx, storedCR.GetName(), rest.DefaultUpdatedObjectInfo(storedCR), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false); err != nil { + if _, _, err := storage.CustomResource.Update(ctx, storedCR.GetName(), rest.DefaultUpdatedObjectInfo(storedCR), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}); err != nil { t.Errorf("unexpected error: %v", err) } etcdCR, err = storage.CustomResource.Get(ctx, cr.GetName(), &metav1.GetOptions{}) @@ -254,7 +254,7 @@ func TestColumns(t *testing.T) { ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), metav1.NamespaceDefault) key := "/noxus/" + metav1.NamespaceDefault + "/foo" validCustomResource := validNewCustomResource() - if err := storage.CustomResource.Storage.Create(ctx, key, validCustomResource, nil, 0); err != nil { + if err := storage.CustomResource.Storage.Create(ctx, key, validCustomResource, nil, 0, false); err != nil { t.Fatalf("unexpected error: %v", err) } @@ -324,7 +324,7 @@ func TestStatusUpdate(t *testing.T) { ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), metav1.NamespaceDefault) key := "/noxus/" + metav1.NamespaceDefault + "/foo" validCustomResource := validNewCustomResource() - if err := storage.CustomResource.Storage.Create(ctx, key, validCustomResource, nil, 0); err != nil { + if err := storage.CustomResource.Storage.Create(ctx, key, validCustomResource, nil, 0, false); err != nil { t.Fatalf("unexpected error: %v", err) } @@ -339,7 +339,7 @@ func TestStatusUpdate(t *testing.T) { "replicas": int64(7), } - if _, _, err := storage.Status.Update(ctx, update.GetName(), rest.DefaultUpdatedObjectInfo(update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false); err != nil { + if _, _, err := storage.Status.Update(ctx, update.GetName(), rest.DefaultUpdatedObjectInfo(update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}); err != nil { t.Fatalf("unexpected error: %v", err) } @@ -375,7 +375,7 @@ func TestScaleGet(t *testing.T) { var cr unstructured.Unstructured ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), metav1.NamespaceDefault) key := "/noxus/" + metav1.NamespaceDefault + "/" + name - if err := storage.CustomResource.Storage.Create(ctx, key, &validCustomResource, &cr, 0); err != nil { + if err := storage.CustomResource.Storage.Create(ctx, key, &validCustomResource, &cr, 0, false); err != nil { t.Fatalf("error setting new custom resource (key: %s) %v: %v", key, validCustomResource, err) } @@ -415,7 +415,7 @@ func TestScaleGetWithoutSpecReplicas(t *testing.T) { key := "/noxus/" + metav1.NamespaceDefault + "/" + name withoutSpecReplicas := validCustomResource.DeepCopy() unstructured.RemoveNestedField(withoutSpecReplicas.Object, "spec", "replicas") - if err := storage.CustomResource.Storage.Create(ctx, key, withoutSpecReplicas, &cr, 0); err != nil { + if err := storage.CustomResource.Storage.Create(ctx, key, withoutSpecReplicas, &cr, 0, false); err != nil { t.Fatalf("error setting new custom resource (key: %s) %v: %v", key, withoutSpecReplicas, err) } @@ -438,7 +438,7 @@ func TestScaleUpdate(t *testing.T) { var cr unstructured.Unstructured ctx := genericapirequest.WithNamespace(genericapirequest.NewContext(), metav1.NamespaceDefault) key := "/noxus/" + metav1.NamespaceDefault + "/" + name - if err := storage.CustomResource.Storage.Create(ctx, key, &validCustomResource, &cr, 0); err != nil { + if err := storage.CustomResource.Storage.Create(ctx, key, &validCustomResource, &cr, 0, false); err != nil { t.Fatalf("error setting new custom resource (key: %s) %v: %v", key, validCustomResource, err) } @@ -459,7 +459,7 @@ func TestScaleUpdate(t *testing.T) { }, } - if _, _, err := storage.Scale.Update(ctx, update.Name, rest.DefaultUpdatedObjectInfo(&update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false); err != nil { + if _, _, err := storage.Scale.Update(ctx, update.Name, rest.DefaultUpdatedObjectInfo(&update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}); err != nil { t.Fatalf("error updating scale %v: %v", update, err) } @@ -475,7 +475,7 @@ func TestScaleUpdate(t *testing.T) { update.ResourceVersion = scale.ResourceVersion update.Spec.Replicas = 15 - if _, _, err = storage.Scale.Update(ctx, update.Name, rest.DefaultUpdatedObjectInfo(&update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false); err != nil && !errors.IsConflict(err) { + if _, _, err = storage.Scale.Update(ctx, update.Name, rest.DefaultUpdatedObjectInfo(&update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}); err != nil && !errors.IsConflict(err) { t.Fatalf("unexpected error, expecting an update conflict but got %v", err) } } @@ -492,7 +492,7 @@ func TestScaleUpdateWithoutSpecReplicas(t *testing.T) { key := "/noxus/" + metav1.NamespaceDefault + "/" + name withoutSpecReplicas := validCustomResource.DeepCopy() unstructured.RemoveNestedField(withoutSpecReplicas.Object, "spec", "replicas") - if err := storage.CustomResource.Storage.Create(ctx, key, withoutSpecReplicas, &cr, 0); err != nil { + if err := storage.CustomResource.Storage.Create(ctx, key, withoutSpecReplicas, &cr, 0, false); err != nil { t.Fatalf("error setting new custom resource (key: %s) %v: %v", key, withoutSpecReplicas, err) } @@ -507,7 +507,7 @@ func TestScaleUpdateWithoutSpecReplicas(t *testing.T) { }, } - if _, _, err := storage.Scale.Update(ctx, update.Name, rest.DefaultUpdatedObjectInfo(&update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false); err != nil { + if _, _, err := storage.Scale.Update(ctx, update.Name, rest.DefaultUpdatedObjectInfo(&update), rest.ValidateAllObjectFunc, rest.ValidateAllObjectUpdateFunc, false, &metav1.UpdateOptions{}); err != nil { t.Fatalf("error updating scale %v: %v", update, err) } diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/registry.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/registry.go deleted file mode 100644 index b377ae3cd..000000000 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresource/registry.go +++ /dev/null @@ -1,104 +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 customresource - -import ( - "context" - "fmt" - "strings" - - "k8s.io/apimachinery/pkg/api/errors" - metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" - "k8s.io/apimachinery/pkg/runtime/schema" - "k8s.io/apimachinery/pkg/watch" - "k8s.io/apiserver/pkg/registry/rest" -) - -// Registry is an interface for things that know how to store CustomResources. -type Registry interface { - ListCustomResources(ctx context.Context, options *metainternalversion.ListOptions) (*unstructured.UnstructuredList, error) - WatchCustomResources(ctx context.Context, options *metainternalversion.ListOptions) (watch.Interface, error) - GetCustomResource(ctx context.Context, customResourceID string, options *metav1.GetOptions) (*unstructured.Unstructured, error) - CreateCustomResource(ctx context.Context, customResource *unstructured.Unstructured, createValidation rest.ValidateObjectFunc) (*unstructured.Unstructured, error) - UpdateCustomResource(ctx context.Context, customResource *unstructured.Unstructured, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc) (*unstructured.Unstructured, error) - DeleteCustomResource(ctx context.Context, customResourceID string) error -} - -// storage puts strong typing around storage calls -type storage struct { - rest.StandardStorage -} - -// NewRegistry returns a new Registry interface for the given Storage. Any mismatched -// types will panic. -func NewRegistry(s rest.StandardStorage) Registry { - return &storage{s} -} - -func (s *storage) ListCustomResources(ctx context.Context, options *metainternalversion.ListOptions) (*unstructured.UnstructuredList, error) { - if options != nil && options.FieldSelector != nil && !options.FieldSelector.Empty() { - return nil, fmt.Errorf("field selector not supported yet") - } - obj, err := s.List(ctx, options) - if err != nil { - return nil, err - } - return obj.(*unstructured.UnstructuredList), err -} - -func (s *storage) WatchCustomResources(ctx context.Context, options *metainternalversion.ListOptions) (watch.Interface, error) { - return s.Watch(ctx, options) -} - -func (s *storage) GetCustomResource(ctx context.Context, customResourceID string, options *metav1.GetOptions) (*unstructured.Unstructured, error) { - obj, err := s.Get(ctx, customResourceID, options) - customResource, ok := obj.(*unstructured.Unstructured) - if !ok { - return nil, fmt.Errorf("custom resource must be of type Unstructured") - } - - if err != nil { - apiVersion := customResource.GetAPIVersion() - groupVersion := strings.Split(apiVersion, "/") - group := groupVersion[0] - return nil, errors.NewNotFound(schema.GroupResource{Group: group, Resource: "scale"}, customResourceID) - } - return customResource, nil -} - -func (s *storage) CreateCustomResource(ctx context.Context, customResource *unstructured.Unstructured, createValidation rest.ValidateObjectFunc) (*unstructured.Unstructured, error) { - obj, err := s.Create(ctx, customResource, rest.ValidateAllObjectFunc, false) - if err != nil { - return nil, err - } - return obj.(*unstructured.Unstructured), nil -} - -func (s *storage) UpdateCustomResource(ctx context.Context, customResource *unstructured.Unstructured, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc) (*unstructured.Unstructured, error) { - obj, _, err := s.Update(ctx, customResource.GetName(), rest.DefaultUpdatedObjectInfo(customResource), createValidation, updateValidation, false) - if err != nil { - return nil, err - } - return obj.(*unstructured.Unstructured), nil -} - -func (s *storage) DeleteCustomResource(ctx context.Context, customResourceID string) error { - _, _, err := s.Delete(ctx, customResourceID, nil) - return err -} diff --git a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go index 194647e23..c6b50915f 100644 --- a/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go +++ b/vendor/k8s.io/apiextensions-apiserver/pkg/registry/customresourcedefinition/etcd.go @@ -29,6 +29,7 @@ import ( "k8s.io/apiserver/pkg/registry/rest" "k8s.io/apiserver/pkg/storage" storageerr "k8s.io/apiserver/pkg/storage/errors" + "k8s.io/apiserver/pkg/util/dryrun" ) // rest implements a RESTStorage for API services against etcd @@ -129,6 +130,7 @@ func (r *REST) Delete(ctx context.Context, name string, options *metav1.DeleteOp }) return existingCRD, nil }), + dryrun.IsDryRun(options.DryRun), ) if err != nil { @@ -172,8 +174,8 @@ func (r *StatusREST) Get(ctx context.Context, name string, options *metav1.GetOp } // Update alters the status subset of an object. -func (r *StatusREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool) (runtime.Object, bool, error) { +func (r *StatusREST) Update(ctx context.Context, name string, objInfo rest.UpdatedObjectInfo, createValidation rest.ValidateObjectFunc, updateValidation rest.ValidateObjectUpdateFunc, forceAllowCreate bool, options *metav1.UpdateOptions) (runtime.Object, bool, error) { // We are explicitly setting forceAllowCreate to false in the call to the underlying storage because // subresources should never allow create on update. - return r.store.Update(ctx, name, objInfo, createValidation, updateValidation, false) + return r.store.Update(ctx, name, objInfo, createValidation, updateValidation, false, options) } diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go index 7d0ae0c05..b9f34b3cb 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/basic_test.go @@ -20,6 +20,7 @@ import ( "fmt" "reflect" "sort" + "strings" "testing" "time" @@ -213,7 +214,7 @@ func testSimpleCRUD(t *testing.T, ns string, noxuDefinition *apiextensionsv1beta } gottenNoxuInstance.Object["updated"] = version2 - updatedNoxuInstance, err := noxuResourceClient2.Update(gottenNoxuInstance) + updatedNoxuInstance, err := noxuResourceClient2.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if disabledVersions[version2] { if !errors.IsNotFound(err) { t.Errorf("expected the update operation fail with NotFound for disabled version %s, got error: %v", version2, err) @@ -580,7 +581,7 @@ func TestSelfLink(t *testing.T) { noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") - createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate) + createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}) if err != nil { t.Fatal(err) } @@ -599,7 +600,7 @@ func TestSelfLink(t *testing.T) { curletResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, curletDefinition) curletInstanceToCreate := fixtures.NewCurletInstance(ns, "foo") - createdCurletInstance, err := curletResourceClient.Create(curletInstanceToCreate) + createdCurletInstance, err := curletResourceClient.Create(curletInstanceToCreate, metav1.CreateOptions{}) if err != nil { t.Fatal(err) } @@ -626,7 +627,7 @@ func TestPreserveInt(t *testing.T) { noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") - createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate) + createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}) if err != nil { t.Fatal(err) } @@ -667,31 +668,49 @@ func TestPatch(t *testing.T) { ns := "not-the-default" noxuNamespacedResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) + t.Logf("Creating foo") noxuInstanceToCreate := fixtures.NewNoxuInstance(ns, "foo") - createdNoxuInstance, err := noxuNamespacedResourceClient.Create(noxuInstanceToCreate) + _, err = noxuNamespacedResourceClient.Create(noxuInstanceToCreate, metav1.CreateOptions{}) if err != nil { t.Fatal(err) } + t.Logf("Patching .num.num2 to 999") patch := []byte(`{"num": {"num2":999}}`) - createdNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch) + patchedNoxuInstance, err := noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unexpected error: %v", err) } + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 999, "num", "num2") + rv, found, err := unstructured.NestedString(patchedNoxuInstance.UnstructuredContent(), "metadata", "resourceVersion") + if err != nil { + t.Fatal(err) + } + if !found { + t.Fatalf("metadata.resourceVersion not found") + } // a patch with no change - createdNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch) + t.Logf("Patching .num.num2 again to 999") + patchedNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, patch, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unexpected error: %v", err) } + // make sure no-op patch does not increment resourceVersion + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 999, "num", "num2") + expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") // an empty patch - createdNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`)) + t.Logf("Applying empty patch") + patchedNoxuInstance, err = noxuNamespacedResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), metav1.UpdateOptions{}) if err != nil { t.Fatalf("unexpected error: %v", err) } + // an empty patch is a no-op patch. make sure it does not increment resourceVersion + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 999, "num", "num2") + expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") - originalJSON, err := runtime.Encode(unstructured.UnstructuredJSONScheme, createdNoxuInstance) + originalJSON, err := runtime.Encode(unstructured.UnstructuredJSONScheme, patchedNoxuInstance) if err != nil { t.Fatalf("unexpected error: %v", err) } @@ -942,3 +961,22 @@ func TestStatusGetAndPatch(t *testing.T) { t.Fatal(err) } } + +func expectInt64(t *testing.T, obj map[string]interface{}, value int64, pth ...string) { + if v, found, err := unstructured.NestedInt64(obj, pth...); err != nil { + t.Fatalf("failed to access .%s: %v", strings.Join(pth, "."), err) + } else if !found { + t.Fatalf("failed to find .%s", strings.Join(pth, ".")) + } else if v != value { + t.Fatalf("wanted %d at .%s, got %d", value, strings.Join(pth, "."), v) + } +} +func expectString(t *testing.T, obj map[string]interface{}, value string, pth ...string) { + if v, found, err := unstructured.NestedString(obj, pth...); err != nil { + t.Fatalf("failed to access .%s: %v", strings.Join(pth, "."), err) + } else if !found { + t.Fatalf("failed to find .%s", strings.Join(pth, ".")) + } else if v != value { + t.Fatalf("wanted %q at .%s, got %q", value, strings.Join(pth, "."), v) + } +} diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/finalization_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/finalization_test.go index 8f1bf0a2e..745aa5854 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/finalization_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/finalization_test.go @@ -76,7 +76,7 @@ func TestFinalization(t *testing.T) { // object will be deleted as part of the finalizer update. for { gottenNoxuInstance.SetFinalizers(nil) - _, err = noxuResourceClient.Update(gottenNoxuInstance) + _, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if err == nil { break } @@ -137,7 +137,7 @@ func TestFinalizationAndDeletion(t *testing.T) { // Update the CR to remove the finalizer. for { gottenNoxuInstance.SetFinalizers(nil) - _, err = noxuResourceClient.Update(gottenNoxuInstance) + _, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if err == nil { break } diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go index 49de84a9f..9a1f2d848 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/fixtures/resources.go @@ -313,7 +313,7 @@ func isWatchCachePrimed(crd *apiextensionsv1beta1.CustomResourceDefinition, dyna "spec": map[string]interface{}{}, }, } - createdInstance, err := resourceClient.Create(instance) + createdInstance, err := resourceClient.Create(instance, metav1.CreateOptions{}) if err != nil { return false, err } diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/helpers.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/helpers.go index 5aa231d45..763440345 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/helpers.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/helpers.go @@ -35,7 +35,7 @@ func instantiateCustomResource(t *testing.T, instanceToCreate *unstructured.Unst } func instantiateVersionedCustomResource(t *testing.T, instanceToCreate *unstructured.Unstructured, client dynamic.ResourceInterface, definition *apiextensionsv1beta1.CustomResourceDefinition, version string) (*unstructured.Unstructured, error) { - createdInstance, err := client.Create(instanceToCreate) + createdInstance, err := client.Create(instanceToCreate, metav1.CreateOptions{}) if err != nil { t.Logf("%#v", createdInstance) return nil, err diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/subresources_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/subresources_test.go index 4fd50a5a4..c8c8728ee 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/subresources_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/subresources_test.go @@ -128,7 +128,7 @@ func TestStatusSubresource(t *testing.T) { // UpdateStatus should not update spec. // Check that .spec.num = 10 and .status.num = 20 - updatedStatusInstance, err := noxuResourceClient.UpdateStatus(gottenNoxuInstance) + updatedStatusInstance, err := noxuResourceClient.UpdateStatus(gottenNoxuInstance, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unable to update status: %v", err) } @@ -168,7 +168,7 @@ func TestStatusSubresource(t *testing.T) { // Update should not update status. // Check that .spec.num = 40 and .status.num = 20 - updatedInstance, err := noxuResourceClient.Update(gottenNoxuInstance) + updatedInstance, err := noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unable to update instance: %v", err) } @@ -247,7 +247,7 @@ func TestScaleSubresource(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - _, err = noxuResourceClient.UpdateStatus(gottenNoxuInstance) + _, err = noxuResourceClient.UpdateStatus(gottenNoxuInstance, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unable to update status: %v", err) } @@ -315,7 +315,7 @@ func TestScaleSubresource(t *testing.T) { if err != nil { t.Fatalf("unexpected error: %v", err) } - _, err = noxuResourceClient.Update(gottenNoxuInstance) + _, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if err == nil { t.Fatalf("unexpected non-error: .spec.replicas should be less than 2147483647") } @@ -432,7 +432,7 @@ func TestValidateOnlyStatus(t *testing.T) { if err != nil { t.Fatalf("unexpected error setting .spec.num: %v", err) } - createdNoxuInstance, err = noxuResourceClient.UpdateStatus(createdNoxuInstance) + createdNoxuInstance, err = noxuResourceClient.UpdateStatus(createdNoxuInstance, metav1.UpdateOptions{}) if err != nil { t.Errorf("unexpected error: %v", err) } @@ -442,7 +442,7 @@ func TestValidateOnlyStatus(t *testing.T) { if err != nil { t.Fatalf("unexpected error setting .status.num: %v", err) } - createdNoxuInstance, err = noxuResourceClient.UpdateStatus(createdNoxuInstance) + createdNoxuInstance, err = noxuResourceClient.UpdateStatus(createdNoxuInstance, metav1.UpdateOptions{}) if err == nil { t.Fatal("expected error, but got none") } @@ -575,7 +575,7 @@ func TestGeneration(t *testing.T) { } // UpdateStatus does not increment generation - updatedStatusInstance, err := noxuResourceClient.UpdateStatus(gottenNoxuInstance) + updatedStatusInstance, err := noxuResourceClient.UpdateStatus(gottenNoxuInstance, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unable to update status: %v", err) } @@ -595,7 +595,7 @@ func TestGeneration(t *testing.T) { } // Update increments generation - updatedInstance, err := noxuResourceClient.Update(gottenNoxuInstance) + updatedInstance, err := noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unable to update instance: %v", err) } @@ -633,6 +633,8 @@ func TestSubresourcePatch(t *testing.T) { ns := "not-the-default" noxuResourceClient := newNamespacedCustomResourceClient(ns, dynamicClient, noxuDefinition) + + t.Logf("Creating foo") _, err = instantiateCustomResource(t, NewNoxuSubresourceInstance(ns, "foo"), noxuResourceClient, noxuDefinition) if err != nil { t.Fatalf("unable to create noxu instance: %v", err) @@ -643,28 +645,21 @@ func TestSubresourcePatch(t *testing.T) { t.Fatal(err) } + t.Logf("Patching .status.num to 999") patch := []byte(`{"spec": {"num":999}, "status": {"num":999}}`) - patchedNoxuInstance, err := noxuResourceClient.Patch("foo", types.MergePatchType, patch, "status") + patchedNoxuInstance, err := noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.UpdateOptions{}, "status") if err != nil { t.Fatalf("unexpected error: %v", err) } - // .spec.num should remain 10 - specNum, found, err := unstructured.NestedInt64(patchedNoxuInstance.Object, "spec", "num") - if !found || err != nil { - t.Fatalf("unable to get .spec.num") - } - if specNum != 10 { - t.Fatalf(".spec.num: expected: %v, got: %v", 10, specNum) - } - - // .status.num should be 999 - statusNum, found, err := unstructured.NestedInt64(patchedNoxuInstance.Object, "status", "num") - if !found || err != nil { - t.Fatalf("unable to get .status.num") + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 999, "status", "num") // .status.num should be 999 + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 10, "spec", "num") // .spec.num should remain 10 + rv, found, err := unstructured.NestedString(patchedNoxuInstance.UnstructuredContent(), "metadata", "resourceVersion") + if err != nil { + t.Fatal(err) } - if statusNum != 999 { - t.Fatalf(".status.num: expected: %v, got: %v", 999, statusNum) + if !found { + t.Fatalf("metadata.resourceVersion not found") } // this call waits for the resourceVersion to be reached in the cache before returning. @@ -679,23 +674,44 @@ func TestSubresourcePatch(t *testing.T) { } // no-op patch - _, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, "status") + t.Logf("Patching .status.num again to 999") + patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.UpdateOptions{}, "status") if err != nil { t.Fatalf("unexpected error: %v", err) } + // make sure no-op patch does not increment resourceVersion + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 999, "status", "num") + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 10, "spec", "num") + expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") // empty patch - _, err = noxuResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), "status") + t.Logf("Applying empty patch") + patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), metav1.UpdateOptions{}, "status") if err != nil { t.Fatalf("unexpected error: %v", err) } + // an empty patch is a no-op patch. make sure it does not increment resourceVersion + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 999, "status", "num") + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 10, "spec", "num") + expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") + t.Logf("Patching .spec.replicas to 7") patch = []byte(`{"spec": {"replicas":7}, "status": {"replicas":7}}`) - patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, "scale") + patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.UpdateOptions{}, "scale") if err != nil { t.Fatalf("unexpected error: %v", err) } + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 7, "spec", "replicas") + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 0, "status", "replicas") // .status.replicas should remain 0 + rv, found, err = unstructured.NestedString(patchedNoxuInstance.UnstructuredContent(), "metadata", "resourceVersion") + if err != nil { + t.Fatal(err) + } + if !found { + t.Fatalf("metadata.resourceVersion not found") + } + // this call waits for the resourceVersion to be reached in the cache before returning. // We need to do this because the patch gets its initial object from the storage, and the cache serves that. // If it is out of date, then our initial patch is applied to an old resource version, which conflicts @@ -707,7 +723,7 @@ func TestSubresourcePatch(t *testing.T) { t.Fatalf("unexpected error: %v", err) } - // Scale.Spec.Replicas = 7 but Scale.Status.Replicas should remain 7 + // Scale.Spec.Replicas = 7 but Scale.Status.Replicas should remain 0 gottenScale, err := scaleClient.Scales("not-the-default").Get(groupResource, "foo") if err != nil { t.Fatal(err) @@ -720,24 +736,34 @@ func TestSubresourcePatch(t *testing.T) { } // no-op patch - _, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, "scale") + t.Logf("Patching .spec.replicas again to 7") + patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, patch, metav1.UpdateOptions{}, "scale") if err != nil { t.Fatalf("unexpected error: %v", err) } + // make sure no-op patch does not increment resourceVersion + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 7, "spec", "replicas") + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 0, "status", "replicas") + expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") // empty patch - _, err = noxuResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), "scale") + t.Logf("Applying empty patch") + patchedNoxuInstance, err = noxuResourceClient.Patch("foo", types.MergePatchType, []byte(`{}`), metav1.UpdateOptions{}, "scale") if err != nil { t.Fatalf("unexpected error: %v", err) } + // an empty patch is a no-op patch. make sure it does not increment resourceVersion + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 7, "spec", "replicas") + expectInt64(t, patchedNoxuInstance.UnstructuredContent(), 0, "status", "replicas") + expectString(t, patchedNoxuInstance.UnstructuredContent(), rv, "metadata", "resourceVersion") // make sure strategic merge patch is not supported for both status and scale - _, err = noxuResourceClient.Patch("foo", types.StrategicMergePatchType, patch, "status") + _, err = noxuResourceClient.Patch("foo", types.StrategicMergePatchType, patch, metav1.UpdateOptions{}, "status") if err == nil { t.Fatalf("unexpected non-error: strategic merge patch is not supported for custom resources") } - _, err = noxuResourceClient.Patch("foo", types.StrategicMergePatchType, patch, "scale") + _, err = noxuResourceClient.Patch("foo", types.StrategicMergePatchType, patch, metav1.UpdateOptions{}, "scale") if err == nil { t.Fatalf("unexpected non-error: strategic merge patch is not supported for custom resources") } diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/table_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/table_test.go index f93714596..7aab4f408 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/table_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/table_test.go @@ -19,6 +19,7 @@ package integration import ( "fmt" "testing" + "time" "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -52,6 +53,7 @@ func newTableCRD() *apiextensionsv1beta1.CustomResourceDefinition { {Name: "Alpha", Type: "string", JSONPath: ".spec.alpha"}, {Name: "Beta", Type: "integer", Description: "the beta field", Format: "int64", Priority: 42, JSONPath: ".spec.beta"}, {Name: "Gamma", Type: "integer", Description: "a column with wrongly typed values", JSONPath: ".spec.gamma"}, + {Name: "Epsilon", Type: "string", Description: "an array of integers as string", JSONPath: ".spec.epsilon"}, }, }, } @@ -66,10 +68,11 @@ func newTableInstance(name string) *unstructured.Unstructured { "name": name, }, "spec": map[string]interface{}{ - "alpha": "foo_123", - "beta": 10, - "gamma": "bar", - "delta": "hello", + "alpha": "foo_123", + "beta": 10, + "gamma": "bar", + "delta": "hello", + "epsilon": []int64{1, 2, 3}, }, }, } @@ -105,7 +108,7 @@ func TestTableGet(t *testing.T) { t.Logf("table crd created: %#v", crd) crClient := newNamespacedCustomResourceClient("", dynamicClient, crd) - foo, err := crClient.Create(newTableInstance("foo")) + foo, err := crClient.Create(newTableInstance("foo"), metav1.CreateOptions{}) if err != nil { t.Fatalf("unable to create noxu instance: %v", err) } @@ -146,9 +149,14 @@ func TestTableGet(t *testing.T) { } t.Logf("%v table list: %#v", gvk, tbl) - if got, expected := len(tbl.ColumnDefinitions), 5; got != expected { + if got, expected := len(tbl.ColumnDefinitions), 6; got != expected { t.Errorf("expected %d headers, got %d", expected, got) } else { + age := metav1beta1.TableColumnDefinition{Name: "Age", Type: "date", Format: "", Description: "Custom resource definition column (in JSONPath format): .metadata.creationTimestamp", Priority: 0} + if got, expected := tbl.ColumnDefinitions[1], age; got != expected { + t.Errorf("expected column definition %#v, got %#v", expected, got) + } + alpha := metav1beta1.TableColumnDefinition{Name: "Alpha", Type: "string", Format: "", Description: "Custom resource definition column (in JSONPath format): .spec.alpha", Priority: 0} if got, expected := tbl.ColumnDefinitions[2], alpha; got != expected { t.Errorf("expected column definition %#v, got %#v", expected, got) @@ -163,15 +171,30 @@ func TestTableGet(t *testing.T) { if got, expected := tbl.ColumnDefinitions[4], gamma; got != expected { t.Errorf("expected column definition %#v, got %#v", expected, got) } + + epsilon := metav1beta1.TableColumnDefinition{Name: "Epsilon", Type: "string", Description: "an array of integers as string"} + if got, expected := tbl.ColumnDefinitions[5], epsilon; got != expected { + t.Errorf("expected column definition %#v, got %#v", expected, got) + } } if got, expected := len(tbl.Rows), 1; got != expected { t.Errorf("expected %d rows, got %d", expected, got) - } else if got, expected := len(tbl.Rows[0].Cells), 5; got != expected { + } else if got, expected := len(tbl.Rows[0].Cells), 6; got != expected { t.Errorf("expected %d cells, got %d", expected, got) } else { if got, expected := tbl.Rows[0].Cells[0], "foo"; got != expected { t.Errorf("expected cell[0] to equal %q, got %q", expected, got) } + if s, ok := tbl.Rows[0].Cells[1].(string); !ok { + t.Errorf("expected cell[1] to be a string, got: %#v", tbl.Rows[0].Cells[1]) + } else { + dur, err := time.ParseDuration(s) + if err != nil { + t.Errorf("expected cell[1] to be a duration: %v", err) + } else if abs(dur.Seconds()) > 30.0 { + t.Errorf("expected cell[1] to be a small age, but got: %v", dur) + } + } if got, expected := tbl.Rows[0].Cells[2], "foo_123"; got != expected { t.Errorf("expected cell[2] to equal %q, got %q", expected, got) } @@ -179,7 +202,17 @@ func TestTableGet(t *testing.T) { t.Errorf("expected cell[3] to equal %#v, got %#v", expected, got) } if got, expected := tbl.Rows[0].Cells[4], interface{}(nil); got != expected { - t.Errorf("expected cell[3] to equal %#v although the type does not match the column, got %#v", expected, got) + t.Errorf("expected cell[4] to equal %#v although the type does not match the column, got %#v", expected, got) + } + if got, expected := tbl.Rows[0].Cells[5], "[1 2 3]"; got != expected { + t.Errorf("expected cell[5] to equal %q, got %q", expected, got) } } } + +func abs(x float64) float64 { + if x < 0 { + return -x + } + return x +} diff --git a/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go b/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go index 9460eac32..37f9d0943 100644 --- a/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go +++ b/vendor/k8s.io/apiextensions-apiserver/test/integration/validation_test.go @@ -71,7 +71,7 @@ func TestForProperValidationErrors(t *testing.T) { } for _, tc := range tests { - _, err := noxuResourceClient.Create(tc.instanceFn()) + _, err := noxuResourceClient.Create(tc.instanceFn(), metav1.CreateOptions{}) if err == nil { t.Errorf("%v: expected %v", tc.name, tc.expectedError) continue @@ -225,7 +225,7 @@ func TestCustomResourceUpdateValidation(t *testing.T) { "delta": "hello", } - _, err = noxuResourceClient.Update(gottenNoxuInstance) + _, err = noxuResourceClient.Update(gottenNoxuInstance, metav1.UpdateOptions{}) if err == nil { t.Fatalf("unexpected non-error: alpha and beta should be present while updating %v", gottenNoxuInstance) } @@ -309,7 +309,7 @@ func TestCustomResourceValidationErrors(t *testing.T) { } for _, tc := range tests { - _, err := noxuResourceClient.Create(tc.instanceFn()) + _, err := noxuResourceClient.Create(tc.instanceFn(), metav1.CreateOptions{}) if err == nil { t.Errorf("%v: expected %v", tc.name, tc.expectedError) continue @@ -357,7 +357,7 @@ func TestCRValidationOnCRDUpdate(t *testing.T) { // CR is now accepted err = wait.Poll(500*time.Millisecond, wait.ForeverTestTimeout, func() (bool, error) { - _, err := noxuResourceClient.Create(newNoxuValidationInstance(ns, "foo")) + _, err := noxuResourceClient.Create(newNoxuValidationInstance(ns, "foo"), metav1.CreateOptions{}) if statusError, isStatus := err.(*apierrors.StatusError); isStatus { if strings.Contains(statusError.Error(), "is invalid") { return false, nil