From 5d8c36c93cf544e3bde13caa4c6222b65753ec3c Mon Sep 17 00:00:00 2001 From: Kubernetes Publisher Date: Thu, 24 Nov 2016 08:15:51 +0000 Subject: [PATCH] published by bot (https://github.com/kubernetes/contrib/tree/master/mungegithub) copied from https://github.com/kubernetes/kubernetes.git, branch master, last commit is 124fb610dcbd445fa710da67508ac6d5b822f61d --- Godeps/Godeps.json | 2 +- discovery/discovery_client.go | 74 +- discovery/discovery_client_test.go | 188 +- discovery/fake/discovery.go | 17 +- discovery/helper.go | 3 +- discovery/helper_blackbox_test.go | 41 +- discovery/restmapper.go | 33 +- discovery/restmapper_test.go | 63 +- discovery/unstructured.go | 18 +- dynamic/client.go | 11 +- dynamic/client_pool.go | 20 +- dynamic/client_test.go | 19 +- dynamic/dynamic_util.go | 17 +- dynamic/dynamic_util_test.go | 5 +- kubernetes/typed/apps/v1beta1/apps_client.go | 4 +- .../apps/v1beta1/fake/fake_statefulset.go | 4 +- .../v1beta1/authentication_client.go | 4 +- .../v1beta1/authorization_client.go | 4 +- .../autoscaling/v1/autoscaling_client.go | 4 +- .../v1/fake/fake_horizontalpodautoscaler.go | 4 +- kubernetes/typed/batch/v1/batch_client.go | 4 +- kubernetes/typed/batch/v1/fake/fake_job.go | 4 +- .../typed/batch/v2alpha1/batch_client.go | 4 +- .../typed/batch/v2alpha1/fake/fake_cronjob.go | 4 +- .../typed/batch/v2alpha1/fake/fake_job.go | 4 +- .../v1alpha1/certificates_client.go | 4 +- .../fake/fake_certificatesigningrequest.go | 4 +- kubernetes/typed/core/v1/core_client.go | 4 +- .../core/v1/fake/fake_componentstatus.go | 4 +- .../typed/core/v1/fake/fake_configmap.go | 4 +- .../typed/core/v1/fake/fake_endpoints.go | 4 +- kubernetes/typed/core/v1/fake/fake_event.go | 4 +- .../typed/core/v1/fake/fake_limitrange.go | 4 +- .../typed/core/v1/fake/fake_namespace.go | 4 +- kubernetes/typed/core/v1/fake/fake_node.go | 4 +- .../core/v1/fake/fake_persistentvolume.go | 4 +- .../v1/fake/fake_persistentvolumeclaim.go | 4 +- kubernetes/typed/core/v1/fake/fake_pod.go | 4 +- .../typed/core/v1/fake/fake_podtemplate.go | 4 +- .../v1/fake/fake_replicationcontroller.go | 4 +- .../typed/core/v1/fake/fake_resourcequota.go | 4 +- kubernetes/typed/core/v1/fake/fake_secret.go | 4 +- kubernetes/typed/core/v1/fake/fake_service.go | 4 +- .../typed/core/v1/fake/fake_serviceaccount.go | 4 +- .../extensions/v1beta1/extensions_client.go | 4 +- .../extensions/v1beta1/fake/fake_daemonset.go | 4 +- .../v1beta1/fake/fake_deployment.go | 4 +- .../extensions/v1beta1/fake/fake_ingress.go | 4 +- .../typed/extensions/v1beta1/fake/fake_job.go | 4 +- .../v1beta1/fake/fake_podsecuritypolicy.go | 4 +- .../v1beta1/fake/fake_replicaset.go | 4 +- .../v1beta1/fake/fake_scale_expansion.go | 6 +- .../v1beta1/fake/fake_thirdpartyresource.go | 4 +- .../extensions/v1beta1/scale_expansion.go | 6 +- .../v1alpha1/fake/fake_poddisruptionbudget.go | 4 +- .../typed/policy/v1alpha1/policy_client.go | 5 +- .../v1beta1/fake/fake_poddisruptionbudget.go | 4 +- .../typed/policy/v1beta1/policy_client.go | 4 +- .../rbac/v1alpha1/fake/fake_clusterrole.go | 4 +- .../v1alpha1/fake/fake_clusterrolebinding.go | 4 +- .../typed/rbac/v1alpha1/fake/fake_role.go | 4 +- .../rbac/v1alpha1/fake/fake_rolebinding.go | 4 +- kubernetes/typed/rbac/v1alpha1/rbac_client.go | 4 +- .../storage/v1beta1/fake/fake_storageclass.go | 4 +- .../typed/storage/v1beta1/storage_client.go | 4 +- pkg/api/errors/errors.go | 21 +- pkg/api/install/install.go | 14 +- pkg/api/mapper.go | 6 +- pkg/api/meta/errors.go | 18 +- pkg/api/meta/firsthit_restmapper.go | 12 +- pkg/api/meta/interfaces.go | 15 +- pkg/api/meta/meta.go | 5 +- pkg/api/meta/multirestmapper.go | 28 +- pkg/api/meta/priority.go | 44 +- pkg/api/meta/restmapper.go | 78 +- pkg/api/meta/unstructured.go | 4 +- pkg/api/ref.go | 10 +- pkg/api/register.go | 9 +- pkg/api/testapi/testapi.go | 54 +- pkg/api/unversioned/generated.pb.go | 177 +- pkg/api/unversioned/generated.proto | 1 + pkg/api/unversioned/group_version.go | 205 +- pkg/api/unversioned/meta.go | 12 +- pkg/api/unversioned/register.go | 8 +- pkg/api/v1/generate.go | 64 + pkg/api/v1/generated.pb.go | 2562 ++++++++++------- pkg/api/v1/generated.proto | 16 +- pkg/api/v1/helpers.go | 429 ++- pkg/api/v1/ref.go | 10 +- pkg/api/v1/register.go | 3 +- pkg/api/v1/resource_helpers.go | 229 ++ pkg/api/v1/types.go | 48 +- pkg/api/v1/types_swagger_doc_generated.go | 2 +- pkg/api/v1/zz_generated.conversion.go | 42 + pkg/api/v1/zz_generated.deepcopy.go | 29 + pkg/apimachinery/announced/group_factory.go | 18 +- pkg/apimachinery/registered/registered.go | 80 +- pkg/apimachinery/types.go | 16 +- pkg/apis/apps/register.go | 8 +- pkg/apis/apps/v1beta1/generated.pb.go | 82 +- pkg/apis/apps/v1beta1/generated.proto | 1 + pkg/apis/apps/v1beta1/register.go | 8 +- pkg/apis/authentication/register.go | 8 +- .../authentication/v1beta1/generated.pb.go | 84 +- .../authentication/v1beta1/generated.proto | 1 + pkg/apis/authentication/v1beta1/register.go | 4 +- pkg/apis/authorization/register.go | 8 +- .../authorization/v1beta1/generated.pb.go | 109 +- .../authorization/v1beta1/generated.proto | 1 + pkg/apis/authorization/v1beta1/register.go | 10 +- pkg/apis/autoscaling/register.go | 9 +- pkg/apis/autoscaling/v1/generated.pb.go | 108 +- pkg/apis/autoscaling/v1/generated.proto | 1 + pkg/apis/autoscaling/v1/register.go | 4 +- pkg/apis/batch/register.go | 9 +- pkg/apis/batch/v1/generated.pb.go | 107 +- pkg/apis/batch/v1/generated.proto | 1 + pkg/apis/batch/v1/register.go | 4 +- pkg/apis/batch/v2alpha1/generated.pb.go | 146 +- pkg/apis/batch/v2alpha1/generated.proto | 1 + pkg/apis/batch/v2alpha1/register.go | 4 +- pkg/apis/certificates/register.go | 12 +- .../certificates/v1alpha1/generated.pb.go | 90 +- .../certificates/v1alpha1/generated.proto | 1 + pkg/apis/certificates/v1alpha1/register.go | 12 +- pkg/apis/componentconfig/register.go | 14 +- pkg/apis/componentconfig/types.generated.go | 18 +- pkg/apis/componentconfig/types.go | 4 +- pkg/apis/componentconfig/v1alpha1/defaults.go | 12 +- pkg/apis/componentconfig/v1alpha1/register.go | 10 +- pkg/apis/componentconfig/v1alpha1/types.go | 2 +- .../v1alpha1/zz_generated.conversion.go | 4 +- .../v1alpha1/zz_generated.deepcopy.go | 9 +- .../componentconfig/zz_generated.deepcopy.go | 2 +- pkg/apis/extensions/register.go | 8 +- pkg/apis/extensions/types.go | 2 - pkg/apis/extensions/v1beta1/generated.pb.go | 460 +-- pkg/apis/extensions/v1beta1/generated.proto | 1 + pkg/apis/extensions/v1beta1/register.go | 4 +- pkg/apis/imagepolicy/register.go | 8 +- pkg/apis/imagepolicy/v1alpha1/generated.pb.go | 75 +- pkg/apis/imagepolicy/v1alpha1/generated.proto | 1 + pkg/apis/imagepolicy/v1alpha1/register.go | 4 +- pkg/apis/kubeadm/register.go | 14 +- pkg/apis/kubeadm/v1alpha1/register.go | 14 +- pkg/apis/policy/register.go | 8 +- pkg/apis/policy/v1alpha1/register.go | 4 +- pkg/apis/policy/v1beta1/generated.pb.go | 98 +- pkg/apis/policy/v1beta1/generated.proto | 1 + pkg/apis/policy/v1beta1/register.go | 4 +- pkg/apis/rbac/helpers.go | 6 +- pkg/apis/rbac/register.go | 8 +- pkg/apis/rbac/v1alpha1/generated.pb.go | 421 ++- pkg/apis/rbac/v1alpha1/generated.proto | 17 + pkg/apis/rbac/v1alpha1/helpers.go | 148 + pkg/apis/rbac/v1alpha1/register.go | 4 +- pkg/apis/rbac/v1alpha1/types.go | 18 + .../rbac/v1alpha1/zz_generated.conversion.go | 48 + pkg/apis/rbac/zz_generated.deepcopy.go | 3 +- pkg/apis/storage/register.go | 8 +- pkg/apis/storage/v1beta1/generated.pb.go | 61 +- pkg/apis/storage/v1beta1/generated.proto | 1 + pkg/apis/storage/v1beta1/register.go | 4 +- .../apis/federation/install/install.go | 14 +- pkg/federation/apis/federation/register.go | 12 +- pkg/federation/apis/federation/types.go | 2 +- .../apis/federation/v1beta1/generated.pb.go | 102 +- .../apis/federation/v1beta1/generated.proto | 1 + .../apis/federation/v1beta1/register.go | 8 +- pkg/kubelet/qos/policy.go | 6 +- pkg/kubelet/qos/qos.go | 90 +- pkg/kubelet/types/pod_update.go | 8 +- pkg/kubelet/types/types.go | 10 +- pkg/runtime/codec.go | 44 +- pkg/runtime/codec_check.go | 4 +- pkg/runtime/embedded.go | 10 +- pkg/runtime/error.go | 6 +- pkg/runtime/helper.go | 6 +- pkg/runtime/interfaces.go | 18 +- pkg/runtime/register.go | 20 +- pkg/runtime/schema/generated.pb.go | 58 + pkg/runtime/schema/generated.proto | 28 + pkg/runtime/schema/group_version.go | 277 ++ pkg/runtime/schema/interfaces.go | 40 + pkg/runtime/scheme.go | 48 +- pkg/runtime/serializer/codec_factory.go | 10 +- pkg/runtime/serializer/json/json.go | 4 +- pkg/runtime/serializer/json/meta.go | 10 +- pkg/runtime/serializer/protobuf/protobuf.go | 12 +- .../serializer/recognizer/recognizer.go | 4 +- pkg/runtime/serializer/streaming/streaming.go | 6 +- .../serializer/versioning/versioning.go | 8 +- pkg/runtime/unstructured.go | 21 +- pkg/util/cert/csr.go | 16 + pkg/util/config/feature_gate.go | 29 +- pkg/watch/mux.go | 6 +- pkg/watch/versioned/register.go | 10 +- plugin/pkg/client/auth/gcp/gcp.go | 79 +- plugin/pkg/client/auth/gcp/gcp_test.go | 68 + rest/client.go | 10 +- rest/client_test.go | 3 +- rest/config.go | 3 +- rest/config_test.go | 4 +- rest/fake/fake.go | 6 +- rest/request.go | 9 +- rest/request_test.go | 11 +- rest/url_utils.go | 6 +- testing/actions.go | 50 +- testing/fake.go | 7 +- testing/fixture.go | 25 +- tools/cache/controller_test.go | 30 +- tools/cache/index_test.go | 19 +- tools/cache/listers.go | 58 +- tools/cache/listers_core.go | 89 +- tools/cache/listers_extensions.go | 13 +- tools/cache/listers_rbac.go | 2 +- tools/cache/listers_test.go | 190 +- tools/cache/listwatch.go | 23 +- tools/cache/mutation_detector_test.go | 14 +- tools/cache/reflector.go | 6 +- tools/cache/reflector_test.go | 98 +- tools/cache/testing/fake_controller_source.go | 13 +- .../testing/fake_controller_source_test.go | 17 +- tools/clientcmd/api/latest/latest.go | 6 +- tools/clientcmd/api/register.go | 12 +- tools/clientcmd/api/v1/register.go | 12 +- tools/clientcmd/loader.go | 4 +- vendor/cloud.google.com/go/AUTHORS | 15 - vendor/cloud.google.com/go/CONTRIBUTORS | 34 - vendor/github.com/docker/distribution/AUTHORS | 128 - vendor/github.com/gogo/protobuf/CONTRIBUTORS | 15 - vendor/github.com/golang/protobuf/AUTHORS | 3 - .../github.com/golang/protobuf/CONTRIBUTORS | 3 - vendor/golang.org/x/crypto/AUTHORS | 3 - vendor/golang.org/x/crypto/CONTRIBUTORS | 3 - vendor/golang.org/x/net/AUTHORS | 3 - vendor/golang.org/x/net/CONTRIBUTORS | 3 - vendor/golang.org/x/sys/AUTHORS | 3 - vendor/golang.org/x/sys/CONTRIBUTORS | 3 - vendor/golang.org/x/text/AUTHORS | 3 - vendor/golang.org/x/text/CONTRIBUTORS | 3 - 241 files changed, 5806 insertions(+), 3601 deletions(-) create mode 100644 pkg/api/v1/generate.go create mode 100644 pkg/api/v1/resource_helpers.go create mode 100644 pkg/apis/rbac/v1alpha1/helpers.go create mode 100644 pkg/runtime/schema/generated.pb.go create mode 100644 pkg/runtime/schema/generated.proto create mode 100644 pkg/runtime/schema/group_version.go create mode 100644 pkg/runtime/schema/interfaces.go delete mode 100644 vendor/cloud.google.com/go/AUTHORS delete mode 100644 vendor/cloud.google.com/go/CONTRIBUTORS delete mode 100644 vendor/github.com/docker/distribution/AUTHORS delete mode 100644 vendor/github.com/gogo/protobuf/CONTRIBUTORS delete mode 100644 vendor/github.com/golang/protobuf/AUTHORS delete mode 100644 vendor/github.com/golang/protobuf/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/crypto/AUTHORS delete mode 100644 vendor/golang.org/x/crypto/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/net/AUTHORS delete mode 100644 vendor/golang.org/x/net/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/sys/AUTHORS delete mode 100644 vendor/golang.org/x/sys/CONTRIBUTORS delete mode 100644 vendor/golang.org/x/text/AUTHORS delete mode 100644 vendor/golang.org/x/text/CONTRIBUTORS diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json index cc1e00b8..9429c714 100644 --- a/Godeps/Godeps.json +++ b/Godeps/Godeps.json @@ -1,7 +1,7 @@ { "ImportPath": "k8s.io/client-go", "GoVersion": "go1.7", - "GodepVersion": "v75", + "GodepVersion": "v74", "Packages": [ "./..." ], diff --git a/discovery/discovery_client.go b/discovery/discovery_client.go index f9a36869..e9438fff 100644 --- a/discovery/discovery_client.go +++ b/discovery/discovery_client.go @@ -30,6 +30,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer" "k8s.io/client-go/pkg/version" "k8s.io/client-go/rest" @@ -69,10 +70,10 @@ type ServerResourcesInterface interface { ServerResources() (map[string]*unversioned.APIResourceList, error) // ServerPreferredResources returns the supported resources with the version preferred by the // server. - ServerPreferredResources() ([]unversioned.GroupVersionResource, error) + ServerPreferredResources() ([]schema.GroupVersionResource, error) // ServerPreferredNamespacedResources returns the supported namespaced resources with the // version preferred by the server. - ServerPreferredNamespacedResources() ([]unversioned.GroupVersionResource, error) + ServerPreferredNamespacedResources() ([]schema.GroupVersionResource, error) } // ServerVersionInterface has a method for retrieving the server's version. @@ -84,7 +85,7 @@ type ServerVersionInterface interface { // SwaggerSchemaInterface has a method to retrieve the swagger schema. type SwaggerSchemaInterface interface { // SwaggerSchema retrieves and parses the swagger API schema the server supports. - SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) + SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) } // DiscoveryClient implements the functions that discover server-supported API groups, @@ -186,7 +187,7 @@ func (d *DiscoveryClient) ServerResources() (map[string]*unversioned.APIResource // ErrGroupDiscoveryFailed is returned if one or more API groups fail to load. type ErrGroupDiscoveryFailed struct { // Groups is a list of the groups that failed to load and the error cause - Groups map[unversioned.GroupVersion]error + Groups map[schema.GroupVersion]error } // Error implements the error interface @@ -208,40 +209,57 @@ func IsGroupDiscoveryFailedError(err error) bool { // serverPreferredResources returns the supported resources with the version preferred by the // server. If namespaced is true, only namespaced resources will be returned. -func (d *DiscoveryClient) serverPreferredResources(namespaced bool) ([]unversioned.GroupVersionResource, error) { +func (d *DiscoveryClient) serverPreferredResources(namespaced bool) ([]schema.GroupVersionResource, error) { // retry in case the groups supported by the server change after ServerGroup() returns. const maxRetries = 2 - var failedGroups map[unversioned.GroupVersion]error - var results []unversioned.GroupVersionResource + var failedGroups map[schema.GroupVersion]error + var results []schema.GroupVersionResource + var resources map[schema.GroupResource]string RetrieveGroups: for i := 0; i < maxRetries; i++ { - results = []unversioned.GroupVersionResource{} - failedGroups = make(map[unversioned.GroupVersion]error) + results = []schema.GroupVersionResource{} + resources = map[schema.GroupResource]string{} + failedGroups = make(map[schema.GroupVersion]error) serverGroupList, err := d.ServerGroups() if err != nil { return results, err } for _, apiGroup := range serverGroupList.Groups { - preferredVersion := apiGroup.PreferredVersion - groupVersion := unversioned.GroupVersion{Group: apiGroup.Name, Version: preferredVersion.Version} - apiResourceList, err := d.ServerResourcesForGroupVersion(preferredVersion.GroupVersion) - if err != nil { - if i < maxRetries-1 { - continue RetrieveGroups - } - failedGroups[groupVersion] = err - continue - } - for _, apiResource := range apiResourceList.APIResources { - // ignore the root scoped resources if "namespaced" is true. - if namespaced && !apiResource.Namespaced { + versions := apiGroup.Versions + for _, version := range versions { + groupVersion := schema.GroupVersion{Group: apiGroup.Name, Version: version.Version} + apiResourceList, err := d.ServerResourcesForGroupVersion(version.GroupVersion) + if err != nil { + if i < maxRetries-1 { + continue RetrieveGroups + } + failedGroups[groupVersion] = err continue } - if strings.Contains(apiResource.Name, "/") { - continue + for _, apiResource := range apiResourceList.APIResources { + // ignore the root scoped resources if "namespaced" is true. + if namespaced && !apiResource.Namespaced { + continue + } + if strings.Contains(apiResource.Name, "/") { + continue + } + gvr := groupVersion.WithResource(apiResource.Name) + if _, ok := resources[gvr.GroupResource()]; ok { + if gvr.Version != apiGroup.PreferredVersion.Version { + continue + } + // remove previous entry, because it will be replaced with a preferred one + for i := range results { + if results[i].GroupResource() == gvr.GroupResource() { + results = append(results[:i], results[i+1:]...) + } + } + } + resources[gvr.GroupResource()] = gvr.Version + results = append(results, gvr) } - results = append(results, groupVersion.WithResource(apiResource.Name)) } } if len(failedGroups) == 0 { @@ -253,13 +271,13 @@ RetrieveGroups: // ServerPreferredResources returns the supported resources with the version preferred by the // server. -func (d *DiscoveryClient) ServerPreferredResources() ([]unversioned.GroupVersionResource, error) { +func (d *DiscoveryClient) ServerPreferredResources() ([]schema.GroupVersionResource, error) { return d.serverPreferredResources(false) } // ServerPreferredNamespacedResources returns the supported namespaced resources with the // version preferred by the server. -func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]unversioned.GroupVersionResource, error) { +func (d *DiscoveryClient) ServerPreferredNamespacedResources() ([]schema.GroupVersionResource, error) { return d.serverPreferredResources(true) } @@ -278,7 +296,7 @@ func (d *DiscoveryClient) ServerVersion() (*version.Info, error) { } // SwaggerSchema retrieves and parses the swagger API schema the server supports. -func (d *DiscoveryClient) SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) { +func (d *DiscoveryClient) SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) { if version.Empty() { return nil, fmt.Errorf("groupVersion cannot be empty") } diff --git a/discovery/discovery_client_test.go b/discovery/discovery_client_test.go index 2036e50a..20e37841 100644 --- a/discovery/discovery_client_test.go +++ b/discovery/discovery_client_test.go @@ -27,6 +27,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/version" "k8s.io/client-go/rest" ) @@ -312,7 +313,7 @@ func TestGetSwaggerSchemaFail(t *testing.T) { defer server.Close() client := NewDiscoveryClientForConfigOrDie(&rest.Config{Host: server.URL}) - got, err := client.SwaggerSchema(unversioned.GroupVersion{Group: "api.group", Version: "v4"}) + got, err := client.SwaggerSchema(schema.GroupVersion{Group: "api.group", Version: "v4"}) if got != nil { t.Fatalf("unexpected response: %v", got) } @@ -321,7 +322,7 @@ func TestGetSwaggerSchemaFail(t *testing.T) { } } -func TestGetServerPreferredResources(t *testing.T) { +func TestServerPreferredResources(t *testing.T) { stable := unversioned.APIResourceList{ GroupVersion: "v1", APIResources: []unversioned.APIResource{ @@ -330,14 +331,6 @@ func TestGetServerPreferredResources(t *testing.T) { {Name: "namespaces", Namespaced: false, Kind: "Namespace"}, }, } - /*beta := unversioned.APIResourceList{ - GroupVersion: "extensions/v1", - APIResources: []unversioned.APIResource{ - {Name: "deployments", Namespaced: true, Kind: "Deployment"}, - {Name: "ingresses", Namespaced: true, Kind: "Ingress"}, - {Name: "jobs", Namespaced: true, Kind: "Job"}, - }, - }*/ tests := []struct { resourcesList *unversioned.APIResourceList response func(w http.ResponseWriter, req *http.Request) @@ -427,9 +420,6 @@ func TestGetServerPreferredResources(t *testing.T) { w.Write(output) }, }, - /*{ - resourcesList: &stable, - },*/ } for _, test := range tests { server := httptest.NewServer(http.HandlerFunc(test.response)) @@ -455,7 +445,7 @@ func TestGetServerPreferredResources(t *testing.T) { } } -func TestGetServerPreferredResourcesRetries(t *testing.T) { +func TestServerPreferredResourcesRetries(t *testing.T) { stable := unversioned.APIResourceList{ GroupVersion: "v1", APIResources: []unversioned.APIResource{ @@ -553,3 +543,173 @@ func TestGetServerPreferredResourcesRetries(t *testing.T) { server.Close() } } + +func TestServerPreferredNamespacedResources(t *testing.T) { + stable := unversioned.APIResourceList{ + GroupVersion: "v1", + APIResources: []unversioned.APIResource{ + {Name: "pods", Namespaced: true, Kind: "Pod"}, + {Name: "services", Namespaced: true, Kind: "Service"}, + {Name: "namespaces", Namespaced: false, Kind: "Namespace"}, + }, + } + batchv1 := unversioned.APIResourceList{ + GroupVersion: "batch/v1", + APIResources: []unversioned.APIResource{ + {Name: "jobs", Namespaced: true, Kind: "Job"}, + }, + } + batchv2alpha1 := unversioned.APIResourceList{ + GroupVersion: "batch/v2alpha1", + APIResources: []unversioned.APIResource{ + {Name: "jobs", Namespaced: true, Kind: "Job"}, + {Name: "cronjobs", Namespaced: true, Kind: "CronJob"}, + }, + } + batchv3alpha1 := unversioned.APIResourceList{ + GroupVersion: "batch/v3alpha1", + APIResources: []unversioned.APIResource{ + {Name: "jobs", Namespaced: true, Kind: "Job"}, + {Name: "cronjobs", Namespaced: true, Kind: "CronJob"}, + }, + } + tests := []struct { + response func(w http.ResponseWriter, req *http.Request) + expected []schema.GroupVersionResource + }{ + { + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/api/v1": + list = &stable + case "/api": + list = &unversioned.APIVersions{ + Versions: []string{ + "v1", + }, + } + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + expected: []schema.GroupVersionResource{ + {Group: "", Version: "v1", Resource: "pods"}, + {Group: "", Version: "v1", Resource: "services"}, + }, + }, + { + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis": + list = &unversioned.APIGroupList{ + Groups: []unversioned.APIGroup{ + { + Name: "batch", + Versions: []unversioned.GroupVersionForDiscovery{ + {GroupVersion: "batch/v1", Version: "v1"}, + {GroupVersion: "batch/v2alpha1", Version: "v2alpha1"}, + {GroupVersion: "batch/v3alpha1", Version: "v3alpha1"}, + }, + PreferredVersion: unversioned.GroupVersionForDiscovery{GroupVersion: "batch/v1", Version: "v1"}, + }, + }, + } + case "/apis/batch/v1": + list = &batchv1 + case "/apis/batch/v2alpha1": + list = &batchv2alpha1 + case "/apis/batch/v3alpha1": + list = &batchv3alpha1 + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + expected: []schema.GroupVersionResource{ + {Group: "batch", Version: "v1", Resource: "jobs"}, + {Group: "batch", Version: "v2alpha1", Resource: "cronjobs"}, + }, + }, + { + response: func(w http.ResponseWriter, req *http.Request) { + var list interface{} + switch req.URL.Path { + case "/apis": + list = &unversioned.APIGroupList{ + Groups: []unversioned.APIGroup{ + { + Name: "batch", + Versions: []unversioned.GroupVersionForDiscovery{ + {GroupVersion: "batch/v1", Version: "v1"}, + {GroupVersion: "batch/v2alpha1", Version: "v2alpha1"}, + {GroupVersion: "batch/v3alpha1", Version: "v3alpha1"}, + }, + PreferredVersion: unversioned.GroupVersionForDiscovery{GroupVersion: "batch/v2alpha", Version: "v2alpha1"}, + }, + }, + } + case "/apis/batch/v1": + list = &batchv1 + case "/apis/batch/v2alpha1": + list = &batchv2alpha1 + case "/apis/batch/v3alpha1": + list = &batchv3alpha1 + default: + t.Logf("unexpected request: %s", req.URL.Path) + w.WriteHeader(http.StatusNotFound) + return + } + output, err := json.Marshal(list) + if err != nil { + t.Errorf("unexpected encoding error: %v", err) + return + } + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + w.Write(output) + }, + expected: []schema.GroupVersionResource{ + {Group: "batch", Version: "v2alpha1", Resource: "jobs"}, + {Group: "batch", Version: "v2alpha1", Resource: "cronjobs"}, + }, + }, + } + for _, test := range tests { + server := httptest.NewServer(http.HandlerFunc(test.response)) + defer server.Close() + + client := NewDiscoveryClientForConfigOrDie(&rest.Config{Host: server.URL}) + got, err := client.ServerPreferredNamespacedResources() + if err != nil { + t.Errorf("unexpected error: %v", err) + continue + } + // we need deterministic order and since during processing in ServerPreferredNamespacedResources + // a map comes into play the result needs sorting + if !reflect.DeepEqual(got, test.expected) { + t.Errorf("expected:\n%v\ngot:\n%v\n", test.expected, got) + } + server.Close() + } +} diff --git a/discovery/fake/discovery.go b/discovery/fake/discovery.go index 5b1fd548..42dd7512 100644 --- a/discovery/fake/discovery.go +++ b/discovery/fake/discovery.go @@ -20,6 +20,7 @@ import ( "github.com/emicklei/go-restful/swagger" "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/version" "k8s.io/client-go/rest" "k8s.io/client-go/testing" @@ -32,7 +33,7 @@ type FakeDiscovery struct { func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*unversioned.APIResourceList, error) { action := testing.ActionImpl{ Verb: "get", - Resource: unversioned.GroupVersionResource{Resource: "resource"}, + Resource: schema.GroupVersionResource{Resource: "resource"}, } c.Invokes(action, nil) return c.Resources[groupVersion], nil @@ -41,17 +42,17 @@ func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*un func (c *FakeDiscovery) ServerResources() (map[string]*unversioned.APIResourceList, error) { action := testing.ActionImpl{ Verb: "get", - Resource: unversioned.GroupVersionResource{Resource: "resource"}, + Resource: schema.GroupVersionResource{Resource: "resource"}, } c.Invokes(action, nil) return c.Resources, nil } -func (c *FakeDiscovery) ServerPreferredResources() ([]unversioned.GroupVersionResource, error) { +func (c *FakeDiscovery) ServerPreferredResources() ([]schema.GroupVersionResource, error) { return nil, nil } -func (c *FakeDiscovery) ServerPreferredNamespacedResources() ([]unversioned.GroupVersionResource, error) { +func (c *FakeDiscovery) ServerPreferredNamespacedResources() ([]schema.GroupVersionResource, error) { return nil, nil } @@ -62,20 +63,20 @@ func (c *FakeDiscovery) ServerGroups() (*unversioned.APIGroupList, error) { func (c *FakeDiscovery) ServerVersion() (*version.Info, error) { action := testing.ActionImpl{} action.Verb = "get" - action.Resource = unversioned.GroupVersionResource{Resource: "version"} + action.Resource = schema.GroupVersionResource{Resource: "version"} c.Invokes(action, nil) versionInfo := version.Get() return &versionInfo, nil } -func (c *FakeDiscovery) SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) { +func (c *FakeDiscovery) SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) { action := testing.ActionImpl{} action.Verb = "get" if version == v1.SchemeGroupVersion { - action.Resource = unversioned.GroupVersionResource{Resource: "/swaggerapi/api/" + version.Version} + action.Resource = schema.GroupVersionResource{Resource: "/swaggerapi/api/" + version.Version} } else { - action.Resource = unversioned.GroupVersionResource{Resource: "/swaggerapi/apis/" + version.Group + "/" + version.Version} + action.Resource = schema.GroupVersionResource{Resource: "/swaggerapi/apis/" + version.Group + "/" + version.Version} } c.Invokes(action, nil) diff --git a/discovery/helper.go b/discovery/helper.go index 9494735d..41359d09 100644 --- a/discovery/helper.go +++ b/discovery/helper.go @@ -20,6 +20,7 @@ import ( "fmt" "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/sets" "k8s.io/client-go/pkg/version" // Import solely to initialize client auth plugins. @@ -49,7 +50,7 @@ func MatchesServerVersion(client DiscoveryInterface) error { // preference. // - If version is provided and the server does not support it, // return an error. -func NegotiateVersion(client DiscoveryInterface, requiredGV *unversioned.GroupVersion, clientRegisteredGVs []unversioned.GroupVersion) (*unversioned.GroupVersion, error) { +func NegotiateVersion(client DiscoveryInterface, requiredGV *schema.GroupVersion, clientRegisteredGVs []schema.GroupVersion) (*schema.GroupVersion, error) { clientVersions := sets.String{} for _, gv := range clientRegisteredGVs { clientVersions.Insert(gv.String()) diff --git a/discovery/helper_blackbox_test.go b/discovery/helper_blackbox_test.go index dd6433b0..5faac752 100644 --- a/discovery/helper_blackbox_test.go +++ b/discovery/helper_blackbox_test.go @@ -32,6 +32,7 @@ import ( uapi "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/rest" "k8s.io/client-go/rest/fake" ) @@ -47,10 +48,10 @@ func objBody(object interface{}) io.ReadCloser { func TestNegotiateVersion(t *testing.T) { tests := []struct { name string - requiredVersion *uapi.GroupVersion - expectedVersion *uapi.GroupVersion + requiredVersion *schema.GroupVersion + expectedVersion *schema.GroupVersion serverVersions []string - clientVersions []uapi.GroupVersion + clientVersions []schema.GroupVersion expectErr func(err error) bool sendErr error statusCode int @@ -58,60 +59,60 @@ func TestNegotiateVersion(t *testing.T) { { name: "server supports client default", serverVersions: []string{"version1", registered.GroupOrDie(api.GroupName).GroupVersion.String()}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, - expectedVersion: &uapi.GroupVersion{Version: "version1"}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + expectedVersion: &schema.GroupVersion{Version: "version1"}, statusCode: http.StatusOK, }, { name: "server falls back to client supported", serverVersions: []string{"version1"}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, - expectedVersion: &uapi.GroupVersion{Version: "version1"}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + expectedVersion: &schema.GroupVersion{Version: "version1"}, statusCode: http.StatusOK, }, { name: "explicit version supported", - requiredVersion: &uapi.GroupVersion{Version: "v1"}, + requiredVersion: &schema.GroupVersion{Version: "v1"}, serverVersions: []string{"/version1", registered.GroupOrDie(api.GroupName).GroupVersion.String()}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, - expectedVersion: &uapi.GroupVersion{Version: "v1"}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + expectedVersion: &schema.GroupVersion{Version: "v1"}, statusCode: http.StatusOK, }, { name: "explicit version not supported on server", - requiredVersion: &uapi.GroupVersion{Version: "v1"}, + requiredVersion: &schema.GroupVersion{Version: "v1"}, serverVersions: []string{"version1"}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, expectErr: func(err error) bool { return strings.Contains(err.Error(), `server does not support API version "v1"`) }, statusCode: http.StatusOK, }, { name: "explicit version not supported on client", - requiredVersion: &uapi.GroupVersion{Version: "v1"}, + requiredVersion: &schema.GroupVersion{Version: "v1"}, serverVersions: []string{"v1"}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}}, + clientVersions: []schema.GroupVersion{{Version: "version1"}}, expectErr: func(err error) bool { return strings.Contains(err.Error(), `client does not support API version "v1"`) }, statusCode: http.StatusOK, }, { name: "connection refused error", serverVersions: []string{"version1"}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, sendErr: errors.New("connection refused"), expectErr: func(err error) bool { return strings.Contains(err.Error(), "connection refused") }, statusCode: http.StatusOK, }, { name: "discovery fails due to 403 Forbidden errors and thus serverVersions is empty, use default GroupVersion", - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, - expectedVersion: &uapi.GroupVersion{Version: "version1"}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + expectedVersion: &schema.GroupVersion{Version: "version1"}, statusCode: http.StatusForbidden, }, { name: "discovery fails due to 404 Not Found errors and thus serverVersions is empty, use requested GroupVersion", - requiredVersion: &uapi.GroupVersion{Version: "version1"}, - clientVersions: []uapi.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, - expectedVersion: &uapi.GroupVersion{Version: "version1"}, + requiredVersion: &schema.GroupVersion{Version: "version1"}, + clientVersions: []schema.GroupVersion{{Version: "version1"}, registered.GroupOrDie(api.GroupName).GroupVersion}, + expectedVersion: &schema.GroupVersion{Version: "version1"}, statusCode: http.StatusNotFound, }, { diff --git a/discovery/restmapper.go b/discovery/restmapper.go index 7f846d2f..7d86348e 100644 --- a/discovery/restmapper.go +++ b/discovery/restmapper.go @@ -23,6 +23,7 @@ import ( "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/meta" "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" "github.com/golang/glog" ) @@ -42,8 +43,8 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V unionMapper := meta.MultiRESTMapper{} var groupPriority []string - var resourcePriority []unversioned.GroupVersionResource - var kindPriority []unversioned.GroupVersionKind + var resourcePriority []schema.GroupVersionResource + var kindPriority []schema.GroupVersionKind for _, group := range groupResources { groupPriority = append(groupPriority, group.Group.Name) @@ -51,13 +52,13 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V if len(group.Group.PreferredVersion.Version) != 0 { preferred := group.Group.PreferredVersion.Version if _, ok := group.VersionedResources[preferred]; ok { - resourcePriority = append(resourcePriority, unversioned.GroupVersionResource{ + resourcePriority = append(resourcePriority, schema.GroupVersionResource{ Group: group.Group.Name, Version: group.Group.PreferredVersion.Version, Resource: meta.AnyResource, }) - kindPriority = append(kindPriority, unversioned.GroupVersionKind{ + kindPriority = append(kindPriority, schema.GroupVersionKind{ Group: group.Group.Name, Version: group.Group.PreferredVersion.Version, Kind: meta.AnyKind, @@ -71,8 +72,8 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V continue } - gv := unversioned.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} - versionMapper := meta.NewDefaultRESTMapper([]unversioned.GroupVersion{gv}, versionInterfaces) + gv := schema.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} + versionMapper := meta.NewDefaultRESTMapper([]schema.GroupVersion{gv}, versionInterfaces) for _, resource := range resources { scope := meta.RESTScopeNamespace @@ -90,12 +91,12 @@ func NewRESTMapper(groupResources []*APIGroupResources, versionInterfaces meta.V } for _, group := range groupPriority { - resourcePriority = append(resourcePriority, unversioned.GroupVersionResource{ + resourcePriority = append(resourcePriority, schema.GroupVersionResource{ Group: group, Version: meta.AnyVersion, Resource: meta.AnyResource, }) - kindPriority = append(kindPriority, unversioned.GroupVersionKind{ + kindPriority = append(kindPriority, schema.GroupVersionKind{ Group: group, Version: meta.AnyVersion, Kind: meta.AnyKind, @@ -188,10 +189,10 @@ func (d *DeferredDiscoveryRESTMapper) Reset() { // KindFor takes a partial resource and returns back the single match. // It returns an error if there are multiple matches. -func (d *DeferredDiscoveryRESTMapper) KindFor(resource unversioned.GroupVersionResource) (gvk unversioned.GroupVersionKind, err error) { +func (d *DeferredDiscoveryRESTMapper) KindFor(resource schema.GroupVersionResource) (gvk schema.GroupVersionKind, err error) { del, err := d.getDelegate() if err != nil { - return unversioned.GroupVersionKind{}, err + return schema.GroupVersionKind{}, err } gvk, err = del.KindFor(resource) if err != nil && !d.cl.Fresh() { @@ -203,7 +204,7 @@ func (d *DeferredDiscoveryRESTMapper) KindFor(resource unversioned.GroupVersionR // KindsFor takes a partial resource and returns back the list of // potential kinds in priority order. -func (d *DeferredDiscoveryRESTMapper) KindsFor(resource unversioned.GroupVersionResource) (gvks []unversioned.GroupVersionKind, err error) { +func (d *DeferredDiscoveryRESTMapper) KindsFor(resource schema.GroupVersionResource) (gvks []schema.GroupVersionKind, err error) { del, err := d.getDelegate() if err != nil { return nil, err @@ -218,10 +219,10 @@ func (d *DeferredDiscoveryRESTMapper) KindsFor(resource unversioned.GroupVersion // ResourceFor takes a partial resource and returns back the single // match. It returns an error if there are multiple matches. -func (d *DeferredDiscoveryRESTMapper) ResourceFor(input unversioned.GroupVersionResource) (gvr unversioned.GroupVersionResource, err error) { +func (d *DeferredDiscoveryRESTMapper) ResourceFor(input schema.GroupVersionResource) (gvr schema.GroupVersionResource, err error) { del, err := d.getDelegate() if err != nil { - return unversioned.GroupVersionResource{}, err + return schema.GroupVersionResource{}, err } gvr, err = del.ResourceFor(input) if err != nil && !d.cl.Fresh() { @@ -233,7 +234,7 @@ func (d *DeferredDiscoveryRESTMapper) ResourceFor(input unversioned.GroupVersion // ResourcesFor takes a partial resource and returns back the list of // potential resource in priority order. -func (d *DeferredDiscoveryRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) (gvrs []unversioned.GroupVersionResource, err error) { +func (d *DeferredDiscoveryRESTMapper) ResourcesFor(input schema.GroupVersionResource) (gvrs []schema.GroupVersionResource, err error) { del, err := d.getDelegate() if err != nil { return nil, err @@ -248,7 +249,7 @@ func (d *DeferredDiscoveryRESTMapper) ResourcesFor(input unversioned.GroupVersio // RESTMapping identifies a preferred resource mapping for the // provided group kind. -func (d *DeferredDiscoveryRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (m *meta.RESTMapping, err error) { +func (d *DeferredDiscoveryRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (m *meta.RESTMapping, err error) { del, err := d.getDelegate() if err != nil { return nil, err @@ -264,7 +265,7 @@ func (d *DeferredDiscoveryRESTMapper) RESTMapping(gk unversioned.GroupKind, vers // RESTMappings returns the RESTMappings for the provided group kind // in a rough internal preferred order. If no kind is found, it will // return a NoResourceMatchError. -func (d *DeferredDiscoveryRESTMapper) RESTMappings(gk unversioned.GroupKind) (ms []*meta.RESTMapping, err error) { +func (d *DeferredDiscoveryRESTMapper) RESTMappings(gk schema.GroupKind) (ms []*meta.RESTMapping, err error) { del, err := d.getDelegate() if err != nil { return nil, err diff --git a/discovery/restmapper_test.go b/discovery/restmapper_test.go index 9baf273b..8d56b25f 100644 --- a/discovery/restmapper_test.go +++ b/discovery/restmapper_test.go @@ -23,6 +23,7 @@ import ( "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/version" "k8s.io/client-go/rest" "k8s.io/client-go/rest/fake" @@ -69,43 +70,43 @@ func TestRESTMapper(t *testing.T) { restMapper := NewRESTMapper(resources, nil) kindTCs := []struct { - input unversioned.GroupVersionResource - want unversioned.GroupVersionKind + input schema.GroupVersionResource + want schema.GroupVersionKind }{ { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Version: "v1", Resource: "pods", }, - want: unversioned.GroupVersionKind{ + want: schema.GroupVersionKind{ Version: "v1", Kind: "Pod", }, }, { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Version: "v2", Resource: "pods", }, - want: unversioned.GroupVersionKind{ + want: schema.GroupVersionKind{ Version: "v2", Kind: "Pod", }, }, { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Resource: "pods", }, - want: unversioned.GroupVersionKind{ + want: schema.GroupVersionKind{ Version: "v1", Kind: "Pod", }, }, { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Resource: "jobs", }, - want: unversioned.GroupVersionKind{ + want: schema.GroupVersionKind{ Group: "extensions", Version: "v1beta", Kind: "Job", @@ -126,43 +127,43 @@ func TestRESTMapper(t *testing.T) { } resourceTCs := []struct { - input unversioned.GroupVersionResource - want unversioned.GroupVersionResource + input schema.GroupVersionResource + want schema.GroupVersionResource }{ { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Version: "v1", Resource: "pods", }, - want: unversioned.GroupVersionResource{ + want: schema.GroupVersionResource{ Version: "v1", Resource: "pods", }, }, { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Version: "v2", Resource: "pods", }, - want: unversioned.GroupVersionResource{ + want: schema.GroupVersionResource{ Version: "v2", Resource: "pods", }, }, { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Resource: "pods", }, - want: unversioned.GroupVersionResource{ + want: schema.GroupVersionResource{ Version: "v1", Resource: "pods", }, }, { - input: unversioned.GroupVersionResource{ + input: schema.GroupVersionResource{ Resource: "jobs", }, - want: unversioned.GroupVersionResource{ + want: schema.GroupVersionResource{ Group: "extensions", Version: "v1beta", Resource: "jobs", @@ -191,7 +192,7 @@ func TestDeferredDiscoveryRESTMapper_CacheMiss(t *testing.T) { assert.False(cdc.fresh, "should NOT be fresh after instantiation") assert.Zero(cdc.invalidateCalls, "should not have called Invalidate()") - gvk, err := m.KindFor(unversioned.GroupVersionResource{ + gvk, err := m.KindFor(schema.GroupVersionResource{ Group: "a", Version: "v1", Resource: "foo", @@ -201,7 +202,7 @@ func TestDeferredDiscoveryRESTMapper_CacheMiss(t *testing.T) { assert.Equal(cdc.invalidateCalls, 1, "should have called Invalidate() once") assert.Equal(gvk.Kind, "Foo") - gvk, err = m.KindFor(unversioned.GroupVersionResource{ + gvk, err = m.KindFor(schema.GroupVersionResource{ Group: "a", Version: "v1", Resource: "foo", @@ -209,7 +210,7 @@ func TestDeferredDiscoveryRESTMapper_CacheMiss(t *testing.T) { assert.NoError(err) assert.Equal(cdc.invalidateCalls, 1, "should NOT have called Invalidate() again") - gvk, err = m.KindFor(unversioned.GroupVersionResource{ + gvk, err = m.KindFor(schema.GroupVersionResource{ Group: "a", Version: "v1", Resource: "bar", @@ -218,7 +219,7 @@ func TestDeferredDiscoveryRESTMapper_CacheMiss(t *testing.T) { assert.Equal(cdc.invalidateCalls, 1, "should NOT have called Invalidate() again after another cache-miss, but with fresh==true") cdc.fresh = false - gvk, err = m.KindFor(unversioned.GroupVersionResource{ + gvk, err = m.KindFor(schema.GroupVersionResource{ Group: "a", Version: "v1", Resource: "bar", @@ -286,7 +287,7 @@ func (c *fakeCachedDiscoveryInterface) ServerResourcesForGroupVersion(groupVersi }, nil } - return nil, errors.NewNotFound(unversioned.GroupResource{}, "") + return nil, errors.NewNotFound(schema.GroupResource{}, "") } func (c *fakeCachedDiscoveryInterface) ServerResources() (map[string]*unversioned.APIResourceList, error) { @@ -299,9 +300,9 @@ func (c *fakeCachedDiscoveryInterface) ServerResources() (map[string]*unversione return map[string]*unversioned.APIResourceList{}, nil } -func (c *fakeCachedDiscoveryInterface) ServerPreferredResources() ([]unversioned.GroupVersionResource, error) { +func (c *fakeCachedDiscoveryInterface) ServerPreferredResources() ([]schema.GroupVersionResource, error) { if c.enabledA { - return []unversioned.GroupVersionResource{ + return []schema.GroupVersionResource{ { Group: "a", Version: "v1", @@ -309,17 +310,17 @@ func (c *fakeCachedDiscoveryInterface) ServerPreferredResources() ([]unversioned }, }, nil } - return []unversioned.GroupVersionResource{}, nil + return []schema.GroupVersionResource{}, nil } -func (c *fakeCachedDiscoveryInterface) ServerPreferredNamespacedResources() ([]unversioned.GroupVersionResource, error) { - return []unversioned.GroupVersionResource{}, nil +func (c *fakeCachedDiscoveryInterface) ServerPreferredNamespacedResources() ([]schema.GroupVersionResource, error) { + return []schema.GroupVersionResource{}, nil } func (c *fakeCachedDiscoveryInterface) ServerVersion() (*version.Info, error) { return &version.Info{}, nil } -func (c *fakeCachedDiscoveryInterface) SwaggerSchema(version unversioned.GroupVersion) (*swagger.ApiDeclaration, error) { +func (c *fakeCachedDiscoveryInterface) SwaggerSchema(version schema.GroupVersion) (*swagger.ApiDeclaration, error) { return &swagger.ApiDeclaration{}, nil } diff --git a/discovery/unstructured.go b/discovery/unstructured.go index c4b8791f..aeea51ce 100644 --- a/discovery/unstructured.go +++ b/discovery/unstructured.go @@ -19,20 +19,20 @@ package discovery import ( "fmt" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // UnstructuredObjectTyper provides a runtime.ObjectTyper implmentation for // runtime.Unstructured object based on discovery information. type UnstructuredObjectTyper struct { - registered map[unversioned.GroupVersionKind]bool + registered map[schema.GroupVersionKind]bool } // NewUnstructuredObjectTyper returns a runtime.ObjectTyper for // unstructred objects based on discovery information. func NewUnstructuredObjectTyper(groupResources []*APIGroupResources) *UnstructuredObjectTyper { - dot := &UnstructuredObjectTyper{registered: make(map[unversioned.GroupVersionKind]bool)} + dot := &UnstructuredObjectTyper{registered: make(map[schema.GroupVersionKind]bool)} for _, group := range groupResources { for _, discoveryVersion := range group.Group.Versions { resources, ok := group.VersionedResources[discoveryVersion.Version] @@ -40,7 +40,7 @@ func NewUnstructuredObjectTyper(groupResources []*APIGroupResources) *Unstructur continue } - gv := unversioned.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} + gv := schema.GroupVersion{Group: group.Group.Name, Version: discoveryVersion.Version} for _, resource := range resources { dot.registered[gv.WithKind(resource.Kind)] = true } @@ -52,9 +52,9 @@ func NewUnstructuredObjectTyper(groupResources []*APIGroupResources) *Unstructur // ObjectKind returns the group,version,kind of the provided object, or an error // if the object in not *runtime.Unstructured or has no group,version,kind // information. -func (d *UnstructuredObjectTyper) ObjectKind(obj runtime.Object) (unversioned.GroupVersionKind, error) { +func (d *UnstructuredObjectTyper) ObjectKind(obj runtime.Object) (schema.GroupVersionKind, error) { if _, ok := obj.(*runtime.Unstructured); !ok { - return unversioned.GroupVersionKind{}, fmt.Errorf("type %T is invalid for dynamic object typer", obj) + return schema.GroupVersionKind{}, fmt.Errorf("type %T is invalid for dynamic object typer", obj) } return obj.GetObjectKind().GroupVersionKind(), nil @@ -65,18 +65,18 @@ func (d *UnstructuredObjectTyper) ObjectKind(obj runtime.Object) (unversioned.Gr // has no group,version,kind information. unversionedType will always be false // because runtime.Unstructured object should always have group,version,kind // information set. -func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []unversioned.GroupVersionKind, unversionedType bool, err error) { +func (d *UnstructuredObjectTyper) ObjectKinds(obj runtime.Object) (gvks []schema.GroupVersionKind, unversionedType bool, err error) { gvk, err := d.ObjectKind(obj) if err != nil { return nil, false, err } - return []unversioned.GroupVersionKind{gvk}, false, nil + return []schema.GroupVersionKind{gvk}, false, nil } // Recognizes returns true if the provided group,version,kind was in the // discovery information. -func (d *UnstructuredObjectTyper) Recognizes(gvk unversioned.GroupVersionKind) bool { +func (d *UnstructuredObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { return d.registered[gvk] } diff --git a/dynamic/client.go b/dynamic/client.go index ca5d457d..94eb03ff 100644 --- a/dynamic/client.go +++ b/dynamic/client.go @@ -31,6 +31,7 @@ import ( "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/conversion/queryparams" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer" "k8s.io/client-go/pkg/util/flowcontrol" "k8s.io/client-go/pkg/watch" @@ -218,7 +219,7 @@ func (rc *ResourceClient) Patch(name string, pt api.PatchType, data []byte) (*ru // with special handling for Status objects. type dynamicCodec struct{} -func (dynamicCodec) Decode(data []byte, gvk *unversioned.GroupVersionKind, obj runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (dynamicCodec) Decode(data []byte, gvk *schema.GroupVersionKind, obj runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { obj, gvk, err := runtime.UnstructuredJSONScheme.Decode(data, gvk, obj) if err != nil { return nil, nil, err @@ -264,11 +265,11 @@ func ContentConfig() rest.ContentConfig { // parameters without trying to convert to the target version. type parameterCodec struct{} -func (parameterCodec) EncodeParameters(obj runtime.Object, to unversioned.GroupVersion) (url.Values, error) { +func (parameterCodec) EncodeParameters(obj runtime.Object, to schema.GroupVersion) (url.Values, error) { return queryparams.Convert(obj) } -func (parameterCodec) DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into runtime.Object) error { +func (parameterCodec) DecodeParameters(parameters url.Values, from schema.GroupVersion, into runtime.Object) error { return errors.New("DecodeParameters not implemented on dynamic parameterCodec") } @@ -276,7 +277,7 @@ var defaultParameterEncoder runtime.ParameterCodec = parameterCodec{} type versionedParameterEncoderWithV1Fallback struct{} -func (versionedParameterEncoderWithV1Fallback) EncodeParameters(obj runtime.Object, to unversioned.GroupVersion) (url.Values, error) { +func (versionedParameterEncoderWithV1Fallback) EncodeParameters(obj runtime.Object, to schema.GroupVersion) (url.Values, error) { ret, err := api.ParameterCodec.EncodeParameters(obj, to) if err != nil && runtime.IsNotRegisteredError(err) { // fallback to v1 @@ -285,7 +286,7 @@ func (versionedParameterEncoderWithV1Fallback) EncodeParameters(obj runtime.Obje return ret, err } -func (versionedParameterEncoderWithV1Fallback) DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into runtime.Object) error { +func (versionedParameterEncoderWithV1Fallback) DecodeParameters(parameters url.Values, from schema.GroupVersion, into runtime.Object) error { return errors.New("DecodeParameters not implemented on versionedParameterEncoderWithV1Fallback") } diff --git a/dynamic/client_pool.go b/dynamic/client_pool.go index f54a3813..25357550 100644 --- a/dynamic/client_pool.go +++ b/dynamic/client_pool.go @@ -20,7 +20,7 @@ import ( "sync" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/rest" ) @@ -28,18 +28,18 @@ import ( type ClientPool interface { // ClientForGroupVersionKind returns a client configured for the specified groupVersionResource. // Resource may be empty. - ClientForGroupVersionResource(resource unversioned.GroupVersionResource) (*Client, error) + ClientForGroupVersionResource(resource schema.GroupVersionResource) (*Client, error) // ClientForGroupVersionKind returns a client configured for the specified groupVersionKind. // Kind may be empty. - ClientForGroupVersionKind(kind unversioned.GroupVersionKind) (*Client, error) + ClientForGroupVersionKind(kind schema.GroupVersionKind) (*Client, error) } // APIPathResolverFunc knows how to convert a groupVersion to its API path. The Kind field is // optional. -type APIPathResolverFunc func(kind unversioned.GroupVersionKind) string +type APIPathResolverFunc func(kind schema.GroupVersionKind) string // LegacyAPIPathResolverFunc can resolve paths properly with the legacy API. -func LegacyAPIPathResolverFunc(kind unversioned.GroupVersionKind) string { +func LegacyAPIPathResolverFunc(kind schema.GroupVersionKind) string { if len(kind.Group) == 0 { return "/api" } @@ -51,7 +51,7 @@ func LegacyAPIPathResolverFunc(kind unversioned.GroupVersionKind) string { type clientPoolImpl struct { lock sync.RWMutex config *rest.Config - clients map[unversioned.GroupVersion]*Client + clients map[schema.GroupVersion]*Client apiPathResolverFunc APIPathResolverFunc mapper meta.RESTMapper } @@ -64,7 +64,7 @@ func NewClientPool(config *rest.Config, mapper meta.RESTMapper, apiPathResolverF return &clientPoolImpl{ config: &confCopy, - clients: map[unversioned.GroupVersion]*Client{}, + clients: map[schema.GroupVersion]*Client{}, apiPathResolverFunc: apiPathResolverFunc, mapper: mapper, } @@ -72,11 +72,11 @@ func NewClientPool(config *rest.Config, mapper meta.RESTMapper, apiPathResolverF // ClientForGroupVersionResource uses the provided RESTMapper to identify the appropriate resource. Resource may // be empty. If no matching kind is found the underlying client for that group is still returned. -func (c *clientPoolImpl) ClientForGroupVersionResource(resource unversioned.GroupVersionResource) (*Client, error) { +func (c *clientPoolImpl) ClientForGroupVersionResource(resource schema.GroupVersionResource) (*Client, error) { kinds, err := c.mapper.KindsFor(resource) if err != nil { if meta.IsNoMatchError(err) { - return c.ClientForGroupVersionKind(unversioned.GroupVersionKind{Group: resource.Group, Version: resource.Version}) + return c.ClientForGroupVersionKind(schema.GroupVersionKind{Group: resource.Group, Version: resource.Version}) } return nil, err } @@ -85,7 +85,7 @@ func (c *clientPoolImpl) ClientForGroupVersionResource(resource unversioned.Grou // ClientForGroupVersion returns a client for the specified groupVersion, creates one if none exists. Kind // in the GroupVersionKind may be empty. -func (c *clientPoolImpl) ClientForGroupVersionKind(kind unversioned.GroupVersionKind) (*Client, error) { +func (c *clientPoolImpl) ClientForGroupVersionKind(kind schema.GroupVersionKind) (*Client, error) { c.lock.Lock() defer c.lock.Unlock() diff --git a/dynamic/client_test.go b/dynamic/client_test.go index dfa56cab..7d6338c4 100644 --- a/dynamic/client_test.go +++ b/dynamic/client_test.go @@ -29,6 +29,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/streaming" "k8s.io/client-go/pkg/watch" "k8s.io/client-go/pkg/watch/versioned" @@ -57,7 +58,7 @@ func getObject(version, kind, name string) *runtime.Unstructured { } } -func getClientServer(gv *unversioned.GroupVersion, h func(http.ResponseWriter, *http.Request)) (*Client, *httptest.Server, error) { +func getClientServer(gv *schema.GroupVersion, h func(http.ResponseWriter, *http.Request)) (*Client, *httptest.Server, error) { srv := httptest.NewServer(http.HandlerFunc(h)) cl, err := NewClient(&rest.Config{ Host: srv.URL, @@ -115,7 +116,7 @@ func TestList(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { @@ -170,7 +171,7 @@ func TestGet(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { @@ -223,7 +224,7 @@ func TestDelete(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "DELETE" { @@ -272,7 +273,7 @@ func TestDeleteCollection(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "DELETE" { @@ -320,7 +321,7 @@ func TestCreate(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "POST" { @@ -379,7 +380,7 @@ func TestUpdate(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "PUT" { @@ -446,7 +447,7 @@ func TestWatch(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "GET" { @@ -506,7 +507,7 @@ func TestPatch(t *testing.T) { }, } for _, tc := range tcs { - gv := &unversioned.GroupVersion{Group: "gtest", Version: "vtest"} + gv := &schema.GroupVersion{Group: "gtest", Version: "vtest"} resource := &unversioned.APIResource{Name: "rtest", Namespaced: len(tc.namespace) != 0} cl, srv, err := getClientServer(gv, func(w http.ResponseWriter, r *http.Request) { if r.Method != "PATCH" { diff --git a/dynamic/dynamic_util.go b/dynamic/dynamic_util.go index e90e7bcf..314102ba 100644 --- a/dynamic/dynamic_util.go +++ b/dynamic/dynamic_util.go @@ -22,11 +22,12 @@ import ( "k8s.io/client-go/pkg/api/meta" "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // VersionInterfaces provides an object converter and metadata // accessor appropriate for use with unstructured objects. -func VersionInterfaces(unversioned.GroupVersion) (*meta.VersionInterfaces, error) { +func VersionInterfaces(schema.GroupVersion) (*meta.VersionInterfaces, error) { return &meta.VersionInterfaces{ ObjectConvertor: &runtime.UnstructuredObjectConverter{}, MetadataAccessor: meta.NewAccessor(), @@ -37,7 +38,7 @@ func VersionInterfaces(unversioned.GroupVersion) (*meta.VersionInterfaces, error func NewDiscoveryRESTMapper(resources []*unversioned.APIResourceList, versionFunc meta.VersionInterfacesFunc) (*meta.DefaultRESTMapper, error) { rm := meta.NewDefaultRESTMapper(nil, versionFunc) for _, resourceList := range resources { - gv, err := unversioned.ParseGroupVersion(resourceList.GroupVersion) + gv, err := schema.ParseGroupVersion(resourceList.GroupVersion) if err != nil { return nil, err } @@ -57,14 +58,14 @@ func NewDiscoveryRESTMapper(resources []*unversioned.APIResourceList, versionFun // ObjectTyper provides an ObjectTyper implementation for // runtime.Unstructured object based on discovery information. type ObjectTyper struct { - registered map[unversioned.GroupVersionKind]bool + registered map[schema.GroupVersionKind]bool } // NewObjectTyper constructs an ObjectTyper from discovery information. func NewObjectTyper(resources []*unversioned.APIResourceList) (runtime.ObjectTyper, error) { - ot := &ObjectTyper{registered: make(map[unversioned.GroupVersionKind]bool)} + ot := &ObjectTyper{registered: make(map[schema.GroupVersionKind]bool)} for _, resourceList := range resources { - gv, err := unversioned.ParseGroupVersion(resourceList.GroupVersion) + gv, err := schema.ParseGroupVersion(resourceList.GroupVersion) if err != nil { return nil, err } @@ -80,15 +81,15 @@ func NewObjectTyper(resources []*unversioned.APIResourceList) (runtime.ObjectTyp // group,version,kind of the provided object, or an error if the // object is not *runtime.Unstructured or has no group,version,kind // information. -func (ot *ObjectTyper) ObjectKinds(obj runtime.Object) ([]unversioned.GroupVersionKind, bool, error) { +func (ot *ObjectTyper) ObjectKinds(obj runtime.Object) ([]schema.GroupVersionKind, bool, error) { if _, ok := obj.(*runtime.Unstructured); !ok { return nil, false, fmt.Errorf("type %T is invalid for dynamic object typer", obj) } - return []unversioned.GroupVersionKind{obj.GetObjectKind().GroupVersionKind()}, false, nil + return []schema.GroupVersionKind{obj.GetObjectKind().GroupVersionKind()}, false, nil } // Recognizes returns true if the provided group,version,kind was in // the discovery information. -func (ot *ObjectTyper) Recognizes(gvk unversioned.GroupVersionKind) bool { +func (ot *ObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { return ot.registered[gvk] } diff --git a/dynamic/dynamic_util_test.go b/dynamic/dynamic_util_test.go index 58014024..d8b9999b 100644 --- a/dynamic/dynamic_util_test.go +++ b/dynamic/dynamic_util_test.go @@ -20,6 +20,7 @@ import ( "testing" "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) func TestDiscoveryRESTMapper(t *testing.T) { @@ -36,7 +37,7 @@ func TestDiscoveryRESTMapper(t *testing.T) { }, } - gvk := unversioned.GroupVersionKind{ + gvk := schema.GroupVersionKind{ Group: "test", Version: "beta1", Kind: "test_kind", @@ -47,7 +48,7 @@ func TestDiscoveryRESTMapper(t *testing.T) { t.Fatalf("unexpected error creating mapper: %s", err) } - for _, res := range []unversioned.GroupVersionResource{ + for _, res := range []schema.GroupVersionResource{ { Group: "test", Version: "beta1", diff --git a/kubernetes/typed/apps/v1beta1/apps_client.go b/kubernetes/typed/apps/v1beta1/apps_client.go index 0155927e..013f56c4 100644 --- a/kubernetes/typed/apps/v1beta1/apps_client.go +++ b/kubernetes/typed/apps/v1beta1/apps_client.go @@ -19,8 +19,8 @@ package v1beta1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *AppsV1beta1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("apps/v1beta1") + gv, err := schema.ParseGroupVersion("apps/v1beta1") if err != nil { return err } diff --git a/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go b/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go index 155d89ff..e911906f 100644 --- a/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go +++ b/kubernetes/typed/apps/v1beta1/fake/fake_statefulset.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/apps/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeStatefulSets struct { ns string } -var statefulsetsResource = unversioned.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "statefulsets"} +var statefulsetsResource = schema.GroupVersionResource{Group: "apps", Version: "v1beta1", Resource: "statefulsets"} func (c *FakeStatefulSets) Create(statefulSet *v1beta1.StatefulSet) (result *v1beta1.StatefulSet, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/authentication/v1beta1/authentication_client.go b/kubernetes/typed/authentication/v1beta1/authentication_client.go index 7f976b06..25a9e73d 100644 --- a/kubernetes/typed/authentication/v1beta1/authentication_client.go +++ b/kubernetes/typed/authentication/v1beta1/authentication_client.go @@ -19,8 +19,8 @@ package v1beta1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *AuthenticationV1beta1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("authentication.k8s.io/v1beta1") + gv, err := schema.ParseGroupVersion("authentication.k8s.io/v1beta1") if err != nil { return err } diff --git a/kubernetes/typed/authorization/v1beta1/authorization_client.go b/kubernetes/typed/authorization/v1beta1/authorization_client.go index 59932837..9265a814 100644 --- a/kubernetes/typed/authorization/v1beta1/authorization_client.go +++ b/kubernetes/typed/authorization/v1beta1/authorization_client.go @@ -19,8 +19,8 @@ package v1beta1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -78,7 +78,7 @@ func New(c rest.Interface) *AuthorizationV1beta1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("authorization.k8s.io/v1beta1") + gv, err := schema.ParseGroupVersion("authorization.k8s.io/v1beta1") if err != nil { return err } diff --git a/kubernetes/typed/autoscaling/v1/autoscaling_client.go b/kubernetes/typed/autoscaling/v1/autoscaling_client.go index d3edda79..a2506be4 100644 --- a/kubernetes/typed/autoscaling/v1/autoscaling_client.go +++ b/kubernetes/typed/autoscaling/v1/autoscaling_client.go @@ -19,8 +19,8 @@ package v1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *AutoscalingV1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("autoscaling/v1") + gv, err := schema.ParseGroupVersion("autoscaling/v1") if err != nil { return err } diff --git a/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go b/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go index d6a58814..cc3e9769 100644 --- a/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go +++ b/kubernetes/typed/autoscaling/v1/fake/fake_horizontalpodautoscaler.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" api_v1 "k8s.io/client-go/pkg/api/v1" v1 "k8s.io/client-go/pkg/apis/autoscaling/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeHorizontalPodAutoscalers struct { ns string } -var horizontalpodautoscalersResource = unversioned.GroupVersionResource{Group: "autoscaling", Version: "v1", Resource: "horizontalpodautoscalers"} +var horizontalpodautoscalersResource = schema.GroupVersionResource{Group: "autoscaling", Version: "v1", Resource: "horizontalpodautoscalers"} func (c *FakeHorizontalPodAutoscalers) Create(horizontalPodAutoscaler *v1.HorizontalPodAutoscaler) (result *v1.HorizontalPodAutoscaler, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/batch/v1/batch_client.go b/kubernetes/typed/batch/v1/batch_client.go index 5b4012b7..90f5c769 100644 --- a/kubernetes/typed/batch/v1/batch_client.go +++ b/kubernetes/typed/batch/v1/batch_client.go @@ -19,8 +19,8 @@ package v1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *BatchV1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("batch/v1") + gv, err := schema.ParseGroupVersion("batch/v1") if err != nil { return err } diff --git a/kubernetes/typed/batch/v1/fake/fake_job.go b/kubernetes/typed/batch/v1/fake/fake_job.go index eb14eb91..e8b5598c 100644 --- a/kubernetes/typed/batch/v1/fake/fake_job.go +++ b/kubernetes/typed/batch/v1/fake/fake_job.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" api_v1 "k8s.io/client-go/pkg/api/v1" v1 "k8s.io/client-go/pkg/apis/batch/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeJobs struct { ns string } -var jobsResource = unversioned.GroupVersionResource{Group: "batch", Version: "v1", Resource: "jobs"} +var jobsResource = schema.GroupVersionResource{Group: "batch", Version: "v1", Resource: "jobs"} func (c *FakeJobs) Create(job *v1.Job) (result *v1.Job, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/batch/v2alpha1/batch_client.go b/kubernetes/typed/batch/v2alpha1/batch_client.go index c9440702..06f07df8 100644 --- a/kubernetes/typed/batch/v2alpha1/batch_client.go +++ b/kubernetes/typed/batch/v2alpha1/batch_client.go @@ -19,8 +19,8 @@ package v2alpha1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -73,7 +73,7 @@ func New(c rest.Interface) *BatchV2alpha1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("batch/v2alpha1") + gv, err := schema.ParseGroupVersion("batch/v2alpha1") if err != nil { return err } diff --git a/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go b/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go index 7d5ffb34..268b23f7 100644 --- a/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go +++ b/kubernetes/typed/batch/v2alpha1/fake/fake_cronjob.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeCronJobs struct { ns string } -var cronjobsResource = unversioned.GroupVersionResource{Group: "batch", Version: "v2alpha1", Resource: "cronjobs"} +var cronjobsResource = schema.GroupVersionResource{Group: "batch", Version: "v2alpha1", Resource: "cronjobs"} func (c *FakeCronJobs) Create(cronJob *v2alpha1.CronJob) (result *v2alpha1.CronJob, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/batch/v2alpha1/fake/fake_job.go b/kubernetes/typed/batch/v2alpha1/fake/fake_job.go index 2240eb9f..f5ba269c 100644 --- a/kubernetes/typed/batch/v2alpha1/fake/fake_job.go +++ b/kubernetes/typed/batch/v2alpha1/fake/fake_job.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v2alpha1 "k8s.io/client-go/pkg/apis/batch/v2alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeJobs struct { ns string } -var jobsResource = unversioned.GroupVersionResource{Group: "batch", Version: "v2alpha1", Resource: "jobs"} +var jobsResource = schema.GroupVersionResource{Group: "batch", Version: "v2alpha1", Resource: "jobs"} func (c *FakeJobs) Create(job *v2alpha1.Job) (result *v2alpha1.Job, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/certificates/v1alpha1/certificates_client.go b/kubernetes/typed/certificates/v1alpha1/certificates_client.go index b7fcc700..b060d7dd 100644 --- a/kubernetes/typed/certificates/v1alpha1/certificates_client.go +++ b/kubernetes/typed/certificates/v1alpha1/certificates_client.go @@ -19,8 +19,8 @@ package v1alpha1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *CertificatesV1alpha1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("certificates.k8s.io/v1alpha1") + gv, err := schema.ParseGroupVersion("certificates.k8s.io/v1alpha1") if err != nil { return err } diff --git a/kubernetes/typed/certificates/v1alpha1/fake/fake_certificatesigningrequest.go b/kubernetes/typed/certificates/v1alpha1/fake/fake_certificatesigningrequest.go index cea61ffa..f9e1946d 100644 --- a/kubernetes/typed/certificates/v1alpha1/fake/fake_certificatesigningrequest.go +++ b/kubernetes/typed/certificates/v1alpha1/fake/fake_certificatesigningrequest.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1alpha1 "k8s.io/client-go/pkg/apis/certificates/v1alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeCertificateSigningRequests struct { Fake *FakeCertificatesV1alpha1 } -var certificatesigningrequestsResource = unversioned.GroupVersionResource{Group: "certificates.k8s.io", Version: "v1alpha1", Resource: "certificatesigningrequests"} +var certificatesigningrequestsResource = schema.GroupVersionResource{Group: "certificates.k8s.io", Version: "v1alpha1", Resource: "certificatesigningrequests"} func (c *FakeCertificateSigningRequests) Create(certificateSigningRequest *v1alpha1.CertificateSigningRequest) (result *v1alpha1.CertificateSigningRequest, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/core_client.go b/kubernetes/typed/core/v1/core_client.go index 0c9139ad..0e8ffeff 100644 --- a/kubernetes/typed/core/v1/core_client.go +++ b/kubernetes/typed/core/v1/core_client.go @@ -19,8 +19,8 @@ package v1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -143,7 +143,7 @@ func New(c rest.Interface) *CoreV1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("/v1") + gv, err := schema.ParseGroupVersion("/v1") if err != nil { return err } diff --git a/kubernetes/typed/core/v1/fake/fake_componentstatus.go b/kubernetes/typed/core/v1/fake/fake_componentstatus.go index 1e3d2f8f..88ebeea5 100644 --- a/kubernetes/typed/core/v1/fake/fake_componentstatus.go +++ b/kubernetes/typed/core/v1/fake/fake_componentstatus.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -30,7 +30,7 @@ type FakeComponentStatuses struct { Fake *FakeCoreV1 } -var componentstatusesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "componentstatuses"} +var componentstatusesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "componentstatuses"} func (c *FakeComponentStatuses) Create(componentStatus *v1.ComponentStatus) (result *v1.ComponentStatus, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_configmap.go b/kubernetes/typed/core/v1/fake/fake_configmap.go index 1a5aa3e3..2a9f0b65 100644 --- a/kubernetes/typed/core/v1/fake/fake_configmap.go +++ b/kubernetes/typed/core/v1/fake/fake_configmap.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeConfigMaps struct { ns string } -var configmapsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"} +var configmapsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"} func (c *FakeConfigMaps) Create(configMap *v1.ConfigMap) (result *v1.ConfigMap, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_endpoints.go b/kubernetes/typed/core/v1/fake/fake_endpoints.go index 651af78b..0325d305 100644 --- a/kubernetes/typed/core/v1/fake/fake_endpoints.go +++ b/kubernetes/typed/core/v1/fake/fake_endpoints.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeEndpoints struct { ns string } -var endpointsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "endpoints"} +var endpointsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "endpoints"} func (c *FakeEndpoints) Create(endpoints *v1.Endpoints) (result *v1.Endpoints, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_event.go b/kubernetes/typed/core/v1/fake/fake_event.go index c3f4aef3..b8aa5e67 100644 --- a/kubernetes/typed/core/v1/fake/fake_event.go +++ b/kubernetes/typed/core/v1/fake/fake_event.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeEvents struct { ns string } -var eventsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "events"} +var eventsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "events"} func (c *FakeEvents) Create(event *v1.Event) (result *v1.Event, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_limitrange.go b/kubernetes/typed/core/v1/fake/fake_limitrange.go index 48c8c74d..29cdd895 100644 --- a/kubernetes/typed/core/v1/fake/fake_limitrange.go +++ b/kubernetes/typed/core/v1/fake/fake_limitrange.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeLimitRanges struct { ns string } -var limitrangesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "limitranges"} +var limitrangesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "limitranges"} func (c *FakeLimitRanges) Create(limitRange *v1.LimitRange) (result *v1.LimitRange, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_namespace.go b/kubernetes/typed/core/v1/fake/fake_namespace.go index 1b725fd7..7f7ea453 100644 --- a/kubernetes/typed/core/v1/fake/fake_namespace.go +++ b/kubernetes/typed/core/v1/fake/fake_namespace.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -30,7 +30,7 @@ type FakeNamespaces struct { Fake *FakeCoreV1 } -var namespacesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "namespaces"} +var namespacesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "namespaces"} func (c *FakeNamespaces) Create(namespace *v1.Namespace) (result *v1.Namespace, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_node.go b/kubernetes/typed/core/v1/fake/fake_node.go index 4bf8f37e..d4ce95d8 100644 --- a/kubernetes/typed/core/v1/fake/fake_node.go +++ b/kubernetes/typed/core/v1/fake/fake_node.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -30,7 +30,7 @@ type FakeNodes struct { Fake *FakeCoreV1 } -var nodesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "nodes"} +var nodesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "nodes"} func (c *FakeNodes) Create(node *v1.Node) (result *v1.Node, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_persistentvolume.go b/kubernetes/typed/core/v1/fake/fake_persistentvolume.go index c285a986..244287e7 100644 --- a/kubernetes/typed/core/v1/fake/fake_persistentvolume.go +++ b/kubernetes/typed/core/v1/fake/fake_persistentvolume.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -30,7 +30,7 @@ type FakePersistentVolumes struct { Fake *FakeCoreV1 } -var persistentvolumesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumes"} +var persistentvolumesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumes"} func (c *FakePersistentVolumes) Create(persistentVolume *v1.PersistentVolume) (result *v1.PersistentVolume, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go b/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go index 5c5a871e..936f5fdb 100644 --- a/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go +++ b/kubernetes/typed/core/v1/fake/fake_persistentvolumeclaim.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakePersistentVolumeClaims struct { ns string } -var persistentvolumeclaimsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumeclaims"} +var persistentvolumeclaimsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumeclaims"} func (c *FakePersistentVolumeClaims) Create(persistentVolumeClaim *v1.PersistentVolumeClaim) (result *v1.PersistentVolumeClaim, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_pod.go b/kubernetes/typed/core/v1/fake/fake_pod.go index 660abe95..9000def8 100644 --- a/kubernetes/typed/core/v1/fake/fake_pod.go +++ b/kubernetes/typed/core/v1/fake/fake_pod.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakePods struct { ns string } -var podsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"} +var podsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "pods"} func (c *FakePods) Create(pod *v1.Pod) (result *v1.Pod, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_podtemplate.go b/kubernetes/typed/core/v1/fake/fake_podtemplate.go index fed33ba7..2f8a9446 100644 --- a/kubernetes/typed/core/v1/fake/fake_podtemplate.go +++ b/kubernetes/typed/core/v1/fake/fake_podtemplate.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakePodTemplates struct { ns string } -var podtemplatesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "podtemplates"} +var podtemplatesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "podtemplates"} func (c *FakePodTemplates) Create(podTemplate *v1.PodTemplate) (result *v1.PodTemplate, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go b/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go index 8aace518..0789a0c1 100644 --- a/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go +++ b/kubernetes/typed/core/v1/fake/fake_replicationcontroller.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeReplicationControllers struct { ns string } -var replicationcontrollersResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "replicationcontrollers"} +var replicationcontrollersResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "replicationcontrollers"} func (c *FakeReplicationControllers) Create(replicationController *v1.ReplicationController) (result *v1.ReplicationController, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_resourcequota.go b/kubernetes/typed/core/v1/fake/fake_resourcequota.go index c842cb78..47975180 100644 --- a/kubernetes/typed/core/v1/fake/fake_resourcequota.go +++ b/kubernetes/typed/core/v1/fake/fake_resourcequota.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeResourceQuotas struct { ns string } -var resourcequotasResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "resourcequotas"} +var resourcequotasResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "resourcequotas"} func (c *FakeResourceQuotas) Create(resourceQuota *v1.ResourceQuota) (result *v1.ResourceQuota, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_secret.go b/kubernetes/typed/core/v1/fake/fake_secret.go index 78e3d96f..cedc6dcd 100644 --- a/kubernetes/typed/core/v1/fake/fake_secret.go +++ b/kubernetes/typed/core/v1/fake/fake_secret.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeSecrets struct { ns string } -var secretsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"} +var secretsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"} func (c *FakeSecrets) Create(secret *v1.Secret) (result *v1.Secret, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_service.go b/kubernetes/typed/core/v1/fake/fake_service.go index d8d99854..83d7a219 100644 --- a/kubernetes/typed/core/v1/fake/fake_service.go +++ b/kubernetes/typed/core/v1/fake/fake_service.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeServices struct { ns string } -var servicesResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "services"} +var servicesResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "services"} func (c *FakeServices) Create(service *v1.Service) (result *v1.Service, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/core/v1/fake/fake_serviceaccount.go b/kubernetes/typed/core/v1/fake/fake_serviceaccount.go index 9d4c5aed..8c743070 100644 --- a/kubernetes/typed/core/v1/fake/fake_serviceaccount.go +++ b/kubernetes/typed/core/v1/fake/fake_serviceaccount.go @@ -18,9 +18,9 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeServiceAccounts struct { ns string } -var serviceaccountsResource = unversioned.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"} +var serviceaccountsResource = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"} func (c *FakeServiceAccounts) Create(serviceAccount *v1.ServiceAccount) (result *v1.ServiceAccount, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/extensions_client.go b/kubernetes/typed/extensions/v1beta1/extensions_client.go index 6b90d4b7..0f3e79ce 100644 --- a/kubernetes/typed/extensions/v1beta1/extensions_client.go +++ b/kubernetes/typed/extensions/v1beta1/extensions_client.go @@ -19,8 +19,8 @@ package v1beta1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -103,7 +103,7 @@ func New(c rest.Interface) *ExtensionsV1beta1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("extensions/v1beta1") + gv, err := schema.ParseGroupVersion("extensions/v1beta1") if err != nil { return err } diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go b/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go index 575f9540..01bd7857 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_daemonset.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeDaemonSets struct { ns string } -var daemonsetsResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "daemonsets"} +var daemonsetsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "daemonsets"} func (c *FakeDaemonSets) Create(daemonSet *v1beta1.DaemonSet) (result *v1beta1.DaemonSet, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go b/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go index 9dcdcae3..a53b6861 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_deployment.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeDeployments struct { ns string } -var deploymentsResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"} +var deploymentsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "deployments"} func (c *FakeDeployments) Create(deployment *v1beta1.Deployment) (result *v1beta1.Deployment, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go b/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go index 81762511..c9211bf5 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_ingress.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeIngresses struct { ns string } -var ingressesResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "ingresses"} +var ingressesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "ingresses"} func (c *FakeIngresses) Create(ingress *v1beta1.Ingress) (result *v1beta1.Ingress, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_job.go b/kubernetes/typed/extensions/v1beta1/fake/fake_job.go index c790c2db..317d312f 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_job.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_job.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeJobs struct { ns string } -var jobsResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "jobs"} +var jobsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "jobs"} func (c *FakeJobs) Create(job *v1beta1.Job) (result *v1beta1.Job, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go b/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go index cc6285a7..8593eaf9 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_podsecuritypolicy.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakePodSecurityPolicies struct { Fake *FakeExtensionsV1beta1 } -var podsecuritypoliciesResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "podsecuritypolicies"} +var podsecuritypoliciesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "podsecuritypolicies"} func (c *FakePodSecurityPolicies) Create(podSecurityPolicy *v1beta1.PodSecurityPolicy) (result *v1beta1.PodSecurityPolicy, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go b/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go index c10b1a6a..10991241 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_replicaset.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeReplicaSets struct { ns string } -var replicasetsResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "replicasets"} +var replicasetsResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "replicasets"} func (c *FakeReplicaSets) Create(replicaSet *v1beta1.ReplicaSet) (result *v1beta1.ReplicaSet, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go b/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go index 88f71d8c..70e1555a 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_scale_expansion.go @@ -17,8 +17,8 @@ limitations under the License. package fake import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/testing" ) @@ -26,7 +26,7 @@ func (c *FakeScales) Get(kind string, name string) (result *v1beta1.Scale, err e action := testing.GetActionImpl{} action.Verb = "get" action.Namespace = c.ns - action.Resource = unversioned.GroupVersionResource{Resource: kind} + action.Resource = schema.GroupVersionResource{Resource: kind} action.Subresource = "scale" action.Name = name obj, err := c.Fake.Invokes(action, &v1beta1.Scale{}) @@ -38,7 +38,7 @@ func (c *FakeScales) Update(kind string, scale *v1beta1.Scale) (result *v1beta1. action := testing.UpdateActionImpl{} action.Verb = "update" action.Namespace = c.ns - action.Resource = unversioned.GroupVersionResource{Resource: kind} + action.Resource = schema.GroupVersionResource{Resource: kind} action.Subresource = "scale" action.Object = scale obj, err := c.Fake.Invokes(action, scale) diff --git a/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go b/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go index 8df10a17..fc5b4f7d 100644 --- a/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go +++ b/kubernetes/typed/extensions/v1beta1/fake/fake_thirdpartyresource.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/extensions/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeThirdPartyResources struct { Fake *FakeExtensionsV1beta1 } -var thirdpartyresourcesResource = unversioned.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "thirdpartyresources"} +var thirdpartyresourcesResource = schema.GroupVersionResource{Group: "extensions", Version: "v1beta1", Resource: "thirdpartyresources"} func (c *FakeThirdPartyResources) Create(thirdPartyResource *v1beta1.ThirdPartyResource) (result *v1beta1.ThirdPartyResource, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/extensions/v1beta1/scale_expansion.go b/kubernetes/typed/extensions/v1beta1/scale_expansion.go index 08421dc4..07d95e5a 100644 --- a/kubernetes/typed/extensions/v1beta1/scale_expansion.go +++ b/kubernetes/typed/extensions/v1beta1/scale_expansion.go @@ -18,8 +18,8 @@ package v1beta1 import ( "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apis/extensions/v1beta1" + "k8s.io/client-go/pkg/runtime/schema" ) // The ScaleExpansion interface allows manually adding extra methods to the ScaleInterface. @@ -33,7 +33,7 @@ func (c *scales) Get(kind string, name string) (result *v1beta1.Scale, err error result = &v1beta1.Scale{} // TODO this method needs to take a proper unambiguous kind - fullyQualifiedKind := unversioned.GroupVersionKind{Kind: kind} + fullyQualifiedKind := schema.GroupVersionKind{Kind: kind} resource, _ := meta.KindToResource(fullyQualifiedKind) err = c.client.Get(). @@ -50,7 +50,7 @@ func (c *scales) Update(kind string, scale *v1beta1.Scale) (result *v1beta1.Scal result = &v1beta1.Scale{} // TODO this method needs to take a proper unambiguous kind - fullyQualifiedKind := unversioned.GroupVersionKind{Kind: kind} + fullyQualifiedKind := schema.GroupVersionKind{Kind: kind} resource, _ := meta.KindToResource(fullyQualifiedKind) err = c.client.Put(). diff --git a/kubernetes/typed/policy/v1alpha1/fake/fake_poddisruptionbudget.go b/kubernetes/typed/policy/v1alpha1/fake/fake_poddisruptionbudget.go index 8f1efecb..1c26b816 100644 --- a/kubernetes/typed/policy/v1alpha1/fake/fake_poddisruptionbudget.go +++ b/kubernetes/typed/policy/v1alpha1/fake/fake_poddisruptionbudget.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1alpha1 "k8s.io/client-go/pkg/apis/policy/v1alpha1" labels "k8s.io/client-go/pkg/labels" + "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakePodDisruptionBudgets struct { ns string } -var poddisruptionbudgetsResource = unversioned.GroupVersionResource{Group: "policy", Version: "v1alpha1", Resource: "poddisruptionbudgets"} +var poddisruptionbudgetsResource = schema.GroupVersionResource{Group: "policy", Version: "v1alpha1", Resource: "poddisruptionbudgets"} func (c *FakePodDisruptionBudgets) Create(podDisruptionBudget *v1alpha1.PodDisruptionBudget) (result *v1alpha1.PodDisruptionBudget, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/policy/v1alpha1/policy_client.go b/kubernetes/typed/policy/v1alpha1/policy_client.go index 4f1b535d..c4394e38 100644 --- a/kubernetes/typed/policy/v1alpha1/policy_client.go +++ b/kubernetes/typed/policy/v1alpha1/policy_client.go @@ -18,9 +18,10 @@ package v1alpha1 import ( fmt "fmt" + api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +69,7 @@ func New(c rest.Interface) *PolicyV1alpha1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("policy/v1alpha1") + gv, err := schema.ParseGroupVersion("policy/v1alpha1") if err != nil { return err } diff --git a/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go b/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go index 5a62e5a9..03d599c3 100644 --- a/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go +++ b/kubernetes/typed/policy/v1beta1/fake/fake_poddisruptionbudget.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/policy/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakePodDisruptionBudgets struct { ns string } -var poddisruptionbudgetsResource = unversioned.GroupVersionResource{Group: "policy", Version: "v1beta1", Resource: "poddisruptionbudgets"} +var poddisruptionbudgetsResource = schema.GroupVersionResource{Group: "policy", Version: "v1beta1", Resource: "poddisruptionbudgets"} func (c *FakePodDisruptionBudgets) Create(podDisruptionBudget *v1beta1.PodDisruptionBudget) (result *v1beta1.PodDisruptionBudget, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/policy/v1beta1/policy_client.go b/kubernetes/typed/policy/v1beta1/policy_client.go index a2605d47..c21419c0 100644 --- a/kubernetes/typed/policy/v1beta1/policy_client.go +++ b/kubernetes/typed/policy/v1beta1/policy_client.go @@ -19,8 +19,8 @@ package v1beta1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *PolicyV1beta1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("policy/v1beta1") + gv, err := schema.ParseGroupVersion("policy/v1beta1") if err != nil { return err } diff --git a/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go b/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go index 4c6cb705..44795f4f 100644 --- a/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go +++ b/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrole.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeClusterRoles struct { Fake *FakeRbacV1alpha1 } -var clusterrolesResource = unversioned.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterroles"} +var clusterrolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterroles"} func (c *FakeClusterRoles) Create(clusterRole *v1alpha1.ClusterRole) (result *v1alpha1.ClusterRole, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go b/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go index 58f695bf..603a3b45 100644 --- a/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go +++ b/kubernetes/typed/rbac/v1alpha1/fake/fake_clusterrolebinding.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeClusterRoleBindings struct { Fake *FakeRbacV1alpha1 } -var clusterrolebindingsResource = unversioned.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterrolebindings"} +var clusterrolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "clusterrolebindings"} func (c *FakeClusterRoleBindings) Create(clusterRoleBinding *v1alpha1.ClusterRoleBinding) (result *v1alpha1.ClusterRoleBinding, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go b/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go index 70ffadc4..c668da33 100644 --- a/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go +++ b/kubernetes/typed/rbac/v1alpha1/fake/fake_role.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeRoles struct { ns string } -var rolesResource = unversioned.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "roles"} +var rolesResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "roles"} func (c *FakeRoles) Create(role *v1alpha1.Role) (result *v1alpha1.Role, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go b/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go index b2d4e7b2..4da08dde 100644 --- a/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go +++ b/kubernetes/typed/rbac/v1alpha1/fake/fake_rolebinding.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1alpha1 "k8s.io/client-go/pkg/apis/rbac/v1alpha1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -32,7 +32,7 @@ type FakeRoleBindings struct { ns string } -var rolebindingsResource = unversioned.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "rolebindings"} +var rolebindingsResource = schema.GroupVersionResource{Group: "rbac.authorization.k8s.io", Version: "v1alpha1", Resource: "rolebindings"} func (c *FakeRoleBindings) Create(roleBinding *v1alpha1.RoleBinding) (result *v1alpha1.RoleBinding, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/rbac/v1alpha1/rbac_client.go b/kubernetes/typed/rbac/v1alpha1/rbac_client.go index 7dbb9f2d..d3d49773 100644 --- a/kubernetes/typed/rbac/v1alpha1/rbac_client.go +++ b/kubernetes/typed/rbac/v1alpha1/rbac_client.go @@ -19,8 +19,8 @@ package v1alpha1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -83,7 +83,7 @@ func New(c rest.Interface) *RbacV1alpha1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("rbac.authorization.k8s.io/v1alpha1") + gv, err := schema.ParseGroupVersion("rbac.authorization.k8s.io/v1alpha1") if err != nil { return err } diff --git a/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go b/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go index e233a1d1..5d839a4b 100644 --- a/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go +++ b/kubernetes/typed/storage/v1beta1/fake/fake_storageclass.go @@ -18,10 +18,10 @@ package fake import ( api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" v1 "k8s.io/client-go/pkg/api/v1" v1beta1 "k8s.io/client-go/pkg/apis/storage/v1beta1" labels "k8s.io/client-go/pkg/labels" + schema "k8s.io/client-go/pkg/runtime/schema" watch "k8s.io/client-go/pkg/watch" testing "k8s.io/client-go/testing" ) @@ -31,7 +31,7 @@ type FakeStorageClasses struct { Fake *FakeStorageV1beta1 } -var storageclassesResource = unversioned.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "storageclasses"} +var storageclassesResource = schema.GroupVersionResource{Group: "storage.k8s.io", Version: "v1beta1", Resource: "storageclasses"} func (c *FakeStorageClasses) Create(storageClass *v1beta1.StorageClass) (result *v1beta1.StorageClass, err error) { obj, err := c.Fake. diff --git a/kubernetes/typed/storage/v1beta1/storage_client.go b/kubernetes/typed/storage/v1beta1/storage_client.go index b7eb26fd..b57eaa3a 100644 --- a/kubernetes/typed/storage/v1beta1/storage_client.go +++ b/kubernetes/typed/storage/v1beta1/storage_client.go @@ -19,8 +19,8 @@ package v1beta1 import ( fmt "fmt" api "k8s.io/client-go/pkg/api" - unversioned "k8s.io/client-go/pkg/api/unversioned" registered "k8s.io/client-go/pkg/apimachinery/registered" + schema "k8s.io/client-go/pkg/runtime/schema" serializer "k8s.io/client-go/pkg/runtime/serializer" rest "k8s.io/client-go/rest" ) @@ -68,7 +68,7 @@ func New(c rest.Interface) *StorageV1beta1Client { } func setConfigDefaults(config *rest.Config) error { - gv, err := unversioned.ParseGroupVersion("storage.k8s.io/v1beta1") + gv, err := schema.ParseGroupVersion("storage.k8s.io/v1beta1") if err != nil { return err } diff --git a/pkg/api/errors/errors.go b/pkg/api/errors/errors.go index 93dd52a2..9d3ba62a 100644 --- a/pkg/api/errors/errors.go +++ b/pkg/api/errors/errors.go @@ -24,6 +24,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/validation/field" ) @@ -91,7 +92,7 @@ func FromObject(obj runtime.Object) error { } // NewNotFound returns a new error which indicates that the resource of the kind and the name was not found. -func NewNotFound(qualifiedResource unversioned.GroupResource, name string) *StatusError { +func NewNotFound(qualifiedResource schema.GroupResource, name string) *StatusError { return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, Code: http.StatusNotFound, @@ -106,7 +107,7 @@ func NewNotFound(qualifiedResource unversioned.GroupResource, name string) *Stat } // NewAlreadyExists returns an error indicating the item requested exists by that identifier. -func NewAlreadyExists(qualifiedResource unversioned.GroupResource, name string) *StatusError { +func NewAlreadyExists(qualifiedResource schema.GroupResource, name string) *StatusError { return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, Code: http.StatusConflict, @@ -136,7 +137,7 @@ func NewUnauthorized(reason string) *StatusError { } // NewForbidden returns an error indicating the requested action was forbidden -func NewForbidden(qualifiedResource unversioned.GroupResource, name string, err error) *StatusError { +func NewForbidden(qualifiedResource schema.GroupResource, name string, err error) *StatusError { return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, Code: http.StatusForbidden, @@ -151,7 +152,7 @@ func NewForbidden(qualifiedResource unversioned.GroupResource, name string, err } // NewConflict returns an error indicating the item can't be updated as provided. -func NewConflict(qualifiedResource unversioned.GroupResource, name string, err error) *StatusError { +func NewConflict(qualifiedResource schema.GroupResource, name string, err error) *StatusError { return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, Code: http.StatusConflict, @@ -176,7 +177,7 @@ func NewGone(message string) *StatusError { } // NewInvalid returns an error indicating the item is invalid and cannot be processed. -func NewInvalid(qualifiedKind unversioned.GroupKind, name string, errs field.ErrorList) *StatusError { +func NewInvalid(qualifiedKind schema.GroupKind, name string, errs field.ErrorList) *StatusError { causes := make([]unversioned.StatusCause, 0, len(errs)) for i := range errs { err := errs[i] @@ -221,7 +222,7 @@ func NewServiceUnavailable(reason string) *StatusError { } // NewMethodNotSupported returns an error indicating the requested action is not supported on this kind. -func NewMethodNotSupported(qualifiedResource unversioned.GroupResource, action string) *StatusError { +func NewMethodNotSupported(qualifiedResource schema.GroupResource, action string) *StatusError { return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, Code: http.StatusMethodNotAllowed, @@ -236,7 +237,7 @@ func NewMethodNotSupported(qualifiedResource unversioned.GroupResource, action s // NewServerTimeout returns an error indicating the requested action could not be completed due to a // transient error, and the client should try again. -func NewServerTimeout(qualifiedResource unversioned.GroupResource, operation string, retryAfterSeconds int) *StatusError { +func NewServerTimeout(qualifiedResource schema.GroupResource, operation string, retryAfterSeconds int) *StatusError { return &StatusError{unversioned.Status{ Status: unversioned.StatusFailure, Code: http.StatusInternalServerError, @@ -253,8 +254,8 @@ func NewServerTimeout(qualifiedResource unversioned.GroupResource, operation str // NewServerTimeoutForKind should not exist. Server timeouts happen when accessing resources, the Kind is just what we // happened to be looking at when the request failed. This delegates to keep code sane, but we should work towards removing this. -func NewServerTimeoutForKind(qualifiedKind unversioned.GroupKind, operation string, retryAfterSeconds int) *StatusError { - return NewServerTimeout(unversioned.GroupResource{Group: qualifiedKind.Group, Resource: qualifiedKind.Kind}, operation, retryAfterSeconds) +func NewServerTimeoutForKind(qualifiedKind schema.GroupKind, operation string, retryAfterSeconds int) *StatusError { + return NewServerTimeout(schema.GroupResource{Group: qualifiedKind.Group, Resource: qualifiedKind.Kind}, operation, retryAfterSeconds) } // NewInternalError returns an error indicating the item is invalid and cannot be processed. @@ -285,7 +286,7 @@ func NewTimeoutError(message string, retryAfterSeconds int) *StatusError { } // NewGenericServerResponse returns a new error for server responses that are not in a recognizable form. -func NewGenericServerResponse(code int, verb string, qualifiedResource unversioned.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError { +func NewGenericServerResponse(code int, verb string, qualifiedResource schema.GroupResource, name, serverMessage string, retryAfterSeconds int, isUnexpectedResponse bool) *StatusError { reason := unversioned.StatusReasonUnknown message := fmt.Sprintf("the server responded with the status code %d but did not return more information", code) switch code { diff --git a/pkg/api/install/install.go b/pkg/api/install/install.go index e41dd637..14041868 100644 --- a/pkg/api/install/install.go +++ b/pkg/api/install/install.go @@ -25,11 +25,11 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/apimachinery" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/sets" ) @@ -38,11 +38,11 @@ const importPrefix = "k8s.io/client-go/pkg/api" var accessor = meta.NewAccessor() // availableVersions lists all known external versions for this group from most preferred to least preferred -var availableVersions = []unversioned.GroupVersion{v1.SchemeGroupVersion} +var availableVersions = []schema.GroupVersion{v1.SchemeGroupVersion} func init() { registered.RegisterVersions(availableVersions) - externalVersions := []unversioned.GroupVersion{} + externalVersions := []schema.GroupVersion{} for _, v := range availableVersions { if registered.IsAllowedVersion(v) { externalVersions = append(externalVersions, v) @@ -67,7 +67,7 @@ func init() { // group. // We can combine registered.RegisterVersions, registered.EnableVersions and // registered.RegisterGroup once we have moved enableVersions there. -func enableVersions(externalVersions []unversioned.GroupVersion) error { +func enableVersions(externalVersions []schema.GroupVersion) error { addVersionsToScheme(externalVersions...) preferredExternalVersion := externalVersions[0] @@ -85,7 +85,7 @@ func enableVersions(externalVersions []unversioned.GroupVersion) error { return nil } -func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper { +func newRESTMapper(externalVersions []schema.GroupVersion) meta.RESTMapper { // the list of kinds that are scoped at the root of the api hierarchy // if a kind is not enumerated here, it is assumed to have a namespace scope rootScoped := sets.NewString( @@ -117,7 +117,7 @@ func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper // InterfacesFor returns the default Codec and ResourceVersioner for a given version // string, or an error if the version is not known. -func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { +func interfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { switch version { case v1.SchemeGroupVersion: return &meta.VersionInterfaces{ @@ -130,7 +130,7 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e } } -func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) { +func addVersionsToScheme(externalVersions ...schema.GroupVersion) { // add the internal version to Scheme if err := api.AddToScheme(api.Scheme); err != nil { // Programmer error, detect immediately diff --git a/pkg/api/mapper.go b/pkg/api/mapper.go index db72bdfb..03cc08fe 100644 --- a/pkg/api/mapper.go +++ b/pkg/api/mapper.go @@ -20,19 +20,19 @@ import ( "strings" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/sets" ) // Instantiates a DefaultRESTMapper based on types registered in api.Scheme -func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc, +func NewDefaultRESTMapper(defaultGroupVersions []schema.GroupVersion, interfacesFunc meta.VersionInterfacesFunc, importPathPrefix string, ignoredKinds, rootScoped sets.String) *meta.DefaultRESTMapper { return NewDefaultRESTMapperFromScheme(defaultGroupVersions, interfacesFunc, importPathPrefix, ignoredKinds, rootScoped, Scheme) } // Instantiates a DefaultRESTMapper based on types registered in the given scheme. -func NewDefaultRESTMapperFromScheme(defaultGroupVersions []unversioned.GroupVersion, interfacesFunc meta.VersionInterfacesFunc, +func NewDefaultRESTMapperFromScheme(defaultGroupVersions []schema.GroupVersion, interfacesFunc meta.VersionInterfacesFunc, importPathPrefix string, ignoredKinds, rootScoped sets.String, scheme *runtime.Scheme) *meta.DefaultRESTMapper { mapper := meta.NewDefaultRESTMapper(defaultGroupVersions, interfacesFunc) diff --git a/pkg/api/meta/errors.go b/pkg/api/meta/errors.go index 9de77d60..942e5ef3 100644 --- a/pkg/api/meta/errors.go +++ b/pkg/api/meta/errors.go @@ -19,15 +19,15 @@ package meta import ( "fmt" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) // AmbiguousResourceError is returned if the RESTMapper finds multiple matches for a resource type AmbiguousResourceError struct { - PartialResource unversioned.GroupVersionResource + PartialResource schema.GroupVersionResource - MatchingResources []unversioned.GroupVersionResource - MatchingKinds []unversioned.GroupVersionKind + MatchingResources []schema.GroupVersionResource + MatchingKinds []schema.GroupVersionKind } func (e *AmbiguousResourceError) Error() string { @@ -44,10 +44,10 @@ func (e *AmbiguousResourceError) Error() string { // AmbiguousKindError is returned if the RESTMapper finds multiple matches for a kind type AmbiguousKindError struct { - PartialKind unversioned.GroupVersionKind + PartialKind schema.GroupVersionKind - MatchingResources []unversioned.GroupVersionResource - MatchingKinds []unversioned.GroupVersionKind + MatchingResources []schema.GroupVersionResource + MatchingKinds []schema.GroupVersionKind } func (e *AmbiguousKindError) Error() string { @@ -76,7 +76,7 @@ func IsAmbiguousError(err error) bool { // NoResourceMatchError is returned if the RESTMapper can't find any match for a resource type NoResourceMatchError struct { - PartialResource unversioned.GroupVersionResource + PartialResource schema.GroupVersionResource } func (e *NoResourceMatchError) Error() string { @@ -85,7 +85,7 @@ func (e *NoResourceMatchError) Error() string { // NoKindMatchError is returned if the RESTMapper can't find any match for a kind type NoKindMatchError struct { - PartialKind unversioned.GroupVersionKind + PartialKind schema.GroupVersionKind } func (e *NoKindMatchError) Error() string { diff --git a/pkg/api/meta/firsthit_restmapper.go b/pkg/api/meta/firsthit_restmapper.go index 3c576dbe..8d465313 100644 --- a/pkg/api/meta/firsthit_restmapper.go +++ b/pkg/api/meta/firsthit_restmapper.go @@ -19,7 +19,7 @@ package meta import ( "fmt" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" utilerrors "k8s.io/client-go/pkg/util/errors" ) @@ -33,7 +33,7 @@ func (m FirstHitRESTMapper) String() string { return fmt.Sprintf("FirstHitRESTMapper{\n\t%v\n}", m.MultiRESTMapper) } -func (m FirstHitRESTMapper) ResourceFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { +func (m FirstHitRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { errors := []error{} for _, t := range m.MultiRESTMapper { ret, err := t.ResourceFor(resource) @@ -43,10 +43,10 @@ func (m FirstHitRESTMapper) ResourceFor(resource unversioned.GroupVersionResourc errors = append(errors, err) } - return unversioned.GroupVersionResource{}, collapseAggregateErrors(errors) + return schema.GroupVersionResource{}, collapseAggregateErrors(errors) } -func (m FirstHitRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { +func (m FirstHitRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { errors := []error{} for _, t := range m.MultiRESTMapper { ret, err := t.KindFor(resource) @@ -56,13 +56,13 @@ func (m FirstHitRESTMapper) KindFor(resource unversioned.GroupVersionResource) ( errors = append(errors, err) } - return unversioned.GroupVersionKind{}, collapseAggregateErrors(errors) + return schema.GroupVersionKind{}, collapseAggregateErrors(errors) } // RESTMapping provides the REST mapping for the resource based on the // kind and version. This implementation supports multiple REST schemas and // return the first match. -func (m FirstHitRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) { +func (m FirstHitRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) { errors := []error{} for _, t := range m.MultiRESTMapper { ret, err := t.RESTMapping(gk, versions...) diff --git a/pkg/api/meta/interfaces.go b/pkg/api/meta/interfaces.go index 6dd57000..6a8cf679 100644 --- a/pkg/api/meta/interfaces.go +++ b/pkg/api/meta/interfaces.go @@ -20,6 +20,7 @@ import ( "k8s.io/client-go/pkg/api/meta/metatypes" "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/types" ) @@ -143,7 +144,7 @@ type RESTMapping struct { // Resource is a string representing the name of this resource as a REST client would see it Resource string - GroupVersionKind unversioned.GroupVersionKind + GroupVersionKind schema.GroupVersionKind // Scope contains the information needed to deal with REST Resources that are in a resource hierarchy Scope RESTScope @@ -163,21 +164,21 @@ type RESTMapping struct { // TODO: split into sub-interfaces type RESTMapper interface { // KindFor takes a partial resource and returns the single match. Returns an error if there are multiple matches - KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) + KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) // KindsFor takes a partial resource and returns the list of potential kinds in priority order - KindsFor(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) + KindsFor(resource schema.GroupVersionResource) ([]schema.GroupVersionKind, error) // ResourceFor takes a partial resource and returns the single match. Returns an error if there are multiple matches - ResourceFor(input unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) + ResourceFor(input schema.GroupVersionResource) (schema.GroupVersionResource, error) // ResourcesFor takes a partial resource and returns the list of potential resource in priority order - ResourcesFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) + ResourcesFor(input schema.GroupVersionResource) ([]schema.GroupVersionResource, error) // RESTMapping identifies a preferred resource mapping for the provided group kind. - RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) + RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) // RESTMappings returns all resource mappings for the provided group kind. - RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) + RESTMappings(gk schema.GroupKind) ([]*RESTMapping, error) AliasesForResource(resource string) ([]string, bool) ResourceSingularizer(resource string) (singular string, err error) diff --git a/pkg/api/meta/meta.go b/pkg/api/meta/meta.go index 9f11215a..dcfa64fd 100644 --- a/pkg/api/meta/meta.go +++ b/pkg/api/meta/meta.go @@ -24,6 +24,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/conversion" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/types" "github.com/golang/glog" @@ -140,9 +141,9 @@ func (obj objectAccessor) GetAPIVersion() string { func (obj objectAccessor) SetAPIVersion(version string) { gvk := obj.GetObjectKind().GroupVersionKind() - gv, err := unversioned.ParseGroupVersion(version) + gv, err := schema.ParseGroupVersion(version) if err != nil { - gv = unversioned.GroupVersion{Version: version} + gv = schema.GroupVersion{Version: version} } gvk.Group, gvk.Version = gv.Group, gv.Version obj.GetObjectKind().SetGroupVersionKind(gvk) diff --git a/pkg/api/meta/multirestmapper.go b/pkg/api/meta/multirestmapper.go index c8ee8d1d..df472e98 100644 --- a/pkg/api/meta/multirestmapper.go +++ b/pkg/api/meta/multirestmapper.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" utilerrors "k8s.io/client-go/pkg/util/errors" "k8s.io/client-go/pkg/util/sets" ) @@ -51,8 +51,8 @@ func (m MultiRESTMapper) ResourceSingularizer(resource string) (singular string, return } -func (m MultiRESTMapper) ResourcesFor(resource unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { - allGVRs := []unversioned.GroupVersionResource{} +func (m MultiRESTMapper) ResourcesFor(resource schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { + allGVRs := []schema.GroupVersionResource{} for _, t := range m { gvrs, err := t.ResourcesFor(resource) // ignore "no match" errors, but any other error percolates back up @@ -86,8 +86,8 @@ func (m MultiRESTMapper) ResourcesFor(resource unversioned.GroupVersionResource) return allGVRs, nil } -func (m MultiRESTMapper) KindsFor(resource unversioned.GroupVersionResource) (gvk []unversioned.GroupVersionKind, err error) { - allGVKs := []unversioned.GroupVersionKind{} +func (m MultiRESTMapper) KindsFor(resource schema.GroupVersionResource) (gvk []schema.GroupVersionKind, err error) { + allGVKs := []schema.GroupVersionKind{} for _, t := range m { gvks, err := t.KindsFor(resource) // ignore "no match" errors, but any other error percolates back up @@ -121,34 +121,34 @@ func (m MultiRESTMapper) KindsFor(resource unversioned.GroupVersionResource) (gv return allGVKs, nil } -func (m MultiRESTMapper) ResourceFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { +func (m MultiRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { resources, err := m.ResourcesFor(resource) if err != nil { - return unversioned.GroupVersionResource{}, err + return schema.GroupVersionResource{}, err } if len(resources) == 1 { return resources[0], nil } - return unversioned.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} + return schema.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} } -func (m MultiRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { +func (m MultiRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { kinds, err := m.KindsFor(resource) if err != nil { - return unversioned.GroupVersionKind{}, err + return schema.GroupVersionKind{}, err } if len(kinds) == 1 { return kinds[0], nil } - return unversioned.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} + return schema.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} } // RESTMapping provides the REST mapping for the resource based on the // kind and version. This implementation supports multiple REST schemas and // return the first match. -func (m MultiRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) { +func (m MultiRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) { allMappings := []*RESTMapping{} errors := []error{} @@ -171,7 +171,7 @@ func (m MultiRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...strin return allMappings[0], nil } if len(allMappings) > 1 { - var kinds []unversioned.GroupVersionKind + var kinds []schema.GroupVersionKind for _, m := range allMappings { kinds = append(kinds, m.GroupVersionKind) } @@ -185,7 +185,7 @@ func (m MultiRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...strin // RESTMappings returns all possible RESTMappings for the provided group kind, or an error // if the type is not recognized. -func (m MultiRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) { +func (m MultiRESTMapper) RESTMappings(gk schema.GroupKind) ([]*RESTMapping, error) { var allMappings []*RESTMapping var errors []error diff --git a/pkg/api/meta/priority.go b/pkg/api/meta/priority.go index b0ba309c..60038929 100644 --- a/pkg/api/meta/priority.go +++ b/pkg/api/meta/priority.go @@ -19,7 +19,7 @@ package meta import ( "fmt" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) const ( @@ -39,13 +39,13 @@ type PriorityRESTMapper struct { // The list of all matching resources is narrowed based on the patterns until only one remains. // A pattern with no matches is skipped. A pattern with more than one match uses its // matches as the list to continue matching against. - ResourcePriority []unversioned.GroupVersionResource + ResourcePriority []schema.GroupVersionResource // KindPriority is a list of priority patterns to apply to matching kinds. // The list of all matching kinds is narrowed based on the patterns until only one remains. // A pattern with no matches is skipped. A pattern with more than one match uses its // matches as the list to continue matching against. - KindPriority []unversioned.GroupVersionKind + KindPriority []schema.GroupVersionKind } func (m PriorityRESTMapper) String() string { @@ -53,18 +53,18 @@ func (m PriorityRESTMapper) String() string { } // ResourceFor finds all resources, then passes them through the ResourcePriority patterns to find a single matching hit. -func (m PriorityRESTMapper) ResourceFor(partiallySpecifiedResource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { +func (m PriorityRESTMapper) ResourceFor(partiallySpecifiedResource schema.GroupVersionResource) (schema.GroupVersionResource, error) { originalGVRs, err := m.Delegate.ResourcesFor(partiallySpecifiedResource) if err != nil { - return unversioned.GroupVersionResource{}, err + return schema.GroupVersionResource{}, err } if len(originalGVRs) == 1 { return originalGVRs[0], nil } - remainingGVRs := append([]unversioned.GroupVersionResource{}, originalGVRs...) + remainingGVRs := append([]schema.GroupVersionResource{}, originalGVRs...) for _, pattern := range m.ResourcePriority { - matchedGVRs := []unversioned.GroupVersionResource{} + matchedGVRs := []schema.GroupVersionResource{} for _, gvr := range remainingGVRs { if resourceMatches(pattern, gvr) { matchedGVRs = append(matchedGVRs, gvr) @@ -85,22 +85,22 @@ func (m PriorityRESTMapper) ResourceFor(partiallySpecifiedResource unversioned.G } } - return unversioned.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingResources: originalGVRs} + return schema.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingResources: originalGVRs} } // KindFor finds all kinds, then passes them through the KindPriority patterns to find a single matching hit. -func (m PriorityRESTMapper) KindFor(partiallySpecifiedResource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { +func (m PriorityRESTMapper) KindFor(partiallySpecifiedResource schema.GroupVersionResource) (schema.GroupVersionKind, error) { originalGVKs, err := m.Delegate.KindsFor(partiallySpecifiedResource) if err != nil { - return unversioned.GroupVersionKind{}, err + return schema.GroupVersionKind{}, err } if len(originalGVKs) == 1 { return originalGVKs[0], nil } - remainingGVKs := append([]unversioned.GroupVersionKind{}, originalGVKs...) + remainingGVKs := append([]schema.GroupVersionKind{}, originalGVKs...) for _, pattern := range m.KindPriority { - matchedGVKs := []unversioned.GroupVersionKind{} + matchedGVKs := []schema.GroupVersionKind{} for _, gvr := range remainingGVKs { if kindMatches(pattern, gvr) { matchedGVKs = append(matchedGVKs, gvr) @@ -121,10 +121,10 @@ func (m PriorityRESTMapper) KindFor(partiallySpecifiedResource unversioned.Group } } - return unversioned.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingKinds: originalGVKs} + return schema.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: partiallySpecifiedResource, MatchingKinds: originalGVKs} } -func resourceMatches(pattern unversioned.GroupVersionResource, resource unversioned.GroupVersionResource) bool { +func resourceMatches(pattern schema.GroupVersionResource, resource schema.GroupVersionResource) bool { if pattern.Group != AnyGroup && pattern.Group != resource.Group { return false } @@ -138,7 +138,7 @@ func resourceMatches(pattern unversioned.GroupVersionResource, resource unversio return true } -func kindMatches(pattern unversioned.GroupVersionKind, kind unversioned.GroupVersionKind) bool { +func kindMatches(pattern schema.GroupVersionKind, kind schema.GroupVersionKind) bool { if pattern.Group != AnyGroup && pattern.Group != kind.Group { return false } @@ -152,7 +152,7 @@ func kindMatches(pattern unversioned.GroupVersionKind, kind unversioned.GroupVer return true } -func (m PriorityRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (mapping *RESTMapping, err error) { +func (m PriorityRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (mapping *RESTMapping, err error) { mappings, err := m.Delegate.RESTMappings(gk) if err != nil { return nil, err @@ -161,9 +161,9 @@ func (m PriorityRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...st // any versions the user provides take priority priorities := m.KindPriority if len(versions) > 0 { - priorities = make([]unversioned.GroupVersionKind, 0, len(m.KindPriority)+len(versions)) + priorities = make([]schema.GroupVersionKind, 0, len(m.KindPriority)+len(versions)) for _, version := range versions { - gv, err := unversioned.ParseGroupVersion(version) + gv, err := schema.ParseGroupVersion(version) if err != nil { return nil, err } @@ -198,14 +198,14 @@ func (m PriorityRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...st return remaining[0], nil } - var kinds []unversioned.GroupVersionKind + var kinds []schema.GroupVersionKind for _, m := range mappings { kinds = append(kinds, m.GroupVersionKind) } return nil, &AmbiguousKindError{PartialKind: gk.WithVersion(""), MatchingKinds: kinds} } -func (m PriorityRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) { +func (m PriorityRESTMapper) RESTMappings(gk schema.GroupKind) ([]*RESTMapping, error) { return m.Delegate.RESTMappings(gk) } @@ -217,10 +217,10 @@ func (m PriorityRESTMapper) ResourceSingularizer(resource string) (singular stri return m.Delegate.ResourceSingularizer(resource) } -func (m PriorityRESTMapper) ResourcesFor(partiallySpecifiedResource unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { +func (m PriorityRESTMapper) ResourcesFor(partiallySpecifiedResource schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { return m.Delegate.ResourcesFor(partiallySpecifiedResource) } -func (m PriorityRESTMapper) KindsFor(partiallySpecifiedResource unversioned.GroupVersionResource) (gvk []unversioned.GroupVersionKind, err error) { +func (m PriorityRESTMapper) KindsFor(partiallySpecifiedResource schema.GroupVersionResource) (gvk []schema.GroupVersionKind, err error) { return m.Delegate.KindsFor(partiallySpecifiedResource) } diff --git a/pkg/api/meta/restmapper.go b/pkg/api/meta/restmapper.go index 98add7fd..b5304069 100644 --- a/pkg/api/meta/restmapper.go +++ b/pkg/api/meta/restmapper.go @@ -22,8 +22,8 @@ import ( "sort" "strings" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // Implements RESTScope interface @@ -70,13 +70,13 @@ var RESTScopeRoot = &restScope{ // TODO: Only accept plural for some operations for increased control? // (`get pod bar` vs `get pods bar`) type DefaultRESTMapper struct { - defaultGroupVersions []unversioned.GroupVersion + defaultGroupVersions []schema.GroupVersion - resourceToKind map[unversioned.GroupVersionResource]unversioned.GroupVersionKind - kindToPluralResource map[unversioned.GroupVersionKind]unversioned.GroupVersionResource - kindToScope map[unversioned.GroupVersionKind]RESTScope - singularToPlural map[unversioned.GroupVersionResource]unversioned.GroupVersionResource - pluralToSingular map[unversioned.GroupVersionResource]unversioned.GroupVersionResource + resourceToKind map[schema.GroupVersionResource]schema.GroupVersionKind + kindToPluralResource map[schema.GroupVersionKind]schema.GroupVersionResource + kindToScope map[schema.GroupVersionKind]RESTScope + singularToPlural map[schema.GroupVersionResource]schema.GroupVersionResource + pluralToSingular map[schema.GroupVersionResource]schema.GroupVersionResource interfacesFunc VersionInterfacesFunc @@ -92,19 +92,19 @@ var _ RESTMapper = &DefaultRESTMapper{} // VersionInterfacesFunc returns the appropriate typer, and metadata accessor for a // given api version, or an error if no such api version exists. -type VersionInterfacesFunc func(version unversioned.GroupVersion) (*VersionInterfaces, error) +type VersionInterfacesFunc func(version schema.GroupVersion) (*VersionInterfaces, error) // NewDefaultRESTMapper initializes a mapping between Kind and APIVersion // to a resource name and back based on the objects in a runtime.Scheme // and the Kubernetes API conventions. Takes a group name, a priority list of the versions // to search when an object has no default version (set empty to return an error), // and a function that retrieves the correct metadata for a given version. -func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, f VersionInterfacesFunc) *DefaultRESTMapper { - resourceToKind := make(map[unversioned.GroupVersionResource]unversioned.GroupVersionKind) - kindToPluralResource := make(map[unversioned.GroupVersionKind]unversioned.GroupVersionResource) - kindToScope := make(map[unversioned.GroupVersionKind]RESTScope) - singularToPlural := make(map[unversioned.GroupVersionResource]unversioned.GroupVersionResource) - pluralToSingular := make(map[unversioned.GroupVersionResource]unversioned.GroupVersionResource) +func NewDefaultRESTMapper(defaultGroupVersions []schema.GroupVersion, f VersionInterfacesFunc) *DefaultRESTMapper { + resourceToKind := make(map[schema.GroupVersionResource]schema.GroupVersionKind) + kindToPluralResource := make(map[schema.GroupVersionKind]schema.GroupVersionResource) + kindToScope := make(map[schema.GroupVersionKind]RESTScope) + singularToPlural := make(map[schema.GroupVersionResource]schema.GroupVersionResource) + pluralToSingular := make(map[schema.GroupVersionResource]schema.GroupVersionResource) aliasToResource := make(map[string][]string) // TODO: verify name mappings work correctly when versions differ @@ -120,7 +120,7 @@ func NewDefaultRESTMapper(defaultGroupVersions []unversioned.GroupVersion, f Ver } } -func (m *DefaultRESTMapper) Add(kind unversioned.GroupVersionKind, scope RESTScope) { +func (m *DefaultRESTMapper) Add(kind schema.GroupVersionKind, scope RESTScope) { plural, singular := KindToResource(kind) m.singularToPlural[singular] = plural @@ -144,10 +144,10 @@ var unpluralizedSuffixes = []string{ // KindToResource converts Kind to a resource name. // Broken. This method only "sort of" works when used outside of this package. It assumes that Kinds and Resources match // and they aren't guaranteed to do so. -func KindToResource(kind unversioned.GroupVersionKind) ( /*plural*/ unversioned.GroupVersionResource /*singular*/, unversioned.GroupVersionResource) { +func KindToResource(kind schema.GroupVersionKind) ( /*plural*/ schema.GroupVersionResource /*singular*/, schema.GroupVersionResource) { kindName := kind.Kind if len(kindName) == 0 { - return unversioned.GroupVersionResource{}, unversioned.GroupVersionResource{} + return schema.GroupVersionResource{}, schema.GroupVersionResource{} } singularName := strings.ToLower(kindName) singular := kind.GroupVersion().WithResource(singularName) @@ -171,13 +171,13 @@ func KindToResource(kind unversioned.GroupVersionKind) ( /*plural*/ unversioned. // ResourceSingularizer implements RESTMapper // It converts a resource name from plural to singular (e.g., from pods to pod) func (m *DefaultRESTMapper) ResourceSingularizer(resourceType string) (string, error) { - partialResource := unversioned.GroupVersionResource{Resource: resourceType} + partialResource := schema.GroupVersionResource{Resource: resourceType} resources, err := m.ResourcesFor(partialResource) if err != nil { return resourceType, err } - singular := unversioned.GroupVersionResource{} + singular := schema.GroupVersionResource{} for _, curr := range resources { currSingular, ok := m.pluralToSingular[curr] if !ok { @@ -201,7 +201,7 @@ func (m *DefaultRESTMapper) ResourceSingularizer(resourceType string) (string, e } // coerceResourceForMatching makes the resource lower case and converts internal versions to unspecified (legacy behavior) -func coerceResourceForMatching(resource unversioned.GroupVersionResource) unversioned.GroupVersionResource { +func coerceResourceForMatching(resource schema.GroupVersionResource) schema.GroupVersionResource { resource.Resource = strings.ToLower(resource.Resource) if resource.Version == runtime.APIVersionInternal { resource.Version = "" @@ -210,7 +210,7 @@ func coerceResourceForMatching(resource unversioned.GroupVersionResource) unvers return resource } -func (m *DefaultRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionResource, error) { +func (m *DefaultRESTMapper) ResourcesFor(input schema.GroupVersionResource) ([]schema.GroupVersionResource, error) { resource := coerceResourceForMatching(input) hasResource := len(resource.Resource) > 0 @@ -221,7 +221,7 @@ func (m *DefaultRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) return nil, fmt.Errorf("a resource must be present, got: %v", resource) } - ret := []unversioned.GroupVersionResource{} + ret := []schema.GroupVersionResource{} switch { case hasGroup && hasVersion: // fully qualified. Find the exact match @@ -297,19 +297,19 @@ func (m *DefaultRESTMapper) ResourcesFor(input unversioned.GroupVersionResource) return ret, nil } -func (m *DefaultRESTMapper) ResourceFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionResource, error) { +func (m *DefaultRESTMapper) ResourceFor(resource schema.GroupVersionResource) (schema.GroupVersionResource, error) { resources, err := m.ResourcesFor(resource) if err != nil { - return unversioned.GroupVersionResource{}, err + return schema.GroupVersionResource{}, err } if len(resources) == 1 { return resources[0], nil } - return unversioned.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} + return schema.GroupVersionResource{}, &AmbiguousResourceError{PartialResource: resource, MatchingResources: resources} } -func (m *DefaultRESTMapper) KindsFor(input unversioned.GroupVersionResource) ([]unversioned.GroupVersionKind, error) { +func (m *DefaultRESTMapper) KindsFor(input schema.GroupVersionResource) ([]schema.GroupVersionKind, error) { resource := coerceResourceForMatching(input) hasResource := len(resource.Resource) > 0 @@ -320,7 +320,7 @@ func (m *DefaultRESTMapper) KindsFor(input unversioned.GroupVersionResource) ([] return nil, fmt.Errorf("a resource must be present, got: %v", resource) } - ret := []unversioned.GroupVersionKind{} + ret := []schema.GroupVersionKind{} switch { // fully qualified. Find the exact match case hasGroup && hasVersion: @@ -376,21 +376,21 @@ func (m *DefaultRESTMapper) KindsFor(input unversioned.GroupVersionResource) ([] return ret, nil } -func (m *DefaultRESTMapper) KindFor(resource unversioned.GroupVersionResource) (unversioned.GroupVersionKind, error) { +func (m *DefaultRESTMapper) KindFor(resource schema.GroupVersionResource) (schema.GroupVersionKind, error) { kinds, err := m.KindsFor(resource) if err != nil { - return unversioned.GroupVersionKind{}, err + return schema.GroupVersionKind{}, err } if len(kinds) == 1 { return kinds[0], nil } - return unversioned.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} + return schema.GroupVersionKind{}, &AmbiguousResourceError{PartialResource: resource, MatchingKinds: kinds} } type kindByPreferredGroupVersion struct { - list []unversioned.GroupVersionKind - sortOrder []unversioned.GroupVersion + list []schema.GroupVersionKind + sortOrder []schema.GroupVersion } func (o kindByPreferredGroupVersion) Len() int { return len(o.list) } @@ -427,8 +427,8 @@ func (o kindByPreferredGroupVersion) Less(i, j int) bool { } type resourceByPreferredGroupVersion struct { - list []unversioned.GroupVersionResource - sortOrder []unversioned.GroupVersion + list []schema.GroupVersionResource + sortOrder []schema.GroupVersion } func (o resourceByPreferredGroupVersion) Len() int { return len(o.list) } @@ -469,9 +469,9 @@ func (o resourceByPreferredGroupVersion) Less(i, j int) bool { // order is not provided, the search order provided to DefaultRESTMapper will be used to resolve which // version should be used to access the named group/kind. // TODO: consider refactoring to use RESTMappings in a way that preserves version ordering and preference -func (m *DefaultRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...string) (*RESTMapping, error) { +func (m *DefaultRESTMapper) RESTMapping(gk schema.GroupKind, versions ...string) (*RESTMapping, error) { // Pick an appropriate version - var gvk *unversioned.GroupVersionKind + var gvk *schema.GroupVersionKind hadVersion := false for _, version := range versions { if len(version) == 0 || version == runtime.APIVersionInternal { @@ -506,7 +506,7 @@ func (m *DefaultRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...st // Ensure we have a REST mapping resource, ok := m.kindToPluralResource[*gvk] if !ok { - found := []unversioned.GroupVersion{} + found := []schema.GroupVersion{} for _, gv := range m.defaultGroupVersions { if _, ok := m.kindToPluralResource[*gvk]; ok { found = append(found, gv) @@ -543,7 +543,7 @@ func (m *DefaultRESTMapper) RESTMapping(gk unversioned.GroupKind, versions ...st // RESTMappings returns the RESTMappings for the provided group kind in a rough internal preferred order. If no // kind is found it will return a NoResourceMatchError. -func (m *DefaultRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMapping, error) { +func (m *DefaultRESTMapper) RESTMappings(gk schema.GroupKind) ([]*RESTMapping, error) { // Use the default preferred versions var mappings []*RESTMapping for _, gv := range m.defaultGroupVersions { @@ -579,7 +579,7 @@ func (m *DefaultRESTMapper) RESTMappings(gk unversioned.GroupKind) ([]*RESTMappi } if len(mappings) == 0 { - return nil, &NoResourceMatchError{PartialResource: unversioned.GroupVersionResource{Group: gk.Group, Resource: gk.Kind}} + return nil, &NoResourceMatchError{PartialResource: schema.GroupVersionResource{Group: gk.Group, Resource: gk.Kind}} } return mappings, nil } diff --git a/pkg/api/meta/unstructured.go b/pkg/api/meta/unstructured.go index cb5a4e35..b17ba3b5 100644 --- a/pkg/api/meta/unstructured.go +++ b/pkg/api/meta/unstructured.go @@ -17,13 +17,13 @@ limitations under the License. package meta import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // InterfacesForUnstructured returns VersionInterfaces suitable for // dealing with runtime.Unstructured objects. -func InterfacesForUnstructured(unversioned.GroupVersion) (*VersionInterfaces, error) { +func InterfacesForUnstructured(schema.GroupVersion) (*VersionInterfaces, error) { return &VersionInterfaces{ ObjectConvertor: &runtime.UnstructuredObjectConverter{}, MetadataAccessor: NewAccessor(), diff --git a/pkg/api/ref.go b/pkg/api/ref.go index afa80004..30446fe7 100644 --- a/pkg/api/ref.go +++ b/pkg/api/ref.go @@ -23,8 +23,8 @@ import ( "strings" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) var ( @@ -122,11 +122,11 @@ func GetPartialReference(obj runtime.Object, fieldPath string) (*ObjectReference // IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that // intend only to get a reference to that object. This simplifies the event recording interface. -func (obj *ObjectReference) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (obj *ObjectReference) SetGroupVersionKind(gvk schema.GroupVersionKind) { obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() } -func (obj *ObjectReference) GroupVersionKind() unversioned.GroupVersionKind { - return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +func (obj *ObjectReference) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } -func (obj *ObjectReference) GetObjectKind() unversioned.ObjectKind { return obj } +func (obj *ObjectReference) GetObjectKind() schema.ObjectKind { return obj } diff --git a/pkg/api/register.go b/pkg/api/register.go index d5533b40..08628791 100644 --- a/pkg/api/register.go +++ b/pkg/api/register.go @@ -19,6 +19,7 @@ package api import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer" ) @@ -36,22 +37,22 @@ var Codecs = serializer.NewCodecFactory(Scheme) const GroupName = "" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Unversioned is group version for unversioned API objects // TODO: this should be v1 probably -var Unversioned = unversioned.GroupVersion{Group: "", Version: "v1"} +var Unversioned = schema.GroupVersion{Group: "", Version: "v1"} // ParameterCodec handles versioning of objects that are converted to query parameters. var ParameterCodec = runtime.NewParameterCodec(Scheme) // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/api/testapi/testapi.go b/pkg/api/testapi/testapi.go index b461ae3d..262ea641 100644 --- a/pkg/api/testapi/testapi.go +++ b/pkg/api/testapi/testapi.go @@ -32,7 +32,6 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/apis/apps" "k8s.io/client-go/pkg/apis/authorization" @@ -47,6 +46,7 @@ import ( "k8s.io/client-go/pkg/apis/storage" "k8s.io/client-go/pkg/federation/apis/federation" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/recognizer" _ "k8s.io/client-go/pkg/api/install" @@ -86,8 +86,8 @@ var ( ) type TestGroup struct { - externalGroupVersion unversioned.GroupVersion - internalGroupVersion unversioned.GroupVersion + externalGroupVersion schema.GroupVersion + internalGroupVersion schema.GroupVersion internalTypes map[string]reflect.Type externalTypes map[string]reflect.Type } @@ -123,12 +123,12 @@ func init() { testGroupVersions := strings.Split(kubeTestAPI, ",") for i := len(testGroupVersions) - 1; i >= 0; i-- { gvString := testGroupVersions[i] - groupVersion, err := unversioned.ParseGroupVersion(gvString) + groupVersion, err := schema.ParseGroupVersion(gvString) if err != nil { panic(fmt.Sprintf("Error parsing groupversion %v: %v", gvString, err)) } - internalGroupVersion := unversioned.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal} + internalGroupVersion := schema.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal} Groups[groupVersion.Group] = TestGroup{ externalGroupVersion: groupVersion, internalGroupVersion: internalGroupVersion, @@ -139,7 +139,7 @@ func init() { } if _, ok := Groups[api.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: api.GroupName, Version: registered.GroupOrDie(api.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: api.GroupName, Version: registered.GroupOrDie(api.GroupName).GroupVersion.Version} Groups[api.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: api.SchemeGroupVersion, @@ -148,7 +148,7 @@ func init() { } } if _, ok := Groups[extensions.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: extensions.GroupName, Version: registered.GroupOrDie(extensions.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: extensions.GroupName, Version: registered.GroupOrDie(extensions.GroupName).GroupVersion.Version} Groups[extensions.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: extensions.SchemeGroupVersion, @@ -164,7 +164,7 @@ func init() { } internalTypes[k] = t } - externalGroupVersion := unversioned.GroupVersion{Group: autoscaling.GroupName, Version: registered.GroupOrDie(autoscaling.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: autoscaling.GroupName, Version: registered.GroupOrDie(autoscaling.GroupName).GroupVersion.Version} Groups[autoscaling.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: extensions.SchemeGroupVersion, @@ -180,7 +180,7 @@ func init() { break } } - externalGroupVersion := unversioned.GroupVersion{Group: autoscaling.GroupName, Version: registered.GroupOrDie(autoscaling.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: autoscaling.GroupName, Version: registered.GroupOrDie(autoscaling.GroupName).GroupVersion.Version} Groups[autoscaling.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: autoscaling.SchemeGroupVersion, @@ -189,7 +189,7 @@ func init() { } } if _, ok := Groups[batch.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: batch.GroupName, Version: registered.GroupOrDie(batch.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: batch.GroupName, Version: registered.GroupOrDie(batch.GroupName).GroupVersion.Version} Groups[batch.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: batch.SchemeGroupVersion, @@ -198,7 +198,7 @@ func init() { } } if _, ok := Groups[apps.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: apps.GroupName, Version: registered.GroupOrDie(apps.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: apps.GroupName, Version: registered.GroupOrDie(apps.GroupName).GroupVersion.Version} Groups[apps.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: extensions.SchemeGroupVersion, @@ -207,7 +207,7 @@ func init() { } } if _, ok := Groups[policy.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: policy.GroupName, Version: registered.GroupOrDie(policy.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: policy.GroupName, Version: registered.GroupOrDie(policy.GroupName).GroupVersion.Version} Groups[policy.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: policy.SchemeGroupVersion, @@ -216,7 +216,7 @@ func init() { } } if _, ok := Groups[federation.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: federation.GroupName, Version: registered.GroupOrDie(federation.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: federation.GroupName, Version: registered.GroupOrDie(federation.GroupName).GroupVersion.Version} Groups[federation.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: federation.SchemeGroupVersion, @@ -225,7 +225,7 @@ func init() { } } if _, ok := Groups[rbac.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: rbac.GroupName, Version: registered.GroupOrDie(rbac.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: rbac.GroupName, Version: registered.GroupOrDie(rbac.GroupName).GroupVersion.Version} Groups[rbac.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: rbac.SchemeGroupVersion, @@ -234,7 +234,7 @@ func init() { } } if _, ok := Groups[storage.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: storage.GroupName, Version: registered.GroupOrDie(storage.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: storage.GroupName, Version: registered.GroupOrDie(storage.GroupName).GroupVersion.Version} Groups[storage.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: storage.SchemeGroupVersion, @@ -243,7 +243,7 @@ func init() { } } if _, ok := Groups[certificates.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: certificates.GroupName, Version: registered.GroupOrDie(certificates.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: certificates.GroupName, Version: registered.GroupOrDie(certificates.GroupName).GroupVersion.Version} Groups[certificates.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: certificates.SchemeGroupVersion, @@ -252,7 +252,7 @@ func init() { } } if _, ok := Groups[imagepolicy.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: imagepolicy.GroupName, Version: registered.GroupOrDie(imagepolicy.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: imagepolicy.GroupName, Version: registered.GroupOrDie(imagepolicy.GroupName).GroupVersion.Version} Groups[imagepolicy.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: imagepolicy.SchemeGroupVersion, @@ -261,7 +261,7 @@ func init() { } } if _, ok := Groups[authorization.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: authorization.GroupName, Version: registered.GroupOrDie(authorization.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: authorization.GroupName, Version: registered.GroupOrDie(authorization.GroupName).GroupVersion.Version} Groups[authorization.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: authorization.SchemeGroupVersion, @@ -270,7 +270,7 @@ func init() { } } if _, ok := Groups[kubeadm.GroupName]; !ok { - externalGroupVersion := unversioned.GroupVersion{Group: kubeadm.GroupName, Version: registered.GroupOrDie(kubeadm.GroupName).GroupVersion.Version} + externalGroupVersion := schema.GroupVersion{Group: kubeadm.GroupName, Version: registered.GroupOrDie(kubeadm.GroupName).GroupVersion.Version} Groups[kubeadm.GroupName] = TestGroup{ externalGroupVersion: externalGroupVersion, internalGroupVersion: kubeadm.SchemeGroupVersion, @@ -293,18 +293,18 @@ func init() { Authorization = Groups[authorization.GroupName] } -func (g TestGroup) ContentConfig() (string, *unversioned.GroupVersion, runtime.Codec) { +func (g TestGroup) ContentConfig() (string, *schema.GroupVersion, runtime.Codec) { return "application/json", g.GroupVersion(), g.Codec() } -func (g TestGroup) GroupVersion() *unversioned.GroupVersion { +func (g TestGroup) GroupVersion() *schema.GroupVersion { copyOfGroupVersion := g.externalGroupVersion return ©OfGroupVersion } // InternalGroupVersion returns the group,version used to identify the internal // types for this API -func (g TestGroup) InternalGroupVersion() unversioned.GroupVersion { +func (g TestGroup) InternalGroupVersion() schema.GroupVersion { return g.internalGroupVersion } @@ -324,7 +324,7 @@ func (g TestGroup) Codec() runtime.Codec { if serializer.Serializer == nil { return api.Codecs.LegacyCodec(g.externalGroupVersion) } - return api.Codecs.CodecForVersions(serializer.Serializer, api.Codecs.UniversalDeserializer(), unversioned.GroupVersions{g.externalGroupVersion}, nil) + return api.Codecs.CodecForVersions(serializer.Serializer, api.Codecs.UniversalDeserializer(), schema.GroupVersions{g.externalGroupVersion}, nil) } // NegotiatedSerializer returns the negotiated serializer for the server. @@ -352,7 +352,7 @@ func (g TestGroup) StorageCodec() runtime.Codec { } ds := recognizer.NewDecoder(s, api.Codecs.UniversalDeserializer()) - return api.Codecs.CodecForVersions(s, ds, unversioned.GroupVersions{g.externalGroupVersion}, nil) + return api.Codecs.CodecForVersions(s, ds, schema.GroupVersions{g.externalGroupVersion}, nil) } // Converter returns the api.Scheme for the API version to test against, as set by the @@ -436,8 +436,8 @@ func (g TestGroup) RESTMapper() meta.RESTMapper { } // ExternalGroupVersions returns all external group versions allowed for the server. -func ExternalGroupVersions() unversioned.GroupVersions { - versions := []unversioned.GroupVersion{} +func ExternalGroupVersions() schema.GroupVersions { + versions := []schema.GroupVersion{} for _, g := range Groups { gv := g.GroupVersion() versions = append(versions, *gv) @@ -473,6 +473,6 @@ func GetCodecForObject(obj runtime.Object) (runtime.Codec, error) { return nil, fmt.Errorf("unexpected kind: %v", kind) } -func NewTestGroup(external, internal unversioned.GroupVersion, internalTypes map[string]reflect.Type, externalTypes map[string]reflect.Type) TestGroup { +func NewTestGroup(external, internal schema.GroupVersion, internalTypes map[string]reflect.Type, externalTypes map[string]reflect.Type) TestGroup { return TestGroup{external, internal, internalTypes, externalTypes} } diff --git a/pkg/api/unversioned/generated.pb.go b/pkg/api/unversioned/generated.pb.go index a50052da..253fd661 100644 --- a/pkg/api/unversioned/generated.pb.go +++ b/pkg/api/unversioned/generated.pb.go @@ -4446,92 +4446,93 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 1390 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x57, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0xda, 0xb1, 0xbb, 0x7e, 0x8e, 0x49, 0xba, 0xa4, 0x62, 0x1b, 0x09, 0xdb, 0x6c, 0x05, - 0x4a, 0xa5, 0xd6, 0x56, 0x23, 0x40, 0x55, 0x11, 0x7f, 0xe2, 0x24, 0xad, 0xa2, 0x36, 0x6d, 0x34, - 0xa9, 0x8a, 0xd4, 0x16, 0x89, 0x8d, 0x77, 0xe2, 0xac, 0x6c, 0xef, 0x2e, 0x33, 0xb3, 0x51, 0x2d, - 0x90, 0xe8, 0xa5, 0x12, 0x07, 0x84, 0x7a, 0xe4, 0x02, 0x6a, 0xa5, 0x7e, 0x03, 0xbe, 0x44, 0xc5, - 0xa9, 0x17, 0x24, 0x0e, 0xc8, 0xa2, 0xe1, 0xc2, 0x95, 0x6b, 0x4e, 0x68, 0x66, 0x67, 0xd6, 0xbb, - 0x6e, 0x4d, 0x36, 0xd0, 0x03, 0x27, 0xef, 0xfb, 0xff, 0xe6, 0xbd, 0xdf, 0xbc, 0x37, 0x86, 0xf7, - 0x7a, 0x17, 0x69, 0xd3, 0xf5, 0x5b, 0xbd, 0x70, 0x07, 0x13, 0x0f, 0x33, 0x4c, 0x5b, 0x41, 0xaf, - 0xdb, 0xb2, 0x03, 0xb7, 0x15, 0x7a, 0xfb, 0x98, 0x50, 0xd7, 0xf7, 0xb0, 0xd3, 0xea, 0x62, 0x0f, - 0x13, 0x9b, 0x61, 0xa7, 0x19, 0x10, 0x9f, 0xf9, 0xc6, 0xdb, 0x91, 0x59, 0x73, 0x6c, 0xd6, 0x0c, - 0x7a, 0xdd, 0xa6, 0x1d, 0xb8, 0xcd, 0x84, 0xd9, 0xe2, 0xf9, 0xae, 0xcb, 0xf6, 0xc2, 0x9d, 0x66, - 0xc7, 0x1f, 0xb4, 0xba, 0x7e, 0xd7, 0x6f, 0x09, 0xeb, 0x9d, 0x70, 0x57, 0x50, 0x82, 0x10, 0x5f, - 0x91, 0xd7, 0xc5, 0xf3, 0x2f, 0x4f, 0x86, 0x84, 0x1e, 0x73, 0x07, 0x78, 0x32, 0x89, 0xc5, 0x0b, - 0x2f, 0x57, 0x0f, 0x99, 0xdb, 0x6f, 0xb9, 0x1e, 0xa3, 0x8c, 0x4c, 0x9a, 0x58, 0x3f, 0x17, 0x40, - 0x5f, 0xd9, 0xda, 0xb8, 0x42, 0xfc, 0x30, 0x30, 0x1a, 0x30, 0xe3, 0xd9, 0x03, 0x6c, 0x6a, 0x0d, - 0x6d, 0xa9, 0xdc, 0x9e, 0x7d, 0x3a, 0xaa, 0xe7, 0x0e, 0x46, 0xf5, 0x99, 0xeb, 0xf6, 0x00, 0x23, - 0x21, 0x31, 0x06, 0xa0, 0xcb, 0xc3, 0x50, 0x33, 0xdf, 0x28, 0x2c, 0x55, 0x96, 0x3f, 0x6e, 0x66, - 0x3a, 0x79, 0x53, 0x44, 0xb8, 0x15, 0x91, 0x97, 0x7d, 0xb2, 0xe6, 0xd2, 0x8e, 0xbf, 0x8f, 0xc9, - 0xb0, 0x3d, 0x2f, 0xc3, 0xe8, 0x52, 0x48, 0x51, 0x1c, 0xc2, 0x78, 0xa0, 0xc1, 0x7c, 0x40, 0xf0, - 0x2e, 0x26, 0x04, 0x3b, 0x52, 0x6e, 0x16, 0x1a, 0xda, 0xab, 0x88, 0x6b, 0xca, 0xb8, 0xf3, 0x5b, - 0x13, 0x01, 0xd0, 0x0b, 0x21, 0x8d, 0x27, 0x1a, 0x2c, 0x52, 0x4c, 0xf6, 0x31, 0x59, 0x71, 0x1c, - 0x82, 0x29, 0x6d, 0x0f, 0x57, 0xfb, 0x2e, 0xf6, 0xd8, 0xea, 0xc6, 0x1a, 0xa2, 0xe6, 0x8c, 0xa8, - 0xc4, 0x27, 0x19, 0x33, 0xda, 0x9e, 0xe6, 0xa8, 0x6d, 0xc9, 0x94, 0x16, 0xa7, 0xaa, 0x50, 0xf4, - 0x0f, 0x79, 0x58, 0x5d, 0x98, 0x55, 0xbd, 0xbc, 0xe6, 0x52, 0x66, 0x7c, 0x0a, 0xa5, 0x2e, 0x27, - 0xa8, 0xa9, 0x89, 0x0c, 0x5b, 0x19, 0x33, 0x54, 0x4e, 0xda, 0xaf, 0xc9, 0x84, 0x4a, 0x82, 0xa4, - 0x48, 0xba, 0xb3, 0x1e, 0x68, 0x50, 0x59, 0xd9, 0xda, 0x40, 0x98, 0xfa, 0x21, 0xe9, 0xe0, 0x0c, - 0xc0, 0x59, 0x06, 0xe0, 0xbf, 0x34, 0xb0, 0x3b, 0xd8, 0x31, 0xf3, 0x0d, 0x6d, 0x49, 0x6f, 0x1b, - 0x52, 0x0f, 0xae, 0xc7, 0x12, 0x94, 0xd0, 0xe2, 0x5e, 0x7b, 0xae, 0xe7, 0x88, 0x86, 0x27, 0xbc, - 0x5e, 0x75, 0x3d, 0x07, 0x09, 0x89, 0xf5, 0x93, 0x06, 0x73, 0x89, 0x3c, 0xc4, 0xa1, 0x2f, 0xc2, - 0x6c, 0x37, 0xd1, 0x73, 0x99, 0xd3, 0x82, 0xb4, 0x9e, 0x4d, 0xe2, 0x01, 0xa5, 0x34, 0x8d, 0x5d, - 0x28, 0x13, 0xe9, 0x49, 0xa1, 0x7b, 0x39, 0x7b, 0xc5, 0x54, 0x12, 0xe3, 0x50, 0x09, 0x26, 0x45, - 0x63, 0xd7, 0xd6, 0x9f, 0x51, 0xf5, 0x14, 0xde, 0x8d, 0xa5, 0xc4, 0xa5, 0xe2, 0x8d, 0x2a, 0xb7, - 0x67, 0xa7, 0xdc, 0x87, 0x23, 0x70, 0x98, 0xff, 0x7f, 0xe0, 0xf0, 0x92, 0xfe, 0xfd, 0xa3, 0x7a, - 0xee, 0xfe, 0x6f, 0x8d, 0x9c, 0xb5, 0x01, 0xfa, 0x5a, 0x48, 0x6c, 0xc6, 0xcb, 0xfb, 0x21, 0xe8, - 0x8e, 0xfc, 0x16, 0x4d, 0x29, 0xb4, 0xdf, 0x52, 0x57, 0x5f, 0xe9, 0x1c, 0x8e, 0xea, 0x55, 0x3e, - 0xd9, 0x9a, 0x8a, 0x81, 0x62, 0x13, 0xeb, 0x2e, 0x54, 0xd7, 0xef, 0x05, 0x3e, 0x61, 0x37, 0x02, - 0x26, 0x8a, 0xf1, 0x0e, 0x94, 0xb0, 0x60, 0x08, 0x6f, 0xfa, 0x18, 0xac, 0x91, 0x1a, 0x92, 0x52, - 0xe3, 0x0c, 0x14, 0xf1, 0x3d, 0xbb, 0xc3, 0x24, 0xea, 0xaa, 0x52, 0xad, 0xb8, 0xce, 0x99, 0x28, - 0x92, 0x59, 0x77, 0xa1, 0x2c, 0x90, 0xc1, 0xc1, 0xc5, 0x2d, 0x04, 0x30, 0x24, 0x76, 0x62, 0x0b, - 0xa1, 0x81, 0x22, 0x59, 0x8c, 0xce, 0xfc, 0x34, 0x74, 0x26, 0xca, 0xd0, 0x87, 0x6a, 0x64, 0xab, - 0x2e, 0x4c, 0xa6, 0x08, 0xe7, 0x40, 0x57, 0xa0, 0x91, 0x51, 0xe2, 0x59, 0xa9, 0x1c, 0xa1, 0x58, - 0x23, 0x11, 0x6d, 0x0f, 0x52, 0x28, 0xcf, 0x16, 0xec, 0x2c, 0x9c, 0x90, 0xd0, 0x90, 0xb1, 0xe6, - 0xa4, 0xda, 0x09, 0x75, 0x59, 0x94, 0x3c, 0x11, 0xe9, 0x6b, 0x30, 0xa7, 0xcd, 0xd7, 0xff, 0x70, - 0x0f, 0xb3, 0xa7, 0x62, 0x7d, 0xa7, 0xc1, 0x7c, 0xd2, 0x53, 0xf6, 0xf6, 0x65, 0x0f, 0x72, 0xf4, - 0x1c, 0x4a, 0x54, 0xe4, 0x47, 0x0d, 0x16, 0x52, 0x47, 0x3b, 0x56, 0xc7, 0x8f, 0x91, 0x54, 0x12, - 0x1c, 0x85, 0x63, 0x80, 0xe3, 0x97, 0x3c, 0x54, 0xaf, 0xd9, 0x3b, 0xb8, 0xbf, 0x8d, 0xfb, 0xb8, - 0xc3, 0x7c, 0x62, 0x7c, 0x05, 0x95, 0x81, 0xcd, 0x3a, 0x7b, 0x82, 0xab, 0x56, 0xc5, 0x7a, 0xc6, - 0x21, 0x92, 0x72, 0xd5, 0xdc, 0x1c, 0xfb, 0x59, 0xf7, 0x18, 0x19, 0xb6, 0x5f, 0x97, 0x39, 0x55, - 0x12, 0x12, 0x94, 0x0c, 0x27, 0x56, 0xbc, 0xa0, 0xd7, 0xef, 0x05, 0x7c, 0x92, 0xfc, 0x8b, 0xa7, - 0x45, 0x2a, 0x07, 0x84, 0xbf, 0x08, 0x5d, 0x82, 0x07, 0xd8, 0x63, 0xe3, 0x15, 0xbf, 0x39, 0x11, - 0x00, 0xbd, 0x10, 0x72, 0xf1, 0x23, 0x98, 0x9f, 0xcc, 0xde, 0x98, 0x87, 0x42, 0x0f, 0x0f, 0xa3, - 0x8e, 0x21, 0xfe, 0x69, 0x2c, 0x40, 0x71, 0xdf, 0xee, 0x87, 0xf2, 0x3e, 0xa2, 0x88, 0xb8, 0x94, - 0xbf, 0xa8, 0x59, 0x4f, 0x34, 0x30, 0xa7, 0x25, 0x62, 0xbc, 0x99, 0x70, 0xd4, 0xae, 0xc8, 0xac, - 0x0a, 0x57, 0xf1, 0x30, 0xf2, 0xba, 0x0e, 0xba, 0x1f, 0xf0, 0x67, 0x99, 0x4f, 0x64, 0xdf, 0xcf, - 0xaa, 0x5e, 0xde, 0x90, 0xfc, 0xc3, 0x51, 0xfd, 0x54, 0xca, 0xbd, 0x12, 0xa0, 0xd8, 0xd4, 0xb0, - 0xa0, 0x24, 0xf2, 0xa1, 0x66, 0x41, 0x6c, 0x11, 0xe0, 0xc3, 0xf0, 0x96, 0xe0, 0x20, 0x29, 0xb1, - 0xbe, 0x04, 0x9d, 0x6f, 0xc9, 0x4d, 0xcc, 0x6c, 0x0e, 0x21, 0x8a, 0xfb, 0xbb, 0xd7, 0x5c, 0xaf, - 0x27, 0x53, 0x8b, 0x21, 0xb4, 0x2d, 0xf9, 0x28, 0xd6, 0x30, 0x56, 0x60, 0x4e, 0xc1, 0xe9, 0x56, - 0x0a, 0xa3, 0x6f, 0x48, 0xa3, 0x39, 0x94, 0x16, 0xa3, 0x49, 0x7d, 0xeb, 0x1c, 0x94, 0x91, 0xef, - 0xb3, 0x2d, 0x9b, 0xed, 0x51, 0xa3, 0x0e, 0xc5, 0x80, 0x7f, 0xc8, 0x95, 0x57, 0xe6, 0x97, 0x41, - 0x48, 0x50, 0xc4, 0xb7, 0xbe, 0xd5, 0xe0, 0xf4, 0xd4, 0x05, 0xc4, 0x1f, 0x14, 0x9d, 0x98, 0x92, - 0xe9, 0xc7, 0x0f, 0x8a, 0xb1, 0x1e, 0x4a, 0x68, 0x19, 0x1f, 0x40, 0x35, 0xb5, 0xb5, 0xe4, 0x01, - 0x4e, 0x49, 0xb3, 0x6a, 0x2a, 0x1a, 0x4a, 0xeb, 0x5a, 0x7f, 0xe5, 0xa1, 0xb4, 0xcd, 0x6c, 0x16, - 0x52, 0xe3, 0x33, 0xd0, 0x07, 0x98, 0xd9, 0x8e, 0xcd, 0x6c, 0x11, 0x39, 0xfb, 0xcb, 0x4a, 0xd5, - 0x7e, 0x5c, 0x69, 0xc5, 0x41, 0xb1, 0x4b, 0xbe, 0xd8, 0xa8, 0x08, 0x24, 0xf3, 0x8b, 0x17, 0x5b, - 0x14, 0x1e, 0x49, 0x29, 0x9f, 0x16, 0x03, 0x4c, 0xa9, 0xdd, 0x55, 0x13, 0x20, 0x9e, 0x16, 0x9b, - 0x11, 0x1b, 0x29, 0xb9, 0xf1, 0x3e, 0x94, 0x08, 0xb6, 0xa9, 0xef, 0x99, 0x33, 0x42, 0xb3, 0xa6, - 0x5c, 0x22, 0xc1, 0x3d, 0x1c, 0xd5, 0x67, 0xa5, 0x73, 0x41, 0x23, 0xa9, 0x6d, 0xdc, 0x81, 0x13, - 0x0e, 0x66, 0xb6, 0xdb, 0xa7, 0x66, 0x51, 0x1c, 0xf4, 0xdd, 0xac, 0x8f, 0x0b, 0xe1, 0x6d, 0x2d, - 0xb2, 0x6d, 0x57, 0x78, 0x52, 0x92, 0x40, 0xca, 0x23, 0x9f, 0xab, 0x1d, 0xdf, 0xc1, 0x66, 0xa9, - 0xa1, 0x2d, 0x15, 0xc7, 0x73, 0x75, 0xd5, 0x77, 0x30, 0x12, 0x12, 0xeb, 0xa1, 0x06, 0x95, 0xc8, - 0xd3, 0xaa, 0x1d, 0x52, 0x6c, 0x5c, 0x88, 0x8f, 0x11, 0x35, 0xfc, 0xb4, 0xb2, 0xb9, 0x39, 0x0c, - 0xf0, 0xe1, 0xa8, 0x5e, 0x16, 0x6a, 0x9c, 0x88, 0x4f, 0x90, 0x28, 0x52, 0xfe, 0x88, 0x22, 0x9d, - 0x81, 0xe2, 0xae, 0x8b, 0xfb, 0x6a, 0xd0, 0xc7, 0x23, 0xfa, 0x32, 0x67, 0xa2, 0x48, 0x66, 0xfd, - 0x90, 0x87, 0x6a, 0xea, 0x70, 0x19, 0x1e, 0xbf, 0xf1, 0xec, 0xcf, 0x67, 0x78, 0x4f, 0x4c, 0xdd, - 0x32, 0xc6, 0x6d, 0x28, 0x75, 0xf8, 0xf9, 0xd4, 0x1f, 0x8e, 0xe5, 0x63, 0xf5, 0x42, 0x94, 0x66, - 0x8c, 0x25, 0x41, 0x52, 0x24, 0x3d, 0x1a, 0x57, 0xe0, 0x24, 0xc1, 0x8c, 0x0c, 0x57, 0x76, 0x19, - 0x26, 0xdb, 0xb8, 0xe3, 0x7b, 0x4e, 0xd4, 0xf2, 0x62, 0x5c, 0xe4, 0x93, 0x68, 0x52, 0x01, 0xbd, - 0x68, 0x63, 0xf5, 0x61, 0xe6, 0xa6, 0x3b, 0xc0, 0xbc, 0xee, 0x54, 0xba, 0x89, 0x1e, 0x7b, 0x71, - 0xdd, 0x95, 0xb1, 0x92, 0xf3, 0xf2, 0x78, 0xb6, 0xe7, 0x47, 0x70, 0x2f, 0x8e, 0xcb, 0x73, 0x9d, - 0x33, 0x51, 0x24, 0xbb, 0xb4, 0xc0, 0x37, 0xd8, 0x37, 0x8f, 0xeb, 0xb9, 0x87, 0x8f, 0xeb, 0xb9, - 0x47, 0x8f, 0xe5, 0x36, 0xbb, 0x03, 0x65, 0x1e, 0x8d, 0x32, 0x7b, 0x10, 0xbc, 0xea, 0x90, 0xd6, - 0xe7, 0xa0, 0x73, 0x28, 0x89, 0x59, 0xa9, 0xba, 0xa3, 0x4d, 0xed, 0xce, 0x32, 0x80, 0x1d, 0xb8, - 0xe9, 0xd1, 0x18, 0x0f, 0xa4, 0xf1, 0x73, 0x1f, 0x25, 0xb4, 0xda, 0xe7, 0x9f, 0x3e, 0xaf, 0xe5, - 0x9e, 0x3d, 0xaf, 0xe5, 0x7e, 0x7d, 0x5e, 0xcb, 0xdd, 0x3f, 0xa8, 0x69, 0x4f, 0x0f, 0x6a, 0xda, - 0xb3, 0x83, 0x9a, 0xf6, 0xfb, 0x41, 0x4d, 0x7b, 0xf8, 0x47, 0x2d, 0x77, 0xbb, 0x92, 0x68, 0xe4, - 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x0a, 0x22, 0x00, 0xde, 0x9c, 0x10, 0x00, 0x00, + // 1400 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x57, 0x4f, 0x6b, 0x1b, 0x47, + 0x14, 0xd7, 0x4a, 0x96, 0xb2, 0x7a, 0xb2, 0x6a, 0x67, 0xeb, 0xd0, 0x8d, 0xa1, 0x92, 0xba, 0xa1, + 0xc5, 0x81, 0x44, 0x22, 0x26, 0x2d, 0x21, 0xa5, 0x7f, 0x2c, 0xdb, 0x09, 0x26, 0x71, 0x62, 0xc6, + 0x21, 0x85, 0x24, 0x85, 0xae, 0xb5, 0x63, 0x79, 0x91, 0xb4, 0xbb, 0x9d, 0x99, 0x35, 0x11, 0x2d, + 0x34, 0x97, 0x40, 0x0f, 0xa5, 0xe4, 0xd8, 0x4b, 0x4b, 0x02, 0xf9, 0x06, 0xfd, 0x12, 0xa1, 0xa7, + 0x5c, 0x0a, 0x3d, 0x14, 0xd3, 0xb8, 0x97, 0x5e, 0x7b, 0xf5, 0xa9, 0xcc, 0xec, 0xcc, 0x6a, 0x57, + 0x8e, 0xe2, 0x75, 0x9b, 0x43, 0x4f, 0xda, 0xf7, 0xff, 0xcd, 0x7b, 0xbf, 0x79, 0x6f, 0x04, 0xef, + 0xf7, 0x2e, 0xd1, 0xa6, 0xeb, 0xb7, 0x7a, 0xe1, 0x16, 0x26, 0x1e, 0x66, 0x98, 0xb6, 0x82, 0x5e, + 0xb7, 0x65, 0x07, 0x6e, 0x2b, 0xf4, 0x76, 0x31, 0xa1, 0xae, 0xef, 0x61, 0xa7, 0xd5, 0xc5, 0x1e, + 0x26, 0x36, 0xc3, 0x4e, 0x33, 0x20, 0x3e, 0xf3, 0x8d, 0x77, 0x23, 0xb3, 0xe6, 0xc8, 0xac, 0x19, + 0xf4, 0xba, 0x4d, 0x3b, 0x70, 0x9b, 0x09, 0xb3, 0xf9, 0xf3, 0x5d, 0x97, 0xed, 0x84, 0x5b, 0xcd, + 0x8e, 0x3f, 0x68, 0x75, 0xfd, 0xae, 0xdf, 0x12, 0xd6, 0x5b, 0xe1, 0xb6, 0xa0, 0x04, 0x21, 0xbe, + 0x22, 0xaf, 0xf3, 0xe7, 0x5f, 0x9e, 0x0c, 0x09, 0x3d, 0xe6, 0x0e, 0xf0, 0x78, 0x12, 0xf3, 0x17, + 0x5f, 0xad, 0x4e, 0x3b, 0x3b, 0x78, 0x60, 0x1f, 0xb2, 0xba, 0xf0, 0x72, 0xab, 0x90, 0xb9, 0xfd, + 0x96, 0xeb, 0x31, 0xca, 0xc8, 0xb8, 0x89, 0xf5, 0x4b, 0x01, 0xf4, 0xa5, 0x8d, 0xb5, 0xab, 0xc4, + 0x0f, 0x03, 0xa3, 0x01, 0x53, 0x9e, 0x3d, 0xc0, 0xa6, 0xd6, 0xd0, 0x16, 0xca, 0xed, 0xe9, 0x67, + 0x7b, 0xf5, 0xdc, 0xfe, 0x5e, 0x7d, 0xea, 0x86, 0x3d, 0xc0, 0x48, 0x48, 0x8c, 0x01, 0xe8, 0xb2, + 0x04, 0xd4, 0xcc, 0x37, 0x0a, 0x0b, 0x95, 0xc5, 0x4f, 0x9a, 0x99, 0xea, 0xd5, 0x14, 0x11, 0x6e, + 0x47, 0xe4, 0x15, 0x9f, 0xac, 0xb8, 0xb4, 0xe3, 0xef, 0x62, 0x32, 0x6c, 0xcf, 0xca, 0x30, 0xba, + 0x14, 0x52, 0x14, 0x87, 0x30, 0x1e, 0x6a, 0x30, 0x1b, 0x10, 0xbc, 0x8d, 0x09, 0xc1, 0x8e, 0x94, + 0x9b, 0x85, 0x86, 0xf6, 0x3a, 0xe2, 0x9a, 0x32, 0xee, 0xec, 0xc6, 0x58, 0x00, 0x74, 0x28, 0xa4, + 0xf1, 0x54, 0x83, 0x79, 0x8a, 0xc9, 0x2e, 0x26, 0x4b, 0x8e, 0x43, 0x30, 0xa5, 0xed, 0xe1, 0x72, + 0xdf, 0xc5, 0x1e, 0x5b, 0x5e, 0x5b, 0x41, 0xd4, 0x9c, 0x12, 0x95, 0xf8, 0x34, 0x63, 0x46, 0x9b, + 0x93, 0x1c, 0xb5, 0x2d, 0x99, 0xd2, 0xfc, 0x44, 0x15, 0x8a, 0x5e, 0x91, 0x87, 0xd5, 0x85, 0x69, + 0xd5, 0xcb, 0xeb, 0x2e, 0x65, 0xc6, 0x67, 0x50, 0xea, 0x72, 0x82, 0x9a, 0x9a, 0xc8, 0xb0, 0x95, + 0x31, 0x43, 0xe5, 0xa4, 0xfd, 0x86, 0x4c, 0xa8, 0x24, 0x48, 0x8a, 0xa4, 0x3b, 0xeb, 0xa1, 0x06, + 0x95, 0xa5, 0x8d, 0x35, 0x84, 0xa9, 0x1f, 0x92, 0x0e, 0xce, 0x00, 0x9c, 0x45, 0x00, 0xfe, 0x4b, + 0x03, 0xbb, 0x83, 0x1d, 0x33, 0xdf, 0xd0, 0x16, 0xf4, 0xb6, 0x21, 0xf5, 0xe0, 0x46, 0x2c, 0x41, + 0x09, 0x2d, 0xee, 0xb5, 0xe7, 0x7a, 0x8e, 0x68, 0x78, 0xc2, 0xeb, 0x35, 0xd7, 0x73, 0x90, 0x90, + 0x58, 0x3f, 0x6b, 0x30, 0x93, 0xc8, 0x43, 0x1c, 0xfa, 0x12, 0x4c, 0x77, 0x13, 0x3d, 0x97, 0x39, + 0xcd, 0x49, 0xeb, 0xe9, 0x24, 0x1e, 0x50, 0x4a, 0xd3, 0xd8, 0x86, 0x32, 0x91, 0x9e, 0x14, 0xba, + 0x17, 0xb3, 0x57, 0x4c, 0x25, 0x31, 0x0a, 0x95, 0x60, 0x52, 0x34, 0x72, 0x6d, 0xfd, 0x15, 0x55, + 0x4f, 0xe1, 0xdd, 0x58, 0x48, 0x5c, 0x2a, 0xde, 0xa8, 0x72, 0x7b, 0x7a, 0xc2, 0x7d, 0x38, 0x02, + 0x87, 0xf9, 0xff, 0x07, 0x0e, 0x2f, 0xeb, 0x3f, 0x3c, 0xae, 0xe7, 0x1e, 0xfc, 0xde, 0xc8, 0x59, + 0x6b, 0xa0, 0xaf, 0x84, 0xc4, 0x66, 0xbc, 0xbc, 0x1f, 0x81, 0xee, 0xc8, 0x6f, 0xd1, 0x94, 0x42, + 0xfb, 0x1d, 0x75, 0xf5, 0x95, 0xce, 0xc1, 0x5e, 0xbd, 0xca, 0x07, 0x5c, 0x53, 0x31, 0x50, 0x6c, + 0x62, 0xdd, 0x83, 0xea, 0xea, 0xfd, 0xc0, 0x27, 0xec, 0x66, 0xc0, 0x44, 0x31, 0xde, 0x83, 0x12, + 0x16, 0x0c, 0xe1, 0x4d, 0x1f, 0x81, 0x35, 0x52, 0x43, 0x52, 0x6a, 0x9c, 0x81, 0x22, 0xbe, 0x6f, + 0x77, 0x98, 0x44, 0x5d, 0x55, 0xaa, 0x15, 0x57, 0x39, 0x13, 0x45, 0x32, 0xeb, 0x1e, 0x94, 0x05, + 0x32, 0x38, 0xb8, 0xb8, 0x85, 0x00, 0x86, 0xc4, 0x4e, 0x6c, 0x21, 0x34, 0x50, 0x24, 0x8b, 0xd1, + 0x99, 0x9f, 0x84, 0xce, 0x44, 0x19, 0xfa, 0x50, 0x8d, 0x6c, 0xd5, 0x85, 0xc9, 0x14, 0xe1, 0x1c, + 0xe8, 0x0a, 0x34, 0x32, 0x4a, 0x3c, 0x2b, 0x95, 0x23, 0x14, 0x6b, 0x24, 0xa2, 0xed, 0x40, 0x0a, + 0xe5, 0xd9, 0x82, 0x9d, 0x85, 0x13, 0x12, 0x1a, 0x32, 0xd6, 0x8c, 0x54, 0x3b, 0xa1, 0x2e, 0x8b, + 0x92, 0x27, 0x22, 0x7d, 0x03, 0xe6, 0xa4, 0xf9, 0xfa, 0x1f, 0xee, 0x61, 0xf6, 0x54, 0xac, 0xef, + 0x35, 0x98, 0x4d, 0x7a, 0xca, 0xde, 0xbe, 0xec, 0x41, 0x8e, 0x9e, 0x43, 0x89, 0x8a, 0xfc, 0xa4, + 0xc1, 0x5c, 0xea, 0x68, 0xc7, 0xea, 0xf8, 0x31, 0x92, 0x4a, 0x82, 0xa3, 0x70, 0x0c, 0x70, 0xfc, + 0x9a, 0x87, 0xea, 0x75, 0x7b, 0x0b, 0xf7, 0x37, 0x71, 0x1f, 0x77, 0x98, 0x4f, 0x8c, 0xaf, 0xa1, + 0x32, 0xb0, 0x59, 0x67, 0x47, 0x70, 0xd5, 0xaa, 0x58, 0xcd, 0x38, 0x44, 0x52, 0xae, 0x9a, 0xeb, + 0x23, 0x3f, 0xab, 0x1e, 0x23, 0xc3, 0xf6, 0x9b, 0x32, 0xa7, 0x4a, 0x42, 0x82, 0x92, 0xe1, 0xc4, + 0x8a, 0x17, 0xf4, 0xea, 0xfd, 0x80, 0x4f, 0x92, 0x7f, 0xf1, 0xb4, 0x48, 0xe5, 0x80, 0xf0, 0x97, + 0xa1, 0x4b, 0xf0, 0x00, 0x7b, 0x6c, 0xb4, 0xe2, 0xd7, 0xc7, 0x02, 0xa0, 0x43, 0x21, 0xe7, 0x3f, + 0x86, 0xd9, 0xf1, 0xec, 0x8d, 0x59, 0x28, 0xf4, 0xf0, 0x30, 0xea, 0x18, 0xe2, 0x9f, 0xc6, 0x1c, + 0x14, 0x77, 0xed, 0x7e, 0x28, 0xef, 0x23, 0x8a, 0x88, 0xcb, 0xf9, 0x4b, 0x9a, 0xf5, 0x54, 0x03, + 0x73, 0x52, 0x22, 0xc6, 0xdb, 0x09, 0x47, 0xed, 0x8a, 0xcc, 0xaa, 0x70, 0x0d, 0x0f, 0x23, 0xaf, + 0xab, 0xa0, 0xfb, 0x01, 0x7f, 0x96, 0xf9, 0x44, 0xf6, 0xfd, 0xac, 0xea, 0xe5, 0x4d, 0xc9, 0x3f, + 0xd8, 0xab, 0x9f, 0x4a, 0xb9, 0x57, 0x02, 0x14, 0x9b, 0x1a, 0x16, 0x94, 0x44, 0x3e, 0xd4, 0x2c, + 0x88, 0x2d, 0x02, 0x7c, 0x18, 0xde, 0x16, 0x1c, 0x24, 0x25, 0xd6, 0x57, 0xa0, 0xf3, 0x2d, 0xb9, + 0x8e, 0x99, 0xcd, 0x21, 0x44, 0x71, 0x7f, 0xfb, 0xba, 0xeb, 0xf5, 0x64, 0x6a, 0x31, 0x84, 0x36, + 0x25, 0x1f, 0xc5, 0x1a, 0xc6, 0x12, 0xcc, 0x28, 0x38, 0xdd, 0x4e, 0x61, 0xf4, 0x2d, 0x69, 0x34, + 0x83, 0xd2, 0x62, 0x34, 0xae, 0x6f, 0x9d, 0x83, 0x32, 0xf2, 0x7d, 0xb6, 0x61, 0xb3, 0x1d, 0x6a, + 0xd4, 0xa1, 0x18, 0xf0, 0x0f, 0xb9, 0xf2, 0xca, 0xfc, 0x32, 0x08, 0x09, 0x8a, 0xf8, 0xd6, 0x77, + 0x1a, 0x9c, 0x9e, 0xb8, 0x80, 0xf8, 0x83, 0xa2, 0x13, 0x53, 0x32, 0xfd, 0xf8, 0x41, 0x31, 0xd2, + 0x43, 0x09, 0x2d, 0xe3, 0x43, 0xa8, 0xa6, 0xb6, 0x96, 0x3c, 0xc0, 0x29, 0x69, 0x56, 0x4d, 0x45, + 0x43, 0x69, 0x5d, 0xeb, 0xef, 0x3c, 0x94, 0x36, 0x99, 0xcd, 0x42, 0x6a, 0x7c, 0x0e, 0xfa, 0x00, + 0x33, 0xdb, 0xb1, 0x99, 0x2d, 0x22, 0x67, 0x7f, 0x59, 0xa9, 0xda, 0x8f, 0x2a, 0xad, 0x38, 0x28, + 0x76, 0xc9, 0x17, 0x1b, 0x15, 0x81, 0x64, 0x7e, 0xf1, 0x62, 0x8b, 0xc2, 0x23, 0x29, 0xe5, 0xd3, + 0x62, 0x80, 0x29, 0xb5, 0xbb, 0x6a, 0x02, 0xc4, 0xd3, 0x62, 0x3d, 0x62, 0x23, 0x25, 0x37, 0x3e, + 0x80, 0x12, 0xc1, 0x36, 0xf5, 0x3d, 0x73, 0x4a, 0x68, 0xd6, 0x94, 0x4b, 0x24, 0xb8, 0x07, 0x7b, + 0xf5, 0x69, 0xe9, 0x5c, 0xd0, 0x48, 0x6a, 0x1b, 0x77, 0xe1, 0x84, 0x83, 0x99, 0xed, 0xf6, 0xa9, + 0x59, 0x14, 0x07, 0xbd, 0x98, 0xf5, 0x71, 0x21, 0xbc, 0xad, 0x44, 0xb6, 0xed, 0x0a, 0x4f, 0x4a, + 0x12, 0x48, 0x79, 0xe4, 0x73, 0xb5, 0xe3, 0x3b, 0xd8, 0x2c, 0x35, 0xb4, 0x85, 0xe2, 0x68, 0xae, + 0x2e, 0xfb, 0x0e, 0x46, 0x42, 0x62, 0x3d, 0xd2, 0xa0, 0x12, 0x79, 0x5a, 0xb6, 0x43, 0x8a, 0x8d, + 0x0b, 0xf1, 0x31, 0xa2, 0x86, 0x9f, 0x56, 0x36, 0xb7, 0x86, 0x01, 0x3e, 0xd8, 0xab, 0x97, 0x85, + 0x1a, 0x27, 0xe2, 0x13, 0x24, 0x8a, 0x94, 0x3f, 0xa2, 0x48, 0x67, 0xa0, 0xb8, 0xed, 0xe2, 0xbe, + 0x1a, 0xf4, 0xf1, 0x88, 0xbe, 0xc2, 0x99, 0x28, 0x92, 0x59, 0x3f, 0xe6, 0xa1, 0x9a, 0x3a, 0x5c, + 0x86, 0xc7, 0x6f, 0x3c, 0xfb, 0xf3, 0x19, 0xde, 0x13, 0x13, 0xb7, 0x8c, 0x71, 0x07, 0x4a, 0x1d, + 0x7e, 0x3e, 0xf5, 0x87, 0x63, 0xf1, 0x58, 0xbd, 0x10, 0xa5, 0x19, 0x61, 0x49, 0x90, 0x14, 0x49, + 0x8f, 0xc6, 0x55, 0x38, 0x49, 0x30, 0x23, 0xc3, 0xa5, 0x6d, 0x86, 0xc9, 0x26, 0xee, 0xf8, 0x9e, + 0x13, 0xb5, 0xbc, 0x18, 0x17, 0xf9, 0x24, 0x1a, 0x57, 0x40, 0x87, 0x6d, 0xac, 0x3e, 0x4c, 0xdd, + 0x72, 0x07, 0x98, 0xd7, 0x9d, 0x4a, 0x37, 0xd1, 0x63, 0x2f, 0xae, 0xbb, 0x32, 0x56, 0x72, 0x5e, + 0x1e, 0xcf, 0xf6, 0xfc, 0x08, 0xee, 0xc5, 0x51, 0x79, 0x6e, 0x70, 0x26, 0x8a, 0x64, 0x97, 0xe7, + 0xf8, 0x06, 0xfb, 0xf6, 0x49, 0x3d, 0xf7, 0xe8, 0x49, 0x3d, 0xf7, 0xf8, 0x89, 0xdc, 0x66, 0x77, + 0xa1, 0xcc, 0xa3, 0x51, 0x66, 0x0f, 0x82, 0xd7, 0x1d, 0xd2, 0xfa, 0x02, 0x74, 0x0e, 0x25, 0x31, + 0x2b, 0x55, 0x77, 0xb4, 0x89, 0xdd, 0x59, 0x04, 0xb0, 0x03, 0x37, 0x3d, 0x1a, 0xe3, 0x81, 0x34, + 0x7a, 0xee, 0xa3, 0x84, 0x56, 0xfb, 0xfc, 0xb3, 0x17, 0xb5, 0xdc, 0xf3, 0x17, 0xb5, 0xdc, 0x6f, + 0x2f, 0x6a, 0xb9, 0x07, 0xfb, 0x35, 0xed, 0xd9, 0x7e, 0x4d, 0x7b, 0xbe, 0x5f, 0xd3, 0xfe, 0xd8, + 0xaf, 0x69, 0x8f, 0xfe, 0xac, 0xe5, 0xee, 0x54, 0x12, 0x8d, 0xfc, 0x27, 0x00, 0x00, 0xff, 0xff, + 0xac, 0x17, 0x87, 0x87, 0xd2, 0x10, 0x00, 0x00, } diff --git a/pkg/api/unversioned/generated.proto b/pkg/api/unversioned/generated.proto index 91d3fbf6..a10e2ddb 100644 --- a/pkg/api/unversioned/generated.proto +++ b/pkg/api/unversioned/generated.proto @@ -22,6 +22,7 @@ syntax = 'proto2'; package k8s.io.kubernetes.pkg.api.unversioned; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/api/unversioned/group_version.go b/pkg/api/unversioned/group_version.go index db842aff..dd335564 100644 --- a/pkg/api/unversioned/group_version.go +++ b/pkg/api/unversioned/group_version.go @@ -20,23 +20,10 @@ import ( "encoding/json" "fmt" "strings" + + "k8s.io/client-go/pkg/runtime/schema" ) -// ParseResourceArg takes the common style of string which may be either `resource.group.com` or `resource.version.group.com` -// and parses it out into both possibilities. This code takes no responsibility for knowing which representation was intended -// but with a knowledge of all GroupVersions, calling code can take a very good guess. If there are only two segments, then -// `*GroupVersionResource` is nil. -// `resource.group.com` -> `group=com, version=group, resource=resource` and `group=group.com, resource=resource` -func ParseResourceArg(arg string) (*GroupVersionResource, GroupResource) { - var gvr *GroupVersionResource - if strings.Count(arg, ".") >= 2 { - s := strings.SplitN(arg, ".", 3) - gvr = &GroupVersionResource{Group: s[2], Version: s[1], Resource: s[0]} - } - - return gvr, ParseGroupResource(arg) -} - // GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying // concepts during lookup stages without having partially valid types // @@ -46,14 +33,6 @@ type GroupResource struct { Resource string `protobuf:"bytes,2,opt,name=resource"` } -func (gr GroupResource) WithVersion(version string) GroupVersionResource { - return GroupVersionResource{Group: gr.Group, Version: version, Resource: gr.Resource} -} - -func (gr GroupResource) Empty() bool { - return len(gr.Group) == 0 && len(gr.Resource) == 0 -} - func (gr *GroupResource) String() string { if len(gr.Group) == 0 { return gr.Resource @@ -61,16 +40,6 @@ func (gr *GroupResource) String() string { return gr.Resource + "." + gr.Group } -// ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed -// for each field. -func ParseGroupResource(gr string) GroupResource { - if i := strings.Index(gr, "."); i == -1 { - return GroupResource{Resource: gr} - } else { - return GroupResource{Group: gr[i+1:], Resource: gr[:i]} - } -} - // GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion // to avoid automatic coersion. It doesn't use a GroupVersion to avoid custom marshalling // @@ -81,18 +50,6 @@ type GroupVersionResource struct { Resource string `protobuf:"bytes,3,opt,name=resource"` } -func (gvr GroupVersionResource) Empty() bool { - return len(gvr.Group) == 0 && len(gvr.Version) == 0 && len(gvr.Resource) == 0 -} - -func (gvr GroupVersionResource) GroupResource() GroupResource { - return GroupResource{Group: gvr.Group, Resource: gvr.Resource} -} - -func (gvr GroupVersionResource) GroupVersion() GroupVersion { - return GroupVersion{Group: gvr.Group, Version: gvr.Version} -} - func (gvr *GroupVersionResource) String() string { return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "") } @@ -106,14 +63,6 @@ type GroupKind struct { Kind string `protobuf:"bytes,2,opt,name=kind"` } -func (gk GroupKind) Empty() bool { - return len(gk.Group) == 0 && len(gk.Kind) == 0 -} - -func (gk GroupKind) WithVersion(version string) GroupVersionKind { - return GroupVersionKind{Group: gk.Group, Version: version, Kind: gk.Kind} -} - func (gk *GroupKind) String() string { if len(gk.Group) == 0 { return gk.Kind @@ -131,19 +80,6 @@ type GroupVersionKind struct { Kind string `protobuf:"bytes,3,opt,name=kind"` } -// Empty returns true if group, version, and kind are empty -func (gvk GroupVersionKind) Empty() bool { - return len(gvk.Group) == 0 && len(gvk.Version) == 0 && len(gvk.Kind) == 0 -} - -func (gvk GroupVersionKind) GroupKind() GroupKind { - return GroupKind{Group: gvk.Group, Kind: gvk.Kind} -} - -func (gvk GroupVersionKind) GroupVersion() GroupVersion { - return GroupVersion{Group: gvk.Group, Version: gvk.Version} -} - func (gvk GroupVersionKind) String() string { return gvk.Group + "/" + gvk.Version + ", Kind=" + gvk.Kind } @@ -179,55 +115,6 @@ func (gv GroupVersion) String() string { return gv.Version } -// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false -// if none of the options match the group. It prefers a match to group and version over just group. -// TODO: Move GroupVersion to a package under pkg/runtime, since it's used by scheme. -// TODO: Introduce an adapter type between GroupVersion and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) -// in fewer places. -func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) { - for _, gvk := range kinds { - if gvk.Group == gv.Group && gvk.Version == gv.Version { - return gvk, true - } - } - for _, gvk := range kinds { - if gvk.Group == gv.Group { - return gv.WithKind(gvk.Kind), true - } - } - return GroupVersionKind{}, false -} - -// ParseGroupVersion turns "group/version" string into a GroupVersion struct. It reports error -// if it cannot parse the string. -func ParseGroupVersion(gv string) (GroupVersion, error) { - // this can be the internal version for the legacy kube types - // TODO once we've cleared the last uses as strings, this special case should be removed. - if (len(gv) == 0) || (gv == "/") { - return GroupVersion{}, nil - } - - switch strings.Count(gv, "/") { - case 0: - return GroupVersion{"", gv}, nil - case 1: - i := strings.Index(gv, "/") - return GroupVersion{gv[:i], gv[i+1:]}, nil - default: - return GroupVersion{}, fmt.Errorf("unexpected GroupVersion string: %v", gv) - } -} - -// WithKind creates a GroupVersionKind based on the method receiver's GroupVersion and the passed Kind. -func (gv GroupVersion) WithKind(kind string) GroupVersionKind { - return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} -} - -// WithResource creates a GroupVersionResource based on the method receiver's GroupVersion and the passed Resource. -func (gv GroupVersion) WithResource(resource string) GroupVersionResource { - return GroupVersionResource{Group: gv.Group, Version: gv.Version, Resource: resource} -} - // MarshalJSON implements the json.Marshaller interface. func (gv GroupVersion) MarshalJSON() ([]byte, error) { s := gv.String() @@ -242,11 +129,11 @@ func (gv *GroupVersion) unmarshal(value []byte) error { if err := json.Unmarshal(value, &s); err != nil { return err } - parsed, err := ParseGroupVersion(s) + parsed, err := schema.ParseGroupVersion(s) if err != nil { return err } - *gv = parsed + gv.Group, gv.Version = parsed.Group, parsed.Version return nil } @@ -259,87 +146,3 @@ func (gv *GroupVersion) UnmarshalJSON(value []byte) error { func (gv *GroupVersion) UnmarshalText(value []byte) error { return gv.unmarshal(value) } - -// GroupVersions can be used to represent a set of desired group versions. -// TODO: Move GroupVersions to a package under pkg/runtime, since it's used by scheme. -// TODO: Introduce an adapter type between GroupVersions and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) -// in fewer places. -type GroupVersions []GroupVersion - -// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false -// if none of the options match the group. -func (gvs GroupVersions) KindForGroupVersionKinds(kinds []GroupVersionKind) (GroupVersionKind, bool) { - var targets []GroupVersionKind - for _, gv := range gvs { - target, ok := gv.KindForGroupVersionKinds(kinds) - if !ok { - continue - } - targets = append(targets, target) - } - if len(targets) == 1 { - return targets[0], true - } - if len(targets) > 1 { - return bestMatch(kinds, targets), true - } - return GroupVersionKind{}, false -} - -// bestMatch tries to pick best matching GroupVersionKind and falls back to the first -// found if no exact match exists. -func bestMatch(kinds []GroupVersionKind, targets []GroupVersionKind) GroupVersionKind { - for _, gvk := range targets { - for _, k := range kinds { - if k == gvk { - return k - } - } - } - return targets[0] -} - -// ToAPIVersionAndKind is a convenience method for satisfying runtime.Object on types that -// do not use TypeMeta. -func (gvk *GroupVersionKind) ToAPIVersionAndKind() (string, string) { - if gvk == nil { - return "", "" - } - return gvk.GroupVersion().String(), gvk.Kind -} - -// FromAPIVersionAndKind returns a GVK representing the provided fields for types that -// do not use TypeMeta. This method exists to support test types and legacy serializations -// that have a distinct group and kind. -// TODO: further reduce usage of this method. -func FromAPIVersionAndKind(apiVersion, kind string) GroupVersionKind { - if gv, err := ParseGroupVersion(apiVersion); err == nil { - return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} - } - return GroupVersionKind{Kind: kind} -} - -// All objects that are serialized from a Scheme encode their type information. This interface is used -// by serialization to set type information from the Scheme onto the serialized version of an object. -// For objects that cannot be serialized or have unique requirements, this interface may be a no-op. -// TODO: this belongs in pkg/runtime, move unversioned.GVK into runtime. -type ObjectKind interface { - // SetGroupVersionKind sets or clears the intended serialized kind of an object. Passing kind nil - // should clear the current setting. - SetGroupVersionKind(kind GroupVersionKind) - // GroupVersionKind returns the stored group, version, and kind of an object, or nil if the object does - // not expose or provide these fields. - GroupVersionKind() GroupVersionKind -} - -// EmptyObjectKind implements the ObjectKind interface as a noop -// TODO: this belongs in pkg/runtime, move unversioned.GVK into runtime. -var EmptyObjectKind = emptyObjectKind{} - -type emptyObjectKind struct{} - -// SetGroupVersionKind implements the ObjectKind interface -func (emptyObjectKind) SetGroupVersionKind(gvk GroupVersionKind) {} - -// GroupVersionKind implements the ObjectKind interface -func (emptyObjectKind) GroupVersionKind() GroupVersionKind { return GroupVersionKind{} } diff --git a/pkg/api/unversioned/meta.go b/pkg/api/unversioned/meta.go index 48009da1..224bf6cf 100644 --- a/pkg/api/unversioned/meta.go +++ b/pkg/api/unversioned/meta.go @@ -16,6 +16,10 @@ limitations under the License. package unversioned +import ( + "k8s.io/client-go/pkg/runtime/schema" +) + // ListMetaAccessor retrieves the list interface from an object // TODO: move this, and TypeMeta and ListMeta, to a different package type ListMetaAccessor interface { @@ -47,16 +51,16 @@ func (meta *ListMeta) SetResourceVersion(version string) { meta.ResourceVersion func (meta *ListMeta) GetSelfLink() string { return meta.SelfLink } func (meta *ListMeta) SetSelfLink(selfLink string) { meta.SelfLink = selfLink } -func (obj *TypeMeta) GetObjectKind() ObjectKind { return obj } +func (obj *TypeMeta) GetObjectKind() schema.ObjectKind { return obj } // SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta -func (obj *TypeMeta) SetGroupVersionKind(gvk GroupVersionKind) { +func (obj *TypeMeta) SetGroupVersionKind(gvk schema.GroupVersionKind) { obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() } // GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta -func (obj *TypeMeta) GroupVersionKind() GroupVersionKind { - return FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } func (obj *ListMeta) GetListMeta() List { return obj } diff --git a/pkg/api/unversioned/register.go b/pkg/api/unversioned/register.go index 907188bc..88ff41b1 100644 --- a/pkg/api/unversioned/register.go +++ b/pkg/api/unversioned/register.go @@ -16,10 +16,14 @@ limitations under the License. package unversioned +import ( + "k8s.io/client-go/pkg/runtime/schema" +) + // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = GroupVersion{Group: "", Version: ""} +var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: ""} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } diff --git a/pkg/api/v1/generate.go b/pkg/api/v1/generate.go new file mode 100644 index 00000000..9145114e --- /dev/null +++ b/pkg/api/v1/generate.go @@ -0,0 +1,64 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "fmt" + + utilrand "k8s.io/client-go/pkg/util/rand" +) + +// NameGenerator generates names for objects. Some backends may have more information +// available to guide selection of new names and this interface hides those details. +type NameGenerator interface { + // GenerateName generates a valid name from the base name, adding a random suffix to the + // the base. If base is valid, the returned name must also be valid. The generator is + // responsible for knowing the maximum valid name length. + GenerateName(base string) string +} + +// GenerateName will resolve the object name of the provided ObjectMeta to a generated version if +// necessary. It expects that validation for ObjectMeta has already completed (that Base is a +// valid name) and that the NameGenerator generates a name that is also valid. +func GenerateName(u NameGenerator, meta *ObjectMeta) { + if len(meta.GenerateName) == 0 || len(meta.Name) != 0 { + return + } + meta.Name = u.GenerateName(meta.GenerateName) +} + +// simpleNameGenerator generates random names. +type simpleNameGenerator struct{} + +// SimpleNameGenerator is a generator that returns the name plus a random suffix of five alphanumerics +// when a name is requested. The string is guaranteed to not exceed the length of a standard Kubernetes +// name (63 characters) +var SimpleNameGenerator NameGenerator = simpleNameGenerator{} + +const ( + // TODO: make this flexible for non-core resources with alternate naming rules. + maxNameLength = 63 + randomLength = 5 + maxGeneratedNameLength = maxNameLength - randomLength +) + +func (simpleNameGenerator) GenerateName(base string) string { + if len(base) > maxGeneratedNameLength { + base = base[:maxGeneratedNameLength] + } + return fmt.Sprintf("%s%s", base, utilrand.String(randomLength)) +} diff --git a/pkg/api/v1/generated.pb.go b/pkg/api/v1/generated.pb.go index 69d224ce..ee4437c8 100644 --- a/pkg/api/v1/generated.pb.go +++ b/pkg/api/v1/generated.pb.go @@ -101,6 +101,7 @@ limitations under the License. NodeDaemonEndpoints NodeList NodeProxyOptions + NodeResources NodeSelector NodeSelectorRequirement NodeSelectorTerm @@ -173,6 +174,7 @@ limitations under the License. ServiceProxyOptions ServiceSpec ServiceStatus + Sysctl TCPSocketAction Taint Toleration @@ -521,350 +523,358 @@ func (m *NodeProxyOptions) Reset() { *m = NodeProxyOptions{} func (*NodeProxyOptions) ProtoMessage() {} func (*NodeProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{75} } +func (m *NodeResources) Reset() { *m = NodeResources{} } +func (*NodeResources) ProtoMessage() {} +func (*NodeResources) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } + func (m *NodeSelector) Reset() { *m = NodeSelector{} } func (*NodeSelector) ProtoMessage() {} -func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{76} } +func (*NodeSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{77} } func (m *NodeSelectorRequirement) Reset() { *m = NodeSelectorRequirement{} } func (*NodeSelectorRequirement) ProtoMessage() {} func (*NodeSelectorRequirement) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{77} + return fileDescriptorGenerated, []int{78} } func (m *NodeSelectorTerm) Reset() { *m = NodeSelectorTerm{} } func (*NodeSelectorTerm) ProtoMessage() {} -func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{78} } +func (*NodeSelectorTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } func (m *NodeSpec) Reset() { *m = NodeSpec{} } func (*NodeSpec) ProtoMessage() {} -func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{79} } +func (*NodeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } func (m *NodeStatus) Reset() { *m = NodeStatus{} } func (*NodeStatus) ProtoMessage() {} -func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{80} } +func (*NodeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } func (m *NodeSystemInfo) Reset() { *m = NodeSystemInfo{} } func (*NodeSystemInfo) ProtoMessage() {} -func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{81} } +func (*NodeSystemInfo) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } func (m *ObjectFieldSelector) Reset() { *m = ObjectFieldSelector{} } func (*ObjectFieldSelector) ProtoMessage() {} -func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{82} } +func (*ObjectFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{83} } func (m *ObjectMeta) Reset() { *m = ObjectMeta{} } func (*ObjectMeta) ProtoMessage() {} -func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{83} } +func (*ObjectMeta) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } func (m *ObjectReference) Reset() { *m = ObjectReference{} } func (*ObjectReference) ProtoMessage() {} -func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{84} } +func (*ObjectReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } func (m *OwnerReference) Reset() { *m = OwnerReference{} } func (*OwnerReference) ProtoMessage() {} -func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{85} } +func (*OwnerReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{86} } func (m *PersistentVolume) Reset() { *m = PersistentVolume{} } func (*PersistentVolume) ProtoMessage() {} -func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{86} } +func (*PersistentVolume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{87} } func (m *PersistentVolumeClaim) Reset() { *m = PersistentVolumeClaim{} } func (*PersistentVolumeClaim) ProtoMessage() {} -func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{87} } +func (*PersistentVolumeClaim) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{88} } func (m *PersistentVolumeClaimList) Reset() { *m = PersistentVolumeClaimList{} } func (*PersistentVolumeClaimList) ProtoMessage() {} func (*PersistentVolumeClaimList) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{88} + return fileDescriptorGenerated, []int{89} } func (m *PersistentVolumeClaimSpec) Reset() { *m = PersistentVolumeClaimSpec{} } func (*PersistentVolumeClaimSpec) ProtoMessage() {} func (*PersistentVolumeClaimSpec) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{89} + return fileDescriptorGenerated, []int{90} } func (m *PersistentVolumeClaimStatus) Reset() { *m = PersistentVolumeClaimStatus{} } func (*PersistentVolumeClaimStatus) ProtoMessage() {} func (*PersistentVolumeClaimStatus) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{90} + return fileDescriptorGenerated, []int{91} } func (m *PersistentVolumeClaimVolumeSource) Reset() { *m = PersistentVolumeClaimVolumeSource{} } func (*PersistentVolumeClaimVolumeSource) ProtoMessage() {} func (*PersistentVolumeClaimVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{91} + return fileDescriptorGenerated, []int{92} } func (m *PersistentVolumeList) Reset() { *m = PersistentVolumeList{} } func (*PersistentVolumeList) ProtoMessage() {} -func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{92} } +func (*PersistentVolumeList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{93} } func (m *PersistentVolumeSource) Reset() { *m = PersistentVolumeSource{} } func (*PersistentVolumeSource) ProtoMessage() {} -func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{93} } +func (*PersistentVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{94} } func (m *PersistentVolumeSpec) Reset() { *m = PersistentVolumeSpec{} } func (*PersistentVolumeSpec) ProtoMessage() {} -func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{94} } +func (*PersistentVolumeSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{95} } func (m *PersistentVolumeStatus) Reset() { *m = PersistentVolumeStatus{} } func (*PersistentVolumeStatus) ProtoMessage() {} -func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{95} } +func (*PersistentVolumeStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{96} } func (m *PhotonPersistentDiskVolumeSource) Reset() { *m = PhotonPersistentDiskVolumeSource{} } func (*PhotonPersistentDiskVolumeSource) ProtoMessage() {} func (*PhotonPersistentDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{96} + return fileDescriptorGenerated, []int{97} } func (m *Pod) Reset() { *m = Pod{} } func (*Pod) ProtoMessage() {} -func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{97} } +func (*Pod) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{98} } func (m *PodAffinity) Reset() { *m = PodAffinity{} } func (*PodAffinity) ProtoMessage() {} -func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{98} } +func (*PodAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{99} } func (m *PodAffinityTerm) Reset() { *m = PodAffinityTerm{} } func (*PodAffinityTerm) ProtoMessage() {} -func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{99} } +func (*PodAffinityTerm) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{100} } func (m *PodAntiAffinity) Reset() { *m = PodAntiAffinity{} } func (*PodAntiAffinity) ProtoMessage() {} -func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{100} } +func (*PodAntiAffinity) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{101} } func (m *PodAttachOptions) Reset() { *m = PodAttachOptions{} } func (*PodAttachOptions) ProtoMessage() {} -func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{101} } +func (*PodAttachOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{102} } func (m *PodCondition) Reset() { *m = PodCondition{} } func (*PodCondition) ProtoMessage() {} -func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{102} } +func (*PodCondition) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{103} } func (m *PodExecOptions) Reset() { *m = PodExecOptions{} } func (*PodExecOptions) ProtoMessage() {} -func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{103} } +func (*PodExecOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{104} } func (m *PodList) Reset() { *m = PodList{} } func (*PodList) ProtoMessage() {} -func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{104} } +func (*PodList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{105} } func (m *PodLogOptions) Reset() { *m = PodLogOptions{} } func (*PodLogOptions) ProtoMessage() {} -func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{105} } +func (*PodLogOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{106} } func (m *PodProxyOptions) Reset() { *m = PodProxyOptions{} } func (*PodProxyOptions) ProtoMessage() {} -func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{106} } +func (*PodProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } func (m *PodSecurityContext) Reset() { *m = PodSecurityContext{} } func (*PodSecurityContext) ProtoMessage() {} -func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{107} } +func (*PodSecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } func (m *PodSignature) Reset() { *m = PodSignature{} } func (*PodSignature) ProtoMessage() {} -func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{108} } +func (*PodSignature) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } func (m *PodSpec) Reset() { *m = PodSpec{} } func (*PodSpec) ProtoMessage() {} -func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{109} } +func (*PodSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } func (m *PodStatus) Reset() { *m = PodStatus{} } func (*PodStatus) ProtoMessage() {} -func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{110} } +func (*PodStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } func (m *PodStatusResult) Reset() { *m = PodStatusResult{} } func (*PodStatusResult) ProtoMessage() {} -func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{111} } +func (*PodStatusResult) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } func (m *PodTemplate) Reset() { *m = PodTemplate{} } func (*PodTemplate) ProtoMessage() {} -func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{112} } +func (*PodTemplate) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } func (m *PodTemplateList) Reset() { *m = PodTemplateList{} } func (*PodTemplateList) ProtoMessage() {} -func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{113} } +func (*PodTemplateList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } func (m *PodTemplateSpec) Reset() { *m = PodTemplateSpec{} } func (*PodTemplateSpec) ProtoMessage() {} -func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{114} } +func (*PodTemplateSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } func (m *Preconditions) Reset() { *m = Preconditions{} } func (*Preconditions) ProtoMessage() {} -func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{115} } +func (*Preconditions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } func (m *PreferAvoidPodsEntry) Reset() { *m = PreferAvoidPodsEntry{} } func (*PreferAvoidPodsEntry) ProtoMessage() {} -func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{116} } +func (*PreferAvoidPodsEntry) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{117} } func (m *PreferredSchedulingTerm) Reset() { *m = PreferredSchedulingTerm{} } func (*PreferredSchedulingTerm) ProtoMessage() {} func (*PreferredSchedulingTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{117} + return fileDescriptorGenerated, []int{118} } func (m *Probe) Reset() { *m = Probe{} } func (*Probe) ProtoMessage() {} -func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{118} } +func (*Probe) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } func (m *QuobyteVolumeSource) Reset() { *m = QuobyteVolumeSource{} } func (*QuobyteVolumeSource) ProtoMessage() {} -func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{119} } +func (*QuobyteVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } func (m *RBDVolumeSource) Reset() { *m = RBDVolumeSource{} } func (*RBDVolumeSource) ProtoMessage() {} -func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{120} } +func (*RBDVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } func (m *RangeAllocation) Reset() { *m = RangeAllocation{} } func (*RangeAllocation) ProtoMessage() {} -func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{121} } +func (*RangeAllocation) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } func (m *ReplicationController) Reset() { *m = ReplicationController{} } func (*ReplicationController) ProtoMessage() {} -func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{122} } +func (*ReplicationController) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{123} } func (m *ReplicationControllerCondition) Reset() { *m = ReplicationControllerCondition{} } func (*ReplicationControllerCondition) ProtoMessage() {} func (*ReplicationControllerCondition) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{123} + return fileDescriptorGenerated, []int{124} } func (m *ReplicationControllerList) Reset() { *m = ReplicationControllerList{} } func (*ReplicationControllerList) ProtoMessage() {} func (*ReplicationControllerList) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{124} + return fileDescriptorGenerated, []int{125} } func (m *ReplicationControllerSpec) Reset() { *m = ReplicationControllerSpec{} } func (*ReplicationControllerSpec) ProtoMessage() {} func (*ReplicationControllerSpec) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{125} + return fileDescriptorGenerated, []int{126} } func (m *ReplicationControllerStatus) Reset() { *m = ReplicationControllerStatus{} } func (*ReplicationControllerStatus) ProtoMessage() {} func (*ReplicationControllerStatus) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{126} + return fileDescriptorGenerated, []int{127} } func (m *ResourceFieldSelector) Reset() { *m = ResourceFieldSelector{} } func (*ResourceFieldSelector) ProtoMessage() {} -func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{127} } +func (*ResourceFieldSelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } func (m *ResourceQuota) Reset() { *m = ResourceQuota{} } func (*ResourceQuota) ProtoMessage() {} -func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{128} } +func (*ResourceQuota) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } func (m *ResourceQuotaList) Reset() { *m = ResourceQuotaList{} } func (*ResourceQuotaList) ProtoMessage() {} -func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{129} } +func (*ResourceQuotaList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } func (m *ResourceQuotaSpec) Reset() { *m = ResourceQuotaSpec{} } func (*ResourceQuotaSpec) ProtoMessage() {} -func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{130} } +func (*ResourceQuotaSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } func (m *ResourceQuotaStatus) Reset() { *m = ResourceQuotaStatus{} } func (*ResourceQuotaStatus) ProtoMessage() {} -func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{131} } +func (*ResourceQuotaStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } func (m *ResourceRequirements) Reset() { *m = ResourceRequirements{} } func (*ResourceRequirements) ProtoMessage() {} -func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{132} } +func (*ResourceRequirements) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } func (m *SELinuxOptions) Reset() { *m = SELinuxOptions{} } func (*SELinuxOptions) ProtoMessage() {} -func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{133} } +func (*SELinuxOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } func (m *Secret) Reset() { *m = Secret{} } func (*Secret) ProtoMessage() {} -func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{134} } +func (*Secret) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{135} } func (m *SecretKeySelector) Reset() { *m = SecretKeySelector{} } func (*SecretKeySelector) ProtoMessage() {} -func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{135} } +func (*SecretKeySelector) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{136} } func (m *SecretList) Reset() { *m = SecretList{} } func (*SecretList) ProtoMessage() {} -func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{136} } +func (*SecretList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{137} } func (m *SecretVolumeSource) Reset() { *m = SecretVolumeSource{} } func (*SecretVolumeSource) ProtoMessage() {} -func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{137} } +func (*SecretVolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } func (m *SecurityContext) Reset() { *m = SecurityContext{} } func (*SecurityContext) ProtoMessage() {} -func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{138} } +func (*SecurityContext) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } func (m *SerializedReference) Reset() { *m = SerializedReference{} } func (*SerializedReference) ProtoMessage() {} -func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{139} } +func (*SerializedReference) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } func (m *Service) Reset() { *m = Service{} } func (*Service) ProtoMessage() {} -func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{140} } +func (*Service) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } func (m *ServiceAccount) Reset() { *m = ServiceAccount{} } func (*ServiceAccount) ProtoMessage() {} -func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{141} } +func (*ServiceAccount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } func (m *ServiceAccountList) Reset() { *m = ServiceAccountList{} } func (*ServiceAccountList) ProtoMessage() {} -func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{142} } +func (*ServiceAccountList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } func (m *ServiceList) Reset() { *m = ServiceList{} } func (*ServiceList) ProtoMessage() {} -func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{143} } +func (*ServiceList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } func (m *ServicePort) Reset() { *m = ServicePort{} } func (*ServicePort) ProtoMessage() {} -func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{144} } +func (*ServicePort) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } func (m *ServiceProxyOptions) Reset() { *m = ServiceProxyOptions{} } func (*ServiceProxyOptions) ProtoMessage() {} -func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{145} } +func (*ServiceProxyOptions) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } func (m *ServiceSpec) Reset() { *m = ServiceSpec{} } func (*ServiceSpec) ProtoMessage() {} -func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{146} } +func (*ServiceSpec) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } func (m *ServiceStatus) Reset() { *m = ServiceStatus{} } func (*ServiceStatus) ProtoMessage() {} -func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{147} } +func (*ServiceStatus) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } + +func (m *Sysctl) Reset() { *m = Sysctl{} } +func (*Sysctl) ProtoMessage() {} +func (*Sysctl) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } func (m *TCPSocketAction) Reset() { *m = TCPSocketAction{} } func (*TCPSocketAction) ProtoMessage() {} -func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{148} } +func (*TCPSocketAction) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } func (m *Taint) Reset() { *m = Taint{} } func (*Taint) ProtoMessage() {} -func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{149} } +func (*Taint) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } func (m *Toleration) Reset() { *m = Toleration{} } func (*Toleration) ProtoMessage() {} -func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{150} } +func (*Toleration) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } func (m *Volume) Reset() { *m = Volume{} } func (*Volume) ProtoMessage() {} -func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{151} } +func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } func (m *VolumeMount) Reset() { *m = VolumeMount{} } func (*VolumeMount) ProtoMessage() {} -func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{152} } +func (*VolumeMount) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{154} } func (m *VolumeSource) Reset() { *m = VolumeSource{} } func (*VolumeSource) ProtoMessage() {} -func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{153} } +func (*VolumeSource) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{155} } func (m *VsphereVirtualDiskVolumeSource) Reset() { *m = VsphereVirtualDiskVolumeSource{} } func (*VsphereVirtualDiskVolumeSource) ProtoMessage() {} func (*VsphereVirtualDiskVolumeSource) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{154} + return fileDescriptorGenerated, []int{156} } func (m *WeightedPodAffinityTerm) Reset() { *m = WeightedPodAffinityTerm{} } func (*WeightedPodAffinityTerm) ProtoMessage() {} func (*WeightedPodAffinityTerm) Descriptor() ([]byte, []int) { - return fileDescriptorGenerated, []int{155} + return fileDescriptorGenerated, []int{157} } func init() { @@ -944,6 +954,7 @@ func init() { proto.RegisterType((*NodeDaemonEndpoints)(nil), "k8s.io.client-go.pkg.api.v1.NodeDaemonEndpoints") proto.RegisterType((*NodeList)(nil), "k8s.io.client-go.pkg.api.v1.NodeList") proto.RegisterType((*NodeProxyOptions)(nil), "k8s.io.client-go.pkg.api.v1.NodeProxyOptions") + proto.RegisterType((*NodeResources)(nil), "k8s.io.client-go.pkg.api.v1.NodeResources") proto.RegisterType((*NodeSelector)(nil), "k8s.io.client-go.pkg.api.v1.NodeSelector") proto.RegisterType((*NodeSelectorRequirement)(nil), "k8s.io.client-go.pkg.api.v1.NodeSelectorRequirement") proto.RegisterType((*NodeSelectorTerm)(nil), "k8s.io.client-go.pkg.api.v1.NodeSelectorTerm") @@ -1016,6 +1027,7 @@ func init() { proto.RegisterType((*ServiceProxyOptions)(nil), "k8s.io.client-go.pkg.api.v1.ServiceProxyOptions") proto.RegisterType((*ServiceSpec)(nil), "k8s.io.client-go.pkg.api.v1.ServiceSpec") proto.RegisterType((*ServiceStatus)(nil), "k8s.io.client-go.pkg.api.v1.ServiceStatus") + proto.RegisterType((*Sysctl)(nil), "k8s.io.client-go.pkg.api.v1.Sysctl") proto.RegisterType((*TCPSocketAction)(nil), "k8s.io.client-go.pkg.api.v1.TCPSocketAction") proto.RegisterType((*Taint)(nil), "k8s.io.client-go.pkg.api.v1.Taint") proto.RegisterType((*Toleration)(nil), "k8s.io.client-go.pkg.api.v1.Toleration") @@ -4129,6 +4141,46 @@ func (m *NodeProxyOptions) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *NodeResources) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *NodeResources) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + if len(m.Capacity) > 0 { + for k := range m.Capacity { + data[i] = 0xa + i++ + v := m.Capacity[k] + msgSize := (&v).Size() + mapSize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + msgSize + sovGenerated(uint64(msgSize)) + i = encodeVarintGenerated(data, i, uint64(mapSize)) + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(k))) + i += copy(data[i:], k) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64((&v).Size())) + n71, err := (&v).MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n71 + } + } + return i, nil +} + func (m *NodeSelector) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -4298,11 +4350,11 @@ func (m *NodeStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n71, err := (&v).MarshalTo(data[i:]) + n72, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n71 + i += n72 } } if len(m.Allocatable) > 0 { @@ -4320,11 +4372,11 @@ func (m *NodeStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n72, err := (&v).MarshalTo(data[i:]) + n73, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n72 + i += n73 } } data[i] = 0x1a @@ -4358,19 +4410,19 @@ func (m *NodeStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x32 i++ i = encodeVarintGenerated(data, i, uint64(m.DaemonEndpoints.Size())) - n73, err := m.DaemonEndpoints.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n73 - data[i] = 0x3a - i++ - i = encodeVarintGenerated(data, i, uint64(m.NodeInfo.Size())) - n74, err := m.NodeInfo.MarshalTo(data[i:]) + n74, err := m.DaemonEndpoints.MarshalTo(data[i:]) if err != nil { return 0, err } i += n74 + data[i] = 0x3a + i++ + i = encodeVarintGenerated(data, i, uint64(m.NodeInfo.Size())) + n75, err := m.NodeInfo.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n75 if len(m.Images) > 0 { for _, msg := range m.Images { data[i] = 0x42 @@ -4542,20 +4594,20 @@ func (m *ObjectMeta) MarshalTo(data []byte) (int, error) { data[i] = 0x42 i++ i = encodeVarintGenerated(data, i, uint64(m.CreationTimestamp.Size())) - n75, err := m.CreationTimestamp.MarshalTo(data[i:]) + n76, err := m.CreationTimestamp.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n75 + i += n76 if m.DeletionTimestamp != nil { data[i] = 0x4a i++ i = encodeVarintGenerated(data, i, uint64(m.DeletionTimestamp.Size())) - n76, err := m.DeletionTimestamp.MarshalTo(data[i:]) + n77, err := m.DeletionTimestamp.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n76 + i += n77 } if m.DeletionGracePeriodSeconds != nil { data[i] = 0x50 @@ -4738,27 +4790,27 @@ func (m *PersistentVolume) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n77, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n77 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n78, err := m.Spec.MarshalTo(data[i:]) + n78, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n78 - data[i] = 0x1a + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n79, err := m.Status.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n79, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } i += n79 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n80, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n80 return i, nil } @@ -4780,27 +4832,27 @@ func (m *PersistentVolumeClaim) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n80, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n80 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n81, err := m.Spec.MarshalTo(data[i:]) + n81, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n81 - data[i] = 0x1a + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n82, err := m.Status.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n82, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } i += n82 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n83, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n83 return i, nil } @@ -4822,11 +4874,11 @@ func (m *PersistentVolumeClaimList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n83, err := m.ListMeta.MarshalTo(data[i:]) + n84, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n83 + i += n84 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -4875,11 +4927,11 @@ func (m *PersistentVolumeClaimSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(m.Resources.Size())) - n84, err := m.Resources.MarshalTo(data[i:]) + n85, err := m.Resources.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n84 + i += n85 data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(len(m.VolumeName))) @@ -4888,11 +4940,11 @@ func (m *PersistentVolumeClaimSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x22 i++ i = encodeVarintGenerated(data, i, uint64(m.Selector.Size())) - n85, err := m.Selector.MarshalTo(data[i:]) + n86, err := m.Selector.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n85 + i += n86 } return i, nil } @@ -4946,11 +4998,11 @@ func (m *PersistentVolumeClaimStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n86, err := (&v).MarshalTo(data[i:]) + n87, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n86 + i += n87 } } return i, nil @@ -5004,11 +5056,11 @@ func (m *PersistentVolumeList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n87, err := m.ListMeta.MarshalTo(data[i:]) + n88, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n87 + i += n88 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -5043,163 +5095,163 @@ func (m *PersistentVolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.GCEPersistentDisk.Size())) - n88, err := m.GCEPersistentDisk.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n88 - } - if m.AWSElasticBlockStore != nil { - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.AWSElasticBlockStore.Size())) - n89, err := m.AWSElasticBlockStore.MarshalTo(data[i:]) + n89, err := m.GCEPersistentDisk.MarshalTo(data[i:]) if err != nil { return 0, err } i += n89 } - if m.HostPath != nil { - data[i] = 0x1a + if m.AWSElasticBlockStore != nil { + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.HostPath.Size())) - n90, err := m.HostPath.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.AWSElasticBlockStore.Size())) + n90, err := m.AWSElasticBlockStore.MarshalTo(data[i:]) if err != nil { return 0, err } i += n90 } - if m.Glusterfs != nil { - data[i] = 0x22 + if m.HostPath != nil { + data[i] = 0x1a i++ - i = encodeVarintGenerated(data, i, uint64(m.Glusterfs.Size())) - n91, err := m.Glusterfs.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.HostPath.Size())) + n91, err := m.HostPath.MarshalTo(data[i:]) if err != nil { return 0, err } i += n91 } - if m.NFS != nil { - data[i] = 0x2a + if m.Glusterfs != nil { + data[i] = 0x22 i++ - i = encodeVarintGenerated(data, i, uint64(m.NFS.Size())) - n92, err := m.NFS.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Glusterfs.Size())) + n92, err := m.Glusterfs.MarshalTo(data[i:]) if err != nil { return 0, err } i += n92 } - if m.RBD != nil { - data[i] = 0x32 + if m.NFS != nil { + data[i] = 0x2a i++ - i = encodeVarintGenerated(data, i, uint64(m.RBD.Size())) - n93, err := m.RBD.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.NFS.Size())) + n93, err := m.NFS.MarshalTo(data[i:]) if err != nil { return 0, err } i += n93 } - if m.ISCSI != nil { - data[i] = 0x3a + if m.RBD != nil { + data[i] = 0x32 i++ - i = encodeVarintGenerated(data, i, uint64(m.ISCSI.Size())) - n94, err := m.ISCSI.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.RBD.Size())) + n94, err := m.RBD.MarshalTo(data[i:]) if err != nil { return 0, err } i += n94 } - if m.Cinder != nil { - data[i] = 0x42 + if m.ISCSI != nil { + data[i] = 0x3a i++ - i = encodeVarintGenerated(data, i, uint64(m.Cinder.Size())) - n95, err := m.Cinder.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.ISCSI.Size())) + n95, err := m.ISCSI.MarshalTo(data[i:]) if err != nil { return 0, err } i += n95 } - if m.CephFS != nil { - data[i] = 0x4a + if m.Cinder != nil { + data[i] = 0x42 i++ - i = encodeVarintGenerated(data, i, uint64(m.CephFS.Size())) - n96, err := m.CephFS.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Cinder.Size())) + n96, err := m.Cinder.MarshalTo(data[i:]) if err != nil { return 0, err } i += n96 } - if m.FC != nil { - data[i] = 0x52 + if m.CephFS != nil { + data[i] = 0x4a i++ - i = encodeVarintGenerated(data, i, uint64(m.FC.Size())) - n97, err := m.FC.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.CephFS.Size())) + n97, err := m.CephFS.MarshalTo(data[i:]) if err != nil { return 0, err } i += n97 } - if m.Flocker != nil { - data[i] = 0x5a + if m.FC != nil { + data[i] = 0x52 i++ - i = encodeVarintGenerated(data, i, uint64(m.Flocker.Size())) - n98, err := m.Flocker.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.FC.Size())) + n98, err := m.FC.MarshalTo(data[i:]) if err != nil { return 0, err } i += n98 } - if m.FlexVolume != nil { - data[i] = 0x62 + if m.Flocker != nil { + data[i] = 0x5a i++ - i = encodeVarintGenerated(data, i, uint64(m.FlexVolume.Size())) - n99, err := m.FlexVolume.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Flocker.Size())) + n99, err := m.Flocker.MarshalTo(data[i:]) if err != nil { return 0, err } i += n99 } - if m.AzureFile != nil { - data[i] = 0x6a + if m.FlexVolume != nil { + data[i] = 0x62 i++ - i = encodeVarintGenerated(data, i, uint64(m.AzureFile.Size())) - n100, err := m.AzureFile.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.FlexVolume.Size())) + n100, err := m.FlexVolume.MarshalTo(data[i:]) if err != nil { return 0, err } i += n100 } - if m.VsphereVolume != nil { - data[i] = 0x72 + if m.AzureFile != nil { + data[i] = 0x6a i++ - i = encodeVarintGenerated(data, i, uint64(m.VsphereVolume.Size())) - n101, err := m.VsphereVolume.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.AzureFile.Size())) + n101, err := m.AzureFile.MarshalTo(data[i:]) if err != nil { return 0, err } i += n101 } - if m.Quobyte != nil { - data[i] = 0x7a + if m.VsphereVolume != nil { + data[i] = 0x72 i++ - i = encodeVarintGenerated(data, i, uint64(m.Quobyte.Size())) - n102, err := m.Quobyte.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.VsphereVolume.Size())) + n102, err := m.VsphereVolume.MarshalTo(data[i:]) if err != nil { return 0, err } i += n102 } + if m.Quobyte != nil { + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Quobyte.Size())) + n103, err := m.Quobyte.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n103 + } if m.AzureDisk != nil { data[i] = 0x82 i++ data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.AzureDisk.Size())) - n103, err := m.AzureDisk.MarshalTo(data[i:]) + n104, err := m.AzureDisk.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n103 + i += n104 } if m.PhotonPersistentDisk != nil { data[i] = 0x8a @@ -5207,11 +5259,11 @@ func (m *PersistentVolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.PhotonPersistentDisk.Size())) - n104, err := m.PhotonPersistentDisk.MarshalTo(data[i:]) + n105, err := m.PhotonPersistentDisk.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n104 + i += n105 } return i, nil } @@ -5246,21 +5298,21 @@ func (m *PersistentVolumeSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n105, err := (&v).MarshalTo(data[i:]) + n106, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n105 + i += n106 } } data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(m.PersistentVolumeSource.Size())) - n106, err := m.PersistentVolumeSource.MarshalTo(data[i:]) + n107, err := m.PersistentVolumeSource.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n106 + i += n107 if len(m.AccessModes) > 0 { for _, s := range m.AccessModes { data[i] = 0x1a @@ -5280,11 +5332,11 @@ func (m *PersistentVolumeSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x22 i++ i = encodeVarintGenerated(data, i, uint64(m.ClaimRef.Size())) - n107, err := m.ClaimRef.MarshalTo(data[i:]) + n108, err := m.ClaimRef.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n107 + i += n108 } data[i] = 0x2a i++ @@ -5367,27 +5419,27 @@ func (m *Pod) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n108, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n108 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n109, err := m.Spec.MarshalTo(data[i:]) + n109, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n109 - data[i] = 0x1a + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n110, err := m.Status.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n110, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } i += n110 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n111, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n111 return i, nil } @@ -5452,11 +5504,11 @@ func (m *PodAffinityTerm) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.LabelSelector.Size())) - n111, err := m.LabelSelector.MarshalTo(data[i:]) + n112, err := m.LabelSelector.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n111 + i += n112 } if len(m.Namespaces) > 0 { for _, s := range m.Namespaces { @@ -5602,19 +5654,19 @@ func (m *PodCondition) MarshalTo(data []byte) (int, error) { data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(m.LastProbeTime.Size())) - n112, err := m.LastProbeTime.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n112 - data[i] = 0x22 - i++ - i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) - n113, err := m.LastTransitionTime.MarshalTo(data[i:]) + n113, err := m.LastProbeTime.MarshalTo(data[i:]) if err != nil { return 0, err } i += n113 + data[i] = 0x22 + i++ + i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) + n114, err := m.LastTransitionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n114 data[i] = 0x2a i++ i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) @@ -5713,11 +5765,11 @@ func (m *PodList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n114, err := m.ListMeta.MarshalTo(data[i:]) + n115, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n114 + i += n115 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -5777,11 +5829,11 @@ func (m *PodLogOptions) MarshalTo(data []byte) (int, error) { data[i] = 0x2a i++ i = encodeVarintGenerated(data, i, uint64(m.SinceTime.Size())) - n115, err := m.SinceTime.MarshalTo(data[i:]) + n116, err := m.SinceTime.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n115 + i += n116 } data[i] = 0x30 i++ @@ -5845,11 +5897,11 @@ func (m *PodSecurityContext) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.SELinuxOptions.Size())) - n116, err := m.SELinuxOptions.MarshalTo(data[i:]) + n117, err := m.SELinuxOptions.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n116 + i += n117 } if m.RunAsUser != nil { data[i] = 0x10 @@ -5900,11 +5952,11 @@ func (m *PodSignature) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.PodController.Size())) - n117, err := m.PodController.MarshalTo(data[i:]) + n118, err := m.PodController.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n117 + i += n118 } return i, nil } @@ -6023,11 +6075,11 @@ func (m *PodSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x72 i++ i = encodeVarintGenerated(data, i, uint64(m.SecurityContext.Size())) - n118, err := m.SecurityContext.MarshalTo(data[i:]) + n119, err := m.SecurityContext.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n118 + i += n119 } if len(m.ImagePullSecrets) > 0 { for _, msg := range m.ImagePullSecrets { @@ -6107,11 +6159,11 @@ func (m *PodStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x3a i++ i = encodeVarintGenerated(data, i, uint64(m.StartTime.Size())) - n119, err := m.StartTime.MarshalTo(data[i:]) + n120, err := m.StartTime.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n119 + i += n120 } if len(m.ContainerStatuses) > 0 { for _, msg := range m.ContainerStatuses { @@ -6146,19 +6198,19 @@ func (m *PodStatusResult) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n120, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n120 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n121, err := m.Status.MarshalTo(data[i:]) + n121, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n121 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n122, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n122 return i, nil } @@ -6180,19 +6232,19 @@ func (m *PodTemplate) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n122, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n122 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) - n123, err := m.Template.MarshalTo(data[i:]) + n123, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n123 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) + n124, err := m.Template.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n124 return i, nil } @@ -6214,11 +6266,11 @@ func (m *PodTemplateList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n124, err := m.ListMeta.MarshalTo(data[i:]) + n125, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n124 + i += n125 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -6252,19 +6304,19 @@ func (m *PodTemplateSpec) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n125, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n125 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n126, err := m.Spec.MarshalTo(data[i:]) + n126, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n126 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n127, err := m.Spec.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n127 return i, nil } @@ -6310,19 +6362,19 @@ func (m *PreferAvoidPodsEntry) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.PodSignature.Size())) - n127, err := m.PodSignature.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n127 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.EvictionTime.Size())) - n128, err := m.EvictionTime.MarshalTo(data[i:]) + n128, err := m.PodSignature.MarshalTo(data[i:]) if err != nil { return 0, err } i += n128 + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(m.EvictionTime.Size())) + n129, err := m.EvictionTime.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n129 data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) @@ -6355,11 +6407,11 @@ func (m *PreferredSchedulingTerm) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(m.Preference.Size())) - n129, err := m.Preference.MarshalTo(data[i:]) + n130, err := m.Preference.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n129 + i += n130 return i, nil } @@ -6381,11 +6433,11 @@ func (m *Probe) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.Handler.Size())) - n130, err := m.Handler.MarshalTo(data[i:]) + n131, err := m.Handler.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n130 + i += n131 data[i] = 0x10 i++ i = encodeVarintGenerated(data, i, uint64(m.InitialDelaySeconds)) @@ -6500,11 +6552,11 @@ func (m *RBDVolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x3a i++ i = encodeVarintGenerated(data, i, uint64(m.SecretRef.Size())) - n131, err := m.SecretRef.MarshalTo(data[i:]) + n132, err := m.SecretRef.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n131 + i += n132 } data[i] = 0x40 i++ @@ -6535,11 +6587,11 @@ func (m *RangeAllocation) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n132, err := m.ObjectMeta.MarshalTo(data[i:]) + n133, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n132 + i += n133 data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(len(m.Range))) @@ -6571,27 +6623,27 @@ func (m *ReplicationController) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n133, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n133 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n134, err := m.Spec.MarshalTo(data[i:]) + n134, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n134 - data[i] = 0x1a + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n135, err := m.Status.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n135, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } i += n135 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n136, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n136 return i, nil } @@ -6621,11 +6673,11 @@ func (m *ReplicationControllerCondition) MarshalTo(data []byte) (int, error) { data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(m.LastTransitionTime.Size())) - n136, err := m.LastTransitionTime.MarshalTo(data[i:]) + n137, err := m.LastTransitionTime.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n136 + i += n137 data[i] = 0x22 i++ i = encodeVarintGenerated(data, i, uint64(len(m.Reason))) @@ -6655,11 +6707,11 @@ func (m *ReplicationControllerList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n137, err := m.ListMeta.MarshalTo(data[i:]) + n138, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n137 + i += n138 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -6716,11 +6768,11 @@ func (m *ReplicationControllerSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(m.Template.Size())) - n138, err := m.Template.MarshalTo(data[i:]) + n139, err := m.Template.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n138 + i += n139 } data[i] = 0x20 i++ @@ -6799,11 +6851,11 @@ func (m *ResourceFieldSelector) MarshalTo(data []byte) (int, error) { data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(m.Divisor.Size())) - n139, err := m.Divisor.MarshalTo(data[i:]) + n140, err := m.Divisor.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n139 + i += n140 return i, nil } @@ -6825,27 +6877,27 @@ func (m *ResourceQuota) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n140, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n140 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n141, err := m.Spec.MarshalTo(data[i:]) + n141, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n141 - data[i] = 0x1a + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n142, err := m.Status.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n142, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } i += n142 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n143, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n143 return i, nil } @@ -6867,11 +6919,11 @@ func (m *ResourceQuotaList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n143, err := m.ListMeta.MarshalTo(data[i:]) + n144, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n143 + i += n144 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -6917,11 +6969,11 @@ func (m *ResourceQuotaSpec) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n144, err := (&v).MarshalTo(data[i:]) + n145, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n144 + i += n145 } } if len(m.Scopes) > 0 { @@ -6972,11 +7024,11 @@ func (m *ResourceQuotaStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n145, err := (&v).MarshalTo(data[i:]) + n146, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n145 + i += n146 } } if len(m.Used) > 0 { @@ -6994,11 +7046,11 @@ func (m *ResourceQuotaStatus) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n146, err := (&v).MarshalTo(data[i:]) + n147, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n146 + i += n147 } } return i, nil @@ -7034,11 +7086,11 @@ func (m *ResourceRequirements) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n147, err := (&v).MarshalTo(data[i:]) + n148, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n147 + i += n148 } } if len(m.Requests) > 0 { @@ -7056,11 +7108,11 @@ func (m *ResourceRequirements) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64((&v).Size())) - n148, err := (&v).MarshalTo(data[i:]) + n149, err := (&v).MarshalTo(data[i:]) if err != nil { return 0, err } - i += n148 + i += n149 } } return i, nil @@ -7118,11 +7170,11 @@ func (m *Secret) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n149, err := m.ObjectMeta.MarshalTo(data[i:]) + n150, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n149 + i += n150 if len(m.Data) > 0 { for k := range m.Data { data[i] = 0x12 @@ -7182,11 +7234,11 @@ func (m *SecretKeySelector) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.LocalObjectReference.Size())) - n150, err := m.LocalObjectReference.MarshalTo(data[i:]) + n151, err := m.LocalObjectReference.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n150 + i += n151 data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(len(m.Key))) @@ -7212,11 +7264,11 @@ func (m *SecretList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n151, err := m.ListMeta.MarshalTo(data[i:]) + n152, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n151 + i += n152 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -7290,11 +7342,11 @@ func (m *SecurityContext) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.Capabilities.Size())) - n152, err := m.Capabilities.MarshalTo(data[i:]) + n153, err := m.Capabilities.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n152 + i += n153 } if m.Privileged != nil { data[i] = 0x10 @@ -7310,11 +7362,11 @@ func (m *SecurityContext) MarshalTo(data []byte) (int, error) { data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(m.SELinuxOptions.Size())) - n153, err := m.SELinuxOptions.MarshalTo(data[i:]) + n154, err := m.SELinuxOptions.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n153 + i += n154 } if m.RunAsUser != nil { data[i] = 0x20 @@ -7362,11 +7414,11 @@ func (m *SerializedReference) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.Reference.Size())) - n154, err := m.Reference.MarshalTo(data[i:]) + n155, err := m.Reference.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n154 + i += n155 return i, nil } @@ -7388,27 +7440,27 @@ func (m *Service) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n155, err := m.ObjectMeta.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n155 - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) - n156, err := m.Spec.MarshalTo(data[i:]) + n156, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } i += n156 - data[i] = 0x1a + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) - n157, err := m.Status.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Spec.Size())) + n157, err := m.Spec.MarshalTo(data[i:]) if err != nil { return 0, err } i += n157 + data[i] = 0x1a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Status.Size())) + n158, err := m.Status.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n158 return i, nil } @@ -7430,11 +7482,11 @@ func (m *ServiceAccount) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n158, err := m.ObjectMeta.MarshalTo(data[i:]) + n159, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n158 + i += n159 if len(m.Secrets) > 0 { for _, msg := range m.Secrets { data[i] = 0x12 @@ -7480,11 +7532,11 @@ func (m *ServiceAccountList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n159, err := m.ListMeta.MarshalTo(data[i:]) + n160, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n159 + i += n160 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -7518,11 +7570,11 @@ func (m *ServiceList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n160, err := m.ListMeta.MarshalTo(data[i:]) + n161, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n160 + i += n161 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -7567,11 +7619,11 @@ func (m *ServicePort) MarshalTo(data []byte) (int, error) { data[i] = 0x22 i++ i = encodeVarintGenerated(data, i, uint64(m.TargetPort.Size())) - n161, err := m.TargetPort.MarshalTo(data[i:]) + n162, err := m.TargetPort.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n161 + i += n162 data[i] = 0x28 i++ i = encodeVarintGenerated(data, i, uint64(m.NodePort)) @@ -7730,11 +7782,37 @@ func (m *ServiceStatus) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.LoadBalancer.Size())) - n162, err := m.LoadBalancer.MarshalTo(data[i:]) + n163, err := m.LoadBalancer.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n162 + i += n163 + return i, nil +} + +func (m *Sysctl) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *Sysctl) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Name))) + i += copy(data[i:], m.Name) + data[i] = 0x12 + i++ + i = encodeVarintGenerated(data, i, uint64(len(m.Value))) + i += copy(data[i:], m.Value) return i, nil } @@ -7756,11 +7834,11 @@ func (m *TCPSocketAction) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.Port.Size())) - n163, err := m.Port.MarshalTo(data[i:]) + n164, err := m.Port.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n163 + i += n164 return i, nil } @@ -7850,11 +7928,11 @@ func (m *Volume) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(m.VolumeSource.Size())) - n164, err := m.VolumeSource.MarshalTo(data[i:]) + n165, err := m.VolumeSource.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n164 + i += n165 return i, nil } @@ -7915,163 +7993,163 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.HostPath.Size())) - n165, err := m.HostPath.MarshalTo(data[i:]) - if err != nil { - return 0, err - } - i += n165 - } - if m.EmptyDir != nil { - data[i] = 0x12 - i++ - i = encodeVarintGenerated(data, i, uint64(m.EmptyDir.Size())) - n166, err := m.EmptyDir.MarshalTo(data[i:]) + n166, err := m.HostPath.MarshalTo(data[i:]) if err != nil { return 0, err } i += n166 } - if m.GCEPersistentDisk != nil { - data[i] = 0x1a + if m.EmptyDir != nil { + data[i] = 0x12 i++ - i = encodeVarintGenerated(data, i, uint64(m.GCEPersistentDisk.Size())) - n167, err := m.GCEPersistentDisk.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.EmptyDir.Size())) + n167, err := m.EmptyDir.MarshalTo(data[i:]) if err != nil { return 0, err } i += n167 } - if m.AWSElasticBlockStore != nil { - data[i] = 0x22 + if m.GCEPersistentDisk != nil { + data[i] = 0x1a i++ - i = encodeVarintGenerated(data, i, uint64(m.AWSElasticBlockStore.Size())) - n168, err := m.AWSElasticBlockStore.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.GCEPersistentDisk.Size())) + n168, err := m.GCEPersistentDisk.MarshalTo(data[i:]) if err != nil { return 0, err } i += n168 } - if m.GitRepo != nil { - data[i] = 0x2a + if m.AWSElasticBlockStore != nil { + data[i] = 0x22 i++ - i = encodeVarintGenerated(data, i, uint64(m.GitRepo.Size())) - n169, err := m.GitRepo.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.AWSElasticBlockStore.Size())) + n169, err := m.AWSElasticBlockStore.MarshalTo(data[i:]) if err != nil { return 0, err } i += n169 } - if m.Secret != nil { - data[i] = 0x32 + if m.GitRepo != nil { + data[i] = 0x2a i++ - i = encodeVarintGenerated(data, i, uint64(m.Secret.Size())) - n170, err := m.Secret.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.GitRepo.Size())) + n170, err := m.GitRepo.MarshalTo(data[i:]) if err != nil { return 0, err } i += n170 } - if m.NFS != nil { - data[i] = 0x3a + if m.Secret != nil { + data[i] = 0x32 i++ - i = encodeVarintGenerated(data, i, uint64(m.NFS.Size())) - n171, err := m.NFS.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Secret.Size())) + n171, err := m.Secret.MarshalTo(data[i:]) if err != nil { return 0, err } i += n171 } - if m.ISCSI != nil { - data[i] = 0x42 + if m.NFS != nil { + data[i] = 0x3a i++ - i = encodeVarintGenerated(data, i, uint64(m.ISCSI.Size())) - n172, err := m.ISCSI.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.NFS.Size())) + n172, err := m.NFS.MarshalTo(data[i:]) if err != nil { return 0, err } i += n172 } - if m.Glusterfs != nil { - data[i] = 0x4a + if m.ISCSI != nil { + data[i] = 0x42 i++ - i = encodeVarintGenerated(data, i, uint64(m.Glusterfs.Size())) - n173, err := m.Glusterfs.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.ISCSI.Size())) + n173, err := m.ISCSI.MarshalTo(data[i:]) if err != nil { return 0, err } i += n173 } - if m.PersistentVolumeClaim != nil { - data[i] = 0x52 + if m.Glusterfs != nil { + data[i] = 0x4a i++ - i = encodeVarintGenerated(data, i, uint64(m.PersistentVolumeClaim.Size())) - n174, err := m.PersistentVolumeClaim.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Glusterfs.Size())) + n174, err := m.Glusterfs.MarshalTo(data[i:]) if err != nil { return 0, err } i += n174 } - if m.RBD != nil { - data[i] = 0x5a + if m.PersistentVolumeClaim != nil { + data[i] = 0x52 i++ - i = encodeVarintGenerated(data, i, uint64(m.RBD.Size())) - n175, err := m.RBD.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.PersistentVolumeClaim.Size())) + n175, err := m.PersistentVolumeClaim.MarshalTo(data[i:]) if err != nil { return 0, err } i += n175 } - if m.FlexVolume != nil { - data[i] = 0x62 + if m.RBD != nil { + data[i] = 0x5a i++ - i = encodeVarintGenerated(data, i, uint64(m.FlexVolume.Size())) - n176, err := m.FlexVolume.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.RBD.Size())) + n176, err := m.RBD.MarshalTo(data[i:]) if err != nil { return 0, err } i += n176 } - if m.Cinder != nil { - data[i] = 0x6a + if m.FlexVolume != nil { + data[i] = 0x62 i++ - i = encodeVarintGenerated(data, i, uint64(m.Cinder.Size())) - n177, err := m.Cinder.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.FlexVolume.Size())) + n177, err := m.FlexVolume.MarshalTo(data[i:]) if err != nil { return 0, err } i += n177 } - if m.CephFS != nil { - data[i] = 0x72 + if m.Cinder != nil { + data[i] = 0x6a i++ - i = encodeVarintGenerated(data, i, uint64(m.CephFS.Size())) - n178, err := m.CephFS.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.Cinder.Size())) + n178, err := m.Cinder.MarshalTo(data[i:]) if err != nil { return 0, err } i += n178 } - if m.Flocker != nil { - data[i] = 0x7a + if m.CephFS != nil { + data[i] = 0x72 i++ - i = encodeVarintGenerated(data, i, uint64(m.Flocker.Size())) - n179, err := m.Flocker.MarshalTo(data[i:]) + i = encodeVarintGenerated(data, i, uint64(m.CephFS.Size())) + n179, err := m.CephFS.MarshalTo(data[i:]) if err != nil { return 0, err } i += n179 } + if m.Flocker != nil { + data[i] = 0x7a + i++ + i = encodeVarintGenerated(data, i, uint64(m.Flocker.Size())) + n180, err := m.Flocker.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n180 + } if m.DownwardAPI != nil { data[i] = 0x82 i++ data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.DownwardAPI.Size())) - n180, err := m.DownwardAPI.MarshalTo(data[i:]) + n181, err := m.DownwardAPI.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n180 + i += n181 } if m.FC != nil { data[i] = 0x8a @@ -8079,11 +8157,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.FC.Size())) - n181, err := m.FC.MarshalTo(data[i:]) + n182, err := m.FC.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n181 + i += n182 } if m.AzureFile != nil { data[i] = 0x92 @@ -8091,11 +8169,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.AzureFile.Size())) - n182, err := m.AzureFile.MarshalTo(data[i:]) + n183, err := m.AzureFile.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n182 + i += n183 } if m.ConfigMap != nil { data[i] = 0x9a @@ -8103,11 +8181,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.ConfigMap.Size())) - n183, err := m.ConfigMap.MarshalTo(data[i:]) + n184, err := m.ConfigMap.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n183 + i += n184 } if m.VsphereVolume != nil { data[i] = 0xa2 @@ -8115,11 +8193,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.VsphereVolume.Size())) - n184, err := m.VsphereVolume.MarshalTo(data[i:]) + n185, err := m.VsphereVolume.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n184 + i += n185 } if m.Quobyte != nil { data[i] = 0xaa @@ -8127,11 +8205,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.Quobyte.Size())) - n185, err := m.Quobyte.MarshalTo(data[i:]) + n186, err := m.Quobyte.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n185 + i += n186 } if m.AzureDisk != nil { data[i] = 0xb2 @@ -8139,11 +8217,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.AzureDisk.Size())) - n186, err := m.AzureDisk.MarshalTo(data[i:]) + n187, err := m.AzureDisk.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n186 + i += n187 } if m.PhotonPersistentDisk != nil { data[i] = 0xba @@ -8151,11 +8229,11 @@ func (m *VolumeSource) MarshalTo(data []byte) (int, error) { data[i] = 0x1 i++ i = encodeVarintGenerated(data, i, uint64(m.PhotonPersistentDisk.Size())) - n187, err := m.PhotonPersistentDisk.MarshalTo(data[i:]) + n188, err := m.PhotonPersistentDisk.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n187 + i += n188 } return i, nil } @@ -8207,11 +8285,11 @@ func (m *WeightedPodAffinityTerm) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(m.PodAffinityTerm.Size())) - n188, err := m.PodAffinityTerm.MarshalTo(data[i:]) + n189, err := m.PodAffinityTerm.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n188 + i += n189 return i, nil } @@ -9381,6 +9459,21 @@ func (m *NodeProxyOptions) Size() (n int) { return n } +func (m *NodeResources) Size() (n int) { + var l int + _ = l + if len(m.Capacity) > 0 { + for k, v := range m.Capacity { + _ = k + _ = v + l = v.Size() + mapEntrySize := 1 + len(k) + sovGenerated(uint64(len(k))) + 1 + l + sovGenerated(uint64(l)) + n += mapEntrySize + 1 + sovGenerated(uint64(mapEntrySize)) + } + } + return n +} + func (m *NodeSelector) Size() (n int) { var l int _ = l @@ -10726,6 +10819,16 @@ func (m *ServiceStatus) Size() (n int) { return n } +func (m *Sysctl) Size() (n int) { + var l int + _ = l + l = len(m.Name) + n += 1 + l + sovGenerated(uint64(l)) + l = len(m.Value) + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *TCPSocketAction) Size() (n int) { var l int _ = l @@ -11901,6 +12004,26 @@ func (this *NodeProxyOptions) String() string { }, "") return s } +func (this *NodeResources) String() string { + if this == nil { + return "nil" + } + keysForCapacity := make([]string, 0, len(this.Capacity)) + for k := range this.Capacity { + keysForCapacity = append(keysForCapacity, string(k)) + } + github_com_gogo_protobuf_sortkeys.Strings(keysForCapacity) + mapStringForCapacity := "ResourceList{" + for _, k := range keysForCapacity { + mapStringForCapacity += fmt.Sprintf("%v: %v,", k, this.Capacity[ResourceName(k)]) + } + mapStringForCapacity += "}" + s := strings.Join([]string{`&NodeResources{`, + `Capacity:` + mapStringForCapacity + `,`, + `}`, + }, "") + return s +} func (this *NodeSelector) String() string { if this == nil { return "nil" @@ -13002,6 +13125,17 @@ func (this *ServiceStatus) String() string { }, "") return s } +func (this *Sysctl) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&Sysctl{`, + `Name:` + fmt.Sprintf("%v", this.Name) + `,`, + `Value:` + fmt.Sprintf("%v", this.Value) + `,`, + `}`, + }, "") + return s +} func (this *TCPSocketAction) String() string { if this == nil { return "nil" @@ -24151,6 +24285,172 @@ func (m *NodeProxyOptions) Unmarshal(data []byte) error { } return nil } +func (m *NodeResources) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: NodeResources: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NodeResources: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Capacity", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + var keykey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + keykey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var stringLenmapkey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLenmapkey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLenmapkey := int(stringLenmapkey) + if intStringLenmapkey < 0 { + return ErrInvalidLengthGenerated + } + postStringIndexmapkey := iNdEx + intStringLenmapkey + if postStringIndexmapkey > l { + return io.ErrUnexpectedEOF + } + mapkey := ResourceName(data[iNdEx:postStringIndexmapkey]) + iNdEx = postStringIndexmapkey + var valuekey uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + valuekey |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + var mapmsglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + mapmsglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + postmsgIndex := iNdEx + mapmsglen + if mapmsglen < 0 { + return ErrInvalidLengthGenerated + } + if postmsgIndex > l { + return io.ErrUnexpectedEOF + } + mapvalue := &k8s_io_kubernetes_pkg_api_resource.Quantity{} + if err := mapvalue.Unmarshal(data[iNdEx:postmsgIndex]); err != nil { + return err + } + iNdEx = postmsgIndex + if m.Capacity == nil { + m.Capacity = make(ResourceList) + } + m.Capacity[ResourceName(mapkey)] = *mapvalue + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *NodeSelector) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -37382,6 +37682,114 @@ func (m *ServiceStatus) Unmarshal(data []byte) error { } return nil } +func (m *Sysctl) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Sysctl: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Sysctl: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(data[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + stringLen |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + intStringLen + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Value = string(data[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *TCPSocketAction) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -39153,631 +39561,635 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 10015 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x6c, 0x25, 0xd7, - 0x75, 0x98, 0xe7, 0x3d, 0x7e, 0xbd, 0xc3, 0xcf, 0xbd, 0xfb, 0x21, 0x8a, 0x91, 0x96, 0xeb, 0x91, - 0xb5, 0x5e, 0x49, 0x2b, 0xae, 0x77, 0x25, 0x45, 0xb2, 0xa5, 0xca, 0x26, 0xf9, 0xc8, 0x5d, 0x7a, - 0x97, 0xbb, 0x4f, 0xf7, 0x71, 0xb5, 0xb2, 0xad, 0x4a, 0x1e, 0xbe, 0xb9, 0x24, 0xc7, 0x3b, 0x9c, - 0x79, 0x9a, 0x99, 0xc7, 0x5d, 0xda, 0x0d, 0x90, 0x3a, 0x6a, 0x8a, 0x22, 0x46, 0xea, 0xa2, 0x35, - 0x5a, 0xa0, 0x2d, 0xea, 0x16, 0x68, 0x91, 0x36, 0x68, 0x1a, 0xa7, 0x6e, 0x62, 0xb7, 0x86, 0x51, - 0xa0, 0xa9, 0xe1, 0x7e, 0xa4, 0x70, 0x80, 0xa0, 0x09, 0x12, 0x80, 0x8d, 0x18, 0x14, 0xfd, 0xd1, - 0x1f, 0x2d, 0xd0, 0x5f, 0x25, 0x82, 0xb6, 0xb8, 0x9f, 0x73, 0xef, 0xbc, 0x79, 0x9c, 0x79, 0xd4, - 0x92, 0x51, 0x82, 0xfe, 0x7b, 0xef, 0x9c, 0x73, 0xcf, 0xfd, 0x98, 0x73, 0xcf, 0x3d, 0xf7, 0xdc, - 0x73, 0xcf, 0x85, 0xcb, 0xf7, 0x5f, 0x89, 0xe7, 0xbc, 0xf0, 0xca, 0xfd, 0xce, 0x3a, 0x89, 0x02, - 0x92, 0x90, 0xf8, 0x4a, 0xfb, 0xfe, 0xe6, 0x15, 0xa7, 0xed, 0x5d, 0xd9, 0xb9, 0x7a, 0x65, 0x93, - 0x04, 0x24, 0x72, 0x12, 0xe2, 0xce, 0xb5, 0xa3, 0x30, 0x09, 0xd1, 0x13, 0x9c, 0x7a, 0x2e, 0xa5, - 0x9e, 0x6b, 0xdf, 0xdf, 0x9c, 0x73, 0xda, 0xde, 0xdc, 0xce, 0xd5, 0x99, 0xe7, 0x37, 0xbd, 0x64, - 0xab, 0xb3, 0x3e, 0xd7, 0x0a, 0xb7, 0xaf, 0x6c, 0x86, 0x9b, 0xe1, 0x15, 0x56, 0x68, 0xbd, 0xb3, - 0xc1, 0xfe, 0xb1, 0x3f, 0xec, 0x17, 0x67, 0x36, 0x73, 0xad, 0x77, 0xd5, 0x11, 0x89, 0xc3, 0x4e, - 0xd4, 0x22, 0xd9, 0x06, 0xcc, 0xbc, 0xd4, 0xbb, 0x4c, 0x27, 0xd8, 0x21, 0x51, 0xec, 0x85, 0x01, - 0x71, 0xbb, 0x8a, 0x3d, 0x9f, 0x5f, 0x2c, 0xea, 0x04, 0x89, 0xb7, 0xdd, 0x5d, 0xcb, 0xd5, 0x7c, - 0xf2, 0x4e, 0xe2, 0xf9, 0x57, 0xbc, 0x20, 0x89, 0x93, 0x28, 0x5b, 0xc4, 0xfe, 0x5d, 0x0b, 0x2e, - 0xcc, 0xdf, 0x6b, 0x2e, 0xf9, 0x4e, 0x9c, 0x78, 0xad, 0x05, 0x3f, 0x6c, 0xdd, 0x6f, 0x26, 0x61, - 0x44, 0xde, 0x0c, 0xfd, 0xce, 0x36, 0x69, 0xb2, 0xde, 0xa0, 0xcb, 0x30, 0xb2, 0xc3, 0xfe, 0xaf, - 0xd4, 0xa7, 0xad, 0x0b, 0xd6, 0xa5, 0xda, 0xc2, 0xd4, 0x8f, 0xf7, 0x66, 0x3f, 0xb6, 0xbf, 0x37, - 0x3b, 0xf2, 0xa6, 0x80, 0x63, 0x45, 0x81, 0x2e, 0xc2, 0xd0, 0x46, 0xbc, 0xb6, 0xdb, 0x26, 0xd3, - 0x15, 0x46, 0x3b, 0x21, 0x68, 0x87, 0x96, 0x9b, 0x14, 0x8a, 0x05, 0x16, 0x5d, 0x81, 0x5a, 0xdb, - 0x89, 0x12, 0x2f, 0xf1, 0xc2, 0x60, 0xba, 0x7a, 0xc1, 0xba, 0x34, 0xb8, 0x70, 0x4a, 0x90, 0xd6, - 0x1a, 0x12, 0x81, 0x53, 0x1a, 0xda, 0x8c, 0x88, 0x38, 0xee, 0x9d, 0xc0, 0xdf, 0x9d, 0x1e, 0xb8, - 0x60, 0x5d, 0x1a, 0x49, 0x9b, 0x81, 0x05, 0x1c, 0x2b, 0x0a, 0xfb, 0x7b, 0x15, 0x18, 0x99, 0xdf, - 0xd8, 0xf0, 0x02, 0x2f, 0xd9, 0x45, 0x5f, 0x86, 0xb1, 0x20, 0x74, 0x89, 0xfc, 0xcf, 0x7a, 0x31, - 0x7a, 0xed, 0xd9, 0xb9, 0xc3, 0xe4, 0x62, 0xee, 0xb6, 0x56, 0x62, 0x61, 0x6a, 0x7f, 0x6f, 0x76, - 0x4c, 0x87, 0x60, 0x83, 0x23, 0x7a, 0x1b, 0x46, 0xdb, 0xa1, 0xab, 0x2a, 0xa8, 0xb0, 0x0a, 0x9e, - 0x39, 0xbc, 0x82, 0x46, 0x5a, 0x60, 0x61, 0x72, 0x7f, 0x6f, 0x76, 0x54, 0x03, 0x60, 0x9d, 0x1d, - 0xf2, 0x61, 0x92, 0xfe, 0x0d, 0x12, 0x4f, 0xd5, 0x50, 0x65, 0x35, 0x3c, 0x5f, 0x5c, 0x83, 0x56, - 0x68, 0xe1, 0xf4, 0xfe, 0xde, 0xec, 0x64, 0x06, 0x88, 0xb3, 0xac, 0xed, 0xaf, 0xc2, 0xc4, 0x7c, - 0x92, 0x38, 0xad, 0x2d, 0xe2, 0xf2, 0xef, 0x8b, 0x5e, 0x84, 0x81, 0xc0, 0xd9, 0x26, 0xe2, 0xeb, - 0x5f, 0x10, 0xc3, 0x3e, 0x70, 0xdb, 0xd9, 0x26, 0x07, 0x7b, 0xb3, 0x53, 0x77, 0x03, 0xef, 0xbd, - 0x8e, 0x90, 0x19, 0x0a, 0xc3, 0x8c, 0x1a, 0x5d, 0x03, 0x70, 0xc9, 0x8e, 0xd7, 0x22, 0x0d, 0x27, - 0xd9, 0x12, 0xd2, 0x80, 0x44, 0x59, 0xa8, 0x2b, 0x0c, 0xd6, 0xa8, 0xec, 0xaf, 0x5b, 0x50, 0x9b, - 0xdf, 0x09, 0x3d, 0xb7, 0x11, 0xba, 0x31, 0xea, 0xc0, 0x64, 0x3b, 0x22, 0x1b, 0x24, 0x52, 0xa0, - 0x69, 0xeb, 0x42, 0xf5, 0xd2, 0xe8, 0xb5, 0x6b, 0x05, 0xfd, 0x36, 0x0b, 0x2d, 0x05, 0x49, 0xb4, - 0xbb, 0xf0, 0x98, 0xa8, 0x7a, 0x32, 0x83, 0xc5, 0xd9, 0x3a, 0xec, 0xbf, 0x56, 0x81, 0xb3, 0xf3, - 0x5f, 0xed, 0x44, 0xa4, 0xee, 0xc5, 0xf7, 0xb3, 0x53, 0xc1, 0xf5, 0xe2, 0xfb, 0xb7, 0xd3, 0xc1, - 0x50, 0x32, 0x58, 0x17, 0x70, 0xac, 0x28, 0xd0, 0xf3, 0x30, 0x4c, 0x7f, 0xdf, 0xc5, 0x2b, 0xa2, - 0xf7, 0xa7, 0x05, 0xf1, 0x68, 0xdd, 0x49, 0x9c, 0x3a, 0x47, 0x61, 0x49, 0x83, 0x56, 0x61, 0xb4, - 0xe5, 0xb4, 0xb6, 0xbc, 0x60, 0x73, 0x35, 0x74, 0x09, 0xfb, 0xc2, 0xb5, 0x85, 0xe7, 0x28, 0xf9, - 0x62, 0x0a, 0x3e, 0xd8, 0x9b, 0x9d, 0xe6, 0x6d, 0x13, 0x2c, 0x34, 0x1c, 0xd6, 0xcb, 0x23, 0x5b, - 0x4d, 0xc4, 0x01, 0xc6, 0x09, 0x72, 0x26, 0xe1, 0x25, 0x6d, 0x4e, 0x0d, 0xb2, 0x39, 0x35, 0xd6, - 0x63, 0x3e, 0xfd, 0x13, 0x4b, 0x8c, 0xc9, 0xb2, 0xe7, 0x9b, 0xea, 0xe1, 0x1a, 0x40, 0x4c, 0x5a, - 0x11, 0x49, 0xb4, 0x51, 0x51, 0x9f, 0xb9, 0xa9, 0x30, 0x58, 0xa3, 0xa2, 0x93, 0x3f, 0xde, 0x72, - 0x22, 0x26, 0x2d, 0x62, 0x6c, 0xd4, 0xe4, 0x6f, 0x4a, 0x04, 0x4e, 0x69, 0x8c, 0xc9, 0x5f, 0x2d, - 0x9c, 0xfc, 0xff, 0xd2, 0x82, 0xe1, 0x05, 0x2f, 0x70, 0xbd, 0x60, 0x13, 0xbd, 0x05, 0x23, 0xdb, - 0x24, 0x71, 0x5c, 0x27, 0x71, 0xc4, 0xbc, 0xbf, 0x74, 0xb8, 0xf0, 0xdc, 0x59, 0xff, 0x0a, 0x69, - 0x25, 0xab, 0x24, 0x71, 0xd2, 0x6e, 0xa4, 0x30, 0xac, 0xb8, 0xa1, 0xbb, 0x30, 0x94, 0x38, 0xd1, - 0x26, 0x49, 0xc4, 0x74, 0x7f, 0xbe, 0x0c, 0x5f, 0x4c, 0x45, 0x8d, 0x04, 0x2d, 0x92, 0x2a, 0xc6, - 0x35, 0xc6, 0x04, 0x0b, 0x66, 0x76, 0x0b, 0xc6, 0x16, 0x9d, 0xb6, 0xb3, 0xee, 0xf9, 0x5e, 0xe2, - 0x91, 0x18, 0x7d, 0x12, 0xaa, 0x8e, 0xeb, 0x32, 0xc1, 0xaf, 0x2d, 0x9c, 0xdd, 0xdf, 0x9b, 0xad, - 0xce, 0xbb, 0xee, 0xc1, 0xde, 0x2c, 0x28, 0xaa, 0x5d, 0x4c, 0x29, 0xd0, 0xb3, 0x30, 0xe0, 0x46, - 0x61, 0x7b, 0xba, 0xc2, 0x28, 0xcf, 0xd1, 0x19, 0x5a, 0x8f, 0xc2, 0x76, 0x86, 0x94, 0xd1, 0xd8, - 0xff, 0xb6, 0x02, 0x68, 0x91, 0xb4, 0xb7, 0x96, 0x9b, 0xc6, 0xb7, 0xbc, 0x04, 0x23, 0xdb, 0x61, - 0xe0, 0x25, 0x61, 0x14, 0x8b, 0x0a, 0x99, 0x3c, 0xac, 0x0a, 0x18, 0x56, 0x58, 0x74, 0x01, 0x06, - 0xda, 0xe9, 0xb4, 0x1e, 0x93, 0x2a, 0x81, 0x4d, 0x68, 0x86, 0xa1, 0x14, 0x9d, 0x98, 0x44, 0x42, - 0x8e, 0x15, 0xc5, 0xdd, 0x98, 0x44, 0x98, 0x61, 0x52, 0xc9, 0xa1, 0x32, 0x25, 0xa4, 0x34, 0x23, - 0x39, 0x14, 0x83, 0x35, 0x2a, 0xf4, 0x2e, 0xd4, 0xf8, 0x3f, 0x4c, 0x36, 0x98, 0xc8, 0x16, 0x2a, - 0x83, 0x5b, 0x61, 0xcb, 0xf1, 0xb3, 0x83, 0x3f, 0xce, 0x24, 0x4d, 0x32, 0xc2, 0x29, 0x4f, 0x43, - 0xd2, 0x86, 0x0a, 0x25, 0xed, 0x6f, 0x59, 0x80, 0x16, 0xbd, 0xc0, 0x25, 0xd1, 0x09, 0x2c, 0x99, - 0xfd, 0x4d, 0x82, 0x3f, 0xa0, 0x4d, 0x0b, 0xb7, 0xdb, 0x61, 0x40, 0x82, 0x64, 0x31, 0x0c, 0x5c, - 0xbe, 0x8c, 0x7e, 0x06, 0x06, 0x12, 0x5a, 0x15, 0x6f, 0xd6, 0x45, 0xf9, 0x59, 0x68, 0x05, 0x07, - 0x7b, 0xb3, 0xe7, 0xba, 0x4b, 0xb0, 0x26, 0xb0, 0x32, 0xe8, 0xd3, 0x30, 0x14, 0x27, 0x4e, 0xd2, - 0x89, 0x45, 0x43, 0x3f, 0x2e, 0x1b, 0xda, 0x64, 0xd0, 0x83, 0xbd, 0xd9, 0x49, 0x55, 0x8c, 0x83, - 0xb0, 0x28, 0x80, 0x9e, 0x81, 0xe1, 0x6d, 0x12, 0xc7, 0xce, 0xa6, 0x54, 0x6c, 0x93, 0xa2, 0xec, - 0xf0, 0x2a, 0x07, 0x63, 0x89, 0x47, 0x4f, 0xc1, 0x20, 0x89, 0xa2, 0x30, 0x12, 0x12, 0x31, 0x2e, - 0x08, 0x07, 0x97, 0x28, 0x10, 0x73, 0x9c, 0xfd, 0xdb, 0x16, 0x4c, 0xaa, 0xb6, 0xf2, 0xba, 0x8e, - 0x71, 0xaa, 0xbb, 0x00, 0x2d, 0xd9, 0xb1, 0x98, 0x4d, 0xb0, 0xd1, 0x6b, 0x9f, 0x3a, 0x9c, 0x77, - 0xf7, 0x40, 0xa6, 0x75, 0x28, 0x50, 0x8c, 0x35, 0xbe, 0xf6, 0x8f, 0x2d, 0x38, 0x9d, 0xe9, 0xd3, - 0x2d, 0x2f, 0x4e, 0xd0, 0x9f, 0xef, 0xea, 0xd7, 0x95, 0x43, 0xea, 0xd6, 0x2c, 0xca, 0x39, 0x5a, - 0x9c, 0x75, 0x4f, 0x09, 0x8a, 0x84, 0x68, 0x9d, 0xc3, 0x30, 0xe8, 0x25, 0x64, 0x5b, 0xf6, 0xeb, - 0xf9, 0x92, 0xfd, 0xe2, 0x0d, 0x4c, 0x3f, 0xcf, 0x0a, 0xe5, 0x81, 0x39, 0x2b, 0xfb, 0x7f, 0x59, - 0x50, 0x5b, 0x0c, 0x83, 0x0d, 0x6f, 0x73, 0xd5, 0x69, 0x1f, 0xe3, 0x87, 0x69, 0xc2, 0x00, 0xe3, - 0xca, 0x9b, 0x7e, 0xb5, 0xa8, 0xe9, 0xa2, 0x41, 0x73, 0x74, 0xf1, 0xe4, 0x56, 0x81, 0xd2, 0x4b, - 0x14, 0x84, 0x19, 0xb3, 0x99, 0x97, 0xa1, 0xa6, 0x08, 0xd0, 0x14, 0x54, 0xef, 0x13, 0x6e, 0x32, - 0xd6, 0x30, 0xfd, 0x89, 0xce, 0xc0, 0xe0, 0x8e, 0xe3, 0x77, 0xc4, 0x6c, 0xc5, 0xfc, 0xcf, 0x67, - 0x2a, 0xaf, 0x58, 0xf6, 0x0f, 0x2c, 0x38, 0xa3, 0x2a, 0xb9, 0x49, 0x76, 0x9b, 0xc4, 0x27, 0xad, - 0x24, 0x8c, 0xd0, 0xfb, 0x16, 0x9c, 0xf1, 0x73, 0xf4, 0x90, 0x18, 0x8d, 0xa3, 0x68, 0xb0, 0x27, - 0x44, 0xc3, 0xcf, 0xe4, 0x61, 0x71, 0x6e, 0x6d, 0xe8, 0x49, 0xde, 0x17, 0x3e, 0x79, 0x47, 0x05, - 0x83, 0xea, 0x4d, 0xb2, 0xcb, 0x3a, 0x46, 0x9b, 0x3f, 0xae, 0x9a, 0x7f, 0x12, 0x92, 0x77, 0xcb, - 0x94, 0xbc, 0x4f, 0x96, 0xfc, 0x7c, 0x3d, 0x64, 0xee, 0xef, 0x55, 0xe0, 0xac, 0xa2, 0x31, 0xd4, - 0xf1, 0x47, 0x64, 0xf8, 0xfb, 0xeb, 0xee, 0x4d, 0xb2, 0xbb, 0x16, 0xd2, 0xf5, 0x34, 0xbf, 0xbb, - 0xe8, 0x2a, 0x8c, 0xba, 0x64, 0xc3, 0xe9, 0xf8, 0x89, 0x32, 0x17, 0x07, 0xf9, 0x3e, 0xa2, 0x9e, - 0x82, 0xb1, 0x4e, 0x63, 0xff, 0x56, 0x8d, 0xcd, 0xca, 0xc4, 0xf1, 0x02, 0x12, 0xd1, 0x05, 0x5a, - 0xb3, 0xea, 0xc7, 0x74, 0xab, 0x5e, 0x58, 0xf0, 0x4f, 0xc1, 0xa0, 0xb7, 0x4d, 0x55, 0x76, 0xc5, - 0xd4, 0xc4, 0x2b, 0x14, 0x88, 0x39, 0x0e, 0x3d, 0x0d, 0xc3, 0xad, 0x70, 0x7b, 0xdb, 0x09, 0xdc, - 0xe9, 0x2a, 0x33, 0x19, 0x46, 0xa9, 0x56, 0x5f, 0xe4, 0x20, 0x2c, 0x71, 0xe8, 0x09, 0x18, 0x70, - 0xa2, 0xcd, 0x78, 0x7a, 0x80, 0xd1, 0x8c, 0xd0, 0x9a, 0xe6, 0xa3, 0xcd, 0x18, 0x33, 0x28, 0x35, - 0x05, 0x1e, 0x84, 0xd1, 0x7d, 0x2f, 0xd8, 0xac, 0x7b, 0x11, 0x5b, 0xd7, 0x35, 0x53, 0xe0, 0x9e, - 0xc2, 0x60, 0x8d, 0x0a, 0x35, 0x60, 0xb0, 0x1d, 0x46, 0x49, 0x3c, 0x3d, 0xc4, 0x86, 0xf3, 0xb9, - 0x42, 0xe9, 0xe1, 0xfd, 0x6e, 0x84, 0x51, 0x92, 0x76, 0x85, 0xfe, 0x8b, 0x31, 0x67, 0x84, 0x16, - 0xa1, 0x4a, 0x82, 0x9d, 0xe9, 0x61, 0xc6, 0xef, 0x13, 0x87, 0xf3, 0x5b, 0x0a, 0x76, 0xde, 0x74, - 0xa2, 0x74, 0x16, 0x2d, 0x05, 0x3b, 0x98, 0x96, 0x46, 0x2d, 0xa8, 0x49, 0x47, 0x40, 0x3c, 0x3d, - 0x52, 0x46, 0xc0, 0xb0, 0x20, 0xc7, 0xe4, 0xbd, 0x8e, 0x17, 0x91, 0x6d, 0x12, 0x24, 0x71, 0x6a, - 0x0f, 0x4b, 0x6c, 0x8c, 0x53, 0xbe, 0xa8, 0x05, 0x63, 0xdc, 0x7c, 0x58, 0x0d, 0x3b, 0x41, 0x12, - 0x4f, 0xd7, 0x58, 0x93, 0x0b, 0x36, 0x9c, 0x6f, 0xa6, 0x25, 0x16, 0xce, 0x08, 0xf6, 0x63, 0x1a, - 0x30, 0xc6, 0x06, 0x53, 0xf4, 0x36, 0x8c, 0xfb, 0xde, 0x0e, 0x09, 0x48, 0x1c, 0x37, 0xa2, 0x70, - 0x9d, 0x4c, 0x03, 0xeb, 0xcd, 0x53, 0x45, 0x9b, 0xaf, 0x70, 0x9d, 0x2c, 0x9c, 0xda, 0xdf, 0x9b, - 0x1d, 0xbf, 0xa5, 0x97, 0xc6, 0x26, 0x33, 0xf4, 0x2e, 0x4c, 0x50, 0x5b, 0xc5, 0x4b, 0xd9, 0x8f, - 0x96, 0x67, 0x8f, 0xf6, 0xf7, 0x66, 0x27, 0xb0, 0x51, 0x1c, 0x67, 0xd8, 0xa1, 0x35, 0xa8, 0xf9, - 0xde, 0x06, 0x69, 0xed, 0xb6, 0x7c, 0x32, 0x3d, 0xc6, 0x78, 0x17, 0x4c, 0xb9, 0x5b, 0x92, 0x9c, - 0xdb, 0x87, 0xea, 0x2f, 0x4e, 0x19, 0xa1, 0x37, 0xe1, 0x5c, 0x42, 0xa2, 0x6d, 0x2f, 0x70, 0xe8, - 0xa2, 0x2d, 0x8c, 0x17, 0xb6, 0xc3, 0x1d, 0x67, 0x52, 0x7b, 0x5e, 0x0c, 0xec, 0xb9, 0xb5, 0x5c, - 0x2a, 0xdc, 0xa3, 0x34, 0xba, 0x03, 0x93, 0x6c, 0x3e, 0x35, 0x3a, 0xbe, 0xdf, 0x08, 0x7d, 0xaf, - 0xb5, 0x3b, 0x3d, 0xc1, 0x18, 0x3e, 0x2d, 0xf7, 0xad, 0x2b, 0x26, 0x9a, 0xda, 0xf5, 0xe9, 0x3f, - 0x9c, 0x2d, 0x8d, 0x7c, 0x98, 0x8c, 0x49, 0xab, 0x13, 0x79, 0xc9, 0x2e, 0x95, 0x7d, 0xf2, 0x30, - 0x99, 0x9e, 0x2c, 0xb3, 0x4f, 0x69, 0x9a, 0x85, 0xb8, 0xd3, 0x20, 0x03, 0xc4, 0x59, 0xd6, 0x54, - 0x55, 0xc4, 0x89, 0xeb, 0x05, 0xd3, 0x53, 0xcc, 0x30, 0x55, 0xf3, 0xab, 0x49, 0x81, 0x98, 0xe3, - 0xd8, 0xb6, 0x8f, 0xfe, 0xb8, 0x43, 0x75, 0xef, 0x29, 0x46, 0x98, 0x6e, 0xfb, 0x24, 0x02, 0xa7, - 0x34, 0x74, 0xc1, 0x4a, 0x92, 0xdd, 0x69, 0xc4, 0x48, 0xd5, 0x54, 0x5b, 0x5b, 0xfb, 0x02, 0xa6, - 0x70, 0x7b, 0x1d, 0x26, 0xd4, 0xb4, 0x66, 0xa3, 0x83, 0x66, 0x61, 0x90, 0x6a, 0x2e, 0xb9, 0x7b, - 0xa9, 0xd1, 0x26, 0x50, 0x85, 0x16, 0x63, 0x0e, 0x67, 0x4d, 0xf0, 0xbe, 0x4a, 0x16, 0x76, 0x13, - 0xc2, 0xad, 0xd8, 0xaa, 0xd6, 0x04, 0x89, 0xc0, 0x29, 0x8d, 0xfd, 0x7f, 0xf8, 0xa2, 0x98, 0xea, - 0x8e, 0x12, 0x7a, 0xf3, 0x32, 0x8c, 0x6c, 0x85, 0x71, 0x42, 0xa9, 0x59, 0x1d, 0x83, 0xe9, 0x2a, - 0x78, 0x43, 0xc0, 0xb1, 0xa2, 0x40, 0xaf, 0xc2, 0x78, 0x4b, 0xaf, 0x40, 0xa8, 0xf2, 0xb3, 0xa2, - 0x88, 0x59, 0x3b, 0x36, 0x69, 0xd1, 0x2b, 0x30, 0xc2, 0x5c, 0x79, 0xad, 0xd0, 0x17, 0xf6, 0xb2, - 0x5c, 0x99, 0x46, 0x1a, 0x02, 0x7e, 0xa0, 0xfd, 0xc6, 0x8a, 0x9a, 0xee, 0x3a, 0x68, 0x13, 0x56, - 0x1a, 0x42, 0xdd, 0xaa, 0x5d, 0xc7, 0x0d, 0x06, 0xc5, 0x02, 0x6b, 0xff, 0x6a, 0x45, 0x1b, 0x65, - 0x6a, 0xf4, 0x11, 0xf4, 0x45, 0x18, 0x7e, 0xe0, 0x78, 0x89, 0x17, 0x6c, 0x8a, 0x15, 0xf4, 0x85, - 0x92, 0xba, 0x97, 0x15, 0xbf, 0xc7, 0x8b, 0xf2, 0x75, 0x42, 0xfc, 0xc1, 0x92, 0x21, 0xe5, 0x1d, - 0x75, 0x82, 0x80, 0xf2, 0xae, 0xf4, 0xcf, 0x1b, 0xf3, 0xa2, 0x9c, 0xb7, 0xf8, 0x83, 0x25, 0x43, - 0xb4, 0x01, 0x20, 0x67, 0x1f, 0x71, 0x85, 0x0b, 0xed, 0xa7, 0xfb, 0x61, 0xbf, 0xa6, 0x4a, 0x2f, - 0x4c, 0xd0, 0x95, 0x29, 0xfd, 0x8f, 0x35, 0xce, 0x76, 0x87, 0x19, 0x22, 0xdd, 0xcd, 0x42, 0x6f, - 0xd3, 0x09, 0xe0, 0x44, 0x09, 0x71, 0xe7, 0x13, 0x31, 0x74, 0xcf, 0x95, 0x34, 0xa8, 0xd6, 0xbc, - 0x6d, 0xa2, 0xcf, 0x16, 0xc1, 0x05, 0xa7, 0x0c, 0xed, 0xef, 0x57, 0x61, 0xba, 0x57, 0x7b, 0xa9, - 0x4c, 0x92, 0x87, 0x5e, 0xb2, 0x48, 0x6d, 0x05, 0xcb, 0x94, 0xc9, 0x25, 0x01, 0xc7, 0x8a, 0x82, - 0x0a, 0x47, 0xec, 0x6d, 0x06, 0x8e, 0x2f, 0xe4, 0x57, 0x09, 0x47, 0x93, 0x41, 0xb1, 0xc0, 0x52, - 0xba, 0x88, 0x38, 0xb1, 0x70, 0xe1, 0x6a, 0x42, 0x84, 0x19, 0x14, 0x0b, 0xac, 0xbe, 0xfd, 0x1b, - 0x28, 0xd8, 0xfe, 0x19, 0x63, 0x34, 0xf8, 0x88, 0xc7, 0x08, 0xbd, 0x0b, 0xb0, 0xe1, 0x05, 0x5e, - 0xbc, 0xc5, 0xd8, 0x0f, 0xf5, 0xcf, 0x5e, 0x59, 0x25, 0xcb, 0x8a, 0x0d, 0xd6, 0x58, 0xa2, 0x97, - 0x60, 0x54, 0xcd, 0xd0, 0x95, 0xfa, 0xf4, 0xb0, 0xe9, 0xf8, 0x4b, 0xd5, 0x55, 0x1d, 0xeb, 0x74, - 0xf6, 0x57, 0xb2, 0x22, 0x23, 0x26, 0x86, 0x36, 0xc2, 0x56, 0xd9, 0x11, 0xae, 0x1c, 0x3e, 0xc2, - 0xf6, 0x7f, 0xae, 0xd2, 0xbd, 0xb3, 0x56, 0x59, 0x27, 0x2e, 0xa1, 0xd4, 0xde, 0xa0, 0x1a, 0xde, - 0x49, 0x88, 0x98, 0x96, 0x97, 0xfb, 0x99, 0x37, 0xfa, 0x7a, 0x40, 0xa7, 0x03, 0xe7, 0x84, 0xb6, - 0xa0, 0xe6, 0x3b, 0x31, 0xdb, 0x49, 0x12, 0x31, 0x1d, 0xfb, 0x63, 0x9b, 0x5a, 0xe1, 0x4e, 0x9c, - 0x68, 0x0b, 0x2e, 0xaf, 0x25, 0x65, 0x4e, 0x97, 0x27, 0x6a, 0x1d, 0xc8, 0x93, 0x03, 0xd5, 0x1c, - 0x6a, 0x42, 0xec, 0x62, 0x8e, 0x43, 0xaf, 0xc0, 0x58, 0x44, 0x98, 0xa8, 0x2c, 0x52, 0x03, 0x88, - 0x09, 0xdf, 0x60, 0x6a, 0x29, 0x61, 0x0d, 0x87, 0x0d, 0xca, 0xd4, 0x50, 0x1e, 0x3a, 0xc4, 0x50, - 0x7e, 0x06, 0x86, 0xd9, 0x0f, 0x25, 0x15, 0xea, 0x0b, 0xad, 0x70, 0x30, 0x96, 0xf8, 0xac, 0x10, - 0x8d, 0x94, 0x14, 0xa2, 0x67, 0x61, 0xa2, 0xee, 0x90, 0xed, 0x30, 0x58, 0x0a, 0xdc, 0x76, 0xe8, - 0x05, 0x09, 0x9a, 0x86, 0x01, 0xb6, 0xa4, 0xf0, 0x19, 0x3f, 0x40, 0x39, 0xe0, 0x01, 0x6a, 0xec, - 0xda, 0xff, 0xd7, 0x82, 0xf1, 0x3a, 0xf1, 0x49, 0x42, 0xee, 0xb4, 0x99, 0xfb, 0x01, 0x2d, 0x03, - 0xda, 0x8c, 0x9c, 0x16, 0x69, 0x90, 0xc8, 0x0b, 0xdd, 0x26, 0x69, 0x85, 0x01, 0x73, 0xb8, 0xd3, - 0x35, 0xf2, 0xdc, 0xfe, 0xde, 0x2c, 0xba, 0xde, 0x85, 0xc5, 0x39, 0x25, 0x90, 0x0b, 0xe3, 0xed, - 0x88, 0x18, 0xfe, 0x12, 0xab, 0xd8, 0x3e, 0x6f, 0xe8, 0x45, 0xb8, 0xf9, 0x68, 0x80, 0xb0, 0xc9, - 0x14, 0x7d, 0x0e, 0xa6, 0xc2, 0xa8, 0xbd, 0xe5, 0x04, 0x75, 0xd2, 0x26, 0x81, 0x4b, 0x6d, 0x66, - 0xe1, 0x14, 0x3b, 0xb3, 0xbf, 0x37, 0x3b, 0x75, 0x27, 0x83, 0xc3, 0x5d, 0xd4, 0xf6, 0x2f, 0x57, - 0xe0, 0x6c, 0x3d, 0x7c, 0x10, 0x3c, 0x70, 0x22, 0x77, 0xbe, 0xb1, 0xc2, 0x0d, 0x61, 0xe6, 0x64, - 0x94, 0xce, 0x4d, 0xab, 0xa7, 0x73, 0xf3, 0x4b, 0x30, 0xb2, 0xe1, 0x11, 0xdf, 0xc5, 0x64, 0x43, - 0x74, 0xef, 0x6a, 0x19, 0x8f, 0xc6, 0x32, 0x2d, 0x23, 0xbd, 0x02, 0xdc, 0xb7, 0xba, 0x2c, 0xd8, - 0x60, 0xc5, 0x10, 0x75, 0x60, 0x4a, 0x5a, 0xfa, 0x12, 0x2b, 0x66, 0xc7, 0x0b, 0xe5, 0x36, 0x12, - 0x66, 0x35, 0x6c, 0x3c, 0x70, 0x86, 0x21, 0xee, 0xaa, 0x82, 0xee, 0xd0, 0xb6, 0xe9, 0xea, 0x30, - 0xc0, 0x64, 0x85, 0xed, 0xd0, 0xd8, 0x16, 0x92, 0x41, 0xed, 0x7f, 0x64, 0xc1, 0x63, 0x5d, 0xa3, - 0x25, 0xf6, 0xd7, 0x6f, 0xc9, 0x8d, 0x2d, 0x3f, 0x9d, 0x29, 0x68, 0x65, 0xee, 0x98, 0x97, 0xdb, - 0xe4, 0x56, 0x4a, 0x6c, 0x72, 0xef, 0xc0, 0x99, 0xa5, 0xed, 0x76, 0xb2, 0x5b, 0xf7, 0x4c, 0x9f, - 0xec, 0xcb, 0x30, 0xb4, 0x4d, 0x5c, 0xaf, 0xb3, 0x2d, 0x3e, 0xeb, 0xac, 0x54, 0xa4, 0xab, 0x0c, - 0x7a, 0xb0, 0x37, 0x3b, 0xde, 0x4c, 0xc2, 0xc8, 0xd9, 0x24, 0x1c, 0x80, 0x05, 0xb9, 0xfd, 0x81, - 0x05, 0x93, 0x72, 0x42, 0xcd, 0xbb, 0x6e, 0x44, 0xe2, 0x18, 0xcd, 0x40, 0xc5, 0x6b, 0x0b, 0x46, - 0x20, 0x18, 0x55, 0x56, 0x1a, 0xb8, 0xe2, 0xb5, 0xd1, 0x17, 0xa1, 0xc6, 0x5d, 0xf9, 0xa9, 0x70, - 0xf4, 0x79, 0x34, 0xc0, 0x76, 0x1f, 0x6b, 0x92, 0x07, 0x4e, 0xd9, 0x49, 0xcb, 0x92, 0xa9, 0xea, - 0xaa, 0xe9, 0x58, 0xbe, 0x21, 0xe0, 0x58, 0x51, 0xa0, 0x4b, 0x30, 0x12, 0x84, 0x2e, 0x3f, 0x65, - 0xe1, 0xcb, 0x2e, 0x13, 0xb9, 0xdb, 0x02, 0x86, 0x15, 0xd6, 0xfe, 0x86, 0x05, 0x63, 0xb2, 0x8f, - 0x25, 0x8d, 0x5c, 0x3a, 0x49, 0x52, 0x03, 0x37, 0x9d, 0x24, 0xd4, 0x48, 0x65, 0x18, 0xc3, 0x36, - 0xad, 0xf6, 0x63, 0x9b, 0xda, 0xdf, 0xaf, 0xc0, 0x84, 0x6c, 0x4e, 0xb3, 0xb3, 0x1e, 0x93, 0x04, - 0xbd, 0x03, 0x35, 0x87, 0x0f, 0x3e, 0x91, 0x72, 0xf6, 0x7c, 0xd1, 0x0e, 0xdd, 0xf8, 0x66, 0xa9, - 0x61, 0x30, 0x2f, 0xf9, 0xe0, 0x94, 0x25, 0xda, 0x81, 0x53, 0x41, 0x98, 0xb0, 0xf5, 0x40, 0xe1, - 0xcb, 0x79, 0x44, 0xb3, 0xf5, 0x3c, 0x2e, 0xea, 0x39, 0x75, 0x3b, 0xcb, 0x0f, 0x77, 0x57, 0x81, - 0xee, 0x48, 0x2f, 0x46, 0x95, 0xd5, 0xf5, 0x6c, 0xb9, 0xba, 0x7a, 0x3b, 0x31, 0xec, 0x1f, 0x5a, - 0x50, 0x93, 0x64, 0xc7, 0xe9, 0x13, 0xbf, 0x07, 0xc3, 0x31, 0xfb, 0x34, 0x72, 0x98, 0x2e, 0x97, - 0x6b, 0x3a, 0xff, 0x9e, 0xe9, 0xe2, 0xc7, 0xff, 0xc7, 0x58, 0x72, 0x63, 0x6e, 0x48, 0xd5, 0x81, - 0x8f, 0x9e, 0x1b, 0x52, 0x35, 0xad, 0x87, 0x1b, 0xf2, 0x97, 0x2c, 0x18, 0xe2, 0xce, 0xa1, 0x72, - 0x1e, 0x36, 0xcd, 0x97, 0x9c, 0x72, 0x7c, 0x93, 0x02, 0x85, 0x6b, 0x19, 0xdd, 0x83, 0x1a, 0xfb, - 0xb1, 0x1c, 0x85, 0xdb, 0x62, 0x21, 0x78, 0xb6, 0x8c, 0x73, 0x8a, 0x2b, 0x3e, 0xae, 0x4d, 0xde, - 0x94, 0x0c, 0x70, 0xca, 0xcb, 0xfe, 0x41, 0x95, 0xce, 0xfa, 0x94, 0xd4, 0x58, 0xd6, 0xac, 0x93, - 0x58, 0xd6, 0x2a, 0xc7, 0xbf, 0xac, 0xbd, 0x07, 0x93, 0x2d, 0xcd, 0x27, 0x9f, 0x2e, 0xa6, 0xd7, - 0x4a, 0xba, 0x9b, 0x35, 0x47, 0x3e, 0x77, 0x86, 0x2c, 0x9a, 0xec, 0x70, 0x96, 0x3f, 0x22, 0x30, - 0xc6, 0x0f, 0x14, 0x45, 0x7d, 0x03, 0x85, 0x32, 0xcb, 0xfd, 0x2e, 0xbc, 0x84, 0xaa, 0x8c, 0x05, - 0x9d, 0x34, 0x35, 0x46, 0xd8, 0x60, 0x6b, 0xff, 0x8d, 0x41, 0x18, 0x5c, 0xda, 0x21, 0x41, 0x72, - 0x8c, 0xb3, 0x7c, 0x1b, 0x26, 0xbc, 0x60, 0x27, 0xf4, 0x77, 0x88, 0xcb, 0xf1, 0x47, 0x5b, 0xd1, - 0xce, 0x89, 0x4a, 0x26, 0x56, 0x0c, 0x66, 0x38, 0xc3, 0xfc, 0x38, 0xf6, 0x93, 0x6f, 0xc0, 0x10, - 0x97, 0x08, 0xb1, 0x99, 0x2c, 0x70, 0x92, 0xb2, 0x01, 0x15, 0x33, 0x27, 0xdd, 0xf5, 0x72, 0xff, - 0xac, 0x60, 0x84, 0xee, 0xc3, 0xc4, 0x86, 0x17, 0xc5, 0x09, 0xdd, 0x10, 0xc6, 0x89, 0xb3, 0xdd, - 0x3e, 0xca, 0x46, 0x52, 0x0d, 0xc9, 0xb2, 0xc1, 0x0a, 0x67, 0x58, 0xa3, 0x2d, 0x18, 0xa7, 0xfb, - 0x98, 0xb4, 0xae, 0xe1, 0xfe, 0xeb, 0x52, 0xbe, 0xa4, 0x5b, 0x3a, 0x27, 0x6c, 0x32, 0xa6, 0xca, - 0xa8, 0xc5, 0x36, 0x3e, 0x23, 0x6c, 0x49, 0x57, 0xca, 0x88, 0xef, 0x78, 0x38, 0x8e, 0xea, 0x34, - 0x76, 0x7e, 0x5c, 0x33, 0x75, 0x5a, 0x7a, 0x4a, 0x6c, 0x7f, 0x97, 0x2e, 0x40, 0x74, 0x14, 0x4f, - 0x42, 0x77, 0xdf, 0x30, 0x75, 0xf7, 0x53, 0x25, 0x3e, 0x6e, 0x0f, 0xbd, 0xfd, 0x65, 0x18, 0xd5, - 0xbe, 0x3d, 0xba, 0x02, 0xb5, 0x96, 0x3c, 0xea, 0x14, 0x0a, 0x5c, 0x19, 0x10, 0xea, 0x0c, 0x14, - 0xa7, 0x34, 0x74, 0x60, 0xa8, 0xe1, 0x95, 0x8d, 0x88, 0xa0, 0x66, 0x19, 0x66, 0x18, 0xfb, 0x05, - 0x80, 0xa5, 0x87, 0xa4, 0x35, 0xdf, 0x62, 0x07, 0xf1, 0xda, 0xb9, 0x89, 0xd5, 0xfb, 0xdc, 0xc4, - 0x7e, 0x1b, 0xc6, 0x97, 0x1e, 0xd2, 0x95, 0x5d, 0x6e, 0xd3, 0x2e, 0xc2, 0x10, 0x61, 0x00, 0xd6, - 0xaa, 0x91, 0x54, 0x48, 0x39, 0x19, 0x16, 0x58, 0x76, 0x8c, 0xfe, 0xd0, 0x11, 0x13, 0x56, 0xdb, - 0xf2, 0x2e, 0x51, 0x20, 0xe6, 0x38, 0xfb, 0x3b, 0x16, 0x4c, 0x2c, 0x2f, 0x1a, 0x76, 0xf2, 0x1c, - 0x00, 0xb7, 0x37, 0xef, 0xdd, 0xbb, 0x2d, 0xfd, 0xa8, 0xdc, 0xd9, 0xa5, 0xa0, 0x58, 0xa3, 0x40, - 0x8f, 0x43, 0xd5, 0xef, 0x04, 0xc2, 0x0c, 0x1c, 0xde, 0xdf, 0x9b, 0xad, 0xde, 0xea, 0x04, 0x98, - 0xc2, 0xb4, 0xc0, 0x86, 0x6a, 0xe9, 0xc0, 0x86, 0xe2, 0xd0, 0xbe, 0x6f, 0x55, 0x61, 0x6a, 0xd9, - 0x27, 0x0f, 0x8d, 0x56, 0x5f, 0x84, 0x21, 0x37, 0xf2, 0x76, 0x48, 0x94, 0x75, 0x93, 0xd4, 0x19, - 0x14, 0x0b, 0x6c, 0xe9, 0x58, 0x0b, 0x23, 0xce, 0xa4, 0x7a, 0xcc, 0x71, 0x26, 0x85, 0x7d, 0x46, - 0x1b, 0x30, 0x1c, 0xf2, 0xef, 0x3f, 0x3d, 0xc8, 0x04, 0xfd, 0xd5, 0xc3, 0x1b, 0x93, 0x1d, 0x9f, - 0x39, 0x21, 0x3d, 0xfc, 0xd0, 0x5b, 0x29, 0x4b, 0x01, 0xc5, 0x92, 0xf9, 0xcc, 0x67, 0x60, 0x4c, - 0xa7, 0xec, 0xeb, 0xf4, 0xfb, 0xe7, 0x2c, 0x38, 0xbd, 0xec, 0x87, 0xad, 0xfb, 0x99, 0x60, 0x98, - 0x97, 0x60, 0x94, 0x4e, 0xd5, 0xd8, 0x88, 0x10, 0x33, 0x42, 0xe1, 0x04, 0x0a, 0xeb, 0x74, 0x5a, - 0xb1, 0xbb, 0x77, 0x57, 0xea, 0x79, 0x11, 0x74, 0x02, 0x85, 0x75, 0x3a, 0xfb, 0x3f, 0x59, 0xf0, - 0xe4, 0xf5, 0xc5, 0xa5, 0x06, 0x55, 0x23, 0x71, 0x42, 0x82, 0xa4, 0x2b, 0x88, 0xef, 0x22, 0x0c, - 0xb5, 0x5d, 0xad, 0x29, 0x4a, 0x04, 0x1a, 0x75, 0xd6, 0x0a, 0x81, 0xfd, 0xa8, 0x44, 0xb2, 0xfe, - 0x92, 0x05, 0xa7, 0xaf, 0x7b, 0x09, 0x26, 0xed, 0x30, 0x1b, 0x77, 0x17, 0x91, 0x76, 0x18, 0x7b, - 0x49, 0x18, 0xed, 0x66, 0xe3, 0xee, 0xb0, 0xc2, 0x60, 0x8d, 0x8a, 0xd7, 0xbc, 0xe3, 0x51, 0x05, - 0x2b, 0x3a, 0xa5, 0xd5, 0xcc, 0xe1, 0x58, 0x51, 0xd0, 0x8e, 0xb9, 0x5e, 0xc4, 0x6c, 0x91, 0x5d, - 0x31, 0x83, 0x55, 0xc7, 0xea, 0x12, 0x81, 0x53, 0x1a, 0xfb, 0xef, 0x58, 0x70, 0xf6, 0xba, 0xdf, - 0x89, 0x13, 0x12, 0x6d, 0xc4, 0x46, 0x63, 0x5f, 0x80, 0x1a, 0x91, 0x76, 0xb3, 0x68, 0xab, 0x5a, - 0x93, 0x94, 0x41, 0xcd, 0x83, 0xfe, 0x14, 0x5d, 0x89, 0x18, 0xb3, 0xfe, 0x22, 0xa2, 0xfe, 0x55, - 0x05, 0xc6, 0x6f, 0xac, 0xad, 0x35, 0xae, 0x93, 0x44, 0xe8, 0xe0, 0x62, 0x47, 0x4f, 0x43, 0xdb, - 0xe5, 0x8e, 0x5e, 0x9b, 0xeb, 0x31, 0xeb, 0x3a, 0x89, 0xe7, 0xcf, 0xf1, 0x18, 0xeb, 0xb9, 0x95, - 0x20, 0xb9, 0x13, 0x35, 0x93, 0xc8, 0x0b, 0x36, 0x73, 0x77, 0xc5, 0x72, 0x9d, 0xa8, 0xf6, 0x5a, - 0x27, 0xd0, 0x0b, 0x30, 0x14, 0xb7, 0xb6, 0x88, 0xda, 0xb4, 0xff, 0x94, 0x32, 0x43, 0x18, 0xf4, - 0x60, 0x6f, 0xb6, 0x76, 0x17, 0xaf, 0xf0, 0x3f, 0x58, 0x90, 0xa2, 0x77, 0x61, 0x74, 0x2b, 0x49, - 0xda, 0x37, 0x88, 0xe3, 0x92, 0x48, 0x6a, 0x89, 0x02, 0x2b, 0x90, 0x0e, 0x06, 0x2f, 0x90, 0x4e, - 0xac, 0x14, 0x16, 0x63, 0x9d, 0xa3, 0xdd, 0x04, 0x48, 0x71, 0x8f, 0x68, 0x6b, 0x63, 0xff, 0xc5, - 0x0a, 0x0c, 0xdf, 0x70, 0x02, 0xd7, 0x27, 0x11, 0x5a, 0x86, 0x01, 0xf2, 0x90, 0xb4, 0xca, 0x19, - 0xb0, 0xe9, 0x42, 0xca, 0x3d, 0x55, 0xf4, 0x3f, 0x66, 0xe5, 0x11, 0x86, 0x61, 0xda, 0xee, 0xeb, - 0x2a, 0x30, 0xf3, 0xb9, 0xe2, 0x51, 0x50, 0x22, 0xc1, 0x57, 0x61, 0x01, 0xc2, 0x92, 0x11, 0xf3, - 0xe9, 0xb4, 0xda, 0x4d, 0xaa, 0xdc, 0x92, 0x72, 0xb1, 0xd7, 0x6b, 0x8b, 0x0d, 0x4e, 0x2e, 0xf8, - 0x72, 0x9f, 0x8e, 0x04, 0xe2, 0x94, 0x9d, 0xfd, 0x0a, 0x9c, 0x61, 0xa7, 0x82, 0x4e, 0xb2, 0x65, - 0xcc, 0x99, 0x42, 0xe1, 0xb4, 0xff, 0x7e, 0x05, 0x4e, 0xad, 0x34, 0x17, 0x9b, 0xa6, 0x37, 0xee, - 0x15, 0x18, 0xe3, 0xcb, 0x33, 0x15, 0x3a, 0xc7, 0x17, 0xe5, 0x95, 0x1b, 0x7b, 0x4d, 0xc3, 0x61, - 0x83, 0x12, 0x3d, 0x09, 0x55, 0xef, 0xbd, 0x20, 0x1b, 0x1f, 0xb4, 0xf2, 0xc6, 0x6d, 0x4c, 0xe1, - 0x14, 0x4d, 0x57, 0x7a, 0xae, 0xe2, 0x14, 0x5a, 0xad, 0xf6, 0xaf, 0xc3, 0x84, 0x17, 0xb7, 0x62, - 0x6f, 0x25, 0xa0, 0xf3, 0xdf, 0x69, 0x49, 0xf1, 0x4d, 0x6d, 0x7f, 0xda, 0x54, 0x85, 0xc5, 0x19, - 0x6a, 0x4d, 0xdf, 0x0e, 0x96, 0xb6, 0x16, 0x8a, 0x23, 0x34, 0xbf, 0x02, 0x35, 0x15, 0x49, 0x23, - 0x03, 0xa0, 0xac, 0xfc, 0x00, 0xa8, 0x12, 0x0a, 0x47, 0xfa, 0x48, 0xab, 0xb9, 0x3e, 0xd2, 0x7f, - 0x6a, 0x41, 0x1a, 0x34, 0x80, 0x30, 0xd4, 0xda, 0x21, 0x3b, 0x80, 0x88, 0xe4, 0x61, 0xdf, 0xd3, - 0x05, 0x92, 0xc8, 0x67, 0x02, 0x97, 0x95, 0x86, 0x2c, 0x8b, 0x53, 0x36, 0xe8, 0x16, 0x0c, 0xb7, - 0x23, 0xd2, 0x4c, 0x58, 0x98, 0x6f, 0x1f, 0x1c, 0x99, 0x54, 0x37, 0x78, 0x49, 0x2c, 0x59, 0xd8, - 0xbf, 0x6e, 0x01, 0xdc, 0xf2, 0xb6, 0xbd, 0x04, 0x3b, 0xc1, 0x26, 0x39, 0xc6, 0x5d, 0xe4, 0x6d, - 0x18, 0x88, 0xdb, 0xa4, 0x55, 0xee, 0xe8, 0x28, 0x6d, 0x51, 0xb3, 0x4d, 0x5a, 0xe9, 0x67, 0xa0, - 0xff, 0x30, 0xe3, 0x63, 0xff, 0x0a, 0xc0, 0x44, 0x4a, 0x46, 0xcd, 0x78, 0xf4, 0xbc, 0x11, 0xd7, - 0xfa, 0x78, 0x26, 0xae, 0xb5, 0xc6, 0xa8, 0xb5, 0x50, 0xd6, 0x04, 0xaa, 0xdb, 0xce, 0x43, 0xb1, - 0x6b, 0x78, 0xa9, 0x6c, 0x83, 0x68, 0x4d, 0x73, 0xab, 0xce, 0x43, 0x6e, 0x46, 0x3d, 0x27, 0x05, - 0x68, 0xd5, 0x79, 0x78, 0xc0, 0x0f, 0x88, 0xd8, 0x0c, 0xa4, 0xdb, 0x94, 0xaf, 0xff, 0x97, 0xf4, - 0x3f, 0x53, 0x8a, 0xb4, 0x3a, 0x56, 0xab, 0x17, 0x08, 0x57, 0x5f, 0x9f, 0xb5, 0x7a, 0x41, 0xb6, - 0x56, 0x2f, 0x28, 0x51, 0xab, 0x17, 0xa0, 0xf7, 0x2d, 0x18, 0x16, 0x1e, 0x72, 0x16, 0x7e, 0x35, - 0x7a, 0xed, 0xd3, 0x7d, 0x55, 0x2d, 0x5c, 0xed, 0xbc, 0xfa, 0x2b, 0xd2, 0x76, 0x14, 0xd0, 0xc2, - 0x26, 0xc8, 0xaa, 0xd1, 0xb7, 0x2d, 0x98, 0x10, 0xbf, 0x31, 0x79, 0xaf, 0x43, 0xe2, 0x44, 0xac, - 0x52, 0x9f, 0x3b, 0x4a, 0x6b, 0x04, 0x0b, 0xde, 0xa8, 0x9f, 0x96, 0x2a, 0xc6, 0x44, 0x16, 0xb6, - 0x2d, 0xd3, 0x1e, 0xf4, 0x3d, 0x0b, 0xce, 0x6c, 0x3b, 0x0f, 0x79, 0x8d, 0x1c, 0x86, 0x9d, 0xc4, - 0x0b, 0x45, 0x88, 0xd9, 0x72, 0xbf, 0x72, 0xd2, 0xc5, 0x88, 0x37, 0xf7, 0x35, 0x79, 0x6c, 0x99, - 0x47, 0x52, 0xd8, 0xe8, 0xdc, 0x16, 0xce, 0xb8, 0x30, 0x22, 0x05, 0x33, 0xc7, 0x6a, 0x5f, 0xd0, - 0x17, 0xe3, 0xc3, 0x67, 0xa0, 0x74, 0xa0, 0xcd, 0xbd, 0xd1, 0x71, 0x82, 0xc4, 0x4b, 0x76, 0x35, - 0x1b, 0x9f, 0xd5, 0x22, 0x04, 0xf1, 0x18, 0x6b, 0xd9, 0x82, 0x31, 0x5d, 0xe6, 0x8e, 0xb1, 0xa6, - 0x10, 0x4e, 0xe7, 0xc8, 0xd3, 0x31, 0x56, 0xd8, 0x81, 0xc7, 0x7b, 0xca, 0xc5, 0xf1, 0x55, 0x6b, - 0xff, 0xd0, 0xd2, 0x15, 0xe6, 0x49, 0x38, 0x66, 0x56, 0x4d, 0xc7, 0xcc, 0xa5, 0xb2, 0x53, 0xa7, - 0x87, 0x77, 0x66, 0x43, 0x6f, 0x3f, 0x5d, 0x09, 0xd0, 0x1a, 0x0c, 0xf9, 0x14, 0x22, 0x4f, 0x83, - 0x2e, 0xf7, 0x33, 0x39, 0x53, 0xe3, 0x82, 0xc1, 0x63, 0x2c, 0x78, 0xd9, 0xbf, 0x61, 0xc1, 0xc0, - 0x49, 0x0c, 0x4f, 0xc3, 0x1c, 0x9e, 0x5e, 0x26, 0xaa, 0xb8, 0xeb, 0x39, 0x87, 0x9d, 0x07, 0x4b, - 0x0f, 0x13, 0x12, 0xc4, 0xcc, 0x94, 0xcc, 0x1d, 0xa1, 0x5f, 0xae, 0xc0, 0x28, 0xad, 0x48, 0xfa, - 0x89, 0x5e, 0x85, 0x71, 0xdf, 0x59, 0x27, 0xbe, 0x74, 0x27, 0x67, 0xb7, 0x5d, 0xb7, 0x74, 0x24, - 0x36, 0x69, 0x69, 0xe1, 0x0d, 0xdd, 0xdb, 0x2e, 0x4c, 0x22, 0x55, 0xd8, 0x70, 0xc5, 0x63, 0x93, - 0x96, 0x5a, 0xfe, 0x0f, 0x9c, 0xa4, 0xb5, 0x25, 0xb6, 0x64, 0xaa, 0xb9, 0xf7, 0x28, 0x10, 0x73, - 0x1c, 0x9a, 0x87, 0x49, 0x29, 0xb1, 0x6f, 0xf2, 0xa1, 0x13, 0xe6, 0xa2, 0xba, 0xa7, 0x87, 0x4d, - 0x34, 0xce, 0xd2, 0xa3, 0xcf, 0xc0, 0x04, 0x1d, 0x9c, 0xb0, 0x93, 0xc8, 0x60, 0x85, 0x41, 0x16, - 0xac, 0xc0, 0x82, 0x43, 0xd7, 0x0c, 0x0c, 0xce, 0x50, 0xda, 0xef, 0xc2, 0xe9, 0x5b, 0xa1, 0xe3, - 0x2e, 0x38, 0xbe, 0x13, 0xb4, 0x48, 0xb4, 0x12, 0x6c, 0x16, 0x9e, 0xeb, 0xea, 0x67, 0xaf, 0x95, - 0xa2, 0xb3, 0x57, 0x3b, 0x02, 0xa4, 0x57, 0x20, 0xc2, 0x6c, 0xde, 0x86, 0x61, 0x8f, 0x57, 0x25, - 0xa4, 0xf6, 0x6a, 0x91, 0x53, 0xa9, 0xab, 0x8d, 0x5a, 0xd8, 0x08, 0x07, 0x60, 0xc9, 0x92, 0xee, - 0x24, 0xf2, 0xbc, 0x50, 0xc5, 0x9b, 0x35, 0xfb, 0xaf, 0x58, 0x30, 0x79, 0x3b, 0x73, 0x19, 0xec, - 0x22, 0x0c, 0xc5, 0x24, 0xca, 0x71, 0xa9, 0x35, 0x19, 0x14, 0x0b, 0xec, 0x23, 0xdf, 0xa6, 0xff, - 0x42, 0x05, 0x6a, 0x2c, 0x66, 0xb3, 0xed, 0xb4, 0x8e, 0xd3, 0x28, 0x5d, 0x35, 0x8c, 0xd2, 0x82, - 0x4d, 0xa2, 0x6a, 0x50, 0x2f, 0x9b, 0x14, 0xdd, 0x55, 0x97, 0xa3, 0x4a, 0xed, 0x0f, 0x53, 0x86, - 0xfc, 0x1e, 0xcd, 0x84, 0x79, 0x97, 0x4a, 0x5e, 0x9c, 0x62, 0xa7, 0xa1, 0x8a, 0xf6, 0xa3, 0x77, - 0x1a, 0xaa, 0x9a, 0xd6, 0x43, 0x2b, 0x35, 0xb4, 0xd6, 0x33, 0xb5, 0xfd, 0x59, 0x16, 0x80, 0xe7, - 0xf8, 0xde, 0x57, 0x89, 0xba, 0x64, 0x38, 0x2b, 0xe2, 0xe9, 0x04, 0xf4, 0x80, 0x29, 0x18, 0xf1, - 0x8f, 0xdf, 0x1d, 0x4d, 0x8b, 0xd8, 0x37, 0x60, 0x32, 0x33, 0x76, 0xe8, 0x25, 0x18, 0x6c, 0x6f, - 0x39, 0x31, 0xc9, 0x44, 0x76, 0x0c, 0x36, 0x28, 0xf0, 0x60, 0x6f, 0x76, 0x42, 0x15, 0x60, 0x10, - 0xcc, 0xa9, 0xed, 0x3f, 0xb6, 0x60, 0xe0, 0x76, 0xe8, 0x1e, 0xa7, 0x8c, 0xdd, 0x30, 0x64, 0xec, - 0x62, 0xf1, 0x8d, 0xf3, 0x9e, 0xe2, 0xd5, 0xc8, 0x88, 0xd7, 0xa5, 0x12, 0xbc, 0x0e, 0x97, 0xac, - 0x6d, 0x18, 0x65, 0x37, 0xda, 0x45, 0x48, 0xcb, 0x0b, 0xc6, 0x06, 0x6a, 0x36, 0xb3, 0x81, 0x9a, - 0xd4, 0x48, 0xb5, 0x6d, 0xd4, 0x33, 0x30, 0x2c, 0x42, 0x28, 0xb2, 0x51, 0x87, 0x82, 0x16, 0x4b, - 0xbc, 0xfd, 0x6b, 0x55, 0x30, 0x6e, 0xd0, 0xa3, 0x1f, 0x59, 0x30, 0x17, 0xf1, 0x2b, 0x0f, 0x6e, - 0xbd, 0x13, 0x79, 0xc1, 0x66, 0xb3, 0xb5, 0x45, 0xdc, 0x8e, 0xef, 0x05, 0x9b, 0x2b, 0x9b, 0x41, - 0xa8, 0xc0, 0x4b, 0x0f, 0x49, 0xab, 0xc3, 0xbc, 0xab, 0xa5, 0x2f, 0xee, 0xab, 0x33, 0xd4, 0x6b, - 0xfb, 0x7b, 0xb3, 0x73, 0xb8, 0xaf, 0x5a, 0x70, 0x9f, 0xad, 0x42, 0xbf, 0x67, 0xc1, 0x15, 0x7e, - 0x87, 0xbc, 0x7c, 0x4f, 0x4a, 0x6d, 0x3c, 0x1b, 0x92, 0x69, 0xca, 0x6e, 0x8d, 0x44, 0xdb, 0x0b, - 0x2f, 0x8b, 0x41, 0xbe, 0xd2, 0xe8, 0xaf, 0x56, 0xdc, 0x6f, 0x33, 0xed, 0x7f, 0x53, 0x85, 0x71, - 0x3a, 0x9e, 0xe9, 0xfd, 0xd1, 0x97, 0x0c, 0x31, 0xf9, 0x78, 0x46, 0x4c, 0x4e, 0x19, 0xc4, 0x8f, - 0xe6, 0xea, 0x68, 0x02, 0xa7, 0x7c, 0x27, 0x4e, 0x6e, 0x10, 0x27, 0x4a, 0xd6, 0x89, 0xc3, 0x0e, - 0x2c, 0xc5, 0x24, 0xe8, 0xeb, 0x10, 0x54, 0xc5, 0xe5, 0xdc, 0xca, 0x72, 0xc3, 0xdd, 0x15, 0xa0, - 0x07, 0x80, 0xd8, 0xe9, 0x68, 0xe4, 0x04, 0x31, 0xef, 0x8c, 0x27, 0x1c, 0xb2, 0x7d, 0x56, 0x3b, - 0x23, 0xaa, 0x45, 0xb7, 0xba, 0xd8, 0xe1, 0x9c, 0x2a, 0xb4, 0x23, 0xf0, 0xc1, 0xb2, 0x47, 0xe0, - 0x43, 0x05, 0x01, 0xbf, 0x3f, 0x6f, 0xc1, 0x69, 0xfa, 0x61, 0xcc, 0xe0, 0xd0, 0x18, 0x85, 0x30, - 0x49, 0x7b, 0xe0, 0x93, 0x44, 0xc2, 0xc4, 0x0c, 0x2b, 0xb0, 0xa5, 0x4d, 0x3e, 0xa9, 0xc5, 0x76, - 0xd3, 0x64, 0x86, 0xb3, 0xdc, 0xed, 0x5f, 0xb3, 0x80, 0x45, 0x9f, 0x9d, 0xc4, 0x3a, 0x76, 0xdd, - 0x5c, 0xc7, 0xec, 0x62, 0xa5, 0xd1, 0x63, 0x09, 0x7b, 0x11, 0xa6, 0x28, 0xb6, 0x11, 0x85, 0x0f, - 0x77, 0xa5, 0x71, 0x5d, 0xec, 0x9b, 0xfd, 0xcb, 0x16, 0x57, 0x77, 0xca, 0x2a, 0x7e, 0x00, 0xa7, - 0x02, 0xed, 0x3f, 0x9d, 0xc8, 0xd2, 0x08, 0x9c, 0x2b, 0xaf, 0xd0, 0xd8, 0xfc, 0xd7, 0x22, 0xcc, - 0x32, 0x0c, 0x71, 0x77, 0x1d, 0xf6, 0x3f, 0xb0, 0xe0, 0x31, 0x9d, 0x50, 0xbb, 0x66, 0x56, 0xe4, - 0x10, 0xad, 0xc3, 0x48, 0xd8, 0x26, 0x91, 0x93, 0xee, 0x00, 0x2e, 0xc9, 0x11, 0xbf, 0x23, 0xe0, - 0x07, 0x7b, 0xb3, 0x67, 0x74, 0xee, 0x12, 0x8e, 0x55, 0x49, 0x64, 0xc3, 0x10, 0xdb, 0x89, 0xc6, - 0xe2, 0x82, 0x20, 0xcb, 0x44, 0xc1, 0x8e, 0x01, 0x62, 0x2c, 0x30, 0xf6, 0x5f, 0xb5, 0xf8, 0x28, - 0xeb, 0x4d, 0x47, 0x5f, 0x83, 0xa9, 0x6d, 0xba, 0x59, 0x58, 0x7a, 0xd8, 0xa6, 0x4b, 0x08, 0x3b, - 0xfe, 0xb4, 0xca, 0x28, 0xce, 0x1e, 0xdd, 0x5d, 0x98, 0x16, 0xad, 0x9f, 0x5a, 0xcd, 0xb0, 0xc5, - 0x5d, 0x15, 0xd9, 0xbf, 0x2f, 0x64, 0x95, 0x59, 0x2d, 0xcf, 0xc0, 0x70, 0x3b, 0x74, 0x17, 0x57, - 0xea, 0x58, 0x8c, 0x95, 0x9a, 0x6c, 0x0d, 0x0e, 0xc6, 0x12, 0x8f, 0xae, 0x01, 0x90, 0x87, 0x09, - 0x89, 0x02, 0xc7, 0x57, 0xc7, 0x96, 0xca, 0x48, 0x58, 0x52, 0x18, 0xac, 0x51, 0xd1, 0x32, 0xed, - 0x28, 0xdc, 0xf1, 0x5c, 0x16, 0xee, 0x5d, 0x35, 0xcb, 0x34, 0x14, 0x06, 0x6b, 0x54, 0x74, 0x8b, - 0xd6, 0x09, 0x62, 0xae, 0xc0, 0x9d, 0x75, 0x91, 0x40, 0x61, 0x24, 0xdd, 0xa2, 0xdd, 0xd5, 0x91, - 0xd8, 0xa4, 0xb5, 0x7f, 0xbb, 0x06, 0x90, 0x9a, 0x08, 0xe8, 0x7d, 0x0b, 0x46, 0x5a, 0x4e, 0xdb, - 0x69, 0xf1, 0xec, 0x38, 0xd5, 0xe2, 0x7b, 0x31, 0x69, 0xe1, 0xb9, 0x45, 0x51, 0x90, 0xfb, 0xb6, - 0x3e, 0x25, 0x05, 0x44, 0x82, 0x0b, 0xfd, 0x59, 0xaa, 0x66, 0xf4, 0x4d, 0x0b, 0x46, 0x1d, 0xdf, - 0x0f, 0x5b, 0x4e, 0xc2, 0x7a, 0x54, 0x29, 0xe3, 0xac, 0xd4, 0x5a, 0x32, 0x9f, 0x96, 0xe5, 0x8d, - 0x79, 0x41, 0x9e, 0x6a, 0x69, 0x98, 0xc2, 0xf6, 0xe8, 0x4d, 0x40, 0x9f, 0x92, 0xa6, 0x25, 0xff, - 0x28, 0x33, 0x59, 0xd3, 0xb2, 0xc6, 0x54, 0x83, 0x66, 0x55, 0xa2, 0x77, 0x8d, 0x5c, 0x01, 0x03, - 0x65, 0xee, 0xa6, 0x1a, 0x8b, 0x66, 0x51, 0x9a, 0x00, 0xf4, 0x45, 0x3d, 0x12, 0x76, 0xb0, 0xcc, - 0xc5, 0x4f, 0xcd, 0x76, 0x2b, 0x88, 0x82, 0x4d, 0x60, 0xd2, 0x35, 0x17, 0x09, 0x11, 0xda, 0x74, - 0xb5, 0xb8, 0x86, 0xcc, 0xea, 0x92, 0x2e, 0x0b, 0x19, 0x04, 0xce, 0x56, 0x81, 0xbe, 0xc8, 0xe3, - 0x94, 0x57, 0x82, 0x8d, 0x50, 0x44, 0x37, 0x5d, 0x2e, 0xf1, 0xcd, 0x77, 0xe3, 0x84, 0x6c, 0xd3, - 0x32, 0xe9, 0x32, 0x70, 0x5b, 0x70, 0xc1, 0x8a, 0x1f, 0x5a, 0x83, 0x21, 0x76, 0xab, 0x22, 0x9e, - 0x1e, 0x29, 0xe3, 0x26, 0x32, 0xef, 0x13, 0xa6, 0x8b, 0x2f, 0xfb, 0x1b, 0x63, 0xc1, 0x0b, 0xdd, - 0x90, 0xf7, 0x6f, 0xe3, 0x95, 0xe0, 0x6e, 0x4c, 0xd8, 0xfd, 0xdb, 0xda, 0xc2, 0x27, 0xd2, 0x0b, - 0xb5, 0x1c, 0x9e, 0x9b, 0x1d, 0xc9, 0x28, 0x49, 0xd7, 0x60, 0xf1, 0x5f, 0x26, 0x5d, 0x9a, 0x86, - 0x32, 0x0d, 0x35, 0x53, 0x34, 0xa5, 0x83, 0xfd, 0xa6, 0xc9, 0x0c, 0x67, 0xb9, 0xcf, 0x78, 0x30, - 0x6e, 0xcc, 0xd8, 0x63, 0x74, 0x76, 0xfa, 0x30, 0x95, 0x9d, 0x92, 0xc7, 0xe8, 0xe3, 0xfc, 0xa3, - 0x01, 0x98, 0x30, 0x05, 0x03, 0x5d, 0x81, 0xda, 0x36, 0x4b, 0x89, 0x94, 0x26, 0x62, 0x51, 0xf2, - 0xbf, 0x2a, 0x11, 0x38, 0xa5, 0x61, 0x29, 0x69, 0x58, 0x71, 0x2d, 0xe6, 0x24, 0x4d, 0x49, 0xa3, - 0x30, 0x58, 0xa3, 0xa2, 0x06, 0xdb, 0x7a, 0x18, 0x26, 0x4a, 0x71, 0x2b, 0x99, 0x59, 0x60, 0x50, - 0x2c, 0xb0, 0x54, 0x61, 0xdf, 0xa7, 0x1d, 0xf2, 0x4d, 0x7f, 0x97, 0x52, 0xd8, 0x37, 0x75, 0x24, - 0x36, 0x69, 0xe9, 0x02, 0x14, 0xc6, 0x4c, 0x08, 0x85, 0x59, 0x98, 0xc6, 0xf0, 0x34, 0xf9, 0x2d, - 0x23, 0x89, 0x47, 0x5f, 0x80, 0xc7, 0xd4, 0xa5, 0x20, 0xcc, 0xfd, 0x87, 0xb2, 0xc6, 0x21, 0x63, - 0x6f, 0xf7, 0xd8, 0x62, 0x3e, 0x19, 0xee, 0x55, 0x1e, 0xbd, 0x0e, 0x13, 0xc2, 0xa4, 0x93, 0x1c, - 0x87, 0xcd, 0x23, 0xde, 0x9b, 0x06, 0x16, 0x67, 0xa8, 0x51, 0x1d, 0xa6, 0x28, 0x84, 0x99, 0x52, - 0x92, 0x03, 0xbf, 0xdc, 0xa4, 0x56, 0xe6, 0x9b, 0x19, 0x3c, 0xee, 0x2a, 0x81, 0xe6, 0x61, 0x92, - 0xdb, 0x16, 0x74, 0x07, 0xc3, 0xbe, 0x83, 0x88, 0x46, 0x54, 0x93, 0xe0, 0x8e, 0x89, 0xc6, 0x59, - 0x7a, 0xf4, 0x0a, 0x8c, 0x39, 0x51, 0x6b, 0xcb, 0x4b, 0x48, 0x2b, 0xe9, 0x44, 0xfc, 0x66, 0xbb, - 0x76, 0x46, 0x3e, 0xaf, 0xe1, 0xb0, 0x41, 0x69, 0x7f, 0x15, 0x4e, 0xe7, 0x04, 0x3d, 0x53, 0xc1, - 0x71, 0xda, 0x9e, 0xec, 0x53, 0x26, 0x1a, 0x67, 0xbe, 0xb1, 0x22, 0x7b, 0xa3, 0x51, 0x51, 0xe9, - 0x64, 0x8e, 0x53, 0x2d, 0x3f, 0x9a, 0x92, 0xce, 0x65, 0x89, 0xc0, 0x29, 0x8d, 0xfd, 0xdf, 0x6b, - 0xa0, 0xb9, 0x19, 0x4a, 0xc4, 0x60, 0xbc, 0x02, 0x63, 0x32, 0xe5, 0x9f, 0x96, 0x6a, 0x4b, 0x75, - 0xf3, 0xba, 0x86, 0xc3, 0x06, 0x25, 0x6d, 0x5b, 0x20, 0x9d, 0x26, 0xd9, 0xd8, 0x1f, 0xe5, 0x4d, - 0xc1, 0x29, 0x0d, 0xba, 0x0c, 0x23, 0x31, 0xf1, 0x37, 0x6e, 0x79, 0xc1, 0x7d, 0x21, 0xd8, 0x4a, - 0x2b, 0x37, 0x05, 0x1c, 0x2b, 0x0a, 0xf4, 0x39, 0xa8, 0x76, 0x3c, 0x57, 0x88, 0xf2, 0x9c, 0xb4, - 0x3b, 0xef, 0xae, 0xd4, 0x0f, 0xf6, 0x66, 0x67, 0xf3, 0xf3, 0x18, 0xd2, 0x6d, 0x64, 0x3c, 0x47, - 0x27, 0x1f, 0x2d, 0x9a, 0xe7, 0x3f, 0x1e, 0xea, 0xd3, 0x7f, 0x7c, 0x0d, 0x40, 0xf4, 0x59, 0x4a, - 0x72, 0x35, 0xfd, 0x66, 0xd7, 0x15, 0x06, 0x6b, 0x54, 0x74, 0x33, 0xda, 0x8a, 0x88, 0x23, 0x77, - 0x6b, 0x3c, 0x22, 0x77, 0xe4, 0x43, 0x6c, 0x46, 0x17, 0xb3, 0xdc, 0x70, 0x77, 0x05, 0xa8, 0x0d, - 0xa7, 0x5c, 0x3a, 0x8f, 0x8c, 0x5a, 0x6b, 0x47, 0x88, 0x03, 0xa6, 0x35, 0xd6, 0xb3, 0x9c, 0x70, - 0x37, 0x73, 0xf4, 0x0e, 0xcc, 0x48, 0x60, 0xf7, 0xb5, 0x3f, 0x36, 0x5d, 0xaa, 0x0b, 0xe7, 0xf7, - 0xf7, 0x66, 0x67, 0xea, 0x3d, 0xa9, 0xf0, 0x21, 0x1c, 0xd0, 0xdb, 0x30, 0xc4, 0x4e, 0x1c, 0xe2, - 0xe9, 0x51, 0xb6, 0xda, 0xbd, 0x58, 0xd6, 0xe1, 0x36, 0xc7, 0xce, 0x2d, 0x44, 0x20, 0x63, 0x7a, - 0x8a, 0xc3, 0x80, 0x58, 0xf0, 0x44, 0x6d, 0x18, 0x75, 0x82, 0x20, 0x4c, 0x1c, 0x6e, 0x84, 0x8d, - 0x95, 0xb1, 0x23, 0xb5, 0x2a, 0xe6, 0xd3, 0xb2, 0xbc, 0x1e, 0x15, 0x1d, 0xa5, 0x61, 0xb0, 0x5e, - 0x05, 0x5d, 0xc6, 0xc3, 0x07, 0x54, 0x61, 0x4a, 0xa7, 0x7b, 0x3c, 0x3d, 0x5e, 0x66, 0x19, 0xbf, - 0x63, 0x14, 0xd2, 0x34, 0x98, 0xc9, 0x0c, 0x67, 0xb9, 0xa3, 0x39, 0xc3, 0x8f, 0x3a, 0x91, 0x86, - 0xe9, 0xa6, 0x7e, 0x54, 0xdd, 0x6d, 0xca, 0xae, 0x94, 0xf2, 0xd0, 0x3c, 0xa6, 0x09, 0x26, 0x33, - 0x57, 0x4a, 0x53, 0x14, 0xd6, 0xe9, 0x66, 0x3e, 0x0d, 0xa3, 0xda, 0x80, 0xf7, 0x13, 0x0f, 0x3a, - 0xf3, 0x3a, 0x4c, 0x65, 0x07, 0xb2, 0xaf, 0x78, 0xd2, 0xff, 0x59, 0x81, 0xc9, 0x9c, 0x93, 0x8c, - 0xfb, 0x1e, 0x8b, 0x98, 0x36, 0x54, 0xde, 0x4d, 0x2f, 0x70, 0x31, 0xc3, 0x98, 0x8a, 0xab, 0x52, - 0x42, 0x71, 0x49, 0x2d, 0x5a, 0xed, 0xa9, 0x45, 0x85, 0xb2, 0x1a, 0x38, 0xba, 0xb2, 0x32, 0x57, - 0x87, 0xc1, 0x52, 0xab, 0xc3, 0x23, 0x50, 0x70, 0xc6, 0x02, 0x33, 0x5c, 0x62, 0x81, 0x39, 0xb0, - 0x60, 0xc2, 0x94, 0xbc, 0x12, 0x23, 0xfe, 0x51, 0x1d, 0xc0, 0x39, 0xb6, 0x11, 0x4b, 0xa2, 0xd0, - 0xf7, 0x49, 0x24, 0x22, 0xc5, 0x26, 0xc4, 0xbe, 0x4a, 0x40, 0xb1, 0x46, 0x61, 0x7f, 0xbb, 0x02, - 0x53, 0x69, 0xd8, 0xb0, 0x48, 0x7d, 0x7a, 0x7c, 0x47, 0x03, 0x6b, 0xc6, 0xd1, 0x40, 0x51, 0x46, - 0xd3, 0x4c, 0xbb, 0x7a, 0x1e, 0x13, 0xbc, 0x9d, 0x39, 0x26, 0x78, 0xb1, 0x4f, 0xbe, 0x87, 0x1f, - 0x19, 0xfc, 0xb3, 0x0a, 0x9c, 0xcd, 0x16, 0x59, 0xf4, 0x1d, 0x6f, 0xfb, 0x18, 0xc7, 0xe9, 0x0b, - 0xc6, 0x38, 0xbd, 0xdc, 0x5f, 0x7f, 0x58, 0xe3, 0x7a, 0x0e, 0x96, 0x93, 0x19, 0xac, 0x4f, 0x1f, - 0x85, 0xf9, 0xe1, 0x23, 0xf6, 0x3b, 0x16, 0x3c, 0x9e, 0x5b, 0xee, 0x24, 0x5c, 0xa0, 0x6f, 0x99, - 0x2e, 0xd0, 0x17, 0x8e, 0xd0, 0xbd, 0x1e, 0x3e, 0xd1, 0xff, 0x5a, 0xe9, 0xd1, 0x2d, 0xe6, 0x2d, - 0xbb, 0x03, 0xa3, 0x4e, 0xab, 0x45, 0xe2, 0x78, 0x35, 0x74, 0x55, 0x2e, 0x9e, 0xe7, 0xd9, 0xfa, - 0x99, 0x82, 0x0f, 0xf6, 0x66, 0x67, 0xb2, 0x2c, 0x52, 0x34, 0xd6, 0x39, 0x98, 0x39, 0xb5, 0x2a, - 0xc7, 0x94, 0x53, 0xeb, 0x1a, 0xc0, 0x8e, 0xda, 0xa5, 0x67, 0x9d, 0x70, 0xda, 0xfe, 0x5d, 0xa3, - 0x42, 0xef, 0x30, 0xab, 0x97, 0x87, 0x48, 0x0c, 0x14, 0x4e, 0x38, 0xe3, 0x03, 0xea, 0xf1, 0x16, - 0xfc, 0xce, 0xa4, 0xf2, 0x58, 0x2a, 0x9e, 0xf6, 0x77, 0xab, 0xf0, 0x53, 0x87, 0x88, 0x1d, 0x9a, - 0x37, 0x4f, 0x3e, 0x9f, 0xcb, 0xba, 0xa7, 0x66, 0x72, 0x0b, 0x1b, 0xfe, 0xaa, 0xcc, 0xc7, 0xaa, - 0x7c, 0xe8, 0x8f, 0xf5, 0x2d, 0xdd, 0x99, 0xc8, 0x43, 0x1d, 0xaf, 0x1f, 0x79, 0x62, 0x3d, 0x3a, - 0xef, 0xe2, 0x09, 0x3a, 0x3e, 0xec, 0xaf, 0x5b, 0xf0, 0xf1, 0xdc, 0x4e, 0x19, 0x01, 0x16, 0x57, - 0xa0, 0xd6, 0xa2, 0x40, 0xed, 0x2e, 0x4a, 0x7a, 0xc5, 0x4c, 0x22, 0x70, 0x4a, 0x63, 0xc4, 0x51, - 0x54, 0x0a, 0xe3, 0x28, 0xfe, 0xbd, 0x05, 0x67, 0xb2, 0x8d, 0x38, 0x09, 0xad, 0xd3, 0x34, 0xb5, - 0xce, 0x5c, 0x7f, 0xdf, 0xbe, 0x87, 0xc2, 0xf9, 0xf6, 0x38, 0x9c, 0xeb, 0x5a, 0xac, 0xf8, 0x30, - 0xfe, 0xac, 0x05, 0xa7, 0x36, 0xd9, 0xfe, 0x42, 0xbb, 0xf1, 0x23, 0x3a, 0x56, 0x70, 0x4d, 0xea, - 0xd0, 0x8b, 0x42, 0x7c, 0xb7, 0xd4, 0x45, 0x82, 0xbb, 0x2b, 0x43, 0xdf, 0xb0, 0xe0, 0x8c, 0xf3, - 0x20, 0xee, 0xca, 0xa3, 0x2f, 0xe4, 0xe8, 0xf5, 0x02, 0x57, 0x5e, 0x41, 0x06, 0xfe, 0x85, 0xe9, - 0xfd, 0xbd, 0xd9, 0x33, 0x79, 0x54, 0x38, 0xb7, 0x56, 0xf4, 0xb6, 0xc8, 0x3f, 0x46, 0xcd, 0xbe, - 0x52, 0x77, 0xd7, 0xf2, 0xee, 0x1f, 0x70, 0x9d, 0x24, 0x31, 0x58, 0x71, 0x44, 0x5f, 0x86, 0xda, - 0xa6, 0xbc, 0xe4, 0x23, 0x94, 0x5e, 0xc1, 0xca, 0x92, 0x7b, 0x27, 0x88, 0x47, 0xb9, 0x2b, 0x14, - 0x4e, 0x99, 0xa2, 0x1b, 0x50, 0x0d, 0x36, 0x62, 0x71, 0x5f, 0xb7, 0x28, 0x8e, 0xc6, 0x8c, 0x5a, - 0xe2, 0x37, 0x10, 0x6f, 0x2f, 0x37, 0x31, 0x65, 0x41, 0x39, 0x45, 0xeb, 0xae, 0xf0, 0x61, 0x17, - 0x70, 0xc2, 0x0b, 0xf5, 0x6e, 0x4e, 0x78, 0xa1, 0x8e, 0x29, 0x0b, 0x16, 0xb0, 0x17, 0xb7, 0x62, - 0x4f, 0x38, 0xa8, 0x0b, 0x2e, 0x73, 0x77, 0xdd, 0xca, 0xe0, 0xa9, 0xe8, 0x18, 0x18, 0x73, 0x46, - 0x68, 0x0d, 0x86, 0x5a, 0x2c, 0x75, 0xb4, 0xf0, 0x1f, 0x14, 0x25, 0x14, 0xee, 0x4a, 0x33, 0xcd, - 0x0f, 0xd2, 0x38, 0x1c, 0x0b, 0x5e, 0x8c, 0x2b, 0x69, 0x6f, 0x6d, 0xc4, 0xc2, 0x3f, 0x50, 0xc4, - 0xb5, 0x2b, 0x09, 0xb8, 0xe0, 0xca, 0xe0, 0x58, 0xf0, 0x42, 0x75, 0xa8, 0x6c, 0xb4, 0x44, 0xfe, - 0xc7, 0x82, 0x1d, 0xad, 0x79, 0x9d, 0x74, 0x61, 0x68, 0x7f, 0x6f, 0xb6, 0xb2, 0xbc, 0x88, 0x2b, - 0x1b, 0x2d, 0xf4, 0x16, 0x0c, 0x6f, 0xf0, 0x0b, 0x82, 0x22, 0xd7, 0xe3, 0xd5, 0xa2, 0x5b, 0x8c, - 0x5d, 0xb7, 0x09, 0xf9, 0x4d, 0x06, 0x81, 0xc0, 0x92, 0x1d, 0x7a, 0x07, 0x60, 0x43, 0x5d, 0x79, - 0x14, 0xc9, 0x1e, 0xe7, 0xfa, 0xbb, 0x22, 0x29, 0x76, 0xcf, 0x0a, 0x8a, 0x35, 0x8e, 0x54, 0xe6, - 0x1d, 0x99, 0xfd, 0x9e, 0x25, 0x7a, 0x2c, 0x94, 0xf9, 0xdc, 0x64, 0xf9, 0x5c, 0xe6, 0x15, 0x0a, - 0xa7, 0x4c, 0x51, 0x07, 0xc6, 0x77, 0xe2, 0xf6, 0x16, 0x91, 0x53, 0x9f, 0x65, 0x7f, 0x1c, 0xbd, - 0xf6, 0x5a, 0x41, 0x4a, 0x4f, 0x51, 0xc4, 0x8b, 0x92, 0x8e, 0xe3, 0x77, 0x69, 0x30, 0x96, 0x46, - 0xe9, 0x4d, 0x9d, 0x2d, 0x36, 0x6b, 0xa1, 0x9f, 0xe4, 0xbd, 0x4e, 0xb8, 0xbe, 0x9b, 0x10, 0x91, - 0x1d, 0xb2, 0xe0, 0x93, 0xbc, 0xc1, 0x89, 0xbb, 0x3f, 0x89, 0x40, 0x60, 0xc9, 0x4e, 0x0d, 0x19, - 0xd3, 0xc6, 0x53, 0xa5, 0x87, 0xac, 0xab, 0x0f, 0xe9, 0x90, 0x31, 0xed, 0x9b, 0x32, 0x65, 0x5a, - 0xb7, 0xbd, 0x15, 0x26, 0x61, 0x90, 0xd1, 0xfd, 0xa7, 0xca, 0x68, 0xdd, 0x46, 0x4e, 0xc9, 0x6e, - 0xad, 0x9b, 0x47, 0x85, 0x73, 0x6b, 0xb5, 0x7f, 0x7f, 0xb0, 0x7b, 0xbd, 0x65, 0xe6, 0xf0, 0x2f, - 0x76, 0x9f, 0xae, 0x7e, 0xae, 0xff, 0xed, 0xde, 0x23, 0x3c, 0x67, 0xfd, 0x86, 0x05, 0xe7, 0xda, - 0xb9, 0x8b, 0xa9, 0x58, 0xb0, 0xfa, 0xdd, 0x35, 0xf2, 0x01, 0x53, 0xa9, 0x4f, 0xf3, 0xf1, 0xb8, - 0x47, 0x9d, 0x59, 0x0b, 0xb4, 0xfa, 0xa1, 0x2d, 0xd0, 0x7b, 0x30, 0xc2, 0x8c, 0xa6, 0x34, 0xf7, - 0x46, 0x9f, 0xe9, 0x2a, 0xd8, 0xd2, 0xb7, 0x28, 0x58, 0x60, 0xc5, 0x8c, 0x0e, 0xdc, 0x93, 0xd9, - 0x4e, 0x60, 0xc2, 0xd0, 0x22, 0x67, 0x2b, 0x77, 0x4d, 0x2c, 0x8b, 0x91, 0x78, 0xb2, 0x71, 0x18, - 0xf1, 0x41, 0x11, 0x01, 0x3e, 0xbc, 0xb2, 0x93, 0xb4, 0x68, 0xff, 0xb1, 0x95, 0x63, 0x7f, 0xf1, - 0x3d, 0xc8, 0x6b, 0xe6, 0x1e, 0xe4, 0x62, 0x76, 0x0f, 0xd2, 0xe5, 0x31, 0x30, 0xb6, 0x1f, 0xe5, - 0xf3, 0x16, 0x96, 0x4d, 0x0e, 0x62, 0xfb, 0x70, 0xa1, 0x68, 0x72, 0xb3, 0x00, 0x1e, 0x57, 0x1d, - 0x0a, 0xa6, 0x01, 0x3c, 0xee, 0x4a, 0x1d, 0x33, 0x4c, 0xd9, 0xeb, 0xdf, 0xf6, 0xff, 0xb6, 0xa0, - 0xda, 0x08, 0xdd, 0x63, 0xf4, 0x80, 0x5c, 0x37, 0x3c, 0x20, 0x4f, 0x17, 0xbe, 0xf9, 0xd3, 0xd3, - 0xdf, 0x71, 0x27, 0xe3, 0xef, 0xf8, 0x64, 0x31, 0xab, 0xc3, 0xbd, 0x1b, 0xdf, 0xab, 0x82, 0xfe, - 0x6a, 0x11, 0xfa, 0xad, 0xa3, 0x84, 0x74, 0x56, 0xcb, 0x3d, 0x64, 0x24, 0xea, 0x60, 0x01, 0x50, - 0xf2, 0xbe, 0xd7, 0x9f, 0xda, 0xc8, 0xce, 0x7b, 0xc4, 0xdb, 0xdc, 0x4a, 0x88, 0x9b, 0xed, 0xd8, - 0xc9, 0x45, 0x76, 0xfe, 0x37, 0x0b, 0x26, 0x33, 0xb5, 0xa3, 0xed, 0xbc, 0x2b, 0x23, 0x47, 0x75, - 0x69, 0x9c, 0x2a, 0xbc, 0x64, 0x32, 0x07, 0xa0, 0xdc, 0xf0, 0xd2, 0xf1, 0xc0, 0x8c, 0x30, 0xe5, - 0xa7, 0x8f, 0xb1, 0x46, 0x81, 0x5e, 0x82, 0xd1, 0x24, 0x6c, 0x87, 0x7e, 0xb8, 0xb9, 0x7b, 0x93, - 0xc8, 0x8c, 0x04, 0xea, 0x08, 0x63, 0x2d, 0x45, 0x61, 0x9d, 0xce, 0xfe, 0x41, 0x15, 0xb2, 0x8f, - 0x5e, 0xfd, 0x7f, 0x41, 0xfd, 0xd3, 0x23, 0xa8, 0xbf, 0x6b, 0xc1, 0x14, 0xad, 0x9d, 0xc5, 0xaf, - 0xc8, 0xf8, 0x4b, 0x95, 0x6e, 0xdc, 0x3a, 0x24, 0xdd, 0xf8, 0x45, 0xaa, 0xee, 0xdc, 0xb0, 0x23, - 0x53, 0xe0, 0x68, 0x5a, 0x8c, 0x42, 0xb1, 0xc0, 0x0a, 0x3a, 0x12, 0x45, 0xe2, 0x72, 0x8a, 0x4e, - 0x47, 0xa2, 0x08, 0x0b, 0xac, 0xcc, 0x46, 0x3e, 0x90, 0x9f, 0x8d, 0x9c, 0x67, 0x0c, 0x12, 0x71, - 0x13, 0xc2, 0x0e, 0xd0, 0x32, 0x06, 0xc9, 0x80, 0x8a, 0x94, 0xc6, 0xfe, 0x17, 0x55, 0x18, 0x6b, - 0x84, 0x6e, 0x1a, 0x5b, 0xfd, 0xa2, 0x11, 0x5b, 0x7d, 0x21, 0x13, 0x5b, 0x3d, 0xa5, 0xd3, 0x3e, - 0x9a, 0xd0, 0x6a, 0x91, 0x5b, 0x8a, 0xe5, 0xcb, 0x3f, 0x6a, 0x58, 0xb5, 0x91, 0x5b, 0x4a, 0x71, - 0xc2, 0x26, 0xe3, 0x3f, 0x53, 0xe1, 0xd4, 0x7f, 0x6c, 0xc1, 0x44, 0x23, 0x74, 0xa9, 0x88, 0xfe, - 0x59, 0x92, 0x47, 0x3d, 0x23, 0xd5, 0xd0, 0x21, 0x19, 0xa9, 0x7e, 0xd5, 0x82, 0xe1, 0x46, 0xe8, - 0x9e, 0x84, 0x2b, 0x71, 0xd9, 0x74, 0x25, 0x7e, 0xbc, 0x50, 0xf9, 0xf6, 0xf0, 0x1e, 0xfe, 0x46, - 0x15, 0xc6, 0x69, 0x93, 0xc3, 0x4d, 0xf9, 0xc1, 0x8c, 0xc1, 0xb1, 0x4a, 0x0c, 0x0e, 0x35, 0x07, - 0x43, 0xdf, 0x0f, 0x1f, 0x64, 0x3f, 0xde, 0x32, 0x83, 0x62, 0x81, 0x45, 0x97, 0x61, 0xa4, 0x1d, - 0x91, 0x1d, 0x2f, 0xec, 0xc4, 0xd9, 0xbb, 0x6e, 0x0d, 0x01, 0xc7, 0x8a, 0x02, 0xbd, 0x08, 0x63, - 0xb1, 0x17, 0xb4, 0x88, 0x0c, 0xac, 0x18, 0x60, 0x81, 0x15, 0x3c, 0xf1, 0x9f, 0x06, 0xc7, 0x06, - 0x15, 0x7a, 0x0b, 0x6a, 0xec, 0x3f, 0x9b, 0x43, 0x47, 0x48, 0x91, 0xce, 0xb3, 0x52, 0x49, 0x0e, - 0x38, 0x65, 0x86, 0xae, 0x01, 0x24, 0x32, 0x06, 0x24, 0x16, 0x67, 0xa6, 0xca, 0x38, 0x55, 0xd1, - 0x21, 0x31, 0xd6, 0xa8, 0xd0, 0x73, 0x50, 0x4b, 0x1c, 0xcf, 0xbf, 0xe5, 0x05, 0x24, 0x16, 0x51, - 0x34, 0x22, 0x81, 0xad, 0x00, 0xe2, 0x14, 0x4f, 0xd7, 0x7c, 0x76, 0xd3, 0x96, 0x3f, 0xc0, 0x30, - 0xc2, 0xa8, 0xd9, 0x9a, 0x7f, 0x4b, 0x41, 0xb1, 0x46, 0x61, 0xbf, 0xc0, 0xd6, 0xee, 0x3e, 0x63, - 0xef, 0x7f, 0x52, 0x01, 0xd4, 0x60, 0xb1, 0x26, 0xc6, 0x1b, 0x15, 0x5b, 0x30, 0x11, 0x93, 0x5b, - 0x5e, 0xd0, 0x79, 0x28, 0x58, 0x95, 0xbb, 0xed, 0xd0, 0x5c, 0xd2, 0xcb, 0xf0, 0xdb, 0xa5, 0x26, - 0x0c, 0x67, 0xf8, 0xd2, 0x21, 0x89, 0x3a, 0xc1, 0x7c, 0x7c, 0x37, 0x26, 0x91, 0x78, 0x65, 0x82, - 0x0d, 0x09, 0x96, 0x40, 0x9c, 0xe2, 0xa9, 0x0c, 0xb0, 0x3f, 0xb7, 0xc3, 0x00, 0x87, 0x61, 0x22, - 0xa5, 0x86, 0xa5, 0x1c, 0xd7, 0xe0, 0xd8, 0xa0, 0x42, 0xcb, 0x80, 0xe2, 0x4e, 0xbb, 0xed, 0xb3, - 0xa3, 0x2d, 0xc7, 0xbf, 0x1e, 0x85, 0x9d, 0x36, 0x0f, 0x37, 0x16, 0xd9, 0xba, 0x9b, 0x5d, 0x58, - 0x9c, 0x53, 0x82, 0x4e, 0xfa, 0x8d, 0x98, 0xfd, 0x16, 0xb7, 0x67, 0xb9, 0x83, 0xad, 0xc9, 0x40, - 0x58, 0xe2, 0xec, 0x0e, 0x5b, 0xaa, 0x58, 0xf6, 0xff, 0xa4, 0x13, 0x11, 0x44, 0x60, 0xbc, 0xcd, - 0x96, 0x23, 0x79, 0xbe, 0x5e, 0x6a, 0x28, 0x33, 0xd1, 0x2e, 0x3c, 0xcb, 0xb7, 0xce, 0x06, 0x9b, - 0x5c, 0xed, 0xff, 0x08, 0x4c, 0xd7, 0x88, 0x53, 0xc5, 0x61, 0x11, 0xcb, 0x2a, 0x6c, 0xb1, 0x4f, - 0x94, 0x79, 0xee, 0x26, 0xd5, 0xe3, 0x22, 0x32, 0x16, 0x4b, 0x2e, 0xe8, 0x4b, 0x3c, 0x40, 0x80, - 0xcd, 0xef, 0xf2, 0x6f, 0x50, 0x71, 0x7a, 0x23, 0x4a, 0x5b, 0xb0, 0xc0, 0x1a, 0x3b, 0x74, 0x0b, - 0xc6, 0x45, 0x8a, 0x78, 0xe1, 0x19, 0xa8, 0x1a, 0xbb, 0xe3, 0x71, 0xac, 0x23, 0x0f, 0xb2, 0x00, - 0x6c, 0x16, 0x46, 0x9b, 0xf0, 0xa4, 0xf6, 0x6e, 0x4c, 0x4e, 0x44, 0x16, 0x57, 0x1c, 0x1f, 0xdf, - 0xdf, 0x9b, 0x7d, 0x72, 0xed, 0x30, 0x42, 0x7c, 0x38, 0x1f, 0x74, 0x07, 0xce, 0x3a, 0xad, 0xc4, - 0xdb, 0x21, 0x75, 0xe2, 0xb8, 0xbe, 0x17, 0x10, 0xf3, 0x6a, 0xf5, 0xe3, 0xfb, 0x7b, 0xb3, 0x67, - 0xe7, 0xf3, 0x08, 0x70, 0x7e, 0x39, 0xf4, 0x1a, 0xd4, 0xdc, 0x20, 0x16, 0x63, 0x30, 0x64, 0x3c, - 0x91, 0x53, 0xab, 0xdf, 0x6e, 0xaa, 0xfe, 0xa7, 0x7f, 0x70, 0x5a, 0x00, 0xbd, 0xc7, 0x5f, 0xee, - 0x55, 0x1b, 0x12, 0xfe, 0x34, 0xd3, 0xcb, 0xa5, 0xb6, 0xc0, 0xc6, 0x2d, 0x10, 0xee, 0x34, 0x53, - 0x91, 0x8f, 0xc6, 0x05, 0x11, 0xa3, 0x0a, 0xf4, 0x79, 0x40, 0x31, 0x89, 0x76, 0xbc, 0x16, 0x99, - 0x6f, 0xb1, 0x94, 0x97, 0xec, 0x78, 0x6e, 0xc4, 0x08, 0xff, 0x47, 0xcd, 0x2e, 0x0a, 0x9c, 0x53, - 0x0a, 0xdd, 0xa0, 0x1a, 0x47, 0x87, 0x8a, 0x40, 0x55, 0x69, 0xda, 0x4d, 0xd7, 0x49, 0x3b, 0x22, - 0x2d, 0x27, 0x21, 0xae, 0xc9, 0x11, 0x67, 0xca, 0xd1, 0x65, 0x45, 0xa5, 0xf2, 0x06, 0x33, 0xbc, - 0xb2, 0x3b, 0x9d, 0x37, 0xdd, 0x29, 0x6d, 0x85, 0x71, 0x72, 0x9b, 0x24, 0x0f, 0xc2, 0xe8, 0x3e, - 0x73, 0xb6, 0x8f, 0x68, 0x29, 0xbe, 0x52, 0x14, 0xd6, 0xe9, 0xa8, 0x0d, 0xc4, 0x4e, 0x79, 0x56, - 0xea, 0xcc, 0x85, 0x3e, 0x92, 0xce, 0x9d, 0x1b, 0x1c, 0x8c, 0x25, 0x5e, 0x92, 0xae, 0x34, 0x16, - 0x99, 0x3b, 0x3c, 0x43, 0xba, 0xd2, 0x58, 0xc4, 0x12, 0x8f, 0xc2, 0xee, 0x87, 0x88, 0x26, 0xca, - 0x1c, 0x4d, 0x74, 0x6b, 0xf0, 0x92, 0x6f, 0x11, 0x3d, 0x84, 0x29, 0xf5, 0x18, 0x12, 0xcf, 0xbd, - 0x18, 0x4f, 0x4f, 0x96, 0x79, 0x37, 0x38, 0x37, 0x85, 0xa3, 0x8a, 0x4c, 0x5e, 0xc9, 0xf0, 0xc4, - 0x5d, 0xb5, 0x18, 0x29, 0x02, 0xa6, 0x0a, 0xd3, 0xb3, 0x5f, 0x81, 0x5a, 0xdc, 0x59, 0x77, 0xc3, - 0x6d, 0xc7, 0x0b, 0x98, 0xcf, 0x5a, 0x7f, 0x05, 0x57, 0x22, 0x70, 0x4a, 0x33, 0xf3, 0x59, 0x38, - 0xd5, 0x25, 0xd3, 0x7d, 0x85, 0xd4, 0xfd, 0xe2, 0x00, 0xd4, 0x94, 0x57, 0x07, 0x5d, 0x31, 0x1d, - 0x77, 0x8f, 0x67, 0x1d, 0x77, 0x23, 0x74, 0xe5, 0xd5, 0x7d, 0x75, 0xef, 0xe4, 0x3c, 0x83, 0xf9, - 0x6c, 0xe1, 0x47, 0x2c, 0x7f, 0xb3, 0xa5, 0x8f, 0x47, 0x42, 0x53, 0xb3, 0x7e, 0xe0, 0x50, 0xb3, - 0xbe, 0xe4, 0x2b, 0x47, 0xd4, 0x80, 0x6f, 0x87, 0xee, 0x4a, 0x23, 0xfb, 0x82, 0x47, 0x83, 0x02, - 0x31, 0xc7, 0x31, 0xbb, 0x8b, 0x2a, 0x65, 0x66, 0x77, 0x0d, 0x1f, 0xd5, 0xee, 0x92, 0x1c, 0x70, - 0xca, 0x0c, 0xed, 0xc0, 0xa9, 0x96, 0xf9, 0x22, 0x8b, 0xba, 0xb0, 0xf2, 0x7c, 0x1f, 0x2f, 0xa2, - 0x74, 0xb4, 0xec, 0xf3, 0x8b, 0x59, 0x7e, 0xb8, 0xbb, 0x0a, 0xfb, 0x07, 0xdc, 0x0b, 0x24, 0xb6, - 0x85, 0x24, 0xee, 0xf8, 0xc7, 0x99, 0x4c, 0xfa, 0x8e, 0xb1, 0x53, 0x7d, 0x04, 0xfe, 0xc7, 0xdf, - 0xb4, 0x98, 0xff, 0x71, 0x8d, 0x6c, 0xb7, 0x7d, 0x27, 0x39, 0xce, 0x68, 0xbd, 0x2f, 0xc1, 0x48, - 0x22, 0x6a, 0x29, 0x97, 0x01, 0x5b, 0x6b, 0x16, 0xf3, 0xc7, 0x2a, 0x45, 0x20, 0xa1, 0x58, 0x31, - 0xb4, 0xff, 0x35, 0xff, 0x0a, 0x12, 0x73, 0x12, 0x3b, 0xab, 0xdb, 0xe6, 0xce, 0xea, 0x99, 0xd2, - 0x9d, 0xe9, 0xb1, 0xc3, 0xfa, 0xae, 0xd9, 0x05, 0x66, 0xb0, 0x7d, 0xf4, 0x3d, 0xe2, 0xf6, 0x2a, - 0x98, 0xaf, 0xcc, 0xa0, 0xd7, 0x78, 0xa8, 0x2a, 0xd7, 0x88, 0xcf, 0xf6, 0x19, 0xa6, 0x6a, 0xff, - 0x7a, 0x05, 0xce, 0xe4, 0x3d, 0x3e, 0x8f, 0x5c, 0x18, 0x6b, 0x6b, 0xe6, 0x73, 0xb9, 0x44, 0x06, - 0xba, 0xc1, 0x9d, 0x9a, 0x2e, 0x3a, 0x14, 0x1b, 0x5c, 0x11, 0x81, 0x31, 0xb2, 0xe3, 0xb5, 0x94, - 0x7b, 0xa5, 0xd2, 0xbf, 0x8a, 0x52, 0xd5, 0x2c, 0x69, 0x8c, 0xb0, 0xc1, 0xf6, 0x18, 0x92, 0xb4, - 0xdb, 0xff, 0xd0, 0x82, 0xc7, 0x7a, 0x64, 0x3b, 0xa0, 0xd5, 0x3d, 0x60, 0x5e, 0x48, 0xf1, 0x8a, - 0x91, 0xaa, 0x8e, 0xfb, 0x26, 0xb1, 0xc0, 0xa2, 0x75, 0x00, 0xee, 0x5b, 0x64, 0x4f, 0xbb, 0x56, - 0xca, 0xc4, 0x00, 0x74, 0xdd, 0xac, 0xd6, 0x2e, 0xdd, 0xaa, 0xc7, 0x5c, 0x35, 0xae, 0xf6, 0x77, - 0xaa, 0x30, 0xc8, 0x5f, 0x97, 0x6c, 0xc0, 0xf0, 0x16, 0x4f, 0xae, 0xd8, 0x5f, 0x6e, 0xc7, 0xd4, - 0x4e, 0xe2, 0x00, 0x2c, 0xd9, 0xa0, 0x55, 0x38, 0xed, 0x05, 0x5e, 0xe2, 0x39, 0x7e, 0x9d, 0xf8, - 0xce, 0xae, 0x34, 0xbc, 0x79, 0x62, 0x6d, 0x99, 0x03, 0xf6, 0xf4, 0x4a, 0x37, 0x09, 0xce, 0x2b, - 0x87, 0x5e, 0xef, 0xca, 0x8e, 0xc4, 0x93, 0x56, 0xaa, 0xbb, 0x5a, 0x87, 0x67, 0x48, 0x42, 0xaf, - 0xc2, 0x78, 0xbb, 0x6b, 0x8b, 0xa1, 0x3d, 0x4b, 0x68, 0x6e, 0x2b, 0x4c, 0x5a, 0x54, 0x87, 0xa9, - 0xb8, 0xc3, 0x4e, 0x64, 0xd7, 0xb6, 0x22, 0x12, 0x6f, 0x85, 0xbe, 0x2b, 0x9e, 0xd3, 0x52, 0xe6, - 0x54, 0x33, 0x83, 0xc7, 0x5d, 0x25, 0x28, 0x97, 0x0d, 0xc7, 0xf3, 0x3b, 0x11, 0x49, 0xb9, 0x0c, - 0x99, 0x5c, 0x96, 0x33, 0x78, 0xdc, 0x55, 0xc2, 0xfe, 0x43, 0x0b, 0x4e, 0xe7, 0x84, 0x2d, 0xf0, - 0x68, 0xba, 0x4d, 0x2f, 0x4e, 0x54, 0xfa, 0x64, 0x2d, 0x9a, 0x8e, 0xc3, 0xb1, 0xa2, 0xa0, 0x52, - 0xc8, 0xf7, 0x8d, 0xd9, 0xe3, 0x40, 0x71, 0x30, 0x2b, 0xb0, 0xfd, 0xe5, 0x3a, 0x52, 0x8f, 0xe4, - 0x0f, 0xf4, 0x7c, 0x24, 0xff, 0x29, 0x18, 0xdc, 0x54, 0xbb, 0x73, 0xcd, 0x30, 0xe1, 0xfb, 0x73, - 0x8e, 0xb3, 0xbf, 0x55, 0x85, 0xc9, 0x4c, 0xf8, 0x12, 0x6d, 0x48, 0xe6, 0x2d, 0x7f, 0xe6, 0x52, - 0x58, 0x24, 0xed, 0xad, 0x9c, 0xf7, 0xfc, 0x2f, 0x9a, 0x4f, 0xfd, 0xa6, 0x6d, 0x5e, 0xa8, 0x1b, - 0x8f, 0x98, 0x95, 0x4d, 0xe9, 0xfe, 0x14, 0x0c, 0xb4, 0x43, 0xf5, 0x26, 0xa5, 0x12, 0x7a, 0xbc, - 0x50, 0x6f, 0x84, 0xa1, 0x8f, 0x19, 0x12, 0x3d, 0x2d, 0x7a, 0x9f, 0x71, 0x4e, 0x62, 0xc7, 0x0d, - 0x63, 0x6d, 0x08, 0x9e, 0x81, 0xe1, 0xfb, 0x64, 0x37, 0xf2, 0x82, 0xcd, 0xac, 0x6b, 0xf6, 0x26, - 0x07, 0x63, 0x89, 0x37, 0xd3, 0xb6, 0x0f, 0x1f, 0x73, 0xda, 0xf6, 0x91, 0xc2, 0x10, 0xcc, 0x5f, - 0xb1, 0x60, 0x92, 0xe5, 0x9c, 0x13, 0xd7, 0x60, 0xbd, 0x30, 0x38, 0xc6, 0x55, 0xf1, 0x29, 0x18, - 0x8c, 0x68, 0x65, 0xd9, 0x8c, 0xcb, 0xac, 0x05, 0x98, 0xe3, 0xd0, 0x13, 0xe2, 0xc5, 0x74, 0xfa, - 0xf9, 0xc6, 0x78, 0x06, 0xdb, 0xf4, 0xe9, 0x73, 0x16, 0xe0, 0x8f, 0x49, 0xdb, 0xf7, 0x78, 0x63, - 0x53, 0x4f, 0xcc, 0x47, 0x25, 0xc0, 0x3f, 0xb7, 0x71, 0x8f, 0x2a, 0xc0, 0x3f, 0x9f, 0xf9, 0xe1, - 0x26, 0xe8, 0xff, 0xa8, 0xc0, 0xf9, 0xdc, 0x72, 0xe9, 0xb1, 0xce, 0xb2, 0x71, 0xac, 0x73, 0x2d, - 0x73, 0xac, 0x63, 0x1f, 0x5e, 0xfa, 0xd1, 0x1c, 0xf4, 0xe4, 0x1f, 0xbf, 0x54, 0x4f, 0xf2, 0xf8, - 0x65, 0xa0, 0xac, 0xad, 0x30, 0x58, 0x60, 0x2b, 0xfc, 0x8e, 0x05, 0x8f, 0xe7, 0x8e, 0xd9, 0x47, - 0xef, 0x4a, 0x45, 0x6e, 0x33, 0x7b, 0x58, 0xd0, 0x7f, 0xbd, 0xda, 0xa3, 0x5b, 0xcc, 0x96, 0xbe, - 0x44, 0xf5, 0x0e, 0x43, 0xc6, 0xc2, 0x0c, 0x1a, 0xe3, 0x3a, 0x87, 0xc3, 0xb0, 0xc2, 0xa2, 0x58, - 0xbb, 0x92, 0xc0, 0x1b, 0xb9, 0x74, 0xc4, 0x29, 0x35, 0x67, 0x3a, 0xcf, 0xf4, 0xfb, 0xbc, 0x99, - 0x7b, 0x0a, 0xe8, 0x9e, 0xb6, 0x3d, 0xaa, 0x1e, 0x65, 0x7b, 0x34, 0x96, 0xbf, 0x35, 0x42, 0xf3, - 0x30, 0xb9, 0xed, 0x05, 0xec, 0xcd, 0x34, 0xd3, 0x0e, 0x51, 0xb7, 0xe0, 0x56, 0x4d, 0x34, 0xce, - 0xd2, 0xcf, 0xbc, 0x0a, 0xe3, 0x47, 0xf7, 0x98, 0x7c, 0x50, 0x85, 0x9f, 0x3a, 0x44, 0x2d, 0xf0, - 0xf5, 0xc0, 0xf8, 0x2e, 0xda, 0x7a, 0xd0, 0xf5, 0x6d, 0x1a, 0x70, 0x66, 0xa3, 0xe3, 0xfb, 0xbb, - 0x2c, 0x2c, 0x82, 0xb8, 0x92, 0x42, 0xd8, 0x78, 0xea, 0x35, 0xd3, 0xe5, 0x1c, 0x1a, 0x9c, 0x5b, - 0x12, 0x7d, 0x1e, 0x50, 0xb8, 0xce, 0x12, 0x31, 0xba, 0xe9, 0x8d, 0x65, 0xf6, 0x09, 0xaa, 0xe9, - 0x5c, 0xbd, 0xd3, 0x45, 0x81, 0x73, 0x4a, 0x51, 0x8b, 0x8f, 0x3d, 0x84, 0xaa, 0x9a, 0x95, 0xb1, - 0xf8, 0xb0, 0x8e, 0xc4, 0x26, 0x2d, 0xba, 0x0e, 0xa7, 0x9c, 0x1d, 0xc7, 0xe3, 0xd9, 0x66, 0x24, - 0x03, 0x6e, 0xf2, 0x29, 0x97, 0xc4, 0x7c, 0x96, 0x00, 0x77, 0x97, 0x41, 0x6d, 0xc3, 0xc9, 0xc4, - 0x13, 0x2f, 0xbf, 0x76, 0x04, 0x09, 0x2e, 0xed, 0x76, 0xb2, 0xff, 0xc0, 0xa2, 0x8b, 0x5e, 0xce, - 0x1b, 0x63, 0xc6, 0xd3, 0xdc, 0xda, 0x2d, 0x8d, 0xee, 0xa7, 0xb9, 0x99, 0xff, 0xd5, 0xa4, 0xe5, - 0xa2, 0x11, 0xa7, 0x61, 0x95, 0x86, 0x7d, 0x29, 0x6e, 0x27, 0x29, 0x0a, 0x74, 0x0f, 0x86, 0x5d, - 0x6f, 0xc7, 0x8b, 0xc3, 0xa8, 0xc4, 0x4b, 0xb8, 0x5d, 0xa1, 0x7a, 0xa9, 0xba, 0xac, 0x73, 0x26, - 0x58, 0x72, 0xb3, 0xff, 0x66, 0x05, 0xc6, 0x65, 0x7d, 0x6f, 0x74, 0x42, 0xa6, 0xc3, 0x8e, 0x6b, - 0x29, 0x7f, 0xc3, 0x58, 0xca, 0xaf, 0x94, 0xbb, 0xa2, 0xc5, 0x1a, 0xd5, 0x73, 0x09, 0xff, 0x42, - 0x66, 0x09, 0xbf, 0xda, 0x0f, 0xd3, 0x42, 0xef, 0xd1, 0x29, 0x83, 0xfe, 0x23, 0x94, 0xf8, 0x37, - 0xaf, 0x3b, 0x3d, 0x16, 0x8e, 0xef, 0x54, 0x32, 0xdd, 0x60, 0x0b, 0xc6, 0xd7, 0x60, 0x60, 0xcb, - 0x89, 0x5c, 0x71, 0x54, 0xf6, 0xe9, 0x3e, 0x3f, 0xc5, 0xdc, 0x0d, 0x27, 0x72, 0xb9, 0xda, 0xbf, - 0xac, 0x5e, 0x28, 0x71, 0x22, 0xb7, 0x30, 0xc8, 0x98, 0x55, 0x8a, 0x5e, 0x81, 0xa1, 0xb8, 0x15, - 0xb6, 0x55, 0x54, 0xd7, 0x05, 0xfe, 0x7a, 0x09, 0x85, 0x1c, 0xec, 0xcd, 0x22, 0xb3, 0x3a, 0x0a, - 0xc6, 0x82, 0x7e, 0x86, 0x40, 0x4d, 0x55, 0x7d, 0x8c, 0xe1, 0xac, 0x1f, 0x54, 0xe1, 0x74, 0x8e, - 0xa8, 0xa0, 0x9f, 0x31, 0x46, 0xed, 0xd5, 0xbe, 0x65, 0xed, 0x43, 0x8e, 0xdb, 0xcf, 0xb0, 0x0d, - 0x91, 0x2b, 0x64, 0xe3, 0x08, 0xd5, 0xdf, 0x8d, 0x49, 0xb6, 0x7a, 0x0a, 0x2a, 0xae, 0x9e, 0x56, - 0x7b, 0x42, 0x83, 0x4f, 0xab, 0x51, 0xed, 0x3c, 0xc6, 0x6f, 0xfc, 0xfe, 0x00, 0x9c, 0xc9, 0xbb, - 0x06, 0x8a, 0x7e, 0xde, 0xca, 0xa4, 0x0e, 0x7f, 0xbd, 0xff, 0xbb, 0xa4, 0x3c, 0x9f, 0xb8, 0x48, - 0x0f, 0x31, 0x67, 0x26, 0x13, 0x2f, 0x1c, 0x6d, 0x51, 0x3b, 0xbb, 0x18, 0x10, 0xf1, 0x2c, 0xf0, - 0x52, 0x1f, 0x7c, 0xee, 0x08, 0x4d, 0x11, 0x89, 0xe4, 0xe3, 0xcc, 0xc5, 0x00, 0x09, 0x2e, 0xbe, - 0x18, 0x20, 0xdb, 0x30, 0xb3, 0x09, 0xa3, 0x5a, 0xbf, 0x8e, 0x51, 0x04, 0x3c, 0xba, 0x26, 0x69, - 0xad, 0x3e, 0x46, 0x31, 0xf8, 0xdb, 0x16, 0x64, 0xc2, 0x35, 0x94, 0xd7, 0xc5, 0xea, 0xe9, 0x75, - 0xb9, 0x00, 0x03, 0x51, 0xe8, 0x93, 0x6c, 0x4e, 0x6b, 0x1c, 0xfa, 0x04, 0x33, 0x8c, 0x7a, 0x07, - 0xb1, 0xda, 0xeb, 0x1d, 0x44, 0xba, 0x1d, 0xf7, 0xc9, 0x0e, 0x91, 0x3e, 0x10, 0xa5, 0xbc, 0x6f, - 0x51, 0x20, 0xe6, 0x38, 0xfb, 0x47, 0x55, 0x18, 0xe2, 0x8e, 0x86, 0x63, 0x5c, 0x96, 0x1b, 0x62, - 0xcf, 0x5f, 0xea, 0x42, 0x26, 0x6f, 0xcd, 0x5c, 0xdd, 0x49, 0x1c, 0x2e, 0x50, 0xaa, 0x6f, 0xa9, - 0x9f, 0x00, 0xcd, 0x19, 0xbd, 0x9f, 0xc9, 0x6c, 0x69, 0x81, 0xf3, 0xd0, 0xc6, 0x62, 0x0b, 0x20, - 0x66, 0x4f, 0x62, 0x51, 0x1e, 0x22, 0x29, 0xde, 0x8b, 0xa5, 0xda, 0xd1, 0x54, 0xc5, 0x78, 0x6b, - 0xd2, 0x6c, 0x5c, 0x0a, 0x81, 0x35, 0xde, 0x33, 0x2f, 0x43, 0x4d, 0x11, 0x17, 0x59, 0xfa, 0x63, - 0xba, 0x48, 0xfe, 0x39, 0x98, 0xcc, 0xd4, 0xd5, 0xd7, 0x46, 0xe1, 0xfb, 0x16, 0x9c, 0xea, 0x7a, - 0xc2, 0x15, 0xbd, 0x6f, 0xc1, 0x19, 0x3f, 0xc7, 0xc3, 0x24, 0x3e, 0xf0, 0x51, 0x7c, 0x53, 0x6a, - 0x97, 0x90, 0x87, 0xc5, 0xb9, 0xb5, 0xc9, 0x34, 0x9f, 0x95, 0xfc, 0x34, 0x9f, 0xec, 0x1d, 0x20, - 0xde, 0xf6, 0x93, 0xb0, 0x80, 0x56, 0x4c, 0x0b, 0xe8, 0x13, 0x65, 0xc4, 0xa0, 0x87, 0xe9, 0xf3, - 0xef, 0x2c, 0x40, 0x9c, 0x20, 0xfb, 0x34, 0x1e, 0xf7, 0xd8, 0x69, 0x36, 0x7b, 0x2a, 0x37, 0x0a, - 0x83, 0x35, 0xaa, 0x3e, 0xd3, 0x9e, 0xab, 0x27, 0xa5, 0xca, 0xbd, 0x5b, 0x5f, 0x2d, 0xf1, 0x6e, - 0xfd, 0x6f, 0x56, 0x21, 0x1b, 0xda, 0x80, 0xbe, 0x0c, 0x63, 0x2d, 0xa7, 0xed, 0xac, 0x7b, 0xbe, - 0x97, 0x78, 0x24, 0x2e, 0x77, 0x6c, 0xb4, 0xa8, 0x95, 0x10, 0x3e, 0x5f, 0x0d, 0x82, 0x0d, 0x8e, - 0x68, 0x0e, 0xa0, 0x1d, 0x79, 0x3b, 0x9e, 0x4f, 0x36, 0x99, 0xdd, 0xa1, 0x92, 0xa4, 0x34, 0x14, - 0x14, 0x6b, 0x14, 0x39, 0x31, 0x74, 0xd5, 0x93, 0x88, 0xa1, 0x1b, 0xe8, 0x33, 0x86, 0x6e, 0xb0, - 0x54, 0x0c, 0x1d, 0x86, 0x73, 0xd2, 0x55, 0x4b, 0xff, 0x2f, 0x7b, 0x3e, 0xe1, 0x79, 0xfd, 0x44, - 0xe4, 0xe3, 0xcc, 0xfe, 0xde, 0xec, 0x39, 0x9c, 0x4b, 0x81, 0x7b, 0x94, 0xb4, 0x3b, 0x70, 0xba, - 0x49, 0x22, 0x8f, 0xa5, 0x5d, 0x72, 0xd3, 0x19, 0xf8, 0x0e, 0xd4, 0xa2, 0xcc, 0xe4, 0xef, 0xf3, - 0x4e, 0x9a, 0x96, 0xbc, 0x42, 0x4e, 0xf6, 0x94, 0xa5, 0xfd, 0x97, 0x2a, 0x30, 0x2c, 0x42, 0x88, - 0x8e, 0x71, 0x21, 0xb9, 0x69, 0xec, 0xef, 0x9e, 0x29, 0x9a, 0xb9, 0xac, 0x39, 0x3d, 0x77, 0x76, - 0xcd, 0xcc, 0xce, 0xee, 0xb9, 0x72, 0xec, 0x0e, 0xdf, 0xd3, 0xfd, 0xb0, 0x02, 0x13, 0x66, 0x28, - 0xd5, 0x31, 0x0e, 0xc7, 0x5b, 0x30, 0x1c, 0x8b, 0xf8, 0xa2, 0x4a, 0x99, 0x58, 0x8d, 0xec, 0x27, - 0x4d, 0xdf, 0xc0, 0x17, 0x11, 0x45, 0x92, 0x5d, 0x6e, 0x08, 0x53, 0xf5, 0x24, 0x42, 0x98, 0xec, - 0x1f, 0x31, 0x95, 0xaa, 0x0f, 0xe0, 0x49, 0xac, 0x09, 0x6f, 0x98, 0xda, 0xf7, 0x72, 0x29, 0x51, - 0x10, 0xed, 0xeb, 0xb1, 0x36, 0x7c, 0xcf, 0x82, 0x51, 0x41, 0x78, 0x12, 0x3d, 0xf8, 0xbc, 0xd9, - 0x83, 0xa7, 0x4b, 0xf5, 0xa0, 0x47, 0xd3, 0xff, 0x6e, 0x45, 0x35, 0xbd, 0x21, 0x9e, 0x0c, 0x2d, - 0x4c, 0xf4, 0x38, 0xd2, 0x8e, 0xc2, 0x24, 0x6c, 0x85, 0xbe, 0x58, 0xe5, 0x9f, 0x48, 0xa3, 0xce, - 0x39, 0xfc, 0x40, 0xfb, 0x8d, 0x15, 0x35, 0x8b, 0xa6, 0x0e, 0xa3, 0x44, 0x2c, 0x51, 0x79, 0x0f, - 0x96, 0xae, 0xcb, 0x07, 0xa1, 0x29, 0x4c, 0x5c, 0xd9, 0xe8, 0xf7, 0x21, 0xd4, 0x34, 0x86, 0x5c, - 0x71, 0xc2, 0x1a, 0x57, 0x19, 0xde, 0xc8, 0x6a, 0x18, 0x34, 0xdd, 0xa8, 0xb7, 0x05, 0x1c, 0x2b, - 0x0a, 0xfb, 0x65, 0xa6, 0x63, 0xd9, 0xf0, 0xf4, 0x17, 0x18, 0xfe, 0x0b, 0x43, 0x6a, 0x60, 0x99, - 0x93, 0xe4, 0x36, 0x0c, 0xd2, 0x2e, 0xca, 0x7d, 0x60, 0x39, 0x85, 0x46, 0x9b, 0xa0, 0x07, 0x88, - 0x45, 0x49, 0x8c, 0x39, 0x1b, 0x44, 0xba, 0x7c, 0xef, 0x2f, 0x97, 0xd6, 0x91, 0x7d, 0x78, 0xdb, - 0x59, 0xe2, 0x18, 0x96, 0x2c, 0x63, 0xa5, 0x91, 0x4d, 0xce, 0xb9, 0x28, 0x11, 0x38, 0xa5, 0x41, - 0x57, 0x84, 0xb9, 0x6e, 0xbe, 0x27, 0x2b, 0xcd, 0x75, 0x39, 0x24, 0x9a, 0xbd, 0x7e, 0x15, 0x46, - 0x55, 0x7a, 0xf2, 0x06, 0xcf, 0x32, 0x5d, 0xe3, 0xf6, 0xcb, 0x52, 0x0a, 0xc6, 0x3a, 0x0d, 0x5a, - 0x81, 0xd3, 0xae, 0x8a, 0x66, 0x6d, 0x74, 0xd6, 0x7d, 0xaf, 0x45, 0x8b, 0xf2, 0x9b, 0x24, 0x8f, - 0xed, 0xef, 0xcd, 0x9e, 0xae, 0x77, 0xa3, 0x71, 0x5e, 0x19, 0xb4, 0x06, 0x93, 0x31, 0x4f, 0xc3, - 0x2e, 0xef, 0x9c, 0x89, 0xec, 0x75, 0xcf, 0x4a, 0xa7, 0x7f, 0xd3, 0x44, 0x1f, 0x30, 0x10, 0x57, - 0x0a, 0x02, 0x84, 0xb3, 0x2c, 0xd0, 0xeb, 0x30, 0xe1, 0xeb, 0xcf, 0x29, 0x35, 0x44, 0x50, 0xaf, - 0x0a, 0x88, 0x30, 0x1e, 0x5b, 0x6a, 0xe0, 0x0c, 0x35, 0x7a, 0x0b, 0xa6, 0x75, 0x88, 0xb8, 0xd4, - 0xee, 0x04, 0x9b, 0x24, 0x16, 0xf9, 0x9f, 0x9f, 0xd8, 0xdf, 0x9b, 0x9d, 0xbe, 0xd5, 0x83, 0x06, - 0xf7, 0x2c, 0x8d, 0x5e, 0x81, 0x31, 0x39, 0x92, 0x5a, 0x80, 0x6f, 0x1a, 0x8a, 0xa3, 0xe1, 0xb0, - 0x41, 0xf9, 0xe1, 0xce, 0x36, 0xbe, 0x46, 0x0b, 0x6b, 0x8b, 0x2a, 0xfa, 0x0a, 0x8c, 0xe9, 0x6d, - 0x14, 0x6a, 0xf2, 0x53, 0xe5, 0x9f, 0xa8, 0x12, 0x8b, 0xb3, 0x6a, 0xb9, 0x8e, 0xc3, 0x06, 0x6f, - 0xbb, 0x05, 0x93, 0x99, 0x27, 0x72, 0xd5, 0x5b, 0xcb, 0xd6, 0xa3, 0x7a, 0x6b, 0xd9, 0xfe, 0xba, - 0x05, 0x83, 0x6b, 0x8e, 0x57, 0xfc, 0xd0, 0x41, 0x99, 0xc7, 0x8a, 0xd1, 0x4b, 0x30, 0x44, 0x36, - 0x36, 0x48, 0x4b, 0xbe, 0xdd, 0xfc, 0xa4, 0x7a, 0x79, 0x9f, 0x41, 0xe9, 0x4c, 0x62, 0x95, 0xf1, - 0xbf, 0x58, 0x10, 0xdb, 0xff, 0xc1, 0x02, 0x58, 0x0b, 0x7d, 0x79, 0xca, 0x52, 0xd0, 0x92, 0x85, - 0xae, 0x27, 0x17, 0x2e, 0xe6, 0x3c, 0xb9, 0x80, 0x52, 0x86, 0x39, 0x0f, 0x2e, 0xa8, 0xde, 0x54, - 0x4b, 0xf5, 0x66, 0xa0, 0x9f, 0xde, 0x7c, 0xd3, 0x02, 0x11, 0xf2, 0x52, 0x62, 0x59, 0x72, 0x65, - 0x9a, 0x74, 0x23, 0xbb, 0xc4, 0xb3, 0x65, 0xee, 0x6d, 0x88, 0x9c, 0x12, 0x4a, 0x94, 0x8c, 0x4c, - 0x12, 0x06, 0x57, 0xba, 0xf5, 0x1e, 0xe5, 0xe8, 0x55, 0x66, 0xf0, 0x15, 0xb7, 0xab, 0xaf, 0x44, - 0x5a, 0x2c, 0x8b, 0x38, 0x65, 0xac, 0xf2, 0x29, 0xe9, 0x59, 0xc4, 0x25, 0x02, 0xa7, 0x34, 0xe8, - 0x19, 0x18, 0x8e, 0x3b, 0xeb, 0x8c, 0x3c, 0x13, 0xff, 0xd2, 0xe4, 0x60, 0x2c, 0xf1, 0xf6, 0xcf, - 0x21, 0x30, 0xba, 0x66, 0xe4, 0x6e, 0xb2, 0x1e, 0x79, 0xee, 0xa6, 0xb7, 0x61, 0x84, 0x6c, 0xb7, - 0x93, 0xdd, 0xba, 0x17, 0x95, 0xcb, 0xa3, 0xb7, 0x24, 0xa8, 0xbb, 0xb9, 0x4b, 0x0c, 0x56, 0x1c, - 0x7b, 0x64, 0xe2, 0xaa, 0x7e, 0x24, 0x32, 0x71, 0x0d, 0xfc, 0x89, 0x64, 0xe2, 0x7a, 0x0b, 0x86, - 0x37, 0xf9, 0xdb, 0xfd, 0xe2, 0x9e, 0x5e, 0xc1, 0xf1, 0x55, 0xce, 0x43, 0xff, 0xfc, 0x42, 0x96, - 0x40, 0x60, 0xc9, 0x0e, 0xad, 0xc1, 0x10, 0xdf, 0x2c, 0x88, 0xe4, 0x56, 0x9f, 0x2a, 0xe3, 0x46, - 0xe9, 0xce, 0xf3, 0x24, 0x82, 0x9c, 0x04, 0x2f, 0x99, 0x79, 0x6b, 0xf8, 0xc3, 0x67, 0xde, 0x52, - 0xf9, 0xb2, 0x46, 0x1e, 0x55, 0xbe, 0x2c, 0x23, 0xef, 0x58, 0xed, 0x38, 0xf2, 0x8e, 0x7d, 0xd3, - 0x82, 0xb3, 0xed, 0xbc, 0xb4, 0x7d, 0x22, 0xf3, 0xd5, 0x67, 0x8f, 0x90, 0xc6, 0xd0, 0xa8, 0x9a, - 0x5d, 0x9f, 0xca, 0x25, 0xc3, 0xf9, 0x15, 0xcb, 0x04, 0x66, 0xa3, 0x1f, 0x3e, 0x81, 0xd9, 0x71, - 0xa7, 0xc8, 0x4a, 0xd3, 0x99, 0x8d, 0x1f, 0x4b, 0x3a, 0xb3, 0x89, 0x47, 0x98, 0xce, 0x4c, 0x4b, - 0x44, 0x36, 0xf9, 0x68, 0x13, 0x91, 0x6d, 0xc1, 0xa8, 0x1b, 0x3e, 0x08, 0x1e, 0x38, 0x91, 0x3b, - 0xdf, 0x58, 0x11, 0x79, 0xaf, 0x0a, 0x72, 0x2c, 0xd4, 0xd3, 0x02, 0x46, 0x0d, 0xdc, 0x5f, 0x98, - 0x22, 0xb1, 0xce, 0x5a, 0xa4, 0x64, 0x3b, 0xf5, 0x21, 0x53, 0xb2, 0x19, 0x89, 0xcd, 0xd0, 0x71, - 0x24, 0x36, 0xfb, 0x32, 0xbb, 0x69, 0xbd, 0xe1, 0x6d, 0xae, 0x3a, 0xed, 0xe9, 0xd3, 0x65, 0x6a, - 0x58, 0x94, 0xe4, 0xdd, 0x35, 0x28, 0x14, 0x4e, 0x99, 0x76, 0xa7, 0x4e, 0x3b, 0x73, 0xd2, 0xa9, - 0xd3, 0xce, 0x1e, 0x63, 0xea, 0xb4, 0x73, 0x27, 0x9a, 0x3a, 0xed, 0xb1, 0x3f, 0x91, 0xd4, 0x69, - 0x7f, 0x01, 0xce, 0x1f, 0xfe, 0x39, 0xd2, 0xe4, 0xbc, 0x8d, 0x74, 0x87, 0x9f, 0x49, 0xce, 0xcb, - 0x4c, 0x1d, 0x8d, 0xaa, 0x74, 0x06, 0xa7, 0x7f, 0x6e, 0xc1, 0x63, 0x3d, 0xf2, 0x9c, 0x94, 0xbe, - 0x7c, 0xd0, 0x86, 0xc9, 0xb6, 0x59, 0xb4, 0xf4, 0x35, 0x21, 0x23, 0xaf, 0x8a, 0x0a, 0x6b, 0xcb, - 0x20, 0x70, 0x96, 0xfd, 0xc2, 0x27, 0x7e, 0xfc, 0xc1, 0xf9, 0x8f, 0xfd, 0xe4, 0x83, 0xf3, 0x1f, - 0xfb, 0xbd, 0x0f, 0xce, 0x7f, 0xec, 0x67, 0xf7, 0xcf, 0x5b, 0x3f, 0xde, 0x3f, 0x6f, 0xfd, 0x64, - 0xff, 0xbc, 0xf5, 0x87, 0xfb, 0xe7, 0xad, 0x6f, 0xfe, 0xd1, 0xf9, 0x8f, 0x7d, 0xb1, 0xb2, 0x73, - 0xf5, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x70, 0xfd, 0x33, 0x79, 0x2a, 0xb5, 0x00, 0x00, + // 10068 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x7d, 0x6d, 0x8c, 0x24, 0xc7, + 0x75, 0x98, 0x7a, 0x66, 0xbf, 0xe6, 0xed, 0xe7, 0xd5, 0x7d, 0x70, 0xb9, 0x22, 0x6f, 0x4f, 0x4d, + 0xf1, 0x74, 0x24, 0x8f, 0x7b, 0xba, 0x23, 0x29, 0x52, 0x22, 0x43, 0x69, 0x77, 0x67, 0xf7, 0x6e, + 0x75, 0xb7, 0x77, 0xc3, 0x9a, 0x3d, 0x1e, 0x25, 0x31, 0xa4, 0x7a, 0xa7, 0x6b, 0x77, 0x5b, 0xd7, + 0xdb, 0x3d, 0xec, 0xee, 0xd9, 0xbb, 0x95, 0x62, 0xc0, 0x91, 0x19, 0x1b, 0x81, 0x05, 0x47, 0x41, + 0x22, 0x24, 0x40, 0x12, 0x44, 0x09, 0x90, 0xc0, 0x89, 0x11, 0xc7, 0x72, 0x14, 0x5b, 0x4a, 0x04, + 0x21, 0x40, 0x1c, 0x41, 0xf9, 0x70, 0x20, 0x03, 0x46, 0x6c, 0xd8, 0xc0, 0xc6, 0x5c, 0x23, 0xc8, + 0x8f, 0xfc, 0x48, 0x80, 0xfc, 0xca, 0xc1, 0x48, 0x82, 0xfa, 0xec, 0xaa, 0x9e, 0x9e, 0xed, 0x9e, + 0xe5, 0xed, 0xfa, 0x64, 0xf8, 0xdf, 0xcc, 0x7b, 0xaf, 0x5e, 0x7d, 0xf4, 0xab, 0x57, 0xaf, 0x5e, + 0xbd, 0x7a, 0x05, 0x17, 0xef, 0xbe, 0x12, 0xcf, 0x79, 0xe1, 0xa5, 0xbb, 0x9d, 0x75, 0x12, 0x05, + 0x24, 0x21, 0xf1, 0xa5, 0xf6, 0xdd, 0xcd, 0x4b, 0x4e, 0xdb, 0xbb, 0xb4, 0x73, 0xf9, 0xd2, 0x26, + 0x09, 0x48, 0xe4, 0x24, 0xc4, 0x9d, 0x6b, 0x47, 0x61, 0x12, 0xa2, 0x27, 0x38, 0xf5, 0x5c, 0x4a, + 0x3d, 0xd7, 0xbe, 0xbb, 0x39, 0xe7, 0xb4, 0xbd, 0xb9, 0x9d, 0xcb, 0x33, 0xcf, 0x6f, 0x7a, 0xc9, + 0x56, 0x67, 0x7d, 0xae, 0x15, 0x6e, 0x5f, 0xda, 0x0c, 0x37, 0xc3, 0x4b, 0xac, 0xd0, 0x7a, 0x67, + 0x83, 0xfd, 0x63, 0x7f, 0xd8, 0x2f, 0xce, 0x6c, 0xe6, 0x4a, 0xef, 0xaa, 0x23, 0x12, 0x87, 0x9d, + 0xa8, 0x45, 0xb2, 0x0d, 0x98, 0x79, 0xa9, 0x77, 0x99, 0x4e, 0xb0, 0x43, 0xa2, 0xd8, 0x0b, 0x03, + 0xe2, 0x76, 0x15, 0x7b, 0x3e, 0xbf, 0x58, 0xd4, 0x09, 0x12, 0x6f, 0xbb, 0xbb, 0x96, 0x17, 0x0f, + 0x26, 0x8f, 0x5b, 0x5b, 0x64, 0xdb, 0xe9, 0x2a, 0x75, 0x39, 0xbf, 0x54, 0x27, 0xf1, 0xfc, 0x4b, + 0x5e, 0x90, 0xc4, 0x49, 0x94, 0x2d, 0x62, 0xff, 0x9e, 0x05, 0xe7, 0xe6, 0xef, 0x34, 0x97, 0x7c, + 0x27, 0x4e, 0xbc, 0xd6, 0x82, 0x1f, 0xb6, 0xee, 0x36, 0x93, 0x30, 0x22, 0x6f, 0x86, 0x7e, 0x67, + 0x9b, 0x34, 0xd9, 0x18, 0xa0, 0x8b, 0x30, 0xb2, 0xc3, 0xfe, 0xaf, 0xd4, 0xa7, 0xad, 0x73, 0xd6, + 0x85, 0xda, 0xc2, 0xd4, 0x8f, 0xf7, 0x66, 0x3f, 0xb2, 0xbf, 0x37, 0x3b, 0xf2, 0xa6, 0x80, 0x63, + 0x45, 0x81, 0xce, 0xc3, 0xd0, 0x46, 0xbc, 0xb6, 0xdb, 0x26, 0xd3, 0x15, 0x46, 0x3b, 0x21, 0x68, + 0x87, 0x96, 0x9b, 0x14, 0x8a, 0x05, 0x16, 0x5d, 0x82, 0x5a, 0xdb, 0x89, 0x12, 0x2f, 0xf1, 0xc2, + 0x60, 0xba, 0x7a, 0xce, 0xba, 0x30, 0xb8, 0x70, 0x42, 0x90, 0xd6, 0x1a, 0x12, 0x81, 0x53, 0x1a, + 0xda, 0x8c, 0x88, 0x38, 0xee, 0xad, 0xc0, 0xdf, 0x9d, 0x1e, 0x38, 0x67, 0x5d, 0x18, 0x49, 0x9b, + 0x81, 0x05, 0x1c, 0x2b, 0x0a, 0xfb, 0x7b, 0x15, 0x18, 0x99, 0xdf, 0xd8, 0xf0, 0x02, 0x2f, 0xd9, + 0x45, 0x5f, 0x86, 0xb1, 0x20, 0x74, 0x89, 0xfc, 0xcf, 0x7a, 0x31, 0x7a, 0xe5, 0xd9, 0xb9, 0x83, + 0xa4, 0x69, 0xee, 0xa6, 0x56, 0x62, 0x61, 0x6a, 0x7f, 0x6f, 0x76, 0x4c, 0x87, 0x60, 0x83, 0x23, + 0x7a, 0x1b, 0x46, 0xdb, 0xa1, 0xab, 0x2a, 0xa8, 0xb0, 0x0a, 0x9e, 0x39, 0xb8, 0x82, 0x46, 0x5a, + 0x60, 0x61, 0x72, 0x7f, 0x6f, 0x76, 0x54, 0x03, 0x60, 0x9d, 0x1d, 0xf2, 0x61, 0x92, 0xfe, 0x0d, + 0x12, 0x4f, 0xd5, 0x50, 0x65, 0x35, 0x3c, 0x5f, 0x5c, 0x83, 0x56, 0x68, 0xe1, 0xe4, 0xfe, 0xde, + 0xec, 0x64, 0x06, 0x88, 0xb3, 0xac, 0xed, 0xaf, 0xc2, 0xc4, 0x7c, 0x92, 0x38, 0xad, 0x2d, 0xe2, + 0xf2, 0xef, 0x8b, 0x5e, 0x84, 0x81, 0xc0, 0xd9, 0x26, 0xe2, 0xeb, 0x9f, 0x13, 0xc3, 0x3e, 0x70, + 0xd3, 0xd9, 0x26, 0x0f, 0xf6, 0x66, 0xa7, 0x6e, 0x07, 0xde, 0x7b, 0x1d, 0x21, 0x33, 0x14, 0x86, + 0x19, 0x35, 0xba, 0x02, 0xe0, 0x92, 0x1d, 0xaf, 0x45, 0x1a, 0x4e, 0xb2, 0x25, 0xa4, 0x01, 0x89, + 0xb2, 0x50, 0x57, 0x18, 0xac, 0x51, 0xd9, 0x5f, 0xb7, 0xa0, 0x36, 0xbf, 0x13, 0x7a, 0x6e, 0x23, + 0x74, 0x63, 0xd4, 0x81, 0xc9, 0x76, 0x44, 0x36, 0x48, 0xa4, 0x40, 0xd3, 0xd6, 0xb9, 0xea, 0x85, + 0xd1, 0x2b, 0x57, 0x0a, 0xfa, 0x6d, 0x16, 0x5a, 0x0a, 0x92, 0x68, 0x77, 0xe1, 0x31, 0x51, 0xf5, + 0x64, 0x06, 0x8b, 0xb3, 0x75, 0xd8, 0x7f, 0xbd, 0x02, 0xa7, 0xe7, 0xbf, 0xda, 0x89, 0x48, 0xdd, + 0x8b, 0xef, 0x66, 0xa7, 0x82, 0xeb, 0xc5, 0x77, 0x6f, 0xa6, 0x83, 0xa1, 0x64, 0xb0, 0x2e, 0xe0, + 0x58, 0x51, 0xa0, 0xe7, 0x61, 0x98, 0xfe, 0xbe, 0x8d, 0x57, 0x44, 0xef, 0x4f, 0x0a, 0xe2, 0xd1, + 0xba, 0x93, 0x38, 0x75, 0x8e, 0xc2, 0x92, 0x06, 0xad, 0xc2, 0x68, 0xcb, 0x69, 0x6d, 0x79, 0xc1, + 0xe6, 0x6a, 0xe8, 0x12, 0xf6, 0x85, 0x6b, 0x0b, 0xcf, 0x51, 0xf2, 0xc5, 0x14, 0xfc, 0x60, 0x6f, + 0x76, 0x9a, 0xb7, 0x4d, 0xb0, 0xd0, 0x70, 0x58, 0x2f, 0x8f, 0x6c, 0x35, 0x11, 0x07, 0x18, 0x27, + 0xc8, 0x99, 0x84, 0x17, 0xb4, 0x39, 0x35, 0xc8, 0xe6, 0xd4, 0x58, 0x8f, 0xf9, 0xf4, 0x4f, 0x2d, + 0x31, 0x26, 0xcb, 0x9e, 0x6f, 0xaa, 0x87, 0x2b, 0x00, 0x31, 0x69, 0x45, 0x24, 0xd1, 0x46, 0x45, + 0x7d, 0xe6, 0xa6, 0xc2, 0x60, 0x8d, 0x8a, 0x4e, 0xfe, 0x78, 0xcb, 0x89, 0x98, 0xb4, 0x88, 0xb1, + 0x51, 0x93, 0xbf, 0x29, 0x11, 0x38, 0xa5, 0x31, 0x26, 0x7f, 0xb5, 0x70, 0xf2, 0xff, 0x2b, 0x0b, + 0x86, 0x17, 0xbc, 0xc0, 0xf5, 0x82, 0x4d, 0xf4, 0x16, 0x8c, 0x6c, 0x93, 0xc4, 0x71, 0x9d, 0xc4, + 0x11, 0xf3, 0xfe, 0xc2, 0xc1, 0xc2, 0x73, 0x6b, 0xfd, 0x2b, 0xa4, 0x95, 0xac, 0x92, 0xc4, 0x49, + 0xbb, 0x91, 0xc2, 0xb0, 0xe2, 0x86, 0x6e, 0xc3, 0x50, 0xe2, 0x44, 0x9b, 0x24, 0x11, 0xd3, 0xfd, + 0xf9, 0x32, 0x7c, 0x31, 0x15, 0x35, 0x12, 0xb4, 0x48, 0xaa, 0x18, 0xd7, 0x18, 0x13, 0x2c, 0x98, + 0xd9, 0x2d, 0x18, 0x5b, 0x74, 0xda, 0xce, 0xba, 0xe7, 0x7b, 0x89, 0x47, 0x62, 0xf4, 0x09, 0xa8, + 0x3a, 0xae, 0xcb, 0x04, 0xbf, 0xb6, 0x70, 0x7a, 0x7f, 0x6f, 0xb6, 0x3a, 0xef, 0xba, 0x0f, 0xf6, + 0x66, 0x41, 0x51, 0xed, 0x62, 0x4a, 0x81, 0x9e, 0x85, 0x01, 0x37, 0x0a, 0xdb, 0xd3, 0x15, 0x46, + 0x79, 0x86, 0xce, 0xd0, 0x7a, 0x14, 0xb6, 0x33, 0xa4, 0x8c, 0xc6, 0xfe, 0x77, 0x15, 0x40, 0x8b, + 0xa4, 0xbd, 0xb5, 0xdc, 0x34, 0xbe, 0xe5, 0x05, 0x18, 0xd9, 0x0e, 0x03, 0x2f, 0x09, 0xa3, 0x58, + 0x54, 0xc8, 0xe4, 0x61, 0x55, 0xc0, 0xb0, 0xc2, 0xa2, 0x73, 0x30, 0xd0, 0x4e, 0xa7, 0xf5, 0x98, + 0x54, 0x09, 0x6c, 0x42, 0x33, 0x0c, 0xa5, 0xe8, 0xc4, 0x24, 0x12, 0x72, 0xac, 0x28, 0x6e, 0xc7, + 0x24, 0xc2, 0x0c, 0x93, 0x4a, 0x0e, 0x95, 0x29, 0x21, 0xa5, 0x19, 0xc9, 0xa1, 0x18, 0xac, 0x51, + 0xa1, 0x77, 0xa1, 0xc6, 0xff, 0x61, 0xb2, 0xc1, 0x44, 0xb6, 0x50, 0x19, 0xdc, 0x08, 0x5b, 0x8e, + 0x9f, 0x1d, 0xfc, 0x71, 0x26, 0x69, 0x92, 0x11, 0x4e, 0x79, 0x1a, 0x92, 0x36, 0x54, 0x28, 0x69, + 0x7f, 0xdb, 0x02, 0xb4, 0xe8, 0x05, 0x2e, 0x89, 0x8e, 0x61, 0xc9, 0xec, 0x6f, 0x12, 0xfc, 0x21, + 0x6d, 0x5a, 0xb8, 0xdd, 0x0e, 0x03, 0x12, 0x24, 0x8b, 0x61, 0xe0, 0xf2, 0x65, 0xf4, 0x33, 0x30, + 0x90, 0xd0, 0xaa, 0x78, 0xb3, 0xce, 0xcb, 0xcf, 0x42, 0x2b, 0x78, 0xb0, 0x37, 0x7b, 0xa6, 0xbb, + 0x04, 0x6b, 0x02, 0x2b, 0x83, 0x3e, 0x0d, 0x43, 0x71, 0xe2, 0x24, 0x9d, 0x58, 0x34, 0xf4, 0x63, + 0xb2, 0xa1, 0x4d, 0x06, 0x7d, 0xb0, 0x37, 0x3b, 0xa9, 0x8a, 0x71, 0x10, 0x16, 0x05, 0xd0, 0x33, + 0x30, 0xbc, 0x4d, 0xe2, 0xd8, 0xd9, 0x94, 0x8a, 0x6d, 0x52, 0x94, 0x1d, 0x5e, 0xe5, 0x60, 0x2c, + 0xf1, 0xe8, 0x29, 0x18, 0x24, 0x51, 0x14, 0x46, 0x42, 0x22, 0xc6, 0x05, 0xe1, 0xe0, 0x12, 0x05, + 0x62, 0x8e, 0xb3, 0x7f, 0xc7, 0x82, 0x49, 0xd5, 0x56, 0x5e, 0xd7, 0x11, 0x4e, 0x75, 0x17, 0xa0, + 0x25, 0x3b, 0x16, 0xb3, 0x09, 0x36, 0x7a, 0xe5, 0x93, 0x07, 0xf3, 0xee, 0x1e, 0xc8, 0xb4, 0x0e, + 0x05, 0x8a, 0xb1, 0xc6, 0xd7, 0xfe, 0xb1, 0x05, 0x27, 0x33, 0x7d, 0xba, 0xe1, 0xc5, 0x09, 0xfa, + 0x8b, 0x5d, 0xfd, 0xba, 0x74, 0x40, 0xdd, 0x9a, 0x1d, 0x3a, 0x47, 0x8b, 0xb3, 0xee, 0x29, 0x41, + 0x91, 0x10, 0xad, 0x73, 0x18, 0x06, 0xbd, 0x84, 0x6c, 0xcb, 0x7e, 0x3d, 0x5f, 0xb2, 0x5f, 0xbc, + 0x81, 0xe9, 0xe7, 0x59, 0xa1, 0x3c, 0x30, 0x67, 0x65, 0xff, 0x6f, 0x0b, 0x6a, 0x8b, 0x61, 0xb0, + 0xe1, 0x6d, 0xae, 0x3a, 0xed, 0x23, 0xfc, 0x30, 0x4d, 0x18, 0x60, 0x5c, 0x79, 0xd3, 0x2f, 0x17, + 0x35, 0x5d, 0x34, 0x68, 0x8e, 0x2e, 0x9e, 0xdc, 0x2a, 0x50, 0x7a, 0x89, 0x82, 0x30, 0x63, 0x36, + 0xf3, 0x32, 0xd4, 0x14, 0x01, 0x9a, 0x82, 0xea, 0x5d, 0xc2, 0x4d, 0xc6, 0x1a, 0xa6, 0x3f, 0xd1, + 0x29, 0x18, 0xdc, 0x71, 0xfc, 0x8e, 0x98, 0xad, 0x98, 0xff, 0xf9, 0x4c, 0xe5, 0x15, 0xcb, 0xfe, + 0x81, 0x05, 0xa7, 0x54, 0x25, 0xd7, 0xc9, 0x6e, 0x93, 0xf8, 0xa4, 0x95, 0x84, 0x11, 0x7a, 0xdf, + 0x82, 0x53, 0x7e, 0x8e, 0x1e, 0x12, 0xa3, 0x71, 0x18, 0x0d, 0xf6, 0x84, 0x68, 0xf8, 0xa9, 0x3c, + 0x2c, 0xce, 0xad, 0x0d, 0x3d, 0xc9, 0xfb, 0xc2, 0x27, 0xef, 0xa8, 0x60, 0x50, 0xbd, 0x4e, 0x76, + 0x59, 0xc7, 0x68, 0xf3, 0xc7, 0x55, 0xf3, 0x8f, 0x43, 0xf2, 0x6e, 0x98, 0x92, 0xf7, 0x89, 0x92, + 0x9f, 0xaf, 0x87, 0xcc, 0xfd, 0xfd, 0x0a, 0x9c, 0x56, 0x34, 0x86, 0x3a, 0x7e, 0x44, 0x86, 0xbf, + 0xbf, 0xee, 0x5e, 0x27, 0xbb, 0x6b, 0x21, 0x5d, 0x4f, 0xf3, 0xbb, 0x8b, 0x2e, 0xc3, 0xa8, 0x4b, + 0x36, 0x9c, 0x8e, 0x9f, 0x28, 0x73, 0x71, 0x90, 0xef, 0x23, 0xea, 0x29, 0x18, 0xeb, 0x34, 0xf6, + 0x6f, 0xd7, 0xd8, 0xac, 0x4c, 0x1c, 0x2f, 0x20, 0x11, 0x5d, 0xa0, 0x35, 0xab, 0x7e, 0x4c, 0xb7, + 0xea, 0x85, 0x05, 0xff, 0x14, 0x0c, 0x7a, 0xdb, 0x54, 0x65, 0x57, 0x4c, 0x4d, 0xbc, 0x42, 0x81, + 0x98, 0xe3, 0xd0, 0xd3, 0x30, 0xdc, 0x0a, 0xb7, 0xb7, 0x9d, 0xc0, 0x9d, 0xae, 0x32, 0x93, 0x61, + 0x94, 0x6a, 0xf5, 0x45, 0x0e, 0xc2, 0x12, 0x87, 0x9e, 0x80, 0x01, 0x27, 0xda, 0x8c, 0xa7, 0x07, + 0x18, 0xcd, 0x08, 0xad, 0x69, 0x3e, 0xda, 0x8c, 0x31, 0x83, 0x52, 0x53, 0xe0, 0x5e, 0x18, 0xdd, + 0xf5, 0x82, 0xcd, 0xba, 0x17, 0xb1, 0x75, 0x5d, 0x33, 0x05, 0xee, 0x28, 0x0c, 0xd6, 0xa8, 0x50, + 0x03, 0x06, 0xdb, 0x61, 0x94, 0xc4, 0xd3, 0x43, 0x6c, 0x38, 0x9f, 0x2b, 0x94, 0x1e, 0xde, 0xef, + 0x46, 0x18, 0x25, 0x69, 0x57, 0xe8, 0xbf, 0x18, 0x73, 0x46, 0x68, 0x11, 0xaa, 0x24, 0xd8, 0x99, + 0x1e, 0x66, 0xfc, 0x3e, 0x7e, 0x30, 0xbf, 0xa5, 0x60, 0xe7, 0x4d, 0x27, 0x4a, 0x67, 0xd1, 0x52, + 0xb0, 0x83, 0x69, 0x69, 0xd4, 0x82, 0x9a, 0x74, 0x1f, 0xc4, 0xd3, 0x23, 0x65, 0x04, 0x0c, 0x0b, + 0x72, 0x4c, 0xde, 0xeb, 0x78, 0x11, 0xd9, 0x26, 0x41, 0x12, 0xa7, 0xf6, 0xb0, 0xc4, 0xc6, 0x38, + 0xe5, 0x8b, 0x5a, 0x30, 0xc6, 0xcd, 0x87, 0xd5, 0xb0, 0x13, 0x24, 0xf1, 0x74, 0x8d, 0x35, 0xb9, + 0x60, 0xc3, 0xf9, 0x66, 0x5a, 0x62, 0xe1, 0x94, 0x60, 0x3f, 0xa6, 0x01, 0x63, 0x6c, 0x30, 0x45, + 0x6f, 0xc3, 0xb8, 0xef, 0xed, 0x90, 0x80, 0xc4, 0x71, 0x23, 0x0a, 0xd7, 0xc9, 0x34, 0xb0, 0xde, + 0x3c, 0x55, 0xb4, 0xf9, 0x0a, 0xd7, 0xc9, 0xc2, 0x89, 0xfd, 0xbd, 0xd9, 0xf1, 0x1b, 0x7a, 0x69, + 0x6c, 0x32, 0x43, 0xef, 0xc2, 0x04, 0xb5, 0x55, 0xbc, 0x94, 0xfd, 0x68, 0x79, 0xf6, 0x68, 0x7f, + 0x6f, 0x76, 0x02, 0x1b, 0xc5, 0x71, 0x86, 0x1d, 0x5a, 0x83, 0x9a, 0xef, 0x6d, 0x90, 0xd6, 0x6e, + 0xcb, 0x27, 0xd3, 0x63, 0x8c, 0x77, 0xc1, 0x94, 0xbb, 0x21, 0xc9, 0xb9, 0x7d, 0xa8, 0xfe, 0xe2, + 0x94, 0x11, 0x7a, 0x13, 0xce, 0x24, 0x24, 0xda, 0xf6, 0x02, 0x87, 0x2e, 0xda, 0xc2, 0x78, 0x61, + 0x3b, 0xdc, 0x71, 0x26, 0xb5, 0x67, 0xc5, 0xc0, 0x9e, 0x59, 0xcb, 0xa5, 0xc2, 0x3d, 0x4a, 0xa3, + 0x5b, 0x30, 0xc9, 0xe6, 0x53, 0xa3, 0xe3, 0xfb, 0x8d, 0xd0, 0xf7, 0x5a, 0xbb, 0xd3, 0x13, 0x8c, + 0xe1, 0xd3, 0x72, 0xdf, 0xba, 0x62, 0xa2, 0xa9, 0x5d, 0x9f, 0xfe, 0xc3, 0xd9, 0xd2, 0xc8, 0x87, + 0xc9, 0x98, 0xb4, 0x3a, 0x91, 0x97, 0xec, 0x52, 0xd9, 0x27, 0xf7, 0x93, 0xe9, 0xc9, 0x32, 0xfb, + 0x94, 0xa6, 0x59, 0x88, 0x3b, 0x0d, 0x32, 0x40, 0x9c, 0x65, 0x4d, 0x55, 0x45, 0x9c, 0xb8, 0x5e, + 0x30, 0x3d, 0xc5, 0x0c, 0x53, 0x35, 0xbf, 0x9a, 0x14, 0x88, 0x39, 0x8e, 0x6d, 0xfb, 0xe8, 0x8f, + 0x5b, 0x54, 0xf7, 0x9e, 0x60, 0x84, 0xe9, 0xb6, 0x4f, 0x22, 0x70, 0x4a, 0x43, 0x17, 0xac, 0x24, + 0xd9, 0x9d, 0x46, 0x8c, 0x54, 0x4d, 0xb5, 0xb5, 0xb5, 0x2f, 0x60, 0x0a, 0xb7, 0xd7, 0x61, 0x42, + 0x4d, 0x6b, 0x36, 0x3a, 0x68, 0x16, 0x06, 0xa9, 0xe6, 0x92, 0xbb, 0x97, 0x1a, 0x6d, 0x02, 0x55, + 0x68, 0x31, 0xe6, 0x70, 0xd6, 0x04, 0xef, 0xab, 0x64, 0x61, 0x37, 0x21, 0xdc, 0x8a, 0xad, 0x6a, + 0x4d, 0x90, 0x08, 0x9c, 0xd2, 0xd8, 0xff, 0x97, 0x2f, 0x8a, 0xa9, 0xee, 0x28, 0xa1, 0x37, 0x2f, + 0xc2, 0xc8, 0x56, 0x18, 0x27, 0x94, 0x9a, 0xd5, 0x31, 0x98, 0xae, 0x82, 0xd7, 0x04, 0x1c, 0x2b, + 0x0a, 0xf4, 0x2a, 0x8c, 0xb7, 0xf4, 0x0a, 0x84, 0x2a, 0x3f, 0x2d, 0x8a, 0x98, 0xb5, 0x63, 0x93, + 0x16, 0xbd, 0x02, 0x23, 0xcc, 0x95, 0xd7, 0x0a, 0x7d, 0x61, 0x2f, 0xcb, 0x95, 0x69, 0xa4, 0x21, + 0xe0, 0x0f, 0xb4, 0xdf, 0x58, 0x51, 0xd3, 0x5d, 0x07, 0x6d, 0xc2, 0x4a, 0x43, 0xa8, 0x5b, 0xb5, + 0xeb, 0xb8, 0xc6, 0xa0, 0x58, 0x60, 0xed, 0x5f, 0xab, 0x68, 0xa3, 0x4c, 0x8d, 0x3e, 0x82, 0xbe, + 0x08, 0xc3, 0xf7, 0x1c, 0x2f, 0xf1, 0x82, 0x4d, 0xb1, 0x82, 0xbe, 0x50, 0x52, 0xf7, 0xb2, 0xe2, + 0x77, 0x78, 0x51, 0xbe, 0x4e, 0x88, 0x3f, 0x58, 0x32, 0xa4, 0xbc, 0xa3, 0x4e, 0x10, 0x50, 0xde, + 0x95, 0xfe, 0x79, 0x63, 0x5e, 0x94, 0xf3, 0x16, 0x7f, 0xb0, 0x64, 0x88, 0x36, 0x00, 0xe4, 0xec, + 0x23, 0xae, 0x70, 0xa1, 0x7d, 0xaa, 0x1f, 0xf6, 0x6b, 0xaa, 0xf4, 0xc2, 0x04, 0x5d, 0x99, 0xd2, + 0xff, 0x58, 0xe3, 0x6c, 0x77, 0x98, 0x21, 0xd2, 0xdd, 0x2c, 0xf4, 0x36, 0x9d, 0x00, 0x4e, 0x94, + 0x10, 0x77, 0x3e, 0x11, 0x43, 0xf7, 0x5c, 0x49, 0x83, 0x6a, 0xcd, 0xdb, 0x26, 0xfa, 0x6c, 0x11, + 0x5c, 0x70, 0xca, 0xd0, 0xfe, 0x7e, 0x15, 0xa6, 0x7b, 0xb5, 0x97, 0xca, 0x24, 0xb9, 0xef, 0x25, + 0x8b, 0xd4, 0x56, 0xb0, 0x4c, 0x99, 0x5c, 0x12, 0x70, 0xac, 0x28, 0xa8, 0x70, 0xc4, 0xde, 0x66, + 0xe0, 0xf8, 0x42, 0x7e, 0x95, 0x70, 0x34, 0x19, 0x14, 0x0b, 0x2c, 0xa5, 0x8b, 0x88, 0x13, 0x0b, + 0x17, 0xae, 0x26, 0x44, 0x98, 0x41, 0xb1, 0xc0, 0xea, 0xdb, 0xbf, 0x81, 0x82, 0xed, 0x9f, 0x31, + 0x46, 0x83, 0x0f, 0x79, 0x8c, 0xd0, 0xbb, 0x00, 0x1b, 0x5e, 0xe0, 0xc5, 0x5b, 0x8c, 0xfd, 0x50, + 0xff, 0xec, 0x95, 0x55, 0xb2, 0xac, 0xd8, 0x60, 0x8d, 0x25, 0x7a, 0x09, 0x46, 0xd5, 0x0c, 0x5d, + 0xa9, 0x4f, 0x0f, 0x9b, 0x8e, 0xbf, 0x54, 0x5d, 0xd5, 0xb1, 0x4e, 0x67, 0x7f, 0x25, 0x2b, 0x32, + 0x62, 0x62, 0x68, 0x23, 0x6c, 0x95, 0x1d, 0xe1, 0xca, 0xc1, 0x23, 0x6c, 0xff, 0x97, 0x2a, 0xdd, + 0x3b, 0x6b, 0x95, 0x75, 0xe2, 0x12, 0x4a, 0xed, 0x0d, 0xaa, 0xe1, 0x9d, 0x84, 0x88, 0x69, 0x79, + 0xb1, 0x9f, 0x79, 0xa3, 0xaf, 0x07, 0x74, 0x3a, 0x70, 0x4e, 0x68, 0x0b, 0x6a, 0xbe, 0x13, 0xb3, + 0x9d, 0x24, 0x11, 0xd3, 0xb1, 0x3f, 0xb6, 0xa9, 0x15, 0xee, 0xc4, 0x89, 0xb6, 0xe0, 0xf2, 0x5a, + 0x52, 0xe6, 0x74, 0x79, 0xa2, 0xd6, 0x81, 0x3c, 0x39, 0x50, 0xcd, 0xa1, 0x26, 0xc4, 0x2e, 0xe6, + 0x38, 0xf4, 0x0a, 0x8c, 0x45, 0x84, 0x89, 0xca, 0x22, 0x35, 0x80, 0x98, 0xf0, 0x0d, 0xa6, 0x96, + 0x12, 0xd6, 0x70, 0xd8, 0xa0, 0x4c, 0x0d, 0xe5, 0xa1, 0x03, 0x0c, 0xe5, 0x67, 0x60, 0x98, 0xfd, + 0x50, 0x52, 0xa1, 0xbe, 0xd0, 0x0a, 0x07, 0x63, 0x89, 0xcf, 0x0a, 0xd1, 0x48, 0x49, 0x21, 0x7a, + 0x16, 0x26, 0xea, 0x0e, 0xd9, 0x0e, 0x83, 0xa5, 0xc0, 0x6d, 0x87, 0x5e, 0x90, 0xa0, 0x69, 0x18, + 0x60, 0x4b, 0x0a, 0x9f, 0xf1, 0x03, 0x94, 0x03, 0x1e, 0xa0, 0xc6, 0xae, 0xfd, 0xff, 0x2c, 0x18, + 0xaf, 0x13, 0x9f, 0x24, 0xe4, 0x56, 0x9b, 0xb9, 0x1f, 0xd0, 0x32, 0xa0, 0xcd, 0xc8, 0x69, 0x91, + 0x06, 0x89, 0xbc, 0xd0, 0x6d, 0x92, 0x56, 0x18, 0x30, 0x87, 0x3b, 0x5d, 0x23, 0xcf, 0xec, 0xef, + 0xcd, 0xa2, 0xab, 0x5d, 0x58, 0x9c, 0x53, 0x02, 0xb9, 0x30, 0xde, 0x8e, 0x88, 0xe1, 0x2f, 0xb1, + 0x8a, 0xed, 0xf3, 0x86, 0x5e, 0x84, 0x9b, 0x8f, 0x06, 0x08, 0x9b, 0x4c, 0xd1, 0xe7, 0x60, 0x2a, + 0x8c, 0xda, 0x5b, 0x4e, 0x50, 0x27, 0x6d, 0x12, 0xb8, 0xd4, 0x66, 0x16, 0x4e, 0xb1, 0x53, 0xfb, + 0x7b, 0xb3, 0x53, 0xb7, 0x32, 0x38, 0xdc, 0x45, 0x6d, 0xff, 0x4a, 0x05, 0x4e, 0xd7, 0xc3, 0x7b, + 0xc1, 0x3d, 0x27, 0x72, 0xe7, 0x1b, 0x2b, 0xdc, 0x10, 0x66, 0x4e, 0x46, 0xe9, 0xdc, 0xb4, 0x7a, + 0x3a, 0x37, 0xbf, 0x04, 0x23, 0x1b, 0x1e, 0xf1, 0x5d, 0x4c, 0x36, 0x44, 0xf7, 0x2e, 0x97, 0xf1, + 0x68, 0x2c, 0xd3, 0x32, 0xd2, 0x2b, 0xc0, 0x7d, 0xab, 0xcb, 0x82, 0x0d, 0x56, 0x0c, 0x51, 0x07, + 0xa6, 0xa4, 0xa5, 0x2f, 0xb1, 0x62, 0x76, 0xbc, 0x50, 0x6e, 0x23, 0x61, 0x56, 0xc3, 0xc6, 0x03, + 0x67, 0x18, 0xe2, 0xae, 0x2a, 0xe8, 0x0e, 0x6d, 0x9b, 0xae, 0x0e, 0x03, 0x4c, 0x56, 0xd8, 0x0e, + 0x8d, 0x6d, 0x21, 0x19, 0xd4, 0xfe, 0xc7, 0x16, 0x3c, 0xd6, 0x35, 0x5a, 0x62, 0x7f, 0xfd, 0x96, + 0xdc, 0xd8, 0xf2, 0xd3, 0x99, 0x82, 0x56, 0xe6, 0x8e, 0x79, 0xb9, 0x4d, 0x6e, 0xa5, 0xc4, 0x26, + 0xf7, 0x16, 0x9c, 0x5a, 0xda, 0x6e, 0x27, 0xbb, 0x75, 0xcf, 0xf4, 0xc9, 0xbe, 0x0c, 0x43, 0xdb, + 0xc4, 0xf5, 0x3a, 0xdb, 0xe2, 0xb3, 0xce, 0x4a, 0x45, 0xba, 0xca, 0xa0, 0x0f, 0xf6, 0x66, 0xc7, + 0x9b, 0x49, 0x18, 0x39, 0x9b, 0x84, 0x03, 0xb0, 0x20, 0xb7, 0x3f, 0xb0, 0x60, 0x52, 0x4e, 0xa8, + 0x79, 0xd7, 0x8d, 0x48, 0x1c, 0xa3, 0x19, 0xa8, 0x78, 0x6d, 0xc1, 0x08, 0x04, 0xa3, 0xca, 0x4a, + 0x03, 0x57, 0xbc, 0x36, 0xfa, 0x22, 0xd4, 0xb8, 0x2b, 0x3f, 0x15, 0x8e, 0x3e, 0x8f, 0x06, 0xd8, + 0xee, 0x63, 0x4d, 0xf2, 0xc0, 0x29, 0x3b, 0x69, 0x59, 0x32, 0x55, 0x5d, 0x35, 0x1d, 0xcb, 0xd7, + 0x04, 0x1c, 0x2b, 0x0a, 0x74, 0x01, 0x46, 0x82, 0xd0, 0xe5, 0xa7, 0x2c, 0x7c, 0xd9, 0x65, 0x22, + 0x77, 0x53, 0xc0, 0xb0, 0xc2, 0xda, 0xdf, 0xb0, 0x60, 0x4c, 0xf6, 0xb1, 0xa4, 0x91, 0x4b, 0x27, + 0x49, 0x6a, 0xe0, 0xa6, 0x93, 0x84, 0x1a, 0xa9, 0x0c, 0x63, 0xd8, 0xa6, 0xd5, 0x7e, 0x6c, 0x53, + 0xfb, 0xfb, 0x15, 0x98, 0x90, 0xcd, 0x69, 0x76, 0xd6, 0x63, 0x92, 0xa0, 0x77, 0xa0, 0xe6, 0xf0, + 0xc1, 0x27, 0x52, 0xce, 0x9e, 0x2f, 0xda, 0xa1, 0x1b, 0xdf, 0x2c, 0x35, 0x0c, 0xe6, 0x25, 0x1f, + 0x9c, 0xb2, 0x44, 0x3b, 0x70, 0x22, 0x08, 0x13, 0xb6, 0x1e, 0x28, 0x7c, 0x39, 0x8f, 0x68, 0xb6, + 0x9e, 0xc7, 0x45, 0x3d, 0x27, 0x6e, 0x66, 0xf9, 0xe1, 0xee, 0x2a, 0xd0, 0x2d, 0xe9, 0xc5, 0xa8, + 0xb2, 0xba, 0x9e, 0x2d, 0x57, 0x57, 0x6f, 0x27, 0x86, 0xfd, 0x43, 0x0b, 0x6a, 0x92, 0xec, 0x28, + 0x7d, 0xe2, 0x77, 0x60, 0x38, 0x66, 0x9f, 0x46, 0x0e, 0xd3, 0xc5, 0x72, 0x4d, 0xe7, 0xdf, 0x33, + 0x5d, 0xfc, 0xf8, 0xff, 0x18, 0x4b, 0x6e, 0xcc, 0x0d, 0xa9, 0x3a, 0xf0, 0xe8, 0xb9, 0x21, 0x55, + 0xd3, 0x7a, 0xb8, 0x21, 0x7f, 0xd9, 0x82, 0x21, 0xee, 0x1c, 0x2a, 0xe7, 0x61, 0xd3, 0x7c, 0xc9, + 0x29, 0xc7, 0x37, 0x29, 0x50, 0xb8, 0x96, 0xd1, 0x1d, 0xa8, 0xb1, 0x1f, 0xcb, 0x51, 0xb8, 0x2d, + 0x16, 0x82, 0x67, 0xcb, 0x38, 0xa7, 0xb8, 0xe2, 0xe3, 0xda, 0xe4, 0x4d, 0xc9, 0x00, 0xa7, 0xbc, + 0xec, 0x1f, 0x54, 0xe9, 0xac, 0x4f, 0x49, 0x8d, 0x65, 0xcd, 0x3a, 0x8e, 0x65, 0xad, 0x72, 0xf4, + 0xcb, 0xda, 0x7b, 0x30, 0xd9, 0xd2, 0x7c, 0xf2, 0xe9, 0x62, 0x7a, 0xa5, 0xa4, 0xbb, 0x59, 0x73, + 0xe4, 0x73, 0x67, 0xc8, 0xa2, 0xc9, 0x0e, 0x67, 0xf9, 0x23, 0x02, 0x63, 0xfc, 0x40, 0x51, 0xd4, + 0x37, 0x50, 0x28, 0xb3, 0xdc, 0xef, 0xc2, 0x4b, 0xa8, 0xca, 0x58, 0xd0, 0x49, 0x53, 0x63, 0x84, + 0x0d, 0xb6, 0xf6, 0xdf, 0x1c, 0x84, 0xc1, 0xa5, 0x1d, 0x12, 0x24, 0x47, 0x38, 0xcb, 0xb7, 0x61, + 0xc2, 0x0b, 0x76, 0x42, 0x7f, 0x87, 0xb8, 0x1c, 0x7f, 0xb8, 0x15, 0xed, 0x8c, 0xa8, 0x64, 0x62, + 0xc5, 0x60, 0x86, 0x33, 0xcc, 0x8f, 0x62, 0x3f, 0xf9, 0x06, 0x0c, 0x71, 0x89, 0x10, 0x9b, 0xc9, + 0x02, 0x27, 0x29, 0x1b, 0x50, 0x31, 0x73, 0xd2, 0x5d, 0x2f, 0xf7, 0xcf, 0x0a, 0x46, 0xe8, 0x2e, + 0x4c, 0x6c, 0x78, 0x51, 0x9c, 0xd0, 0x0d, 0x61, 0x9c, 0x38, 0xdb, 0xed, 0xc3, 0x6c, 0x24, 0xd5, + 0x90, 0x2c, 0x1b, 0xac, 0x70, 0x86, 0x35, 0xda, 0x82, 0x71, 0xba, 0x8f, 0x49, 0xeb, 0x1a, 0xee, + 0xbf, 0x2e, 0xe5, 0x4b, 0xba, 0xa1, 0x73, 0xc2, 0x26, 0x63, 0xaa, 0x8c, 0x5a, 0x6c, 0xe3, 0x33, + 0xc2, 0x96, 0x74, 0xa5, 0x8c, 0xf8, 0x8e, 0x87, 0xe3, 0xa8, 0x4e, 0x63, 0xe7, 0xc7, 0x35, 0x53, + 0xa7, 0xa5, 0xa7, 0xc4, 0xf6, 0x77, 0xe9, 0x02, 0x44, 0x47, 0xf1, 0x38, 0x74, 0xf7, 0x35, 0x53, + 0x77, 0x3f, 0x55, 0xe2, 0xe3, 0xf6, 0xd0, 0xdb, 0x5f, 0x86, 0x51, 0xed, 0xdb, 0xa3, 0x4b, 0x50, + 0x6b, 0xc9, 0xa3, 0x4e, 0xa1, 0xc0, 0x95, 0x01, 0xa1, 0xce, 0x40, 0x71, 0x4a, 0x43, 0x07, 0x86, + 0x1a, 0x5e, 0xd9, 0x88, 0x08, 0x6a, 0x96, 0x61, 0x86, 0xb1, 0x5f, 0x00, 0x58, 0xba, 0x4f, 0x5a, + 0xf3, 0x2d, 0x76, 0x10, 0xaf, 0x9d, 0x9b, 0x58, 0xbd, 0xcf, 0x4d, 0xec, 0xb7, 0x61, 0x7c, 0xe9, + 0x3e, 0x5d, 0xd9, 0xe5, 0x36, 0xed, 0x3c, 0x0c, 0x11, 0x06, 0x60, 0xad, 0x1a, 0x49, 0x85, 0x94, + 0x93, 0x61, 0x81, 0x65, 0xc7, 0xe8, 0xf7, 0x1d, 0x31, 0x61, 0xb5, 0x2d, 0xef, 0x12, 0x05, 0x62, + 0x8e, 0xb3, 0xbf, 0x63, 0xc1, 0xc4, 0xf2, 0xa2, 0x61, 0x27, 0xcf, 0x01, 0x70, 0x7b, 0xf3, 0xce, + 0x9d, 0x9b, 0xd2, 0x8f, 0xca, 0x9d, 0x5d, 0x0a, 0x8a, 0x35, 0x0a, 0xf4, 0x38, 0x54, 0xfd, 0x4e, + 0x20, 0xcc, 0xc0, 0xe1, 0xfd, 0xbd, 0xd9, 0xea, 0x8d, 0x4e, 0x80, 0x29, 0x4c, 0x0b, 0x6c, 0xa8, + 0x96, 0x0e, 0x6c, 0x28, 0x0e, 0xed, 0xfb, 0x56, 0x15, 0xa6, 0x96, 0x7d, 0x72, 0xdf, 0x68, 0xf5, + 0x79, 0x18, 0x72, 0x23, 0x6f, 0x87, 0x44, 0x59, 0x37, 0x49, 0x9d, 0x41, 0xb1, 0xc0, 0x96, 0x8e, + 0xb5, 0x30, 0xe2, 0x4c, 0xaa, 0x47, 0x1c, 0x67, 0x52, 0xd8, 0x67, 0xb4, 0x01, 0xc3, 0x21, 0xff, + 0xfe, 0xd3, 0x83, 0x4c, 0xd0, 0x5f, 0x3d, 0xb8, 0x31, 0xd9, 0xf1, 0x99, 0x13, 0xd2, 0xc3, 0x0f, + 0xbd, 0x95, 0xb2, 0x14, 0x50, 0x2c, 0x99, 0xcf, 0x7c, 0x06, 0xc6, 0x74, 0xca, 0xbe, 0x4e, 0xbf, + 0x7f, 0xce, 0x82, 0x93, 0xcb, 0x7e, 0xd8, 0xba, 0x9b, 0x09, 0x86, 0x79, 0x09, 0x46, 0xe9, 0x54, + 0x8d, 0x8d, 0x08, 0x31, 0x23, 0x14, 0x4e, 0xa0, 0xb0, 0x4e, 0xa7, 0x15, 0xbb, 0x7d, 0x7b, 0xa5, + 0x9e, 0x17, 0x41, 0x27, 0x50, 0x58, 0xa7, 0xb3, 0xff, 0xb3, 0x05, 0x4f, 0x5e, 0x5d, 0x5c, 0x6a, + 0x50, 0x35, 0x12, 0x27, 0x24, 0x48, 0xba, 0x82, 0xf8, 0xce, 0xc3, 0x50, 0xdb, 0xd5, 0x9a, 0xa2, + 0x44, 0xa0, 0x51, 0x67, 0xad, 0x10, 0xd8, 0x47, 0x25, 0x92, 0xf5, 0x97, 0x2d, 0x38, 0x79, 0xd5, + 0x4b, 0x30, 0x69, 0x87, 0xd9, 0xb8, 0xbb, 0x88, 0xb4, 0xc3, 0xd8, 0x4b, 0xc2, 0x68, 0x37, 0x1b, + 0x77, 0x87, 0x15, 0x06, 0x6b, 0x54, 0xbc, 0xe6, 0x1d, 0x8f, 0x2a, 0x58, 0xd1, 0x29, 0xad, 0x66, + 0x0e, 0xc7, 0x8a, 0x82, 0x76, 0xcc, 0xf5, 0x22, 0x66, 0x8b, 0xec, 0x8a, 0x19, 0xac, 0x3a, 0x56, + 0x97, 0x08, 0x9c, 0xd2, 0xd8, 0x7f, 0xd7, 0x82, 0xd3, 0x57, 0xfd, 0x4e, 0x9c, 0x90, 0x68, 0x23, + 0x36, 0x1a, 0xfb, 0x02, 0xd4, 0x88, 0xb4, 0x9b, 0x45, 0x5b, 0xd5, 0x9a, 0xa4, 0x0c, 0x6a, 0x1e, + 0xf4, 0xa7, 0xe8, 0x4a, 0xc4, 0x98, 0xf5, 0x17, 0x11, 0xf5, 0xaf, 0x2b, 0x30, 0x7e, 0x6d, 0x6d, + 0xad, 0x71, 0x95, 0x24, 0x42, 0x07, 0x17, 0x3b, 0x7a, 0x1a, 0xda, 0x2e, 0x77, 0xf4, 0xca, 0x5c, + 0x8f, 0x59, 0xd7, 0x49, 0x3c, 0x7f, 0x8e, 0xc7, 0x58, 0xcf, 0xad, 0x04, 0xc9, 0xad, 0xa8, 0x99, + 0x44, 0x5e, 0xb0, 0x99, 0xbb, 0x2b, 0x96, 0xeb, 0x44, 0xb5, 0xd7, 0x3a, 0x81, 0x5e, 0x80, 0x21, + 0x16, 0xe2, 0x2d, 0x6d, 0x9b, 0x8f, 0x2a, 0x33, 0x84, 0x41, 0x1f, 0xec, 0xcd, 0xd6, 0x6e, 0xe3, + 0x15, 0xfe, 0x07, 0x0b, 0x52, 0xf4, 0x2e, 0x8c, 0x6e, 0x25, 0x49, 0xfb, 0x1a, 0x71, 0x5c, 0x12, + 0x49, 0x2d, 0x51, 0x60, 0x05, 0xd2, 0xc1, 0xe0, 0x05, 0xd2, 0x89, 0x95, 0xc2, 0x62, 0xac, 0x73, + 0xb4, 0x9b, 0x00, 0x29, 0xee, 0x21, 0x6d, 0x6d, 0xec, 0xbf, 0x5c, 0x81, 0xe1, 0x6b, 0x4e, 0xe0, + 0xfa, 0x24, 0x42, 0xcb, 0x30, 0x40, 0xee, 0x93, 0x56, 0x39, 0x03, 0x36, 0x5d, 0x48, 0xb9, 0xa7, + 0x8a, 0xfe, 0xc7, 0xac, 0x3c, 0xc2, 0x30, 0x4c, 0xdb, 0x7d, 0x55, 0x05, 0x66, 0x3e, 0x57, 0x3c, + 0x0a, 0x4a, 0x24, 0xf8, 0x2a, 0x2c, 0x40, 0x58, 0x32, 0x62, 0x3e, 0x9d, 0x56, 0xbb, 0x49, 0x95, + 0x5b, 0x52, 0x2e, 0xf6, 0x7a, 0x6d, 0xb1, 0xc1, 0xc9, 0x05, 0x5f, 0xee, 0xd3, 0x91, 0x40, 0x9c, + 0xb2, 0xb3, 0x5f, 0x81, 0x53, 0xec, 0x54, 0xd0, 0x49, 0xb6, 0x8c, 0x39, 0x53, 0x28, 0x9c, 0xf6, + 0x3f, 0xa8, 0xc0, 0x89, 0x95, 0xe6, 0x62, 0xd3, 0xf4, 0xc6, 0xbd, 0x02, 0x63, 0x7c, 0x79, 0xa6, + 0x42, 0xe7, 0xf8, 0xa2, 0xbc, 0x72, 0x63, 0xaf, 0x69, 0x38, 0x6c, 0x50, 0xa2, 0x27, 0xa1, 0xea, + 0xbd, 0x17, 0x64, 0xe3, 0x83, 0x56, 0xde, 0xb8, 0x89, 0x29, 0x9c, 0xa2, 0xe9, 0x4a, 0xcf, 0x55, + 0x9c, 0x42, 0xab, 0xd5, 0xfe, 0x75, 0x98, 0xf0, 0xe2, 0x56, 0xec, 0xad, 0x04, 0x74, 0xfe, 0x3b, + 0x2d, 0x29, 0xbe, 0xa9, 0xed, 0x4f, 0x9b, 0xaa, 0xb0, 0x38, 0x43, 0xad, 0xe9, 0xdb, 0xc1, 0xd2, + 0xd6, 0x42, 0x71, 0x84, 0xe6, 0x57, 0xa0, 0xa6, 0x22, 0x69, 0x64, 0x00, 0x94, 0x95, 0x1f, 0x00, + 0x55, 0x42, 0xe1, 0x48, 0x1f, 0x69, 0x35, 0xd7, 0x47, 0xfa, 0xcf, 0x2c, 0x48, 0x83, 0x06, 0x10, + 0x86, 0x5a, 0x3b, 0x64, 0x07, 0x10, 0x91, 0x3c, 0xec, 0x7b, 0xba, 0x40, 0x12, 0xf9, 0x4c, 0xe0, + 0xb2, 0xd2, 0x90, 0x65, 0x71, 0xca, 0x06, 0xdd, 0x80, 0xe1, 0x76, 0x44, 0x9a, 0x09, 0x0b, 0xf3, + 0xed, 0x83, 0x23, 0x93, 0xea, 0x06, 0x2f, 0x89, 0x25, 0x0b, 0xfb, 0x37, 0x2c, 0x80, 0x1b, 0xde, + 0xb6, 0x97, 0x60, 0x27, 0xd8, 0x24, 0x47, 0xb8, 0x8b, 0xbc, 0x09, 0x03, 0x71, 0x9b, 0xb4, 0xca, + 0x1d, 0x1d, 0xa5, 0x2d, 0x6a, 0xb6, 0x49, 0x2b, 0xfd, 0x0c, 0xf4, 0x1f, 0x66, 0x7c, 0xec, 0x5f, + 0x05, 0x98, 0x48, 0xc9, 0xa8, 0x19, 0x8f, 0x9e, 0x37, 0xe2, 0x5a, 0x1f, 0xcf, 0xc4, 0xb5, 0xd6, + 0x18, 0xb5, 0x16, 0xca, 0x9a, 0x40, 0x75, 0xdb, 0xb9, 0x2f, 0x76, 0x0d, 0x2f, 0x95, 0x6d, 0x10, + 0xad, 0x69, 0x6e, 0xd5, 0xb9, 0xcf, 0xcd, 0xa8, 0xe7, 0xa4, 0x00, 0xad, 0x3a, 0xf7, 0x1f, 0xf0, + 0x03, 0x22, 0x36, 0x03, 0xe9, 0x36, 0xe5, 0xeb, 0xff, 0x35, 0xfd, 0xcf, 0x94, 0x22, 0xad, 0x8e, + 0xd5, 0xea, 0x05, 0xc2, 0xd5, 0xd7, 0x67, 0xad, 0x5e, 0x90, 0xad, 0xd5, 0x0b, 0x4a, 0xd4, 0xea, + 0x05, 0xe8, 0x7d, 0x0b, 0x86, 0x85, 0x87, 0x9c, 0x85, 0x5f, 0x8d, 0x5e, 0xf9, 0x74, 0x5f, 0x55, + 0x0b, 0x57, 0x3b, 0xaf, 0xfe, 0x92, 0xb4, 0x1d, 0x05, 0xb4, 0xb0, 0x09, 0xb2, 0x6a, 0xf4, 0x6d, + 0x0b, 0x26, 0xc4, 0x6f, 0x4c, 0xde, 0xeb, 0x90, 0x38, 0x11, 0xab, 0xd4, 0xe7, 0x0e, 0xd3, 0x1a, + 0xc1, 0x82, 0x37, 0xea, 0x53, 0x52, 0xc5, 0x98, 0xc8, 0xc2, 0xb6, 0x65, 0xda, 0x83, 0xbe, 0x67, + 0xc1, 0xa9, 0x6d, 0xe7, 0x3e, 0xaf, 0x91, 0xc3, 0xb0, 0x93, 0x78, 0xa1, 0x08, 0x31, 0x5b, 0xee, + 0x57, 0x4e, 0xba, 0x18, 0xf1, 0xe6, 0xbe, 0x26, 0x8f, 0x2d, 0xf3, 0x48, 0x0a, 0x1b, 0x9d, 0xdb, + 0xc2, 0x19, 0x17, 0x46, 0xa4, 0x60, 0xe6, 0x58, 0xed, 0x0b, 0xfa, 0x62, 0x7c, 0xf0, 0x0c, 0x94, + 0x0e, 0xb4, 0xb9, 0x37, 0x3a, 0x4e, 0x90, 0x78, 0xc9, 0xae, 0x66, 0xe3, 0xb3, 0x5a, 0x84, 0x20, + 0x1e, 0x61, 0x2d, 0x5b, 0x30, 0xa6, 0xcb, 0xdc, 0x11, 0xd6, 0x14, 0xc2, 0xc9, 0x1c, 0x79, 0x3a, + 0xc2, 0x0a, 0x3b, 0xf0, 0x78, 0x4f, 0xb9, 0x38, 0xba, 0x6a, 0xed, 0x1f, 0x5a, 0xba, 0xc2, 0x3c, + 0x0e, 0xc7, 0xcc, 0xaa, 0xe9, 0x98, 0xb9, 0x50, 0x76, 0xea, 0xf4, 0xf0, 0xce, 0x6c, 0xe8, 0xed, + 0xa7, 0x2b, 0x01, 0x5a, 0x83, 0x21, 0x9f, 0x42, 0xe4, 0x69, 0xd0, 0xc5, 0x7e, 0x26, 0x67, 0x6a, + 0x5c, 0x30, 0x78, 0x8c, 0x05, 0x2f, 0xfb, 0x37, 0x2d, 0x18, 0x38, 0x8e, 0xe1, 0x69, 0x98, 0xc3, + 0xd3, 0xcb, 0x44, 0x15, 0x57, 0x3e, 0xe7, 0xb0, 0x73, 0x6f, 0xe9, 0x7e, 0x42, 0x82, 0x98, 0x99, + 0x92, 0xb9, 0x23, 0xf4, 0x2b, 0x15, 0x18, 0xa5, 0x15, 0x49, 0x3f, 0xd1, 0xab, 0x30, 0xee, 0x3b, + 0xeb, 0xc4, 0x97, 0xee, 0xe4, 0xec, 0xb6, 0xeb, 0x86, 0x8e, 0xc4, 0x26, 0x2d, 0x2d, 0xbc, 0xa1, + 0x7b, 0xdb, 0x85, 0x49, 0xa4, 0x0a, 0x1b, 0xae, 0x78, 0x6c, 0xd2, 0x52, 0xcb, 0xff, 0x9e, 0x93, + 0xb4, 0xb6, 0xc4, 0x96, 0x4c, 0x35, 0xf7, 0x0e, 0x05, 0x62, 0x8e, 0x43, 0xf3, 0x30, 0x29, 0x25, + 0xf6, 0x4d, 0x3e, 0x74, 0xc2, 0x5c, 0x54, 0xf7, 0xf4, 0xb0, 0x89, 0xc6, 0x59, 0x7a, 0xf4, 0x19, + 0x98, 0xa0, 0x83, 0x13, 0x76, 0x12, 0x19, 0xac, 0x30, 0xc8, 0x82, 0x15, 0x58, 0x70, 0xe8, 0x9a, + 0x81, 0xc1, 0x19, 0x4a, 0xfb, 0x5d, 0x38, 0x79, 0x23, 0x74, 0xdc, 0x05, 0xc7, 0x77, 0x82, 0x16, + 0x89, 0x56, 0x82, 0xcd, 0xc2, 0x73, 0x5d, 0xfd, 0xec, 0xb5, 0x52, 0x74, 0xf6, 0x6a, 0x47, 0x80, + 0xf4, 0x0a, 0x44, 0x98, 0xcd, 0xdb, 0x30, 0xec, 0xf1, 0xaa, 0x84, 0xd4, 0x5e, 0x2e, 0x72, 0x2a, + 0x75, 0xb5, 0x51, 0x0b, 0x1b, 0xe1, 0x00, 0x2c, 0x59, 0xd2, 0x9d, 0x44, 0x9e, 0x17, 0xaa, 0x78, + 0xb3, 0x66, 0xff, 0x55, 0x0b, 0x26, 0x6f, 0x66, 0x2e, 0x83, 0x9d, 0x87, 0xa1, 0x98, 0x44, 0x39, + 0x2e, 0xb5, 0x26, 0x83, 0x62, 0x81, 0x7d, 0xe8, 0xdb, 0xf4, 0x5f, 0xac, 0x40, 0x8d, 0xc5, 0x6c, + 0xb6, 0x9d, 0xd6, 0x51, 0x1a, 0xa5, 0xab, 0x86, 0x51, 0x5a, 0xb0, 0x49, 0x54, 0x0d, 0xea, 0x65, + 0x93, 0xa2, 0xdb, 0xea, 0x72, 0x54, 0xa9, 0xfd, 0x61, 0xca, 0x90, 0xdf, 0xa3, 0x99, 0x30, 0xef, + 0x52, 0xc9, 0x8b, 0x53, 0xec, 0x34, 0x54, 0xd1, 0x3e, 0x7a, 0xa7, 0xa1, 0xaa, 0x69, 0x3d, 0xb4, + 0x52, 0x43, 0x6b, 0x3d, 0x53, 0xdb, 0x9f, 0x65, 0x01, 0x78, 0x8e, 0xef, 0x7d, 0x95, 0xa8, 0x4b, + 0x86, 0xb3, 0x22, 0x9e, 0x4e, 0x40, 0x1f, 0x30, 0x05, 0x23, 0xfe, 0xf1, 0xbb, 0xa3, 0x69, 0x11, + 0xfb, 0x1a, 0x4c, 0x66, 0xc6, 0x0e, 0xbd, 0x04, 0x83, 0xed, 0x2d, 0x27, 0x26, 0x99, 0xc8, 0x8e, + 0xc1, 0x06, 0x05, 0x3e, 0xd8, 0x9b, 0x9d, 0x50, 0x05, 0x18, 0x04, 0x73, 0x6a, 0xfb, 0x4f, 0x2c, + 0x18, 0xb8, 0x19, 0xba, 0x47, 0x29, 0x63, 0xd7, 0x0c, 0x19, 0x3b, 0x5f, 0x7c, 0xe3, 0xbc, 0xa7, + 0x78, 0x35, 0x32, 0xe2, 0x75, 0xa1, 0x04, 0xaf, 0x83, 0x25, 0x6b, 0x1b, 0x46, 0xd9, 0x8d, 0x76, + 0x11, 0xd2, 0xf2, 0x82, 0xb1, 0x81, 0x9a, 0xcd, 0x6c, 0xa0, 0x26, 0x35, 0x52, 0x6d, 0x1b, 0xf5, + 0x0c, 0x0c, 0x8b, 0x10, 0x8a, 0x6c, 0xd4, 0xa1, 0xa0, 0xc5, 0x12, 0x6f, 0xff, 0x7a, 0x15, 0x8c, + 0x1b, 0xf4, 0xe8, 0x47, 0x16, 0xcc, 0x45, 0xfc, 0xca, 0x83, 0x5b, 0xef, 0x44, 0x5e, 0xb0, 0xd9, + 0x6c, 0x6d, 0x11, 0xb7, 0xe3, 0x7b, 0xc1, 0xe6, 0xca, 0x66, 0x10, 0x2a, 0xf0, 0xd2, 0x7d, 0xd2, + 0xea, 0x30, 0xef, 0x6a, 0xe9, 0x8b, 0xfb, 0xea, 0x0c, 0xf5, 0xca, 0xfe, 0xde, 0xec, 0x1c, 0xee, + 0xab, 0x16, 0xdc, 0x67, 0xab, 0xd0, 0xef, 0x5b, 0x70, 0x89, 0xdf, 0x21, 0x2f, 0xdf, 0x93, 0x52, + 0x1b, 0xcf, 0x86, 0x64, 0x9a, 0xb2, 0x5b, 0x23, 0xd1, 0xf6, 0xc2, 0xcb, 0x62, 0x90, 0x2f, 0x35, + 0xfa, 0xab, 0x15, 0xf7, 0xdb, 0x4c, 0xfb, 0xdf, 0x56, 0x61, 0x9c, 0x8e, 0x67, 0x7a, 0x7f, 0xf4, + 0x25, 0x43, 0x4c, 0x3e, 0x96, 0x11, 0x93, 0x13, 0x06, 0xf1, 0xc3, 0xb9, 0x3a, 0x9a, 0xc0, 0x09, + 0xdf, 0x89, 0x93, 0x6b, 0xc4, 0x89, 0x92, 0x75, 0xe2, 0xb0, 0x03, 0x4b, 0x31, 0x09, 0xfa, 0x3a, + 0x04, 0x55, 0x71, 0x39, 0x37, 0xb2, 0xdc, 0x70, 0x77, 0x05, 0xe8, 0x1e, 0x20, 0x76, 0x3a, 0x1a, + 0x39, 0x41, 0xcc, 0x3b, 0xe3, 0x09, 0x87, 0x6c, 0x9f, 0xd5, 0xce, 0x88, 0x6a, 0xd1, 0x8d, 0x2e, + 0x76, 0x38, 0xa7, 0x0a, 0xed, 0x08, 0x7c, 0xb0, 0xec, 0x11, 0xf8, 0x50, 0x41, 0xc0, 0xef, 0xcf, + 0x5b, 0x70, 0x92, 0x7e, 0x18, 0x33, 0x38, 0x34, 0x46, 0x21, 0x4c, 0xd2, 0x1e, 0xf8, 0x24, 0x91, + 0x30, 0x31, 0xc3, 0x0a, 0x6c, 0x69, 0x93, 0x4f, 0x6a, 0xb1, 0x5d, 0x37, 0x99, 0xe1, 0x2c, 0x77, + 0xfb, 0xd7, 0x2d, 0x60, 0xd1, 0x67, 0xc7, 0xb1, 0x8e, 0x5d, 0x35, 0xd7, 0x31, 0xbb, 0x58, 0x69, + 0xf4, 0x58, 0xc2, 0x5e, 0x84, 0x29, 0x8a, 0x6d, 0x44, 0xe1, 0xfd, 0x5d, 0x69, 0x5c, 0x17, 0xfb, + 0x66, 0xdf, 0xaf, 0xf0, 0x99, 0xa3, 0xae, 0x6f, 0xa1, 0x5f, 0xb0, 0x60, 0xa4, 0xe5, 0xb4, 0x9d, + 0x16, 0x4f, 0x41, 0x52, 0xc2, 0x0f, 0x63, 0x94, 0x9f, 0x5b, 0x14, 0x65, 0xb9, 0x0f, 0xe1, 0x93, + 0xb2, 0xeb, 0x12, 0x5c, 0xe8, 0x37, 0x50, 0x95, 0xcf, 0x78, 0x30, 0x6e, 0x30, 0x3b, 0xc2, 0x8d, + 0xe7, 0x2f, 0x58, 0x5c, 0xeb, 0xab, 0xcd, 0xc1, 0x3d, 0x38, 0x11, 0x68, 0xff, 0xa9, 0x3e, 0x93, + 0xb6, 0xf0, 0x5c, 0x79, 0xbd, 0xce, 0xd4, 0xa0, 0x16, 0x68, 0x97, 0x61, 0x88, 0xbb, 0xeb, 0xb0, + 0xff, 0xa1, 0x05, 0x8f, 0xe9, 0x84, 0xda, 0x6d, 0xbb, 0x22, 0xbf, 0x70, 0x1d, 0x46, 0xc2, 0x36, + 0x89, 0x9c, 0x74, 0x23, 0x74, 0x41, 0x8e, 0xfe, 0x2d, 0x01, 0x7f, 0xb0, 0x37, 0x7b, 0x4a, 0xe7, + 0x2e, 0xe1, 0x58, 0x95, 0x44, 0x36, 0x0c, 0xb1, 0x71, 0x89, 0xc5, 0x3d, 0x49, 0x96, 0x90, 0x83, + 0x9d, 0x86, 0xc4, 0x58, 0x60, 0xec, 0xbf, 0x66, 0x71, 0x61, 0xd3, 0x9b, 0x8e, 0xbe, 0x06, 0x53, + 0xdb, 0x74, 0xcf, 0xb4, 0x74, 0xbf, 0x4d, 0x57, 0x52, 0x76, 0x0a, 0x6c, 0x95, 0x59, 0x3f, 0x7a, + 0x74, 0x77, 0x61, 0x5a, 0xb4, 0x7e, 0x6a, 0x35, 0xc3, 0x16, 0x77, 0x55, 0x64, 0xff, 0x81, 0x98, + 0xb2, 0xcc, 0x78, 0x7b, 0x06, 0x86, 0xdb, 0xa1, 0xbb, 0xb8, 0x52, 0xc7, 0x62, 0xac, 0x94, 0xce, + 0x69, 0x70, 0x30, 0x96, 0x78, 0x74, 0x05, 0x80, 0xdc, 0x4f, 0x48, 0x14, 0x38, 0xbe, 0x3a, 0xbd, + 0x55, 0xb6, 0xd2, 0x92, 0xc2, 0x60, 0x8d, 0x8a, 0x96, 0x69, 0x47, 0xe1, 0x8e, 0xe7, 0xb2, 0xa8, + 0xf7, 0xaa, 0x59, 0xa6, 0xa1, 0x30, 0x58, 0xa3, 0xa2, 0x3b, 0xd5, 0x4e, 0x10, 0xf3, 0x75, 0xcc, + 0x59, 0x17, 0x79, 0x24, 0x46, 0xd2, 0x9d, 0xea, 0x6d, 0x1d, 0x89, 0x4d, 0x5a, 0xfb, 0x77, 0x6a, + 0x00, 0xa9, 0xa5, 0x84, 0xde, 0xef, 0x9e, 0xa1, 0x9f, 0x2a, 0x6b, 0x66, 0x3d, 0xbc, 0xe9, 0x89, + 0xbe, 0x69, 0xc1, 0xa8, 0xe3, 0xfb, 0x61, 0xcb, 0x49, 0x58, 0x8f, 0x2a, 0x65, 0x75, 0x85, 0x68, + 0xc9, 0x7c, 0x5a, 0x96, 0x37, 0xe6, 0x05, 0x79, 0xb8, 0xa7, 0x61, 0x0a, 0xdb, 0xa3, 0x37, 0x01, + 0x7d, 0x52, 0x5a, 0xd8, 0xfc, 0xa3, 0xcc, 0x64, 0x2d, 0xec, 0x1a, 0xd3, 0x90, 0x9a, 0x71, 0x8d, + 0xde, 0x35, 0x52, 0x26, 0x0c, 0x94, 0xb9, 0xa2, 0x6b, 0xd8, 0x0e, 0x45, 0xd9, 0x12, 0xd0, 0x17, + 0xf5, 0x80, 0xe0, 0xc1, 0x32, 0xf7, 0x5f, 0x35, 0x13, 0xb6, 0x20, 0x18, 0x38, 0x81, 0x49, 0xd7, + 0x5c, 0x2b, 0x45, 0x84, 0xd7, 0xe5, 0xe2, 0x1a, 0x32, 0x8b, 0x6c, 0xba, 0x3a, 0x66, 0x10, 0x38, + 0x5b, 0x05, 0xfa, 0x22, 0x0f, 0xd7, 0x5e, 0x09, 0x36, 0x42, 0x11, 0xe4, 0x75, 0xb1, 0xc4, 0x37, + 0xdf, 0x8d, 0x13, 0xb2, 0x4d, 0xcb, 0xa4, 0xab, 0xe1, 0x4d, 0xc1, 0x05, 0x2b, 0x7e, 0x68, 0x0d, + 0x86, 0xd8, 0xe5, 0x92, 0x78, 0x7a, 0xa4, 0x8c, 0xb7, 0xcc, 0xbc, 0x56, 0x99, 0xda, 0x20, 0xec, + 0x6f, 0x8c, 0x05, 0x2f, 0x74, 0x4d, 0x5e, 0x43, 0x8e, 0x57, 0x82, 0xdb, 0x31, 0x61, 0xd7, 0x90, + 0x6b, 0x0b, 0x1f, 0x4f, 0xef, 0x15, 0x73, 0x78, 0x6e, 0x92, 0x28, 0xa3, 0x24, 0x35, 0x45, 0xc4, + 0x7f, 0x99, 0x7b, 0x6a, 0x1a, 0xca, 0x34, 0xd4, 0xcc, 0x54, 0x95, 0x0e, 0xf6, 0x9b, 0x26, 0x33, + 0x9c, 0xe5, 0x7e, 0x8c, 0x6b, 0xe0, 0x8c, 0x0f, 0x53, 0xd9, 0x29, 0x79, 0x84, 0x2b, 0xee, 0x1f, + 0x0f, 0xc0, 0x84, 0x29, 0x18, 0xe8, 0x12, 0xd4, 0xb6, 0x59, 0x66, 0xa8, 0x34, 0x1f, 0x8d, 0x92, + 0xff, 0x55, 0x89, 0xc0, 0x29, 0x0d, 0xcb, 0xcc, 0xc3, 0x8a, 0x6b, 0xa1, 0x37, 0x69, 0x66, 0x1e, + 0x85, 0xc1, 0x1a, 0x15, 0xb5, 0x5b, 0xd7, 0xc3, 0x30, 0x51, 0x8a, 0x5b, 0xc9, 0xcc, 0x02, 0x83, + 0x62, 0x81, 0xa5, 0x0a, 0xfb, 0x2e, 0xed, 0x90, 0x6f, 0xba, 0xfd, 0x94, 0xc2, 0xbe, 0xae, 0x23, + 0xb1, 0x49, 0x4b, 0x17, 0xa0, 0x30, 0x66, 0x42, 0x28, 0xac, 0xe3, 0x34, 0x94, 0xa9, 0xc9, 0x2f, + 0x5b, 0x49, 0x3c, 0xfa, 0x02, 0x3c, 0xa6, 0xee, 0x46, 0x61, 0xee, 0x46, 0x95, 0x35, 0x0e, 0x19, + 0x5b, 0xdc, 0xc7, 0x16, 0xf3, 0xc9, 0x70, 0xaf, 0xf2, 0xe8, 0x75, 0x98, 0x10, 0x96, 0xad, 0xe4, + 0x38, 0x6c, 0x9e, 0x74, 0x5f, 0x37, 0xb0, 0x38, 0x43, 0x8d, 0xea, 0x30, 0x45, 0x21, 0xcc, 0xa2, + 0x94, 0x1c, 0xf8, 0x1d, 0x2f, 0xb5, 0x32, 0x5f, 0xcf, 0xe0, 0x71, 0x57, 0x09, 0x34, 0x0f, 0x93, + 0xdc, 0xb6, 0xa0, 0x1b, 0x39, 0xf6, 0x1d, 0x44, 0x50, 0xa6, 0x9a, 0x04, 0xb7, 0x4c, 0x34, 0xce, + 0xd2, 0xa3, 0x57, 0x60, 0xcc, 0x89, 0x5a, 0x5b, 0x5e, 0x42, 0x5a, 0x49, 0x27, 0xe2, 0x17, 0xfc, + 0xb5, 0x50, 0x81, 0x79, 0x0d, 0x87, 0x0d, 0x4a, 0xfb, 0xab, 0x70, 0x32, 0x27, 0xf6, 0x9b, 0x0a, + 0x8e, 0xd3, 0xf6, 0x64, 0x9f, 0x32, 0x41, 0x49, 0xf3, 0x8d, 0x15, 0xd9, 0x1b, 0x8d, 0x8a, 0x4a, + 0x27, 0xf3, 0x1f, 0x6b, 0x69, 0xe2, 0x94, 0x74, 0x2e, 0x4b, 0x04, 0x4e, 0x69, 0xec, 0xff, 0x51, + 0x03, 0xcd, 0xdb, 0x52, 0x22, 0x14, 0xe5, 0x15, 0x18, 0x93, 0x99, 0x0f, 0xb5, 0x8c, 0x63, 0xaa, + 0x9b, 0x57, 0x35, 0x1c, 0x36, 0x28, 0x69, 0xdb, 0x02, 0xe9, 0x3b, 0xca, 0x86, 0x40, 0x29, 0xa7, + 0x12, 0x4e, 0x69, 0xd0, 0x45, 0x18, 0x89, 0x89, 0xbf, 0x71, 0xc3, 0x0b, 0xee, 0x0a, 0xc1, 0x56, + 0x5a, 0xb9, 0x29, 0xe0, 0x58, 0x51, 0xa0, 0xcf, 0x41, 0xb5, 0xe3, 0xb9, 0x42, 0x94, 0xe7, 0xa4, + 0xdd, 0x79, 0x7b, 0xa5, 0xfe, 0x60, 0x6f, 0x76, 0x36, 0x3f, 0x9d, 0x23, 0xdd, 0x4d, 0xc7, 0x73, + 0x74, 0xf2, 0xd1, 0xa2, 0x79, 0x6e, 0xf4, 0xa1, 0x3e, 0xdd, 0xe8, 0x57, 0x00, 0x44, 0x9f, 0xa5, + 0x24, 0x57, 0xd3, 0x6f, 0x76, 0x55, 0x61, 0xb0, 0x46, 0x45, 0xf7, 0xe4, 0xad, 0x88, 0x38, 0x72, + 0xd3, 0xca, 0x03, 0x93, 0x47, 0x3e, 0xc4, 0x9e, 0x7c, 0x31, 0xcb, 0x0d, 0x77, 0x57, 0x80, 0xda, + 0x70, 0xc2, 0xa5, 0xf3, 0xc8, 0xa8, 0xb5, 0x76, 0x88, 0x70, 0x68, 0x5a, 0x63, 0x3d, 0xcb, 0x09, + 0x77, 0x33, 0x47, 0xef, 0xc0, 0x8c, 0x04, 0x76, 0xdf, 0x7e, 0x64, 0xd3, 0xa5, 0xba, 0x70, 0x76, + 0x7f, 0x6f, 0x76, 0xa6, 0xde, 0x93, 0x0a, 0x1f, 0xc0, 0x01, 0xbd, 0x0d, 0x43, 0xec, 0xe0, 0x25, + 0x9e, 0x1e, 0x65, 0xab, 0xdd, 0x8b, 0x65, 0xfd, 0x8e, 0x73, 0xec, 0xf8, 0x46, 0xc4, 0x73, 0xa6, + 0x87, 0x59, 0x0c, 0x88, 0x05, 0x4f, 0xd4, 0x86, 0x51, 0x27, 0x08, 0xc2, 0xc4, 0xe1, 0x46, 0xd8, + 0x58, 0x19, 0x3b, 0x52, 0xab, 0x62, 0x3e, 0x2d, 0xcb, 0xeb, 0x51, 0x41, 0x62, 0x1a, 0x06, 0xeb, + 0x55, 0xd0, 0x65, 0x3c, 0xbc, 0x47, 0x15, 0xa6, 0x3c, 0x7b, 0x88, 0xa7, 0xc7, 0xcb, 0x2c, 0xe3, + 0xb7, 0x8c, 0x42, 0x9a, 0x06, 0x33, 0x99, 0xe1, 0x2c, 0x77, 0x34, 0x67, 0xb8, 0x93, 0x27, 0xd2, + 0x68, 0xe5, 0xd4, 0x9d, 0xac, 0x7b, 0x8f, 0xd9, 0xcd, 0x5a, 0x1e, 0xa1, 0xc8, 0x34, 0xc1, 0x64, + 0xe6, 0x66, 0x6d, 0x8a, 0xc2, 0x3a, 0xdd, 0xcc, 0xa7, 0x61, 0x54, 0x1b, 0xf0, 0x7e, 0xc2, 0x62, + 0x67, 0x5e, 0x87, 0xa9, 0xec, 0x40, 0xf6, 0x15, 0x56, 0xfb, 0xbf, 0x2a, 0x30, 0x99, 0x73, 0xa0, + 0x73, 0xd7, 0x63, 0x81, 0xe3, 0x86, 0xca, 0xbb, 0xee, 0x05, 0x2e, 0x66, 0x18, 0x53, 0x71, 0x55, + 0x4a, 0x28, 0x2e, 0xa9, 0x45, 0xab, 0x3d, 0xb5, 0xa8, 0x50, 0x56, 0x03, 0x87, 0x57, 0x56, 0xe6, + 0xea, 0x30, 0x58, 0x6a, 0x75, 0x78, 0x08, 0x0a, 0xce, 0x58, 0x60, 0x86, 0x4b, 0x2c, 0x30, 0x0f, + 0x2c, 0x98, 0x30, 0x25, 0xaf, 0xc4, 0x88, 0x3f, 0xaa, 0x03, 0x38, 0xc7, 0x36, 0x62, 0x49, 0x14, + 0xfa, 0x3e, 0x89, 0x44, 0xc0, 0xdc, 0x84, 0xd8, 0x57, 0x09, 0x28, 0xd6, 0x28, 0xec, 0x6f, 0x57, + 0x60, 0x2a, 0x8d, 0x9e, 0x16, 0x19, 0x60, 0x8f, 0xee, 0x84, 0x64, 0xcd, 0x38, 0x21, 0x29, 0x4a, + 0xec, 0x9a, 0x69, 0x57, 0xcf, 0xd3, 0x92, 0xb7, 0x33, 0xa7, 0x25, 0x2f, 0xf6, 0xc9, 0xf7, 0xe0, + 0x93, 0x93, 0x7f, 0x5e, 0x81, 0xd3, 0xd9, 0x22, 0x8b, 0xbe, 0xe3, 0x6d, 0x1f, 0xe1, 0x38, 0x7d, + 0xc1, 0x18, 0xa7, 0x97, 0xfb, 0xeb, 0x0f, 0x6b, 0x5c, 0xcf, 0xc1, 0x72, 0x32, 0x83, 0xf5, 0xe9, + 0xc3, 0x30, 0x3f, 0x78, 0xc4, 0x7e, 0xd7, 0x82, 0xc7, 0x73, 0xcb, 0x1d, 0x87, 0x27, 0xf8, 0x2d, + 0xd3, 0x13, 0xfc, 0xc2, 0x21, 0xba, 0xd7, 0xc3, 0x35, 0xfc, 0xdf, 0x2a, 0x3d, 0xba, 0xc5, 0xbc, + 0x65, 0xb7, 0x60, 0xd4, 0x69, 0xb5, 0x48, 0x1c, 0xaf, 0x86, 0xae, 0x4a, 0x49, 0xf4, 0x3c, 0x5b, + 0x3f, 0x53, 0xf0, 0x83, 0xbd, 0xd9, 0x99, 0x2c, 0x8b, 0x14, 0x8d, 0x75, 0x0e, 0x66, 0x6a, 0xb1, + 0xca, 0x11, 0xa5, 0x16, 0xbb, 0x02, 0xb0, 0xa3, 0x76, 0xe9, 0x59, 0x27, 0x9c, 0xb6, 0x7f, 0xd7, + 0xa8, 0xd0, 0x3b, 0xcc, 0xea, 0xe5, 0x91, 0x22, 0x03, 0x85, 0x13, 0xce, 0xf8, 0x80, 0x7a, 0xd8, + 0x09, 0xbf, 0x3a, 0xaa, 0x3c, 0x96, 0x8a, 0xa7, 0xfd, 0xdd, 0x2a, 0x7c, 0xf4, 0x00, 0xb1, 0x43, + 0xf3, 0xe6, 0x01, 0xf0, 0x73, 0x59, 0xf7, 0xd4, 0x4c, 0x6e, 0x61, 0xc3, 0x5f, 0x95, 0xf9, 0x58, + 0x95, 0x0f, 0xfd, 0xb1, 0xbe, 0xa5, 0x3b, 0x13, 0x79, 0xc4, 0xe7, 0xd5, 0x43, 0x4f, 0xac, 0x9f, + 0x4e, 0xe7, 0xff, 0xd7, 0x2d, 0xf8, 0x58, 0x6e, 0xa7, 0x8c, 0x38, 0x93, 0x4b, 0x50, 0x6b, 0x51, + 0xa0, 0x76, 0x25, 0x27, 0xbd, 0x69, 0x27, 0x11, 0x38, 0xa5, 0x31, 0xc2, 0x49, 0x2a, 0x85, 0xe1, + 0x24, 0xff, 0xc1, 0x82, 0x53, 0xd9, 0x46, 0x1c, 0x87, 0xd6, 0x69, 0x9a, 0x5a, 0x67, 0xae, 0xbf, + 0x6f, 0xdf, 0x43, 0xe1, 0x7c, 0x7b, 0x1c, 0xce, 0x74, 0x2d, 0x56, 0x7c, 0x18, 0x7f, 0xd6, 0x82, + 0x13, 0x9b, 0x6c, 0x7f, 0xa1, 0x5d, 0x7c, 0x12, 0x1d, 0x2b, 0xb8, 0x2d, 0x76, 0xe0, 0x7d, 0x29, + 0xbe, 0x5b, 0xea, 0x22, 0xc1, 0xdd, 0x95, 0xa1, 0x6f, 0x58, 0x70, 0xca, 0xb9, 0x17, 0x77, 0x3d, + 0x27, 0x20, 0xe4, 0xe8, 0xf5, 0x02, 0x57, 0x5e, 0xc1, 0x43, 0x04, 0x0b, 0xd3, 0xfb, 0x7b, 0xb3, + 0xa7, 0xf2, 0xa8, 0x70, 0x6e, 0xad, 0xe8, 0x6d, 0x91, 0x86, 0x8d, 0x9a, 0x7d, 0xa5, 0xae, 0xf0, + 0xe5, 0x5d, 0xc3, 0xe0, 0x3a, 0x49, 0x62, 0xb0, 0xe2, 0x88, 0xbe, 0x0c, 0xb5, 0x4d, 0x79, 0xd7, + 0x49, 0x28, 0xbd, 0x82, 0x95, 0x25, 0xf7, 0x6a, 0x14, 0x0f, 0xf6, 0x57, 0x28, 0x9c, 0x32, 0x45, + 0xd7, 0xa0, 0x1a, 0x6c, 0xc4, 0xe2, 0xda, 0x72, 0x51, 0x38, 0x91, 0x19, 0xbc, 0xc5, 0x2f, 0x62, + 0xde, 0x5c, 0x6e, 0x62, 0xca, 0x82, 0x72, 0x8a, 0xd6, 0x5d, 0xe1, 0xc3, 0x2e, 0xe0, 0x84, 0x17, + 0xea, 0xdd, 0x9c, 0xf0, 0x42, 0x1d, 0x53, 0x16, 0x2c, 0x6e, 0x31, 0x6e, 0xc5, 0x9e, 0x70, 0x50, + 0x17, 0xdc, 0x69, 0xef, 0xba, 0x9c, 0xc2, 0x33, 0xf2, 0x31, 0x30, 0xe6, 0x8c, 0xd0, 0x1a, 0x0c, + 0xb5, 0x58, 0x06, 0x6d, 0xe1, 0x3f, 0x28, 0xca, 0xab, 0xdc, 0x95, 0x6d, 0x9b, 0x1f, 0xa4, 0x71, + 0x38, 0x16, 0xbc, 0x18, 0x57, 0xd2, 0xde, 0xda, 0x88, 0x85, 0x7f, 0xa0, 0x88, 0x6b, 0x57, 0x2e, + 0x74, 0xc1, 0x95, 0xc1, 0xb1, 0xe0, 0x85, 0xea, 0x50, 0xd9, 0x68, 0x89, 0x34, 0x98, 0x05, 0x3b, + 0x5a, 0xf3, 0x56, 0xed, 0xc2, 0xd0, 0xfe, 0xde, 0x6c, 0x65, 0x79, 0x11, 0x57, 0x36, 0x5a, 0xe8, + 0x2d, 0x18, 0xde, 0xe0, 0xf7, 0x24, 0x45, 0xca, 0xcb, 0xcb, 0x45, 0x97, 0x39, 0xbb, 0x2e, 0x55, + 0xf2, 0x0b, 0x1d, 0x02, 0x81, 0x25, 0x3b, 0xf4, 0x0e, 0xc0, 0x86, 0xba, 0xf9, 0x29, 0x72, 0x5e, + 0xce, 0xf5, 0x77, 0x53, 0x54, 0xec, 0x9e, 0x15, 0x14, 0x6b, 0x1c, 0xa9, 0xcc, 0x3b, 0xf2, 0x11, + 0x00, 0x96, 0xef, 0xb2, 0x50, 0xe6, 0x73, 0xdf, 0x0c, 0xe0, 0x32, 0xaf, 0x50, 0x38, 0x65, 0x8a, + 0x3a, 0x30, 0xbe, 0x13, 0xb7, 0xb7, 0x88, 0x9c, 0xfa, 0x2c, 0x09, 0xe6, 0xe8, 0x95, 0xd7, 0x0a, + 0x32, 0x9b, 0x8a, 0x22, 0x5e, 0x94, 0x74, 0x1c, 0xbf, 0x4b, 0x83, 0xb1, 0x6c, 0x52, 0x6f, 0xea, + 0x6c, 0xb1, 0x59, 0x0b, 0xfd, 0x24, 0xef, 0x75, 0xc2, 0xf5, 0xdd, 0x84, 0x88, 0x24, 0x99, 0x05, + 0x9f, 0xe4, 0x0d, 0x4e, 0xdc, 0xfd, 0x49, 0x04, 0x02, 0x4b, 0x76, 0x6a, 0xc8, 0x98, 0x36, 0x9e, + 0x2a, 0x3d, 0x64, 0x5d, 0x7d, 0x48, 0x87, 0x8c, 0x69, 0xdf, 0x94, 0x29, 0xd3, 0xba, 0xed, 0xad, + 0x30, 0x09, 0x83, 0x8c, 0xee, 0x3f, 0x51, 0x46, 0xeb, 0x36, 0x72, 0x4a, 0x76, 0x6b, 0xdd, 0x3c, + 0x2a, 0x9c, 0x5b, 0xab, 0xfd, 0x07, 0x83, 0xdd, 0xeb, 0x2d, 0x33, 0x87, 0x7f, 0xa9, 0xfb, 0x74, + 0xf5, 0x73, 0xfd, 0x6f, 0xf7, 0x1e, 0xe2, 0x39, 0xeb, 0x37, 0x2c, 0x38, 0xd3, 0xce, 0x5d, 0x4c, + 0xc5, 0x82, 0xd5, 0xef, 0xae, 0x91, 0x0f, 0x98, 0xca, 0x00, 0x9b, 0x8f, 0xc7, 0x3d, 0xea, 0xcc, + 0x5a, 0xa0, 0xd5, 0x0f, 0x6d, 0x81, 0xde, 0x81, 0x11, 0x66, 0x34, 0xa5, 0x29, 0x48, 0xfa, 0xcc, + 0xda, 0xc1, 0x96, 0xbe, 0x45, 0xc1, 0x02, 0x2b, 0x66, 0x74, 0xe0, 0x9e, 0xcc, 0x76, 0x02, 0x13, + 0x86, 0x16, 0xa9, 0x6b, 0xb9, 0x6b, 0x62, 0x59, 0x8c, 0xc4, 0x93, 0x8d, 0x83, 0x88, 0x1f, 0x14, + 0x11, 0xe0, 0x83, 0x2b, 0x3b, 0x4e, 0x8b, 0xf6, 0x9f, 0x58, 0x39, 0xf6, 0x17, 0xdf, 0x83, 0xbc, + 0x66, 0xee, 0x41, 0xce, 0x67, 0xf7, 0x20, 0x5d, 0x1e, 0x03, 0x63, 0xfb, 0x51, 0x3e, 0x7d, 0x63, + 0xd9, 0x1c, 0x29, 0xb6, 0x0f, 0xe7, 0x8a, 0x26, 0x37, 0x8b, 0x63, 0x72, 0xd5, 0xa1, 0x60, 0x1a, + 0xc7, 0xe4, 0xae, 0xd4, 0x31, 0xc3, 0x94, 0xbd, 0x05, 0x6f, 0xff, 0x1f, 0x0b, 0xaa, 0x8d, 0xd0, + 0x3d, 0x42, 0x0f, 0xc8, 0x55, 0xc3, 0x03, 0xf2, 0x74, 0xe1, 0xd3, 0x47, 0x3d, 0xfd, 0x1d, 0xb7, + 0x32, 0xfe, 0x8e, 0x4f, 0x14, 0xb3, 0x3a, 0xd8, 0xbb, 0xf1, 0xbd, 0x2a, 0xe8, 0x8f, 0x37, 0xa1, + 0xdf, 0x3e, 0x4c, 0x64, 0x6b, 0xb5, 0xdc, 0x7b, 0x4e, 0xa2, 0x0e, 0x16, 0x00, 0x25, 0xaf, 0xbd, + 0xfd, 0xd4, 0x06, 0xb8, 0xde, 0x21, 0xde, 0xe6, 0x56, 0x42, 0xdc, 0x6c, 0xc7, 0x8e, 0x2f, 0xc0, + 0xf5, 0xbf, 0x5b, 0x30, 0x99, 0xa9, 0x1d, 0x6d, 0xe7, 0xdd, 0x9c, 0x39, 0xac, 0x4b, 0xe3, 0x44, + 0xe1, 0x5d, 0x9b, 0x39, 0x00, 0xe5, 0x86, 0x97, 0x8e, 0x07, 0x66, 0x84, 0x29, 0x3f, 0x7d, 0x8c, + 0x35, 0x0a, 0xf4, 0x12, 0x8c, 0x26, 0x61, 0x3b, 0xf4, 0xc3, 0xcd, 0xdd, 0xeb, 0x44, 0x26, 0x66, + 0x50, 0x47, 0x18, 0x6b, 0x29, 0x0a, 0xeb, 0x74, 0xf6, 0x0f, 0xaa, 0x90, 0x7d, 0xfb, 0xeb, 0xcf, + 0x05, 0xf5, 0xa7, 0x47, 0x50, 0x7f, 0xcf, 0x82, 0x29, 0x5a, 0x3b, 0x8b, 0x5f, 0x91, 0x61, 0xa8, + 0x2a, 0xeb, 0xba, 0x75, 0x40, 0xd6, 0xf5, 0xf3, 0x54, 0xdd, 0xb9, 0x61, 0x47, 0x66, 0x02, 0xd2, + 0xb4, 0x18, 0x85, 0x62, 0x81, 0x15, 0x74, 0x24, 0x8a, 0xc4, 0x1d, 0x1d, 0x9d, 0x8e, 0x44, 0x11, + 0x16, 0x58, 0x99, 0x94, 0x7d, 0x20, 0x3f, 0x29, 0x3b, 0x4f, 0x9c, 0x24, 0xe2, 0x26, 0x84, 0x1d, + 0xa0, 0x25, 0x4e, 0x92, 0x01, 0x15, 0x29, 0x8d, 0xfd, 0x2f, 0xab, 0x30, 0xd6, 0x08, 0xdd, 0x34, + 0xc4, 0xfc, 0x45, 0x23, 0xc4, 0xfc, 0x5c, 0x26, 0xc4, 0x7c, 0x4a, 0xa7, 0x7d, 0x38, 0x11, 0xe6, + 0x22, 0xc5, 0x16, 0x7b, 0x36, 0xe0, 0xb0, 0xd1, 0xe5, 0x46, 0x8a, 0x2d, 0xc5, 0x09, 0x9b, 0x8c, + 0xff, 0x4c, 0x45, 0x95, 0xff, 0x89, 0x05, 0x13, 0x8d, 0xd0, 0xa5, 0x22, 0xfa, 0x67, 0x49, 0x1e, + 0xf5, 0xc4, 0x5c, 0x43, 0x07, 0x24, 0xe6, 0xfa, 0x35, 0x0b, 0x86, 0x1b, 0xa1, 0x7b, 0x1c, 0xae, + 0xc4, 0x65, 0xd3, 0x95, 0xf8, 0xb1, 0x42, 0xe5, 0xdb, 0xc3, 0x7b, 0xf8, 0x9b, 0x55, 0x18, 0xa7, + 0x4d, 0x0e, 0x37, 0xe5, 0x07, 0x33, 0x06, 0xc7, 0x2a, 0x31, 0x38, 0xd4, 0x1c, 0x0c, 0x7d, 0x3f, + 0xbc, 0x97, 0xfd, 0x78, 0xcb, 0x0c, 0x8a, 0x05, 0x16, 0x5d, 0x84, 0x91, 0x76, 0x44, 0x76, 0xbc, + 0xb0, 0x13, 0x67, 0xaf, 0xfc, 0x35, 0x04, 0x1c, 0x2b, 0x0a, 0xf4, 0x22, 0x8c, 0xc5, 0x5e, 0xd0, + 0x22, 0x32, 0xb0, 0x62, 0x80, 0x05, 0x56, 0xf0, 0xfc, 0x87, 0x1a, 0x1c, 0x1b, 0x54, 0xe8, 0x2d, + 0xa8, 0xb1, 0xff, 0x6c, 0x0e, 0x1d, 0x22, 0x53, 0x3c, 0x4f, 0xce, 0x25, 0x39, 0xe0, 0x94, 0x19, + 0xba, 0x02, 0x90, 0xc8, 0x18, 0x90, 0x58, 0x9c, 0x99, 0x2a, 0xe3, 0x54, 0x45, 0x87, 0xc4, 0x58, + 0xa3, 0x42, 0xcf, 0x41, 0x2d, 0x71, 0x3c, 0xff, 0x86, 0x17, 0x90, 0x58, 0x44, 0xd1, 0x88, 0x3c, + 0xbe, 0x02, 0x88, 0x53, 0x3c, 0x5d, 0xf3, 0xd9, 0x85, 0x63, 0xfe, 0x0e, 0xc5, 0x08, 0xa3, 0x66, + 0x6b, 0xfe, 0x0d, 0x05, 0xc5, 0x1a, 0x85, 0xfd, 0x02, 0x5b, 0xbb, 0xfb, 0xbc, 0x82, 0xf0, 0x93, + 0x0a, 0xa0, 0x06, 0x8b, 0x35, 0x31, 0x9e, 0xea, 0xd8, 0x82, 0x89, 0x98, 0xdc, 0xf0, 0x82, 0xce, + 0x7d, 0xc1, 0xaa, 0xdc, 0xa5, 0x8f, 0xe6, 0x92, 0x5e, 0x86, 0x5f, 0xb2, 0x35, 0x61, 0x38, 0xc3, + 0x97, 0x0e, 0x49, 0xd4, 0x09, 0xe6, 0xe3, 0xdb, 0x31, 0x89, 0xc4, 0x63, 0x1b, 0x6c, 0x48, 0xb0, + 0x04, 0xe2, 0x14, 0x4f, 0x65, 0x80, 0xfd, 0xb9, 0x19, 0x06, 0x38, 0x0c, 0x13, 0x29, 0x35, 0x2c, + 0xf3, 0xba, 0x06, 0xc7, 0x06, 0x15, 0x5a, 0x06, 0x14, 0x77, 0xda, 0x6d, 0x9f, 0x1d, 0x6d, 0x39, + 0xfe, 0xd5, 0x28, 0xec, 0xb4, 0x79, 0xb8, 0xb1, 0x48, 0x5a, 0xde, 0xec, 0xc2, 0xe2, 0x9c, 0x12, + 0x74, 0xd2, 0x6f, 0xc4, 0xec, 0xb7, 0xb8, 0x44, 0xcc, 0x1d, 0x6c, 0x4d, 0x06, 0xc2, 0x12, 0x67, + 0x77, 0xd8, 0x52, 0xc5, 0x1e, 0x41, 0x48, 0x3a, 0x11, 0x41, 0x04, 0xc6, 0xdb, 0x6c, 0x39, 0x92, + 0xe7, 0xeb, 0xa5, 0x86, 0x32, 0x13, 0xed, 0xc2, 0x93, 0x9d, 0xeb, 0x6c, 0xb0, 0xc9, 0xd5, 0xfe, + 0x4f, 0xc0, 0x74, 0x8d, 0x38, 0x55, 0x1c, 0x16, 0xb1, 0xac, 0xc2, 0x16, 0xfb, 0x78, 0x99, 0x57, + 0x7f, 0x52, 0x3d, 0x2e, 0x22, 0x63, 0xb1, 0xe4, 0x82, 0xbe, 0xc4, 0x03, 0x04, 0xd8, 0xfc, 0x2e, + 0xff, 0x14, 0x17, 0xa7, 0x37, 0xa2, 0xb4, 0x05, 0x0b, 0xac, 0xb1, 0x43, 0x37, 0x60, 0x5c, 0x64, + 0xca, 0x17, 0x9e, 0x81, 0xaa, 0xb1, 0x3b, 0x1e, 0xc7, 0x3a, 0xf2, 0x41, 0x16, 0x80, 0xcd, 0xc2, + 0x68, 0x13, 0x9e, 0xd4, 0x9e, 0xcf, 0xc9, 0x89, 0xc8, 0xe2, 0x8a, 0xe3, 0x63, 0xfb, 0x7b, 0xb3, + 0x4f, 0xae, 0x1d, 0x44, 0x88, 0x0f, 0xe6, 0x83, 0x6e, 0xc1, 0x69, 0xa7, 0x95, 0x78, 0x3b, 0xa4, + 0x4e, 0x1c, 0xd7, 0xf7, 0x02, 0x62, 0xde, 0x30, 0x7f, 0x7c, 0x7f, 0x6f, 0xf6, 0xf4, 0x7c, 0x1e, + 0x01, 0xce, 0x2f, 0x87, 0x5e, 0x83, 0x9a, 0x1b, 0xc4, 0x62, 0x0c, 0x86, 0x8c, 0x97, 0x82, 0x6a, + 0xf5, 0x9b, 0x4d, 0xd5, 0xff, 0xf4, 0x0f, 0x4e, 0x0b, 0xa0, 0xf7, 0xf8, 0x03, 0xc6, 0x6a, 0x43, + 0xc2, 0x5f, 0xa8, 0x7a, 0xb9, 0xd4, 0x16, 0xd8, 0xb8, 0x05, 0xc2, 0x9d, 0x66, 0x2a, 0xf2, 0xd1, + 0xb8, 0x20, 0x62, 0x54, 0x81, 0x3e, 0x0f, 0x28, 0x26, 0xd1, 0x8e, 0xd7, 0x22, 0xf3, 0x2d, 0x96, + 0xf9, 0x93, 0x1d, 0xcf, 0x8d, 0x18, 0xe1, 0xff, 0xa8, 0xd9, 0x45, 0x81, 0x73, 0x4a, 0xa1, 0x6b, + 0x54, 0xe3, 0xe8, 0x50, 0x11, 0xa8, 0x2a, 0x4d, 0xbb, 0xe9, 0x3a, 0x69, 0x47, 0xa4, 0xe5, 0x24, + 0xc4, 0x35, 0x39, 0xe2, 0x4c, 0x39, 0xba, 0xac, 0xa8, 0x8c, 0xe6, 0x60, 0x86, 0x57, 0x76, 0x67, + 0x35, 0xa7, 0x3b, 0xa5, 0xad, 0x30, 0x4e, 0x6e, 0x92, 0xe4, 0x5e, 0x18, 0xdd, 0x65, 0xce, 0xf6, + 0x11, 0x2d, 0xd3, 0x59, 0x8a, 0xc2, 0x3a, 0x1d, 0xb5, 0x81, 0xd8, 0x29, 0xcf, 0x4a, 0x9d, 0xb9, + 0xd0, 0x47, 0xd2, 0xb9, 0x73, 0x8d, 0x83, 0xb1, 0xc4, 0x4b, 0xd2, 0x95, 0xc6, 0x22, 0x73, 0x87, + 0x67, 0x48, 0x57, 0x1a, 0x8b, 0x58, 0xe2, 0x51, 0xd8, 0xfd, 0x1e, 0xd3, 0x44, 0x99, 0xa3, 0x89, + 0x6e, 0x0d, 0x5e, 0xf2, 0x49, 0xa6, 0xfb, 0x30, 0xa5, 0xde, 0x84, 0xe2, 0x29, 0x28, 0xe3, 0xe9, + 0xc9, 0x32, 0xcf, 0x27, 0xe7, 0x66, 0xb2, 0x54, 0x91, 0xc9, 0x2b, 0x19, 0x9e, 0xb8, 0xab, 0x16, + 0x23, 0x53, 0xc2, 0x54, 0x61, 0x96, 0xfa, 0x4b, 0x50, 0x8b, 0x3b, 0xeb, 0x6e, 0xb8, 0xed, 0x78, + 0x01, 0xf3, 0x59, 0xeb, 0x8f, 0x01, 0x4b, 0x04, 0x4e, 0x69, 0x66, 0x3e, 0x0b, 0x27, 0xba, 0x64, + 0xba, 0xaf, 0x90, 0xba, 0x5f, 0x1a, 0x80, 0x9a, 0xf2, 0xea, 0xa0, 0x4b, 0xa6, 0xe3, 0xee, 0xf1, + 0xac, 0xe3, 0x6e, 0x84, 0xae, 0xbc, 0xba, 0xaf, 0xee, 0x9d, 0x9c, 0xd7, 0x40, 0x9f, 0x2d, 0xfc, + 0x88, 0xe5, 0x6f, 0xb6, 0xf4, 0xf1, 0x56, 0x6a, 0x6a, 0xd6, 0x0f, 0x1c, 0x68, 0xd6, 0x97, 0x7c, + 0xec, 0x89, 0x1a, 0xf0, 0xed, 0xd0, 0x5d, 0x69, 0x64, 0x1f, 0x32, 0x69, 0x50, 0x20, 0xe6, 0x38, + 0x66, 0x77, 0x51, 0xa5, 0xcc, 0xec, 0xae, 0xe1, 0xc3, 0xda, 0x5d, 0x92, 0x03, 0x4e, 0x99, 0xa1, + 0x1d, 0x38, 0xd1, 0x32, 0x1f, 0xa6, 0x51, 0x17, 0x56, 0x9e, 0xef, 0xe3, 0x61, 0x98, 0x8e, 0x96, + 0x84, 0x7f, 0x31, 0xcb, 0x0f, 0x77, 0x57, 0x61, 0xff, 0x80, 0x7b, 0x81, 0xc4, 0xb6, 0x90, 0xc4, + 0x1d, 0xff, 0x28, 0x73, 0x6a, 0xdf, 0x32, 0x76, 0xaa, 0x0f, 0xc1, 0xff, 0xf8, 0x5b, 0x16, 0xf3, + 0x3f, 0xae, 0x91, 0xed, 0xb6, 0xef, 0x24, 0x47, 0x19, 0xad, 0xf7, 0x25, 0x18, 0x49, 0x44, 0x2d, + 0xe5, 0x12, 0x81, 0x6b, 0xcd, 0x62, 0xfe, 0x58, 0xa5, 0x08, 0x24, 0x14, 0x2b, 0x86, 0xf6, 0xbf, + 0xe1, 0x5f, 0x41, 0x62, 0x8e, 0x63, 0x67, 0x75, 0xd3, 0xdc, 0x59, 0x3d, 0x53, 0xba, 0x33, 0x3d, + 0x76, 0x58, 0xdf, 0x35, 0xbb, 0xc0, 0x0c, 0xb6, 0x47, 0xdf, 0x23, 0x6e, 0xaf, 0x82, 0xf9, 0xd8, + 0x0e, 0x7a, 0x8d, 0x87, 0xaa, 0x72, 0x8d, 0xf8, 0x6c, 0x9f, 0x61, 0xaa, 0xf6, 0x6f, 0x54, 0xe0, + 0x54, 0xde, 0x1b, 0xfc, 0xc8, 0x85, 0xb1, 0xb6, 0x66, 0x3e, 0x97, 0xcb, 0xe7, 0xa0, 0x1b, 0xdc, + 0xa9, 0xe9, 0xa2, 0x43, 0xb1, 0xc1, 0x15, 0x11, 0x18, 0x23, 0x3b, 0x5e, 0x4b, 0xb9, 0x57, 0x2a, + 0xfd, 0xab, 0x28, 0x55, 0xcd, 0x92, 0xc6, 0x08, 0x1b, 0x6c, 0x8f, 0x20, 0x57, 0xbd, 0xfd, 0x8f, + 0x2c, 0x78, 0xac, 0x47, 0xd2, 0x07, 0x5a, 0xdd, 0x3d, 0xe6, 0x85, 0x14, 0x8f, 0x39, 0xa9, 0xea, + 0xb8, 0x6f, 0x12, 0x0b, 0x2c, 0x5a, 0x07, 0xe0, 0xbe, 0x45, 0xf6, 0xc2, 0x6d, 0xa5, 0x4c, 0x0c, + 0x40, 0xd7, 0xcd, 0x6a, 0xed, 0xd2, 0xad, 0x7a, 0xd3, 0x56, 0xe3, 0x6a, 0x7f, 0xa7, 0x0a, 0x83, + 0xfc, 0x91, 0xcd, 0x06, 0x0c, 0x6f, 0xf1, 0x1c, 0x93, 0xfd, 0xa5, 0xb8, 0x4c, 0xed, 0x24, 0x0e, + 0xc0, 0x92, 0x0d, 0x5a, 0x85, 0x93, 0x5e, 0xe0, 0x25, 0x9e, 0xe3, 0xd7, 0x89, 0xef, 0xec, 0x4a, + 0xc3, 0x9b, 0xe7, 0x17, 0x97, 0xa9, 0x70, 0x4f, 0xae, 0x74, 0x93, 0xe0, 0xbc, 0x72, 0xe8, 0xf5, + 0xae, 0x24, 0x51, 0x3c, 0x77, 0xa7, 0xba, 0xab, 0x75, 0x70, 0xa2, 0x28, 0xf4, 0x2a, 0x8c, 0xb7, + 0xbb, 0xb6, 0x18, 0xda, 0xeb, 0x8c, 0xe6, 0xb6, 0xc2, 0xa4, 0x45, 0x75, 0x98, 0x8a, 0x3b, 0xec, + 0x44, 0x76, 0x6d, 0x2b, 0x22, 0xf1, 0x56, 0xe8, 0xbb, 0xe2, 0x55, 0x31, 0x65, 0x4e, 0x35, 0x33, + 0x78, 0xdc, 0x55, 0x82, 0x72, 0xd9, 0x70, 0x3c, 0xbf, 0x13, 0x91, 0x94, 0xcb, 0x90, 0xc9, 0x65, + 0x39, 0x83, 0xc7, 0x5d, 0x25, 0xec, 0x3f, 0xb2, 0xe0, 0x64, 0x4e, 0xd8, 0x02, 0x8f, 0xa6, 0xdb, + 0xf4, 0xe2, 0x44, 0x65, 0x91, 0xd6, 0xa2, 0xe9, 0x38, 0x1c, 0x2b, 0x0a, 0x2a, 0x85, 0x7c, 0xdf, + 0x98, 0x3d, 0x0e, 0x14, 0x07, 0xb3, 0x02, 0xdb, 0x5f, 0xca, 0x27, 0x74, 0x0e, 0x06, 0x3a, 0x31, + 0x91, 0x2f, 0xbe, 0x2b, 0x0d, 0xc5, 0x5c, 0x04, 0x0c, 0x43, 0x0d, 0x93, 0x4d, 0xb5, 0x3b, 0xd7, + 0x0c, 0x13, 0xbe, 0x3f, 0xe7, 0x38, 0xfb, 0x5b, 0x55, 0x98, 0xcc, 0x84, 0x2f, 0xd1, 0x86, 0x6c, + 0x87, 0x81, 0x97, 0x84, 0x2a, 0xdb, 0x10, 0x73, 0x29, 0x2c, 0x92, 0xf6, 0xd6, 0xaa, 0x80, 0x63, + 0x45, 0x81, 0xce, 0x9b, 0x2f, 0x1e, 0xa7, 0x6d, 0x5e, 0xa8, 0x1b, 0x6f, 0xb9, 0x95, 0xcd, 0x6c, + 0xff, 0x14, 0x0c, 0xb4, 0x43, 0xf5, 0x34, 0xa7, 0x12, 0x7a, 0xbc, 0x50, 0x6f, 0x84, 0xa1, 0x8f, + 0x19, 0x12, 0x3d, 0x2d, 0x7a, 0x9f, 0x71, 0x4e, 0x62, 0xc7, 0x0d, 0x63, 0x6d, 0x08, 0x9e, 0x81, + 0xe1, 0xbb, 0x64, 0x37, 0xf2, 0x82, 0xcd, 0xac, 0x6b, 0xf6, 0x3a, 0x07, 0x63, 0x89, 0x37, 0xb3, + 0xd7, 0x0f, 0x1f, 0x71, 0xf6, 0xfa, 0x91, 0xc2, 0x10, 0xcc, 0x5f, 0xb5, 0x60, 0x92, 0xa5, 0xde, + 0x13, 0xd7, 0x60, 0xbd, 0x30, 0x38, 0xc2, 0x55, 0xf1, 0x29, 0x18, 0x8c, 0x68, 0x65, 0xd9, 0xc4, + 0xd3, 0xac, 0x05, 0x98, 0xe3, 0xd0, 0x13, 0xe2, 0xe1, 0x78, 0xfa, 0xf9, 0xc6, 0x78, 0x22, 0xdf, + 0xf4, 0x05, 0x78, 0x16, 0xe0, 0x8f, 0x49, 0xdb, 0xf7, 0x78, 0x63, 0x53, 0x4f, 0xcc, 0xa3, 0x12, + 0xe0, 0x9f, 0xdb, 0xb8, 0x87, 0x15, 0xe0, 0x9f, 0xcf, 0xfc, 0x60, 0x13, 0xf4, 0x7f, 0x56, 0xe0, + 0x6c, 0x6e, 0xb9, 0xf4, 0x58, 0x67, 0xd9, 0x38, 0xd6, 0xb9, 0x92, 0x39, 0xd6, 0xb1, 0x0f, 0x2e, + 0xfd, 0x70, 0x0e, 0x7a, 0xf2, 0x8f, 0x5f, 0xaa, 0xc7, 0x79, 0xfc, 0x32, 0x50, 0xd6, 0x56, 0x18, + 0x2c, 0xb0, 0x15, 0x7e, 0xd7, 0x82, 0xc7, 0x73, 0xc7, 0xec, 0xd1, 0xbb, 0x52, 0x91, 0xdb, 0xcc, + 0x1e, 0x16, 0xf4, 0xdf, 0xa8, 0xf6, 0xe8, 0x16, 0xb3, 0xa5, 0x2f, 0x50, 0xbd, 0xc3, 0x90, 0xb1, + 0x30, 0x83, 0xc6, 0xb8, 0xce, 0xe1, 0x30, 0xac, 0xb0, 0x28, 0xd6, 0xae, 0x24, 0xf0, 0x46, 0x2e, + 0x1d, 0x72, 0x4a, 0xcd, 0x99, 0xce, 0x33, 0xfd, 0x3e, 0x6f, 0xe6, 0x9e, 0x02, 0xba, 0xa3, 0x6d, + 0x8f, 0xaa, 0x87, 0xd9, 0x1e, 0x8d, 0xe5, 0x6f, 0x8d, 0xd0, 0x3c, 0x4c, 0x6e, 0x7b, 0x01, 0x7b, + 0x3a, 0xce, 0xb4, 0x43, 0xd4, 0x2d, 0xb8, 0x55, 0x13, 0x8d, 0xb3, 0xf4, 0x33, 0xaf, 0xc2, 0xf8, + 0xe1, 0x3d, 0x26, 0x1f, 0x54, 0xe1, 0xa3, 0x07, 0xa8, 0x05, 0xbe, 0x1e, 0x18, 0xdf, 0x45, 0x5b, + 0x0f, 0xba, 0xbe, 0x4d, 0x03, 0x4e, 0x6d, 0x74, 0x7c, 0x7f, 0x97, 0x85, 0x45, 0x10, 0x57, 0x52, + 0x08, 0x1b, 0x4f, 0x3d, 0xea, 0xba, 0x9c, 0x43, 0x83, 0x73, 0x4b, 0xa2, 0xcf, 0x03, 0x0a, 0xd7, + 0x59, 0x3e, 0x4a, 0x37, 0xbd, 0xb1, 0xcc, 0x3e, 0x41, 0x35, 0x9d, 0xab, 0xb7, 0xba, 0x28, 0x70, + 0x4e, 0x29, 0x6a, 0xf1, 0xb1, 0xf7, 0x60, 0x55, 0xb3, 0x32, 0x16, 0x1f, 0xd6, 0x91, 0xd8, 0xa4, + 0x45, 0x57, 0xe1, 0x84, 0xb3, 0xe3, 0x78, 0x3c, 0xdb, 0x8c, 0x64, 0xc0, 0x4d, 0x3e, 0xe5, 0x92, + 0x98, 0xcf, 0x12, 0xe0, 0xee, 0x32, 0xa8, 0x6d, 0x38, 0x99, 0x78, 0xfe, 0xe9, 0xd7, 0x0e, 0x21, + 0xc1, 0xa5, 0xdd, 0x4e, 0xf6, 0x1f, 0x5a, 0x74, 0xd1, 0xcb, 0x79, 0x6a, 0xcd, 0x78, 0xa1, 0x5c, + 0xbb, 0xa5, 0xd1, 0xfd, 0x42, 0x39, 0xf3, 0xbf, 0x9a, 0xb4, 0x5c, 0x34, 0xe2, 0x34, 0xac, 0xd2, + 0xb0, 0x2f, 0xc5, 0xed, 0x24, 0x45, 0x81, 0xee, 0xc0, 0xb0, 0xeb, 0xed, 0x78, 0x71, 0x18, 0x95, + 0x78, 0x10, 0xb8, 0x2b, 0x54, 0x2f, 0x55, 0x97, 0x75, 0xce, 0x04, 0x4b, 0x6e, 0xf6, 0xdf, 0xaa, + 0xc0, 0xb8, 0xac, 0xef, 0x8d, 0x4e, 0xc8, 0x74, 0xd8, 0x51, 0x2d, 0xe5, 0x6f, 0x18, 0x4b, 0xf9, + 0xa5, 0x72, 0x57, 0xb4, 0x58, 0xa3, 0x7a, 0x2e, 0xe1, 0x5f, 0xc8, 0x2c, 0xe1, 0x97, 0xfb, 0x61, + 0x5a, 0xe8, 0x3d, 0x3a, 0x61, 0xd0, 0x3f, 0x42, 0xf9, 0x8f, 0xf3, 0xba, 0xd3, 0x63, 0xe1, 0xf8, + 0x4e, 0x25, 0xd3, 0x0d, 0xb6, 0x60, 0x7c, 0x0d, 0x06, 0xb6, 0x9c, 0xc8, 0x2d, 0x97, 0x6f, 0xad, + 0xab, 0xf8, 0xdc, 0x35, 0x27, 0x72, 0xb9, 0xda, 0xbf, 0xa8, 0x1e, 0x6a, 0x71, 0x22, 0xb7, 0x30, + 0xc8, 0x98, 0x55, 0x8a, 0x5e, 0x81, 0xa1, 0xb8, 0x15, 0xb6, 0x55, 0x54, 0xd7, 0x39, 0xfe, 0x88, + 0x0b, 0x85, 0x3c, 0xd8, 0x9b, 0x45, 0x66, 0x75, 0x14, 0x8c, 0x05, 0xfd, 0x0c, 0x81, 0x9a, 0xaa, + 0xfa, 0x08, 0xc3, 0x59, 0x3f, 0xa8, 0xc2, 0xc9, 0x1c, 0x51, 0x41, 0x3f, 0x63, 0x8c, 0xda, 0xab, + 0x7d, 0xcb, 0xda, 0x87, 0x1c, 0xb7, 0x9f, 0x61, 0x1b, 0x22, 0x57, 0xc8, 0xc6, 0x21, 0xaa, 0xbf, + 0x1d, 0x93, 0x6c, 0xf5, 0x14, 0x54, 0x5c, 0x3d, 0xad, 0xf6, 0x98, 0x06, 0x9f, 0x56, 0xa3, 0xda, + 0x79, 0x84, 0xdf, 0xf8, 0xfd, 0x01, 0x38, 0x95, 0x77, 0x0d, 0x14, 0xfd, 0xbc, 0x95, 0xc9, 0xa0, + 0xfe, 0x7a, 0xff, 0x77, 0x49, 0x79, 0x5a, 0x75, 0x91, 0x1e, 0x62, 0xce, 0xcc, 0xa9, 0x5e, 0x38, + 0xda, 0xa2, 0x76, 0x76, 0x31, 0x20, 0xe2, 0xc9, 0xf0, 0xa5, 0x3e, 0xf8, 0xdc, 0x21, 0x9a, 0x22, + 0xf2, 0xe9, 0xc7, 0x99, 0x8b, 0x01, 0x12, 0x5c, 0x7c, 0x31, 0x40, 0xb6, 0x61, 0x66, 0x13, 0x46, + 0xb5, 0x7e, 0x1d, 0xa1, 0x08, 0x78, 0x74, 0x4d, 0xd2, 0x5a, 0x7d, 0x84, 0x62, 0xf0, 0x77, 0x2c, + 0xc8, 0x84, 0x6b, 0x28, 0xaf, 0x8b, 0xd5, 0xd3, 0xeb, 0x72, 0x0e, 0x06, 0xa2, 0xd0, 0x27, 0xd9, + 0xd4, 0xde, 0x38, 0xf4, 0x09, 0x66, 0x18, 0xf5, 0x1c, 0x64, 0xb5, 0xd7, 0x73, 0x90, 0x74, 0x3b, + 0xee, 0x93, 0x1d, 0x22, 0x7d, 0x20, 0x4a, 0x79, 0xdf, 0xa0, 0x40, 0xcc, 0x71, 0xf6, 0x8f, 0xaa, + 0x30, 0xc4, 0x1d, 0x0d, 0x47, 0xb8, 0x2c, 0x37, 0xc4, 0x9e, 0xbf, 0xd4, 0x85, 0x4c, 0xde, 0x9a, + 0xb9, 0xba, 0x93, 0x38, 0x5c, 0xa0, 0x54, 0xdf, 0x52, 0x3f, 0x01, 0x9a, 0x33, 0x7a, 0x3f, 0x93, + 0xd9, 0xd2, 0x02, 0xe7, 0xa1, 0x8d, 0xc5, 0x16, 0x40, 0xcc, 0x5e, 0x06, 0xa3, 0x3c, 0x44, 0x52, + 0xbc, 0x17, 0x4b, 0xb5, 0xa3, 0xa9, 0x8a, 0xf1, 0xd6, 0xa4, 0xd9, 0xb8, 0x14, 0x02, 0x6b, 0xbc, + 0x67, 0x5e, 0x86, 0x9a, 0x22, 0x2e, 0xb2, 0xf4, 0xc7, 0x74, 0x91, 0xfc, 0x0b, 0x30, 0x99, 0xa9, + 0xab, 0xaf, 0x8d, 0xc2, 0xf7, 0x2d, 0x38, 0xd1, 0xf5, 0x92, 0x2d, 0x7a, 0xdf, 0x82, 0x53, 0x7e, + 0x8e, 0x87, 0x49, 0x7c, 0xe0, 0xc3, 0xf8, 0xa6, 0xd4, 0x2e, 0x21, 0x0f, 0x8b, 0x73, 0x6b, 0x93, + 0x69, 0x3e, 0x2b, 0xf9, 0x69, 0x3e, 0xd9, 0x73, 0x48, 0xbc, 0xed, 0xc7, 0x61, 0x01, 0xad, 0x98, + 0x16, 0xd0, 0xc7, 0xcb, 0x88, 0x41, 0x0f, 0xd3, 0xe7, 0xdf, 0x5b, 0x80, 0x38, 0x41, 0xf6, 0x85, + 0x40, 0xee, 0xb1, 0xd3, 0x6c, 0xf6, 0x54, 0x6e, 0x14, 0x06, 0x6b, 0x54, 0x7d, 0x66, 0x7f, 0x57, + 0x2f, 0x6b, 0x95, 0x7b, 0xbe, 0xbf, 0x5a, 0xe2, 0xf9, 0xfe, 0xdf, 0xaa, 0x42, 0x36, 0xb4, 0x01, + 0x7d, 0x19, 0xc6, 0x5a, 0x4e, 0xdb, 0x59, 0xf7, 0x7c, 0x2f, 0xf1, 0x48, 0x5c, 0xee, 0xd8, 0x68, + 0x51, 0x2b, 0x21, 0x7c, 0xbe, 0x1a, 0x04, 0x1b, 0x1c, 0xd1, 0x1c, 0x40, 0x3b, 0xf2, 0x76, 0x3c, + 0x9f, 0x6c, 0x32, 0xbb, 0x43, 0x25, 0x49, 0x69, 0x28, 0x28, 0xd6, 0x28, 0x72, 0x62, 0xe8, 0xaa, + 0xc7, 0x11, 0x43, 0x37, 0xd0, 0x67, 0x0c, 0xdd, 0x60, 0xa9, 0x18, 0x3a, 0x0c, 0x67, 0xa4, 0xab, + 0x96, 0xfe, 0x5f, 0xf6, 0x7c, 0xc2, 0xf3, 0xfa, 0x89, 0xc8, 0xc7, 0x99, 0xfd, 0xbd, 0xd9, 0x33, + 0x38, 0x97, 0x02, 0xf7, 0x28, 0x69, 0x77, 0xe0, 0x64, 0x93, 0x44, 0x1e, 0x4b, 0xbb, 0xe4, 0xa6, + 0x33, 0xf0, 0x1d, 0xa8, 0x45, 0x99, 0xc9, 0xdf, 0xe7, 0x9d, 0x34, 0x2d, 0x79, 0x85, 0x9c, 0xec, + 0x29, 0x4b, 0xfb, 0xaf, 0x54, 0x60, 0x58, 0x84, 0x10, 0x1d, 0xe1, 0x42, 0x72, 0xdd, 0xd8, 0xdf, + 0x3d, 0x53, 0x34, 0x73, 0x59, 0x73, 0x7a, 0xee, 0xec, 0x9a, 0x99, 0x9d, 0xdd, 0x73, 0xe5, 0xd8, + 0x1d, 0xbc, 0xa7, 0xfb, 0x61, 0x05, 0x26, 0xcc, 0x50, 0xaa, 0x23, 0x1c, 0x8e, 0xb7, 0x60, 0x38, + 0x16, 0xf1, 0x45, 0x95, 0x32, 0xb1, 0x1a, 0xd9, 0x4f, 0xaa, 0x36, 0xed, 0x32, 0xa2, 0x48, 0xb2, + 0xcb, 0x0d, 0x61, 0xaa, 0x1e, 0x47, 0x08, 0x93, 0xfd, 0x23, 0xa6, 0x52, 0xf5, 0x01, 0x3c, 0x8e, + 0x35, 0xe1, 0x0d, 0x53, 0xfb, 0x5e, 0x2c, 0x25, 0x0a, 0xa2, 0x7d, 0x3d, 0xd6, 0x86, 0xef, 0x59, + 0x30, 0x2a, 0x08, 0x8f, 0xa3, 0x07, 0x9f, 0x37, 0x7b, 0xf0, 0x74, 0xa9, 0x1e, 0xf4, 0x68, 0xfa, + 0xdf, 0xab, 0xa8, 0xa6, 0x37, 0xc4, 0xcb, 0xa9, 0x85, 0x89, 0x1e, 0x47, 0xda, 0x51, 0x98, 0x84, + 0xad, 0xd0, 0x17, 0xab, 0xfc, 0x13, 0x69, 0xd4, 0x39, 0x87, 0x3f, 0xd0, 0x7e, 0x63, 0x45, 0xcd, + 0xa2, 0xa9, 0xc3, 0x28, 0x11, 0x4b, 0x54, 0xde, 0xbb, 0xad, 0xeb, 0xf2, 0x5d, 0x6c, 0x0a, 0x13, + 0x57, 0x36, 0xfa, 0x7d, 0x0f, 0x36, 0x8d, 0x21, 0x57, 0x9c, 0xb0, 0xc6, 0x55, 0x86, 0x37, 0xb2, + 0x1a, 0x06, 0x4d, 0x37, 0xea, 0x4d, 0x01, 0xc7, 0x8a, 0xc2, 0x7e, 0x99, 0xe9, 0x58, 0x36, 0x3c, + 0xfd, 0x05, 0x86, 0xff, 0xe2, 0x90, 0x1a, 0x58, 0xe6, 0x24, 0xb9, 0x09, 0x83, 0xb4, 0x8b, 0x72, + 0x1f, 0x58, 0x4e, 0xa1, 0xd1, 0x26, 0xe8, 0x01, 0x62, 0x51, 0x12, 0x63, 0xce, 0x06, 0x91, 0x2e, + 0xdf, 0xfb, 0xcb, 0xa5, 0x75, 0x64, 0x1f, 0xde, 0x76, 0x96, 0x38, 0x86, 0x25, 0xcb, 0x58, 0x69, + 0x64, 0x93, 0x73, 0x2e, 0x4a, 0x04, 0x4e, 0x69, 0xd0, 0x25, 0x61, 0xae, 0x9b, 0xcf, 0xea, 0x4a, + 0x73, 0x5d, 0x0e, 0x89, 0x66, 0xaf, 0x5f, 0x86, 0x51, 0x95, 0x9e, 0xbc, 0xc1, 0xb3, 0x4c, 0xd7, + 0xb8, 0xfd, 0xb2, 0x94, 0x82, 0xb1, 0x4e, 0x83, 0x56, 0xe0, 0xa4, 0xab, 0xa2, 0x59, 0x1b, 0x9d, + 0x75, 0xdf, 0x6b, 0xd1, 0xa2, 0xfc, 0x26, 0xc9, 0x63, 0xfb, 0x7b, 0xb3, 0x27, 0xeb, 0xdd, 0x68, + 0x9c, 0x57, 0x06, 0xad, 0xc1, 0x64, 0xcc, 0xd3, 0xb0, 0xcb, 0x3b, 0x67, 0x22, 0x7b, 0xdd, 0xb3, + 0xd2, 0xe9, 0xdf, 0x34, 0xd1, 0x0f, 0x18, 0x88, 0x2b, 0x05, 0x01, 0xc2, 0x59, 0x16, 0xe8, 0x75, + 0x98, 0xf0, 0xf5, 0x57, 0xa5, 0x1a, 0x22, 0xa8, 0x57, 0x05, 0x44, 0x18, 0x6f, 0x4e, 0x35, 0x70, + 0x86, 0x1a, 0xbd, 0x05, 0xd3, 0x3a, 0x44, 0x5c, 0x6a, 0x77, 0x82, 0x4d, 0x12, 0x8b, 0xfc, 0xcf, + 0x4f, 0xec, 0xef, 0xcd, 0x4e, 0xdf, 0xe8, 0x41, 0x83, 0x7b, 0x96, 0x46, 0xaf, 0xc0, 0x98, 0x1c, + 0x49, 0x2d, 0xc0, 0x37, 0x0d, 0xc5, 0xd1, 0x70, 0xd8, 0xa0, 0xfc, 0x70, 0x67, 0x1b, 0x5f, 0xa3, + 0x85, 0xb5, 0x45, 0x15, 0x7d, 0x05, 0xc6, 0xf4, 0x36, 0x0a, 0x35, 0xf9, 0xc9, 0xf2, 0x2f, 0x75, + 0x89, 0xc5, 0x59, 0xb5, 0x5c, 0xc7, 0x61, 0x83, 0xb7, 0x7d, 0x0b, 0x86, 0x9a, 0xbb, 0x71, 0x2b, + 0xf1, 0x1f, 0xd6, 0x8b, 0xca, 0x2d, 0x98, 0xcc, 0x3c, 0x3d, 0xac, 0xde, 0xb0, 0xb6, 0x1e, 0xd6, + 0x1b, 0xd6, 0xf6, 0xd7, 0x2d, 0x18, 0x5c, 0x73, 0xbc, 0xe2, 0x97, 0x13, 0xca, 0x34, 0x19, 0xbd, + 0x04, 0x43, 0x64, 0x63, 0x83, 0xb4, 0xe4, 0x9b, 0xd8, 0x4f, 0x4a, 0xa3, 0x66, 0x89, 0x41, 0xe9, + 0xd4, 0x64, 0x95, 0xf1, 0xbf, 0x58, 0x10, 0xdb, 0xff, 0xd1, 0x02, 0x58, 0x0b, 0x7d, 0x79, 0x6c, + 0x53, 0xd0, 0x92, 0x85, 0xae, 0x37, 0x1c, 0xce, 0xe7, 0xbc, 0xe1, 0x80, 0x52, 0x86, 0x39, 0x2f, + 0x38, 0xa8, 0xde, 0x54, 0x4b, 0xf5, 0x66, 0xa0, 0x9f, 0xde, 0x7c, 0xd3, 0x02, 0x11, 0x43, 0x53, + 0x42, 0x12, 0x5c, 0x99, 0x77, 0xdd, 0x48, 0x57, 0xf1, 0x6c, 0x99, 0x8b, 0x20, 0x22, 0x49, 0x85, + 0x92, 0x4d, 0x23, 0x35, 0x85, 0xc1, 0x95, 0xee, 0xe5, 0x47, 0x39, 0x7a, 0x95, 0x59, 0x90, 0xc5, + 0xed, 0xea, 0x2b, 0x33, 0x17, 0x4b, 0x4b, 0x4e, 0x19, 0xab, 0x04, 0x4d, 0x7a, 0x5a, 0x72, 0x89, + 0xc0, 0x29, 0x0d, 0x7a, 0x06, 0x86, 0xe3, 0xce, 0x3a, 0x23, 0xcf, 0x04, 0xd4, 0x34, 0x39, 0x18, + 0x4b, 0xbc, 0xfd, 0x73, 0x08, 0x8c, 0xae, 0x19, 0xc9, 0xa0, 0xac, 0x87, 0x9e, 0x0c, 0xea, 0x6d, + 0x18, 0x21, 0xdb, 0xed, 0x64, 0xb7, 0xee, 0x45, 0xe5, 0x12, 0xf3, 0x2d, 0x09, 0xea, 0x6e, 0xee, + 0x12, 0x83, 0x15, 0xc7, 0x1e, 0xa9, 0xbd, 0xaa, 0x8f, 0x44, 0x6a, 0xaf, 0x81, 0x3f, 0x95, 0xd4, + 0x5e, 0x6f, 0xc1, 0xf0, 0xa6, 0x97, 0x60, 0xd2, 0x0e, 0xc5, 0xc5, 0xbf, 0x82, 0xf3, 0xb0, 0xab, + 0x9c, 0xb8, 0x3b, 0x5f, 0x8f, 0x40, 0x60, 0xc9, 0x0e, 0xad, 0xc1, 0x10, 0xdf, 0x7d, 0x88, 0x6c, + 0x59, 0x9f, 0x2c, 0xe3, 0x97, 0xe9, 0x4e, 0x1c, 0x25, 0xa2, 0xa6, 0x04, 0x2f, 0x99, 0xca, 0x6b, + 0xf8, 0xc3, 0xa7, 0xf2, 0x52, 0x09, 0xb8, 0x46, 0x1e, 0x56, 0x02, 0x2e, 0x23, 0x91, 0x59, 0xed, + 0x28, 0x12, 0x99, 0x7d, 0xd3, 0x82, 0xd3, 0xed, 0xbc, 0x3c, 0x80, 0x22, 0x95, 0xd6, 0x67, 0x0f, + 0x91, 0x17, 0xd1, 0xa8, 0x9a, 0xdd, 0xc7, 0xca, 0x25, 0xc3, 0xf9, 0x15, 0xcb, 0x8c, 0x68, 0xa3, + 0x1f, 0x3e, 0x23, 0xda, 0x51, 0xe7, 0xdc, 0x4a, 0xf3, 0xa3, 0x8d, 0x1f, 0x49, 0x7e, 0xb4, 0x89, + 0x87, 0x98, 0x1f, 0x4d, 0xcb, 0x6c, 0x36, 0xf9, 0x70, 0x33, 0x9b, 0x6d, 0xc1, 0xa8, 0x1b, 0xde, + 0x0b, 0xee, 0x39, 0x91, 0x3b, 0xdf, 0x58, 0x11, 0x89, 0xb4, 0x0a, 0x92, 0x36, 0xd4, 0xd3, 0x02, + 0x46, 0x0d, 0xdc, 0x01, 0x99, 0x22, 0xb1, 0xce, 0x5a, 0xe4, 0x78, 0x3b, 0xf1, 0x21, 0x73, 0xbc, + 0x19, 0x99, 0xd2, 0xd0, 0x51, 0x64, 0x4a, 0xfb, 0x32, 0xbb, 0xba, 0xbd, 0xe1, 0x6d, 0xae, 0x3a, + 0xed, 0xe9, 0x93, 0x65, 0x6a, 0x58, 0x94, 0xe4, 0xdd, 0x35, 0x28, 0x14, 0x4e, 0x99, 0x76, 0xe7, + 0x62, 0x3b, 0x75, 0xdc, 0xb9, 0xd8, 0x4e, 0x1f, 0x61, 0x2e, 0xb6, 0x33, 0xc7, 0x9a, 0x8b, 0xed, + 0xb1, 0x3f, 0x95, 0x5c, 0x6c, 0x7f, 0x09, 0xce, 0x1e, 0xfc, 0x39, 0xd2, 0x6c, 0xbf, 0x8d, 0xd4, + 0x65, 0x90, 0xc9, 0xf6, 0xcb, 0x4c, 0x1d, 0x8d, 0xaa, 0x74, 0x4a, 0xa8, 0x7f, 0x61, 0xc1, 0x63, + 0x3d, 0x12, 0xa7, 0x94, 0xbe, 0xcd, 0xd0, 0x86, 0xc9, 0xb6, 0x59, 0xb4, 0xf4, 0xbd, 0x23, 0x23, + 0x51, 0x8b, 0x8a, 0x93, 0xcb, 0x20, 0x70, 0x96, 0xfd, 0xc2, 0xc7, 0x7f, 0xfc, 0xc1, 0xd9, 0x8f, + 0xfc, 0xe4, 0x83, 0xb3, 0x1f, 0xf9, 0xfd, 0x0f, 0xce, 0x7e, 0xe4, 0x67, 0xf7, 0xcf, 0x5a, 0x3f, + 0xde, 0x3f, 0x6b, 0xfd, 0x64, 0xff, 0xac, 0xf5, 0x47, 0xfb, 0x67, 0xad, 0x6f, 0xfe, 0xf1, 0xd9, + 0x8f, 0x7c, 0xb1, 0xb2, 0x73, 0xf9, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x1d, 0xba, 0xe2, 0xd2, + 0xb8, 0xb6, 0x00, 0x00, } diff --git a/pkg/api/v1/generated.proto b/pkg/api/v1/generated.proto index 0599bb1e..59b2be5e 100644 --- a/pkg/api/v1/generated.proto +++ b/pkg/api/v1/generated.proto @@ -24,6 +24,7 @@ package k8s.io.kubernetes.pkg.api.v1; import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". @@ -1465,6 +1466,13 @@ message NodeProxyOptions { optional string path = 1; } +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +message NodeResources { + // Capacity represents the available resources of a node + map capacity = 1; +} + // A node selector represents the union of the results of one or more label queries // over a set of nodes; that is, it represents the OR of the selectors represented // by the node selector terms. @@ -1514,7 +1522,7 @@ message NodeSpec { optional string providerID = 3; // Unschedulable controls node schedulability of new pods. By default, node is schedulable. - // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"` + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration" // +optional optional bool unschedulable = 4; } @@ -3360,6 +3368,12 @@ message ServiceStatus { optional LoadBalancerStatus loadBalancer = 1; } +message Sysctl { + optional string name = 1; + + optional string value = 2; +} + // TCPSocketAction describes an action based on opening a socket message TCPSocketAction { // Number or name of the port to access on the container. diff --git a/pkg/api/v1/helpers.go b/pkg/api/v1/helpers.go index d33a79c7..d7fa9afe 100644 --- a/pkg/api/v1/helpers.go +++ b/pkg/api/v1/helpers.go @@ -1,5 +1,5 @@ /* -Copyright 2016 The Kubernetes Authors. +Copyright 2014 The Kubernetes Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -16,18 +16,441 @@ limitations under the License. package v1 -import "k8s.io/client-go/pkg/types" +import ( + "encoding/json" + "fmt" + "strings" + + "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/fields" + "k8s.io/client-go/pkg/labels" + "k8s.io/client-go/pkg/selection" + "k8s.io/client-go/pkg/types" + "k8s.io/client-go/pkg/util/sets" +) + +// IsOpaqueIntResourceName returns true if the resource name has the opaque +// integer resource prefix. +func IsOpaqueIntResourceName(name ResourceName) bool { + return strings.HasPrefix(string(name), ResourceOpaqueIntPrefix) +} + +// OpaqueIntResourceName returns a ResourceName with the canonical opaque +// integer prefix prepended. If the argument already has the prefix, it is +// returned unmodified. +func OpaqueIntResourceName(name string) ResourceName { + if IsOpaqueIntResourceName(ResourceName(name)) { + return ResourceName(name) + } + return ResourceName(fmt.Sprintf("%s%s", api.ResourceOpaqueIntPrefix, name)) +} // NewDeleteOptions returns a DeleteOptions indicating the resource should // be deleted within the specified grace period. Use zero to indicate // immediate deletion. If you would prefer to use the default grace period, -// use &v1.DeleteOptions{} directly. +// use &api.DeleteOptions{} directly. func NewDeleteOptions(grace int64) *DeleteOptions { return &DeleteOptions{GracePeriodSeconds: &grace} } +// NewPreconditionDeleteOptions returns a DeleteOptions with a UID precondition set. +func NewPreconditionDeleteOptions(uid string) *DeleteOptions { + u := types.UID(uid) + p := Preconditions{UID: &u} + return &DeleteOptions{Preconditions: &p} +} + // NewUIDPreconditions returns a Preconditions with UID set. func NewUIDPreconditions(uid string) *Preconditions { u := types.UID(uid) return &Preconditions{UID: &u} } + +// this function aims to check if the service's ClusterIP is set or not +// the objective is not to perform validation here +func IsServiceIPSet(service *Service) bool { + return service.Spec.ClusterIP != ClusterIPNone && service.Spec.ClusterIP != "" +} + +// this function aims to check if the service's cluster IP is requested or not +func IsServiceIPRequested(service *Service) bool { + // ExternalName services are CNAME aliases to external ones. Ignore the IP. + if service.Spec.Type == ServiceTypeExternalName { + return false + } + return service.Spec.ClusterIP == "" +} + +var standardFinalizers = sets.NewString( + string(FinalizerKubernetes), + FinalizerOrphan, +) + +// HasAnnotation returns a bool if passed in annotation exists +func HasAnnotation(obj ObjectMeta, ann string) bool { + _, found := obj.Annotations[ann] + return found +} + +// SetMetaDataAnnotation sets the annotation and value +func SetMetaDataAnnotation(obj *ObjectMeta, ann string, value string) { + if obj.Annotations == nil { + obj.Annotations = make(map[string]string) + } + obj.Annotations[ann] = value +} + +func IsStandardFinalizerName(str string) bool { + return standardFinalizers.Has(str) +} + +// SingleObject returns a ListOptions for watching a single object. +func SingleObject(meta ObjectMeta) ListOptions { + return ListOptions{ + FieldSelector: fields.OneTermEqualSelector("metadata.name", meta.Name).String(), + ResourceVersion: meta.ResourceVersion, + } +} + +// AddToNodeAddresses appends the NodeAddresses to the passed-by-pointer slice, +// only if they do not already exist +func AddToNodeAddresses(addresses *[]NodeAddress, addAddresses ...NodeAddress) { + for _, add := range addAddresses { + exists := false + for _, existing := range *addresses { + if existing.Address == add.Address && existing.Type == add.Type { + exists = true + break + } + } + if !exists { + *addresses = append(*addresses, add) + } + } +} + +// TODO: make method on LoadBalancerStatus? +func LoadBalancerStatusEqual(l, r *LoadBalancerStatus) bool { + return ingressSliceEqual(l.Ingress, r.Ingress) +} + +func ingressSliceEqual(lhs, rhs []LoadBalancerIngress) bool { + if len(lhs) != len(rhs) { + return false + } + for i := range lhs { + if !ingressEqual(&lhs[i], &rhs[i]) { + return false + } + } + return true +} + +func ingressEqual(lhs, rhs *LoadBalancerIngress) bool { + if lhs.IP != rhs.IP { + return false + } + if lhs.Hostname != rhs.Hostname { + return false + } + return true +} + +// TODO: make method on LoadBalancerStatus? +func LoadBalancerStatusDeepCopy(lb *LoadBalancerStatus) *LoadBalancerStatus { + c := &LoadBalancerStatus{} + c.Ingress = make([]LoadBalancerIngress, len(lb.Ingress)) + for i := range lb.Ingress { + c.Ingress[i] = lb.Ingress[i] + } + return c +} + +// GetAccessModesAsString returns a string representation of an array of access modes. +// modes, when present, are always in the same order: RWO,ROX,RWX. +func GetAccessModesAsString(modes []PersistentVolumeAccessMode) string { + modes = removeDuplicateAccessModes(modes) + modesStr := []string{} + if containsAccessMode(modes, ReadWriteOnce) { + modesStr = append(modesStr, "RWO") + } + if containsAccessMode(modes, ReadOnlyMany) { + modesStr = append(modesStr, "ROX") + } + if containsAccessMode(modes, ReadWriteMany) { + modesStr = append(modesStr, "RWX") + } + return strings.Join(modesStr, ",") +} + +// GetAccessModesAsString returns an array of AccessModes from a string created by GetAccessModesAsString +func GetAccessModesFromString(modes string) []PersistentVolumeAccessMode { + strmodes := strings.Split(modes, ",") + accessModes := []PersistentVolumeAccessMode{} + for _, s := range strmodes { + s = strings.Trim(s, " ") + switch { + case s == "RWO": + accessModes = append(accessModes, ReadWriteOnce) + case s == "ROX": + accessModes = append(accessModes, ReadOnlyMany) + case s == "RWX": + accessModes = append(accessModes, ReadWriteMany) + } + } + return accessModes +} + +// removeDuplicateAccessModes returns an array of access modes without any duplicates +func removeDuplicateAccessModes(modes []PersistentVolumeAccessMode) []PersistentVolumeAccessMode { + accessModes := []PersistentVolumeAccessMode{} + for _, m := range modes { + if !containsAccessMode(accessModes, m) { + accessModes = append(accessModes, m) + } + } + return accessModes +} + +func containsAccessMode(modes []PersistentVolumeAccessMode, mode PersistentVolumeAccessMode) bool { + for _, m := range modes { + if m == mode { + return true + } + } + return false +} + +// NodeSelectorRequirementsAsSelector converts the []NodeSelectorRequirement api type into a struct that implements +// labels.Selector. +func NodeSelectorRequirementsAsSelector(nsm []NodeSelectorRequirement) (labels.Selector, error) { + if len(nsm) == 0 { + return labels.Nothing(), nil + } + selector := labels.NewSelector() + for _, expr := range nsm { + var op selection.Operator + switch expr.Operator { + case NodeSelectorOpIn: + op = selection.In + case NodeSelectorOpNotIn: + op = selection.NotIn + case NodeSelectorOpExists: + op = selection.Exists + case NodeSelectorOpDoesNotExist: + op = selection.DoesNotExist + case NodeSelectorOpGt: + op = selection.GreaterThan + case NodeSelectorOpLt: + op = selection.LessThan + default: + return nil, fmt.Errorf("%q is not a valid node selector operator", expr.Operator) + } + r, err := labels.NewRequirement(expr.Key, op, expr.Values) + if err != nil { + return nil, err + } + selector = selector.Add(*r) + } + return selector, nil +} + +const ( + // AffinityAnnotationKey represents the key of affinity data (json serialized) + // in the Annotations of a Pod. + AffinityAnnotationKey string = "scheduler.alpha.kubernetes.io/affinity" + + // TolerationsAnnotationKey represents the key of tolerations data (json serialized) + // in the Annotations of a Pod. + TolerationsAnnotationKey string = "scheduler.alpha.kubernetes.io/tolerations" + + // TaintsAnnotationKey represents the key of taints data (json serialized) + // in the Annotations of a Node. + TaintsAnnotationKey string = "scheduler.alpha.kubernetes.io/taints" + + // SeccompPodAnnotationKey represents the key of a seccomp profile applied + // to all containers of a pod. + SeccompPodAnnotationKey string = "seccomp.security.alpha.kubernetes.io/pod" + + // SeccompContainerAnnotationKeyPrefix represents the key of a seccomp profile applied + // to one container of a pod. + SeccompContainerAnnotationKeyPrefix string = "container.seccomp.security.alpha.kubernetes.io/" + + // CreatedByAnnotation represents the key used to store the spec(json) + // used to create the resource. + CreatedByAnnotation = "kubernetes.io/created-by" + + // PreferAvoidPodsAnnotationKey represents the key of preferAvoidPods data (json serialized) + // in the Annotations of a Node. + PreferAvoidPodsAnnotationKey string = "scheduler.alpha.kubernetes.io/preferAvoidPods" + + // SysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Only a limited set of whitelisted and isolated sysctls is supported by + // the kubelet. Pods with other sysctls will fail to launch. + SysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/sysctls" + + // UnsafeSysctlsPodAnnotationKey represents the key of sysctls which are set for the infrastructure + // container of a pod. The annotation value is a comma separated list of sysctl_name=value + // key-value pairs. Unsafe sysctls must be explicitly enabled for a kubelet. They are properly + // namespaced to a pod or a container, but their isolation is usually unclear or weak. Their use + // is at-your-own-risk. Pods that attempt to set an unsafe sysctl that is not enabled for a kubelet + // will fail to launch. + UnsafeSysctlsPodAnnotationKey string = "security.alpha.kubernetes.io/unsafe-sysctls" +) + +// GetAffinityFromPod gets the json serialized affinity data from Pod.Annotations +// and converts it to the Affinity type in api. +func GetAffinityFromPodAnnotations(annotations map[string]string) (*Affinity, error) { + if len(annotations) > 0 && annotations[AffinityAnnotationKey] != "" { + var affinity Affinity + err := json.Unmarshal([]byte(annotations[AffinityAnnotationKey]), &affinity) + if err != nil { + return nil, err + } + return &affinity, nil + } + return nil, nil +} + +// GetTolerationsFromPodAnnotations gets the json serialized tolerations data from Pod.Annotations +// and converts it to the []Toleration type in api. +func GetTolerationsFromPodAnnotations(annotations map[string]string) ([]Toleration, error) { + var tolerations []Toleration + if len(annotations) > 0 && annotations[TolerationsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[TolerationsAnnotationKey]), &tolerations) + if err != nil { + return tolerations, err + } + } + return tolerations, nil +} + +// GetTaintsFromNodeAnnotations gets the json serialized taints data from Pod.Annotations +// and converts it to the []Taint type in api. +func GetTaintsFromNodeAnnotations(annotations map[string]string) ([]Taint, error) { + var taints []Taint + if len(annotations) > 0 && annotations[TaintsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[TaintsAnnotationKey]), &taints) + if err != nil { + return []Taint{}, err + } + } + return taints, nil +} + +// TolerationToleratesTaint checks if the toleration tolerates the taint. +func TolerationToleratesTaint(toleration *Toleration, taint *Taint) bool { + if len(toleration.Effect) != 0 && toleration.Effect != taint.Effect { + return false + } + + if toleration.Key != taint.Key { + return false + } + // TODO: Use proper defaulting when Toleration becomes a field of PodSpec + if (len(toleration.Operator) == 0 || toleration.Operator == TolerationOpEqual) && toleration.Value == taint.Value { + return true + } + if toleration.Operator == TolerationOpExists { + return true + } + return false +} + +// TaintToleratedByTolerations checks if taint is tolerated by any of the tolerations. +func TaintToleratedByTolerations(taint *Taint, tolerations []Toleration) bool { + tolerated := false + for i := range tolerations { + if TolerationToleratesTaint(&tolerations[i], taint) { + tolerated = true + break + } + } + return tolerated +} + +// MatchTaint checks if the taint matches taintToMatch. Taints are unique by key:effect, +// if the two taints have same key:effect, regard as they match. +func (t *Taint) MatchTaint(taintToMatch Taint) bool { + return t.Key == taintToMatch.Key && t.Effect == taintToMatch.Effect +} + +// taint.ToString() converts taint struct to string in format key=value:effect or key:effect. +func (t *Taint) ToString() string { + if len(t.Value) == 0 { + return fmt.Sprintf("%v:%v", t.Key, t.Effect) + } + return fmt.Sprintf("%v=%v:%v", t.Key, t.Value, t.Effect) +} + +func GetAvoidPodsFromNodeAnnotations(annotations map[string]string) (AvoidPods, error) { + var avoidPods AvoidPods + if len(annotations) > 0 && annotations[PreferAvoidPodsAnnotationKey] != "" { + err := json.Unmarshal([]byte(annotations[PreferAvoidPodsAnnotationKey]), &avoidPods) + if err != nil { + return avoidPods, err + } + } + return avoidPods, nil +} + +// SysctlsFromPodAnnotations parses the sysctl annotations into a slice of safe Sysctls +// and a slice of unsafe Sysctls. This is only a convenience wrapper around +// SysctlsFromPodAnnotation. +func SysctlsFromPodAnnotations(a map[string]string) ([]Sysctl, []Sysctl, error) { + safe, err := SysctlsFromPodAnnotation(a[SysctlsPodAnnotationKey]) + if err != nil { + return nil, nil, err + } + unsafe, err := SysctlsFromPodAnnotation(a[UnsafeSysctlsPodAnnotationKey]) + if err != nil { + return nil, nil, err + } + + return safe, unsafe, nil +} + +// SysctlsFromPodAnnotation parses an annotation value into a slice of Sysctls. +func SysctlsFromPodAnnotation(annotation string) ([]Sysctl, error) { + if len(annotation) == 0 { + return nil, nil + } + + kvs := strings.Split(annotation, ",") + sysctls := make([]Sysctl, len(kvs)) + for i, kv := range kvs { + cs := strings.Split(kv, "=") + if len(cs) != 2 || len(cs[0]) == 0 { + return nil, fmt.Errorf("sysctl %q not of the format sysctl_name=value", kv) + } + sysctls[i].Name = cs[0] + sysctls[i].Value = cs[1] + } + return sysctls, nil +} + +// PodAnnotationsFromSysctls creates an annotation value for a slice of Sysctls. +func PodAnnotationsFromSysctls(sysctls []Sysctl) string { + if len(sysctls) == 0 { + return "" + } + + kvs := make([]string, len(sysctls)) + for i := range sysctls { + kvs[i] = fmt.Sprintf("%s=%s", sysctls[i].Name, sysctls[i].Value) + } + return strings.Join(kvs, ",") +} + +type Sysctl struct { + Name string `protobuf:"bytes,1,opt,name=name"` + Value string `protobuf:"bytes,2,opt,name=value"` +} + +// NodeResources is an object for conveying resource information about a node. +// see http://releases.k8s.io/HEAD/docs/design/resources.md for more details. +type NodeResources struct { + // Capacity represents the available resources of a node + Capacity ResourceList `protobuf:"bytes,1,rep,name=capacity,casttype=ResourceList,castkey=ResourceName"` +} diff --git a/pkg/api/v1/ref.go b/pkg/api/v1/ref.go index 69bed2fa..1422ee55 100644 --- a/pkg/api/v1/ref.go +++ b/pkg/api/v1/ref.go @@ -24,8 +24,8 @@ import ( "strings" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) var ( @@ -123,11 +123,11 @@ func GetPartialReference(obj runtime.Object, fieldPath string) (*ObjectReference // IsAnAPIObject allows clients to preemptively get a reference to an API object and pass it to places that // intend only to get a reference to that object. This simplifies the event recording interface. -func (obj *ObjectReference) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (obj *ObjectReference) SetGroupVersionKind(gvk schema.GroupVersionKind) { obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() } -func (obj *ObjectReference) GroupVersionKind() unversioned.GroupVersionKind { - return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +func (obj *ObjectReference) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } -func (obj *ObjectReference) GetObjectKind() unversioned.ObjectKind { return obj } +func (obj *ObjectReference) GetObjectKind() schema.ObjectKind { return obj } diff --git a/pkg/api/v1/register.go b/pkg/api/v1/register.go index 7f31222f..21fdb64a 100644 --- a/pkg/api/v1/register.go +++ b/pkg/api/v1/register.go @@ -19,6 +19,7 @@ package v1 import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -26,7 +27,7 @@ import ( const GroupName = "" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs, addFastPathConversionFuncs) diff --git a/pkg/api/v1/resource_helpers.go b/pkg/api/v1/resource_helpers.go new file mode 100644 index 00000000..87eaa4c3 --- /dev/null +++ b/pkg/api/v1/resource_helpers.go @@ -0,0 +1,229 @@ +/* +Copyright 2014 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1 + +import ( + "time" + + "k8s.io/client-go/pkg/api/resource" + "k8s.io/client-go/pkg/api/unversioned" +) + +// Returns string version of ResourceName. +func (self ResourceName) String() string { + return string(self) +} + +// Returns the CPU limit if specified. +func (self *ResourceList) Cpu() *resource.Quantity { + if val, ok := (*self)[ResourceCPU]; ok { + return &val + } + return &resource.Quantity{Format: resource.DecimalSI} +} + +// Returns the Memory limit if specified. +func (self *ResourceList) Memory() *resource.Quantity { + if val, ok := (*self)[ResourceMemory]; ok { + return &val + } + return &resource.Quantity{Format: resource.BinarySI} +} + +func (self *ResourceList) Pods() *resource.Quantity { + if val, ok := (*self)[ResourcePods]; ok { + return &val + } + return &resource.Quantity{} +} + +func (self *ResourceList) NvidiaGPU() *resource.Quantity { + if val, ok := (*self)[ResourceNvidiaGPU]; ok { + return &val + } + return &resource.Quantity{} +} + +func GetContainerStatus(statuses []ContainerStatus, name string) (ContainerStatus, bool) { + for i := range statuses { + if statuses[i].Name == name { + return statuses[i], true + } + } + return ContainerStatus{}, false +} + +func GetExistingContainerStatus(statuses []ContainerStatus, name string) ContainerStatus { + for i := range statuses { + if statuses[i].Name == name { + return statuses[i] + } + } + return ContainerStatus{} +} + +// IsPodAvailable returns true if a pod is available; false otherwise. +// Precondition for an available pod is that it must be ready. On top +// of that, there are two cases when a pod can be considered available: +// 1. minReadySeconds == 0, or +// 2. LastTransitionTime (is set) + minReadySeconds < current time +func IsPodAvailable(pod *Pod, minReadySeconds int32, now unversioned.Time) bool { + if !IsPodReady(pod) { + return false + } + + c := GetPodReadyCondition(pod.Status) + minReadySecondsDuration := time.Duration(minReadySeconds) * time.Second + if minReadySeconds == 0 || !c.LastTransitionTime.IsZero() && c.LastTransitionTime.Add(minReadySecondsDuration).Before(now.Time) { + return true + } + return false +} + +// IsPodReady returns true if a pod is ready; false otherwise. +func IsPodReady(pod *Pod) bool { + return IsPodReadyConditionTrue(pod.Status) +} + +// IsPodReady retruns true if a pod is ready; false otherwise. +func IsPodReadyConditionTrue(status PodStatus) bool { + condition := GetPodReadyCondition(status) + return condition != nil && condition.Status == ConditionTrue +} + +// Extracts the pod ready condition from the given status and returns that. +// Returns nil if the condition is not present. +func GetPodReadyCondition(status PodStatus) *PodCondition { + _, condition := GetPodCondition(&status, PodReady) + return condition +} + +// GetPodCondition extracts the provided condition from the given status and returns that. +// Returns nil and -1 if the condition is not present, and the index of the located condition. +func GetPodCondition(status *PodStatus, conditionType PodConditionType) (int, *PodCondition) { + if status == nil { + return -1, nil + } + for i := range status.Conditions { + if status.Conditions[i].Type == conditionType { + return i, &status.Conditions[i] + } + } + return -1, nil +} + +// GetNodeCondition extracts the provided condition from the given status and returns that. +// Returns nil and -1 if the condition is not present, and the index of the located condition. +func GetNodeCondition(status *NodeStatus, conditionType NodeConditionType) (int, *NodeCondition) { + if status == nil { + return -1, nil + } + for i := range status.Conditions { + if status.Conditions[i].Type == conditionType { + return i, &status.Conditions[i] + } + } + return -1, nil +} + +// Updates existing pod condition or creates a new one. Sets LastTransitionTime to now if the +// status has changed. +// Returns true if pod condition has changed or has been added. +func UpdatePodCondition(status *PodStatus, condition *PodCondition) bool { + condition.LastTransitionTime = unversioned.Now() + // Try to find this pod condition. + conditionIndex, oldCondition := GetPodCondition(status, condition.Type) + + if oldCondition == nil { + // We are adding new pod condition. + status.Conditions = append(status.Conditions, *condition) + return true + } else { + // We are updating an existing condition, so we need to check if it has changed. + if condition.Status == oldCondition.Status { + condition.LastTransitionTime = oldCondition.LastTransitionTime + } + + isEqual := condition.Status == oldCondition.Status && + condition.Reason == oldCondition.Reason && + condition.Message == oldCondition.Message && + condition.LastProbeTime.Equal(oldCondition.LastProbeTime) && + condition.LastTransitionTime.Equal(oldCondition.LastTransitionTime) + + status.Conditions[conditionIndex] = *condition + // Return true if one of the fields have changed. + return !isEqual + } +} + +// IsNodeReady returns true if a node is ready; false otherwise. +func IsNodeReady(node *Node) bool { + for _, c := range node.Status.Conditions { + if c.Type == NodeReady { + return c.Status == ConditionTrue + } + } + return false +} + +// PodRequestsAndLimits returns a dictionary of all defined resources summed up for all +// containers of the pod. +func PodRequestsAndLimits(pod *Pod) (reqs map[ResourceName]resource.Quantity, limits map[ResourceName]resource.Quantity, err error) { + reqs, limits = map[ResourceName]resource.Quantity{}, map[ResourceName]resource.Quantity{} + for _, container := range pod.Spec.Containers { + for name, quantity := range container.Resources.Requests { + if value, ok := reqs[name]; !ok { + reqs[name] = *quantity.Copy() + } else { + value.Add(quantity) + reqs[name] = value + } + } + for name, quantity := range container.Resources.Limits { + if value, ok := limits[name]; !ok { + limits[name] = *quantity.Copy() + } else { + value.Add(quantity) + limits[name] = value + } + } + } + // init containers define the minimum of any resource + for _, container := range pod.Spec.InitContainers { + for name, quantity := range container.Resources.Requests { + value, ok := reqs[name] + if !ok { + reqs[name] = *quantity.Copy() + continue + } + if quantity.Cmp(value) > 0 { + reqs[name] = *quantity.Copy() + } + } + for name, quantity := range container.Resources.Limits { + value, ok := limits[name] + if !ok { + limits[name] = *quantity.Copy() + continue + } + if quantity.Cmp(value) > 0 { + limits[name] = *quantity.Copy() + } + } + } + return +} diff --git a/pkg/api/v1/types.go b/pkg/api/v1/types.go index ea543a81..87021629 100644 --- a/pkg/api/v1/types.go +++ b/pkg/api/v1/types.go @@ -2818,7 +2818,7 @@ type NodeSpec struct { // +optional ProviderID string `json:"providerID,omitempty" protobuf:"bytes,3,opt,name=providerID"` // Unschedulable controls node schedulability of new pods. By default, node is schedulable. - // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration"` + // More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration" // +optional Unschedulable bool `json:"unschedulable,omitempty" protobuf:"varint,4,opt,name=unschedulable"` } @@ -2995,6 +2995,8 @@ const ( NodeDiskPressure NodeConditionType = "DiskPressure" // NodeNetworkUnavailable means that network for the node is not correctly configured. NodeNetworkUnavailable NodeConditionType = "NetworkUnavailable" + // NodeInodePressure means the kublet is under pressure due to insufficient available inodes. + NodeInodePressure NodeConditionType = "InodePressure" ) // NodeCondition contains condition information for a node. @@ -3056,6 +3058,11 @@ const ( // Number of Pods that may be running on this Node: see ResourcePods ) +const ( + // Namespace prefix for opaque counted resources (alpha). + ResourceOpaqueIntPrefix = "pod.alpha.kubernetes.io/opaque-int-resource-" +) + // ResourceList is a set of (resource name, quantity) pairs. type ResourceList map[ResourceName]resource.Quantity @@ -3790,6 +3797,35 @@ const ( // DockerConfigKey is the key of the required data for SecretTypeDockercfg secrets DockerConfigKey = ".dockercfg" + // SecretTypeDockerConfigJson contains a dockercfg file that follows the same format rules as ~/.docker/config.json + // + // Required fields: + // - Secret.Data[".dockerconfigjson"] - a serialized ~/.docker/config.json file + SecretTypeDockerConfigJson SecretType = "kubernetes.io/dockerconfigjson" + + // DockerConfigJsonKey is the key of the required data for SecretTypeDockerConfigJson secrets + DockerConfigJsonKey = ".dockerconfigjson" + + // SecretTypeBasicAuth contains data needed for basic authentication. + // + // Required at least one of fields: + // - Secret.Data["username"] - username used for authentication + // - Secret.Data["password"] - password or token needed for authentication + SecretTypeBasicAuth SecretType = "kubernetes.io/basic-auth" + + // BasicAuthUsernameKey is the key of the username for SecretTypeBasicAuth secrets + BasicAuthUsernameKey = "username" + // BasicAuthPasswordKey is the key of the password or token for SecretTypeBasicAuth secrets + BasicAuthPasswordKey = "password" + + // SecretTypeSSHAuth contains data needed for SSH authetication. + // + // Required field: + // - Secret.Data["ssh-privatekey"] - private SSH key needed for authentication + SecretTypeSSHAuth SecretType = "kubernetes.io/ssh-auth" + + // SSHAuthPrivateKey is the key of the required SSH private key for SecretTypeSSHAuth secrets + SSHAuthPrivateKey = "ssh-privatekey" // SecretTypeTLS contains information about a TLS client or server secret. It // is primarily used with TLS termination of the Ingress resource, but may be // used in other types. @@ -4011,4 +4047,14 @@ type RangeAllocation struct { const ( // "default-scheduler" is the name of default scheduler. DefaultSchedulerName = "default-scheduler" + + // RequiredDuringScheduling affinity is not symmetric, but there is an implicit PreferredDuringScheduling affinity rule + // corresponding to every RequiredDuringScheduling affinity rule. + // When the --hard-pod-affinity-weight scheduler flag is not specified, + // DefaultHardPodAffinityWeight defines the weight of the implicit PreferredDuringScheduling affinity rule. + DefaultHardPodAffinitySymmetricWeight int = 1 + + // When the --failure-domains scheduler flag is not specified, + // DefaultFailureDomains defines the set of label keys used when TopologyKey is empty in PreferredDuringScheduling anti-affinity. + DefaultFailureDomains string = unversioned.LabelHostname + "," + unversioned.LabelZoneFailureDomain + "," + unversioned.LabelZoneRegion ) diff --git a/pkg/api/v1/types_swagger_doc_generated.go b/pkg/api/v1/types_swagger_doc_generated.go index 5620489b..7322cea8 100644 --- a/pkg/api/v1/types_swagger_doc_generated.go +++ b/pkg/api/v1/types_swagger_doc_generated.go @@ -901,7 +901,7 @@ var map_NodeSpec = map[string]string{ "podCIDR": "PodCIDR represents the pod IP range assigned to the node.", "externalID": "External ID of the node assigned by some machine database (e.g. a cloud provider). Deprecated.", "providerID": "ID of the node assigned by the cloud provider in the format: ://", - "unschedulable": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration\"`", + "unschedulable": "Unschedulable controls node schedulability of new pods. By default, node is schedulable. More info: http://releases.k8s.io/HEAD/docs/admin/node.md#manual-node-administration\"", } func (NodeSpec) SwaggerDoc() map[string]string { diff --git a/pkg/api/v1/zz_generated.conversion.go b/pkg/api/v1/zz_generated.conversion.go index 35fe2e2c..c630041e 100644 --- a/pkg/api/v1/zz_generated.conversion.go +++ b/pkg/api/v1/zz_generated.conversion.go @@ -189,6 +189,8 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_api_NodeList_To_v1_NodeList, Convert_v1_NodeProxyOptions_To_api_NodeProxyOptions, Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions, + Convert_v1_NodeResources_To_api_NodeResources, + Convert_api_NodeResources_To_v1_NodeResources, Convert_v1_NodeSelector_To_api_NodeSelector, Convert_api_NodeSelector_To_v1_NodeSelector, Convert_v1_NodeSelectorRequirement_To_api_NodeSelectorRequirement, @@ -333,6 +335,8 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_api_ServiceSpec_To_v1_ServiceSpec, Convert_v1_ServiceStatus_To_api_ServiceStatus, Convert_api_ServiceStatus_To_v1_ServiceStatus, + Convert_v1_Sysctl_To_api_Sysctl, + Convert_api_Sysctl_To_v1_Sysctl, Convert_v1_TCPSocketAction_To_api_TCPSocketAction, Convert_api_TCPSocketAction_To_v1_TCPSocketAction, Convert_v1_Taint_To_api_Taint, @@ -2152,6 +2156,24 @@ func Convert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in *api.NodeProxyOption return autoConvert_api_NodeProxyOptions_To_v1_NodeProxyOptions(in, out, s) } +func autoConvert_v1_NodeResources_To_api_NodeResources(in *NodeResources, out *api.NodeResources, s conversion.Scope) error { + out.Capacity = *(*api.ResourceList)(unsafe.Pointer(&in.Capacity)) + return nil +} + +func Convert_v1_NodeResources_To_api_NodeResources(in *NodeResources, out *api.NodeResources, s conversion.Scope) error { + return autoConvert_v1_NodeResources_To_api_NodeResources(in, out, s) +} + +func autoConvert_api_NodeResources_To_v1_NodeResources(in *api.NodeResources, out *NodeResources, s conversion.Scope) error { + out.Capacity = *(*ResourceList)(unsafe.Pointer(&in.Capacity)) + return nil +} + +func Convert_api_NodeResources_To_v1_NodeResources(in *api.NodeResources, out *NodeResources, s conversion.Scope) error { + return autoConvert_api_NodeResources_To_v1_NodeResources(in, out, s) +} + func autoConvert_v1_NodeSelector_To_api_NodeSelector(in *NodeSelector, out *api.NodeSelector, s conversion.Scope) error { out.NodeSelectorTerms = *(*[]api.NodeSelectorTerm)(unsafe.Pointer(&in.NodeSelectorTerms)) return nil @@ -4155,6 +4177,26 @@ func Convert_api_ServiceStatus_To_v1_ServiceStatus(in *api.ServiceStatus, out *S return autoConvert_api_ServiceStatus_To_v1_ServiceStatus(in, out, s) } +func autoConvert_v1_Sysctl_To_api_Sysctl(in *Sysctl, out *api.Sysctl, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +func Convert_v1_Sysctl_To_api_Sysctl(in *Sysctl, out *api.Sysctl, s conversion.Scope) error { + return autoConvert_v1_Sysctl_To_api_Sysctl(in, out, s) +} + +func autoConvert_api_Sysctl_To_v1_Sysctl(in *api.Sysctl, out *Sysctl, s conversion.Scope) error { + out.Name = in.Name + out.Value = in.Value + return nil +} + +func Convert_api_Sysctl_To_v1_Sysctl(in *api.Sysctl, out *Sysctl, s conversion.Scope) error { + return autoConvert_api_Sysctl_To_v1_Sysctl(in, out, s) +} + func autoConvert_v1_TCPSocketAction_To_api_TCPSocketAction(in *TCPSocketAction, out *api.TCPSocketAction, s conversion.Scope) error { out.Port = in.Port return nil diff --git a/pkg/api/v1/zz_generated.deepcopy.go b/pkg/api/v1/zz_generated.deepcopy.go index 3a79f138..0ece706a 100644 --- a/pkg/api/v1/zz_generated.deepcopy.go +++ b/pkg/api/v1/zz_generated.deepcopy.go @@ -112,6 +112,7 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeDaemonEndpoints, InType: reflect.TypeOf(&NodeDaemonEndpoints{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeList, InType: reflect.TypeOf(&NodeList{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeProxyOptions, InType: reflect.TypeOf(&NodeProxyOptions{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeResources, InType: reflect.TypeOf(&NodeResources{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelector, InType: reflect.TypeOf(&NodeSelector{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelectorRequirement, InType: reflect.TypeOf(&NodeSelectorRequirement{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_NodeSelectorTerm, InType: reflect.TypeOf(&NodeSelectorTerm{})}, @@ -184,6 +185,7 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error { conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceProxyOptions, InType: reflect.TypeOf(&ServiceProxyOptions{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceSpec, InType: reflect.TypeOf(&ServiceSpec{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_ServiceStatus, InType: reflect.TypeOf(&ServiceStatus{})}, + conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Sysctl, InType: reflect.TypeOf(&Sysctl{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_TCPSocketAction, InType: reflect.TypeOf(&TCPSocketAction{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Taint, InType: reflect.TypeOf(&Taint{})}, conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_v1_Toleration, InType: reflect.TypeOf(&Toleration{})}, @@ -1689,6 +1691,23 @@ func DeepCopy_v1_NodeProxyOptions(in interface{}, out interface{}, c *conversion } } +func DeepCopy_v1_NodeResources(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*NodeResources) + out := out.(*NodeResources) + if in.Capacity != nil { + in, out := &in.Capacity, &out.Capacity + *out = make(ResourceList) + for key, val := range *in { + (*out)[key] = val.DeepCopy() + } + } else { + out.Capacity = nil + } + return nil + } +} + func DeepCopy_v1_NodeSelector(in interface{}, out interface{}, c *conversion.Cloner) error { { in := in.(*NodeSelector) @@ -3494,6 +3513,16 @@ func DeepCopy_v1_ServiceStatus(in interface{}, out interface{}, c *conversion.Cl } } +func DeepCopy_v1_Sysctl(in interface{}, out interface{}, c *conversion.Cloner) error { + { + in := in.(*Sysctl) + out := out.(*Sysctl) + out.Name = in.Name + out.Value = in.Value + return nil + } +} + func DeepCopy_v1_TCPSocketAction(in interface{}, out interface{}, c *conversion.Cloner) error { { in := in.(*TCPSocketAction) diff --git a/pkg/apimachinery/announced/group_factory.go b/pkg/apimachinery/announced/group_factory.go index 9473ee56..075c67c6 100644 --- a/pkg/apimachinery/announced/group_factory.go +++ b/pkg/apimachinery/announced/group_factory.go @@ -23,10 +23,10 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/sets" ) @@ -107,7 +107,7 @@ type GroupMetaFactory struct { VersionArgs map[string]*GroupVersionFactoryArgs // assembled by Register() - prioritizedVersionList []unversioned.GroupVersion + prioritizedVersionList []schema.GroupVersion } // Register constructs the finalized prioritized version list and sanity checks @@ -124,11 +124,11 @@ func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) erro if pvSet.Len() != len(gmf.GroupArgs.VersionPreferenceOrder) { return fmt.Errorf("preference order for group %v has duplicates: %v", gmf.GroupArgs.GroupName, gmf.GroupArgs.VersionPreferenceOrder) } - prioritizedVersions := []unversioned.GroupVersion{} + prioritizedVersions := []schema.GroupVersion{} for _, v := range gmf.GroupArgs.VersionPreferenceOrder { prioritizedVersions = append( prioritizedVersions, - unversioned.GroupVersion{ + schema.GroupVersion{ Group: gmf.GroupArgs.GroupName, Version: v, }, @@ -136,7 +136,7 @@ func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) erro } // Go through versions that weren't explicitly prioritized. - unprioritizedVersions := []unversioned.GroupVersion{} + unprioritizedVersions := []schema.GroupVersion{} for _, v := range gmf.VersionArgs { if v.GroupName != gmf.GroupArgs.GroupName { return fmt.Errorf("found %v/%v in group %v?", v.GroupName, v.VersionName, gmf.GroupArgs.GroupName) @@ -145,7 +145,7 @@ func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) erro pvSet.Delete(v.VersionName) continue } - unprioritizedVersions = append(unprioritizedVersions, unversioned.GroupVersion{Group: v.GroupName, Version: v.VersionName}) + unprioritizedVersions = append(unprioritizedVersions, schema.GroupVersion{Group: v.GroupName, Version: v.VersionName}) } if len(unprioritizedVersions) > 1 { glog.Warningf("group %v has multiple unprioritized versions: %#v. They will have an arbitrary preference order!", gmf.GroupArgs.GroupName, unprioritizedVersions) @@ -159,7 +159,7 @@ func (gmf *GroupMetaFactory) Register(m *registered.APIRegistrationManager) erro return nil } -func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersions []unversioned.GroupVersion, groupMeta *apimachinery.GroupMeta) meta.RESTMapper { +func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersions []schema.GroupVersion, groupMeta *apimachinery.GroupMeta) meta.RESTMapper { // the list of kinds that are scoped at the root of the api hierarchy // if a kind is not enumerated here, it is assumed to have a namespace scope rootScoped := sets.NewString() @@ -183,7 +183,7 @@ func (gmf *GroupMetaFactory) newRESTMapper(scheme *runtime.Scheme, externalVersi // Enable enables group versions that are allowed, adds methods to the scheme, etc. func (gmf *GroupMetaFactory) Enable(m *registered.APIRegistrationManager, scheme *runtime.Scheme) error { - externalVersions := []unversioned.GroupVersion{} + externalVersions := []schema.GroupVersion{} for _, v := range gmf.prioritizedVersionList { if !m.IsAllowedVersion(v) { continue @@ -214,7 +214,7 @@ func (gmf *GroupMetaFactory) Enable(m *registered.APIRegistrationManager, scheme for _, v := range externalVersions { gvf := gmf.VersionArgs[v.Version] if err := groupMeta.AddVersionInterfaces( - unversioned.GroupVersion{Group: gvf.GroupName, Version: gvf.VersionName}, + schema.GroupVersion{Group: gvf.GroupName, Version: gvf.VersionName}, &meta.VersionInterfaces{ ObjectConvertor: scheme, MetadataAccessor: accessor, diff --git a/pkg/apimachinery/registered/registered.go b/pkg/apimachinery/registered/registered.go index 887980ea..46d6bec5 100644 --- a/pkg/apimachinery/registered/registered.go +++ b/pkg/apimachinery/registered/registered.go @@ -26,8 +26,8 @@ import ( "github.com/golang/glog" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/sets" ) @@ -45,16 +45,16 @@ var ( // isn't easy right now because there are so many callers of this package. type APIRegistrationManager struct { // registeredGroupVersions stores all API group versions for which RegisterGroup is called. - registeredVersions map[unversioned.GroupVersion]struct{} + registeredVersions map[schema.GroupVersion]struct{} // thirdPartyGroupVersions are API versions which are dynamically // registered (and unregistered) via API calls to the apiserver - thirdPartyGroupVersions []unversioned.GroupVersion + thirdPartyGroupVersions []schema.GroupVersion // enabledVersions represents all enabled API versions. It should be a // subset of registeredVersions. Please call EnableVersions() to add // enabled versions. - enabledVersions map[unversioned.GroupVersion]struct{} + enabledVersions map[schema.GroupVersion]struct{} // map of group meta for all groups. groupMetaMap map[string]*apimachinery.GroupMeta @@ -63,7 +63,7 @@ type APIRegistrationManager struct { // KUBE_API_VERSIONS environment variable. The install package of each group // checks this list before add their versions to the latest package and // Scheme. This list is small and order matters, so represent as a slice - envRequestedVersions []unversioned.GroupVersion + envRequestedVersions []schema.GroupVersion } // NewAPIRegistrationManager constructs a new manager. The argument ought to be @@ -71,16 +71,16 @@ type APIRegistrationManager struct { // wish to test. func NewAPIRegistrationManager(kubeAPIVersions string) (*APIRegistrationManager, error) { m := &APIRegistrationManager{ - registeredVersions: map[unversioned.GroupVersion]struct{}{}, - thirdPartyGroupVersions: []unversioned.GroupVersion{}, - enabledVersions: map[unversioned.GroupVersion]struct{}{}, + registeredVersions: map[schema.GroupVersion]struct{}{}, + thirdPartyGroupVersions: []schema.GroupVersion{}, + enabledVersions: map[schema.GroupVersion]struct{}{}, groupMetaMap: map[string]*apimachinery.GroupMeta{}, - envRequestedVersions: []unversioned.GroupVersion{}, + envRequestedVersions: []schema.GroupVersion{}, } if len(kubeAPIVersions) != 0 { for _, version := range strings.Split(kubeAPIVersions, ",") { - gv, err := unversioned.ParseGroupVersion(version) + gv, err := schema.ParseGroupVersion(version) if err != nil { return nil, fmt.Errorf("invalid api version: %s in KUBE_API_VERSIONS: %s.", version, kubeAPIVersions) @@ -122,7 +122,7 @@ var ( ) // RegisterVersions adds the given group versions to the list of registered group versions. -func (m *APIRegistrationManager) RegisterVersions(availableVersions []unversioned.GroupVersion) { +func (m *APIRegistrationManager) RegisterVersions(availableVersions []schema.GroupVersion) { for _, v := range availableVersions { m.registeredVersions[v] = struct{}{} } @@ -141,8 +141,8 @@ func (m *APIRegistrationManager) RegisterGroup(groupMeta apimachinery.GroupMeta) // EnableVersions adds the versions for the given group to the list of enabled versions. // Note that the caller should call RegisterGroup before calling this method. // The caller of this function is responsible to add the versions to scheme and RESTMapper. -func (m *APIRegistrationManager) EnableVersions(versions ...unversioned.GroupVersion) error { - var unregisteredVersions []unversioned.GroupVersion +func (m *APIRegistrationManager) EnableVersions(versions ...schema.GroupVersion) error { + var unregisteredVersions []schema.GroupVersion for _, v := range versions { if _, found := m.registeredVersions[v]; !found { unregisteredVersions = append(unregisteredVersions, v) @@ -158,7 +158,7 @@ func (m *APIRegistrationManager) EnableVersions(versions ...unversioned.GroupVer // IsAllowedVersion returns if the version is allowed by the KUBE_API_VERSIONS // environment variable. If the environment variable is empty, then it always // returns true. -func (m *APIRegistrationManager) IsAllowedVersion(v unversioned.GroupVersion) bool { +func (m *APIRegistrationManager) IsAllowedVersion(v schema.GroupVersion) bool { if len(m.envRequestedVersions) == 0 { return true } @@ -171,15 +171,15 @@ func (m *APIRegistrationManager) IsAllowedVersion(v unversioned.GroupVersion) bo } // IsEnabledVersion returns if a version is enabled. -func (m *APIRegistrationManager) IsEnabledVersion(v unversioned.GroupVersion) bool { +func (m *APIRegistrationManager) IsEnabledVersion(v schema.GroupVersion) bool { _, found := m.enabledVersions[v] return found } // EnabledVersions returns all enabled versions. Groups are randomly ordered, but versions within groups // are priority order from best to worst -func (m *APIRegistrationManager) EnabledVersions() []unversioned.GroupVersion { - ret := []unversioned.GroupVersion{} +func (m *APIRegistrationManager) EnabledVersions() []schema.GroupVersion { + ret := []schema.GroupVersion{} for _, groupMeta := range m.groupMetaMap { for _, version := range groupMeta.GroupVersions { if m.IsEnabledVersion(version) { @@ -191,13 +191,13 @@ func (m *APIRegistrationManager) EnabledVersions() []unversioned.GroupVersion { } // EnabledVersionsForGroup returns all enabled versions for a group in order of best to worst -func (m *APIRegistrationManager) EnabledVersionsForGroup(group string) []unversioned.GroupVersion { +func (m *APIRegistrationManager) EnabledVersionsForGroup(group string) []schema.GroupVersion { groupMeta, ok := m.groupMetaMap[group] if !ok { - return []unversioned.GroupVersion{} + return []schema.GroupVersion{} } - ret := []unversioned.GroupVersion{} + ret := []schema.GroupVersion{} for _, version := range groupMeta.GroupVersions { if m.IsEnabledVersion(version) { ret = append(ret, version) @@ -224,14 +224,14 @@ func (m *APIRegistrationManager) IsRegistered(group string) bool { } // IsRegisteredVersion returns if a version is registered. -func (m *APIRegistrationManager) IsRegisteredVersion(v unversioned.GroupVersion) bool { +func (m *APIRegistrationManager) IsRegisteredVersion(v schema.GroupVersion) bool { _, found := m.registeredVersions[v] return found } // RegisteredGroupVersions returns all registered group versions. -func (m *APIRegistrationManager) RegisteredGroupVersions() []unversioned.GroupVersion { - ret := []unversioned.GroupVersion{} +func (m *APIRegistrationManager) RegisteredGroupVersions() []schema.GroupVersion { + ret := []schema.GroupVersion{} for groupVersion := range m.registeredVersions { ret = append(ret, groupVersion) } @@ -239,7 +239,7 @@ func (m *APIRegistrationManager) RegisteredGroupVersions() []unversioned.GroupVe } // IsThirdPartyAPIGroupVersion returns true if the api version is a user-registered group/version. -func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv unversioned.GroupVersion) bool { +func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv schema.GroupVersion) bool { for ix := range m.thirdPartyGroupVersions { if m.thirdPartyGroupVersions[ix] == gv { return true @@ -252,9 +252,9 @@ func (m *APIRegistrationManager) IsThirdPartyAPIGroupVersion(gv unversioned.Grou // registers them in the API machinery and enables them. // Skips GroupVersions that are already registered. // Returns the list of GroupVersions that were skipped. -func (m *APIRegistrationManager) AddThirdPartyAPIGroupVersions(gvs ...unversioned.GroupVersion) []unversioned.GroupVersion { - filteredGVs := []unversioned.GroupVersion{} - skippedGVs := []unversioned.GroupVersion{} +func (m *APIRegistrationManager) AddThirdPartyAPIGroupVersions(gvs ...schema.GroupVersion) []schema.GroupVersion { + filteredGVs := []schema.GroupVersion{} + skippedGVs := []schema.GroupVersion{} for ix := range gvs { if !m.IsRegisteredVersion(gvs[ix]) { filteredGVs = append(filteredGVs, gvs[ix]) @@ -274,7 +274,7 @@ func (m *APIRegistrationManager) AddThirdPartyAPIGroupVersions(gvs ...unversione } // InterfacesFor is a union meta.VersionInterfacesFunc func for all registered types -func (m *APIRegistrationManager) InterfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { +func (m *APIRegistrationManager) InterfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { groupMeta, err := m.Group(version.Group) if err != nil { return nil, err @@ -303,7 +303,7 @@ func (m *APIRegistrationManager) GroupOrDie(group string) *apimachinery.GroupMet // 1. legacy kube group preferred version, extensions preferred version, metrics perferred version, legacy // kube any version, extensions any version, metrics any version, all other groups alphabetical preferred version, // all other groups alphabetical. -func (m *APIRegistrationManager) RESTMapper(versionPatterns ...unversioned.GroupVersion) meta.RESTMapper { +func (m *APIRegistrationManager) RESTMapper(versionPatterns ...schema.GroupVersion) meta.RESTMapper { unionMapper := meta.MultiRESTMapper{} unionedGroups := sets.NewString() for enabledVersion := range m.enabledVersions { @@ -315,8 +315,8 @@ func (m *APIRegistrationManager) RESTMapper(versionPatterns ...unversioned.Group } if len(versionPatterns) != 0 { - resourcePriority := []unversioned.GroupVersionResource{} - kindPriority := []unversioned.GroupVersionKind{} + resourcePriority := []schema.GroupVersionResource{} + kindPriority := []schema.GroupVersionKind{} for _, versionPriority := range versionPatterns { resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource)) kindPriority = append(kindPriority, versionPriority.WithKind(meta.AnyKind)) @@ -326,8 +326,8 @@ func (m *APIRegistrationManager) RESTMapper(versionPatterns ...unversioned.Group } if len(m.envRequestedVersions) != 0 { - resourcePriority := []unversioned.GroupVersionResource{} - kindPriority := []unversioned.GroupVersionKind{} + resourcePriority := []schema.GroupVersionResource{} + kindPriority := []schema.GroupVersionKind{} for _, versionPriority := range m.envRequestedVersions { resourcePriority = append(resourcePriority, versionPriority.WithResource(meta.AnyResource)) @@ -357,9 +357,9 @@ func (m *APIRegistrationManager) RESTMapper(versionPatterns ...unversioned.Group // prioritiesForGroups returns the resource and kind priorities for a PriorityRESTMapper, preferring the preferred version of each group first, // then any non-preferred version of the group second. -func (m *APIRegistrationManager) prioritiesForGroups(groups ...string) ([]unversioned.GroupVersionResource, []unversioned.GroupVersionKind) { - resourcePriority := []unversioned.GroupVersionResource{} - kindPriority := []unversioned.GroupVersionKind{} +func (m *APIRegistrationManager) prioritiesForGroups(groups ...string) ([]schema.GroupVersionResource, []schema.GroupVersionKind) { + resourcePriority := []schema.GroupVersionResource{} + kindPriority := []schema.GroupVersionKind{} for _, group := range groups { availableVersions := m.EnabledVersionsForGroup(group) @@ -369,8 +369,8 @@ func (m *APIRegistrationManager) prioritiesForGroups(groups ...string) ([]unvers } } for _, group := range groups { - resourcePriority = append(resourcePriority, unversioned.GroupVersionResource{Group: group, Version: meta.AnyVersion, Resource: meta.AnyResource}) - kindPriority = append(kindPriority, unversioned.GroupVersionKind{Group: group, Version: meta.AnyVersion, Kind: meta.AnyKind}) + resourcePriority = append(resourcePriority, schema.GroupVersionResource{Group: group, Version: meta.AnyVersion, Resource: meta.AnyResource}) + kindPriority = append(kindPriority, schema.GroupVersionKind{Group: group, Version: meta.AnyVersion, Kind: meta.AnyKind}) } return resourcePriority, kindPriority @@ -392,8 +392,8 @@ func (m *APIRegistrationManager) AllPreferredGroupVersions() string { // ValidateEnvRequestedVersions returns a list of versions that are requested in // the KUBE_API_VERSIONS environment variable, but not enabled. -func (m *APIRegistrationManager) ValidateEnvRequestedVersions() []unversioned.GroupVersion { - var missingVersions []unversioned.GroupVersion +func (m *APIRegistrationManager) ValidateEnvRequestedVersions() []schema.GroupVersion { + var missingVersions []schema.GroupVersion for _, v := range m.envRequestedVersions { if _, found := m.enabledVersions[v]; !found { missingVersions = append(missingVersions, v) diff --git a/pkg/apimachinery/types.go b/pkg/apimachinery/types.go index f520a157..0bab7077 100644 --- a/pkg/apimachinery/types.go +++ b/pkg/apimachinery/types.go @@ -20,17 +20,17 @@ import ( "fmt" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupMeta stores the metadata of a group. type GroupMeta struct { // GroupVersion represents the preferred version of the group. - GroupVersion unversioned.GroupVersion + GroupVersion schema.GroupVersion // GroupVersions is Group + all versions in that group. - GroupVersions []unversioned.GroupVersion + GroupVersions []schema.GroupVersion // Codec is the default codec for serializing output that should use // the preferred version. Use this Codec when writing to @@ -52,16 +52,16 @@ type GroupMeta struct { // string, or an error if the version is not known. // TODO: make this stop being a func pointer and always use the default // function provided below once every place that populates this field has been changed. - InterfacesFor func(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) + InterfacesFor func(version schema.GroupVersion) (*meta.VersionInterfaces, error) // InterfacesByVersion stores the per-version interfaces. - InterfacesByVersion map[unversioned.GroupVersion]*meta.VersionInterfaces + InterfacesByVersion map[schema.GroupVersion]*meta.VersionInterfaces } // DefaultInterfacesFor returns the default Codec and ResourceVersioner for a given version // string, or an error if the version is not known. // TODO: Remove the "Default" prefix. -func (gm *GroupMeta) DefaultInterfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { +func (gm *GroupMeta) DefaultInterfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { if v, ok := gm.InterfacesByVersion[version]; ok { return v, nil } @@ -73,12 +73,12 @@ func (gm *GroupMeta) DefaultInterfacesFor(version unversioned.GroupVersion) (*me // (If you use this, be sure to set .InterfacesFor = .DefaultInterfacesFor) // TODO: remove the "Interfaces" suffix and make this also maintain the // .GroupVersions member. -func (gm *GroupMeta) AddVersionInterfaces(version unversioned.GroupVersion, interfaces *meta.VersionInterfaces) error { +func (gm *GroupMeta) AddVersionInterfaces(version schema.GroupVersion, interfaces *meta.VersionInterfaces) error { if e, a := gm.GroupVersion.Group, version.Group; a != e { return fmt.Errorf("got a version in group %v, but am in group %v", a, e) } if gm.InterfacesByVersion == nil { - gm.InterfacesByVersion = make(map[unversioned.GroupVersion]*meta.VersionInterfaces) + gm.InterfacesByVersion = make(map[schema.GroupVersion]*meta.VersionInterfaces) } gm.InterfacesByVersion[version] = interfaces diff --git a/pkg/apis/apps/register.go b/pkg/apis/apps/register.go index f7910222..e36955eb 100644 --- a/pkg/apis/apps/register.go +++ b/pkg/apis/apps/register.go @@ -18,8 +18,8 @@ package apps import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) var ( @@ -31,15 +31,15 @@ var ( const GroupName = "apps" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/apps/v1beta1/generated.pb.go b/pkg/apis/apps/v1beta1/generated.pb.go index a495ee63..989b2922 100644 --- a/pkg/apis/apps/v1beta1/generated.pb.go +++ b/pkg/apis/apps/v1beta1/generated.pb.go @@ -1032,45 +1032,45 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 627 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x93, 0xcd, 0x6e, 0xd3, 0x40, - 0x10, 0xc7, 0xe3, 0xa4, 0x29, 0x61, 0x53, 0xbe, 0x96, 0x0a, 0x45, 0x11, 0x72, 0xab, 0x5c, 0x08, - 0x52, 0xbb, 0x56, 0x4a, 0x2b, 0x2a, 0x8e, 0x46, 0x02, 0x21, 0x01, 0x45, 0x0e, 0xaa, 0xa0, 0x08, - 0xa4, 0xb5, 0x33, 0x0d, 0x4b, 0x6c, 0xaf, 0xe5, 0x1d, 0xe7, 0xcc, 0x85, 0x03, 0x37, 0xde, 0x82, - 0x47, 0xe0, 0x15, 0x2a, 0x71, 0xe9, 0x91, 0x53, 0x45, 0xc3, 0x8b, 0x20, 0x6f, 0x36, 0x1f, 0x34, - 0x49, 0xa9, 0x7a, 0xf3, 0xec, 0xce, 0xff, 0x37, 0x33, 0xff, 0x1d, 0x93, 0x87, 0xbd, 0x5d, 0xc5, - 0x84, 0x74, 0x7a, 0x99, 0x0f, 0x69, 0x0c, 0x08, 0xca, 0x49, 0x7a, 0x5d, 0x87, 0x27, 0x42, 0x39, - 0x3c, 0x49, 0x94, 0xd3, 0x6f, 0xf9, 0x80, 0xbc, 0xe5, 0x74, 0x21, 0x86, 0x94, 0x23, 0x74, 0x58, - 0x92, 0x4a, 0x94, 0xf4, 0xde, 0x50, 0xc8, 0x26, 0x42, 0x96, 0xf4, 0xba, 0x2c, 0x17, 0xb2, 0x5c, - 0xc8, 0x8c, 0xb0, 0xbe, 0xd9, 0x15, 0xf8, 0x31, 0xf3, 0x59, 0x20, 0x23, 0xa7, 0x2b, 0xbb, 0xd2, - 0xd1, 0x7a, 0x3f, 0x3b, 0xd4, 0x91, 0x0e, 0xf4, 0xd7, 0x90, 0x5b, 0xdf, 0x5a, 0xd8, 0x90, 0x93, - 0x82, 0x92, 0x59, 0x1a, 0xc0, 0xd9, 0x5e, 0xea, 0x3b, 0x8b, 0x35, 0x59, 0xdc, 0x87, 0x54, 0x09, - 0x19, 0x43, 0x67, 0x46, 0xb6, 0xb1, 0x58, 0xd6, 0x9f, 0x19, 0xb8, 0xbe, 0x39, 0x3f, 0x3b, 0xcd, - 0x62, 0x14, 0xd1, 0x6c, 0x4f, 0xad, 0xf9, 0xe9, 0x19, 0x8a, 0xd0, 0x11, 0x31, 0x2a, 0x4c, 0xcf, - 0x4a, 0x1a, 0xdf, 0x8b, 0xa4, 0xda, 0x46, 0x8e, 0x70, 0x98, 0x85, 0x6d, 0x40, 0xfa, 0x86, 0x54, - 0x22, 0x40, 0xde, 0xe1, 0xc8, 0x6b, 0xd6, 0xba, 0xd5, 0xac, 0x6e, 0x35, 0xd9, 0x42, 0xd7, 0x59, - 0xbf, 0xc5, 0xf6, 0xfc, 0x4f, 0x10, 0xe0, 0x0b, 0x40, 0xee, 0xd2, 0xa3, 0x93, 0xb5, 0xc2, 0xe0, - 0x64, 0x8d, 0x4c, 0xce, 0xbc, 0x31, 0x8d, 0x1e, 0x90, 0x25, 0x95, 0x40, 0x50, 0x2b, 0x6a, 0xea, - 0x2e, 0xbb, 0xe0, 0x5b, 0xb2, 0xa9, 0xee, 0xda, 0x09, 0x04, 0xee, 0x8a, 0xa9, 0xb2, 0x94, 0x47, - 0x9e, 0x66, 0x52, 0x9f, 0x2c, 0x2b, 0xe4, 0x98, 0xa9, 0x5a, 0x49, 0xd3, 0x1f, 0x5d, 0x8a, 0xae, - 0x09, 0xee, 0x75, 0xc3, 0x5f, 0x1e, 0xc6, 0x9e, 0x21, 0x37, 0x7e, 0x5a, 0xe4, 0xc6, 0x54, 0xf6, - 0x73, 0xa1, 0x90, 0xbe, 0x9f, 0x71, 0xcb, 0x39, 0xc7, 0xad, 0xa9, 0xbd, 0x60, 0xb9, 0x5c, 0x9b, - 0x76, 0xd3, 0x94, 0xab, 0x8c, 0x4e, 0xa6, 0x2c, 0x7b, 0x4b, 0xca, 0x02, 0x21, 0x52, 0xb5, 0xe2, - 0x7a, 0xa9, 0x59, 0xdd, 0xda, 0xbe, 0xcc, 0x54, 0xee, 0x35, 0x53, 0xa0, 0xfc, 0x2c, 0x47, 0x79, - 0x43, 0x62, 0xe3, 0x47, 0xe9, 0x9f, 0x69, 0x72, 0x2f, 0x69, 0x93, 0x54, 0x52, 0x48, 0x42, 0x11, - 0x70, 0xa5, 0xa7, 0x29, 0xbb, 0x2b, 0x79, 0x63, 0x9e, 0x39, 0xf3, 0xc6, 0xb7, 0xf4, 0x03, 0xa9, - 0x28, 0x08, 0x21, 0x40, 0x99, 0x9a, 0xf7, 0xdc, 0xbe, 0xe8, 0xdc, 0xdc, 0x87, 0xb0, 0x6d, 0xb4, - 0x43, 0xfe, 0x28, 0xf2, 0xc6, 0x4c, 0xfa, 0x8e, 0x54, 0x10, 0xa2, 0x24, 0xe4, 0x08, 0xe6, 0x45, - 0x37, 0xcf, 0xdf, 0xc2, 0x57, 0xb2, 0xf3, 0xda, 0x08, 0xf4, 0x92, 0x8c, 0x5d, 0x1d, 0x9d, 0x7a, - 0x63, 0x20, 0xfd, 0x62, 0x91, 0xd5, 0xbe, 0x0c, 0xb3, 0x08, 0x1e, 0x87, 0x5c, 0x44, 0xa3, 0x0c, - 0x55, 0x5b, 0xd2, 0x2e, 0x3f, 0xf8, 0x4f, 0xa5, 0x7c, 0x14, 0x85, 0x10, 0xe3, 0xfe, 0x84, 0xe1, - 0xde, 0x35, 0xf5, 0x56, 0xf7, 0xe7, 0x80, 0xbd, 0xb9, 0xe5, 0xe8, 0x0e, 0xa9, 0x2a, 0x48, 0xfb, - 0x22, 0x80, 0x97, 0x3c, 0x82, 0x5a, 0x79, 0xdd, 0x6a, 0x5e, 0x75, 0x6f, 0x1b, 0x50, 0xb5, 0x3d, - 0xb9, 0xf2, 0xa6, 0xf3, 0x1a, 0x5f, 0x2d, 0x72, 0x6b, 0x66, 0x6b, 0xe9, 0x13, 0x42, 0xa5, 0x9f, - 0xa7, 0x41, 0xe7, 0xe9, 0xf0, 0x17, 0x17, 0x32, 0xd6, 0xaf, 0x58, 0x72, 0xef, 0x0c, 0x4e, 0xd6, - 0xe8, 0xde, 0xcc, 0xad, 0x37, 0x47, 0x41, 0x37, 0xa6, 0x76, 0xa0, 0xa8, 0x77, 0x60, 0x6c, 0xe5, - 0xec, 0x1e, 0xb8, 0xf7, 0x8f, 0x4e, 0xed, 0xc2, 0xf1, 0xa9, 0x5d, 0xf8, 0x75, 0x6a, 0x17, 0x3e, - 0x0f, 0x6c, 0xeb, 0x68, 0x60, 0x5b, 0xc7, 0x03, 0xdb, 0xfa, 0x3d, 0xb0, 0xad, 0x6f, 0x7f, 0xec, - 0xc2, 0xc1, 0x15, 0xb3, 0x92, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x28, 0x58, 0x61, 0xec, 0xf5, - 0x05, 0x00, 0x00, + // 637 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x93, 0xcd, 0x6e, 0xd3, 0x4c, + 0x14, 0x86, 0xe3, 0xa4, 0xe9, 0x97, 0x6f, 0x52, 0xfe, 0x86, 0x0a, 0x45, 0x11, 0x72, 0xab, 0x6c, + 0x08, 0x52, 0x3b, 0x56, 0x4a, 0x2b, 0x2a, 0x96, 0x46, 0x02, 0x21, 0x01, 0x45, 0x0e, 0xaa, 0xa0, + 0x08, 0xa4, 0xb1, 0x73, 0x9a, 0x9a, 0xd8, 0x1e, 0xcb, 0x73, 0x9c, 0x35, 0x1b, 0x16, 0xec, 0xb8, + 0x0b, 0x2e, 0x81, 0x5b, 0xa8, 0xc4, 0xa6, 0x4b, 0x56, 0x15, 0x0d, 0x37, 0x82, 0x3c, 0x99, 0x24, + 0xa6, 0x4e, 0x4a, 0xd5, 0x9d, 0xcf, 0xcc, 0x79, 0x9f, 0xf3, 0x33, 0xaf, 0xc9, 0xc3, 0xc1, 0xae, + 0x64, 0xbe, 0xb0, 0x06, 0xa9, 0x0b, 0x49, 0x04, 0x08, 0xd2, 0x8a, 0x07, 0x7d, 0x8b, 0xc7, 0xbe, + 0xb4, 0x78, 0x1c, 0x4b, 0x6b, 0xd8, 0x71, 0x01, 0x79, 0xc7, 0xea, 0x43, 0x04, 0x09, 0x47, 0xe8, + 0xb1, 0x38, 0x11, 0x28, 0xe8, 0xbd, 0xb1, 0x90, 0xcd, 0x84, 0x2c, 0x1e, 0xf4, 0x59, 0x26, 0x64, + 0x99, 0x90, 0x69, 0x61, 0x73, 0xb3, 0xef, 0xe3, 0x51, 0xea, 0x32, 0x4f, 0x84, 0x56, 0x5f, 0xf4, + 0x85, 0xa5, 0xf4, 0x6e, 0x7a, 0xa8, 0x22, 0x15, 0xa8, 0xaf, 0x31, 0xb7, 0xb9, 0xb5, 0xb0, 0x21, + 0x2b, 0x01, 0x29, 0xd2, 0xc4, 0x83, 0xf3, 0xbd, 0x34, 0x77, 0x16, 0x6b, 0xd2, 0x68, 0x08, 0x89, + 0xf4, 0x45, 0x04, 0xbd, 0x82, 0x6c, 0x63, 0xb1, 0x6c, 0x58, 0x18, 0xb8, 0xb9, 0x39, 0x3f, 0x3b, + 0x49, 0x23, 0xf4, 0xc3, 0x62, 0x4f, 0xdb, 0x17, 0xa7, 0x4b, 0xef, 0x08, 0x42, 0x5e, 0x50, 0x75, + 0xe6, 0xab, 0x52, 0xf4, 0x03, 0xcb, 0x8f, 0x50, 0x62, 0x72, 0x5e, 0xd2, 0xfa, 0x56, 0x26, 0xf5, + 0x2e, 0x72, 0x84, 0xc3, 0x34, 0xe8, 0x02, 0xd2, 0x37, 0xa4, 0x16, 0x02, 0xf2, 0x1e, 0x47, 0xde, + 0x30, 0xd6, 0x8d, 0x76, 0x7d, 0xab, 0xcd, 0x16, 0xbe, 0x15, 0x1b, 0x76, 0xd8, 0x9e, 0xfb, 0x11, + 0x3c, 0x7c, 0x01, 0xc8, 0x6d, 0x7a, 0x7c, 0xba, 0x56, 0x1a, 0x9d, 0xae, 0x91, 0xd9, 0x99, 0x33, + 0xa5, 0xd1, 0x03, 0xb2, 0x24, 0x63, 0xf0, 0x1a, 0x65, 0x45, 0xdd, 0x65, 0x97, 0x74, 0x00, 0xcb, + 0x75, 0xd7, 0x8d, 0xc1, 0xb3, 0x57, 0x74, 0x95, 0xa5, 0x2c, 0x72, 0x14, 0x93, 0xba, 0x64, 0x59, + 0x22, 0xc7, 0x54, 0x36, 0x2a, 0x8a, 0xfe, 0xe8, 0x4a, 0x74, 0x45, 0xb0, 0xaf, 0x6b, 0xfe, 0xf2, + 0x38, 0x76, 0x34, 0xb9, 0xf5, 0xc3, 0x20, 0x37, 0x72, 0xd9, 0xcf, 0x7d, 0x89, 0xf4, 0x7d, 0x61, + 0x5b, 0xd6, 0x05, 0xdb, 0xca, 0xb9, 0x89, 0x65, 0x72, 0xb5, 0xb4, 0x9b, 0xba, 0x5c, 0x6d, 0x72, + 0x92, 0x5b, 0xd9, 0x5b, 0x52, 0xf5, 0x11, 0x42, 0xd9, 0x28, 0xaf, 0x57, 0xda, 0xf5, 0xad, 0xed, + 0xab, 0x4c, 0x65, 0x5f, 0xd3, 0x05, 0xaa, 0xcf, 0x32, 0x94, 0x33, 0x26, 0xb6, 0xbe, 0x57, 0xfe, + 0x9a, 0x26, 0xdb, 0x25, 0x6d, 0x93, 0x5a, 0x02, 0x71, 0xe0, 0x7b, 0x5c, 0xaa, 0x69, 0xaa, 0xf6, + 0x4a, 0xd6, 0x98, 0xa3, 0xcf, 0x9c, 0xe9, 0x2d, 0xfd, 0x40, 0x6a, 0x12, 0x02, 0xf0, 0x50, 0x24, + 0xfa, 0x3d, 0xb7, 0x2f, 0x3b, 0x37, 0x77, 0x21, 0xe8, 0x6a, 0xed, 0x98, 0x3f, 0x89, 0x9c, 0x29, + 0x93, 0xbe, 0x23, 0x35, 0x84, 0x30, 0x0e, 0x38, 0x82, 0x7e, 0xd1, 0xcd, 0x8b, 0x5d, 0xf8, 0x4a, + 0xf4, 0x5e, 0x6b, 0x81, 0x32, 0xc9, 0x74, 0xab, 0x93, 0x53, 0x67, 0x0a, 0xa4, 0x9f, 0x0d, 0xb2, + 0x3a, 0x14, 0x41, 0x1a, 0xc2, 0xe3, 0x80, 0xfb, 0xe1, 0x24, 0x43, 0x36, 0x96, 0xd4, 0x96, 0x1f, + 0xfc, 0xa3, 0x52, 0x36, 0x8a, 0x44, 0x88, 0x70, 0x7f, 0xc6, 0xb0, 0xef, 0xea, 0x7a, 0xab, 0xfb, + 0x73, 0xc0, 0xce, 0xdc, 0x72, 0x74, 0x87, 0xd4, 0x25, 0x24, 0x43, 0xdf, 0x83, 0x97, 0x3c, 0x84, + 0x46, 0x75, 0xdd, 0x68, 0xff, 0x6f, 0xdf, 0xd6, 0xa0, 0x7a, 0x77, 0x76, 0xe5, 0xe4, 0xf3, 0x5a, + 0x5f, 0x0c, 0x72, 0xab, 0xe0, 0x5a, 0xfa, 0x84, 0x50, 0xe1, 0x66, 0x69, 0xd0, 0x7b, 0x3a, 0xfe, + 0xc5, 0x7d, 0x11, 0xa9, 0x57, 0xac, 0xd8, 0x77, 0x46, 0xa7, 0x6b, 0x74, 0xaf, 0x70, 0xeb, 0xcc, + 0x51, 0xd0, 0x8d, 0x9c, 0x07, 0xca, 0xca, 0x03, 0xd3, 0x55, 0x16, 0x7d, 0x60, 0xdf, 0x3f, 0x3e, + 0x33, 0x4b, 0x27, 0x67, 0x66, 0xe9, 0xe7, 0x99, 0x59, 0xfa, 0x34, 0x32, 0x8d, 0xe3, 0x91, 0x69, + 0x9c, 0x8c, 0x4c, 0xe3, 0xd7, 0xc8, 0x34, 0xbe, 0xfe, 0x36, 0x4b, 0x07, 0xff, 0x69, 0x4b, 0xfe, + 0x09, 0x00, 0x00, 0xff, 0xff, 0x64, 0x32, 0x5a, 0xad, 0x2b, 0x06, 0x00, 0x00, } diff --git a/pkg/apis/apps/v1beta1/generated.proto b/pkg/apis/apps/v1beta1/generated.proto index 4d4b054b..960c5e6b 100644 --- a/pkg/apis/apps/v1beta1/generated.proto +++ b/pkg/apis/apps/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/apps/v1beta1/register.go b/pkg/apis/apps/v1beta1/register.go index 3ab76cf6..a91e498e 100644 --- a/pkg/apis/apps/v1beta1/register.go +++ b/pkg/apis/apps/v1beta1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "apps" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) @@ -47,5 +47,5 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *StatefulSet) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *StatefulSetList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *StatefulSet) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *StatefulSetList) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/authentication/register.go b/pkg/apis/authentication/register.go index 4759c011..9f5aca19 100644 --- a/pkg/apis/authentication/register.go +++ b/pkg/apis/authentication/register.go @@ -18,23 +18,23 @@ package authentication import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "authentication.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/authentication/v1beta1/generated.pb.go b/pkg/apis/authentication/v1beta1/generated.pb.go index f9557313..e37a5b21 100644 --- a/pkg/apis/authentication/v1beta1/generated.pb.go +++ b/pkg/apis/authentication/v1beta1/generated.pb.go @@ -1236,46 +1236,46 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 642 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x93, 0xcf, 0x6e, 0x13, 0x31, - 0x10, 0xc6, 0xb3, 0xf9, 0x53, 0x12, 0x87, 0x42, 0xb1, 0x84, 0x14, 0x45, 0x62, 0x13, 0x85, 0x4b, - 0x90, 0x5a, 0xaf, 0x52, 0x09, 0xa8, 0x5a, 0x71, 0xe8, 0xaa, 0x05, 0xf5, 0x80, 0x90, 0x5c, 0x8a, - 0x10, 0x12, 0x07, 0x27, 0x99, 0x6e, 0x97, 0x6d, 0xd6, 0x2b, 0xaf, 0x9d, 0xd2, 0x5b, 0x1f, 0x81, - 0x23, 0x47, 0xde, 0x83, 0x17, 0xe8, 0xb1, 0x07, 0x0e, 0x1c, 0x50, 0x45, 0xc2, 0x8b, 0x20, 0x7b, - 0x4d, 0x93, 0x36, 0xcd, 0x81, 0xf6, 0xb6, 0xfe, 0x3c, 0xf3, 0x9b, 0x6f, 0xc6, 0x3b, 0x68, 0x33, - 0x5a, 0x4b, 0x49, 0xc8, 0xbd, 0x48, 0x75, 0x41, 0xc4, 0x20, 0x21, 0xf5, 0x92, 0x28, 0xf0, 0x58, - 0x12, 0xa6, 0x1e, 0x53, 0xf2, 0x00, 0x62, 0x19, 0xf6, 0x98, 0x0c, 0x79, 0xec, 0x0d, 0x3b, 0x5d, - 0x90, 0xac, 0xe3, 0x05, 0x10, 0x83, 0x60, 0x12, 0xfa, 0x24, 0x11, 0x5c, 0x72, 0xdc, 0xc9, 0x10, - 0x64, 0x82, 0x20, 0x49, 0x14, 0x10, 0x8d, 0x20, 0x97, 0x11, 0xc4, 0x22, 0xea, 0x2b, 0x41, 0x28, - 0x0f, 0x54, 0x97, 0xf4, 0xf8, 0xc0, 0x0b, 0x78, 0xc0, 0x3d, 0x43, 0xea, 0xaa, 0x7d, 0x73, 0x32, - 0x07, 0xf3, 0x95, 0x55, 0xa8, 0xaf, 0xce, 0x35, 0xe9, 0x09, 0x48, 0xb9, 0x12, 0x3d, 0xb8, 0xea, - 0xaa, 0xfe, 0x74, 0x7e, 0x8e, 0x8a, 0x87, 0x20, 0xd2, 0x90, 0xc7, 0xd0, 0x9f, 0x49, 0x5b, 0x9e, - 0x9f, 0x36, 0x9c, 0x69, 0xbd, 0xbe, 0x72, 0x7d, 0xb4, 0x50, 0xb1, 0x0c, 0x07, 0xb3, 0x9e, 0x3a, - 0xd7, 0x87, 0x2b, 0x19, 0x1e, 0x7a, 0x61, 0x2c, 0x53, 0x29, 0xae, 0xa6, 0xb4, 0x9e, 0x23, 0xb4, - 0xfd, 0x59, 0x0a, 0xf6, 0x8e, 0x1d, 0x2a, 0xc0, 0x0d, 0x54, 0x0a, 0x25, 0x0c, 0xd2, 0x9a, 0xd3, - 0x2c, 0xb4, 0x2b, 0x7e, 0x65, 0x7c, 0xde, 0x28, 0xed, 0x68, 0x81, 0x66, 0xfa, 0x7a, 0xf9, 0xeb, - 0xb7, 0x46, 0xee, 0xe4, 0x57, 0x33, 0xd7, 0xfa, 0x9e, 0x47, 0xd5, 0xb7, 0x3c, 0x82, 0x98, 0xc2, - 0x30, 0x84, 0x23, 0xfc, 0x1e, 0x95, 0x07, 0x20, 0x59, 0x9f, 0x49, 0x56, 0x73, 0x9a, 0x4e, 0xbb, - 0xba, 0xda, 0x26, 0x73, 0x1f, 0x8e, 0x0c, 0x3b, 0xe4, 0x4d, 0xf7, 0x13, 0xf4, 0xe4, 0x6b, 0x90, - 0xcc, 0xc7, 0xa7, 0xe7, 0x8d, 0xdc, 0xf8, 0xbc, 0x81, 0x26, 0x1a, 0xbd, 0xa0, 0xe1, 0x3e, 0x2a, - 0xa6, 0x09, 0xf4, 0x6a, 0x79, 0x43, 0xf5, 0xc9, 0x7f, 0xff, 0x0e, 0x64, 0xca, 0xe7, 0x6e, 0x02, - 0x3d, 0xff, 0xae, 0xad, 0x57, 0xd4, 0x27, 0x6a, 0xe8, 0xf8, 0x10, 0x2d, 0xa4, 0x92, 0x49, 0x95, - 0xd6, 0x0a, 0xa6, 0xce, 0xd6, 0x2d, 0xeb, 0x18, 0x96, 0x7f, 0xcf, 0x56, 0x5a, 0xc8, 0xce, 0xd4, - 0xd6, 0x68, 0x3d, 0x43, 0xf7, 0xaf, 0x98, 0xc2, 0x8f, 0x51, 0x49, 0x6a, 0xc9, 0x4c, 0xaf, 0xe2, - 0x2f, 0xda, 0xcc, 0x52, 0x16, 0x97, 0xdd, 0xb5, 0x7e, 0x38, 0xe8, 0xc1, 0x4c, 0x15, 0xbc, 0x81, - 0x16, 0xa7, 0x1c, 0x41, 0xdf, 0x20, 0xca, 0xfe, 0x43, 0x8b, 0x58, 0xdc, 0x9c, 0xbe, 0xa4, 0x97, - 0x63, 0xf1, 0x47, 0x54, 0x54, 0x29, 0x08, 0x3b, 0xde, 0x8d, 0x1b, 0xb4, 0xbd, 0x97, 0x82, 0xd8, - 0x89, 0xf7, 0xf9, 0x64, 0xae, 0x5a, 0xa1, 0x06, 0xab, 0xdb, 0x02, 0x21, 0xb8, 0x30, 0x63, 0x9d, - 0x6a, 0x6b, 0x5b, 0x8b, 0x34, 0xbb, 0x6b, 0x8d, 0xf2, 0xa8, 0xfc, 0x8f, 0x82, 0x97, 0x51, 0x59, - 0x67, 0xc6, 0x6c, 0x00, 0x76, 0x16, 0x4b, 0x36, 0xc9, 0xc4, 0x68, 0x9d, 0x5e, 0x44, 0xe0, 0x47, - 0xa8, 0xa0, 0xc2, 0xbe, 0x71, 0x5f, 0xf1, 0xab, 0x36, 0xb0, 0xb0, 0xb7, 0xb3, 0x45, 0xb5, 0x8e, - 0x5b, 0x68, 0x21, 0x10, 0x5c, 0x25, 0xfa, 0x59, 0xf5, 0x2f, 0x8d, 0xf4, 0x63, 0xbc, 0x32, 0x0a, - 0xb5, 0x37, 0x38, 0x42, 0x25, 0xd0, 0x3b, 0x50, 0x2b, 0x36, 0x0b, 0xed, 0xea, 0xea, 0xcb, 0x5b, - 0x8c, 0x80, 0x98, 0x65, 0xda, 0x8e, 0xa5, 0x38, 0x9e, 0x6a, 0x55, 0x6b, 0x34, 0xab, 0x51, 0x3f, - 0xb2, 0x0b, 0x67, 0x62, 0xf0, 0x12, 0x2a, 0x44, 0x70, 0x9c, 0xb5, 0x49, 0xf5, 0x27, 0xde, 0x45, - 0xa5, 0xa1, 0xde, 0x45, 0xfb, 0x1e, 0x2f, 0x6e, 0x60, 0x66, 0xb2, 0xd0, 0x34, 0x63, 0xad, 0xe7, - 0xd7, 0x1c, 0xff, 0xc9, 0xe9, 0xc8, 0xcd, 0x9d, 0x8d, 0xdc, 0xdc, 0xcf, 0x91, 0x9b, 0x3b, 0x19, - 0xbb, 0xce, 0xe9, 0xd8, 0x75, 0xce, 0xc6, 0xae, 0xf3, 0x7b, 0xec, 0x3a, 0x5f, 0xfe, 0xb8, 0xb9, - 0x0f, 0x77, 0x2c, 0xe0, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xca, 0xd0, 0x35, 0x8c, 0xb5, 0x05, - 0x00, 0x00, + // 654 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x93, 0xcd, 0x6e, 0xd3, 0x4a, + 0x14, 0xc7, 0xed, 0x7c, 0xf4, 0x26, 0x93, 0xdb, 0x7b, 0xcb, 0x48, 0x48, 0x51, 0x24, 0x9c, 0x28, + 0x6c, 0x82, 0xd4, 0x8e, 0x95, 0x8a, 0x8f, 0xaa, 0x15, 0x8b, 0x5a, 0x2d, 0xa8, 0x0b, 0x84, 0x34, + 0xa5, 0x08, 0x21, 0xb1, 0x98, 0x38, 0xa7, 0xae, 0x71, 0x63, 0x5b, 0xe3, 0x99, 0x94, 0xee, 0xfa, + 0x08, 0x2c, 0x59, 0xf2, 0x1e, 0xbc, 0x40, 0x97, 0x5d, 0xb0, 0x60, 0x81, 0x2a, 0x12, 0x5e, 0x04, + 0xcd, 0x78, 0x68, 0xd2, 0xa6, 0x41, 0xa2, 0xdd, 0x79, 0xfe, 0x73, 0xfe, 0xbf, 0xf3, 0x31, 0x3e, + 0x68, 0x33, 0x5a, 0xcb, 0x48, 0x98, 0xb8, 0x91, 0xec, 0x01, 0x8f, 0x41, 0x40, 0xe6, 0xa6, 0x51, + 0xe0, 0xb2, 0x34, 0xcc, 0x5c, 0x26, 0xc5, 0x01, 0xc4, 0x22, 0xf4, 0x99, 0x08, 0x93, 0xd8, 0x1d, + 0x76, 0x7b, 0x20, 0x58, 0xd7, 0x0d, 0x20, 0x06, 0xce, 0x04, 0xf4, 0x49, 0xca, 0x13, 0x91, 0xe0, + 0x6e, 0x8e, 0x20, 0x13, 0x04, 0x49, 0xa3, 0x80, 0x28, 0x04, 0xb9, 0x8c, 0x20, 0x06, 0xd1, 0x58, + 0x09, 0x42, 0x71, 0x20, 0x7b, 0xc4, 0x4f, 0x06, 0x6e, 0x90, 0x04, 0x89, 0xab, 0x49, 0x3d, 0xb9, + 0xaf, 0x4f, 0xfa, 0xa0, 0xbf, 0xf2, 0x0c, 0x8d, 0xd5, 0xb9, 0x45, 0xba, 0x1c, 0xb2, 0x44, 0x72, + 0x1f, 0xae, 0x56, 0xd5, 0x78, 0x34, 0xdf, 0x23, 0xe3, 0x21, 0xf0, 0x2c, 0x4c, 0x62, 0xe8, 0xcf, + 0xd8, 0x96, 0xe7, 0xdb, 0x86, 0x33, 0xad, 0x37, 0x56, 0xae, 0x8f, 0xe6, 0x32, 0x16, 0xe1, 0x60, + 0xb6, 0xa6, 0x87, 0x7f, 0x0e, 0xcf, 0xfc, 0x03, 0x18, 0xb0, 0x19, 0x57, 0xf7, 0x7a, 0x97, 0x14, + 0xe1, 0xa1, 0x1b, 0xc6, 0x22, 0x13, 0xfc, 0xaa, 0xa5, 0xfd, 0x04, 0xa1, 0xed, 0x0f, 0x82, 0xb3, + 0xd7, 0xec, 0x50, 0x02, 0x6e, 0xa2, 0x72, 0x28, 0x60, 0x90, 0xd5, 0xed, 0x56, 0xb1, 0x53, 0xf5, + 0xaa, 0xe3, 0xf3, 0x66, 0x79, 0x47, 0x09, 0x34, 0xd7, 0xd7, 0x2b, 0x9f, 0x3e, 0x37, 0xad, 0x93, + 0xef, 0x2d, 0xab, 0xfd, 0xa5, 0x80, 0x6a, 0xaf, 0x92, 0x08, 0x62, 0x0a, 0xc3, 0x10, 0x8e, 0xf0, + 0x1b, 0x54, 0x19, 0x80, 0x60, 0x7d, 0x26, 0x58, 0xdd, 0x6e, 0xd9, 0x9d, 0xda, 0x6a, 0x87, 0xcc, + 0x7d, 0x6e, 0x32, 0xec, 0x92, 0x97, 0xbd, 0xf7, 0xe0, 0x8b, 0x17, 0x20, 0x98, 0x87, 0x4f, 0xcf, + 0x9b, 0xd6, 0xf8, 0xbc, 0x89, 0x26, 0x1a, 0xbd, 0xa0, 0xe1, 0x3e, 0x2a, 0x65, 0x29, 0xf8, 0xf5, + 0x82, 0xa6, 0x7a, 0xe4, 0xaf, 0x7f, 0x22, 0x32, 0x55, 0xe7, 0x6e, 0x0a, 0xbe, 0xf7, 0xaf, 0xc9, + 0x57, 0x52, 0x27, 0xaa, 0xe9, 0xf8, 0x10, 0x2d, 0x64, 0x82, 0x09, 0x99, 0xd5, 0x8b, 0x3a, 0xcf, + 0xd6, 0x2d, 0xf3, 0x68, 0x96, 0xf7, 0x9f, 0xc9, 0xb4, 0x90, 0x9f, 0xa9, 0xc9, 0xd1, 0x7e, 0x8c, + 0xfe, 0xbf, 0x52, 0x14, 0xbe, 0x8f, 0xca, 0x42, 0x49, 0x7a, 0x7a, 0x55, 0x6f, 0xd1, 0x38, 0xcb, + 0x79, 0x5c, 0x7e, 0xd7, 0xfe, 0x6a, 0xa3, 0x3b, 0x33, 0x59, 0xf0, 0x06, 0x5a, 0x9c, 0xaa, 0x08, + 0xfa, 0x1a, 0x51, 0xf1, 0xee, 0x1a, 0xc4, 0xe2, 0xe6, 0xf4, 0x25, 0xbd, 0x1c, 0x8b, 0xdf, 0xa1, + 0x92, 0xcc, 0x80, 0x9b, 0xf1, 0x6e, 0xdc, 0xa0, 0xed, 0xbd, 0x0c, 0xf8, 0x4e, 0xbc, 0x9f, 0x4c, + 0xe6, 0xaa, 0x14, 0xaa, 0xb1, 0xaa, 0x2d, 0xe0, 0x3c, 0xe1, 0x7a, 0xac, 0x53, 0x6d, 0x6d, 0x2b, + 0x91, 0xe6, 0x77, 0xed, 0x51, 0x01, 0x55, 0x7e, 0x53, 0xf0, 0x32, 0xaa, 0x28, 0x67, 0xcc, 0x06, + 0x60, 0x66, 0xb1, 0x64, 0x4c, 0x3a, 0x46, 0xe9, 0xf4, 0x22, 0x02, 0xdf, 0x43, 0x45, 0x19, 0xf6, + 0x75, 0xf5, 0x55, 0xaf, 0x66, 0x02, 0x8b, 0x7b, 0x3b, 0x5b, 0x54, 0xe9, 0xb8, 0x8d, 0x16, 0x02, + 0x9e, 0xc8, 0x54, 0x3d, 0xab, 0xfa, 0xa5, 0x91, 0x7a, 0x8c, 0xe7, 0x5a, 0xa1, 0xe6, 0x06, 0x47, + 0xa8, 0x0c, 0x6a, 0x07, 0xea, 0xa5, 0x56, 0xb1, 0x53, 0x5b, 0x7d, 0x76, 0x8b, 0x11, 0x10, 0xbd, + 0x4c, 0xdb, 0xb1, 0xe0, 0xc7, 0x53, 0xad, 0x2a, 0x8d, 0xe6, 0x39, 0x1a, 0x47, 0x66, 0xe1, 0x74, + 0x0c, 0x5e, 0x42, 0xc5, 0x08, 0x8e, 0xf3, 0x36, 0xa9, 0xfa, 0xc4, 0xbb, 0xa8, 0x3c, 0x54, 0xbb, + 0x68, 0xde, 0xe3, 0xe9, 0x0d, 0x8a, 0x99, 0x2c, 0x34, 0xcd, 0x59, 0xeb, 0x85, 0x35, 0xdb, 0x7b, + 0x70, 0x3a, 0x72, 0xac, 0xb3, 0x91, 0x63, 0x7d, 0x1b, 0x39, 0xd6, 0xc9, 0xd8, 0xb1, 0x4f, 0xc7, + 0x8e, 0x7d, 0x36, 0x76, 0xec, 0x1f, 0x63, 0xc7, 0xfe, 0xf8, 0xd3, 0xb1, 0xde, 0xfe, 0x63, 0x00, + 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0xce, 0xcd, 0xc2, 0x6f, 0xeb, 0x05, 0x00, 0x00, } diff --git a/pkg/apis/authentication/v1beta1/generated.proto b/pkg/apis/authentication/v1beta1/generated.proto index f36e2816..2fd8b0e2 100644 --- a/pkg/apis/authentication/v1beta1/generated.proto +++ b/pkg/apis/authentication/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/authentication/v1beta1/register.go b/pkg/apis/authentication/v1beta1/register.go index 472e53d1..53a2aa0a 100644 --- a/pkg/apis/authentication/v1beta1/register.go +++ b/pkg/apis/authentication/v1beta1/register.go @@ -17,16 +17,16 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "authentication.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) diff --git a/pkg/apis/authorization/register.go b/pkg/apis/authorization/register.go index 55ae357d..ca1a483b 100644 --- a/pkg/apis/authorization/register.go +++ b/pkg/apis/authorization/register.go @@ -17,23 +17,23 @@ limitations under the License. package authorization import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "authorization.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/authorization/v1beta1/generated.pb.go b/pkg/apis/authorization/v1beta1/generated.pb.go index 875a98aa..9c7771e3 100644 --- a/pkg/apis/authorization/v1beta1/generated.pb.go +++ b/pkg/apis/authorization/v1beta1/generated.pb.go @@ -2283,60 +2283,61 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 874 bytes of a gzipped FileDescriptorProto + // 884 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x56, 0x41, 0x8f, 0xdb, 0x44, 0x14, 0x8e, 0x93, 0x78, 0x37, 0x99, 0x05, 0xb6, 0x4c, 0x55, 0xd6, 0x0d, 0x92, 0x13, 0x05, 0x09, - 0x6d, 0xa5, 0xd6, 0x66, 0x57, 0xaa, 0xa8, 0x2a, 0x0e, 0xac, 0xc5, 0xaa, 0xaa, 0xa0, 0x05, 0xcd, - 0xc2, 0x0a, 0xc1, 0x69, 0xec, 0x7d, 0x4d, 0x4c, 0x12, 0x8f, 0x35, 0x33, 0x76, 0x59, 0x4e, 0xfd, - 0x01, 0x1c, 0x38, 0xf6, 0xc8, 0x5f, 0xe0, 0x0f, 0x70, 0x65, 0x8f, 0xe5, 0x82, 0x40, 0x42, 0x11, - 0x6b, 0xfe, 0x05, 0x27, 0xe4, 0xf1, 0x24, 0x6e, 0x36, 0x0e, 0x28, 0xb0, 0x42, 0x1c, 0x7a, 0xf3, - 0xbc, 0xf7, 0xbd, 0xf7, 0xbe, 0x99, 0xf9, 0xc6, 0xef, 0xa1, 0x77, 0x47, 0x77, 0x84, 0x13, 0x32, - 0x77, 0x94, 0xf8, 0xc0, 0x23, 0x90, 0x20, 0xdc, 0x78, 0x34, 0x70, 0x69, 0x1c, 0x0a, 0x97, 0x26, - 0x72, 0xc8, 0x78, 0xf8, 0x15, 0x95, 0x21, 0x8b, 0xdc, 0x74, 0xcf, 0x07, 0x49, 0xf7, 0xdc, 0x01, - 0x44, 0xc0, 0xa9, 0x84, 0x13, 0x27, 0xe6, 0x4c, 0x32, 0xfc, 0x56, 0x91, 0xc1, 0x29, 0x33, 0x38, - 0xf1, 0x68, 0xe0, 0xe4, 0x19, 0x9c, 0x85, 0x0c, 0x8e, 0xce, 0xd0, 0xb9, 0x35, 0x08, 0xe5, 0x30, - 0xf1, 0x9d, 0x80, 0x4d, 0xdc, 0x01, 0x1b, 0x30, 0x57, 0x25, 0xf2, 0x93, 0x47, 0x6a, 0xa5, 0x16, - 0xea, 0xab, 0x28, 0xd0, 0xd9, 0x5f, 0x49, 0xd1, 0xe5, 0x20, 0x58, 0xc2, 0x03, 0xb8, 0x48, 0xaa, - 0x73, 0x7b, 0x75, 0x4c, 0x12, 0xa5, 0xc0, 0x45, 0xc8, 0x22, 0x38, 0x59, 0x0a, 0xbb, 0xb9, 0x3a, - 0x2c, 0x5d, 0xda, 0x79, 0xe7, 0x56, 0x35, 0x9a, 0x27, 0x91, 0x0c, 0x27, 0xcb, 0x9c, 0xf6, 0xaa, - 0xe1, 0x89, 0x0c, 0xc7, 0x6e, 0x18, 0x49, 0x21, 0xf9, 0xc5, 0x90, 0xfe, 0xdb, 0x08, 0x1d, 0x7e, - 0x29, 0x39, 0x3d, 0xa6, 0xe3, 0x04, 0x70, 0x17, 0x99, 0xa1, 0x84, 0x89, 0xb0, 0x8c, 0x5e, 0x63, - 0xb7, 0xed, 0xb5, 0xb3, 0x69, 0xd7, 0xbc, 0x9f, 0x1b, 0x48, 0x61, 0xbf, 0xdb, 0x7a, 0xfa, 0x6d, - 0xb7, 0xf6, 0xe4, 0xd7, 0x5e, 0xad, 0xff, 0x53, 0x1d, 0x59, 0x1f, 0xb0, 0x80, 0x8e, 0x8f, 0x12, - 0xff, 0x0b, 0x08, 0xe4, 0x41, 0x10, 0x80, 0x10, 0x04, 0xd2, 0x10, 0x1e, 0xe3, 0x4f, 0x51, 0x6b, - 0x02, 0x92, 0x9e, 0x50, 0x49, 0x2d, 0xa3, 0x67, 0xec, 0x6e, 0xed, 0xef, 0x3a, 0x2b, 0x2f, 0xd1, - 0x49, 0xf7, 0x9c, 0x0f, 0x55, 0x8e, 0x07, 0x20, 0xa9, 0x87, 0xcf, 0xa6, 0xdd, 0x5a, 0x36, 0xed, - 0xa2, 0xd2, 0x46, 0xe6, 0xd9, 0xf0, 0x08, 0x35, 0x45, 0x0c, 0x81, 0x55, 0x57, 0x59, 0xef, 0x3b, - 0xeb, 0x4a, 0xc3, 0xa9, 0xa0, 0x7b, 0x14, 0x43, 0xe0, 0xbd, 0xa4, 0xcb, 0x36, 0xf3, 0x15, 0x51, - 0x45, 0xb0, 0x40, 0x1b, 0x42, 0x52, 0x99, 0x08, 0xab, 0xa1, 0xca, 0xbd, 0x7f, 0x39, 0xe5, 0x54, - 0x4a, 0xef, 0x15, 0x5d, 0x70, 0xa3, 0x58, 0x13, 0x5d, 0xaa, 0xff, 0x39, 0xba, 0xf6, 0x90, 0x45, - 0x44, 0xeb, 0xee, 0x40, 0x4a, 0x1e, 0xfa, 0x89, 0x04, 0x81, 0x7b, 0xa8, 0x19, 0x53, 0x39, 0x54, - 0x07, 0xda, 0x2e, 0xf9, 0x7e, 0x44, 0xe5, 0x90, 0x28, 0x4f, 0x8e, 0x48, 0x81, 0xfb, 0xea, 0x70, - 0x9e, 0x43, 0x1c, 0x03, 0xf7, 0x89, 0xf2, 0xf4, 0xbf, 0xaf, 0x23, 0x5c, 0x91, 0xda, 0x45, 0xed, - 0x88, 0x4e, 0x40, 0xc4, 0x34, 0x00, 0x9d, 0xff, 0x55, 0x1d, 0xdd, 0x7e, 0x38, 0x73, 0x90, 0x12, - 0xf3, 0xf7, 0x95, 0xf0, 0x1b, 0xc8, 0x1c, 0x70, 0x96, 0xc4, 0xea, 0xe8, 0xda, 0xde, 0xcb, 0x1a, - 0x62, 0xde, 0xcb, 0x8d, 0xa4, 0xf0, 0xe1, 0x1b, 0x68, 0x53, 0x3f, 0x15, 0xab, 0xa9, 0x60, 0xdb, - 0x1a, 0xb6, 0x79, 0x5c, 0x98, 0xc9, 0xcc, 0x8f, 0x6f, 0xa2, 0xd6, 0xec, 0x2d, 0x5a, 0xa6, 0xc2, - 0x5e, 0xd1, 0xd8, 0xd6, 0x6c, 0x43, 0x64, 0x8e, 0xc0, 0xb7, 0xd1, 0x96, 0x48, 0xfc, 0x79, 0xc0, - 0x86, 0x0a, 0xb8, 0xaa, 0x03, 0xb6, 0x8e, 0x4a, 0x17, 0x79, 0x1e, 0x97, 0x6f, 0x2b, 0xdf, 0xa3, - 0xb5, 0xb9, 0xb8, 0xad, 0xfc, 0x08, 0x88, 0xf2, 0xf4, 0x7f, 0xa9, 0xa3, 0x9d, 0x23, 0x18, 0x3f, - 0xfa, 0x6f, 0x55, 0xcf, 0x16, 0x54, 0xff, 0xe0, 0x1f, 0xc8, 0xb0, 0x9a, 0xf2, 0xff, 0x4b, 0xf9, - 0x3f, 0xd4, 0xd1, 0xeb, 0x7f, 0x41, 0x14, 0x7f, 0x6d, 0x20, 0xcc, 0x97, 0xc4, 0xab, 0x8f, 0xfa, - 0xbd, 0xf5, 0x19, 0x2e, 0x3f, 0x04, 0xef, 0xb5, 0x6c, 0xda, 0xad, 0x78, 0x20, 0xa4, 0xa2, 0x2e, - 0x7e, 0x6a, 0xa0, 0x6b, 0x51, 0xd5, 0x4b, 0xd5, 0xd7, 0x74, 0x6f, 0x7d, 0x46, 0x95, 0x0f, 0xdf, - 0xbb, 0x9e, 0x4d, 0xbb, 0xd5, 0xff, 0x04, 0x52, 0x4d, 0xa0, 0xff, 0x63, 0x1d, 0x5d, 0x7d, 0xf1, - 0x5f, 0xbe, 0x5c, 0x75, 0xfe, 0xd1, 0x44, 0x3b, 0x2f, 0x94, 0xf9, 0x2f, 0x95, 0x39, 0x6f, 0x1c, - 0x8d, 0xc5, 0x3f, 0xec, 0x27, 0x02, 0xb8, 0x6e, 0x1c, 0xbd, 0x59, 0xe3, 0x68, 0xaa, 0x19, 0x04, - 0xe5, 0x57, 0xa1, 0x9a, 0x86, 0x98, 0x75, 0x8d, 0x53, 0x64, 0x42, 0x3e, 0xb3, 0x58, 0x66, 0xaf, - 0xb1, 0xbb, 0xb5, 0xff, 0xf1, 0xa5, 0x89, 0xcd, 0x51, 0xa3, 0xd0, 0x61, 0x24, 0xf9, 0x69, 0xd9, - 0xb0, 0x94, 0x8d, 0x14, 0x15, 0x3b, 0xa9, 0x1e, 0x97, 0x14, 0x06, 0x5f, 0x41, 0x8d, 0x11, 0x9c, - 0x16, 0x0d, 0x93, 0xe4, 0x9f, 0x98, 0x20, 0x33, 0xcd, 0x27, 0x29, 0x7d, 0xd0, 0xef, 0xac, 0x4f, - 0xad, 0x9c, 0xc6, 0x48, 0x91, 0xea, 0x6e, 0xfd, 0x8e, 0xd1, 0xff, 0xce, 0x40, 0xd7, 0x57, 0x4a, - 0x36, 0x6f, 0xa3, 0x74, 0x3c, 0x66, 0x8f, 0xe1, 0x44, 0x71, 0x69, 0x95, 0x6d, 0xf4, 0xa0, 0x30, - 0x93, 0x99, 0x1f, 0xbf, 0x89, 0x36, 0x38, 0x50, 0xc1, 0x22, 0xdd, 0xba, 0xe7, 0x6a, 0x27, 0xca, - 0x4a, 0xb4, 0x17, 0x1f, 0xa0, 0x6d, 0xc8, 0xcb, 0x2b, 0x72, 0x87, 0x9c, 0x33, 0xae, 0xaf, 0x6c, - 0x47, 0x07, 0x6c, 0x1f, 0x2e, 0xba, 0xc9, 0x45, 0xbc, 0x77, 0xe3, 0xec, 0xdc, 0xae, 0x3d, 0x3b, - 0xb7, 0x6b, 0x3f, 0x9f, 0xdb, 0xb5, 0x27, 0x99, 0x6d, 0x9c, 0x65, 0xb6, 0xf1, 0x2c, 0xb3, 0x8d, - 0xdf, 0x32, 0xdb, 0xf8, 0xe6, 0x77, 0xbb, 0xf6, 0xd9, 0xa6, 0xde, 0xf4, 0x9f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x0c, 0xa4, 0x8c, 0xef, 0x24, 0x0c, 0x00, 0x00, + 0x6d, 0xa5, 0xd6, 0x66, 0x57, 0x54, 0x54, 0x15, 0x07, 0xd6, 0x62, 0x55, 0x55, 0xd0, 0x82, 0x66, + 0x61, 0x85, 0xe0, 0x34, 0xf6, 0xbe, 0x26, 0x26, 0x89, 0xc7, 0x9a, 0x19, 0xbb, 0x2c, 0xa7, 0xfe, + 0x00, 0x0e, 0x1c, 0x7b, 0xe4, 0x2f, 0xf0, 0x07, 0xb8, 0xb2, 0xc7, 0x72, 0x41, 0x20, 0xa1, 0x88, + 0x35, 0xff, 0x82, 0x13, 0xf2, 0x78, 0x12, 0x37, 0x1b, 0xa7, 0x68, 0x61, 0x85, 0x38, 0xec, 0xcd, + 0xf3, 0xde, 0xf7, 0xde, 0xfb, 0x66, 0xe6, 0x1b, 0xbf, 0x87, 0xde, 0x1b, 0xdd, 0x11, 0x4e, 0xc8, + 0xdc, 0x51, 0xe2, 0x03, 0x8f, 0x40, 0x82, 0x70, 0xe3, 0xd1, 0xc0, 0xa5, 0x71, 0x28, 0x5c, 0x9a, + 0xc8, 0x21, 0xe3, 0xe1, 0xd7, 0x54, 0x86, 0x2c, 0x72, 0xd3, 0x1d, 0x1f, 0x24, 0xdd, 0x71, 0x07, + 0x10, 0x01, 0xa7, 0x12, 0x8e, 0x9c, 0x98, 0x33, 0xc9, 0xf0, 0x5b, 0x45, 0x06, 0xa7, 0xcc, 0xe0, + 0xc4, 0xa3, 0x81, 0x93, 0x67, 0x70, 0x16, 0x32, 0x38, 0x3a, 0x43, 0xe7, 0xd6, 0x20, 0x94, 0xc3, + 0xc4, 0x77, 0x02, 0x36, 0x71, 0x07, 0x6c, 0xc0, 0x5c, 0x95, 0xc8, 0x4f, 0x1e, 0xa9, 0x95, 0x5a, + 0xa8, 0xaf, 0xa2, 0x40, 0x67, 0x77, 0x25, 0x45, 0x97, 0x83, 0x60, 0x09, 0x0f, 0xe0, 0x2c, 0xa9, + 0xce, 0xed, 0xd5, 0x31, 0x49, 0x94, 0x02, 0x17, 0x21, 0x8b, 0xe0, 0x68, 0x29, 0xec, 0xe6, 0xea, + 0xb0, 0x74, 0x69, 0xe7, 0x9d, 0x5b, 0xd5, 0x68, 0x9e, 0x44, 0x32, 0x9c, 0x2c, 0x73, 0x7a, 0xfb, + 0xc5, 0x70, 0x11, 0x0c, 0x61, 0x42, 0x97, 0xa2, 0x76, 0xaa, 0xa3, 0x12, 0x19, 0x8e, 0xdd, 0x30, + 0x92, 0x42, 0xf2, 0xb3, 0x21, 0xfd, 0x77, 0x10, 0xda, 0xff, 0x4a, 0x72, 0x7a, 0x48, 0xc7, 0x09, + 0xe0, 0x2e, 0x32, 0x43, 0x09, 0x13, 0x61, 0x19, 0xbd, 0xc6, 0x76, 0xdb, 0x6b, 0x67, 0xd3, 0xae, + 0x79, 0x3f, 0x37, 0x90, 0xc2, 0x7e, 0xb7, 0xf5, 0xf4, 0xbb, 0x6e, 0xed, 0xc9, 0x6f, 0xbd, 0x5a, + 0xff, 0xe7, 0x3a, 0xb2, 0x3e, 0x64, 0x01, 0x1d, 0x1f, 0x24, 0xfe, 0x97, 0x10, 0xc8, 0xbd, 0x20, + 0x00, 0x21, 0x08, 0xa4, 0x21, 0x3c, 0xc6, 0x9f, 0xa1, 0xd6, 0x04, 0x24, 0x3d, 0xa2, 0x92, 0x5a, + 0x46, 0xcf, 0xd8, 0xde, 0xd8, 0xdd, 0x76, 0x56, 0x5e, 0xbd, 0x93, 0xee, 0x38, 0x1f, 0xa9, 0x1c, + 0x0f, 0x40, 0x52, 0x0f, 0x9f, 0x4c, 0xbb, 0xb5, 0x6c, 0xda, 0x45, 0xa5, 0x8d, 0xcc, 0xb3, 0xe1, + 0x11, 0x6a, 0x8a, 0x18, 0x02, 0xab, 0xae, 0xb2, 0xde, 0x77, 0xce, 0x2b, 0x28, 0xa7, 0x82, 0xee, + 0x41, 0x0c, 0x81, 0xf7, 0x92, 0x2e, 0xdb, 0xcc, 0x57, 0x44, 0x15, 0xc1, 0x02, 0xad, 0x09, 0x49, + 0x65, 0x22, 0xac, 0x86, 0x2a, 0xf7, 0xc1, 0xc5, 0x94, 0x53, 0x29, 0xbd, 0x57, 0x74, 0xc1, 0xb5, + 0x62, 0x4d, 0x74, 0xa9, 0xfe, 0x17, 0xe8, 0xda, 0x43, 0x16, 0x11, 0xad, 0xd6, 0x3d, 0x29, 0x79, + 0xe8, 0x27, 0x12, 0x04, 0xee, 0xa1, 0x66, 0x4c, 0xe5, 0x50, 0x1d, 0x68, 0xbb, 0xe4, 0xfb, 0x31, + 0x95, 0x43, 0xa2, 0x3c, 0x39, 0x22, 0x05, 0xee, 0xab, 0xc3, 0x79, 0x0e, 0x71, 0x08, 0xdc, 0x27, + 0xca, 0xd3, 0xff, 0xa1, 0x8e, 0x70, 0x45, 0x6a, 0x17, 0xb5, 0x23, 0x3a, 0x01, 0x11, 0xd3, 0x00, + 0x74, 0xfe, 0x57, 0x75, 0x74, 0xfb, 0xe1, 0xcc, 0x41, 0x4a, 0xcc, 0xdf, 0x57, 0xc2, 0x6f, 0x20, + 0x73, 0xc0, 0x59, 0x12, 0xab, 0xa3, 0x6b, 0x7b, 0x2f, 0x6b, 0x88, 0x79, 0x2f, 0x37, 0x92, 0xc2, + 0x87, 0x6f, 0xa0, 0x75, 0xfd, 0xc0, 0xac, 0xa6, 0x82, 0x6d, 0x6a, 0xd8, 0xfa, 0x61, 0x61, 0x26, + 0x33, 0x3f, 0xbe, 0x89, 0x5a, 0xb3, 0x17, 0x6c, 0x99, 0x0a, 0x7b, 0x45, 0x63, 0x5b, 0xb3, 0x0d, + 0x91, 0x39, 0x02, 0xdf, 0x46, 0x1b, 0x22, 0xf1, 0xe7, 0x01, 0x6b, 0x2a, 0xe0, 0xaa, 0x0e, 0xd8, + 0x38, 0x28, 0x5d, 0xe4, 0x79, 0x5c, 0xbe, 0xad, 0x7c, 0x8f, 0xd6, 0xfa, 0xe2, 0xb6, 0xf2, 0x23, + 0x20, 0xca, 0xd3, 0xff, 0xb5, 0x8e, 0xb6, 0x0e, 0x60, 0xfc, 0xe8, 0xbf, 0x55, 0x3d, 0x5b, 0x50, + 0xfd, 0x83, 0x7f, 0x20, 0xc3, 0x6a, 0xca, 0xff, 0x2f, 0xe5, 0xff, 0x58, 0x47, 0xaf, 0xbf, 0x80, + 0x28, 0xfe, 0xc6, 0x40, 0x98, 0x2f, 0x89, 0x57, 0x1f, 0xf5, 0xfb, 0xe7, 0x67, 0xb8, 0xfc, 0x10, + 0xbc, 0xd7, 0xb2, 0x69, 0xb7, 0xe2, 0x81, 0x90, 0x8a, 0xba, 0xf8, 0xa9, 0x81, 0xae, 0x45, 0x55, + 0x2f, 0x55, 0x5f, 0xd3, 0xbd, 0xf3, 0x33, 0xaa, 0x7c, 0xf8, 0xde, 0xf5, 0x6c, 0xda, 0xad, 0xfe, + 0x27, 0x90, 0x6a, 0x02, 0xfd, 0x9f, 0xea, 0xe8, 0xea, 0xe5, 0x7f, 0xf9, 0x62, 0xd5, 0xf9, 0x67, + 0x13, 0x6d, 0x5d, 0x2a, 0xf3, 0x5f, 0x2a, 0x73, 0xde, 0x38, 0x1a, 0x8b, 0x7f, 0xd8, 0x4f, 0x05, + 0x70, 0xdd, 0x38, 0x7a, 0xb3, 0xc6, 0xd1, 0x54, 0x33, 0x08, 0xca, 0xaf, 0x42, 0x35, 0x0d, 0x31, + 0xeb, 0x1a, 0xc7, 0xc8, 0x84, 0x7c, 0x66, 0xb1, 0xcc, 0x5e, 0x63, 0x7b, 0x63, 0xf7, 0x93, 0x0b, + 0x13, 0x9b, 0xa3, 0x46, 0xa1, 0xfd, 0x48, 0xf2, 0xe3, 0xb2, 0x61, 0x29, 0x1b, 0x29, 0x2a, 0x76, + 0x52, 0x3d, 0x2e, 0x29, 0x0c, 0xbe, 0x82, 0x1a, 0x23, 0x38, 0x2e, 0x1a, 0x26, 0xc9, 0x3f, 0x31, + 0x41, 0x66, 0x9a, 0x4f, 0x52, 0xfa, 0xa0, 0xdf, 0x3d, 0x3f, 0xb5, 0x72, 0x1a, 0x23, 0x45, 0xaa, + 0xbb, 0xf5, 0x3b, 0x46, 0xff, 0x7b, 0x03, 0x5d, 0x5f, 0x29, 0xd9, 0xbc, 0x8d, 0xd2, 0xf1, 0x98, + 0x3d, 0x86, 0x23, 0xc5, 0xa5, 0x55, 0xb6, 0xd1, 0xbd, 0xc2, 0x4c, 0x66, 0x7e, 0xfc, 0x26, 0x5a, + 0xe3, 0x40, 0x05, 0x8b, 0x74, 0xeb, 0x9e, 0xab, 0x9d, 0x28, 0x2b, 0xd1, 0x5e, 0xbc, 0x87, 0x36, + 0x21, 0x2f, 0xaf, 0xc8, 0xed, 0x73, 0xce, 0xb8, 0xbe, 0xb2, 0x2d, 0x1d, 0xb0, 0xb9, 0xbf, 0xe8, + 0x26, 0x67, 0xf1, 0xde, 0x8d, 0x93, 0x53, 0xbb, 0xf6, 0xec, 0xd4, 0xae, 0xfd, 0x72, 0x6a, 0xd7, + 0x9e, 0x64, 0xb6, 0x71, 0x92, 0xd9, 0xc6, 0xb3, 0xcc, 0x36, 0x7e, 0xcf, 0x6c, 0xe3, 0xdb, 0x3f, + 0xec, 0xda, 0xe7, 0xeb, 0x7a, 0xd3, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x06, 0x55, 0x79, 0xe0, + 0x5a, 0x0c, 0x00, 0x00, } diff --git a/pkg/apis/authorization/v1beta1/generated.proto b/pkg/apis/authorization/v1beta1/generated.proto index b3df8977..137e8c63 100644 --- a/pkg/apis/authorization/v1beta1/generated.proto +++ b/pkg/apis/authorization/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/authorization/v1beta1/register.go b/pkg/apis/authorization/v1beta1/register.go index 6ae38ec8..8cc147ef 100644 --- a/pkg/apis/authorization/v1beta1/register.go +++ b/pkg/apis/authorization/v1beta1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "authorization.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) @@ -50,6 +50,6 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *LocalSubjectAccessReview) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *SubjectAccessReview) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *SelfSubjectAccessReview) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *LocalSubjectAccessReview) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *SubjectAccessReview) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *SelfSubjectAccessReview) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/autoscaling/register.go b/pkg/apis/autoscaling/register.go index d4aa8ee0..c006a4d4 100644 --- a/pkg/apis/autoscaling/register.go +++ b/pkg/apis/autoscaling/register.go @@ -18,23 +18,23 @@ package autoscaling import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "autoscaling" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -50,6 +50,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &HorizontalPodAutoscaler{}, &HorizontalPodAutoscalerList{}, &api.ListOptions{}, + &api.DeleteOptions{}, ) return nil } diff --git a/pkg/apis/autoscaling/v1/generated.pb.go b/pkg/apis/autoscaling/v1/generated.pb.go index 2c7c4840..6ac44132 100644 --- a/pkg/apis/autoscaling/v1/generated.pb.go +++ b/pkg/apis/autoscaling/v1/generated.pb.go @@ -1730,58 +1730,58 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 835 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x55, 0xcd, 0x6f, 0xdc, 0x44, - 0x14, 0x5f, 0xef, 0x47, 0x95, 0x8e, 0x49, 0x02, 0x83, 0xd4, 0xae, 0x52, 0x61, 0x47, 0x0b, 0x87, - 0x20, 0x5a, 0x5b, 0xbb, 0xa2, 0x88, 0x1e, 0xe3, 0xa0, 0xd2, 0x8a, 0x86, 0x46, 0x93, 0xb6, 0x42, - 0x48, 0x20, 0xcd, 0xda, 0xaf, 0xee, 0x74, 0xd7, 0x1e, 0x6b, 0x66, 0xbc, 0x42, 0x3d, 0x71, 0xe2, - 0xcc, 0x85, 0x03, 0xff, 0x0e, 0xa7, 0xdc, 0xe8, 0x91, 0xd3, 0x8a, 0x18, 0xf1, 0x5f, 0x70, 0x40, - 0x9e, 0x9d, 0x7a, 0xbf, 0xe2, 0x6d, 0x23, 0xe8, 0x6d, 0x67, 0xde, 0xef, 0xe3, 0xcd, 0x7b, 0xcf, - 0x6f, 0xd1, 0x9d, 0xd1, 0xe7, 0xd2, 0x63, 0xdc, 0x1f, 0xe5, 0x43, 0x10, 0x29, 0x28, 0x90, 0x7e, - 0x36, 0x8a, 0x7d, 0x9a, 0x31, 0xe9, 0xd3, 0x5c, 0x71, 0x19, 0xd2, 0x31, 0x4b, 0x63, 0x7f, 0xd2, - 0xf7, 0x63, 0x48, 0x41, 0x50, 0x05, 0x91, 0x97, 0x09, 0xae, 0x38, 0xfe, 0x78, 0x46, 0xf5, 0xe6, - 0x54, 0x2f, 0x1b, 0xc5, 0x5e, 0x49, 0xf5, 0x16, 0xa8, 0xde, 0xa4, 0xbf, 0x77, 0x2b, 0x66, 0xea, - 0x59, 0x3e, 0xf4, 0x42, 0x9e, 0xf8, 0x31, 0x8f, 0xb9, 0xaf, 0x15, 0x86, 0xf9, 0x53, 0x7d, 0xd2, - 0x07, 0xfd, 0x6b, 0xa6, 0xbc, 0x37, 0xa8, 0x4d, 0xca, 0x17, 0x20, 0x79, 0x2e, 0x42, 0x58, 0xcd, - 0x66, 0xef, 0x76, 0x3d, 0x27, 0x4f, 0x27, 0x20, 0x24, 0xe3, 0x29, 0x44, 0x6b, 0xb4, 0x9b, 0xf5, - 0xb4, 0xf5, 0x27, 0xef, 0xdd, 0xba, 0x18, 0x2d, 0xf2, 0x54, 0xb1, 0x64, 0x3d, 0xa7, 0xfe, 0xc5, - 0xf0, 0x5c, 0xb1, 0xb1, 0xcf, 0x52, 0x25, 0x95, 0x58, 0xa5, 0xf4, 0x7e, 0xb1, 0xd0, 0x8d, 0x23, - 0xc1, 0xa5, 0x7c, 0x32, 0x4b, 0xf9, 0xe1, 0xf0, 0x39, 0x84, 0x8a, 0xc0, 0x53, 0x10, 0x90, 0x86, - 0x80, 0xf7, 0x51, 0x7b, 0xc4, 0xd2, 0xa8, 0x6b, 0xed, 0x5b, 0x07, 0x57, 0x83, 0x77, 0xce, 0xa6, - 0x6e, 0xa3, 0x98, 0xba, 0xed, 0xaf, 0x58, 0x1a, 0x11, 0x1d, 0x29, 0x11, 0x29, 0x4d, 0xa0, 0xdb, - 0x5c, 0x46, 0x7c, 0x4d, 0x13, 0x20, 0x3a, 0x82, 0x07, 0x08, 0xd1, 0x8c, 0x19, 0x83, 0x6e, 0x4b, - 0xe3, 0xb0, 0xc1, 0xa1, 0xc3, 0x93, 0xfb, 0x26, 0x42, 0x16, 0x50, 0xbd, 0xdf, 0x9b, 0xe8, 0xfa, - 0x3d, 0x2e, 0xd8, 0x0b, 0x9e, 0x2a, 0x3a, 0x3e, 0xe1, 0xd1, 0xa1, 0xe9, 0x30, 0x08, 0xfc, 0x0d, - 0xda, 0x4a, 0x40, 0xd1, 0x88, 0x2a, 0xaa, 0xf3, 0xb2, 0x07, 0x07, 0x5e, 0xed, 0x6c, 0x78, 0x93, - 0xbe, 0x37, 0x7b, 0xd4, 0x31, 0x28, 0x3a, 0xf7, 0x9d, 0xdf, 0x91, 0x4a, 0x0d, 0x3f, 0x43, 0x6d, - 0x99, 0x41, 0xa8, 0xdf, 0x62, 0x0f, 0xee, 0x7a, 0x6f, 0x3c, 0x71, 0x5e, 0x4d, 0xae, 0xa7, 0x19, - 0x84, 0xf3, 0x9a, 0x94, 0x27, 0xa2, 0x1d, 0x70, 0x86, 0xae, 0x48, 0x45, 0x55, 0x2e, 0x75, 0x3d, - 0xec, 0xc1, 0xbd, 0xff, 0xc1, 0x4b, 0xeb, 0x05, 0x3b, 0xc6, 0xed, 0xca, 0xec, 0x4c, 0x8c, 0x4f, - 0xef, 0x6f, 0x0b, 0xdd, 0xa8, 0x61, 0x3e, 0x60, 0x52, 0xe1, 0xef, 0xd6, 0xaa, 0xea, 0x6f, 0xa8, - 0xea, 0xc2, 0x8c, 0x7b, 0x25, 0x5d, 0x17, 0xf7, 0x5d, 0x63, 0xbd, 0xf5, 0xea, 0x66, 0xa1, 0xb4, - 0x31, 0xea, 0x30, 0x05, 0x89, 0xec, 0x36, 0xf7, 0x5b, 0x07, 0xf6, 0x20, 0xf8, 0xef, 0xef, 0x0d, - 0xb6, 0x8d, 0x5d, 0xe7, 0x7e, 0x29, 0x4c, 0x66, 0xfa, 0xbd, 0x7f, 0x9a, 0xb5, 0xef, 0x2c, 0xeb, - 0x8f, 0x7f, 0xb2, 0xd0, 0x8e, 0x3e, 0x3e, 0xa2, 0x22, 0x86, 0x72, 0xd4, 0xcd, 0x73, 0x2f, 0xd3, - 0xee, 0x0d, 0x9f, 0x4c, 0x70, 0xcd, 0xa4, 0xb5, 0x73, 0xba, 0xe4, 0x42, 0x56, 0x5c, 0x71, 0x1f, - 0xd9, 0x09, 0x4b, 0x09, 0x64, 0x63, 0x16, 0x52, 0xa9, 0x67, 0xae, 0x13, 0xec, 0x16, 0x53, 0xd7, - 0x3e, 0x9e, 0x5f, 0x93, 0x45, 0x0c, 0xbe, 0x8d, 0xec, 0x84, 0xfe, 0x50, 0x51, 0x5a, 0x9a, 0xf2, - 0xbe, 0xf1, 0xb3, 0x8f, 0xe7, 0x21, 0xb2, 0x88, 0xc3, 0xcf, 0x91, 0xa3, 0xb4, 0xed, 0xd1, 0xc9, - 0xe3, 0xc7, 0x8a, 0x8d, 0xd9, 0x0b, 0xaa, 0x18, 0x4f, 0x4f, 0x40, 0x84, 0x90, 0x2a, 0x1a, 0x43, - 0xb7, 0xad, 0x95, 0x7a, 0xc5, 0xd4, 0x75, 0x1e, 0x6d, 0x44, 0x92, 0xd7, 0x28, 0xf5, 0x7e, 0x6b, - 0xa1, 0x0f, 0x36, 0x0e, 0x28, 0xbe, 0x8b, 0x30, 0x1f, 0x4a, 0x10, 0x13, 0x88, 0xbe, 0x9c, 0x6d, - 0xa3, 0x72, 0x2d, 0x94, 0x3d, 0x68, 0x05, 0xd7, 0x8a, 0xa9, 0x8b, 0x1f, 0xae, 0x45, 0xc9, 0x05, - 0x0c, 0x1c, 0xa1, 0xed, 0x31, 0x95, 0x6a, 0x56, 0x65, 0x66, 0x36, 0x90, 0x3d, 0xf8, 0xe4, 0x0d, - 0xa7, 0xb6, 0xa4, 0x04, 0xef, 0x15, 0x53, 0x77, 0xfb, 0xc1, 0xa2, 0x0a, 0x59, 0x16, 0xc5, 0x87, - 0x68, 0x37, 0xcc, 0x85, 0x80, 0x54, 0xad, 0x94, 0xfd, 0xba, 0x29, 0xfb, 0xee, 0xd1, 0x72, 0x98, - 0xac, 0xe2, 0x4b, 0x89, 0x08, 0x24, 0x13, 0x10, 0x55, 0x12, 0xed, 0x65, 0x89, 0x2f, 0x96, 0xc3, - 0x64, 0x15, 0x8f, 0x13, 0xe4, 0x1a, 0xd5, 0xda, 0x16, 0x76, 0xb4, 0xe4, 0x87, 0xc5, 0xd4, 0x75, - 0x8f, 0x36, 0x43, 0xc9, 0xeb, 0xb4, 0x7a, 0xbf, 0x36, 0x51, 0x47, 0x97, 0xe0, 0x2d, 0xee, 0xda, - 0x27, 0x4b, 0xbb, 0xf6, 0xd3, 0x4b, 0x7c, 0x7c, 0x3a, 0xb3, 0xda, 0xcd, 0xfa, 0xfd, 0xca, 0x66, - 0xfd, 0xec, 0xd2, 0xca, 0x9b, 0xf7, 0xe8, 0x1d, 0x74, 0xb5, 0x4a, 0x00, 0xdf, 0x44, 0x5b, 0xe2, - 0x55, 0x4f, 0x2d, 0xdd, 0x80, 0x6a, 0x07, 0x56, 0xcd, 0xac, 0x10, 0x3d, 0x86, 0xec, 0x05, 0x87, - 0xcb, 0x91, 0x4b, 0xb4, 0x84, 0x31, 0x84, 0x8a, 0x0b, 0xf3, 0x5f, 0x5b, 0xa1, 0x4f, 0xcd, 0x3d, - 0xa9, 0x10, 0xc1, 0x47, 0x67, 0xe7, 0x4e, 0xe3, 0xe5, 0xb9, 0xd3, 0xf8, 0xe3, 0xdc, 0x69, 0xfc, - 0x58, 0x38, 0xd6, 0x59, 0xe1, 0x58, 0x2f, 0x0b, 0xc7, 0xfa, 0xb3, 0x70, 0xac, 0x9f, 0xff, 0x72, - 0x1a, 0xdf, 0x36, 0x27, 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x45, 0xec, 0x9a, 0x15, 0x8e, - 0x09, 0x00, 0x00, + // 845 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x55, 0xcd, 0x8f, 0xdb, 0x44, + 0x14, 0x8f, 0xf3, 0x51, 0x6d, 0xc7, 0xec, 0x2e, 0x0c, 0x52, 0x1b, 0x6d, 0x85, 0xbd, 0x0a, 0x1c, + 0x16, 0xd1, 0xda, 0x4a, 0xd4, 0x22, 0x7a, 0x5c, 0x2f, 0x2a, 0xad, 0xe8, 0xd2, 0xd5, 0x6c, 0x5b, + 0x21, 0x24, 0x90, 0x26, 0xf6, 0xab, 0x77, 0x9a, 0xf8, 0x43, 0x33, 0xe3, 0x08, 0xf5, 0xc4, 0x89, + 0x33, 0x17, 0x0e, 0xfc, 0x3b, 0x9c, 0xf6, 0x46, 0x8f, 0x9c, 0x22, 0xd6, 0x88, 0xff, 0x82, 0x03, + 0xf2, 0x64, 0xea, 0x38, 0xc9, 0x3a, 0xdd, 0x08, 0xb8, 0x65, 0xe6, 0xfd, 0x3e, 0xde, 0x7b, 0xf3, + 0xfc, 0x82, 0xee, 0x8f, 0x3e, 0x13, 0x0e, 0x4b, 0xdc, 0x51, 0x36, 0x04, 0x1e, 0x83, 0x04, 0xe1, + 0xa6, 0xa3, 0xd0, 0xa5, 0x29, 0x13, 0x2e, 0xcd, 0x64, 0x22, 0x7c, 0x3a, 0x66, 0x71, 0xe8, 0x4e, + 0xfa, 0x6e, 0x08, 0x31, 0x70, 0x2a, 0x21, 0x70, 0x52, 0x9e, 0xc8, 0x04, 0x7f, 0x3c, 0xa3, 0x3a, + 0x73, 0xaa, 0x93, 0x8e, 0x42, 0xa7, 0xa0, 0x3a, 0x15, 0xaa, 0x33, 0xe9, 0xef, 0xdd, 0x09, 0x99, + 0x3c, 0xcb, 0x86, 0x8e, 0x9f, 0x44, 0x6e, 0x98, 0x84, 0x89, 0xab, 0x14, 0x86, 0xd9, 0x0b, 0x75, + 0x52, 0x07, 0xf5, 0x6b, 0xa6, 0xbc, 0x37, 0xa8, 0x4d, 0xca, 0xe5, 0x20, 0x92, 0x8c, 0xfb, 0xb0, + 0x9c, 0xcd, 0xde, 0xbd, 0x7a, 0x4e, 0x16, 0x4f, 0x80, 0x0b, 0x96, 0xc4, 0x10, 0xac, 0xd0, 0x6e, + 0xd7, 0xd3, 0x56, 0x4b, 0xde, 0xbb, 0x73, 0x39, 0x9a, 0x67, 0xb1, 0x64, 0xd1, 0x6a, 0x4e, 0x77, + 0xd7, 0xc3, 0x85, 0x7f, 0x06, 0x11, 0x5d, 0x61, 0xf5, 0x2f, 0x67, 0x65, 0x92, 0x8d, 0x5d, 0x16, + 0x4b, 0x21, 0xf9, 0x32, 0xa5, 0xf7, 0xb3, 0x81, 0x6e, 0x1d, 0xf1, 0x44, 0x88, 0xe7, 0xb3, 0x42, + 0x9f, 0x0c, 0x5f, 0x82, 0x2f, 0x09, 0xbc, 0x00, 0x0e, 0xb1, 0x0f, 0x78, 0x1f, 0xb5, 0x47, 0x2c, + 0x0e, 0xba, 0xc6, 0xbe, 0x71, 0x70, 0xdd, 0x7b, 0xe7, 0x7c, 0x6a, 0x37, 0xf2, 0xa9, 0xdd, 0xfe, + 0x92, 0xc5, 0x01, 0x51, 0x91, 0x02, 0x11, 0xd3, 0x08, 0xba, 0xcd, 0x45, 0xc4, 0x57, 0x34, 0x02, + 0xa2, 0x22, 0x78, 0x80, 0x10, 0x4d, 0x99, 0x36, 0xe8, 0xb6, 0x14, 0x0e, 0x6b, 0x1c, 0x3a, 0x3c, + 0x79, 0xa4, 0x23, 0xa4, 0x82, 0xea, 0xfd, 0xd6, 0x44, 0x37, 0x1f, 0x26, 0x9c, 0xbd, 0x4a, 0x62, + 0x49, 0xc7, 0x27, 0x49, 0x70, 0xa8, 0xe7, 0x02, 0x38, 0xfe, 0x1a, 0x6d, 0x45, 0x20, 0x69, 0x40, + 0x25, 0x55, 0x79, 0x99, 0x83, 0x03, 0xa7, 0x76, 0xa2, 0x9c, 0x49, 0xdf, 0x99, 0x15, 0x75, 0x0c, + 0x92, 0xce, 0x7d, 0xe7, 0x77, 0xa4, 0x54, 0xc3, 0x67, 0xa8, 0x2d, 0x52, 0xf0, 0x55, 0x2d, 0xe6, + 0xe0, 0x81, 0x73, 0xe5, 0x39, 0x75, 0x6a, 0x72, 0x3d, 0x4d, 0xc1, 0x9f, 0xf7, 0xa4, 0x38, 0x11, + 0xe5, 0x80, 0x53, 0x74, 0x4d, 0x48, 0x2a, 0x33, 0xa1, 0xfa, 0x61, 0x0e, 0x1e, 0xfe, 0x07, 0x5e, + 0x4a, 0xcf, 0xdb, 0xd1, 0x6e, 0xd7, 0x66, 0x67, 0xa2, 0x7d, 0x7a, 0x7f, 0x19, 0xe8, 0x56, 0x0d, + 0xf3, 0x31, 0x13, 0x12, 0x7f, 0xbb, 0xd2, 0x55, 0x77, 0x4d, 0x57, 0x2b, 0x5f, 0x86, 0x53, 0xd0, + 0x55, 0x73, 0xdf, 0xd5, 0xd6, 0x5b, 0x6f, 0x6e, 0x2a, 0xad, 0x0d, 0x51, 0x87, 0x49, 0x88, 0x44, + 0xb7, 0xb9, 0xdf, 0x3a, 0x30, 0x07, 0xde, 0xbf, 0xaf, 0xd7, 0xdb, 0xd6, 0x76, 0x9d, 0x47, 0x85, + 0x30, 0x99, 0xe9, 0xf7, 0xfe, 0x6e, 0xd6, 0xd6, 0x59, 0xf4, 0x1f, 0xff, 0x68, 0xa0, 0x1d, 0x75, + 0x7c, 0x4a, 0x79, 0x08, 0xc5, 0xa8, 0xeb, 0x72, 0x37, 0x79, 0xee, 0x35, 0x9f, 0x8c, 0x77, 0x43, + 0xa7, 0xb5, 0x73, 0xba, 0xe0, 0x42, 0x96, 0x5c, 0x71, 0x1f, 0x99, 0x11, 0x8b, 0x09, 0xa4, 0x63, + 0xe6, 0x53, 0xa1, 0x66, 0xae, 0xe3, 0xed, 0xe6, 0x53, 0xdb, 0x3c, 0x9e, 0x5f, 0x93, 0x2a, 0x06, + 0xdf, 0x43, 0x66, 0x44, 0xbf, 0x2f, 0x29, 0x2d, 0x45, 0x79, 0x5f, 0xfb, 0x99, 0xc7, 0xf3, 0x10, + 0xa9, 0xe2, 0xf0, 0x4b, 0x64, 0x49, 0x65, 0x7b, 0x74, 0xf2, 0xec, 0x99, 0x64, 0x63, 0xf6, 0x8a, + 0x4a, 0x96, 0xc4, 0x27, 0xc0, 0x7d, 0x88, 0x25, 0x0d, 0xa1, 0xdb, 0x56, 0x4a, 0xbd, 0x7c, 0x6a, + 0x5b, 0x4f, 0xd7, 0x22, 0xc9, 0x5b, 0x94, 0x7a, 0xbf, 0xb6, 0xd0, 0x07, 0x6b, 0x07, 0x14, 0x3f, + 0x40, 0x38, 0x19, 0x0a, 0xe0, 0x13, 0x08, 0xbe, 0x98, 0x6d, 0xa3, 0x62, 0x2d, 0x14, 0x6f, 0xd0, + 0xf2, 0x6e, 0xe4, 0x53, 0x1b, 0x3f, 0x59, 0x89, 0x92, 0x4b, 0x18, 0x38, 0x40, 0xdb, 0x63, 0x2a, + 0xe4, 0xac, 0xcb, 0x4c, 0x6f, 0x20, 0x73, 0xf0, 0xc9, 0x15, 0xa7, 0xb6, 0xa0, 0x78, 0xef, 0xe5, + 0x53, 0x7b, 0xfb, 0x71, 0x55, 0x85, 0x2c, 0x8a, 0xe2, 0x43, 0xb4, 0xeb, 0x67, 0x9c, 0x43, 0x2c, + 0x97, 0xda, 0x7e, 0x53, 0xb7, 0x7d, 0xf7, 0x68, 0x31, 0x4c, 0x96, 0xf1, 0x85, 0x44, 0x00, 0x82, + 0x71, 0x08, 0x4a, 0x89, 0xf6, 0xa2, 0xc4, 0xe7, 0x8b, 0x61, 0xb2, 0x8c, 0xc7, 0x11, 0xb2, 0xb5, + 0x6a, 0xed, 0x13, 0x76, 0x94, 0xe4, 0x87, 0xf9, 0xd4, 0xb6, 0x8f, 0xd6, 0x43, 0xc9, 0xdb, 0xb4, + 0x7a, 0xbf, 0x34, 0x51, 0x47, 0xb5, 0xe0, 0x7f, 0xdc, 0xb5, 0xcf, 0x17, 0x76, 0xed, 0xdd, 0x0d, + 0x3e, 0x3e, 0x95, 0x59, 0xed, 0x66, 0xfd, 0x6e, 0x69, 0xb3, 0x7e, 0xba, 0xb1, 0xf2, 0xfa, 0x3d, + 0x7a, 0x1f, 0x5d, 0x2f, 0x13, 0xc0, 0xb7, 0xd1, 0x16, 0x7f, 0xf3, 0xa6, 0x86, 0x7a, 0x80, 0x72, + 0x07, 0x96, 0x8f, 0x59, 0x22, 0x7a, 0x0c, 0x99, 0x15, 0x87, 0xcd, 0xc8, 0x05, 0x5a, 0xc0, 0x18, + 0x7c, 0x99, 0x70, 0xfd, 0x5f, 0x5b, 0xa2, 0x4f, 0xf5, 0x3d, 0x29, 0x11, 0xde, 0x47, 0xe7, 0x17, + 0x56, 0xe3, 0xf5, 0x85, 0xd5, 0xf8, 0xfd, 0xc2, 0x6a, 0xfc, 0x90, 0x5b, 0xc6, 0x79, 0x6e, 0x19, + 0xaf, 0x73, 0xcb, 0xf8, 0x23, 0xb7, 0x8c, 0x9f, 0xfe, 0xb4, 0x1a, 0xdf, 0x34, 0x27, 0xfd, 0x7f, + 0x02, 0x00, 0x00, 0xff, 0xff, 0x11, 0x6a, 0xc0, 0x63, 0xc4, 0x09, 0x00, 0x00, } diff --git a/pkg/apis/autoscaling/v1/generated.proto b/pkg/apis/autoscaling/v1/generated.proto index 56d19a9c..249ce572 100644 --- a/pkg/apis/autoscaling/v1/generated.proto +++ b/pkg/apis/autoscaling/v1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/autoscaling/v1/register.go b/pkg/apis/autoscaling/v1/register.go index c0f83ded..84a2592b 100644 --- a/pkg/apis/autoscaling/v1/register.go +++ b/pkg/apis/autoscaling/v1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "autoscaling" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) diff --git a/pkg/apis/batch/register.go b/pkg/apis/batch/register.go index 792f057c..c322cf96 100644 --- a/pkg/apis/batch/register.go +++ b/pkg/apis/batch/register.go @@ -18,23 +18,23 @@ package batch import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "batch" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -52,6 +52,7 @@ func addKnownTypes(scheme *runtime.Scheme) error { &CronJob{}, &CronJobList{}, &api.ListOptions{}, + &api.DeleteOptions{}, ) scheme.AddKnownTypeWithName(SchemeGroupVersion.WithKind("ScheduledJob"), &CronJob{}) scheme.AddKnownTypeWithName(SchemeGroupVersion.WithKind("ScheduledJobList"), &CronJobList{}) diff --git a/pkg/apis/batch/v1/generated.pb.go b/pkg/apis/batch/v1/generated.pb.go index f062e52e..f4b6ec46 100644 --- a/pkg/apis/batch/v1/generated.pb.go +++ b/pkg/apis/batch/v1/generated.pb.go @@ -1519,59 +1519,60 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 863 bytes of a gzipped FileDescriptorProto + // 872 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x54, 0xcf, 0x6f, 0xe3, 0x44, 0x14, 0xce, 0x8f, 0xa6, 0x4d, 0xa6, 0x3f, 0x76, 0x19, 0xa9, 0x52, 0xc8, 0x21, 0x59, 0x05, 0x84, - 0x16, 0xb1, 0x1d, 0x2b, 0x65, 0x91, 0x10, 0x07, 0x24, 0x5c, 0x84, 0x44, 0xd5, 0xb2, 0xd5, 0xa4, - 0x42, 0x2b, 0x10, 0x48, 0x63, 0xfb, 0x6d, 0x3a, 0xd4, 0xf6, 0x58, 0x9e, 0x71, 0xd0, 0xde, 0xb8, - 0x71, 0xe5, 0xaf, 0x01, 0xf1, 0x1f, 0xf4, 0xb8, 0xe2, 0xc4, 0x29, 0xa2, 0xe6, 0xbf, 0xd8, 0x13, - 0xf2, 0x78, 0x62, 0x3b, 0x4d, 0x1a, 0xa5, 0xdc, 0x3c, 0x6f, 0xbe, 0xef, 0x7b, 0xcf, 0xef, 0x7d, - 0xf3, 0xd0, 0xc7, 0xd7, 0x9f, 0x4a, 0xc2, 0x85, 0x75, 0x9d, 0x38, 0x10, 0x87, 0xa0, 0x40, 0x5a, - 0xd1, 0xf5, 0xc4, 0x62, 0x11, 0x97, 0x96, 0xc3, 0x94, 0x7b, 0x65, 0x4d, 0x47, 0xd6, 0x04, 0x42, - 0x88, 0x99, 0x02, 0x8f, 0x44, 0xb1, 0x50, 0x02, 0xbf, 0x97, 0x93, 0x48, 0x49, 0x22, 0xd1, 0xf5, - 0x84, 0x64, 0x24, 0xa2, 0x49, 0x64, 0x3a, 0xea, 0x1d, 0x4d, 0xb8, 0xba, 0x4a, 0x1c, 0xe2, 0x8a, - 0xc0, 0x9a, 0x88, 0x89, 0xb0, 0x34, 0xd7, 0x49, 0x5e, 0xe9, 0x93, 0x3e, 0xe8, 0xaf, 0x5c, 0xb3, - 0x77, 0x7c, 0x6f, 0x21, 0x56, 0x0c, 0x52, 0x24, 0xb1, 0x0b, 0x77, 0xeb, 0xe8, 0x7d, 0x72, 0x3f, - 0x27, 0x09, 0xa7, 0x10, 0x4b, 0x2e, 0x42, 0xf0, 0x96, 0x68, 0xcf, 0xee, 0xa7, 0x2d, 0xff, 0x6c, - 0xef, 0x68, 0x35, 0x3a, 0x4e, 0x42, 0xc5, 0x83, 0xe5, 0x9a, 0x46, 0xab, 0xe1, 0x89, 0xe2, 0xbe, - 0xc5, 0x43, 0x25, 0x55, 0x7c, 0x97, 0x32, 0xfc, 0xb5, 0x81, 0x9a, 0xa7, 0xc2, 0xc1, 0x2f, 0x51, - 0x3b, 0x00, 0xc5, 0x3c, 0xa6, 0x58, 0xb7, 0xfe, 0xa4, 0xfe, 0x74, 0xf7, 0xf8, 0x29, 0xb9, 0xb7, - 0xd3, 0x64, 0x3a, 0x22, 0x2f, 0x9c, 0x9f, 0xc0, 0x55, 0xe7, 0xa0, 0x98, 0x8d, 0x6f, 0x66, 0x83, - 0x5a, 0x3a, 0x1b, 0xa0, 0x32, 0x46, 0x0b, 0x35, 0xfc, 0x0d, 0xda, 0x92, 0x11, 0xb8, 0xdd, 0x86, - 0x56, 0x7d, 0x46, 0x36, 0x98, 0x1f, 0x39, 0x15, 0xce, 0x38, 0x02, 0xd7, 0xde, 0x33, 0xca, 0x5b, - 0xd9, 0x89, 0x6a, 0x1d, 0xfc, 0x2d, 0xda, 0x96, 0x8a, 0xa9, 0x44, 0x76, 0x9b, 0x5a, 0x91, 0x6c, - 0xac, 0xa8, 0x59, 0xf6, 0x81, 0xd1, 0xdc, 0xce, 0xcf, 0xd4, 0xa8, 0x0d, 0xff, 0x6a, 0xa2, 0xbd, - 0x53, 0xe1, 0x9c, 0x88, 0xd0, 0xe3, 0x8a, 0x8b, 0x10, 0x3f, 0x47, 0x5b, 0xea, 0x75, 0x04, 0xba, - 0x1d, 0x1d, 0xfb, 0xc9, 0xbc, 0x94, 0xcb, 0xd7, 0x11, 0xbc, 0x9d, 0x0d, 0x1e, 0x57, 0xb1, 0x59, - 0x8c, 0x6a, 0x74, 0xa5, 0xbc, 0x86, 0xe6, 0x7d, 0xbe, 0x98, 0xee, 0xed, 0x6c, 0xb0, 0xd6, 0x02, - 0xa4, 0xd0, 0x5c, 0x2c, 0x0f, 0x5f, 0xa1, 0x7d, 0x9f, 0x49, 0x75, 0x11, 0x0b, 0x07, 0x2e, 0x79, - 0x00, 0xe6, 0xef, 0x3f, 0x5a, 0x33, 0xa5, 0x8a, 0x0f, 0x49, 0x46, 0xb1, 0x0f, 0x4d, 0x2d, 0xfb, - 0x67, 0x55, 0x25, 0xba, 0x28, 0x8c, 0x7f, 0x46, 0x38, 0x0b, 0x5c, 0xc6, 0x2c, 0x94, 0xf9, 0xdf, - 0x65, 0xe9, 0xb6, 0x1e, 0x9e, 0xae, 0x67, 0xd2, 0xe1, 0xb3, 0x25, 0x39, 0xba, 0x22, 0x05, 0xfe, - 0x00, 0x6d, 0xc7, 0xc0, 0xa4, 0x08, 0xbb, 0x2d, 0xdd, 0xba, 0x62, 0x52, 0x54, 0x47, 0xa9, 0xb9, - 0xc5, 0x1f, 0xa2, 0x9d, 0x00, 0xa4, 0x64, 0x13, 0xe8, 0x6e, 0x6b, 0xe0, 0x23, 0x03, 0xdc, 0x39, - 0xcf, 0xc3, 0x74, 0x7e, 0x3f, 0xfc, 0xa3, 0x8e, 0x76, 0x4e, 0x85, 0x73, 0xc6, 0xa5, 0xc2, 0x3f, - 0x2c, 0x59, 0xdc, 0xda, 0xf0, 0x6f, 0x32, 0xba, 0x76, 0xfa, 0x63, 0x93, 0xa8, 0x3d, 0x8f, 0x54, - 0x7c, 0x7e, 0x8e, 0x5a, 0x5c, 0x41, 0x90, 0xcd, 0xbd, 0xb9, 0xfe, 0xf9, 0x2c, 0xda, 0xd2, 0xde, - 0x37, 0xa2, 0xad, 0xaf, 0x33, 0x3a, 0xcd, 0x55, 0x86, 0x7f, 0x36, 0x75, 0xe5, 0x99, 0xf1, 0xf1, - 0x08, 0xed, 0x46, 0x2c, 0x66, 0xbe, 0x0f, 0x3e, 0x97, 0x81, 0x2e, 0xbe, 0x65, 0x3f, 0x4a, 0x67, - 0x83, 0xdd, 0x8b, 0x32, 0x4c, 0xab, 0x98, 0x8c, 0xe2, 0x8a, 0x20, 0xf2, 0x21, 0xeb, 0x6e, 0xee, - 0x45, 0x43, 0x39, 0x29, 0xc3, 0xb4, 0x8a, 0xc1, 0x2f, 0xd0, 0x21, 0x73, 0x15, 0x9f, 0xc2, 0x97, - 0xc0, 0x3c, 0x9f, 0x87, 0x30, 0x06, 0x57, 0x84, 0x5e, 0xfe, 0xce, 0x9a, 0xf6, 0xbb, 0xe9, 0x6c, - 0x70, 0xf8, 0xc5, 0x2a, 0x00, 0x5d, 0xcd, 0xc3, 0x3f, 0xa2, 0xb6, 0x04, 0x1f, 0x5c, 0x25, 0x62, - 0x63, 0x9f, 0xe7, 0x9b, 0x36, 0x9c, 0x39, 0xe0, 0x8f, 0x0d, 0xd7, 0xde, 0xcb, 0x3a, 0x3e, 0x3f, - 0xd1, 0x42, 0x13, 0x7f, 0x86, 0x0e, 0x02, 0x16, 0x26, 0xac, 0x40, 0x6a, 0xdf, 0xb4, 0x6d, 0x9c, - 0xce, 0x06, 0x07, 0xe7, 0x0b, 0x37, 0xf4, 0x0e, 0x12, 0x7f, 0x8f, 0xda, 0x0a, 0x82, 0xc8, 0x67, - 0x2a, 0x37, 0xd1, 0xee, 0xf1, 0xd1, 0xfa, 0x7d, 0x77, 0x21, 0xbc, 0x4b, 0x43, 0xd0, 0xab, 0xa9, - 0xb0, 0xc2, 0x3c, 0x4a, 0x0b, 0xc1, 0xe1, 0xef, 0x4d, 0xd4, 0x29, 0x16, 0x0e, 0x06, 0x84, 0xdc, - 0xf9, 0xa3, 0x96, 0xdd, 0xba, 0x76, 0xc7, 0x68, 0x53, 0x77, 0x14, 0xeb, 0xa0, 0xdc, 0xb2, 0x45, - 0x48, 0xd2, 0x8a, 0x30, 0x7e, 0x89, 0x3a, 0x52, 0xb1, 0x58, 0xe9, 0xd7, 0xda, 0x78, 0xf8, 0x6b, - 0xdd, 0x4f, 0x67, 0x83, 0xce, 0x78, 0xae, 0x40, 0x4b, 0x31, 0x3c, 0x41, 0x07, 0xa5, 0x4f, 0xfe, - 0xef, 0xee, 0xd1, 0x43, 0x39, 0x59, 0x90, 0xa1, 0x77, 0x64, 0xb3, 0x05, 0x90, 0x3b, 0x49, 0xdb, - 0xa5, 0x55, 0x2e, 0x80, 0xdc, 0x76, 0xd4, 0xdc, 0x62, 0x0b, 0x75, 0x64, 0xe2, 0xba, 0x00, 0x1e, - 0x78, 0x7a, 0xe6, 0x2d, 0xfb, 0x1d, 0x03, 0xed, 0x8c, 0xe7, 0x17, 0xb4, 0xc4, 0x64, 0xc2, 0xaf, - 0x18, 0xf7, 0xc1, 0xd3, 0xb3, 0xae, 0x08, 0x7f, 0xa5, 0xa3, 0xd4, 0xdc, 0xda, 0xef, 0xdf, 0xdc, - 0xf6, 0x6b, 0x6f, 0x6e, 0xfb, 0xb5, 0xbf, 0x6f, 0xfb, 0xb5, 0x5f, 0xd2, 0x7e, 0xfd, 0x26, 0xed, - 0xd7, 0xdf, 0xa4, 0xfd, 0xfa, 0x3f, 0x69, 0xbf, 0xfe, 0xdb, 0xbf, 0xfd, 0xda, 0x77, 0x8d, 0xe9, - 0xe8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9a, 0x45, 0x86, 0xd9, 0xb8, 0x08, 0x00, 0x00, + 0x16, 0xb1, 0x1d, 0x2b, 0xa5, 0x48, 0x88, 0x03, 0x12, 0x2e, 0x42, 0xa2, 0x6a, 0xd9, 0x6a, 0x52, + 0xa1, 0x15, 0x08, 0xa4, 0xb1, 0xfd, 0x36, 0x1d, 0x6a, 0x7b, 0x2c, 0xcf, 0x38, 0x68, 0x6f, 0xdc, + 0xb8, 0xf2, 0xd7, 0x80, 0xf8, 0x0f, 0x7a, 0x5c, 0x71, 0xe2, 0x14, 0x51, 0xf3, 0x5f, 0xec, 0x09, + 0x79, 0x3c, 0xb1, 0x9d, 0x26, 0x8d, 0xb2, 0xdc, 0x3c, 0xef, 0x7d, 0xdf, 0xf7, 0x9e, 0xe7, 0x7d, + 0xf3, 0xd0, 0xc7, 0x37, 0x9f, 0x4a, 0xc2, 0x85, 0x75, 0x93, 0x38, 0x10, 0x87, 0xa0, 0x40, 0x5a, + 0xd1, 0xcd, 0xc4, 0x62, 0x11, 0x97, 0x96, 0xc3, 0x94, 0x7b, 0x6d, 0x4d, 0x47, 0xd6, 0x04, 0x42, + 0x88, 0x99, 0x02, 0x8f, 0x44, 0xb1, 0x50, 0x02, 0xbf, 0x97, 0x93, 0x48, 0x49, 0x22, 0xd1, 0xcd, + 0x84, 0x64, 0x24, 0xa2, 0x49, 0x64, 0x3a, 0xea, 0x1d, 0x4d, 0xb8, 0xba, 0x4e, 0x1c, 0xe2, 0x8a, + 0xc0, 0x9a, 0x88, 0x89, 0xb0, 0x34, 0xd7, 0x49, 0x5e, 0xea, 0x93, 0x3e, 0xe8, 0xaf, 0x5c, 0xb3, + 0x77, 0xfc, 0x60, 0x23, 0x56, 0x0c, 0x52, 0x24, 0xb1, 0x0b, 0xf7, 0xfb, 0xe8, 0x7d, 0xf2, 0x30, + 0x27, 0x09, 0xa7, 0x10, 0x4b, 0x2e, 0x42, 0xf0, 0x96, 0x68, 0xcf, 0x1e, 0xa6, 0x2d, 0xff, 0x6c, + 0xef, 0x68, 0x35, 0x3a, 0x4e, 0x42, 0xc5, 0x83, 0xe5, 0x9e, 0x4e, 0xd6, 0xc3, 0xa5, 0x7b, 0x0d, + 0x01, 0x5b, 0x62, 0x8d, 0x56, 0xb3, 0x12, 0xc5, 0x7d, 0x8b, 0x87, 0x4a, 0xaa, 0xf8, 0x3e, 0x65, + 0xf8, 0x6b, 0x03, 0x35, 0xcf, 0x84, 0x83, 0x5f, 0xa0, 0x76, 0x00, 0x8a, 0x79, 0x4c, 0xb1, 0x6e, + 0xfd, 0x49, 0xfd, 0xe9, 0xee, 0xf1, 0x53, 0xf2, 0xe0, 0x7c, 0xc8, 0x74, 0x44, 0x9e, 0x3b, 0x3f, + 0x81, 0xab, 0x2e, 0x40, 0x31, 0x1b, 0xdf, 0xce, 0x06, 0xb5, 0x74, 0x36, 0x40, 0x65, 0x8c, 0x16, + 0x6a, 0xf8, 0x1b, 0xb4, 0x25, 0x23, 0x70, 0xbb, 0x0d, 0xad, 0xfa, 0x8c, 0x6c, 0x30, 0x75, 0x72, + 0x26, 0x9c, 0x71, 0x04, 0xae, 0xbd, 0x67, 0x94, 0xb7, 0xb2, 0x13, 0xd5, 0x3a, 0xf8, 0x5b, 0xb4, + 0x2d, 0x15, 0x53, 0x89, 0xec, 0x36, 0xb5, 0x22, 0xd9, 0x58, 0x51, 0xb3, 0xec, 0x03, 0xa3, 0xb9, + 0x9d, 0x9f, 0xa9, 0x51, 0x1b, 0xfe, 0xd5, 0x44, 0x7b, 0x67, 0xc2, 0x39, 0x15, 0xa1, 0xc7, 0x15, + 0x17, 0x21, 0x3e, 0x41, 0x5b, 0xea, 0x55, 0x04, 0xfa, 0x3a, 0x3a, 0xf6, 0x93, 0x79, 0x2b, 0x57, + 0xaf, 0x22, 0x78, 0x33, 0x1b, 0x3c, 0xae, 0x62, 0xb3, 0x18, 0xd5, 0xe8, 0x4a, 0x7b, 0x0d, 0xcd, + 0xfb, 0x7c, 0xb1, 0xdc, 0x9b, 0xd9, 0x60, 0xad, 0x71, 0x48, 0xa1, 0xb9, 0xd8, 0x1e, 0xbe, 0x46, + 0xfb, 0x3e, 0x93, 0xea, 0x32, 0x16, 0x0e, 0x5c, 0xf1, 0x00, 0xcc, 0xdf, 0x7f, 0xb4, 0x66, 0x4a, + 0x15, 0xf7, 0x92, 0x8c, 0x62, 0x1f, 0x9a, 0x5e, 0xf6, 0xcf, 0xab, 0x4a, 0x74, 0x51, 0x18, 0xff, + 0x8c, 0x70, 0x16, 0xb8, 0x8a, 0x59, 0x28, 0xf3, 0xbf, 0xcb, 0xca, 0x6d, 0xbd, 0x7d, 0xb9, 0x9e, + 0x29, 0x87, 0xcf, 0x97, 0xe4, 0xe8, 0x8a, 0x12, 0xf8, 0x03, 0xb4, 0x1d, 0x03, 0x93, 0x22, 0xec, + 0xb6, 0xf4, 0xd5, 0x15, 0x93, 0xa2, 0x3a, 0x4a, 0x4d, 0x16, 0x7f, 0x88, 0x76, 0x02, 0x90, 0x92, + 0x4d, 0xa0, 0xbb, 0xad, 0x81, 0x8f, 0x0c, 0x70, 0xe7, 0x22, 0x0f, 0xd3, 0x79, 0x7e, 0xf8, 0x47, + 0x1d, 0xed, 0x9c, 0x09, 0xe7, 0x9c, 0x4b, 0x85, 0x7f, 0x58, 0xb2, 0xb8, 0xb5, 0xe1, 0xdf, 0x64, + 0x74, 0xed, 0xf4, 0xc7, 0xa6, 0x50, 0x7b, 0x1e, 0xa9, 0xf8, 0xfc, 0x02, 0xb5, 0xb8, 0x82, 0x20, + 0x9b, 0x7b, 0x73, 0xfd, 0xf3, 0x59, 0xb4, 0xa5, 0xbd, 0x6f, 0x44, 0x5b, 0x5f, 0x67, 0x74, 0x9a, + 0xab, 0x0c, 0xff, 0x6c, 0xea, 0xce, 0x33, 0xe3, 0xe3, 0x11, 0xda, 0x8d, 0x58, 0xcc, 0x7c, 0x1f, + 0x7c, 0x2e, 0x03, 0xdd, 0x7c, 0xcb, 0x7e, 0x94, 0xce, 0x06, 0xbb, 0x97, 0x65, 0x98, 0x56, 0x31, + 0x19, 0xc5, 0x15, 0x41, 0xe4, 0x43, 0x76, 0xbb, 0xb9, 0x17, 0x0d, 0xe5, 0xb4, 0x0c, 0xd3, 0x2a, + 0x06, 0x3f, 0x47, 0x87, 0xcc, 0x55, 0x7c, 0x0a, 0x5f, 0x02, 0xf3, 0x7c, 0x1e, 0xc2, 0x18, 0x5c, + 0x11, 0x7a, 0xf9, 0x3b, 0x6b, 0xda, 0xef, 0xa6, 0xb3, 0xc1, 0xe1, 0x17, 0xab, 0x00, 0x74, 0x35, + 0x0f, 0xff, 0x88, 0xda, 0x12, 0x7c, 0x70, 0x95, 0x88, 0x8d, 0x7d, 0x4e, 0x36, 0xbd, 0x70, 0xe6, + 0x80, 0x3f, 0x36, 0x5c, 0x7b, 0x2f, 0xbb, 0xf1, 0xf9, 0x89, 0x16, 0x9a, 0xf8, 0x33, 0x74, 0x10, + 0xb0, 0x30, 0x61, 0x05, 0x52, 0xfb, 0xa6, 0x6d, 0xe3, 0x74, 0x36, 0x38, 0xb8, 0x58, 0xc8, 0xd0, + 0x7b, 0x48, 0xfc, 0x3d, 0x6a, 0x2b, 0x08, 0x22, 0x9f, 0xa9, 0xdc, 0x44, 0xbb, 0xc7, 0x47, 0xeb, + 0xf7, 0xdd, 0xa5, 0xf0, 0xae, 0x0c, 0x41, 0xaf, 0xa6, 0xc2, 0x0a, 0xf3, 0x28, 0x2d, 0x04, 0x87, + 0xbf, 0x37, 0x51, 0xa7, 0x58, 0x38, 0x18, 0x10, 0x72, 0xe7, 0x8f, 0x5a, 0x76, 0xeb, 0xda, 0x1d, + 0xa3, 0x4d, 0xdd, 0x51, 0xac, 0x83, 0x72, 0xcb, 0x16, 0x21, 0x49, 0x2b, 0xc2, 0xf8, 0x05, 0xea, + 0x48, 0xc5, 0x62, 0xa5, 0x5f, 0x6b, 0xe3, 0xed, 0x5f, 0xeb, 0x7e, 0x3a, 0x1b, 0x74, 0xc6, 0x73, + 0x05, 0x5a, 0x8a, 0xe1, 0x09, 0x3a, 0x28, 0x7d, 0xf2, 0x7f, 0x77, 0x8f, 0x1e, 0xca, 0xe9, 0x82, + 0x0c, 0xbd, 0x27, 0x9b, 0x2d, 0x80, 0xdc, 0x49, 0xda, 0x2e, 0xad, 0x72, 0x01, 0xe4, 0xb6, 0xa3, + 0x26, 0x8b, 0x2d, 0xd4, 0x91, 0x89, 0xeb, 0x02, 0x78, 0xe0, 0xe9, 0x99, 0xb7, 0xec, 0x77, 0x0c, + 0xb4, 0x33, 0x9e, 0x27, 0x68, 0x89, 0xc9, 0x84, 0x5f, 0x32, 0xee, 0x83, 0xa7, 0x67, 0x5d, 0x11, + 0xfe, 0x4a, 0x47, 0xa9, 0xc9, 0xda, 0xef, 0xdf, 0xde, 0xf5, 0x6b, 0xaf, 0xef, 0xfa, 0xb5, 0xbf, + 0xef, 0xfa, 0xb5, 0x5f, 0xd2, 0x7e, 0xfd, 0x36, 0xed, 0xd7, 0x5f, 0xa7, 0xfd, 0xfa, 0x3f, 0x69, + 0xbf, 0xfe, 0xdb, 0xbf, 0xfd, 0xda, 0x77, 0x8d, 0xe9, 0xe8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x9f, 0xc8, 0x32, 0x84, 0xee, 0x08, 0x00, 0x00, } diff --git a/pkg/apis/batch/v1/generated.proto b/pkg/apis/batch/v1/generated.proto index 17a6add0..25957a99 100644 --- a/pkg/apis/batch/v1/generated.proto +++ b/pkg/apis/batch/v1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/batch/v1/register.go b/pkg/apis/batch/v1/register.go index 543bce11..1a37cb92 100644 --- a/pkg/apis/batch/v1/register.go +++ b/pkg/apis/batch/v1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "batch" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) diff --git a/pkg/apis/batch/v2alpha1/generated.pb.go b/pkg/apis/batch/v2alpha1/generated.pb.go index 29bd9214..33f551d0 100644 --- a/pkg/apis/batch/v2alpha1/generated.pb.go +++ b/pkg/apis/batch/v2alpha1/generated.pb.go @@ -2706,77 +2706,77 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 1141 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x56, 0x4b, 0x6f, 0xe4, 0x44, - 0x10, 0x8e, 0x67, 0x92, 0x79, 0xf4, 0x6c, 0x5e, 0x0d, 0xd1, 0x0e, 0x41, 0x9a, 0x89, 0x46, 0x02, - 0x65, 0x61, 0x63, 0x2b, 0xa3, 0x00, 0xcb, 0x1e, 0x90, 0xd6, 0x41, 0x48, 0x44, 0x89, 0x36, 0xea, - 0xc9, 0x42, 0x04, 0x0b, 0xa2, 0xc7, 0xee, 0xcc, 0x78, 0x63, 0xbb, 0x8d, 0xbb, 0x1d, 0x94, 0x1b, - 0x67, 0x4e, 0x48, 0xfc, 0x00, 0x7e, 0x07, 0x12, 0x1c, 0x38, 0x20, 0xe5, 0xb8, 0x20, 0x21, 0x71, - 0x1a, 0x11, 0xf3, 0x2f, 0x72, 0x42, 0x6e, 0xb7, 0x1f, 0xf3, 0x0a, 0x99, 0xa0, 0x45, 0xe2, 0xe6, - 0xae, 0xae, 0xef, 0xeb, 0xea, 0xaa, 0xaf, 0xab, 0x0c, 0xde, 0x3d, 0x7d, 0xc0, 0x54, 0x8b, 0x6a, - 0xa7, 0x41, 0x97, 0xf8, 0x2e, 0xe1, 0x84, 0x69, 0xde, 0x69, 0x4f, 0xc3, 0x9e, 0xc5, 0xb4, 0x2e, - 0xe6, 0x46, 0x5f, 0x3b, 0x6b, 0x63, 0xdb, 0xeb, 0xe3, 0x6d, 0xad, 0x47, 0x5c, 0xe2, 0x63, 0x4e, - 0x4c, 0xd5, 0xf3, 0x29, 0xa7, 0xf0, 0x5e, 0x0c, 0x55, 0x33, 0xa8, 0xea, 0x9d, 0xf6, 0xd4, 0x08, - 0xaa, 0x0a, 0xa8, 0x9a, 0x40, 0xd7, 0xb7, 0x7a, 0x16, 0xef, 0x07, 0x5d, 0xd5, 0xa0, 0x8e, 0xd6, - 0xa3, 0x3d, 0xaa, 0x09, 0x86, 0x6e, 0x70, 0x22, 0x56, 0x62, 0x21, 0xbe, 0x62, 0xe6, 0xf5, 0xf6, - 0xd4, 0xa0, 0x34, 0x9f, 0x30, 0x1a, 0xf8, 0x06, 0x19, 0x8d, 0x66, 0xfd, 0xad, 0xe9, 0x98, 0xc0, - 0x3d, 0x23, 0x3e, 0xb3, 0xa8, 0x4b, 0xcc, 0x31, 0xd8, 0xfd, 0xe9, 0xb0, 0xb3, 0xb1, 0x2b, 0xaf, - 0x6f, 0x4d, 0xf6, 0xf6, 0x03, 0x97, 0x5b, 0xce, 0x78, 0x4c, 0xdb, 0x93, 0xdd, 0x03, 0x6e, 0xd9, - 0x9a, 0xe5, 0x72, 0xc6, 0xfd, 0x51, 0x48, 0xeb, 0xfb, 0x02, 0x28, 0xef, 0xfa, 0xd4, 0xdd, 0xa3, - 0x5d, 0x78, 0x0c, 0x2a, 0x0e, 0xe1, 0xd8, 0xc4, 0x1c, 0xd7, 0x95, 0x0d, 0x65, 0xb3, 0xd6, 0xde, - 0x54, 0xa7, 0xe6, 0x5c, 0x3d, 0xdb, 0x56, 0x1f, 0x77, 0x9f, 0x11, 0x83, 0x1f, 0x10, 0x8e, 0x75, - 0x78, 0x31, 0x68, 0xce, 0x85, 0x83, 0x26, 0xc8, 0x6c, 0x28, 0x65, 0x83, 0xc7, 0x60, 0x9e, 0x79, - 0xc4, 0xa8, 0x17, 0x04, 0xeb, 0xdb, 0xea, 0x8d, 0x2b, 0xa9, 0xca, 0xd8, 0x3a, 0x1e, 0x31, 0xf4, - 0x3b, 0xf2, 0x8c, 0xf9, 0x68, 0x85, 0x04, 0x23, 0xfc, 0x02, 0x94, 0x18, 0xc7, 0x3c, 0x60, 0xf5, - 0xa2, 0xe0, 0x7e, 0x70, 0x0b, 0x6e, 0x81, 0xd7, 0x97, 0x24, 0x7b, 0x29, 0x5e, 0x23, 0xc9, 0xdb, - 0xfa, 0x45, 0x01, 0x35, 0xe9, 0xb9, 0x6f, 0x31, 0x0e, 0x3f, 0x1b, 0xcb, 0x92, 0x76, 0x4d, 0x96, - 0x72, 0x5a, 0x50, 0x23, 0xb8, 0x48, 0xd6, 0x8a, 0x3c, 0xaa, 0x92, 0x58, 0x72, 0xa9, 0xfa, 0x18, - 0x2c, 0x58, 0x9c, 0x38, 0xac, 0x5e, 0xd8, 0x28, 0x6e, 0xd6, 0xda, 0xed, 0xd9, 0xef, 0xa3, 0x2f, - 0x4a, 0xfa, 0x85, 0x0f, 0x23, 0x22, 0x14, 0xf3, 0xb5, 0xbe, 0x29, 0xa6, 0xf7, 0x88, 0xf2, 0x07, - 0xef, 0x83, 0x0a, 0x33, 0xfa, 0xc4, 0x0c, 0x6c, 0x22, 0xee, 0x51, 0xcd, 0xc2, 0xea, 0x48, 0x3b, - 0x4a, 0x3d, 0xe0, 0x13, 0x70, 0x97, 0x71, 0xec, 0x73, 0xcb, 0xed, 0xbd, 0x4f, 0xb0, 0x69, 0x5b, - 0x2e, 0xe9, 0x10, 0x83, 0xba, 0x26, 0x13, 0x45, 0x2d, 0xea, 0xaf, 0x86, 0x83, 0xe6, 0xdd, 0xce, - 0x64, 0x17, 0x34, 0x0d, 0x0b, 0x9f, 0x82, 0x55, 0x83, 0xba, 0x46, 0xe0, 0xfb, 0xc4, 0x35, 0xce, - 0x0f, 0xa9, 0x6d, 0x19, 0xe7, 0xa2, 0x92, 0x55, 0x5d, 0x95, 0xd1, 0xac, 0xee, 0x8e, 0x3a, 0x5c, - 0x4d, 0x32, 0xa2, 0x71, 0x22, 0xf8, 0x1a, 0x28, 0xb3, 0x80, 0x79, 0xc4, 0x35, 0xeb, 0xf3, 0x1b, - 0xca, 0x66, 0x45, 0xaf, 0x85, 0x83, 0x66, 0xb9, 0x13, 0x9b, 0x50, 0xb2, 0x07, 0xbf, 0x04, 0xb5, - 0x67, 0xb4, 0x7b, 0x44, 0x1c, 0xcf, 0xc6, 0x9c, 0xd4, 0x17, 0x44, 0x51, 0x1f, 0xce, 0x90, 0xf8, - 0xbd, 0x0c, 0x2d, 0x84, 0xfa, 0x92, 0x0c, 0xbd, 0x96, 0xdb, 0x40, 0xf9, 0x33, 0x5a, 0xbf, 0x2b, - 0x60, 0x71, 0x48, 0x7e, 0xf0, 0x09, 0x28, 0x61, 0x83, 0x5b, 0x67, 0x51, 0x31, 0xa2, 0xc2, 0x6f, - 0xdd, 0xe4, 0xe9, 0x21, 0x72, 0x42, 0xa2, 0x0b, 0x93, 0x4c, 0xbd, 0x8f, 0x04, 0x09, 0x92, 0x64, - 0xd0, 0x01, 0x2b, 0x36, 0x66, 0x3c, 0xa9, 0xe8, 0x91, 0xe5, 0x10, 0x91, 0x8b, 0x5a, 0xfb, 0xcd, - 0x1b, 0xaa, 0x36, 0x82, 0xe8, 0x2f, 0x87, 0x83, 0xe6, 0xca, 0xfe, 0x08, 0x11, 0x1a, 0xa3, 0x6e, - 0x7d, 0x57, 0x00, 0xc5, 0x17, 0xdb, 0x4a, 0x8e, 0x86, 0x5a, 0x49, 0x7b, 0xb6, 0x2a, 0x4d, 0x6d, - 0x23, 0x4f, 0x47, 0xda, 0xc8, 0xce, 0x8c, 0xbc, 0xd7, 0xb7, 0x90, 0xdf, 0x8a, 0xe0, 0xce, 0x1e, - 0xed, 0xee, 0x52, 0xd7, 0xb4, 0xb8, 0x45, 0x5d, 0xb8, 0x03, 0xe6, 0xf9, 0xb9, 0x97, 0xbc, 0xbb, - 0x8d, 0x24, 0xa0, 0xa3, 0x73, 0x8f, 0x5c, 0x0d, 0x9a, 0x2b, 0x79, 0xdf, 0xc8, 0x86, 0x84, 0x37, - 0xfc, 0x28, 0x0d, 0xb2, 0x20, 0x70, 0xef, 0x0d, 0x1f, 0x77, 0x35, 0x68, 0x5e, 0x3b, 0x5d, 0xd4, - 0x94, 0x73, 0x38, 0x3c, 0xd8, 0x07, 0x8b, 0x51, 0x21, 0x0f, 0x7d, 0xda, 0x8d, 0x05, 0x52, 0x9c, - 0x5d, 0x20, 0x6b, 0x32, 0x96, 0xc5, 0xfd, 0x3c, 0x13, 0x1a, 0x26, 0x86, 0x5f, 0x01, 0x18, 0x19, - 0x8e, 0x7c, 0xec, 0xb2, 0xf8, 0x76, 0xb7, 0xd4, 0xe3, 0xba, 0x3c, 0x0e, 0xee, 0x8f, 0xd1, 0xa1, - 0x09, 0x47, 0xc0, 0xd7, 0x41, 0xc9, 0x27, 0x98, 0x51, 0x57, 0xbc, 0xee, 0x6a, 0x56, 0x29, 0x24, - 0xac, 0x48, 0xee, 0xc2, 0x7b, 0xa0, 0xec, 0x10, 0xc6, 0x70, 0x8f, 0xd4, 0x4b, 0xc2, 0x71, 0x59, - 0x3a, 0x96, 0x0f, 0x62, 0x33, 0x4a, 0xf6, 0x5b, 0x3f, 0x29, 0xa0, 0xfc, 0x1f, 0xcd, 0x84, 0xce, - 0xf0, 0x4c, 0x50, 0x67, 0x13, 0xe7, 0x94, 0x79, 0xf0, 0x43, 0x51, 0xc4, 0x2f, 0x66, 0xc1, 0x36, - 0xa8, 0x79, 0xd8, 0xc7, 0xb6, 0x4d, 0x6c, 0x8b, 0x39, 0xe2, 0x0a, 0x0b, 0xfa, 0x72, 0xd4, 0xc1, - 0x0e, 0x33, 0x33, 0xca, 0xfb, 0x44, 0x10, 0x83, 0x3a, 0x9e, 0x4d, 0xa2, 0x1c, 0xc7, 0x8a, 0x94, - 0x90, 0xdd, 0xcc, 0x8c, 0xf2, 0x3e, 0xf0, 0x31, 0x58, 0x8b, 0xbb, 0xd2, 0xe8, 0x04, 0x29, 0x8a, - 0x09, 0xf2, 0x4a, 0x38, 0x68, 0xae, 0x3d, 0x9a, 0xe4, 0x80, 0x26, 0xe3, 0xe0, 0xe7, 0xa0, 0xc2, - 0x88, 0x4d, 0x0c, 0x4e, 0x7d, 0x29, 0xa2, 0x9d, 0x9b, 0xa6, 0x1d, 0x77, 0x89, 0xdd, 0x91, 0x58, - 0xfd, 0x8e, 0x18, 0x7a, 0x72, 0x85, 0x52, 0x4e, 0xf8, 0x10, 0x2c, 0x39, 0xd8, 0x0d, 0x70, 0xea, - 0x29, 0xd4, 0x53, 0xd1, 0x61, 0x38, 0x68, 0x2e, 0x1d, 0x0c, 0xed, 0xa0, 0x11, 0x4f, 0xf8, 0x29, - 0xa8, 0xf0, 0x64, 0xa2, 0x94, 0x44, 0x6c, 0xff, 0xd0, 0xd1, 0x0f, 0xa9, 0x39, 0x34, 0x44, 0x52, - 0x41, 0xa4, 0x13, 0x24, 0x25, 0x6c, 0xfd, 0x58, 0x04, 0xd5, 0x6c, 0x74, 0x9c, 0x02, 0x60, 0x24, - 0x4f, 0x9b, 0xc9, 0xf1, 0xf1, 0xce, 0x6c, 0x1a, 0x49, 0x5b, 0x43, 0xd6, 0x7d, 0x53, 0x13, 0x43, - 0x39, 0x7a, 0x78, 0x0c, 0xaa, 0x62, 0x98, 0x8b, 0x97, 0x5b, 0x98, 0xfd, 0xe5, 0x2e, 0x86, 0x83, - 0x66, 0xb5, 0x93, 0x30, 0xa0, 0x8c, 0x0c, 0xf6, 0xc0, 0x52, 0xa6, 0x96, 0xdb, 0xf6, 0x21, 0x51, - 0x9a, 0xdd, 0x21, 0x1a, 0x34, 0x42, 0x1b, 0x35, 0x03, 0x39, 0x6a, 0xe7, 0x85, 0x6a, 0xa7, 0xcd, - 0x4e, 0x0d, 0x54, 0x59, 0x60, 0x18, 0x84, 0x98, 0xc4, 0x14, 0x95, 0x5f, 0xd0, 0x57, 0xa5, 0x6b, - 0xb5, 0x93, 0x6c, 0xa0, 0xcc, 0x27, 0x22, 0x3e, 0xc1, 0x96, 0x4d, 0x4c, 0x51, 0xf1, 0x1c, 0xf1, - 0x07, 0xc2, 0x8a, 0xe4, 0x6e, 0xeb, 0x57, 0x05, 0xe4, 0x7f, 0x0d, 0x5e, 0xe0, 0xb4, 0xec, 0xe7, - 0x54, 0x58, 0xf8, 0xd7, 0xff, 0x35, 0xd7, 0x49, 0xf2, 0x67, 0x05, 0x2c, 0x8f, 0xf8, 0xff, 0xdf, - 0xfe, 0x02, 0xf4, 0x37, 0x2e, 0x2e, 0x1b, 0x73, 0xcf, 0x2f, 0x1b, 0x73, 0x7f, 0x5c, 0x36, 0xe6, - 0xbe, 0x0e, 0x1b, 0xca, 0x45, 0xd8, 0x50, 0x9e, 0x87, 0x0d, 0xe5, 0xcf, 0xb0, 0xa1, 0x7c, 0xfb, - 0x57, 0x63, 0xee, 0x93, 0x4a, 0xc2, 0xf3, 0x77, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x4c, 0xf3, - 0xee, 0xc9, 0x0e, 0x00, 0x00, + // 1149 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xd4, 0x56, 0x4d, 0x6f, 0xe3, 0x44, + 0x18, 0xae, 0x93, 0x36, 0x1f, 0x93, 0xed, 0xd7, 0x40, 0xb5, 0xa1, 0x48, 0x49, 0x15, 0x09, 0xd4, + 0x85, 0xad, 0xad, 0x46, 0x05, 0x96, 0x3d, 0x20, 0xad, 0x8b, 0x90, 0xa8, 0x5a, 0x6d, 0x35, 0xe9, + 0x42, 0x05, 0x0b, 0x62, 0x62, 0x4f, 0x13, 0x6f, 0x6d, 0x8f, 0xf1, 0x8c, 0x8b, 0x7a, 0xe3, 0xcc, + 0x09, 0x89, 0x1f, 0xc0, 0xef, 0x40, 0x82, 0x03, 0x07, 0xa4, 0x1e, 0x17, 0x24, 0x24, 0x4e, 0x11, + 0x35, 0xff, 0xa2, 0x27, 0xe4, 0xf1, 0xf8, 0x23, 0x5f, 0xa5, 0x29, 0x5a, 0x24, 0x6e, 0xf1, 0x3b, + 0xcf, 0xf3, 0xcc, 0x3b, 0xf3, 0x3e, 0xf3, 0xbe, 0x01, 0xef, 0x9e, 0x3e, 0x60, 0xaa, 0x45, 0xb5, + 0xd3, 0xa0, 0x4b, 0x7c, 0x97, 0x70, 0xc2, 0x34, 0xef, 0xb4, 0xa7, 0x61, 0xcf, 0x62, 0x5a, 0x17, + 0x73, 0xa3, 0xaf, 0x9d, 0xb5, 0xb1, 0xed, 0xf5, 0xf1, 0xb6, 0xd6, 0x23, 0x2e, 0xf1, 0x31, 0x27, + 0xa6, 0xea, 0xf9, 0x94, 0x53, 0x78, 0x2f, 0xa6, 0xaa, 0x19, 0x55, 0xf5, 0x4e, 0x7b, 0x6a, 0x44, + 0x55, 0x05, 0x55, 0x4d, 0xa8, 0xeb, 0x5b, 0x3d, 0x8b, 0xf7, 0x83, 0xae, 0x6a, 0x50, 0x47, 0xeb, + 0xd1, 0x1e, 0xd5, 0x84, 0x42, 0x37, 0x38, 0x11, 0x5f, 0xe2, 0x43, 0xfc, 0x8a, 0x95, 0xd7, 0xdb, + 0x53, 0x93, 0xd2, 0x7c, 0xc2, 0x68, 0xe0, 0x1b, 0x64, 0x34, 0x9b, 0xf5, 0xb7, 0xa6, 0x73, 0x02, + 0xf7, 0x8c, 0xf8, 0xcc, 0xa2, 0x2e, 0x31, 0xc7, 0x68, 0xf7, 0xa7, 0xd3, 0xce, 0xc6, 0x8e, 0xbc, + 0xbe, 0x35, 0x19, 0xed, 0x07, 0x2e, 0xb7, 0x9c, 0xf1, 0x9c, 0x76, 0xae, 0x87, 0x33, 0xa3, 0x4f, + 0x1c, 0x3c, 0xc6, 0xda, 0x9e, 0xcc, 0x0a, 0xb8, 0x65, 0x6b, 0x96, 0xcb, 0x19, 0xf7, 0x47, 0x29, + 0xad, 0xef, 0x0b, 0xa0, 0xbc, 0xeb, 0x53, 0x77, 0x8f, 0x76, 0xe1, 0x31, 0xa8, 0x38, 0x84, 0x63, + 0x13, 0x73, 0x5c, 0x57, 0x36, 0x94, 0xcd, 0x5a, 0x7b, 0x53, 0x9d, 0x5a, 0x29, 0xf5, 0x6c, 0x5b, + 0x7d, 0xdc, 0x7d, 0x46, 0x0c, 0x7e, 0x40, 0x38, 0xd6, 0xe1, 0xc5, 0xa0, 0x39, 0x17, 0x0e, 0x9a, + 0x20, 0x8b, 0xa1, 0x54, 0x0d, 0x1e, 0x83, 0x79, 0xe6, 0x11, 0xa3, 0x5e, 0x10, 0xaa, 0x6f, 0xab, + 0x37, 0xae, 0xbf, 0x2a, 0x73, 0xeb, 0x78, 0xc4, 0xd0, 0xef, 0xc8, 0x3d, 0xe6, 0xa3, 0x2f, 0x24, + 0x14, 0xe1, 0x17, 0xa0, 0xc4, 0x38, 0xe6, 0x01, 0xab, 0x17, 0x85, 0xf6, 0x83, 0x5b, 0x68, 0x0b, + 0xbe, 0xbe, 0x24, 0xd5, 0x4b, 0xf1, 0x37, 0x92, 0xba, 0xad, 0x5f, 0x14, 0x50, 0x93, 0xc8, 0x7d, + 0x8b, 0x71, 0xf8, 0xd9, 0xd8, 0x2d, 0x69, 0xd7, 0xdc, 0x52, 0xce, 0x41, 0x6a, 0x44, 0x17, 0x97, + 0xb5, 0x22, 0xb7, 0xaa, 0x24, 0x91, 0xdc, 0x55, 0x7d, 0x0c, 0x16, 0x2c, 0x4e, 0x1c, 0x56, 0x2f, + 0x6c, 0x14, 0x37, 0x6b, 0xed, 0xf6, 0xec, 0xe7, 0xd1, 0x17, 0xa5, 0xfc, 0xc2, 0x87, 0x91, 0x10, + 0x8a, 0xf5, 0x5a, 0xdf, 0x14, 0xd3, 0x73, 0x44, 0xf7, 0x07, 0xef, 0x83, 0x4a, 0x64, 0x23, 0x33, + 0xb0, 0x89, 0x38, 0x47, 0x35, 0x4b, 0xab, 0x23, 0xe3, 0x28, 0x45, 0xc0, 0x27, 0xe0, 0x2e, 0xe3, + 0xd8, 0xe7, 0x96, 0xdb, 0x7b, 0x9f, 0x60, 0xd3, 0xb6, 0x5c, 0xd2, 0x21, 0x06, 0x75, 0x4d, 0x26, + 0x8a, 0x5a, 0xd4, 0x5f, 0x0d, 0x07, 0xcd, 0xbb, 0x9d, 0xc9, 0x10, 0x34, 0x8d, 0x0b, 0x9f, 0x82, + 0x55, 0x83, 0xba, 0x46, 0xe0, 0xfb, 0xc4, 0x35, 0xce, 0x0f, 0xa9, 0x6d, 0x19, 0xe7, 0xa2, 0x92, + 0x55, 0x5d, 0x95, 0xd9, 0xac, 0xee, 0x8e, 0x02, 0xae, 0x26, 0x05, 0xd1, 0xb8, 0x10, 0x7c, 0x0d, + 0x94, 0x59, 0xc0, 0x3c, 0xe2, 0x9a, 0xf5, 0xf9, 0x0d, 0x65, 0xb3, 0xa2, 0xd7, 0xc2, 0x41, 0xb3, + 0xdc, 0x89, 0x43, 0x28, 0x59, 0x83, 0x5f, 0x82, 0xda, 0x33, 0xda, 0x3d, 0x22, 0x8e, 0x67, 0x63, + 0x4e, 0xea, 0x0b, 0xa2, 0xa8, 0x0f, 0x67, 0xb8, 0xf8, 0xbd, 0x8c, 0x2d, 0x8c, 0xfa, 0x92, 0x4c, + 0xbd, 0x96, 0x5b, 0x40, 0xf9, 0x3d, 0x5a, 0xbf, 0x2b, 0x60, 0x71, 0xc8, 0x7e, 0xf0, 0x09, 0x28, + 0x61, 0x83, 0x5b, 0x67, 0x51, 0x31, 0xa2, 0xc2, 0x6f, 0xdd, 0xe4, 0xe9, 0x21, 0x72, 0x42, 0xa2, + 0x03, 0x93, 0xcc, 0xbd, 0x8f, 0x84, 0x08, 0x92, 0x62, 0xd0, 0x01, 0x2b, 0x36, 0x66, 0x3c, 0xa9, + 0xe8, 0x91, 0xe5, 0x10, 0x71, 0x17, 0xb5, 0xf6, 0x9b, 0x37, 0x74, 0x6d, 0x44, 0xd1, 0x5f, 0x0e, + 0x07, 0xcd, 0x95, 0xfd, 0x11, 0x21, 0x34, 0x26, 0xdd, 0xfa, 0xae, 0x00, 0x8a, 0x2f, 0xb6, 0x95, + 0x1c, 0x0d, 0xb5, 0x92, 0xf6, 0x6c, 0x55, 0x9a, 0xda, 0x46, 0x9e, 0x8e, 0xb4, 0x91, 0x9d, 0x19, + 0x75, 0xaf, 0x6f, 0x21, 0xbf, 0x15, 0xc1, 0x9d, 0x3d, 0xda, 0xdd, 0xa5, 0xae, 0x69, 0x71, 0x8b, + 0xba, 0x70, 0x07, 0xcc, 0xf3, 0x73, 0x2f, 0x79, 0x77, 0x1b, 0x49, 0x42, 0x47, 0xe7, 0x1e, 0xb9, + 0x1a, 0x34, 0x57, 0xf2, 0xd8, 0x28, 0x86, 0x04, 0x1a, 0x7e, 0x94, 0x26, 0x59, 0x10, 0xbc, 0xf7, + 0x86, 0xb7, 0xbb, 0x1a, 0x34, 0xaf, 0x9d, 0x49, 0x6a, 0xaa, 0x39, 0x9c, 0x1e, 0xec, 0x83, 0xc5, + 0xa8, 0x90, 0x87, 0x3e, 0xed, 0xc6, 0x06, 0x29, 0xce, 0x6e, 0x90, 0x35, 0x99, 0xcb, 0xe2, 0x7e, + 0x5e, 0x09, 0x0d, 0x0b, 0xc3, 0xaf, 0x00, 0x8c, 0x02, 0x47, 0x3e, 0x76, 0x59, 0x7c, 0xba, 0x5b, + 0xfa, 0x71, 0x5d, 0x6e, 0x07, 0xf7, 0xc7, 0xe4, 0xd0, 0x84, 0x2d, 0xe0, 0xeb, 0xa0, 0xe4, 0x13, + 0xcc, 0xa8, 0x2b, 0x5e, 0x77, 0x35, 0xab, 0x14, 0x12, 0x51, 0x24, 0x57, 0xe1, 0x3d, 0x50, 0x76, + 0x08, 0x63, 0xb8, 0x47, 0xea, 0x25, 0x01, 0x5c, 0x96, 0xc0, 0xf2, 0x41, 0x1c, 0x46, 0xc9, 0x7a, + 0xeb, 0x27, 0x05, 0x94, 0xff, 0xa3, 0x99, 0xd0, 0x19, 0x9e, 0x09, 0xea, 0x6c, 0xe6, 0x9c, 0x32, + 0x0f, 0x7e, 0x28, 0x8a, 0xfc, 0xc5, 0x2c, 0xd8, 0x06, 0x35, 0x0f, 0xfb, 0xd8, 0xb6, 0x89, 0x6d, + 0x31, 0x47, 0x1c, 0x61, 0x41, 0x5f, 0x8e, 0x3a, 0xd8, 0x61, 0x16, 0x46, 0x79, 0x4c, 0x44, 0x31, + 0xa8, 0xe3, 0xd9, 0x24, 0xba, 0xe3, 0xd8, 0x91, 0x92, 0xb2, 0x9b, 0x85, 0x51, 0x1e, 0x03, 0x1f, + 0x83, 0xb5, 0xb8, 0x2b, 0x8d, 0x4e, 0x90, 0xa2, 0x98, 0x20, 0xaf, 0x84, 0x83, 0xe6, 0xda, 0xa3, + 0x49, 0x00, 0x34, 0x99, 0x07, 0x3f, 0x07, 0x15, 0x46, 0x6c, 0x62, 0x70, 0xea, 0x4b, 0x13, 0xed, + 0xdc, 0xf4, 0xda, 0x71, 0x97, 0xd8, 0x1d, 0xc9, 0xd5, 0xef, 0x88, 0xa1, 0x27, 0xbf, 0x50, 0xaa, + 0x09, 0x1f, 0x82, 0x25, 0x07, 0xbb, 0x01, 0x4e, 0x91, 0xc2, 0x3d, 0x15, 0x1d, 0x86, 0x83, 0xe6, + 0xd2, 0xc1, 0xd0, 0x0a, 0x1a, 0x41, 0xc2, 0x4f, 0x41, 0x85, 0x27, 0x13, 0xa5, 0x24, 0x72, 0xfb, + 0x87, 0x8e, 0x7e, 0x48, 0xcd, 0xa1, 0x21, 0x92, 0x1a, 0x22, 0x9d, 0x20, 0xa9, 0x60, 0xeb, 0xc7, + 0x22, 0xa8, 0x66, 0xa3, 0xe3, 0x14, 0x00, 0x23, 0x79, 0xda, 0x4c, 0x8e, 0x8f, 0x77, 0x66, 0xf3, + 0x48, 0xda, 0x1a, 0xb2, 0xee, 0x9b, 0x86, 0x18, 0xca, 0xc9, 0xc3, 0x63, 0x50, 0x15, 0xc3, 0x5c, + 0xbc, 0xdc, 0xc2, 0xec, 0x2f, 0x77, 0x31, 0x1c, 0x34, 0xab, 0x9d, 0x44, 0x01, 0x65, 0x62, 0xb0, + 0x07, 0x96, 0x32, 0xb7, 0xdc, 0xb6, 0x0f, 0x89, 0xd2, 0xec, 0x0e, 0xc9, 0xa0, 0x11, 0xd9, 0xa8, + 0x19, 0xc8, 0x51, 0x3b, 0x2f, 0x5c, 0x3b, 0x6d, 0x76, 0x6a, 0xa0, 0xca, 0x02, 0xc3, 0x20, 0xc4, + 0x24, 0xa6, 0xa8, 0xfc, 0x82, 0xbe, 0x2a, 0xa1, 0xd5, 0x4e, 0xb2, 0x80, 0x32, 0x4c, 0x24, 0x7c, + 0x82, 0x2d, 0x9b, 0x98, 0xa2, 0xe2, 0x39, 0xe1, 0x0f, 0x44, 0x14, 0xc9, 0xd5, 0xd6, 0xaf, 0x0a, + 0xc8, 0xff, 0x35, 0x78, 0x81, 0xd3, 0xb2, 0x9f, 0x73, 0x61, 0xe1, 0x5f, 0xff, 0xaf, 0xb9, 0xce, + 0x92, 0x3f, 0x2b, 0x60, 0x79, 0x04, 0xff, 0x7f, 0xfb, 0x17, 0xa0, 0xbf, 0x71, 0x71, 0xd9, 0x98, + 0x7b, 0x7e, 0xd9, 0x98, 0xfb, 0xe3, 0xb2, 0x31, 0xf7, 0x75, 0xd8, 0x50, 0x2e, 0xc2, 0x86, 0xf2, + 0x3c, 0x6c, 0x28, 0x7f, 0x86, 0x0d, 0xe5, 0xdb, 0xbf, 0x1a, 0x73, 0x9f, 0x54, 0x12, 0x9d, 0xbf, + 0x03, 0x00, 0x00, 0xff, 0xff, 0x74, 0x47, 0xe8, 0xb0, 0xff, 0x0e, 0x00, 0x00, } diff --git a/pkg/apis/batch/v2alpha1/generated.proto b/pkg/apis/batch/v2alpha1/generated.proto index 8f4995a5..ffa7f5ae 100644 --- a/pkg/apis/batch/v2alpha1/generated.proto +++ b/pkg/apis/batch/v2alpha1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/batch/v2alpha1/register.go b/pkg/apis/batch/v2alpha1/register.go index 5bb82b5b..5577e3af 100644 --- a/pkg/apis/batch/v2alpha1/register.go +++ b/pkg/apis/batch/v2alpha1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v2alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "batch" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v2alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2alpha1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) diff --git a/pkg/apis/certificates/register.go b/pkg/apis/certificates/register.go index e3f45969..58b15639 100644 --- a/pkg/apis/certificates/register.go +++ b/pkg/apis/certificates/register.go @@ -18,8 +18,8 @@ package certificates import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) var ( @@ -31,15 +31,15 @@ var ( const GroupName = "certificates.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -54,5 +54,5 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *CertificateSigningRequest) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *CertificateSigningRequestList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *CertificateSigningRequest) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *CertificateSigningRequestList) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/certificates/v1alpha1/generated.pb.go b/pkg/apis/certificates/v1alpha1/generated.pb.go index 9d8377ab..038ff256 100644 --- a/pkg/apis/certificates/v1alpha1/generated.pb.go +++ b/pkg/apis/certificates/v1alpha1/generated.pb.go @@ -1277,49 +1277,49 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 692 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0xcd, 0x6e, 0xd3, 0x4a, - 0x14, 0x8e, 0x93, 0x34, 0x4d, 0x26, 0xbd, 0xed, 0xd5, 0xe8, 0xea, 0x2a, 0x37, 0x52, 0x9d, 0x2a, - 0xba, 0xa0, 0x00, 0xed, 0x98, 0x54, 0x42, 0xea, 0x12, 0xb9, 0x48, 0xa8, 0xa2, 0x55, 0xc5, 0xb4, - 0x95, 0x10, 0x12, 0x8b, 0x89, 0x73, 0xea, 0x0e, 0x69, 0x6c, 0xd7, 0x33, 0x8e, 0xd4, 0x1d, 0x4b, - 0x96, 0x3c, 0x01, 0xaf, 0xc1, 0x2b, 0x74, 0xd9, 0x25, 0xab, 0x40, 0xd3, 0x17, 0x60, 0xcd, 0x0a, - 0x79, 0x32, 0x4e, 0x4c, 0x52, 0x17, 0x90, 0xba, 0xcb, 0xf9, 0xe6, 0x9c, 0xef, 0x3b, 0x3f, 0x9f, - 0x83, 0x9e, 0xf6, 0xb6, 0x04, 0xe1, 0xbe, 0xd5, 0x8b, 0x3a, 0x10, 0x7a, 0x20, 0x41, 0x58, 0x41, - 0xcf, 0xb5, 0x58, 0xc0, 0x85, 0xe5, 0x40, 0x28, 0xf9, 0x31, 0x77, 0x58, 0x8c, 0x0e, 0xda, 0xec, - 0x34, 0x38, 0x61, 0x6d, 0xcb, 0x05, 0x0f, 0x42, 0x26, 0xa1, 0x4b, 0x82, 0xd0, 0x97, 0x3e, 0x7e, - 0x3c, 0x66, 0x20, 0x53, 0x06, 0x12, 0xf4, 0x5c, 0x12, 0x33, 0x90, 0x34, 0x03, 0x49, 0x18, 0xea, - 0x1b, 0x2e, 0x97, 0x27, 0x51, 0x87, 0x38, 0x7e, 0xdf, 0x72, 0x7d, 0xd7, 0xb7, 0x14, 0x51, 0x27, - 0x3a, 0x56, 0x91, 0x0a, 0xd4, 0xaf, 0xb1, 0x40, 0x7d, 0x33, 0xb3, 0x45, 0x2b, 0x04, 0xe1, 0x47, - 0xa1, 0x03, 0xb3, 0x4d, 0xd5, 0x9f, 0x64, 0xd7, 0x44, 0xde, 0x00, 0x42, 0xc1, 0x7d, 0x0f, 0xba, - 0x73, 0x65, 0xeb, 0xd9, 0x65, 0x83, 0xb9, 0xc9, 0xeb, 0x1b, 0x37, 0x67, 0x87, 0x91, 0x27, 0x79, - 0x7f, 0xbe, 0xa7, 0xf6, 0xcd, 0xe9, 0x91, 0xe4, 0xa7, 0x16, 0xf7, 0xa4, 0x90, 0xe1, 0x6c, 0x49, - 0xf3, 0x3a, 0x8f, 0xfe, 0xdb, 0x9e, 0xee, 0xf0, 0x80, 0xbb, 0x1e, 0xf7, 0x5c, 0x0a, 0x67, 0x11, - 0x08, 0x89, 0x5f, 0xa1, 0x72, 0x1f, 0x24, 0xeb, 0x32, 0xc9, 0x6a, 0xc6, 0x9a, 0xd1, 0xaa, 0x6e, - 0xb6, 0x48, 0xe6, 0x31, 0xc8, 0xa0, 0x4d, 0xf6, 0x3b, 0x6f, 0xc1, 0x91, 0x7b, 0x20, 0x99, 0x8d, - 0x2f, 0x86, 0x8d, 0xdc, 0x68, 0xd8, 0x40, 0x53, 0x8c, 0x4e, 0xd8, 0xf0, 0x19, 0x2a, 0x8a, 0x00, - 0x9c, 0x5a, 0x5e, 0xb1, 0xee, 0x93, 0x3f, 0x3d, 0x31, 0xc9, 0x6c, 0xfa, 0x20, 0x00, 0xc7, 0x5e, - 0xd2, 0xe2, 0xc5, 0x38, 0xa2, 0x4a, 0x0a, 0x9f, 0xa3, 0x92, 0x90, 0x4c, 0x46, 0xa2, 0x56, 0x50, - 0xa2, 0x2f, 0xef, 0x52, 0x54, 0x11, 0xdb, 0xcb, 0x5a, 0xb6, 0x34, 0x8e, 0xa9, 0x16, 0x6c, 0x7e, - 0xcc, 0xa3, 0x66, 0x66, 0xed, 0xb6, 0xef, 0x75, 0xb9, 0xe4, 0xbe, 0x87, 0xb7, 0x50, 0x51, 0x9e, - 0x07, 0xa0, 0x56, 0x5d, 0xb1, 0xff, 0x4f, 0x66, 0x38, 0x3c, 0x0f, 0xe0, 0xfb, 0xb0, 0xf1, 0xcf, - 0x6c, 0x7e, 0x8c, 0x53, 0x55, 0x81, 0xef, 0xa3, 0x52, 0x08, 0x4c, 0xf8, 0x9e, 0x5a, 0x68, 0x65, - 0xda, 0x08, 0x55, 0x28, 0xd5, 0xaf, 0xf8, 0x01, 0x5a, 0xec, 0x83, 0x10, 0xcc, 0x05, 0xb5, 0x84, - 0x8a, 0xbd, 0xa2, 0x13, 0x17, 0xf7, 0xc6, 0x30, 0x4d, 0xde, 0x71, 0x0f, 0x2d, 0x9f, 0x32, 0x21, - 0x8f, 0x82, 0x2e, 0x93, 0x70, 0xc8, 0xfb, 0x50, 0x2b, 0xaa, 0xb5, 0x3d, 0xba, 0xc5, 0x01, 0x29, - 0xe7, 0x93, 0xb8, 0xc4, 0xfe, 0x57, 0xd3, 0x2f, 0xef, 0xfe, 0x44, 0x45, 0x67, 0xa8, 0x9b, 0xdf, - 0x0c, 0xb4, 0x9a, 0xb9, 0xa0, 0x5d, 0x2e, 0x24, 0x7e, 0x33, 0x67, 0x45, 0xeb, 0x37, 0x1b, 0x89, - 0xcb, 0x95, 0x23, 0xff, 0xd6, 0xcd, 0x94, 0x13, 0x24, 0xe5, 0xc7, 0x00, 0x2d, 0x70, 0x09, 0x7d, - 0x51, 0xcb, 0xaf, 0x15, 0x5a, 0xd5, 0xcd, 0x17, 0x77, 0xe8, 0x0d, 0xfb, 0x2f, 0xad, 0xbb, 0xb0, - 0x13, 0x2b, 0xd0, 0xb1, 0x50, 0xf3, 0xd3, 0x6d, 0x23, 0xc7, 0xb6, 0xc5, 0xf7, 0xd0, 0x62, 0x38, - 0x0e, 0xd5, 0xc4, 0x4b, 0x76, 0x35, 0x3e, 0x94, 0xce, 0xa0, 0xc9, 0x1b, 0x5e, 0x47, 0xe5, 0x48, - 0x40, 0xe8, 0xb1, 0x3e, 0xe8, 0xeb, 0x4f, 0x06, 0x3d, 0xd2, 0x38, 0x9d, 0x64, 0xe0, 0x55, 0x54, - 0x88, 0x78, 0x57, 0x5f, 0xbf, 0xaa, 0x13, 0x0b, 0x47, 0x3b, 0xcf, 0x68, 0x8c, 0xe3, 0x26, 0x2a, - 0xb9, 0xa1, 0x1f, 0x05, 0xa2, 0x56, 0x5c, 0x2b, 0xb4, 0x2a, 0x36, 0x8a, 0x4d, 0xf4, 0x5c, 0x21, - 0x54, 0xbf, 0x34, 0xbf, 0x18, 0xa8, 0xf1, 0x8b, 0x2f, 0x01, 0xbf, 0x37, 0x10, 0x72, 0x12, 0xa3, - 0x8a, 0x9a, 0xa1, 0xb6, 0x7a, 0x78, 0x87, 0x5b, 0x9d, 0x7c, 0x05, 0xd3, 0x3f, 0x9a, 0x09, 0x24, - 0x68, 0x4a, 0x1b, 0xb7, 0x51, 0x35, 0xc5, 0xad, 0x56, 0xb4, 0x64, 0xaf, 0x8c, 0x86, 0x8d, 0x6a, - 0x8a, 0x9c, 0xa6, 0x73, 0xec, 0x87, 0x17, 0x57, 0x66, 0xee, 0xf2, 0xca, 0xcc, 0x7d, 0xbe, 0x32, - 0x73, 0xef, 0x46, 0xa6, 0x71, 0x31, 0x32, 0x8d, 0xcb, 0x91, 0x69, 0x7c, 0x1d, 0x99, 0xc6, 0x87, - 0x6b, 0x33, 0xf7, 0xba, 0x9c, 0x74, 0xf8, 0x23, 0x00, 0x00, 0xff, 0xff, 0x29, 0x0b, 0xef, 0x6d, - 0xe0, 0x06, 0x00, 0x00, + // 700 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x54, 0x4f, 0x4f, 0x13, 0x41, + 0x14, 0xef, 0xb6, 0xa5, 0xb4, 0x53, 0x04, 0x33, 0x31, 0xa6, 0x36, 0x61, 0x4b, 0x1a, 0x35, 0x55, + 0x61, 0xd6, 0x12, 0x4d, 0x38, 0x9a, 0xc5, 0xc4, 0x10, 0x21, 0xc4, 0x01, 0x12, 0x63, 0xe2, 0x61, + 0xba, 0x7d, 0x2c, 0x63, 0xd9, 0x3f, 0xec, 0xcc, 0x36, 0xe1, 0xe6, 0xd1, 0xa3, 0x9f, 0xc0, 0xaf, + 0xe1, 0x57, 0xe0, 0xc8, 0xd1, 0x53, 0x95, 0xf2, 0x05, 0x3c, 0x7b, 0x32, 0x3b, 0x9d, 0xfe, 0xb1, + 0x65, 0x51, 0x13, 0x6e, 0xfb, 0x7e, 0xf3, 0x7e, 0xbf, 0xdf, 0x7b, 0x6f, 0xde, 0x2c, 0x7a, 0xd1, + 0xd9, 0x10, 0x84, 0x07, 0x56, 0x27, 0x6e, 0x41, 0xe4, 0x83, 0x04, 0x61, 0x85, 0x1d, 0xd7, 0x62, + 0x21, 0x17, 0x96, 0x03, 0x91, 0xe4, 0x87, 0xdc, 0x61, 0x09, 0xda, 0x6d, 0xb2, 0xe3, 0xf0, 0x88, + 0x35, 0x2d, 0x17, 0x7c, 0x88, 0x98, 0x84, 0x36, 0x09, 0xa3, 0x40, 0x06, 0xf8, 0xe9, 0x40, 0x81, + 0x8c, 0x15, 0x48, 0xd8, 0x71, 0x49, 0xa2, 0x40, 0x26, 0x15, 0xc8, 0x50, 0xa1, 0xba, 0xe6, 0x72, + 0x79, 0x14, 0xb7, 0x88, 0x13, 0x78, 0x96, 0x1b, 0xb8, 0x81, 0xa5, 0x84, 0x5a, 0xf1, 0xa1, 0x8a, + 0x54, 0xa0, 0xbe, 0x06, 0x06, 0xd5, 0xf5, 0xd4, 0x12, 0xad, 0x08, 0x44, 0x10, 0x47, 0x0e, 0x4c, + 0x17, 0x55, 0x7d, 0x9e, 0xce, 0x89, 0xfd, 0x2e, 0x44, 0x82, 0x07, 0x3e, 0xb4, 0x67, 0x68, 0xab, + 0xe9, 0xb4, 0xee, 0x4c, 0xe7, 0xd5, 0xb5, 0xab, 0xb3, 0xa3, 0xd8, 0x97, 0xdc, 0x9b, 0xad, 0xe9, + 0xd9, 0xf5, 0xe9, 0xc2, 0x39, 0x02, 0x8f, 0xcd, 0xb0, 0x9a, 0x57, 0xb3, 0x62, 0xc9, 0x8f, 0x2d, + 0xee, 0x4b, 0x21, 0xa3, 0x69, 0x4a, 0xfd, 0x32, 0x8b, 0xee, 0x6d, 0x8e, 0x27, 0xbf, 0xc7, 0x5d, + 0x9f, 0xfb, 0x2e, 0x85, 0x93, 0x18, 0x84, 0xc4, 0x6f, 0x51, 0xd1, 0x03, 0xc9, 0xda, 0x4c, 0xb2, + 0x8a, 0xb1, 0x62, 0x34, 0xca, 0xeb, 0x0d, 0x92, 0x7a, 0x85, 0xa4, 0xdb, 0x24, 0xbb, 0xad, 0x0f, + 0xe0, 0xc8, 0x1d, 0x90, 0xcc, 0xc6, 0x67, 0xbd, 0x5a, 0xa6, 0xdf, 0xab, 0xa1, 0x31, 0x46, 0x47, + 0x6a, 0xf8, 0x04, 0xe5, 0x45, 0x08, 0x4e, 0x25, 0xab, 0x54, 0x77, 0xc9, 0xff, 0x2e, 0x06, 0x49, + 0x2d, 0x7a, 0x2f, 0x04, 0xc7, 0x5e, 0xd0, 0xe6, 0xf9, 0x24, 0xa2, 0xca, 0x0a, 0x9f, 0xa2, 0x82, + 0x90, 0x4c, 0xc6, 0xa2, 0x92, 0x53, 0xa6, 0x6f, 0x6e, 0xd2, 0x54, 0x09, 0xdb, 0x8b, 0xda, 0xb6, + 0x30, 0x88, 0xa9, 0x36, 0xac, 0x7f, 0xc9, 0xa2, 0x7a, 0x2a, 0x77, 0x33, 0xf0, 0xdb, 0x5c, 0xf2, + 0xc0, 0xc7, 0x1b, 0x28, 0x2f, 0x4f, 0x43, 0x50, 0xa3, 0x2e, 0xd9, 0xf7, 0x87, 0x3d, 0xec, 0x9f, + 0x86, 0xf0, 0xab, 0x57, 0xbb, 0x33, 0x9d, 0x9f, 0xe0, 0x54, 0x31, 0xf0, 0x43, 0x54, 0x88, 0x80, + 0x89, 0xc0, 0x57, 0x03, 0x2d, 0x8d, 0x0b, 0xa1, 0x0a, 0xa5, 0xfa, 0x14, 0x3f, 0x42, 0xf3, 0x1e, + 0x08, 0xc1, 0x5c, 0x50, 0x43, 0x28, 0xd9, 0x4b, 0x3a, 0x71, 0x7e, 0x67, 0x00, 0xd3, 0xe1, 0x39, + 0xee, 0xa0, 0xc5, 0x63, 0x26, 0xe4, 0x41, 0xd8, 0x66, 0x12, 0xf6, 0xb9, 0x07, 0x95, 0xbc, 0x1a, + 0xdb, 0x93, 0x6b, 0x36, 0x60, 0xe2, 0xbd, 0x90, 0x84, 0x62, 0xdf, 0xd5, 0xf2, 0x8b, 0xdb, 0x7f, + 0x48, 0xd1, 0x29, 0xe9, 0xfa, 0x4f, 0x03, 0x2d, 0xa7, 0x0e, 0x68, 0x9b, 0x0b, 0x89, 0xdf, 0xcf, + 0xac, 0xa2, 0xf5, 0x8f, 0x85, 0x24, 0x74, 0xb5, 0x91, 0xb7, 0x75, 0x31, 0xc5, 0x21, 0x32, 0xb1, + 0x8f, 0x21, 0x9a, 0xe3, 0x12, 0x3c, 0x51, 0xc9, 0xae, 0xe4, 0x1a, 0xe5, 0xf5, 0xd7, 0x37, 0xb8, + 0x1b, 0xf6, 0x2d, 0xed, 0x3b, 0xb7, 0x95, 0x38, 0xd0, 0x81, 0x51, 0xfd, 0xeb, 0x75, 0x2d, 0x27, + 0x6b, 0x8b, 0x1f, 0xa0, 0xf9, 0x68, 0x10, 0xaa, 0x8e, 0x17, 0xec, 0x72, 0x72, 0x51, 0x3a, 0x83, + 0x0e, 0xcf, 0xf0, 0x2a, 0x2a, 0xc6, 0x02, 0x22, 0x9f, 0x79, 0xa0, 0x6f, 0x7f, 0xd4, 0xe8, 0x81, + 0xc6, 0xe9, 0x28, 0x03, 0x2f, 0xa3, 0x5c, 0xcc, 0xdb, 0xfa, 0xf6, 0xcb, 0x3a, 0x31, 0x77, 0xb0, + 0xf5, 0x92, 0x26, 0x38, 0xae, 0xa3, 0x82, 0x1b, 0x05, 0x71, 0x28, 0x2a, 0xf9, 0x95, 0x5c, 0xa3, + 0x64, 0xa3, 0x64, 0x89, 0x5e, 0x29, 0x84, 0xea, 0x93, 0xfa, 0x77, 0x03, 0xd5, 0xfe, 0xf2, 0x12, + 0xf0, 0x27, 0x03, 0x21, 0x67, 0xb8, 0xa8, 0xa2, 0x62, 0xa8, 0xa9, 0xee, 0xdf, 0xe0, 0x54, 0x47, + 0xaf, 0x60, 0xfc, 0xa3, 0x19, 0x41, 0x82, 0x4e, 0x78, 0xe3, 0x26, 0x2a, 0x4f, 0x68, 0xab, 0x11, + 0x2d, 0xd8, 0x4b, 0xfd, 0x5e, 0xad, 0x3c, 0x21, 0x4e, 0x27, 0x73, 0xec, 0xc7, 0x67, 0x17, 0x66, + 0xe6, 0xfc, 0xc2, 0xcc, 0x7c, 0xbb, 0x30, 0x33, 0x1f, 0xfb, 0xa6, 0x71, 0xd6, 0x37, 0x8d, 0xf3, + 0xbe, 0x69, 0xfc, 0xe8, 0x9b, 0xc6, 0xe7, 0x4b, 0x33, 0xf3, 0xae, 0x38, 0xac, 0xf0, 0x77, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xa5, 0xb0, 0x36, 0xc9, 0x16, 0x07, 0x00, 0x00, } diff --git a/pkg/apis/certificates/v1alpha1/generated.proto b/pkg/apis/certificates/v1alpha1/generated.proto index 5c576a2e..6939a912 100644 --- a/pkg/apis/certificates/v1alpha1/generated.proto +++ b/pkg/apis/certificates/v1alpha1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/certificates/v1alpha1/register.go b/pkg/apis/certificates/v1alpha1/register.go index 5cf65b96..a34b2ea9 100644 --- a/pkg/apis/certificates/v1alpha1/register.go +++ b/pkg/apis/certificates/v1alpha1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,15 +27,15 @@ import ( const GroupName = "certificates.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -59,5 +59,5 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *CertificateSigningRequest) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *CertificateSigningRequestList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *CertificateSigningRequest) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *CertificateSigningRequestList) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/componentconfig/register.go b/pkg/apis/componentconfig/register.go index 886f9122..ec88c87d 100644 --- a/pkg/apis/componentconfig/register.go +++ b/pkg/apis/componentconfig/register.go @@ -17,8 +17,8 @@ limitations under the License. package componentconfig import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) var ( @@ -30,15 +30,15 @@ var ( const GroupName = "componentconfig" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -52,6 +52,6 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *KubeProxyConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *KubeSchedulerConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *KubeletConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *KubeProxyConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *KubeSchedulerConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *KubeletConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/componentconfig/types.generated.go b/pkg/apis/componentconfig/types.generated.go index c1fecf97..ba4d8fb8 100644 --- a/pkg/apis/componentconfig/types.generated.go +++ b/pkg/apis/componentconfig/types.generated.go @@ -1401,7 +1401,7 @@ func (x *KubeletConfiguration) CodecEncodeSelf(e *codec1978.Encoder) { yyq153[55] = x.CloudProvider != "" yyq153[56] = x.CloudConfigFile != "" yyq153[57] = x.KubeletCgroups != "" - yyq153[58] = x.CgroupsPerQOS != false + yyq153[58] = x.ExperimentalCgroupsPerQOS != false yyq153[59] = x.CgroupDriver != "" yyq153[60] = x.RuntimeCgroups != "" yyq153[61] = x.SystemCgroups != "" @@ -2647,7 +2647,7 @@ func (x *KubeletConfiguration) CodecEncodeSelf(e *codec1978.Encoder) { _ = yym345 if false { } else { - r.EncodeBool(bool(x.CgroupsPerQOS)) + r.EncodeBool(bool(x.ExperimentalCgroupsPerQOS)) } } else { r.EncodeBool(false) @@ -2655,13 +2655,13 @@ func (x *KubeletConfiguration) CodecEncodeSelf(e *codec1978.Encoder) { } else { if yyq153[58] { z.EncSendContainerState(codecSelfer_containerMapKey1234) - r.EncodeString(codecSelferC_UTF81234, string("cgroupsPerQOS")) + r.EncodeString(codecSelferC_UTF81234, string("experimentalCgroupsPerQOS")) z.EncSendContainerState(codecSelfer_containerMapValue1234) yym346 := z.EncBinary() _ = yym346 if false { } else { - r.EncodeBool(bool(x.CgroupsPerQOS)) + r.EncodeBool(bool(x.ExperimentalCgroupsPerQOS)) } } } @@ -4378,11 +4378,11 @@ func (x *KubeletConfiguration) codecDecodeSelfFromMap(l int, d *codec1978.Decode } else { x.KubeletCgroups = string(r.DecodeString()) } - case "cgroupsPerQOS": + case "experimentalCgroupsPerQOS": if r.TryDecodeAsNil() { - x.CgroupsPerQOS = false + x.ExperimentalCgroupsPerQOS = false } else { - x.CgroupsPerQOS = bool(r.DecodeBool()) + x.ExperimentalCgroupsPerQOS = bool(r.DecodeBool()) } case "cgroupDriver": if r.TryDecodeAsNil() { @@ -5807,9 +5807,9 @@ func (x *KubeletConfiguration) codecDecodeSelfFromArray(l int, d *codec1978.Deco } z.DecSendContainerState(codecSelfer_containerArrayElem1234) if r.TryDecodeAsNil() { - x.CgroupsPerQOS = false + x.ExperimentalCgroupsPerQOS = false } else { - x.CgroupsPerQOS = bool(r.DecodeBool()) + x.ExperimentalCgroupsPerQOS = bool(r.DecodeBool()) } yyj649++ if yyhl649 { diff --git a/pkg/apis/componentconfig/types.go b/pkg/apis/componentconfig/types.go index f2d1abb1..db7778cf 100644 --- a/pkg/apis/componentconfig/types.go +++ b/pkg/apis/componentconfig/types.go @@ -294,7 +294,7 @@ type KubeletConfiguration struct { // And all Burstable and BestEffort pods are brought up under their // specific top level QoS cgroup. // +optional - CgroupsPerQOS bool `json:"cgroupsPerQOS,omitempty"` + ExperimentalCgroupsPerQOS bool `json:"experimentalCgroupsPerQOS,omitempty"` // driver that the kubelet uses to manipulate cgroups on the host (cgroupfs or systemd) // +optional CgroupDriver string `json:"cgroupDriver,omitempty"` @@ -307,7 +307,7 @@ type KubeletConfiguration struct { // +optional SystemCgroups string `json:"systemCgroups,omitempty"` // CgroupRoot is the root cgroup to use for pods. - // If CgroupsPerQOS is enabled, this is the root of the QoS cgroup hierarchy. + // If ExperimentalCgroupsPerQOS is enabled, this is the root of the QoS cgroup hierarchy. // +optional CgroupRoot string `json:"cgroupRoot,omitempty"` // containerRuntime is the container runtime to use. diff --git a/pkg/apis/componentconfig/v1alpha1/defaults.go b/pkg/apis/componentconfig/v1alpha1/defaults.go index 51a6358b..9e230cb9 100644 --- a/pkg/apis/componentconfig/v1alpha1/defaults.go +++ b/pkg/apis/componentconfig/v1alpha1/defaults.go @@ -204,8 +204,8 @@ func SetDefaults_KubeletConfiguration(obj *KubeletConfiguration) { if obj.CertDirectory == "" { obj.CertDirectory = "/var/run/kubernetes" } - if obj.CgroupsPerQOS == nil { - obj.CgroupsPerQOS = boolVar(false) + if obj.ExperimentalCgroupsPerQOS == nil { + obj.ExperimentalCgroupsPerQOS = boolVar(false) } if obj.ContainerRuntime == "" { obj.ContainerRuntime = "docker" @@ -391,9 +391,9 @@ func SetDefaults_KubeletConfiguration(obj *KubeletConfiguration) { temp := int32(defaultIPTablesDropBit) obj.IPTablesDropBit = &temp } - if obj.CgroupsPerQOS == nil { + if obj.ExperimentalCgroupsPerQOS == nil { temp := false - obj.CgroupsPerQOS = &temp + obj.ExperimentalCgroupsPerQOS = &temp } if obj.CgroupDriver == "" { obj.CgroupDriver = "cgroupfs" @@ -401,8 +401,8 @@ func SetDefaults_KubeletConfiguration(obj *KubeletConfiguration) { // NOTE: this is for backwards compatibility with earlier releases where cgroup-root was optional. // if cgroups per qos is not enabled, and cgroup-root is not specified, we need to default to the // container runtime default and not default to the root cgroup. - if obj.CgroupsPerQOS != nil { - if *obj.CgroupsPerQOS { + if obj.ExperimentalCgroupsPerQOS != nil { + if *obj.ExperimentalCgroupsPerQOS { if obj.CgroupRoot == "" { obj.CgroupRoot = "/" } diff --git a/pkg/apis/componentconfig/v1alpha1/register.go b/pkg/apis/componentconfig/v1alpha1/register.go index 4f3a6ae7..24a981bd 100644 --- a/pkg/apis/componentconfig/v1alpha1/register.go +++ b/pkg/apis/componentconfig/v1alpha1/register.go @@ -17,15 +17,15 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "componentconfig" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) @@ -41,6 +41,6 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *KubeProxyConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *KubeSchedulerConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *KubeletConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *KubeProxyConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *KubeSchedulerConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *KubeletConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/componentconfig/v1alpha1/types.go b/pkg/apis/componentconfig/v1alpha1/types.go index 7207a860..61bfed4e 100644 --- a/pkg/apis/componentconfig/v1alpha1/types.go +++ b/pkg/apis/componentconfig/v1alpha1/types.go @@ -355,7 +355,7 @@ type KubeletConfiguration struct { // And all Burstable and BestEffort pods are brought up under their // specific top level QoS cgroup. // +optional - CgroupsPerQOS *bool `json:"cgroupsPerQOS,omitempty"` + ExperimentalCgroupsPerQOS *bool `json:"experimentalCgroupsPerQOS,omitempty"` // driver that the kubelet uses to manipulate cgroups on the host (cgroupfs or systemd) // +optional CgroupDriver string `json:"cgroupDriver,omitempty"` diff --git a/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go b/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go index f9630321..b2b6e214 100644 --- a/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/componentconfig/v1alpha1/zz_generated.conversion.go @@ -330,7 +330,7 @@ func autoConvert_v1alpha1_KubeletConfiguration_To_componentconfig_KubeletConfigu out.RuntimeCgroups = in.RuntimeCgroups out.SystemCgroups = in.SystemCgroups out.CgroupRoot = in.CgroupRoot - if err := api.Convert_Pointer_bool_To_bool(&in.CgroupsPerQOS, &out.CgroupsPerQOS, s); err != nil { + if err := api.Convert_Pointer_bool_To_bool(&in.ExperimentalCgroupsPerQOS, &out.ExperimentalCgroupsPerQOS, s); err != nil { return err } out.CgroupDriver = in.CgroupDriver @@ -496,7 +496,7 @@ func autoConvert_componentconfig_KubeletConfiguration_To_v1alpha1_KubeletConfigu out.CloudProvider = in.CloudProvider out.CloudConfigFile = in.CloudConfigFile out.KubeletCgroups = in.KubeletCgroups - if err := api.Convert_bool_To_Pointer_bool(&in.CgroupsPerQOS, &out.CgroupsPerQOS, s); err != nil { + if err := api.Convert_bool_To_Pointer_bool(&in.ExperimentalCgroupsPerQOS, &out.ExperimentalCgroupsPerQOS, s); err != nil { return err } out.CgroupDriver = in.CgroupDriver diff --git a/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go index 6ca1d8a1..fd13c984 100644 --- a/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/componentconfig/v1alpha1/zz_generated.deepcopy.go @@ -21,9 +21,10 @@ limitations under the License. package v1alpha1 import ( + reflect "reflect" + conversion "k8s.io/client-go/pkg/conversion" runtime "k8s.io/client-go/pkg/runtime" - reflect "reflect" ) func init() { @@ -302,12 +303,12 @@ func DeepCopy_v1alpha1_KubeletConfiguration(in interface{}, out interface{}, c * out.RuntimeCgroups = in.RuntimeCgroups out.SystemCgroups = in.SystemCgroups out.CgroupRoot = in.CgroupRoot - if in.CgroupsPerQOS != nil { - in, out := &in.CgroupsPerQOS, &out.CgroupsPerQOS + if in.ExperimentalCgroupsPerQOS != nil { + in, out := &in.ExperimentalCgroupsPerQOS, &out.ExperimentalCgroupsPerQOS *out = new(bool) **out = **in } else { - out.CgroupsPerQOS = nil + out.ExperimentalCgroupsPerQOS = nil } out.CgroupDriver = in.CgroupDriver out.ContainerRuntime = in.ContainerRuntime diff --git a/pkg/apis/componentconfig/zz_generated.deepcopy.go b/pkg/apis/componentconfig/zz_generated.deepcopy.go index f952693d..f8a6404e 100644 --- a/pkg/apis/componentconfig/zz_generated.deepcopy.go +++ b/pkg/apis/componentconfig/zz_generated.deepcopy.go @@ -308,7 +308,7 @@ func DeepCopy_componentconfig_KubeletConfiguration(in interface{}, out interface out.CloudProvider = in.CloudProvider out.CloudConfigFile = in.CloudConfigFile out.KubeletCgroups = in.KubeletCgroups - out.CgroupsPerQOS = in.CgroupsPerQOS + out.ExperimentalCgroupsPerQOS = in.ExperimentalCgroupsPerQOS out.CgroupDriver = in.CgroupDriver out.RuntimeCgroups = in.RuntimeCgroups out.SystemCgroups = in.SystemCgroups diff --git a/pkg/apis/extensions/register.go b/pkg/apis/extensions/register.go index 074a7f74..0255fc17 100644 --- a/pkg/apis/extensions/register.go +++ b/pkg/apis/extensions/register.go @@ -18,25 +18,25 @@ package extensions import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apis/autoscaling" "k8s.io/client-go/pkg/apis/batch" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "extensions" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/extensions/types.go b/pkg/apis/extensions/types.go index a9323226..3cae03f3 100644 --- a/pkg/apis/extensions/types.go +++ b/pkg/apis/extensions/types.go @@ -124,7 +124,6 @@ type ThirdPartyResource struct { Description string `json:"description,omitempty"` // Versions are versions for this third party object - // +optional Versions []APIVersion `json:"versions,omitempty"` } @@ -143,7 +142,6 @@ type ThirdPartyResourceList struct { // TODO: we should consider merge this struct with GroupVersion in unversioned.go type APIVersion struct { // Name of this version (e.g. 'v1'). - // +optional Name string `json:"name,omitempty"` } diff --git a/pkg/apis/extensions/v1beta1/generated.pb.go b/pkg/apis/extensions/v1beta1/generated.pb.go index 0260da7d..facef552 100644 --- a/pkg/apis/extensions/v1beta1/generated.pb.go +++ b/pkg/apis/extensions/v1beta1/generated.pb.go @@ -13941,7 +13941,7 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 3908 bytes of a gzipped FileDescriptorProto + // 3919 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe4, 0x5b, 0x5d, 0x6c, 0x24, 0xd9, 0x55, 0x9e, 0xea, 0x76, 0xdb, 0xed, 0xd3, 0x63, 0x8f, 0xe7, 0x8e, 0xc7, 0xd3, 0xeb, 0xdd, 0x75, 0x4f, 0x6a, 0xc5, 0x66, 0x22, 0x76, 0xdb, 0xcc, 0xb0, 0x13, 0x36, 0xbb, 0x9b, 0x4d, 0xdc, 0xf6, @@ -13958,233 +13958,233 @@ var fileDescriptorGenerated = []byte{ 0xf6, 0x2c, 0x63, 0xb5, 0x6f, 0xf5, 0xad, 0x55, 0x8e, 0xd2, 0xf5, 0x76, 0xf9, 0x3f, 0xfe, 0x87, 0xff, 0xf2, 0xd1, 0x97, 0x6f, 0xe5, 0x2a, 0xb7, 0xea, 0x10, 0xd7, 0xf2, 0x9c, 0x1e, 0x49, 0x6b, 0xb4, 0x7c, 0x3b, 0x9f, 0xc7, 0x33, 0x0f, 0x88, 0xc3, 0x14, 0x22, 0xea, 0x08, 0xdb, 0x6b, 0xf9, - 0x6c, 0x07, 0x23, 0xcb, 0x5e, 0x7e, 0x3d, 0x9b, 0xda, 0xf1, 0x4c, 0xaa, 0x19, 0xa3, 0x3a, 0xdd, - 0xcc, 0x26, 0xf7, 0xa8, 0xa6, 0xaf, 0x6a, 0x26, 0x75, 0xa9, 0x93, 0x66, 0x91, 0x9b, 0x00, 0x6b, - 0xed, 0x07, 0x4f, 0x7c, 0x7d, 0xd1, 0x75, 0x98, 0x32, 0x15, 0x83, 0xd4, 0xa5, 0xeb, 0xd2, 0x8d, - 0xd9, 0xd6, 0xc5, 0x8f, 0x87, 0x8d, 0x0b, 0x47, 0xc3, 0xc6, 0xd4, 0x23, 0xc5, 0x20, 0x98, 0xcf, - 0xc8, 0xef, 0xc1, 0xe2, 0x7a, 0x7b, 0x67, 0x5b, 0x71, 0xfa, 0x84, 0xee, 0x50, 0x4d, 0xd7, 0xbe, - 0xa5, 0x50, 0xc6, 0xb9, 0x01, 0x0b, 0x94, 0x0f, 0xb6, 0x89, 0xd3, 0x23, 0x26, 0x55, 0xfa, 0x3e, - 0x4a, 0xa5, 0x55, 0x17, 0x28, 0x0b, 0xdb, 0xa9, 0x79, 0x3c, 0xc2, 0x21, 0xff, 0x86, 0x04, 0x2f, - 0xac, 0x7b, 0x2e, 0xb5, 0x8c, 0x2d, 0x42, 0x1d, 0xad, 0xb7, 0xee, 0x39, 0x0e, 0x31, 0x69, 0x87, - 0x2a, 0xd4, 0x73, 0x9f, 0xaf, 0x1d, 0x7a, 0x0a, 0x95, 0x03, 0x45, 0xf7, 0x48, 0xbd, 0x74, 0x5d, - 0xba, 0x51, 0xbb, 0xf5, 0x5a, 0x33, 0xd7, 0x6d, 0x9a, 0xc1, 0x83, 0x6d, 0x7e, 0xc5, 0x53, 0x4c, - 0xaa, 0xd1, 0x41, 0x6b, 0x51, 0x00, 0x5e, 0x14, 0x52, 0x9f, 0x30, 0x24, 0xec, 0x03, 0xca, 0xdf, - 0x93, 0xe0, 0xe5, 0x5c, 0xcd, 0x36, 0x35, 0x97, 0x22, 0x03, 0x2a, 0x1a, 0x25, 0x86, 0x5b, 0x97, - 0xae, 0x97, 0x6f, 0xd4, 0x6e, 0xdd, 0x6f, 0x16, 0x72, 0xd9, 0x66, 0x2e, 0x78, 0x6b, 0x4e, 0xe8, - 0x55, 0x79, 0xc0, 0xe0, 0xb1, 0x2f, 0x45, 0xfe, 0x75, 0x09, 0x50, 0x9c, 0xc7, 0xb7, 0xee, 0x31, - 0x6c, 0xf4, 0xd5, 0x93, 0xd8, 0xe8, 0x8a, 0x00, 0xac, 0xf9, 0xe2, 0x12, 0x26, 0xfa, 0xae, 0x04, - 0x4b, 0xa3, 0x1a, 0x71, 0xdb, 0xec, 0x26, 0x6d, 0xb3, 0x76, 0x02, 0xdb, 0xf8, 0xa8, 0x39, 0x46, - 0xf9, 0x83, 0x12, 0xcc, 0x6e, 0x28, 0xc4, 0xb0, 0xcc, 0x0e, 0xa1, 0xe8, 0x29, 0x54, 0x0d, 0x42, - 0x15, 0x55, 0xa1, 0x0a, 0xb7, 0x47, 0xed, 0xd6, 0x8d, 0x31, 0x8b, 0x3d, 0xb8, 0xd9, 0x7c, 0xdc, - 0xfd, 0x80, 0xf4, 0xe8, 0x16, 0xa1, 0x4a, 0x0b, 0x09, 0x7c, 0x88, 0xc6, 0x70, 0x88, 0x86, 0xde, - 0x87, 0x29, 0xd7, 0x26, 0x3d, 0x61, 0xc2, 0x77, 0x0a, 0x2e, 0x27, 0xd4, 0xb0, 0x63, 0x93, 0x5e, - 0xf4, 0x8c, 0xd8, 0x3f, 0xcc, 0x71, 0xd1, 0x2e, 0x4c, 0xbb, 0xfc, 0xe1, 0xd7, 0xcb, 0x5c, 0xc2, - 0xbb, 0x13, 0x4b, 0xf0, 0x5d, 0x68, 0x5e, 0xc8, 0x98, 0xf6, 0xff, 0x63, 0x81, 0x2e, 0xff, 0xad, - 0x04, 0x73, 0x21, 0x2d, 0x7f, 0x52, 0xdf, 0x18, 0xb1, 0xd9, 0xea, 0x18, 0x9b, 0xc5, 0x22, 0x5d, - 0x93, 0xb1, 0x73, 0xd3, 0x2d, 0x08, 0x61, 0xd5, 0x60, 0x24, 0x66, 0xb8, 0x6f, 0x04, 0x8e, 0x50, - 0xe2, 0x8e, 0xf0, 0xe6, 0xa4, 0xeb, 0xca, 0x79, 0xfe, 0x7f, 0x13, 0x5f, 0x0f, 0xb3, 0x27, 0x7a, - 0x1f, 0xaa, 0x2e, 0xd1, 0x49, 0x8f, 0x5a, 0x8e, 0x58, 0xcf, 0x1b, 0xc7, 0x5d, 0x8f, 0xd2, 0x25, - 0x7a, 0x47, 0xf0, 0xb6, 0x2e, 0xb2, 0x05, 0x05, 0xff, 0x70, 0x88, 0x89, 0xbe, 0x0e, 0x55, 0x4a, - 0x0c, 0x5b, 0x57, 0x68, 0xf0, 0x42, 0xbd, 0x3e, 0xde, 0xc7, 0xda, 0x96, 0xba, 0x2d, 0x18, 0xf8, - 0xe3, 0x0f, 0xad, 0x15, 0x8c, 0xe2, 0x10, 0x50, 0xfe, 0x8b, 0x12, 0x5c, 0x4a, 0x3d, 0x4a, 0xf4, - 0x04, 0x96, 0x7a, 0x7e, 0x78, 0x78, 0xe4, 0x19, 0x5d, 0xe2, 0x74, 0x7a, 0x7b, 0x44, 0xf5, 0x74, - 0xa2, 0x8a, 0x70, 0xbb, 0x22, 0xf0, 0x96, 0xd6, 0x33, 0xa9, 0x70, 0x0e, 0x37, 0x7a, 0x08, 0xc8, - 0xe4, 0x43, 0x5b, 0x9a, 0xeb, 0x86, 0x98, 0x25, 0x8e, 0xb9, 0x2c, 0x30, 0xd1, 0xa3, 0x11, 0x0a, - 0x9c, 0xc1, 0xc5, 0x74, 0x54, 0x89, 0xab, 0x39, 0x44, 0x4d, 0xeb, 0x58, 0x4e, 0xea, 0xb8, 0x91, - 0x49, 0x85, 0x73, 0xb8, 0xd1, 0x6d, 0xa8, 0xf9, 0xd2, 0x30, 0x51, 0xd4, 0x41, 0x7d, 0x8a, 0x83, - 0x85, 0x21, 0xe9, 0x51, 0x34, 0x85, 0xe3, 0x74, 0xf2, 0x1f, 0x96, 0x00, 0x36, 0x88, 0xad, 0x5b, - 0x03, 0x83, 0x98, 0x67, 0x19, 0x16, 0xbe, 0x99, 0x08, 0x0b, 0x5f, 0x2c, 0xea, 0xdc, 0xa1, 0x8a, - 0xb9, 0x71, 0xa1, 0x9f, 0x8a, 0x0b, 0x5f, 0x9a, 0x5c, 0xc4, 0xf8, 0xc0, 0xf0, 0x93, 0x32, 0x5c, - 0x89, 0x88, 0xd7, 0x2d, 0x53, 0xd5, 0x78, 0x9a, 0x7f, 0x1b, 0xa6, 0xe8, 0xc0, 0x0e, 0xd2, 0xcb, - 0x67, 0x03, 0x15, 0xb7, 0x07, 0x36, 0x79, 0x36, 0x6c, 0x5c, 0xcb, 0x60, 0x61, 0x53, 0x98, 0x33, - 0xa1, 0x27, 0xa1, 0xf6, 0x25, 0xce, 0xfe, 0x6e, 0x52, 0xf8, 0xb3, 0x61, 0x63, 0x6c, 0x75, 0xd4, - 0x0c, 0x31, 0x93, 0xca, 0xa2, 0x57, 0x61, 0xda, 0x21, 0x8a, 0x6b, 0x99, 0xdc, 0x23, 0x66, 0xa3, - 0x45, 0x61, 0x3e, 0x8a, 0xc5, 0x2c, 0xfa, 0x1c, 0xcc, 0x18, 0xc4, 0x75, 0x59, 0x69, 0x52, 0xe1, - 0x84, 0x97, 0x04, 0xe1, 0xcc, 0x96, 0x3f, 0x8c, 0x83, 0x79, 0xb4, 0x0f, 0xf3, 0xba, 0xe2, 0xd2, - 0x1d, 0x5b, 0x55, 0x28, 0xd9, 0xd6, 0x0c, 0x52, 0x9f, 0xe6, 0x06, 0xff, 0xd9, 0x63, 0x06, 0x0f, - 0xc6, 0xd2, 0x5a, 0x12, 0xf0, 0xf3, 0x9b, 0x09, 0x28, 0x9c, 0x82, 0x46, 0x1f, 0x01, 0x62, 0x23, - 0xdb, 0x8e, 0x62, 0xba, 0xbe, 0xcd, 0x98, 0xc0, 0x99, 0xe2, 0x02, 0xc3, 0xf7, 0x74, 0x73, 0x04, - 0x0e, 0x67, 0x88, 0x90, 0xff, 0x4e, 0x82, 0xf9, 0xe8, 0x91, 0x9d, 0x47, 0xfc, 0x7f, 0x3f, 0x19, - 0xff, 0xbf, 0x30, 0xb1, 0xff, 0xe6, 0x24, 0x80, 0xdf, 0x2c, 0x03, 0x8a, 0x88, 0xb0, 0xa5, 0xeb, - 0x5d, 0xa5, 0xb7, 0x7f, 0x8c, 0xaa, 0xe8, 0xf7, 0x24, 0x40, 0x1e, 0x7f, 0x24, 0xea, 0x9a, 0x69, - 0x5a, 0x94, 0x57, 0xb5, 0x81, 0x9a, 0xbf, 0x34, 0xb1, 0x9a, 0x81, 0x06, 0xcd, 0x9d, 0x11, 0xec, - 0x3b, 0x26, 0x75, 0x06, 0xd1, 0x23, 0x1b, 0x25, 0xc0, 0x19, 0x0a, 0xa1, 0x0f, 0x01, 0x1c, 0x81, - 0xb9, 0x6d, 0x89, 0x28, 0x50, 0x34, 0xd0, 0x04, 0x4a, 0xad, 0x5b, 0xe6, 0xae, 0xd6, 0x8f, 0x62, - 0x1a, 0x0e, 0x81, 0x71, 0x4c, 0xc8, 0xf2, 0x1d, 0xb8, 0x96, 0xa3, 0x3d, 0x5a, 0x80, 0xf2, 0x3e, - 0x19, 0xf8, 0x66, 0xc5, 0xec, 0x27, 0x5a, 0x8c, 0x57, 0x97, 0xb3, 0xa2, 0x34, 0x7c, 0xab, 0xf4, - 0xa6, 0x24, 0xff, 0xb4, 0x12, 0x77, 0x36, 0x9e, 0x9c, 0x6f, 0x40, 0xd5, 0x21, 0xb6, 0xae, 0xf5, - 0x14, 0x57, 0x64, 0x2f, 0x9e, 0x66, 0xb1, 0x18, 0xc3, 0xe1, 0x6c, 0x22, 0x8d, 0x97, 0xce, 0x38, - 0x8d, 0x97, 0x4f, 0x39, 0x8d, 0x23, 0x0b, 0xaa, 0x2e, 0x65, 0x9b, 0xae, 0xbe, 0x9f, 0xb3, 0x8a, - 0x17, 0xc0, 0xf1, 0xb8, 0xed, 0x03, 0x45, 0x02, 0x83, 0x11, 0x1c, 0x0a, 0x41, 0x6b, 0x70, 0xc9, - 0xd0, 0x4c, 0x9e, 0xfc, 0x3a, 0xa4, 0x67, 0x99, 0xaa, 0xcb, 0x03, 0x5e, 0xa5, 0x75, 0x4d, 0x30, - 0x5d, 0xda, 0x4a, 0x4e, 0xe3, 0x34, 0x3d, 0xda, 0x84, 0x45, 0x87, 0x1c, 0x68, 0x4c, 0x8d, 0xfb, - 0x9a, 0x4b, 0x2d, 0x67, 0xb0, 0xa9, 0x19, 0x1a, 0xe5, 0x61, 0xb0, 0xd2, 0xaa, 0x1f, 0x0d, 0x1b, - 0x8b, 0x38, 0x63, 0x1e, 0x67, 0x72, 0xb1, 0x08, 0x6d, 0x2b, 0x9e, 0x4b, 0x54, 0x1e, 0xd5, 0xaa, - 0x51, 0x84, 0x6e, 0xf3, 0x51, 0x2c, 0x66, 0x91, 0x91, 0xf0, 0xee, 0xea, 0x69, 0x78, 0xf7, 0x7c, - 0xbe, 0x67, 0xa3, 0x1d, 0xb8, 0x66, 0x3b, 0x56, 0xdf, 0x21, 0xae, 0xbb, 0x41, 0x14, 0x55, 0xd7, - 0x4c, 0x12, 0xd8, 0x6b, 0x96, 0xaf, 0xf3, 0xc5, 0xa3, 0x61, 0xe3, 0x5a, 0x3b, 0x9b, 0x04, 0xe7, - 0xf1, 0xca, 0x9f, 0x94, 0x61, 0x21, 0x9d, 0x69, 0x59, 0x7d, 0x65, 0x75, 0x5d, 0xe2, 0x1c, 0x10, - 0xf5, 0x9e, 0xbf, 0x07, 0xd7, 0x2c, 0x93, 0x7b, 0x7d, 0x39, 0x0a, 0x02, 0x8f, 0x47, 0x28, 0x70, - 0x06, 0x17, 0x7a, 0x2d, 0xf6, 0xde, 0xf8, 0x15, 0x5a, 0xe8, 0x0d, 0x19, 0xef, 0xce, 0x1a, 0x5c, - 0x12, 0x81, 0x24, 0x98, 0x14, 0x65, 0x58, 0xe8, 0x0d, 0x3b, 0xc9, 0x69, 0x9c, 0xa6, 0x47, 0xf7, - 0xe0, 0xb2, 0x72, 0xa0, 0x68, 0xba, 0xd2, 0xd5, 0x49, 0x08, 0xe2, 0x97, 0x5f, 0x2f, 0x08, 0x90, - 0xcb, 0x6b, 0x69, 0x02, 0x3c, 0xca, 0x83, 0xb6, 0xe0, 0x8a, 0x67, 0x8e, 0x42, 0xf9, 0xde, 0xf9, - 0xa2, 0x80, 0xba, 0xb2, 0x33, 0x4a, 0x82, 0xb3, 0xf8, 0xd0, 0x01, 0x40, 0x2f, 0x28, 0x0a, 0xdc, - 0xfa, 0x34, 0x0f, 0xd6, 0xad, 0x89, 0xdf, 0xad, 0xb0, 0xbe, 0x88, 0x42, 0x62, 0x38, 0xe4, 0xe2, - 0x98, 0x24, 0xf9, 0xef, 0xa5, 0x78, 0x9a, 0x09, 0xde, 0x40, 0xf4, 0x56, 0xa2, 0x3a, 0x7a, 0x35, - 0x55, 0x1d, 0x2d, 0x8d, 0x72, 0xc4, 0x8a, 0xa3, 0xef, 0xc0, 0x1c, 0xf3, 0x4c, 0xcd, 0xec, 0xfb, - 0x4f, 0x43, 0x84, 0xb9, 0xbb, 0x13, 0x78, 0x7f, 0x88, 0x11, 0x4b, 0x97, 0x97, 0x8f, 0x86, 0x8d, - 0xb9, 0xc4, 0x24, 0x4e, 0xca, 0x93, 0xdf, 0x83, 0xb9, 0x3b, 0x87, 0xb6, 0xe5, 0xd0, 0xc7, 0xb6, - 0x9f, 0x6a, 0x5e, 0x85, 0x69, 0xc2, 0x07, 0xf8, 0x7a, 0x62, 0x2f, 0xad, 0x4f, 0x86, 0xc5, 0x2c, - 0x7a, 0x05, 0x2a, 0xe4, 0x50, 0xe9, 0x51, 0xae, 0x71, 0x35, 0x4a, 0xcc, 0x77, 0xd8, 0x20, 0xf6, - 0xe7, 0xe4, 0x1f, 0x4a, 0xb0, 0x74, 0xb7, 0x73, 0xcf, 0xb1, 0x3c, 0x3b, 0x58, 0x7c, 0x20, 0xe7, - 0x17, 0x60, 0xca, 0xf1, 0xf4, 0xc0, 0x6a, 0xaf, 0x04, 0x56, 0xc3, 0x9e, 0xce, 0xac, 0x76, 0x25, - 0xc5, 0xe5, 0x9b, 0x8c, 0x31, 0xa0, 0xf7, 0x61, 0xda, 0x51, 0xcc, 0x3e, 0x09, 0xd2, 0xf4, 0xe7, - 0x0b, 0xda, 0xea, 0xc1, 0x06, 0x66, 0xec, 0xb1, 0x7a, 0x91, 0xa3, 0x61, 0x81, 0x2a, 0xff, 0x8e, - 0x04, 0x97, 0xee, 0x6f, 0x6f, 0xb7, 0x1f, 0x98, 0xfc, 0x35, 0x6f, 0x2b, 0x74, 0x8f, 0x55, 0x12, - 0xb6, 0x42, 0xf7, 0xd2, 0x95, 0x04, 0x9b, 0xc3, 0x7c, 0x06, 0xed, 0xc1, 0x0c, 0x0b, 0x2f, 0xc4, - 0x54, 0x27, 0xdc, 0x07, 0x08, 0x71, 0x2d, 0x1f, 0x24, 0x2a, 0x52, 0xc5, 0x00, 0x0e, 0xe0, 0xe5, - 0x6f, 0xc3, 0x62, 0x4c, 0x3d, 0x66, 0x2f, 0x7e, 0x1e, 0x83, 0x7a, 0x50, 0x61, 0x9a, 0x04, 0xa7, - 0x2d, 0x45, 0x0f, 0x0f, 0x52, 0x4b, 0x8e, 0x1e, 0x28, 0xfb, 0xe7, 0x62, 0x1f, 0x5b, 0xfe, 0xa7, - 0x12, 0x5c, 0xbb, 0x6f, 0x39, 0xda, 0xb7, 0x2c, 0x93, 0x2a, 0x7a, 0xdb, 0x52, 0xd7, 0x3c, 0x6a, - 0xb9, 0x3d, 0x45, 0x27, 0xce, 0x19, 0xee, 0xb0, 0xf4, 0xc4, 0x0e, 0xeb, 0x61, 0xd1, 0x95, 0x65, - 0xeb, 0x9b, 0xbb, 0xdd, 0xa2, 0xa9, 0xed, 0xd6, 0xe6, 0x29, 0xc9, 0x1b, 0xbf, 0xf7, 0xfa, 0x0f, - 0x09, 0x5e, 0xcc, 0xe1, 0x3c, 0x8f, 0x12, 0x7d, 0x3f, 0x59, 0xa2, 0xdf, 0x3d, 0x9d, 0x35, 0xe7, - 0xd4, 0xeb, 0xff, 0x53, 0xca, 0x5d, 0x2b, 0xaf, 0x10, 0x3f, 0x84, 0x2a, 0xff, 0x87, 0xc9, 0xae, - 0x58, 0xeb, 0x7a, 0x41, 0x7d, 0x3a, 0x5e, 0x37, 0x38, 0xc6, 0xc4, 0x64, 0x97, 0x38, 0xc4, 0xec, - 0x91, 0x58, 0xf1, 0x24, 0xc0, 0x71, 0x28, 0x06, 0xdd, 0x84, 0x1a, 0x2f, 0x86, 0x12, 0xf9, 0xf5, - 0xd2, 0xd1, 0xb0, 0x51, 0xdb, 0x8a, 0x86, 0x71, 0x9c, 0x06, 0xdd, 0x86, 0x9a, 0xa1, 0x1c, 0xa6, - 0xb2, 0x6b, 0x78, 0x2e, 0xb1, 0x15, 0x4d, 0xe1, 0x38, 0x1d, 0xfa, 0x0e, 0xcc, 0xf7, 0x6c, 0x2f, - 0x76, 0x8a, 0x2e, 0xaa, 0xc3, 0xa2, 0x4b, 0xcc, 0x3a, 0x90, 0x6f, 0x21, 0xb6, 0xf1, 0x5c, 0x6f, - 0xef, 0xc4, 0xc6, 0x70, 0x4a, 0x9c, 0xfc, 0xe7, 0x65, 0x78, 0x79, 0xac, 0x8f, 0xa2, 0xbb, 0x63, - 0xaa, 0x96, 0xa5, 0x02, 0x15, 0x8b, 0x0a, 0x73, 0x6c, 0xff, 0xc9, 0xcd, 0xcd, 0x77, 0xb7, 0xa5, - 0xe2, 0xbb, 0x5b, 0x9e, 0xc2, 0x36, 0xe3, 0x28, 0x38, 0x09, 0xca, 0x2a, 0x1d, 0x71, 0xba, 0x95, - 0x57, 0xe9, 0xac, 0x27, 0xa7, 0x71, 0x9a, 0x9e, 0x41, 0x88, 0xc3, 0xa7, 0x54, 0x9d, 0x13, 0x42, - 0x6c, 0x24, 0xa7, 0x71, 0x9a, 0x1e, 0x19, 0xd0, 0x10, 0xa8, 0x49, 0xf3, 0xc7, 0x6e, 0x46, 0xfc, - 0x7a, 0xe7, 0x95, 0xa3, 0x61, 0xa3, 0xb1, 0x3e, 0x9e, 0x14, 0x3f, 0x0f, 0x4b, 0xde, 0x82, 0xb9, - 0xfb, 0x96, 0x4b, 0xdb, 0x2c, 0x25, 0xb3, 0xbc, 0x85, 0x5e, 0x86, 0xb2, 0xa1, 0x99, 0x62, 0x43, - 0x55, 0x13, 0x6a, 0x97, 0x99, 0xf3, 0xb2, 0x71, 0x3e, 0xad, 0x1c, 0x0a, 0xbf, 0x8e, 0xa6, 0x95, - 0x43, 0xcc, 0xc6, 0xe5, 0x7b, 0x30, 0x23, 0xf2, 0x62, 0x1c, 0xa8, 0x3c, 0x1e, 0xa8, 0x9c, 0x01, - 0xf4, 0xfb, 0x25, 0x98, 0x11, 0x69, 0xe4, 0x0c, 0x13, 0xc2, 0x7b, 0x89, 0x84, 0xf0, 0xd6, 0x64, - 0xa9, 0x36, 0x37, 0x01, 0xa8, 0xa9, 0x04, 0xf0, 0xce, 0x84, 0xf8, 0xe3, 0x03, 0xfe, 0x0f, 0x24, - 0x98, 0x4f, 0x26, 0x7d, 0x16, 0x51, 0xd8, 0x3b, 0xa4, 0xf5, 0xc8, 0xa3, 0xe8, 0xdc, 0x22, 0x8c, - 0x28, 0x9d, 0x68, 0x0a, 0xc7, 0xe9, 0x10, 0x09, 0xd9, 0x98, 0x3b, 0x08, 0xa3, 0x34, 0x73, 0x94, - 0xf6, 0xa8, 0xa6, 0x37, 0xfd, 0x6b, 0xc1, 0xe6, 0x03, 0x93, 0x3e, 0x76, 0x3a, 0xd4, 0xd1, 0xcc, - 0xfe, 0x88, 0x18, 0xee, 0x59, 0x71, 0x5c, 0xf9, 0xaf, 0x25, 0xa8, 0x09, 0x85, 0xcf, 0x23, 0x23, - 0x7d, 0x3d, 0x99, 0x91, 0x3e, 0x3f, 0x61, 0x3d, 0x95, 0x9d, 0x81, 0x7e, 0x14, 0xad, 0x85, 0x55, - 0x50, 0xac, 0xc0, 0xdb, 0xb3, 0x5c, 0x9a, 0x2e, 0xf0, 0xd8, 0x2b, 0x86, 0xf9, 0x0c, 0xfa, 0x35, - 0x09, 0x16, 0xb4, 0x54, 0xcd, 0x25, 0x4c, 0xfd, 0xa5, 0xc9, 0x54, 0x0b, 0x61, 0xa2, 0xcb, 0xd2, - 0xf4, 0x0c, 0x1e, 0x11, 0x29, 0x7b, 0x30, 0x42, 0x85, 0x14, 0x98, 0xda, 0xa3, 0xd4, 0x9e, 0x30, - 0x57, 0x66, 0x55, 0x93, 0xad, 0x2a, 0x5f, 0xfe, 0xf6, 0x76, 0x1b, 0x73, 0x68, 0xf9, 0x07, 0xa5, - 0xd0, 0x60, 0x1d, 0xff, 0x1d, 0x09, 0xeb, 0x5d, 0xe9, 0x34, 0xea, 0xdd, 0x5a, 0x56, 0xad, 0x8b, - 0x9e, 0x42, 0x99, 0xea, 0x93, 0x1e, 0x1b, 0x0a, 0x09, 0xdb, 0x9b, 0x9d, 0x28, 0x4e, 0x6d, 0x6f, - 0x76, 0x30, 0x83, 0x44, 0xdf, 0x84, 0x0a, 0xdb, 0x4d, 0xb0, 0x57, 0xbc, 0x3c, 0x79, 0x08, 0x61, - 0xf6, 0x8a, 0x3c, 0x8c, 0xfd, 0x73, 0xb1, 0x8f, 0x2b, 0x7f, 0x1b, 0xe6, 0x12, 0x71, 0x00, 0x7d, - 0x00, 0x17, 0x75, 0x4b, 0x51, 0x5b, 0x8a, 0xae, 0x98, 0x3d, 0x12, 0xdc, 0x4b, 0xfd, 0xdc, 0xf8, - 0x88, 0xb8, 0x19, 0xe3, 0x10, 0xf1, 0x24, 0xbc, 0xb0, 0x8e, 0xcf, 0xe1, 0x04, 0xb6, 0xac, 0x00, - 0x44, 0xab, 0x47, 0x0d, 0xa8, 0x30, 0x17, 0xf6, 0x77, 0x06, 0xb3, 0xad, 0x59, 0xa6, 0x2b, 0xf3, - 0x6c, 0x17, 0xfb, 0xe3, 0xe8, 0x16, 0x80, 0x4b, 0x7a, 0x0e, 0xa1, 0x3c, 0xec, 0xf8, 0xc7, 0xf4, - 0x61, 0x00, 0xee, 0x84, 0x33, 0x38, 0x46, 0x25, 0xff, 0x56, 0x09, 0xca, 0x0f, 0xad, 0xee, 0x19, - 0x06, 0xf9, 0xa7, 0x89, 0x20, 0x5f, 0xf4, 0xfd, 0x7f, 0x68, 0x75, 0x73, 0x03, 0xfc, 0x2f, 0xa7, - 0x02, 0xfc, 0x9b, 0x13, 0x60, 0x8f, 0x0f, 0xee, 0xff, 0x50, 0x86, 0x8b, 0x0f, 0xad, 0x6e, 0x74, - 0x85, 0xf2, 0x46, 0xe2, 0x90, 0xe0, 0x7a, 0xea, 0x90, 0x60, 0x21, 0x4e, 0x7b, 0x0e, 0x77, 0x27, - 0x7b, 0x7e, 0x61, 0xd6, 0x76, 0xac, 0xae, 0x5f, 0x98, 0x95, 0x8b, 0x17, 0x66, 0x57, 0x85, 0x2e, - 0xbc, 0x38, 0x0b, 0x91, 0x70, 0x12, 0x38, 0xe7, 0x96, 0x63, 0xea, 0xcc, 0x6f, 0x39, 0x62, 0xd7, - 0x43, 0x95, 0xe3, 0x5e, 0x0f, 0x4d, 0x8f, 0xbf, 0x1e, 0x92, 0xff, 0x4c, 0x82, 0x99, 0x87, 0x56, - 0xf7, 0x3c, 0x92, 0xdf, 0x57, 0x93, 0xc9, 0xef, 0x56, 0x71, 0x07, 0xcd, 0x49, 0x7c, 0x7f, 0x54, - 0xe6, 0x6b, 0xe0, 0x31, 0xfc, 0x26, 0xd4, 0x6c, 0xc5, 0x51, 0x74, 0x9d, 0xe8, 0x9a, 0x6b, 0x88, - 0xd2, 0x91, 0xef, 0x79, 0xda, 0xd1, 0x30, 0x8e, 0xd3, 0x30, 0x96, 0x9e, 0x65, 0xd8, 0x3a, 0x09, - 0x2e, 0x4a, 0x42, 0x96, 0xf5, 0x68, 0x18, 0xc7, 0x69, 0xd0, 0x63, 0xb8, 0xaa, 0xf4, 0xa8, 0x76, - 0x40, 0xd2, 0x87, 0xad, 0x65, 0x5e, 0x42, 0xbe, 0x70, 0x34, 0x6c, 0x5c, 0x5d, 0xcb, 0x22, 0xc0, - 0xd9, 0x7c, 0x89, 0x5b, 0x81, 0xa9, 0x33, 0xb8, 0x15, 0x78, 0x03, 0x2e, 0x2a, 0x1e, 0xb5, 0x82, - 0x19, 0xee, 0x3f, 0xd5, 0xd6, 0x02, 0x0b, 0xb9, 0x6b, 0xb1, 0x71, 0x9c, 0xa0, 0x4a, 0xdc, 0x25, - 0x4c, 0x9f, 0x76, 0x4b, 0xc0, 0x9f, 0x96, 0x61, 0x36, 0x0c, 0x3a, 0xc8, 0x4a, 0x9c, 0x7f, 0xfa, - 0xc7, 0x3d, 0x6f, 0x17, 0xf7, 0x90, 0x63, 0x1f, 0x7c, 0xa2, 0xa7, 0x30, 0xeb, 0x52, 0xc5, 0xa1, - 0x93, 0xee, 0xe1, 0xe6, 0x8e, 0x86, 0x8d, 0xd9, 0x4e, 0x80, 0x80, 0x23, 0x30, 0xd4, 0x87, 0xf9, - 0xc8, 0x57, 0x26, 0x8d, 0x44, 0xfe, 0xa6, 0x37, 0x01, 0x83, 0x53, 0xb0, 0x2c, 0x1c, 0xf8, 0xde, - 0x24, 0x36, 0x76, 0x61, 0x38, 0xf0, 0x5d, 0x0f, 0x8b, 0x59, 0xb4, 0x0a, 0xb3, 0xae, 0xd7, 0xeb, - 0x11, 0xa2, 0x12, 0x55, 0x6c, 0xd8, 0x2e, 0x0b, 0xd2, 0xd9, 0x4e, 0x30, 0x81, 0x23, 0x1a, 0x06, - 0xbc, 0xab, 0x68, 0x3a, 0x51, 0xc5, 0x25, 0x49, 0x08, 0x7c, 0x97, 0x8f, 0x62, 0x31, 0xcb, 0x9b, - 0x6e, 0x1e, 0x11, 0xfa, 0x91, 0xe5, 0xec, 0xb7, 0x2d, 0x5d, 0xeb, 0x0d, 0xce, 0x30, 0x73, 0x76, - 0x13, 0x99, 0xf3, 0xcb, 0x05, 0x5d, 0x23, 0xa1, 0x65, 0x5e, 0x0e, 0x95, 0xff, 0x5d, 0x82, 0x7a, - 0x82, 0x32, 0x5e, 0x4e, 0x13, 0xa8, 0xd8, 0x96, 0x43, 0x03, 0xe7, 0x3c, 0x91, 0x06, 0x6c, 0xef, - 0x11, 0x3b, 0x8d, 0x64, 0xb0, 0xd8, 0x47, 0x67, 0xeb, 0xdc, 0x75, 0x2c, 0x43, 0x04, 0xc9, 0x93, - 0x49, 0x21, 0xc4, 0x89, 0xd6, 0x79, 0xd7, 0xb1, 0x0c, 0xcc, 0xb1, 0xe5, 0x7f, 0x94, 0xe0, 0x72, - 0x82, 0xf2, 0x3c, 0xc2, 0xbf, 0x92, 0x0c, 0xff, 0xef, 0x9c, 0x64, 0x65, 0x39, 0x89, 0xe0, 0xbf, - 0xd3, 0xeb, 0x62, 0x16, 0x40, 0x7d, 0xa8, 0xd9, 0x96, 0xda, 0x39, 0x8d, 0xde, 0x29, 0x3f, 0x91, - 0x44, 0x60, 0x38, 0x8e, 0x8c, 0x06, 0x70, 0xd9, 0x54, 0x0c, 0xe2, 0xda, 0x4a, 0x8f, 0x74, 0x4e, - 0xe3, 0x8e, 0xf7, 0xea, 0xd1, 0xb0, 0x71, 0xf9, 0x51, 0x1a, 0x12, 0x8f, 0x4a, 0x91, 0xff, 0x78, - 0x64, 0xe5, 0x96, 0x43, 0xd1, 0x57, 0xa0, 0xca, 0x7b, 0x63, 0x7b, 0x96, 0x2e, 0x8a, 0xb4, 0xdb, - 0xec, 0xe1, 0xb4, 0xc5, 0xd8, 0xb3, 0x61, 0xe3, 0x67, 0xc6, 0x96, 0x5a, 0x01, 0x21, 0x0e, 0x61, - 0xd0, 0x26, 0x4c, 0xd9, 0x93, 0x6f, 0xc8, 0xf9, 0x0e, 0x8c, 0xef, 0xc2, 0x39, 0x8a, 0xfc, 0x9f, - 0x69, 0xb5, 0x79, 0x0e, 0xdf, 0x3f, 0xbd, 0x07, 0x16, 0x9e, 0x00, 0xe4, 0x3e, 0x34, 0x07, 0x66, - 0xc4, 0x7e, 0x54, 0x38, 0xe6, 0xbd, 0x93, 0x38, 0x66, 0x7c, 0x0f, 0x15, 0x16, 0x5d, 0xc1, 0x60, - 0x20, 0x88, 0xbf, 0x7f, 0x5c, 0xa1, 0x9e, 0xe7, 0x68, 0x74, 0x70, 0xe6, 0xb1, 0x73, 0x37, 0x11, - 0x3b, 0x37, 0x0a, 0x2e, 0x70, 0x44, 0xd3, 0xdc, 0xf8, 0xf9, 0xaf, 0x12, 0x5c, 0x1d, 0xa1, 0x3e, - 0x8f, 0xd8, 0x42, 0x92, 0xb1, 0xe5, 0xcb, 0x27, 0x5d, 0x61, 0x4e, 0x7c, 0xf9, 0x18, 0x32, 0xd6, - 0xc7, 0x5d, 0xf6, 0x16, 0x80, 0xed, 0x68, 0x07, 0x9a, 0x4e, 0xfa, 0xa2, 0x7f, 0xb1, 0x1a, 0x3d, - 0x93, 0x76, 0x38, 0x83, 0x63, 0x54, 0xe8, 0x57, 0x60, 0x49, 0x25, 0xbb, 0x8a, 0xa7, 0xd3, 0x35, - 0x55, 0x5d, 0x57, 0x6c, 0xa5, 0xab, 0xe9, 0x1a, 0xd5, 0xc4, 0x25, 0xe0, 0x6c, 0xeb, 0x8e, 0xdf, - 0x57, 0x98, 0x45, 0xf1, 0x6c, 0xd8, 0xf8, 0xec, 0xf8, 0x4d, 0x52, 0x40, 0x3c, 0xc0, 0x39, 0x42, - 0xd0, 0xaf, 0x4a, 0x50, 0x77, 0xc8, 0x87, 0x9e, 0xe6, 0x10, 0x75, 0xc3, 0xb1, 0xec, 0x84, 0x06, - 0x65, 0xae, 0xc1, 0xbd, 0xa3, 0x61, 0xa3, 0x8e, 0x73, 0x68, 0x8a, 0xe8, 0x90, 0x2b, 0x08, 0x51, - 0xb8, 0xa2, 0xe8, 0xba, 0xf5, 0x11, 0x49, 0x5a, 0x60, 0x8a, 0xcb, 0x6f, 0x1d, 0x0d, 0x1b, 0x57, - 0xd6, 0x46, 0xa7, 0x8b, 0x88, 0xce, 0x82, 0x47, 0xab, 0x30, 0x73, 0x60, 0xe9, 0x9e, 0x41, 0xdc, - 0x7a, 0x85, 0x4b, 0x62, 0x91, 0x76, 0xe6, 0x89, 0x3f, 0xf4, 0x8c, 0x15, 0x3a, 0x1d, 0xbe, 0x63, - 0x0d, 0xa8, 0xd0, 0x6d, 0xa8, 0xed, 0x59, 0x2e, 0x15, 0xef, 0x3a, 0x2f, 0x8b, 0xaa, 0x51, 0x70, - 0xb9, 0x1f, 0x4d, 0xe1, 0x38, 0x1d, 0x32, 0x60, 0x76, 0x4f, 0x9c, 0x68, 0xbb, 0xf5, 0x99, 0x89, - 0xf2, 0x5e, 0xe2, 0x44, 0x3c, 0xaa, 0xdb, 0x82, 0x61, 0x17, 0x47, 0x12, 0xd8, 0xbe, 0x8f, 0xff, - 0x79, 0xb0, 0xc1, 0x3b, 0x4e, 0xaa, 0x51, 0x08, 0xba, 0xef, 0x0f, 0xe3, 0x60, 0x3e, 0x20, 0x7d, - 0xd0, 0x5e, 0xe7, 0x0d, 0x22, 0x29, 0xd2, 0x07, 0xed, 0x75, 0x1c, 0xcc, 0x23, 0x1b, 0x66, 0x5c, - 0xb2, 0xa9, 0x99, 0xde, 0x61, 0x1d, 0xf8, 0xab, 0x7b, 0xa7, 0xe8, 0xc5, 0xd5, 0x1d, 0xce, 0x9d, - 0xba, 0x2d, 0x8f, 0x24, 0x8a, 0x79, 0x1c, 0x88, 0x41, 0x87, 0x30, 0xeb, 0x78, 0xe6, 0x9a, 0xbb, - 0xe3, 0x12, 0xa7, 0x5e, 0xe3, 0x32, 0x8b, 0x46, 0x65, 0x1c, 0xf0, 0xa7, 0xa5, 0x86, 0x16, 0x0c, - 0x29, 0x70, 0x24, 0x0c, 0xfd, 0xb6, 0x04, 0xc8, 0xf5, 0x6c, 0x5b, 0x27, 0x06, 0x31, 0xa9, 0xa2, - 0xf3, 0x0b, 0x7b, 0xb7, 0x7e, 0x91, 0xeb, 0xd0, 0x2e, 0x7c, 0x61, 0x97, 0x06, 0x4a, 0x2b, 0x13, - 0x1e, 0x00, 0x8c, 0x92, 0xe2, 0x0c, 0x3d, 0xd8, 0xa3, 0xd8, 0x75, 0xf9, 0xef, 0xfa, 0xdc, 0x44, - 0x8f, 0x22, 0xbb, 0x71, 0x21, 0x7a, 0x14, 0x62, 0x1e, 0x07, 0x62, 0xd0, 0x13, 0x58, 0x72, 0x88, - 0xa2, 0x3e, 0x36, 0xf5, 0x01, 0xb6, 0x2c, 0x7a, 0x57, 0xd3, 0x89, 0x3b, 0x70, 0x29, 0x31, 0xea, - 0xf3, 0xdc, 0x6d, 0xc2, 0x06, 0x68, 0x9c, 0x49, 0x85, 0x73, 0xb8, 0x79, 0x27, 0xb3, 0xb8, 0x67, - 0x3a, 0xdb, 0x0f, 0x1c, 0x4e, 0xd6, 0xc9, 0x1c, 0xa9, 0x78, 0x66, 0x9d, 0xcc, 0x31, 0x11, 0xe3, - 0xcf, 0xdf, 0xfe, 0xab, 0x04, 0x57, 0x22, 0xe2, 0x63, 0x77, 0x32, 0x67, 0xb0, 0x9c, 0xc3, 0x69, - 0x5c, 0xf6, 0x19, 0x59, 0xf9, 0x3c, 0xcf, 0xc8, 0x4e, 0xab, 0x85, 0x9a, 0x37, 0x17, 0x47, 0x56, - 0xfc, 0x3f, 0xd0, 0x5c, 0x1c, 0x29, 0x9b, 0x53, 0xc8, 0xfc, 0x49, 0x29, 0xbe, 0xa2, 0xff, 0x4f, - 0x1d, 0xac, 0x19, 0x0d, 0xa5, 0x53, 0xc5, 0x1a, 0x4a, 0xe5, 0x7f, 0x29, 0xc3, 0x42, 0xfa, 0xa5, - 0x4d, 0x34, 0x32, 0x4a, 0xcf, 0x6d, 0x64, 0x6c, 0xc3, 0xe2, 0xae, 0xa7, 0xeb, 0x03, 0x6e, 0x90, - 0xd8, 0x05, 0xbd, 0x7f, 0xf6, 0xf8, 0x92, 0xe0, 0x5c, 0xbc, 0x9b, 0x41, 0x83, 0x33, 0x39, 0x73, - 0x9a, 0x32, 0xcb, 0x13, 0x35, 0x65, 0xbe, 0x0d, 0x73, 0x0e, 0xff, 0xf6, 0x24, 0xd9, 0x37, 0x10, - 0x1e, 0x8e, 0xe3, 0xf8, 0x24, 0x4e, 0xd2, 0x66, 0x37, 0x58, 0x56, 0x26, 0x68, 0xb0, 0x3c, 0x8d, - 0x8e, 0xc8, 0x8c, 0xd8, 0xf7, 0xdc, 0x8e, 0xc8, 0x97, 0x60, 0x59, 0xb0, 0xb1, 0xff, 0xeb, 0x96, - 0x49, 0x1d, 0x4b, 0xd7, 0x89, 0xb3, 0xe1, 0x19, 0xc6, 0x40, 0x7e, 0x17, 0xe6, 0x93, 0x6d, 0xb9, - 0xfe, 0x93, 0xf7, 0x3b, 0x85, 0x45, 0x83, 0x41, 0xec, 0xc9, 0xfb, 0xe3, 0x38, 0xa4, 0x90, 0x3f, - 0x91, 0xe0, 0x5a, 0x4e, 0x67, 0x23, 0xfa, 0x00, 0xe6, 0x0d, 0xe5, 0x30, 0xd6, 0x32, 0x2a, 0x42, - 0x4b, 0xd1, 0x5d, 0x36, 0x3f, 0x3b, 0xdc, 0x4a, 0x20, 0xe1, 0x14, 0x32, 0x4f, 0xb8, 0xca, 0x61, - 0xc7, 0x73, 0xfa, 0x64, 0xc2, 0xbd, 0x3c, 0x7f, 0x7d, 0xb7, 0x04, 0x06, 0x0e, 0xd1, 0xe4, 0x1f, - 0x4a, 0x50, 0xcf, 0xab, 0xbe, 0xd0, 0xed, 0x44, 0x87, 0xe4, 0x67, 0x52, 0x1d, 0x92, 0x97, 0x47, - 0xf8, 0xce, 0xa9, 0x3f, 0xf2, 0x47, 0x12, 0x2c, 0x65, 0x57, 0xa9, 0xe8, 0xe7, 0x13, 0x1a, 0x37, - 0x52, 0x1a, 0x5f, 0x4a, 0x71, 0x09, 0x7d, 0xf7, 0x60, 0x5e, 0xd4, 0xb2, 0x02, 0xe6, 0x18, 0x9f, - 0xa8, 0x1e, 0x84, 0x85, 0x72, 0x50, 0x95, 0xf1, 0xe7, 0x98, 0x1c, 0xc3, 0x29, 0x5c, 0xf9, 0x77, - 0x4b, 0x50, 0xe1, 0x6d, 0x43, 0x67, 0x58, 0x42, 0x7d, 0x2d, 0x51, 0x42, 0x15, 0xbd, 0x58, 0xe4, - 0xda, 0xe5, 0x56, 0x4f, 0xdd, 0x54, 0xf5, 0xf4, 0xd6, 0x44, 0xe8, 0xe3, 0x0b, 0xa7, 0x2f, 0xc0, - 0x6c, 0xa8, 0x44, 0xb1, 0x40, 0xcd, 0xca, 0xd4, 0x5a, 0x4c, 0x44, 0xc1, 0x30, 0x7f, 0x90, 0xc8, - 0x94, 0x93, 0x7c, 0x4b, 0x1d, 0x93, 0xdd, 0x0c, 0x52, 0xa5, 0xff, 0xb9, 0x4d, 0xd4, 0xf8, 0x37, - 0x9a, 0x41, 0xdf, 0x85, 0x79, 0xff, 0x83, 0xf4, 0xf0, 0x0c, 0xad, 0xcc, 0xbd, 0x37, 0xfc, 0x8c, - 0x6b, 0x3b, 0x31, 0x8b, 0x53, 0xd4, 0xcb, 0x6f, 0xc3, 0x5c, 0x42, 0x58, 0xa1, 0xaf, 0x63, 0xfe, - 0x52, 0x82, 0xc5, 0xac, 0x56, 0x45, 0x74, 0x1d, 0xa6, 0xf6, 0x35, 0xd1, 0x5b, 0x11, 0xeb, 0x47, - 0xf9, 0x45, 0xcd, 0x54, 0x31, 0x9f, 0x09, 0x3f, 0x6e, 0x2a, 0xe5, 0x7e, 0xdc, 0x74, 0x0b, 0x40, - 0xb1, 0x35, 0xf1, 0x91, 0xbf, 0x58, 0x55, 0xe8, 0xbc, 0xd1, 0xe7, 0xff, 0x38, 0x46, 0xc5, 0x3b, - 0x90, 0x22, 0x7d, 0x44, 0x59, 0x18, 0xb5, 0x06, 0xc5, 0x54, 0x8d, 0xd3, 0xc9, 0x7f, 0x25, 0xc1, - 0x67, 0x9e, 0xbb, 0x83, 0x43, 0xad, 0x44, 0x78, 0x68, 0xa6, 0xc2, 0xc3, 0x4a, 0x3e, 0xc0, 0x39, - 0x76, 0x7f, 0x7f, 0xaf, 0x04, 0x68, 0x7b, 0x4f, 0x73, 0xd4, 0xb6, 0xe2, 0xd0, 0x01, 0x16, 0x0b, - 0x3c, 0xc3, 0x80, 0x71, 0x1b, 0x6a, 0x2a, 0x71, 0x7b, 0x8e, 0xc6, 0x8d, 0x24, 0x1e, 0x67, 0x68, - 0xf1, 0x8d, 0x68, 0x0a, 0xc7, 0xe9, 0x50, 0x1f, 0xaa, 0xa2, 0x56, 0x0c, 0x5a, 0x58, 0x8a, 0x16, - 0xbe, 0x91, 0x07, 0x44, 0xef, 0x87, 0x18, 0x70, 0x71, 0x08, 0x2e, 0x7f, 0x5f, 0x82, 0xa5, 0x51, - 0x83, 0x6c, 0xf8, 0x0d, 0x1a, 0x67, 0x65, 0x94, 0x97, 0x60, 0x8a, 0xa3, 0x32, 0x6b, 0x5c, 0xf4, - 0x4f, 0xc2, 0x99, 0x44, 0xcc, 0x47, 0xe5, 0x9f, 0x4a, 0xb0, 0x9c, 0xad, 0xd2, 0x79, 0xec, 0x37, - 0x3e, 0x48, 0xee, 0x37, 0x8a, 0x9e, 0x2a, 0x64, 0x2b, 0x9e, 0xb3, 0xf7, 0xf8, 0x24, 0xd3, 0xf8, - 0xe7, 0xb1, 0xca, 0xdd, 0xe4, 0x2a, 0xd7, 0x4e, 0xbc, 0xca, 0xec, 0x15, 0xb6, 0x3e, 0xf7, 0xf1, - 0xa7, 0x2b, 0x17, 0x7e, 0xfc, 0xe9, 0xca, 0x85, 0x7f, 0xfe, 0x74, 0xe5, 0xc2, 0x77, 0x8f, 0x56, - 0xa4, 0x8f, 0x8f, 0x56, 0xa4, 0x1f, 0x1f, 0xad, 0x48, 0xff, 0x76, 0xb4, 0x22, 0x7d, 0xff, 0x27, - 0x2b, 0x17, 0xbe, 0x36, 0x23, 0x30, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0x18, 0x07, 0xfd, 0xe8, - 0x4d, 0x46, 0x00, 0x00, + 0x6c, 0x07, 0x23, 0xcb, 0x5e, 0x7e, 0x3d, 0x9b, 0xda, 0xf1, 0x4c, 0xaa, 0x19, 0xa3, 0x3a, 0xbd, + 0x31, 0x9e, 0xdc, 0xed, 0xed, 0x11, 0x43, 0x19, 0xe1, 0xba, 0x99, 0xcd, 0xe5, 0x51, 0x4d, 0x5f, + 0xd5, 0x4c, 0xea, 0x52, 0x27, 0xcd, 0x22, 0x37, 0x01, 0xd6, 0xda, 0x0f, 0x9e, 0xf8, 0xab, 0x44, + 0xd7, 0x61, 0xca, 0x54, 0x0c, 0x52, 0x97, 0xae, 0x4b, 0x37, 0x66, 0x5b, 0x17, 0x3f, 0x1e, 0x36, + 0x2e, 0x1c, 0x0d, 0x1b, 0x53, 0x8f, 0x14, 0x83, 0x60, 0x3e, 0x23, 0xbf, 0x07, 0x8b, 0xeb, 0xed, + 0x9d, 0x6d, 0xc5, 0xe9, 0x13, 0xba, 0x43, 0x35, 0x5d, 0xfb, 0x96, 0x42, 0x19, 0xe7, 0x06, 0x2c, + 0x50, 0x3e, 0xd8, 0x26, 0x4e, 0x8f, 0x98, 0x54, 0xe9, 0xfb, 0x28, 0x95, 0x56, 0x5d, 0xa0, 0x2c, + 0x6c, 0xa7, 0xe6, 0xf1, 0x08, 0x87, 0xfc, 0x1b, 0x12, 0xbc, 0xb0, 0xee, 0xb9, 0xd4, 0x32, 0xb6, + 0x08, 0x75, 0xb4, 0xde, 0xba, 0xe7, 0x38, 0xc4, 0xa4, 0x1d, 0xaa, 0x50, 0xcf, 0x7d, 0xbe, 0x76, + 0xe8, 0x29, 0x54, 0x0e, 0x14, 0xdd, 0x23, 0xf5, 0xd2, 0x75, 0xe9, 0x46, 0xed, 0xd6, 0x6b, 0xcd, + 0x5c, 0x67, 0x6b, 0x06, 0xee, 0xd0, 0xfc, 0x8a, 0xa7, 0x98, 0x54, 0xa3, 0x83, 0xd6, 0xa2, 0x00, + 0xbc, 0x28, 0xa4, 0x3e, 0x61, 0x48, 0xd8, 0x07, 0x94, 0xbf, 0x27, 0xc1, 0xcb, 0xb9, 0x9a, 0x6d, + 0x6a, 0x2e, 0x45, 0x06, 0x54, 0x34, 0x4a, 0x0c, 0xb7, 0x2e, 0x5d, 0x2f, 0xdf, 0xa8, 0xdd, 0xba, + 0xdf, 0x2c, 0xe4, 0xe8, 0xcd, 0x5c, 0xf0, 0xd6, 0x9c, 0xd0, 0xab, 0xf2, 0x80, 0xc1, 0x63, 0x5f, + 0x8a, 0xfc, 0xeb, 0x12, 0xa0, 0x38, 0x8f, 0x6f, 0xdd, 0x63, 0xd8, 0xe8, 0xab, 0x27, 0xb1, 0xd1, + 0x15, 0x01, 0x58, 0xf3, 0xc5, 0x25, 0x4c, 0xf4, 0x5d, 0x09, 0x96, 0x46, 0x35, 0xe2, 0xb6, 0xd9, + 0x4d, 0xda, 0x66, 0xed, 0x04, 0xb6, 0xf1, 0x51, 0x73, 0x8c, 0xf2, 0x07, 0x25, 0x98, 0xdd, 0x50, + 0x88, 0x61, 0x99, 0x1d, 0x42, 0xd1, 0x53, 0xa8, 0x1a, 0x84, 0x2a, 0xaa, 0x42, 0x15, 0x6e, 0x8f, + 0xda, 0xad, 0x1b, 0x63, 0x16, 0x7b, 0x70, 0xb3, 0xf9, 0xb8, 0xfb, 0x01, 0xe9, 0xd1, 0x2d, 0x42, + 0x95, 0x16, 0x12, 0xf8, 0x10, 0x8d, 0xe1, 0x10, 0x0d, 0xbd, 0x0f, 0x53, 0xae, 0x4d, 0x7a, 0xc2, + 0x84, 0xef, 0x14, 0x5c, 0x4e, 0xa8, 0x61, 0xc7, 0x26, 0xbd, 0xe8, 0x19, 0xb1, 0x7f, 0x98, 0xe3, + 0xa2, 0x5d, 0x98, 0x76, 0xf9, 0xc3, 0xaf, 0x97, 0xb9, 0x84, 0x77, 0x27, 0x96, 0xe0, 0xbb, 0xd0, + 0xbc, 0x90, 0x31, 0xed, 0xff, 0xc7, 0x02, 0x5d, 0xfe, 0x5b, 0x09, 0xe6, 0x42, 0x5a, 0xfe, 0xa4, + 0xbe, 0x31, 0x62, 0xb3, 0xd5, 0x31, 0x36, 0x8b, 0xc5, 0xc7, 0x26, 0x63, 0xe7, 0xa6, 0x5b, 0x10, + 0xc2, 0xaa, 0xc1, 0x48, 0xcc, 0x70, 0xdf, 0x08, 0x1c, 0xa1, 0xc4, 0x1d, 0xe1, 0xcd, 0x49, 0xd7, + 0x95, 0xf3, 0xfc, 0xff, 0x26, 0xbe, 0x1e, 0x66, 0x4f, 0xf4, 0x3e, 0x54, 0x5d, 0xa2, 0x93, 0x1e, + 0xb5, 0x1c, 0xb1, 0x9e, 0x37, 0x8e, 0xbb, 0x1e, 0xa5, 0x4b, 0xf4, 0x8e, 0xe0, 0x6d, 0x5d, 0x64, + 0x0b, 0x0a, 0xfe, 0xe1, 0x10, 0x13, 0x7d, 0x1d, 0xaa, 0x94, 0x18, 0xb6, 0xae, 0xd0, 0xe0, 0x85, + 0x7a, 0x7d, 0xbc, 0x8f, 0xb5, 0x2d, 0x75, 0x5b, 0x30, 0xf0, 0xc7, 0x1f, 0x5a, 0x2b, 0x18, 0xc5, + 0x21, 0xa0, 0xfc, 0x17, 0x25, 0xb8, 0x94, 0x7a, 0x94, 0xe8, 0x09, 0x2c, 0xf5, 0xfc, 0xf0, 0xf0, + 0xc8, 0x33, 0xba, 0xc4, 0xe9, 0xf4, 0xf6, 0x88, 0xea, 0xe9, 0x44, 0x15, 0xe1, 0x76, 0x45, 0xe0, + 0x2d, 0xad, 0x67, 0x52, 0xe1, 0x1c, 0x6e, 0xf4, 0x10, 0x90, 0xc9, 0x87, 0xb6, 0x34, 0xd7, 0x0d, + 0x31, 0x4b, 0x1c, 0x73, 0x59, 0x60, 0xa2, 0x47, 0x23, 0x14, 0x38, 0x83, 0x8b, 0xe9, 0xa8, 0x12, + 0x57, 0x73, 0x88, 0x9a, 0xd6, 0xb1, 0x9c, 0xd4, 0x71, 0x23, 0x93, 0x0a, 0xe7, 0x70, 0xa3, 0xdb, + 0x50, 0xf3, 0xa5, 0x61, 0xa2, 0xa8, 0x83, 0xfa, 0x14, 0x07, 0x0b, 0x43, 0xd2, 0xa3, 0x68, 0x0a, + 0xc7, 0xe9, 0xe4, 0x3f, 0x2c, 0x01, 0x6c, 0x10, 0x5b, 0xb7, 0x06, 0x06, 0x31, 0xcf, 0x32, 0x2c, + 0x7c, 0x33, 0x11, 0x16, 0xbe, 0x58, 0xd4, 0xb9, 0x43, 0x15, 0x73, 0xe3, 0x42, 0x3f, 0x15, 0x17, + 0xbe, 0x34, 0xb9, 0x88, 0xf1, 0x81, 0xe1, 0x27, 0x65, 0xb8, 0x12, 0x11, 0xaf, 0x5b, 0xa6, 0xaa, + 0xf1, 0x34, 0xff, 0x36, 0x4c, 0xd1, 0x81, 0x1d, 0xa4, 0x97, 0xcf, 0x06, 0x2a, 0x6e, 0x0f, 0x6c, + 0xf2, 0x6c, 0xd8, 0xb8, 0x96, 0xc1, 0xc2, 0xa6, 0x30, 0x67, 0x42, 0x4f, 0x42, 0xed, 0x4b, 0x9c, + 0xfd, 0xdd, 0xa4, 0xf0, 0x67, 0xc3, 0xc6, 0xd8, 0x9a, 0xaa, 0x19, 0x62, 0x26, 0x95, 0x45, 0xaf, + 0xc2, 0xb4, 0x43, 0x14, 0xd7, 0x32, 0xb9, 0x47, 0xcc, 0x46, 0x8b, 0xc2, 0x7c, 0x14, 0x8b, 0x59, + 0xf4, 0x39, 0x98, 0x31, 0x88, 0xeb, 0xb2, 0xd2, 0xa4, 0xc2, 0x09, 0x2f, 0x09, 0xc2, 0x99, 0x2d, + 0x7f, 0x18, 0x07, 0xf3, 0x68, 0x1f, 0xe6, 0x75, 0xc5, 0xa5, 0x3b, 0xb6, 0xaa, 0x50, 0xb2, 0xad, + 0x19, 0xa4, 0x3e, 0xcd, 0x0d, 0xfe, 0xb3, 0xc7, 0x0c, 0x1e, 0x8c, 0xa5, 0xb5, 0x24, 0xe0, 0xe7, + 0x37, 0x13, 0x50, 0x38, 0x05, 0x8d, 0x3e, 0x02, 0xc4, 0x46, 0xb6, 0x1d, 0xc5, 0x74, 0x7d, 0x9b, + 0x31, 0x81, 0x33, 0xc5, 0x05, 0x86, 0xef, 0xe9, 0xe6, 0x08, 0x1c, 0xce, 0x10, 0x21, 0xff, 0x9d, + 0x04, 0xf3, 0xd1, 0x23, 0x3b, 0x8f, 0xf8, 0xff, 0x7e, 0x32, 0xfe, 0x7f, 0x61, 0x62, 0xff, 0xcd, + 0x49, 0x00, 0xbf, 0x59, 0x06, 0x14, 0x11, 0x61, 0x4b, 0xd7, 0xbb, 0x4a, 0x6f, 0xff, 0x18, 0x55, + 0xd1, 0xef, 0x49, 0x80, 0x3c, 0xfe, 0x48, 0xd4, 0x35, 0xd3, 0xb4, 0x28, 0xaf, 0x6a, 0x03, 0x35, + 0x7f, 0x69, 0x62, 0x35, 0x03, 0x0d, 0x9a, 0x3b, 0x23, 0xd8, 0x77, 0x4c, 0xea, 0x0c, 0xa2, 0x47, + 0x36, 0x4a, 0x80, 0x33, 0x14, 0x42, 0x1f, 0x02, 0x38, 0x02, 0x73, 0xdb, 0x12, 0x51, 0xa0, 0x68, + 0xa0, 0x09, 0x94, 0x5a, 0xb7, 0xcc, 0x5d, 0xad, 0x1f, 0xc5, 0x34, 0x1c, 0x02, 0xe3, 0x98, 0x90, + 0xe5, 0x3b, 0x70, 0x2d, 0x47, 0x7b, 0xb4, 0x00, 0xe5, 0x7d, 0x32, 0xf0, 0xcd, 0x8a, 0xd9, 0x4f, + 0xb4, 0x18, 0xaf, 0x2e, 0x67, 0x45, 0x69, 0xf8, 0x56, 0xe9, 0x4d, 0x49, 0xfe, 0x69, 0x25, 0xee, + 0x6c, 0x3c, 0x39, 0xdf, 0x80, 0xaa, 0x43, 0x6c, 0x5d, 0xeb, 0x29, 0xae, 0xc8, 0x5e, 0x3c, 0xcd, + 0x62, 0x31, 0x86, 0xc3, 0xd9, 0x44, 0x1a, 0x2f, 0x9d, 0x71, 0x1a, 0x2f, 0x9f, 0x72, 0x1a, 0x47, + 0x16, 0x54, 0x5d, 0xca, 0x36, 0x5d, 0x7d, 0x3f, 0x67, 0x15, 0x2f, 0x80, 0xe3, 0x71, 0xdb, 0x07, + 0x8a, 0x04, 0x06, 0x23, 0x38, 0x14, 0x82, 0xd6, 0xe0, 0x92, 0xa1, 0x99, 0x3c, 0xf9, 0x75, 0x48, + 0xcf, 0x32, 0x55, 0x97, 0x07, 0xbc, 0x4a, 0xeb, 0x9a, 0x60, 0xba, 0xb4, 0x95, 0x9c, 0xc6, 0x69, + 0x7a, 0xb4, 0x09, 0x8b, 0x0e, 0x39, 0xd0, 0x98, 0x1a, 0xf7, 0x35, 0x97, 0x5a, 0xce, 0x60, 0x53, + 0x33, 0x34, 0xca, 0xc3, 0x60, 0xa5, 0x55, 0x3f, 0x1a, 0x36, 0x16, 0x71, 0xc6, 0x3c, 0xce, 0xe4, + 0x62, 0x11, 0xda, 0x56, 0x3c, 0x97, 0xa8, 0x3c, 0xaa, 0x55, 0xa3, 0x08, 0xdd, 0xe6, 0xa3, 0x58, + 0xcc, 0x22, 0x23, 0xe1, 0xdd, 0xd5, 0xd3, 0xf0, 0xee, 0xf9, 0x7c, 0xcf, 0x46, 0x3b, 0x70, 0xcd, + 0x76, 0xac, 0xbe, 0x43, 0x5c, 0x77, 0x83, 0x28, 0xaa, 0xae, 0x99, 0x24, 0xb0, 0xd7, 0x2c, 0x5f, + 0xe7, 0x8b, 0x47, 0xc3, 0xc6, 0xb5, 0x76, 0x36, 0x09, 0xce, 0xe3, 0x95, 0x3f, 0x29, 0xc3, 0x42, + 0x3a, 0xd3, 0xb2, 0xfa, 0xca, 0xea, 0xba, 0xc4, 0x39, 0x20, 0xea, 0x3d, 0x7f, 0x0f, 0xae, 0x59, + 0x26, 0xf7, 0xfa, 0x72, 0x14, 0x04, 0x1e, 0x8f, 0x50, 0xe0, 0x0c, 0x2e, 0xf4, 0x5a, 0xec, 0xbd, + 0xf1, 0x2b, 0xb4, 0xd0, 0x1b, 0x32, 0xde, 0x9d, 0x35, 0xb8, 0x24, 0x02, 0x49, 0x30, 0x29, 0xca, + 0xb0, 0xd0, 0x1b, 0x76, 0x92, 0xd3, 0x38, 0x4d, 0x8f, 0xee, 0xc1, 0x65, 0xe5, 0x40, 0xd1, 0x74, + 0xa5, 0xab, 0x93, 0x10, 0xc4, 0x2f, 0xbf, 0x5e, 0x10, 0x20, 0x97, 0xd7, 0xd2, 0x04, 0x78, 0x94, + 0x07, 0x6d, 0xc1, 0x15, 0xcf, 0x1c, 0x85, 0xf2, 0xbd, 0xf3, 0x45, 0x01, 0x75, 0x65, 0x67, 0x94, + 0x04, 0x67, 0xf1, 0xa1, 0x03, 0x80, 0x5e, 0x50, 0x14, 0xb8, 0xf5, 0x69, 0x1e, 0xac, 0x5b, 0x13, + 0xbf, 0x5b, 0x61, 0x7d, 0x11, 0x85, 0xc4, 0x70, 0xc8, 0xc5, 0x31, 0x49, 0xf2, 0xdf, 0x4b, 0xf1, + 0x34, 0x13, 0xbc, 0x81, 0xe8, 0xad, 0x44, 0x75, 0xf4, 0x6a, 0xaa, 0x3a, 0x5a, 0x1a, 0xe5, 0x88, + 0x15, 0x47, 0xdf, 0x81, 0x39, 0xe6, 0x99, 0x9a, 0xd9, 0xf7, 0x9f, 0x86, 0x08, 0x73, 0x77, 0x27, + 0xf0, 0xfe, 0x10, 0x23, 0x96, 0x2e, 0x2f, 0x1f, 0x0d, 0x1b, 0x73, 0x89, 0x49, 0x9c, 0x94, 0x27, + 0xbf, 0x07, 0x73, 0x77, 0x0e, 0x6d, 0xcb, 0xa1, 0x8f, 0x6d, 0x3f, 0xd5, 0xbc, 0x0a, 0xd3, 0x84, + 0x0f, 0xf0, 0xf5, 0xc4, 0x5e, 0x5a, 0x9f, 0x0c, 0x8b, 0x59, 0xf4, 0x0a, 0x54, 0xc8, 0xa1, 0xd2, + 0xa3, 0x5c, 0xe3, 0x6a, 0x94, 0x98, 0xef, 0xb0, 0x41, 0xec, 0xcf, 0xc9, 0x3f, 0x94, 0x60, 0xe9, + 0x6e, 0xe7, 0x9e, 0x63, 0x79, 0x76, 0xb0, 0xf8, 0x40, 0xce, 0x2f, 0xc0, 0x94, 0xe3, 0xe9, 0x81, + 0xd5, 0x5e, 0x09, 0xac, 0x86, 0x3d, 0x9d, 0x59, 0xed, 0x4a, 0x8a, 0xcb, 0x37, 0x19, 0x63, 0x40, + 0xef, 0xc3, 0xb4, 0xa3, 0x98, 0x7d, 0x12, 0xa4, 0xe9, 0xcf, 0x17, 0xb4, 0xd5, 0x83, 0x0d, 0xcc, + 0xd8, 0x63, 0xf5, 0x22, 0x47, 0xc3, 0x02, 0x55, 0xfe, 0x1d, 0x09, 0x2e, 0xdd, 0xdf, 0xde, 0x6e, + 0x3f, 0x30, 0xf9, 0x6b, 0xde, 0x56, 0xe8, 0x1e, 0xab, 0x24, 0x6c, 0x85, 0xee, 0xa5, 0x2b, 0x09, + 0x36, 0x87, 0xf9, 0x0c, 0xda, 0x83, 0x19, 0x16, 0x5e, 0x88, 0xa9, 0x4e, 0xb8, 0x0f, 0x10, 0xe2, + 0x5a, 0x3e, 0x48, 0x54, 0xa4, 0x8a, 0x01, 0x1c, 0xc0, 0xcb, 0xdf, 0x86, 0xc5, 0x98, 0x7a, 0xcc, + 0x5e, 0xfc, 0x3c, 0x06, 0xf5, 0xa0, 0xc2, 0x34, 0x09, 0x4e, 0x5b, 0x8a, 0x1e, 0x1e, 0xa4, 0x96, + 0x1c, 0x3d, 0x50, 0xf6, 0xcf, 0xc5, 0x3e, 0xb6, 0xfc, 0x4f, 0x25, 0xb8, 0x76, 0xdf, 0x72, 0xb4, + 0x6f, 0x59, 0x26, 0x55, 0xf4, 0xb6, 0xa5, 0xae, 0x79, 0xd4, 0x72, 0x7b, 0x8a, 0x4e, 0x9c, 0x33, + 0xdc, 0x61, 0xe9, 0x89, 0x1d, 0xd6, 0xc3, 0xa2, 0x2b, 0xcb, 0xd6, 0x37, 0x77, 0xbb, 0x45, 0x53, + 0xdb, 0xad, 0xcd, 0x53, 0x92, 0x37, 0x7e, 0xef, 0xf5, 0x1f, 0x12, 0xbc, 0x98, 0xc3, 0x79, 0x1e, + 0x25, 0xfa, 0x7e, 0xb2, 0x44, 0xbf, 0x7b, 0x3a, 0x6b, 0xce, 0xa9, 0xd7, 0xff, 0xa7, 0x94, 0xbb, + 0x56, 0x5e, 0x21, 0x7e, 0x08, 0x55, 0xfe, 0x0f, 0x93, 0x5d, 0xb1, 0xd6, 0xf5, 0x82, 0xfa, 0x74, + 0xbc, 0x6e, 0x70, 0x8c, 0x89, 0xc9, 0x2e, 0x71, 0x88, 0xd9, 0x23, 0xb1, 0xe2, 0x49, 0x80, 0xe3, + 0x50, 0x0c, 0xba, 0x09, 0x35, 0x5e, 0x0c, 0x25, 0xf2, 0xeb, 0xa5, 0xa3, 0x61, 0xa3, 0xb6, 0x15, + 0x0d, 0xe3, 0x38, 0x0d, 0xba, 0x0d, 0x35, 0x43, 0x39, 0x4c, 0x65, 0xd7, 0xf0, 0x5c, 0x62, 0x2b, + 0x9a, 0xc2, 0x71, 0x3a, 0xf4, 0x1d, 0x98, 0xef, 0xd9, 0x5e, 0xec, 0x14, 0x5d, 0x54, 0x87, 0x45, + 0x97, 0x98, 0x75, 0x20, 0xdf, 0x42, 0x6c, 0xe3, 0xb9, 0xde, 0xde, 0x89, 0x8d, 0xe1, 0x94, 0x38, + 0xf9, 0xcf, 0xcb, 0xf0, 0xf2, 0x58, 0x1f, 0x45, 0x77, 0xc7, 0x54, 0x2d, 0x4b, 0x05, 0x2a, 0x16, + 0x15, 0xe6, 0xd8, 0xfe, 0x93, 0x9b, 0x9b, 0xef, 0x6e, 0x4b, 0xc5, 0x77, 0xb7, 0x3c, 0x85, 0x6d, + 0xc6, 0x51, 0x70, 0x12, 0x94, 0x55, 0x3a, 0xe2, 0x74, 0x2b, 0xaf, 0xd2, 0x59, 0x4f, 0x4e, 0xe3, + 0x34, 0x3d, 0x83, 0x10, 0x87, 0x4f, 0xa9, 0x3a, 0x27, 0x84, 0xd8, 0x48, 0x4e, 0xe3, 0x34, 0x3d, + 0x32, 0xa0, 0x21, 0x50, 0x93, 0xe6, 0x8f, 0xdd, 0x8c, 0xf8, 0xf5, 0xce, 0x2b, 0x47, 0xc3, 0x46, + 0x63, 0x7d, 0x3c, 0x29, 0x7e, 0x1e, 0x96, 0xbc, 0x05, 0x73, 0xf7, 0x2d, 0x97, 0xb6, 0x59, 0x4a, + 0x66, 0x79, 0x0b, 0xbd, 0x0c, 0x65, 0x43, 0x33, 0xc5, 0x86, 0xaa, 0x26, 0xd4, 0x2e, 0x33, 0xe7, + 0x65, 0xe3, 0x7c, 0x5a, 0x39, 0x14, 0x7e, 0x1d, 0x4d, 0x2b, 0x87, 0x98, 0x8d, 0xcb, 0xf7, 0x60, + 0x46, 0xe4, 0xc5, 0x38, 0x50, 0x79, 0x3c, 0x50, 0x39, 0x03, 0xe8, 0xf7, 0x4b, 0x30, 0x23, 0xd2, + 0xc8, 0x19, 0x26, 0x84, 0xf7, 0x12, 0x09, 0xe1, 0xad, 0xc9, 0x52, 0x6d, 0x6e, 0x02, 0x50, 0x53, + 0x09, 0xe0, 0x9d, 0x09, 0xf1, 0xc7, 0x07, 0xfc, 0x1f, 0x48, 0x30, 0x9f, 0x4c, 0xfa, 0x2c, 0xa2, + 0xb0, 0x77, 0x48, 0xeb, 0x91, 0x47, 0xd1, 0xb9, 0x45, 0x18, 0x51, 0x3a, 0xd1, 0x14, 0x8e, 0xd3, + 0x21, 0x12, 0xb2, 0x31, 0x77, 0x10, 0x46, 0x69, 0xe6, 0x28, 0xed, 0x51, 0x4d, 0x6f, 0xfa, 0xd7, + 0x82, 0xcd, 0x07, 0x26, 0x7d, 0xec, 0x74, 0xa8, 0xa3, 0x99, 0xfd, 0x11, 0x31, 0xdc, 0xb3, 0xe2, + 0xb8, 0xf2, 0x5f, 0x4b, 0x50, 0x13, 0x0a, 0x9f, 0x47, 0x46, 0xfa, 0x7a, 0x32, 0x23, 0x7d, 0x7e, + 0xc2, 0x7a, 0x2a, 0x3b, 0x03, 0xfd, 0x28, 0x5a, 0x0b, 0xab, 0xa0, 0x58, 0x81, 0xb7, 0x67, 0xb9, + 0x34, 0x5d, 0xe0, 0xb1, 0x57, 0x0c, 0xf3, 0x19, 0xf4, 0x6b, 0x12, 0x2c, 0x68, 0xa9, 0x9a, 0x4b, + 0x98, 0xfa, 0x4b, 0x93, 0xa9, 0x16, 0xc2, 0x44, 0x97, 0xa5, 0xe9, 0x19, 0x3c, 0x22, 0x52, 0xf6, + 0x60, 0x84, 0x0a, 0x29, 0x30, 0xb5, 0x47, 0xa9, 0x3d, 0x61, 0xae, 0xcc, 0xaa, 0x26, 0x5b, 0x55, + 0xbe, 0xfc, 0xed, 0xed, 0x36, 0xe6, 0xd0, 0xf2, 0x0f, 0x4a, 0xa1, 0xc1, 0x3a, 0xfe, 0x3b, 0x12, + 0xd6, 0xbb, 0xd2, 0x69, 0xd4, 0xbb, 0xb5, 0xac, 0x5a, 0x17, 0x3d, 0x85, 0x32, 0xd5, 0x27, 0x3d, + 0x36, 0x14, 0x12, 0xb6, 0x37, 0x3b, 0x51, 0x9c, 0xda, 0xde, 0xec, 0x60, 0x06, 0x89, 0xbe, 0x09, + 0x15, 0xb6, 0x9b, 0x60, 0xaf, 0x78, 0x79, 0xf2, 0x10, 0xc2, 0xec, 0x15, 0x79, 0x18, 0xfb, 0xe7, + 0x62, 0x1f, 0x57, 0xfe, 0x36, 0xcc, 0x25, 0xe2, 0x00, 0xfa, 0x00, 0x2e, 0xea, 0x96, 0xa2, 0xb6, + 0x14, 0x5d, 0x31, 0x7b, 0x24, 0xb8, 0x97, 0xfa, 0xb9, 0xf1, 0x11, 0x71, 0x33, 0xc6, 0x21, 0xe2, + 0x49, 0x78, 0x61, 0x1d, 0x9f, 0xc3, 0x09, 0x6c, 0x59, 0x01, 0x88, 0x56, 0x8f, 0x1a, 0x50, 0x61, + 0x2e, 0xec, 0xef, 0x0c, 0x66, 0x5b, 0xb3, 0x4c, 0x57, 0xe6, 0xd9, 0x2e, 0xf6, 0xc7, 0xd1, 0x2d, + 0x00, 0x97, 0xf4, 0x1c, 0x42, 0x79, 0xd8, 0xf1, 0x8f, 0xe9, 0xc3, 0x00, 0xdc, 0x09, 0x67, 0x70, + 0x8c, 0x4a, 0xfe, 0xad, 0x12, 0x94, 0x1f, 0x5a, 0xdd, 0x33, 0x0c, 0xf2, 0x4f, 0x13, 0x41, 0xbe, + 0xe8, 0xfb, 0xff, 0xd0, 0xea, 0xe6, 0x06, 0xf8, 0x5f, 0x4e, 0x05, 0xf8, 0x37, 0x27, 0xc0, 0x1e, + 0x1f, 0xdc, 0xff, 0xa1, 0x0c, 0x17, 0x1f, 0x5a, 0xdd, 0xe8, 0x0a, 0xe5, 0x8d, 0xc4, 0x21, 0xc1, + 0xf5, 0xd4, 0x21, 0xc1, 0x42, 0x9c, 0xf6, 0x1c, 0xee, 0x4e, 0xf6, 0xfc, 0xc2, 0xac, 0xed, 0x58, + 0x5d, 0xbf, 0x30, 0x2b, 0x17, 0x2f, 0xcc, 0xae, 0x0a, 0x5d, 0x78, 0x71, 0x16, 0x22, 0xe1, 0x24, + 0x70, 0xce, 0x2d, 0xc7, 0xd4, 0x99, 0xdf, 0x72, 0xc4, 0xae, 0x87, 0x2a, 0xc7, 0xbd, 0x1e, 0x9a, + 0x1e, 0x7f, 0x3d, 0x24, 0xff, 0x99, 0x04, 0x33, 0x0f, 0xad, 0xee, 0x79, 0x24, 0xbf, 0xaf, 0x26, + 0x93, 0xdf, 0xad, 0xe2, 0x0e, 0x9a, 0x93, 0xf8, 0xfe, 0xa8, 0xcc, 0xd7, 0xc0, 0x63, 0xf8, 0x4d, + 0xa8, 0xd9, 0x8a, 0xa3, 0xe8, 0x3a, 0xd1, 0x35, 0xd7, 0x10, 0xa5, 0x23, 0xdf, 0xf3, 0xb4, 0xa3, + 0x61, 0x1c, 0xa7, 0x61, 0x2c, 0x3d, 0xcb, 0xb0, 0x75, 0x12, 0x5c, 0x94, 0x84, 0x2c, 0xeb, 0xd1, + 0x30, 0x8e, 0xd3, 0xa0, 0xc7, 0x70, 0x55, 0xe9, 0x51, 0xed, 0x80, 0xa4, 0x0f, 0x5b, 0xcb, 0xbc, + 0x84, 0x7c, 0xe1, 0x68, 0xd8, 0xb8, 0xba, 0x96, 0x45, 0x80, 0xb3, 0xf9, 0x12, 0xb7, 0x02, 0x53, + 0x67, 0x70, 0x2b, 0xf0, 0x06, 0x5c, 0x54, 0x3c, 0x6a, 0x05, 0x33, 0xdc, 0x7f, 0xaa, 0xad, 0x05, + 0x16, 0x72, 0xd7, 0x62, 0xe3, 0x38, 0x41, 0x95, 0xb8, 0x4b, 0x98, 0x3e, 0xed, 0x96, 0x80, 0x3f, + 0x2d, 0xc3, 0x6c, 0x18, 0x74, 0x90, 0x95, 0x38, 0xff, 0xf4, 0x8f, 0x7b, 0xde, 0x2e, 0xee, 0x21, + 0xc7, 0x3e, 0xf8, 0x44, 0x4f, 0x61, 0xd6, 0xa5, 0x8a, 0x43, 0x27, 0xdd, 0xc3, 0xcd, 0x1d, 0x0d, + 0x1b, 0xb3, 0x9d, 0x00, 0x01, 0x47, 0x60, 0xa8, 0x0f, 0xf3, 0x91, 0xaf, 0x4c, 0x1a, 0x89, 0xfc, + 0x4d, 0x6f, 0x02, 0x06, 0xa7, 0x60, 0x59, 0x38, 0xf0, 0xbd, 0x49, 0x6c, 0xec, 0xc2, 0x70, 0xe0, + 0xbb, 0x1e, 0x16, 0xb3, 0x68, 0x15, 0x66, 0x5d, 0xaf, 0xd7, 0x23, 0x44, 0x25, 0xaa, 0xd8, 0xb0, + 0x5d, 0x16, 0xa4, 0xb3, 0x9d, 0x60, 0x02, 0x47, 0x34, 0x0c, 0x78, 0x57, 0xd1, 0x74, 0xa2, 0x8a, + 0x4b, 0x92, 0x10, 0xf8, 0x2e, 0x1f, 0xc5, 0x62, 0x96, 0x37, 0xdd, 0x3c, 0x22, 0xf4, 0x23, 0xcb, + 0xd9, 0x6f, 0x5b, 0xba, 0xd6, 0x1b, 0x9c, 0x61, 0xe6, 0xec, 0x26, 0x32, 0xe7, 0x97, 0x0b, 0xba, + 0x46, 0x42, 0xcb, 0xbc, 0x1c, 0x2a, 0xff, 0xbb, 0x04, 0xf5, 0x04, 0x65, 0xbc, 0x9c, 0x26, 0x50, + 0xb1, 0x2d, 0x87, 0x06, 0xce, 0x79, 0x22, 0x0d, 0xd8, 0xde, 0x23, 0x76, 0x1a, 0xc9, 0x60, 0xb1, + 0x8f, 0xce, 0xd6, 0xb9, 0xeb, 0x58, 0x86, 0x08, 0x92, 0x27, 0x93, 0x42, 0x88, 0x13, 0xad, 0xf3, + 0xae, 0x63, 0x19, 0x98, 0x63, 0xcb, 0xff, 0x28, 0xc1, 0xe5, 0x04, 0xe5, 0x79, 0x84, 0x7f, 0x25, + 0x19, 0xfe, 0xdf, 0x39, 0xc9, 0xca, 0x72, 0x12, 0xc1, 0x7f, 0xa7, 0xd7, 0xc5, 0x2c, 0x80, 0xfa, + 0x50, 0xb3, 0x2d, 0xb5, 0x73, 0x1a, 0xbd, 0x53, 0x7e, 0x22, 0x89, 0xc0, 0x70, 0x1c, 0x19, 0x0d, + 0xe0, 0xb2, 0xa9, 0x18, 0xc4, 0xb5, 0x95, 0x1e, 0xe9, 0x9c, 0xc6, 0x1d, 0xef, 0xd5, 0xa3, 0x61, + 0xe3, 0xf2, 0xa3, 0x34, 0x24, 0x1e, 0x95, 0x22, 0xff, 0xf1, 0xc8, 0xca, 0x2d, 0x87, 0xa2, 0xaf, + 0x40, 0x95, 0xf7, 0xc6, 0xf6, 0x2c, 0x5d, 0x14, 0x69, 0xb7, 0xd9, 0xc3, 0x69, 0x8b, 0xb1, 0x67, + 0xc3, 0xc6, 0xcf, 0x8c, 0x2d, 0xb5, 0x02, 0x42, 0x1c, 0xc2, 0xa0, 0x4d, 0x98, 0xb2, 0x27, 0xdf, + 0x90, 0xf3, 0x1d, 0x18, 0xdf, 0x85, 0x73, 0x14, 0xf9, 0x3f, 0xd3, 0x6a, 0xf3, 0x1c, 0xbe, 0x7f, + 0x7a, 0x0f, 0x2c, 0x3c, 0x01, 0xc8, 0x7d, 0x68, 0x0e, 0xcc, 0x88, 0xfd, 0xa8, 0x70, 0xcc, 0x7b, + 0x27, 0x71, 0xcc, 0xf8, 0x1e, 0x2a, 0x2c, 0xba, 0x82, 0xc1, 0x40, 0x10, 0x7f, 0xff, 0xb8, 0x42, + 0x3d, 0xcf, 0xd1, 0xe8, 0xe0, 0xcc, 0x63, 0xe7, 0x6e, 0x22, 0x76, 0x6e, 0x14, 0x5c, 0xe0, 0x88, + 0xa6, 0xb9, 0xf1, 0xf3, 0x5f, 0x25, 0xb8, 0x3a, 0x42, 0x7d, 0x1e, 0xb1, 0x85, 0x24, 0x63, 0xcb, + 0x97, 0x4f, 0xba, 0xc2, 0x9c, 0xf8, 0xf2, 0x31, 0x64, 0xac, 0x8f, 0xbb, 0xec, 0x2d, 0x00, 0xdb, + 0xd1, 0x0e, 0x34, 0x9d, 0xf4, 0x45, 0xff, 0x62, 0x35, 0x7a, 0x26, 0xed, 0x70, 0x06, 0xc7, 0xa8, + 0xd0, 0xaf, 0xc0, 0x92, 0x4a, 0x76, 0x15, 0x4f, 0xa7, 0x6b, 0xaa, 0xba, 0xae, 0xd8, 0x4a, 0x57, + 0xd3, 0x35, 0xaa, 0x89, 0x4b, 0xc0, 0xd9, 0xd6, 0x1d, 0xbf, 0xaf, 0x30, 0x8b, 0xe2, 0xd9, 0xb0, + 0xf1, 0xd9, 0xf1, 0x9b, 0xa4, 0x80, 0x78, 0x80, 0x73, 0x84, 0xa0, 0x5f, 0x95, 0xa0, 0xee, 0x90, + 0x0f, 0x3d, 0xcd, 0x21, 0xea, 0x86, 0x63, 0xd9, 0x09, 0x0d, 0xca, 0x5c, 0x83, 0x7b, 0x47, 0xc3, + 0x46, 0x1d, 0xe7, 0xd0, 0x14, 0xd1, 0x21, 0x57, 0x10, 0xa2, 0x70, 0x45, 0xd1, 0x75, 0xeb, 0x23, + 0x92, 0xb4, 0xc0, 0x14, 0x97, 0xdf, 0x3a, 0x1a, 0x36, 0xae, 0xac, 0x8d, 0x4e, 0x17, 0x11, 0x9d, + 0x05, 0x8f, 0x56, 0x61, 0xe6, 0xc0, 0xd2, 0x3d, 0x83, 0xb8, 0xf5, 0x0a, 0x97, 0xc4, 0x22, 0xed, + 0xcc, 0x13, 0x7f, 0xe8, 0x19, 0x2b, 0x74, 0x3a, 0x7c, 0xc7, 0x1a, 0x50, 0xa1, 0xdb, 0x50, 0xdb, + 0xb3, 0x5c, 0x2a, 0xde, 0x75, 0x5e, 0x16, 0x55, 0xa3, 0xe0, 0x72, 0x3f, 0x9a, 0xc2, 0x71, 0x3a, + 0x64, 0xc0, 0xec, 0x9e, 0x38, 0xd1, 0x76, 0xeb, 0x33, 0x13, 0xe5, 0xbd, 0xc4, 0x89, 0x78, 0x54, + 0xb7, 0x05, 0xc3, 0x2e, 0x8e, 0x24, 0xb0, 0x7d, 0x1f, 0xff, 0xf3, 0x60, 0x83, 0x77, 0x9c, 0x54, + 0xa3, 0x10, 0x74, 0xdf, 0x1f, 0xc6, 0xc1, 0x7c, 0x40, 0xfa, 0xa0, 0xbd, 0xce, 0x1b, 0x44, 0x52, + 0xa4, 0x0f, 0xda, 0xeb, 0x38, 0x98, 0x47, 0x36, 0xcc, 0xb8, 0x64, 0x53, 0x33, 0xbd, 0xc3, 0x3a, + 0xf0, 0x57, 0xf7, 0x4e, 0xd1, 0x8b, 0xab, 0x3b, 0x9c, 0x3b, 0x75, 0x5b, 0x1e, 0x49, 0x14, 0xf3, + 0x38, 0x10, 0x83, 0x0e, 0x61, 0xd6, 0xf1, 0xcc, 0x35, 0x77, 0xc7, 0x25, 0x4e, 0xbd, 0xc6, 0x65, + 0x16, 0x8d, 0xca, 0x38, 0xe0, 0x4f, 0x4b, 0x0d, 0x2d, 0x18, 0x52, 0xe0, 0x48, 0x18, 0xfa, 0x6d, + 0x09, 0x90, 0xeb, 0xd9, 0xb6, 0x4e, 0x0c, 0x62, 0x52, 0x45, 0xe7, 0x17, 0xf6, 0x6e, 0xfd, 0x22, + 0xd7, 0xa1, 0x5d, 0xf8, 0xc2, 0x2e, 0x0d, 0x94, 0x56, 0x26, 0x3c, 0x00, 0x18, 0x25, 0xc5, 0x19, + 0x7a, 0xb0, 0x47, 0xb1, 0xeb, 0xf2, 0xdf, 0xf5, 0xb9, 0x89, 0x1e, 0x45, 0x76, 0xe3, 0x42, 0xf4, + 0x28, 0xc4, 0x3c, 0x0e, 0xc4, 0xa0, 0x27, 0xb0, 0xe4, 0x10, 0x45, 0x7d, 0x6c, 0xea, 0x03, 0x6c, + 0x59, 0xf4, 0xae, 0xa6, 0x13, 0x77, 0xe0, 0x52, 0x62, 0xd4, 0xe7, 0xb9, 0xdb, 0x84, 0x0d, 0xd0, + 0x38, 0x93, 0x0a, 0xe7, 0x70, 0xf3, 0x4e, 0x66, 0x71, 0xcf, 0x74, 0xb6, 0x1f, 0x38, 0x9c, 0xac, + 0x93, 0x39, 0x52, 0xf1, 0xcc, 0x3a, 0x99, 0x63, 0x22, 0xc6, 0x9f, 0xbf, 0xfd, 0x57, 0x09, 0xae, + 0x44, 0xc4, 0xc7, 0xee, 0x64, 0xce, 0x60, 0x39, 0x87, 0xd3, 0xb8, 0xec, 0x33, 0xb2, 0xf2, 0x79, + 0x9e, 0x91, 0x9d, 0x56, 0x0b, 0x35, 0x6f, 0x2e, 0x8e, 0xac, 0xf8, 0x7f, 0xa0, 0xb9, 0x38, 0x52, + 0x36, 0xa7, 0x90, 0xf9, 0x93, 0x52, 0x7c, 0x45, 0xff, 0x9f, 0x3a, 0x58, 0x33, 0x1a, 0x4a, 0xa7, + 0x8a, 0x35, 0x94, 0xca, 0xff, 0x52, 0x86, 0x85, 0xf4, 0x4b, 0x9b, 0x68, 0x64, 0x94, 0x9e, 0xdb, + 0xc8, 0xd8, 0x86, 0xc5, 0x5d, 0x4f, 0xd7, 0x07, 0xdc, 0x20, 0xb1, 0x0b, 0x7a, 0xff, 0xec, 0xf1, + 0x25, 0xc1, 0xb9, 0x78, 0x37, 0x83, 0x06, 0x67, 0x72, 0xe6, 0x34, 0x65, 0x96, 0x27, 0x6a, 0xca, + 0x7c, 0x1b, 0xe6, 0x1c, 0xfe, 0xed, 0x49, 0xb2, 0x6f, 0x20, 0x3c, 0x1c, 0xc7, 0xf1, 0x49, 0x9c, + 0xa4, 0xcd, 0x6e, 0xb0, 0xac, 0x4c, 0xd0, 0x60, 0x79, 0x1a, 0x1d, 0x91, 0x19, 0xb1, 0xef, 0xb9, + 0x1d, 0x91, 0x2f, 0xc1, 0xb2, 0x60, 0x63, 0xff, 0xd7, 0x2d, 0x93, 0x3a, 0x96, 0xae, 0x13, 0x67, + 0xc3, 0x33, 0x8c, 0x81, 0xfc, 0x2e, 0xcc, 0x27, 0xdb, 0x72, 0xfd, 0x27, 0xef, 0x77, 0x0a, 0x8b, + 0x06, 0x83, 0xd8, 0x93, 0xf7, 0xc7, 0x71, 0x48, 0x21, 0x7f, 0x22, 0xc1, 0xb5, 0x9c, 0xce, 0x46, + 0xf4, 0x01, 0xcc, 0x1b, 0xca, 0x61, 0xac, 0x65, 0x54, 0x84, 0x96, 0xa2, 0xbb, 0x6c, 0x7e, 0x76, + 0xb8, 0x95, 0x40, 0xc2, 0x29, 0x64, 0x9e, 0x70, 0x95, 0xc3, 0x8e, 0xe7, 0xf4, 0xc9, 0x84, 0x7b, + 0x79, 0xfe, 0xfa, 0x6e, 0x09, 0x0c, 0x1c, 0xa2, 0xc9, 0x3f, 0x94, 0xa0, 0x9e, 0x57, 0x7d, 0xa1, + 0xdb, 0x89, 0x0e, 0xc9, 0xcf, 0xa4, 0x3a, 0x24, 0x2f, 0x8f, 0xf0, 0x9d, 0x53, 0x7f, 0xe4, 0x8f, + 0x24, 0x58, 0xca, 0xae, 0x52, 0xd1, 0xcf, 0x27, 0x34, 0x6e, 0xa4, 0x34, 0xbe, 0x94, 0xe2, 0x12, + 0xfa, 0xee, 0xc1, 0xbc, 0xa8, 0x65, 0x05, 0xcc, 0x31, 0x3e, 0x51, 0x3d, 0x08, 0x0b, 0xe5, 0xa0, + 0x2a, 0xe3, 0xcf, 0x31, 0x39, 0x86, 0x53, 0xb8, 0xf2, 0xef, 0x96, 0xa0, 0xc2, 0xdb, 0x86, 0xce, + 0xb0, 0x84, 0xfa, 0x5a, 0xa2, 0x84, 0x2a, 0x7a, 0xb1, 0xc8, 0xb5, 0xcb, 0xad, 0x9e, 0xba, 0xa9, + 0xea, 0xe9, 0xad, 0x89, 0xd0, 0xc7, 0x17, 0x4e, 0x5f, 0x80, 0xd9, 0x50, 0x89, 0x62, 0x81, 0x9a, + 0x95, 0xa9, 0xb5, 0x98, 0x88, 0x82, 0x61, 0xfe, 0x20, 0x91, 0x29, 0x27, 0xf9, 0x96, 0x3a, 0x26, + 0xbb, 0x19, 0xa4, 0x4a, 0xff, 0x73, 0x9b, 0xa8, 0xf1, 0x6f, 0x34, 0x83, 0xbe, 0x0b, 0xf3, 0xfe, + 0x07, 0xe9, 0xe1, 0x19, 0x5a, 0x99, 0x7b, 0x6f, 0xf8, 0x19, 0xd7, 0x76, 0x62, 0x16, 0xa7, 0xa8, + 0x97, 0xdf, 0x86, 0xb9, 0x84, 0xb0, 0x42, 0x5f, 0xc7, 0xfc, 0xa5, 0x04, 0x8b, 0x59, 0xad, 0x8a, + 0xe8, 0x3a, 0x4c, 0xed, 0x6b, 0xa2, 0xb7, 0x22, 0xd6, 0x8f, 0xf2, 0x8b, 0x9a, 0xa9, 0x62, 0x3e, + 0x13, 0x7e, 0xdc, 0x54, 0xca, 0xfd, 0xb8, 0xe9, 0x16, 0x80, 0x62, 0x6b, 0xe2, 0x23, 0x7f, 0xb1, + 0xaa, 0xd0, 0x79, 0xa3, 0xcf, 0xff, 0x71, 0x8c, 0x8a, 0x77, 0x20, 0x45, 0xfa, 0x88, 0xb2, 0x30, + 0x6a, 0x0d, 0x8a, 0xa9, 0x1a, 0xa7, 0x93, 0xff, 0x4a, 0x82, 0xcf, 0x3c, 0x77, 0x07, 0x87, 0x5a, + 0x89, 0xf0, 0xd0, 0x4c, 0x85, 0x87, 0x95, 0x7c, 0x80, 0x73, 0xec, 0xfe, 0xfe, 0x5e, 0x09, 0xd0, + 0xf6, 0x9e, 0xe6, 0xa8, 0x6d, 0xc5, 0xa1, 0x03, 0x2c, 0x16, 0x78, 0x86, 0x01, 0xe3, 0x36, 0xd4, + 0x54, 0xe2, 0xf6, 0x1c, 0x8d, 0x1b, 0x49, 0x3c, 0xce, 0xd0, 0xe2, 0x1b, 0xd1, 0x14, 0x8e, 0xd3, + 0xa1, 0x3e, 0x54, 0x45, 0xad, 0x18, 0xb4, 0xb0, 0x14, 0x2d, 0x7c, 0x23, 0x0f, 0x88, 0xde, 0x0f, + 0x31, 0xe0, 0xe2, 0x10, 0x5c, 0xfe, 0xbe, 0x04, 0x4b, 0xa3, 0x06, 0xd9, 0xf0, 0x1b, 0x34, 0xce, + 0xca, 0x28, 0x2f, 0xc1, 0x14, 0x47, 0x65, 0xd6, 0xb8, 0xe8, 0x9f, 0x84, 0x33, 0x89, 0x98, 0x8f, + 0xca, 0x3f, 0x95, 0x60, 0x39, 0x5b, 0xa5, 0xf3, 0xd8, 0x6f, 0x7c, 0x90, 0xdc, 0x6f, 0x14, 0x3d, + 0x55, 0xc8, 0x56, 0x3c, 0x67, 0xef, 0xf1, 0x49, 0xa6, 0xf1, 0xcf, 0x63, 0x95, 0xbb, 0xc9, 0x55, + 0xae, 0x9d, 0x78, 0x95, 0xd9, 0x2b, 0x6c, 0x7d, 0xee, 0xe3, 0x4f, 0x57, 0x2e, 0xfc, 0xf8, 0xd3, + 0x95, 0x0b, 0xff, 0xfc, 0xe9, 0xca, 0x85, 0xef, 0x1e, 0xad, 0x48, 0x1f, 0x1f, 0xad, 0x48, 0x3f, + 0x3e, 0x5a, 0x91, 0xfe, 0xed, 0x68, 0x45, 0xfa, 0xfe, 0x4f, 0x56, 0x2e, 0x7c, 0x6d, 0x46, 0x60, + 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x92, 0xb7, 0x3c, 0x83, 0x46, 0x00, 0x00, } diff --git a/pkg/apis/extensions/v1beta1/generated.proto b/pkg/apis/extensions/v1beta1/generated.proto index da5d6d3b..933264e1 100644 --- a/pkg/apis/extensions/v1beta1/generated.proto +++ b/pkg/apis/extensions/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/extensions/v1beta1/register.go b/pkg/apis/extensions/v1beta1/register.go index f8e81972..fadfe0fa 100644 --- a/pkg/apis/extensions/v1beta1/register.go +++ b/pkg/apis/extensions/v1beta1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "extensions" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) diff --git a/pkg/apis/imagepolicy/register.go b/pkg/apis/imagepolicy/register.go index fb55f7dc..86da8164 100644 --- a/pkg/apis/imagepolicy/register.go +++ b/pkg/apis/imagepolicy/register.go @@ -18,23 +18,23 @@ package imagepolicy import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "imagepolicy.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/imagepolicy/v1alpha1/generated.pb.go b/pkg/apis/imagepolicy/v1alpha1/generated.pb.go index d7113ff8..57ccc840 100644 --- a/pkg/apis/imagepolicy/v1alpha1/generated.pb.go +++ b/pkg/apis/imagepolicy/v1alpha1/generated.pb.go @@ -1019,41 +1019,42 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 573 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x92, 0x3f, 0x6f, 0xd3, 0x4e, - 0x18, 0xc7, 0xe3, 0xa4, 0xff, 0x72, 0xf9, 0xfd, 0x68, 0x7b, 0x30, 0x58, 0x19, 0xdc, 0x2a, 0x48, - 0xa8, 0x20, 0x7a, 0xa7, 0x54, 0x42, 0xaa, 0x18, 0x28, 0x35, 0x62, 0xe8, 0x00, 0x88, 0x63, 0x41, - 0x6c, 0x17, 0xe7, 0xa9, 0x7b, 0x8d, 0x73, 0x67, 0xf9, 0xce, 0xae, 0x3a, 0x20, 0x31, 0x32, 0x30, - 0xf0, 0x6e, 0x78, 0x0b, 0x1d, 0x3b, 0x32, 0x55, 0x24, 0xbc, 0x11, 0x94, 0xb3, 0x53, 0x9b, 0xa4, - 0x19, 0x50, 0x36, 0x3f, 0xff, 0x3e, 0xdf, 0xef, 0x3d, 0x8f, 0xd1, 0xd1, 0xe0, 0x50, 0x13, 0xa1, - 0xe8, 0x20, 0xed, 0x41, 0x22, 0xc1, 0x80, 0xa6, 0xf1, 0x20, 0xa4, 0x3c, 0x16, 0x9a, 0x8a, 0x21, - 0x0f, 0x21, 0x56, 0x91, 0x08, 0x2e, 0x69, 0xd6, 0xe5, 0x51, 0x7c, 0xc6, 0xbb, 0x34, 0x04, 0x09, - 0x09, 0x37, 0xd0, 0x27, 0x71, 0xa2, 0x8c, 0xc2, 0x34, 0x07, 0x90, 0x12, 0x40, 0xe2, 0x41, 0x48, - 0x26, 0x00, 0x52, 0x01, 0x90, 0x29, 0xa0, 0xbd, 0x1f, 0x0a, 0x73, 0x96, 0xf6, 0x48, 0xa0, 0x86, - 0x34, 0x54, 0xa1, 0xa2, 0x96, 0xd3, 0x4b, 0x4f, 0x6d, 0x64, 0x03, 0xfb, 0x95, 0xf3, 0xdb, 0x07, - 0x0b, 0x0d, 0xd2, 0x04, 0xb4, 0x4a, 0x93, 0x00, 0x66, 0x3d, 0xb5, 0x9f, 0x2d, 0x9e, 0x49, 0x65, - 0x06, 0x89, 0x16, 0x4a, 0x42, 0x7f, 0x6e, 0xec, 0xe9, 0xe2, 0xb1, 0x6c, 0xee, 0xe1, 0xed, 0xfd, - 0xbb, 0xbb, 0x93, 0x54, 0x1a, 0x31, 0x9c, 0xf7, 0xd4, 0xbd, 0xbb, 0x3d, 0x35, 0x22, 0xa2, 0x42, - 0x1a, 0x6d, 0x92, 0xd9, 0x91, 0xce, 0x8f, 0x3a, 0x6a, 0x9d, 0x4c, 0x56, 0xc8, 0x20, 0x13, 0x70, - 0x81, 0x3f, 0xa2, 0x8d, 0x21, 0x18, 0xde, 0xe7, 0x86, 0xbb, 0xce, 0xae, 0xb3, 0xd7, 0x3a, 0xd8, - 0x23, 0x0b, 0xb7, 0x4f, 0xb2, 0x2e, 0x79, 0xd7, 0x3b, 0x87, 0xc0, 0xbc, 0x01, 0xc3, 0x7d, 0x7c, - 0x75, 0xb3, 0x53, 0x1b, 0xdf, 0xec, 0xa0, 0x32, 0xc7, 0x6e, 0x69, 0xb8, 0x87, 0x56, 0x74, 0x0c, - 0x81, 0x5b, 0xb7, 0xd4, 0x97, 0xe4, 0x1f, 0x6f, 0x4a, 0x2a, 0x2e, 0x3f, 0xc4, 0x10, 0xf8, 0xff, - 0x15, 0x6a, 0x2b, 0x93, 0x88, 0x59, 0x36, 0x3e, 0x47, 0x6b, 0xda, 0x70, 0x93, 0x6a, 0xb7, 0x61, - 0x55, 0xfc, 0xa5, 0x54, 0x2c, 0xc9, 0xbf, 0x57, 0xe8, 0xac, 0xe5, 0x31, 0x2b, 0x14, 0x3a, 0x47, - 0xc8, 0xad, 0x34, 0xbf, 0x52, 0xd2, 0x70, 0x21, 0x21, 0x99, 0xb8, 0xc1, 0x0f, 0xd1, 0xaa, 0xa5, - 0xdb, 0x15, 0x36, 0xfd, 0xff, 0x0b, 0xc4, 0x6a, 0x3e, 0x90, 0xd7, 0x3a, 0xdf, 0x1a, 0x68, 0x73, - 0xe6, 0x51, 0xf8, 0x33, 0x42, 0xc1, 0x94, 0xa4, 0x5d, 0x67, 0xb7, 0xb1, 0xd7, 0x3a, 0x38, 0x59, - 0xe6, 0x11, 0x7f, 0xf9, 0x2a, 0x2f, 0x74, 0x9b, 0xd6, 0xac, 0x22, 0x88, 0xbf, 0x3a, 0xa8, 0xc5, - 0xa5, 0x54, 0x86, 0x1b, 0xa1, 0xa4, 0x76, 0xeb, 0xd6, 0xc0, 0xfb, 0x65, 0x6f, 0x45, 0x8e, 0x4b, - 0xe6, 0x6b, 0x69, 0x92, 0x4b, 0xff, 0x7e, 0x61, 0xa4, 0x55, 0xa9, 0xb0, 0xaa, 0x34, 0xa6, 0xa8, - 0x29, 0xf9, 0x10, 0x74, 0xcc, 0x03, 0xb0, 0xd7, 0x6c, 0xfa, 0xdb, 0xc5, 0x50, 0xf3, 0xed, 0xb4, - 0xc0, 0xca, 0x9e, 0xf6, 0x0b, 0xb4, 0x35, 0x2b, 0x83, 0xb7, 0x50, 0x63, 0x00, 0x97, 0xf9, 0x15, - 0xd8, 0xe4, 0x13, 0x3f, 0x40, 0xab, 0x19, 0x8f, 0x52, 0xb0, 0xbf, 0x61, 0x93, 0xe5, 0xc1, 0xf3, - 0xfa, 0xa1, 0xd3, 0x39, 0x45, 0xdb, 0x73, 0xc7, 0xc7, 0x8f, 0xd1, 0x3a, 0x8f, 0x22, 0x75, 0x01, - 0x7d, 0x0b, 0xd9, 0xf0, 0x37, 0x0b, 0x0f, 0xeb, 0xc7, 0x79, 0x9a, 0x4d, 0xeb, 0xf8, 0x11, 0x5a, - 0x4b, 0x80, 0x6b, 0x25, 0x73, 0x74, 0xf9, 0xdf, 0x30, 0x9b, 0x65, 0x45, 0xd5, 0x7f, 0x72, 0x35, - 0xf2, 0x6a, 0xd7, 0x23, 0xaf, 0xf6, 0x73, 0xe4, 0xd5, 0xbe, 0x8c, 0x3d, 0xe7, 0x6a, 0xec, 0x39, - 0xd7, 0x63, 0xcf, 0xf9, 0x35, 0xf6, 0x9c, 0xef, 0xbf, 0xbd, 0xda, 0xa7, 0x8d, 0xe9, 0x1e, 0xff, - 0x04, 0x00, 0x00, 0xff, 0xff, 0x5b, 0xde, 0x19, 0x74, 0x3a, 0x05, 0x00, 0x00, + // 585 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x92, 0x3f, 0x6f, 0x13, 0x3f, + 0x18, 0xc7, 0x73, 0x49, 0xff, 0xc5, 0xf9, 0xfd, 0x68, 0x6b, 0x18, 0xa2, 0x0c, 0xd7, 0x2a, 0x48, + 0xa8, 0x20, 0x6a, 0x2b, 0x15, 0x48, 0x15, 0x03, 0xa5, 0x87, 0x18, 0x3a, 0x00, 0xc2, 0x2c, 0x88, + 0xcd, 0xb9, 0x3c, 0xbd, 0xba, 0xb9, 0xb3, 0x4f, 0x67, 0xdf, 0x55, 0x1d, 0x90, 0x18, 0x19, 0x18, + 0x78, 0x37, 0xbc, 0x85, 0x8e, 0x1d, 0x99, 0x2a, 0x1a, 0xde, 0x08, 0x8a, 0xef, 0xd2, 0x3b, 0x92, + 0x06, 0x09, 0x65, 0xf3, 0xe3, 0xc7, 0xdf, 0xcf, 0xf7, 0x6b, 0x3f, 0x46, 0x07, 0xc3, 0x7d, 0x4d, + 0x84, 0xa2, 0xc3, 0xb4, 0x0f, 0x89, 0x04, 0x03, 0x9a, 0xc6, 0xc3, 0x80, 0xf2, 0x58, 0x68, 0x2a, + 0x22, 0x1e, 0x40, 0xac, 0x42, 0xe1, 0x9f, 0xd3, 0xac, 0xc7, 0xc3, 0xf8, 0x84, 0xf7, 0x68, 0x00, + 0x12, 0x12, 0x6e, 0x60, 0x40, 0xe2, 0x44, 0x19, 0x85, 0x69, 0x0e, 0x20, 0x25, 0x80, 0xc4, 0xc3, + 0x80, 0x8c, 0x01, 0xa4, 0x02, 0x20, 0x13, 0x40, 0x67, 0x37, 0x10, 0xe6, 0x24, 0xed, 0x13, 0x5f, + 0x45, 0x34, 0x50, 0x81, 0xa2, 0x96, 0xd3, 0x4f, 0x8f, 0x6d, 0x65, 0x0b, 0xbb, 0xca, 0xf9, 0x9d, + 0xbd, 0xb9, 0x01, 0x69, 0x02, 0x5a, 0xa5, 0x89, 0x0f, 0xd3, 0x99, 0x3a, 0x4f, 0xe7, 0x6b, 0x52, + 0x99, 0x41, 0xa2, 0x85, 0x92, 0x30, 0x98, 0x91, 0x3d, 0x9e, 0x2f, 0xcb, 0x66, 0x2e, 0xde, 0xd9, + 0xbd, 0xfd, 0x74, 0x92, 0x4a, 0x23, 0xa2, 0xd9, 0x4c, 0x4f, 0xfe, 0x7e, 0x5c, 0xfb, 0x27, 0x10, + 0xf1, 0x19, 0x55, 0xef, 0x76, 0x55, 0x6a, 0x44, 0x48, 0x85, 0x34, 0xda, 0x24, 0xd3, 0x92, 0xee, + 0xf7, 0x3a, 0x6a, 0x1d, 0x8d, 0x1f, 0x9e, 0x41, 0x26, 0xe0, 0x0c, 0x7f, 0x40, 0x6b, 0x11, 0x18, + 0x3e, 0xe0, 0x86, 0xb7, 0x9d, 0x6d, 0x67, 0xa7, 0xb5, 0xb7, 0x43, 0xe6, 0xce, 0x8c, 0x64, 0x3d, + 0xf2, 0xb6, 0x7f, 0x0a, 0xbe, 0x79, 0x0d, 0x86, 0x7b, 0xf8, 0xe2, 0x6a, 0xab, 0x36, 0xba, 0xda, + 0x42, 0xe5, 0x1e, 0xbb, 0xa1, 0xe1, 0x3e, 0x5a, 0xd2, 0x31, 0xf8, 0xed, 0xba, 0xa5, 0xbe, 0x20, + 0xff, 0xf8, 0x13, 0x48, 0x25, 0xe5, 0xfb, 0x18, 0x7c, 0xef, 0xbf, 0xc2, 0x6d, 0x69, 0x5c, 0x31, + 0xcb, 0xc6, 0xa7, 0x68, 0x45, 0x1b, 0x6e, 0x52, 0xdd, 0x6e, 0x58, 0x17, 0x6f, 0x21, 0x17, 0x4b, + 0xf2, 0xee, 0x14, 0x3e, 0x2b, 0x79, 0xcd, 0x0a, 0x87, 0xee, 0x01, 0x6a, 0x57, 0x0e, 0xbf, 0x54, + 0xd2, 0x70, 0x21, 0x21, 0x19, 0xa7, 0xc1, 0xf7, 0xd1, 0xb2, 0xa5, 0xdb, 0x27, 0x6c, 0x7a, 0xff, + 0x17, 0x88, 0xe5, 0x5c, 0x90, 0xf7, 0xba, 0x5f, 0x1b, 0x68, 0x7d, 0xea, 0x52, 0xf8, 0x13, 0x42, + 0xfe, 0x84, 0xa4, 0xdb, 0xce, 0x76, 0x63, 0xa7, 0xb5, 0x77, 0xb4, 0xc8, 0x25, 0xfe, 0xc8, 0x55, + 0x4e, 0xe8, 0x66, 0x5b, 0xb3, 0x8a, 0x21, 0xfe, 0xe2, 0xa0, 0x16, 0x97, 0x52, 0x19, 0x6e, 0x84, + 0x92, 0xba, 0x5d, 0xb7, 0x01, 0xde, 0x2d, 0x3a, 0x2b, 0x72, 0x58, 0x32, 0x5f, 0x49, 0x93, 0x9c, + 0x7b, 0x77, 0x8b, 0x20, 0xad, 0x4a, 0x87, 0x55, 0xad, 0x31, 0x45, 0x4d, 0xc9, 0x23, 0xd0, 0x31, + 0xf7, 0xc1, 0x4e, 0xb3, 0xe9, 0x6d, 0x16, 0xa2, 0xe6, 0x9b, 0x49, 0x83, 0x95, 0x67, 0x3a, 0xcf, + 0xd1, 0xc6, 0xb4, 0x0d, 0xde, 0x40, 0x8d, 0x21, 0x9c, 0xe7, 0x53, 0x60, 0xe3, 0x25, 0xbe, 0x87, + 0x96, 0x33, 0x1e, 0xa6, 0x60, 0xbf, 0x61, 0x93, 0xe5, 0xc5, 0xb3, 0xfa, 0xbe, 0xd3, 0x3d, 0x46, + 0x9b, 0x33, 0xc3, 0xc7, 0x0f, 0xd1, 0x2a, 0x0f, 0x43, 0x75, 0x06, 0x03, 0x0b, 0x59, 0xf3, 0xd6, + 0x8b, 0x0c, 0xab, 0x87, 0xf9, 0x36, 0x9b, 0xf4, 0xf1, 0x03, 0xb4, 0x92, 0x00, 0xd7, 0x4a, 0xe6, + 0xe8, 0xf2, 0xdf, 0x30, 0xbb, 0xcb, 0x8a, 0xae, 0xf7, 0xe8, 0xe2, 0xda, 0xad, 0x5d, 0x5e, 0xbb, + 0xb5, 0x1f, 0xd7, 0x6e, 0xed, 0xf3, 0xc8, 0x75, 0x2e, 0x46, 0xae, 0x73, 0x39, 0x72, 0x9d, 0x9f, + 0x23, 0xd7, 0xf9, 0xf6, 0xcb, 0xad, 0x7d, 0x5c, 0x9b, 0xbc, 0xe3, 0xef, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x16, 0xa4, 0x8e, 0xac, 0x70, 0x05, 0x00, 0x00, } diff --git a/pkg/apis/imagepolicy/v1alpha1/generated.proto b/pkg/apis/imagepolicy/v1alpha1/generated.proto index 7b26db93..06419a13 100644 --- a/pkg/apis/imagepolicy/v1alpha1/generated.proto +++ b/pkg/apis/imagepolicy/v1alpha1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/imagepolicy/v1alpha1/register.go b/pkg/apis/imagepolicy/v1alpha1/register.go index 35d79328..b06967db 100644 --- a/pkg/apis/imagepolicy/v1alpha1/register.go +++ b/pkg/apis/imagepolicy/v1alpha1/register.go @@ -17,16 +17,16 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name for this API. const GroupName = "imagepolicy.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) diff --git a/pkg/apis/kubeadm/register.go b/pkg/apis/kubeadm/register.go index ca88aba1..e8850f45 100644 --- a/pkg/apis/kubeadm/register.go +++ b/pkg/apis/kubeadm/register.go @@ -18,15 +18,15 @@ package kubeadm import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "kubeadm.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) @@ -34,12 +34,12 @@ var ( ) // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -55,6 +55,6 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *MasterConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *NodeConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *ClusterInfo) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *MasterConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *NodeConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ClusterInfo) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/kubeadm/v1alpha1/register.go b/pkg/apis/kubeadm/v1alpha1/register.go index 924209fb..3a05bbc9 100644 --- a/pkg/apis/kubeadm/v1alpha1/register.go +++ b/pkg/apis/kubeadm/v1alpha1/register.go @@ -17,16 +17,16 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "kubeadm.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) @@ -34,12 +34,12 @@ var ( ) // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -55,6 +55,6 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *MasterConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *NodeConfiguration) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *ClusterInfo) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *MasterConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *NodeConfiguration) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ClusterInfo) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/apis/policy/register.go b/pkg/apis/policy/register.go index af378cbd..27cb3140 100644 --- a/pkg/apis/policy/register.go +++ b/pkg/apis/policy/register.go @@ -18,23 +18,23 @@ package policy import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "policy" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/policy/v1alpha1/register.go b/pkg/apis/policy/v1alpha1/register.go index 5317fdcf..156e0715 100644 --- a/pkg/apis/policy/v1alpha1/register.go +++ b/pkg/apis/policy/v1alpha1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "policy" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) diff --git a/pkg/apis/policy/v1beta1/generated.pb.go b/pkg/apis/policy/v1beta1/generated.pb.go index a2cad535..43f5f4db 100644 --- a/pkg/apis/policy/v1beta1/generated.pb.go +++ b/pkg/apis/policy/v1beta1/generated.pb.go @@ -1323,53 +1323,53 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 758 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x94, 0xcf, 0x6f, 0xdb, 0x36, - 0x14, 0xc7, 0xad, 0xd8, 0xce, 0x3c, 0xc6, 0x0e, 0x32, 0x6e, 0xd9, 0x3c, 0x03, 0x53, 0x06, 0x9f, - 0x12, 0x6c, 0xa1, 0xe0, 0x60, 0x03, 0xb2, 0x1d, 0x02, 0x44, 0x73, 0xb0, 0x65, 0x58, 0xe0, 0x40, - 0x19, 0xb0, 0x61, 0xc0, 0x0a, 0xe8, 0xc7, 0xab, 0xc2, 0x5a, 0x16, 0x05, 0x92, 0x52, 0xeb, 0x5b, - 0xff, 0x84, 0x1e, 0xfa, 0x1f, 0xf5, 0x12, 0xf4, 0x94, 0x63, 0x2f, 0x0d, 0x1a, 0xe7, 0x7f, 0xe8, - 0xb9, 0x90, 0x44, 0x3b, 0x96, 0x7f, 0x04, 0x01, 0xd2, 0xde, 0x44, 0xf2, 0x7d, 0xbe, 0xdf, 0xf7, - 0x1e, 0x1f, 0x85, 0x7e, 0xe9, 0xef, 0x0b, 0x42, 0x99, 0xd1, 0x8f, 0x1d, 0xe0, 0x21, 0x48, 0x10, - 0x46, 0xd4, 0xf7, 0x0d, 0x3b, 0xa2, 0xc2, 0x88, 0x58, 0x40, 0xdd, 0xa1, 0x91, 0x74, 0x1c, 0x90, - 0x76, 0xc7, 0xf0, 0x21, 0x04, 0x6e, 0x4b, 0xf0, 0x48, 0xc4, 0x99, 0x64, 0x78, 0x27, 0x47, 0xc9, - 0x2d, 0x4a, 0xa2, 0xbe, 0x4f, 0x52, 0x94, 0xe4, 0x28, 0x51, 0x68, 0x6b, 0xd7, 0xa7, 0xf2, 0x3c, - 0x76, 0x88, 0xcb, 0x06, 0x86, 0xcf, 0x7c, 0x66, 0x64, 0x0a, 0x4e, 0xfc, 0x38, 0x5b, 0x65, 0x8b, - 0xec, 0x2b, 0x57, 0x6e, 0xed, 0x2d, 0x4d, 0xca, 0xe0, 0x20, 0x58, 0xcc, 0x5d, 0x98, 0xcd, 0xa6, - 0xf5, 0xf3, 0x72, 0x26, 0x0e, 0x13, 0xe0, 0x82, 0xb2, 0x10, 0xbc, 0x39, 0xec, 0xc7, 0xe5, 0x58, - 0x32, 0x57, 0x72, 0x6b, 0x77, 0x71, 0x34, 0x8f, 0x43, 0x49, 0x07, 0xf3, 0x39, 0x75, 0x16, 0x87, - 0xc7, 0x92, 0x06, 0x06, 0x0d, 0xa5, 0x90, 0x7c, 0x16, 0x69, 0xbf, 0xd6, 0x50, 0xed, 0x28, 0xa1, - 0xae, 0xa4, 0x2c, 0xc4, 0xff, 0xa2, 0xda, 0x00, 0xa4, 0xed, 0xd9, 0xd2, 0x6e, 0x6a, 0xdf, 0x6b, - 0xdb, 0x6b, 0x7b, 0xdb, 0x64, 0x69, 0xd3, 0x49, 0xd2, 0x21, 0x3d, 0xe7, 0x09, 0xb8, 0xf2, 0x04, - 0xa4, 0x6d, 0xe2, 0x8b, 0xab, 0xad, 0xd2, 0xe8, 0x6a, 0x0b, 0xdd, 0xee, 0x59, 0x13, 0x35, 0xec, - 0xa1, 0x86, 0x07, 0x01, 0x48, 0xe8, 0x45, 0xa9, 0x93, 0x68, 0xae, 0x64, 0xf2, 0x3f, 0xdc, 0x2d, - 0xdf, 0x9d, 0x46, 0xcc, 0x2f, 0x46, 0x57, 0x5b, 0x8d, 0xc2, 0x96, 0x55, 0x14, 0x6d, 0xbf, 0x5a, - 0x41, 0x5f, 0x9e, 0x32, 0xaf, 0x4b, 0x05, 0x8f, 0xb3, 0x2d, 0x33, 0xf6, 0x7c, 0x90, 0x9f, 0xb4, - 0xae, 0x8a, 0x88, 0xc0, 0x55, 0xe5, 0x98, 0xe4, 0xde, 0x23, 0x4a, 0x16, 0xe4, 0x79, 0x16, 0x81, - 0x6b, 0xd6, 0x95, 0x5f, 0x25, 0x5d, 0x59, 0x99, 0x3a, 0x0e, 0xd0, 0xaa, 0x90, 0xb6, 0x8c, 0x45, - 0xb3, 0x9c, 0xf9, 0x74, 0x1f, 0xe8, 0x93, 0x69, 0x99, 0xeb, 0xca, 0x69, 0x35, 0x5f, 0x5b, 0xca, - 0xa3, 0xfd, 0x56, 0x43, 0xdf, 0x2c, 0xa0, 0xfe, 0xa2, 0x42, 0xe2, 0xff, 0xe7, 0x3a, 0x69, 0xdc, - 0xd1, 0xc9, 0xa9, 0x87, 0x40, 0x52, 0x3c, 0x6b, 0xe8, 0x86, 0xb2, 0xad, 0x8d, 0x77, 0xa6, 0xda, - 0xe9, 0xa2, 0x2a, 0x95, 0x30, 0x48, 0xc7, 0xa3, 0xbc, 0xbd, 0xb6, 0x77, 0xf0, 0xb0, 0x3a, 0xcd, - 0x86, 0xb2, 0xaa, 0x1e, 0xa7, 0xa2, 0x56, 0xae, 0xdd, 0xbe, 0x59, 0x5c, 0x5f, 0xda, 0x6f, 0x7c, - 0x8e, 0xea, 0x03, 0x1a, 0x1e, 0x26, 0x36, 0x0d, 0x6c, 0x27, 0x00, 0x55, 0x23, 0x59, 0x92, 0x47, - 0xfa, 0xb0, 0x48, 0xfe, 0xb0, 0xc8, 0x71, 0x28, 0x7b, 0xfc, 0x4c, 0x72, 0x1a, 0xfa, 0xe6, 0x57, - 0xca, 0xb7, 0x7e, 0x32, 0xa5, 0x65, 0x15, 0x94, 0xf1, 0x23, 0x54, 0x13, 0x10, 0x80, 0x2b, 0x19, - 0x57, 0xd3, 0xf3, 0xd3, 0x7d, 0x3b, 0x69, 0x3b, 0x10, 0x9c, 0x29, 0xd6, 0xac, 0xa7, 0xad, 0x1c, - 0xaf, 0xac, 0x89, 0x66, 0xfb, 0x7d, 0x05, 0x7d, 0xbb, 0xf4, 0xee, 0xf1, 0x9f, 0x08, 0x33, 0x47, - 0x00, 0x4f, 0xc0, 0xfb, 0x3d, 0xff, 0x23, 0x50, 0x16, 0x66, 0xd5, 0x96, 0xcd, 0x96, 0xca, 0x1e, - 0xf7, 0xe6, 0x22, 0xac, 0x05, 0x14, 0x7e, 0xa9, 0xa1, 0x86, 0x97, 0xdb, 0x80, 0x77, 0xca, 0xbc, - 0xf1, 0xed, 0xfd, 0xf3, 0x31, 0xa6, 0x94, 0x74, 0xa7, 0x95, 0x8f, 0x42, 0xc9, 0x87, 0xe6, 0xa6, - 0x4a, 0xb0, 0x51, 0x38, 0xb3, 0x8a, 0x49, 0xe0, 0x13, 0x84, 0xbd, 0x89, 0xa4, 0x38, 0x0c, 0x02, - 0xf6, 0x14, 0xbc, 0xec, 0x01, 0x55, 0xcd, 0xef, 0x94, 0xc2, 0x66, 0xc1, 0x77, 0x1c, 0x64, 0x2d, - 0x00, 0xf1, 0x01, 0x5a, 0x77, 0x63, 0xce, 0x21, 0x94, 0x7f, 0x80, 0x1d, 0xc8, 0xf3, 0x61, 0xb3, - 0x92, 0x49, 0x7d, 0xad, 0xa4, 0xd6, 0x7f, 0x2b, 0x9c, 0x5a, 0x33, 0xd1, 0x29, 0xef, 0x81, 0xa0, - 0x1c, 0xbc, 0x31, 0x5f, 0x2d, 0xf2, 0xdd, 0xc2, 0xa9, 0x35, 0x13, 0x8d, 0xf7, 0x51, 0x1d, 0x9e, - 0x45, 0xe0, 0x8e, 0x7b, 0xbc, 0x9a, 0xd1, 0x93, 0x49, 0x3b, 0x9a, 0x3a, 0xb3, 0x0a, 0x91, 0xad, - 0x01, 0xc2, 0xf3, 0x4d, 0xc4, 0x1b, 0xa8, 0xdc, 0x87, 0x61, 0x76, 0xe5, 0x9f, 0x5b, 0xe9, 0x27, - 0x3e, 0x44, 0xd5, 0xc4, 0x0e, 0x62, 0xb8, 0xc7, 0xbf, 0x79, 0x7a, 0x1c, 0xff, 0xa6, 0x03, 0xb0, - 0x72, 0xf2, 0xd7, 0x95, 0x7d, 0xcd, 0xdc, 0xb9, 0xb8, 0xd6, 0x4b, 0x97, 0xd7, 0x7a, 0xe9, 0xcd, - 0xb5, 0x5e, 0x7a, 0x3e, 0xd2, 0xb5, 0x8b, 0x91, 0xae, 0x5d, 0x8e, 0x74, 0xed, 0xdd, 0x48, 0xd7, - 0x5e, 0xdc, 0xe8, 0xa5, 0xff, 0x3e, 0x53, 0xb7, 0xfe, 0x21, 0x00, 0x00, 0xff, 0xff, 0x59, 0x3e, - 0xe1, 0xf8, 0x0d, 0x08, 0x00, 0x00, + // 764 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x94, 0x4d, 0x6f, 0xf3, 0x44, + 0x10, 0xc7, 0xe3, 0x26, 0x29, 0x61, 0x9b, 0x54, 0x65, 0xa1, 0x10, 0x22, 0xe1, 0xa2, 0x9c, 0x5a, + 0x41, 0xd7, 0x4a, 0x55, 0xa4, 0xc2, 0xa1, 0x52, 0x4d, 0x2a, 0x28, 0xa2, 0x4a, 0xe5, 0x22, 0x81, + 0x90, 0x40, 0xf2, 0xcb, 0xe0, 0x2c, 0xb1, 0xbd, 0xd6, 0xee, 0xda, 0x90, 0x1b, 0x1f, 0x81, 0x03, + 0xdf, 0x88, 0x4b, 0xc5, 0xa9, 0x47, 0x2e, 0x54, 0x34, 0xfd, 0x0e, 0x9c, 0x91, 0xed, 0x4d, 0x1a, + 0xe7, 0xa5, 0xaa, 0xd4, 0xe7, 0xb9, 0x79, 0x77, 0xe7, 0xf7, 0xff, 0xcf, 0xcc, 0xce, 0x1a, 0x7d, + 0x3a, 0x3a, 0x11, 0x84, 0x32, 0x63, 0x94, 0x38, 0xc0, 0x23, 0x90, 0x20, 0x8c, 0x78, 0xe4, 0x1b, + 0x76, 0x4c, 0x85, 0x11, 0xb3, 0x80, 0xba, 0x63, 0x23, 0xed, 0x39, 0x20, 0xed, 0x9e, 0xe1, 0x43, + 0x04, 0xdc, 0x96, 0xe0, 0x91, 0x98, 0x33, 0xc9, 0xf0, 0x41, 0x81, 0x92, 0x47, 0x94, 0xc4, 0x23, + 0x9f, 0x64, 0x28, 0x29, 0x50, 0xa2, 0xd0, 0xce, 0xa1, 0x4f, 0xe5, 0x30, 0x71, 0x88, 0xcb, 0x42, + 0xc3, 0x67, 0x3e, 0x33, 0x72, 0x05, 0x27, 0xf9, 0x29, 0x5f, 0xe5, 0x8b, 0xfc, 0xab, 0x50, 0xee, + 0x1c, 0xad, 0x4d, 0xca, 0xe0, 0x20, 0x58, 0xc2, 0x5d, 0x58, 0xcc, 0xa6, 0xf3, 0xc9, 0x7a, 0x26, + 0x89, 0x52, 0xe0, 0x82, 0xb2, 0x08, 0xbc, 0x25, 0xec, 0xe3, 0xf5, 0x58, 0xba, 0x54, 0x72, 0xe7, + 0x70, 0x75, 0x34, 0x4f, 0x22, 0x49, 0xc3, 0xe5, 0x9c, 0x8e, 0x9f, 0x0e, 0x17, 0xee, 0x10, 0x42, + 0x7b, 0x89, 0xea, 0xad, 0xa6, 0x12, 0x49, 0x03, 0x83, 0x46, 0x52, 0x48, 0xbe, 0x88, 0x74, 0xff, + 0xd2, 0x50, 0xe3, 0x3c, 0xa5, 0xae, 0xa4, 0x2c, 0xc2, 0xdf, 0xa1, 0x46, 0x08, 0xd2, 0xf6, 0x6c, + 0x69, 0xb7, 0xb5, 0x0f, 0xb5, 0xfd, 0xad, 0xa3, 0x7d, 0xb2, 0xf6, 0xaa, 0x48, 0xda, 0x23, 0x03, + 0xe7, 0x67, 0x70, 0xe5, 0x25, 0x48, 0xdb, 0xc4, 0x37, 0x77, 0x7b, 0x95, 0xc9, 0xdd, 0x1e, 0x7a, + 0xdc, 0xb3, 0x66, 0x6a, 0xd8, 0x43, 0x2d, 0x0f, 0x02, 0x90, 0x30, 0x88, 0x33, 0x27, 0xd1, 0xde, + 0xc8, 0xe5, 0x3f, 0x7a, 0x5a, 0xbe, 0x3f, 0x8f, 0x98, 0x6f, 0x4d, 0xee, 0xf6, 0x5a, 0xa5, 0x2d, + 0xab, 0x2c, 0xda, 0xfd, 0x73, 0x03, 0xbd, 0x7d, 0xc5, 0xbc, 0x3e, 0x15, 0x3c, 0xc9, 0xb7, 0xcc, + 0xc4, 0xf3, 0x41, 0xbe, 0xd6, 0xba, 0x6a, 0x22, 0x06, 0x57, 0x95, 0x63, 0x92, 0x67, 0x0f, 0x36, + 0x59, 0x91, 0xe7, 0x75, 0x0c, 0xae, 0xd9, 0x54, 0x7e, 0xb5, 0x6c, 0x65, 0xe5, 0xea, 0x38, 0x40, + 0x9b, 0x42, 0xda, 0x32, 0x11, 0xed, 0x6a, 0xee, 0xd3, 0x7f, 0xa1, 0x4f, 0xae, 0x65, 0x6e, 0x2b, + 0xa7, 0xcd, 0x62, 0x6d, 0x29, 0x8f, 0xee, 0x3f, 0x1a, 0x7a, 0x6f, 0x05, 0xf5, 0x35, 0x15, 0x12, + 0xff, 0xb0, 0xd4, 0x49, 0xe3, 0x89, 0x4e, 0xce, 0x3d, 0x1f, 0x92, 0xe1, 0x79, 0x43, 0x77, 0x94, + 0x6d, 0x63, 0xba, 0x33, 0xd7, 0x4e, 0x17, 0xd5, 0xa9, 0x84, 0x30, 0x1b, 0x8f, 0xea, 0xfe, 0xd6, + 0xd1, 0xe9, 0xcb, 0xea, 0x34, 0x5b, 0xca, 0xaa, 0x7e, 0x91, 0x89, 0x5a, 0x85, 0x76, 0xf7, 0x61, + 0x75, 0x7d, 0x59, 0xbf, 0xf1, 0x10, 0x35, 0x43, 0x1a, 0x9d, 0xa5, 0x36, 0x0d, 0x6c, 0x27, 0x00, + 0x55, 0x23, 0x59, 0x93, 0x47, 0xf6, 0xb0, 0x48, 0xf1, 0xb0, 0xc8, 0x45, 0x24, 0x07, 0xfc, 0x5a, + 0x72, 0x1a, 0xf9, 0xe6, 0x3b, 0xca, 0xb7, 0x79, 0x39, 0xa7, 0x65, 0x95, 0x94, 0xf1, 0x8f, 0xa8, + 0x21, 0x20, 0x00, 0x57, 0x32, 0xae, 0xa6, 0xe7, 0xf8, 0xb9, 0x9d, 0xb4, 0x1d, 0x08, 0xae, 0x15, + 0x6b, 0x36, 0xb3, 0x56, 0x4e, 0x57, 0xd6, 0x4c, 0xb3, 0xfb, 0x5f, 0x0d, 0xbd, 0xbf, 0xf6, 0xee, + 0xf1, 0x57, 0x08, 0x33, 0x47, 0x00, 0x4f, 0xc1, 0xfb, 0xa2, 0xf8, 0x23, 0x50, 0x16, 0xe5, 0xd5, + 0x56, 0xcd, 0x8e, 0xca, 0x1e, 0x0f, 0x96, 0x22, 0xac, 0x15, 0x14, 0xfe, 0x43, 0x43, 0x2d, 0xaf, + 0xb0, 0x01, 0xef, 0x8a, 0x79, 0xd3, 0xdb, 0xfb, 0xf6, 0x55, 0x4c, 0x29, 0xe9, 0xcf, 0x2b, 0x9f, + 0x47, 0x92, 0x8f, 0xcd, 0x5d, 0x95, 0x60, 0xab, 0x74, 0x66, 0x95, 0x93, 0xc0, 0x97, 0x08, 0x7b, + 0x33, 0x49, 0x71, 0x16, 0x04, 0xec, 0x17, 0xf0, 0xf2, 0x07, 0x54, 0x37, 0x3f, 0x50, 0x0a, 0xbb, + 0x25, 0xdf, 0x69, 0x90, 0xb5, 0x02, 0xc4, 0xa7, 0x68, 0xdb, 0x4d, 0x38, 0x87, 0x48, 0x7e, 0x09, + 0x76, 0x20, 0x87, 0xe3, 0x76, 0x2d, 0x97, 0x7a, 0x57, 0x49, 0x6d, 0x7f, 0x5e, 0x3a, 0xb5, 0x16, + 0xa2, 0x33, 0xde, 0x03, 0x41, 0x39, 0x78, 0x53, 0xbe, 0x5e, 0xe6, 0xfb, 0xa5, 0x53, 0x6b, 0x21, + 0x1a, 0x9f, 0xa0, 0x26, 0xfc, 0x1a, 0x83, 0x3b, 0xed, 0xf1, 0x66, 0x4e, 0xcf, 0x26, 0xed, 0x7c, + 0xee, 0xcc, 0x2a, 0x45, 0x76, 0x42, 0x84, 0x97, 0x9b, 0x88, 0x77, 0x50, 0x75, 0x04, 0xe3, 0xfc, + 0xca, 0xdf, 0xb4, 0xb2, 0x4f, 0x7c, 0x86, 0xea, 0xa9, 0x1d, 0x24, 0xf0, 0x8c, 0x7f, 0xf3, 0xfc, + 0x38, 0x7e, 0x43, 0x43, 0xb0, 0x0a, 0xf2, 0xb3, 0x8d, 0x13, 0xcd, 0x3c, 0xb8, 0xb9, 0xd7, 0x2b, + 0xb7, 0xf7, 0x7a, 0xe5, 0xef, 0x7b, 0xbd, 0xf2, 0xdb, 0x44, 0xd7, 0x6e, 0x26, 0xba, 0x76, 0x3b, + 0xd1, 0xb5, 0x7f, 0x27, 0xba, 0xf6, 0xfb, 0x83, 0x5e, 0xf9, 0xfe, 0x0d, 0x75, 0xeb, 0xff, 0x07, + 0x00, 0x00, 0xff, 0xff, 0x5e, 0x98, 0x33, 0x48, 0x43, 0x08, 0x00, 0x00, } diff --git a/pkg/apis/policy/v1beta1/generated.proto b/pkg/apis/policy/v1beta1/generated.proto index 7782fd52..560850ea 100644 --- a/pkg/apis/policy/v1beta1/generated.proto +++ b/pkg/apis/policy/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/policy/v1beta1/register.go b/pkg/apis/policy/v1beta1/register.go index 9901c28b..0544ef41 100644 --- a/pkg/apis/policy/v1beta1/register.go +++ b/pkg/apis/policy/v1beta1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "policy" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) diff --git a/pkg/apis/rbac/helpers.go b/pkg/apis/rbac/helpers.go index f9a770bb..2f91caaa 100644 --- a/pkg/apis/rbac/helpers.go +++ b/pkg/apis/rbac/helpers.go @@ -21,11 +21,11 @@ import ( "strings" "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) -func RoleRefGroupKind(roleRef RoleRef) unversioned.GroupKind { - return unversioned.GroupKind{Group: roleRef.APIGroup, Kind: roleRef.Kind} +func RoleRefGroupKind(roleRef RoleRef) schema.GroupKind { + return schema.GroupKind{Group: roleRef.APIGroup, Kind: roleRef.Kind} } func VerbMatches(rule PolicyRule, requestedVerb string) bool { diff --git a/pkg/apis/rbac/register.go b/pkg/apis/rbac/register.go index d50d5574..9ea3c9ae 100644 --- a/pkg/apis/rbac/register.go +++ b/pkg/apis/rbac/register.go @@ -18,23 +18,23 @@ package rbac import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/watch/versioned" ) const GroupName = "rbac.authorization.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/rbac/v1alpha1/generated.pb.go b/pkg/apis/rbac/v1alpha1/generated.pb.go index 829e1d29..439a319f 100644 --- a/pkg/apis/rbac/v1alpha1/generated.pb.go +++ b/pkg/apis/rbac/v1alpha1/generated.pb.go @@ -27,9 +27,11 @@ limitations under the License. It has these top-level messages: ClusterRole ClusterRoleBinding + ClusterRoleBindingBuilder ClusterRoleBindingList ClusterRoleList PolicyRule + PolicyRuleBuilder Role RoleBinding RoleBindingList @@ -65,48 +67,60 @@ func (m *ClusterRoleBinding) Reset() { *m = ClusterRoleBindin func (*ClusterRoleBinding) ProtoMessage() {} func (*ClusterRoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{1} } +func (m *ClusterRoleBindingBuilder) Reset() { *m = ClusterRoleBindingBuilder{} } +func (*ClusterRoleBindingBuilder) ProtoMessage() {} +func (*ClusterRoleBindingBuilder) Descriptor() ([]byte, []int) { + return fileDescriptorGenerated, []int{2} +} + func (m *ClusterRoleBindingList) Reset() { *m = ClusterRoleBindingList{} } func (*ClusterRoleBindingList) ProtoMessage() {} -func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{2} } +func (*ClusterRoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } func (m *ClusterRoleList) Reset() { *m = ClusterRoleList{} } func (*ClusterRoleList) ProtoMessage() {} -func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{3} } +func (*ClusterRoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } func (m *PolicyRule) Reset() { *m = PolicyRule{} } func (*PolicyRule) ProtoMessage() {} -func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{4} } +func (*PolicyRule) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } + +func (m *PolicyRuleBuilder) Reset() { *m = PolicyRuleBuilder{} } +func (*PolicyRuleBuilder) ProtoMessage() {} +func (*PolicyRuleBuilder) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } func (m *Role) Reset() { *m = Role{} } func (*Role) ProtoMessage() {} -func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{5} } +func (*Role) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } func (m *RoleBinding) Reset() { *m = RoleBinding{} } func (*RoleBinding) ProtoMessage() {} -func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{6} } +func (*RoleBinding) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } func (m *RoleBindingList) Reset() { *m = RoleBindingList{} } func (*RoleBindingList) ProtoMessage() {} -func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{7} } +func (*RoleBindingList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } func (m *RoleList) Reset() { *m = RoleList{} } func (*RoleList) ProtoMessage() {} -func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{8} } +func (*RoleList) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } func (m *RoleRef) Reset() { *m = RoleRef{} } func (*RoleRef) ProtoMessage() {} -func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{9} } +func (*RoleRef) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{11} } func (m *Subject) Reset() { *m = Subject{} } func (*Subject) ProtoMessage() {} -func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{10} } +func (*Subject) Descriptor() ([]byte, []int) { return fileDescriptorGenerated, []int{12} } func init() { proto.RegisterType((*ClusterRole)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRole") proto.RegisterType((*ClusterRoleBinding)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleBinding") + proto.RegisterType((*ClusterRoleBindingBuilder)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleBindingBuilder") proto.RegisterType((*ClusterRoleBindingList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleBindingList") proto.RegisterType((*ClusterRoleList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.ClusterRoleList") proto.RegisterType((*PolicyRule)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.PolicyRule") + proto.RegisterType((*PolicyRuleBuilder)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.PolicyRuleBuilder") proto.RegisterType((*Role)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.Role") proto.RegisterType((*RoleBinding)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.RoleBinding") proto.RegisterType((*RoleBindingList)(nil), "k8s.io.client-go.pkg.apis.rbac.v1alpha1.RoleBindingList") @@ -198,6 +212,32 @@ func (m *ClusterRoleBinding) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *ClusterRoleBindingBuilder) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *ClusterRoleBindingBuilder) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.ClusterRoleBinding.Size())) + n4, err := m.ClusterRoleBinding.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n4 + return i, nil +} + func (m *ClusterRoleBindingList) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -216,11 +256,11 @@ func (m *ClusterRoleBindingList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n4, err := m.ListMeta.MarshalTo(data[i:]) + n5, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n4 + i += n5 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -254,11 +294,11 @@ func (m *ClusterRoleList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n5, err := m.ListMeta.MarshalTo(data[i:]) + n6, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n5 + i += n6 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -307,11 +347,11 @@ func (m *PolicyRule) MarshalTo(data []byte) (int, error) { data[i] = 0x12 i++ i = encodeVarintGenerated(data, i, uint64(m.AttributeRestrictions.Size())) - n6, err := m.AttributeRestrictions.MarshalTo(data[i:]) + n7, err := m.AttributeRestrictions.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n6 + i += n7 if len(m.APIGroups) > 0 { for _, s := range m.APIGroups { data[i] = 0x1a @@ -375,6 +415,32 @@ func (m *PolicyRule) MarshalTo(data []byte) (int, error) { return i, nil } +func (m *PolicyRuleBuilder) Marshal() (data []byte, err error) { + size := m.Size() + data = make([]byte, size) + n, err := m.MarshalTo(data) + if err != nil { + return nil, err + } + return data[:n], nil +} + +func (m *PolicyRuleBuilder) MarshalTo(data []byte) (int, error) { + var i int + _ = i + var l int + _ = l + data[i] = 0xa + i++ + i = encodeVarintGenerated(data, i, uint64(m.PolicyRule.Size())) + n8, err := m.PolicyRule.MarshalTo(data[i:]) + if err != nil { + return 0, err + } + i += n8 + return i, nil +} + func (m *Role) Marshal() (data []byte, err error) { size := m.Size() data = make([]byte, size) @@ -393,11 +459,11 @@ func (m *Role) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n7, err := m.ObjectMeta.MarshalTo(data[i:]) + n9, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n7 + i += n9 if len(m.Rules) > 0 { for _, msg := range m.Rules { data[i] = 0x12 @@ -431,11 +497,11 @@ func (m *RoleBinding) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ObjectMeta.Size())) - n8, err := m.ObjectMeta.MarshalTo(data[i:]) + n10, err := m.ObjectMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n8 + i += n10 if len(m.Subjects) > 0 { for _, msg := range m.Subjects { data[i] = 0x12 @@ -451,11 +517,11 @@ func (m *RoleBinding) MarshalTo(data []byte) (int, error) { data[i] = 0x1a i++ i = encodeVarintGenerated(data, i, uint64(m.RoleRef.Size())) - n9, err := m.RoleRef.MarshalTo(data[i:]) + n11, err := m.RoleRef.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n9 + i += n11 return i, nil } @@ -477,11 +543,11 @@ func (m *RoleBindingList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n10, err := m.ListMeta.MarshalTo(data[i:]) + n12, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n10 + i += n12 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -515,11 +581,11 @@ func (m *RoleList) MarshalTo(data []byte) (int, error) { data[i] = 0xa i++ i = encodeVarintGenerated(data, i, uint64(m.ListMeta.Size())) - n11, err := m.ListMeta.MarshalTo(data[i:]) + n13, err := m.ListMeta.MarshalTo(data[i:]) if err != nil { return 0, err } - i += n11 + i += n13 if len(m.Items) > 0 { for _, msg := range m.Items { data[i] = 0x12 @@ -656,6 +722,14 @@ func (m *ClusterRoleBinding) Size() (n int) { return n } +func (m *ClusterRoleBindingBuilder) Size() (n int) { + var l int + _ = l + l = m.ClusterRoleBinding.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *ClusterRoleBindingList) Size() (n int) { var l int _ = l @@ -722,6 +796,14 @@ func (m *PolicyRule) Size() (n int) { return n } +func (m *PolicyRuleBuilder) Size() (n int) { + var l int + _ = l + l = m.PolicyRule.Size() + n += 1 + l + sovGenerated(uint64(l)) + return n +} + func (m *Role) Size() (n int) { var l int _ = l @@ -842,6 +924,16 @@ func (this *ClusterRoleBinding) String() string { }, "") return s } +func (this *ClusterRoleBindingBuilder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&ClusterRoleBindingBuilder{`, + `ClusterRoleBinding:` + strings.Replace(strings.Replace(this.ClusterRoleBinding.String(), "ClusterRoleBinding", "ClusterRoleBinding", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} func (this *ClusterRoleBindingList) String() string { if this == nil { return "nil" @@ -879,6 +971,16 @@ func (this *PolicyRule) String() string { }, "") return s } +func (this *PolicyRuleBuilder) String() string { + if this == nil { + return "nil" + } + s := strings.Join([]string{`&PolicyRuleBuilder{`, + `PolicyRule:` + strings.Replace(strings.Replace(this.PolicyRule.String(), "PolicyRule", "PolicyRule", 1), `&`, ``, 1) + `,`, + `}`, + }, "") + return s +} func (this *Role) String() string { if this == nil { return "nil" @@ -1209,6 +1311,86 @@ func (m *ClusterRoleBinding) Unmarshal(data []byte) error { } return nil } +func (m *ClusterRoleBindingBuilder) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ClusterRoleBindingBuilder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ClusterRoleBindingBuilder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterRoleBinding", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ClusterRoleBinding.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *ClusterRoleBindingList) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -1656,6 +1838,86 @@ func (m *PolicyRule) Unmarshal(data []byte) error { } return nil } +func (m *PolicyRuleBuilder) Unmarshal(data []byte) error { + l := len(data) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + wire |= (uint64(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PolicyRuleBuilder: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PolicyRuleBuilder: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PolicyRule", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenerated + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := data[iNdEx] + iNdEx++ + msglen |= (int(b) & 0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenerated + } + postIndex := iNdEx + msglen + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PolicyRule.Unmarshal(data[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenerated(data[iNdEx:]) + if err != nil { + return err + } + if skippy < 0 { + return ErrInvalidLengthGenerated + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *Role) Unmarshal(data []byte) error { l := len(data) iNdEx := 0 @@ -2539,56 +2801,61 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 815 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x54, 0x41, 0x6b, 0xe3, 0x46, - 0x18, 0xb5, 0x62, 0xbb, 0xb1, 0xc6, 0x35, 0x6e, 0x54, 0x52, 0x84, 0xa1, 0xb2, 0xf1, 0xc9, 0x34, - 0xc9, 0x08, 0x9b, 0x86, 0xe6, 0xd0, 0x1e, 0xa2, 0x52, 0x4a, 0x68, 0x9a, 0x86, 0x09, 0x0d, 0x6d, - 0x68, 0x29, 0x63, 0x7b, 0xe2, 0x4c, 0x2d, 0x4b, 0x62, 0x66, 0xe4, 0xb6, 0xf4, 0x12, 0xf6, 0x17, - 0xec, 0xaf, 0xd8, 0xdb, 0x5e, 0xf6, 0xba, 0xb0, 0x87, 0x3d, 0xe5, 0xb0, 0x87, 0x1c, 0x97, 0x3d, - 0x98, 0x8d, 0xf6, 0x8f, 0x2c, 0x1a, 0x49, 0x96, 0x1d, 0xdb, 0x1b, 0x27, 0xb0, 0x81, 0x85, 0x3d, - 0x25, 0xf3, 0x7d, 0xef, 0xbd, 0xf9, 0xde, 0xe7, 0xd1, 0x03, 0x3b, 0xfd, 0x1d, 0x0e, 0xa9, 0x6b, - 0xf6, 0xfd, 0x36, 0x61, 0x0e, 0x11, 0x84, 0x9b, 0x5e, 0xbf, 0x67, 0x62, 0x8f, 0x72, 0x93, 0xb5, - 0x71, 0xc7, 0x1c, 0x36, 0xb1, 0xed, 0x9d, 0xe1, 0xa6, 0xd9, 0x23, 0x0e, 0x61, 0x58, 0x90, 0x2e, - 0xf4, 0x98, 0x2b, 0x5c, 0xad, 0x11, 0x31, 0x61, 0xca, 0x84, 0x5e, 0xbf, 0x07, 0x43, 0x26, 0x0c, - 0x99, 0x30, 0x61, 0x56, 0xb6, 0x7a, 0x54, 0x9c, 0xf9, 0x6d, 0xd8, 0x71, 0x07, 0x66, 0xcf, 0xed, - 0xb9, 0xa6, 0x14, 0x68, 0xfb, 0xa7, 0xf2, 0x24, 0x0f, 0xf2, 0xbf, 0x48, 0xb8, 0xd2, 0x5a, 0x38, - 0x92, 0xc9, 0x08, 0x77, 0x7d, 0xd6, 0x21, 0xd7, 0x87, 0xa9, 0x6c, 0x2f, 0xe6, 0xf8, 0xce, 0x90, - 0x30, 0x4e, 0x5d, 0x87, 0x74, 0x67, 0x68, 0x9b, 0x8b, 0x69, 0xc3, 0x19, 0xc7, 0x95, 0xad, 0xf9, - 0x68, 0xe6, 0x3b, 0x82, 0x0e, 0x66, 0x67, 0x6a, 0xce, 0x87, 0xfb, 0x82, 0xda, 0x26, 0x75, 0x04, - 0x17, 0xec, 0x3a, 0xa5, 0xfe, 0x5c, 0x01, 0xc5, 0xef, 0x6d, 0x9f, 0x0b, 0xc2, 0x90, 0x6b, 0x13, - 0xed, 0x37, 0x50, 0x18, 0x10, 0x81, 0xbb, 0x58, 0x60, 0x5d, 0xa9, 0x29, 0x8d, 0x62, 0xab, 0x01, - 0x17, 0xae, 0x1d, 0x0e, 0x9b, 0xf0, 0x97, 0xf6, 0xdf, 0xa4, 0x23, 0x7e, 0x26, 0x02, 0x5b, 0xda, - 0xc5, 0xa8, 0x9a, 0x09, 0x46, 0x55, 0x90, 0xd6, 0xd0, 0x58, 0x4d, 0xfb, 0x1d, 0xe4, 0x99, 0x6f, - 0x13, 0xae, 0xaf, 0xd4, 0xb2, 0x8d, 0x62, 0xeb, 0x6b, 0xb8, 0xec, 0xaf, 0x09, 0x0f, 0x5d, 0x9b, - 0x76, 0xfe, 0x43, 0xbe, 0x4d, 0xac, 0x52, 0x7c, 0x45, 0x3e, 0x3c, 0x71, 0x14, 0x29, 0xd6, 0x1f, - 0xaf, 0x00, 0x6d, 0xc2, 0x84, 0x45, 0x9d, 0x2e, 0x75, 0x7a, 0xef, 0xd1, 0xcb, 0x5f, 0xa0, 0xc0, - 0x7d, 0xd9, 0x48, 0xec, 0x34, 0x97, 0xb7, 0x73, 0x14, 0x31, 0xad, 0xcf, 0xe2, 0x2b, 0x0a, 0x71, - 0x81, 0xa3, 0xb1, 0xa8, 0xf6, 0x07, 0x58, 0x65, 0xae, 0x4d, 0x10, 0x39, 0xd5, 0xb3, 0x72, 0xf2, - 0x5b, 0xe8, 0xa3, 0x88, 0x68, 0x95, 0x63, 0xfd, 0xd5, 0xb8, 0x80, 0x12, 0xc9, 0xfa, 0x2b, 0x05, - 0x7c, 0x31, 0xbb, 0xaf, 0x7d, 0xca, 0x85, 0xf6, 0xe7, 0xcc, 0xce, 0xcc, 0x77, 0xec, 0x6c, 0xe2, - 0xa5, 0xc3, 0x90, 0x2e, 0x57, 0x37, 0xf6, 0x95, 0x54, 0x26, 0x16, 0x87, 0x41, 0x9e, 0x0a, 0x32, - 0x48, 0xb6, 0xf6, 0xed, 0xf2, 0xae, 0x66, 0xe7, 0x4d, 0x1f, 0xc3, 0x5e, 0x28, 0x89, 0x22, 0xe5, - 0xfa, 0x0b, 0x05, 0x94, 0x27, 0xc0, 0xf7, 0xe1, 0xea, 0x64, 0xda, 0xd5, 0xf6, 0xdd, 0x5c, 0xcd, - 0xb7, 0xf3, 0x20, 0x0b, 0x40, 0xfa, 0x01, 0x68, 0x55, 0x90, 0x1f, 0x12, 0xd6, 0xe6, 0xba, 0x52, - 0xcb, 0x36, 0x54, 0x4b, 0x0d, 0xf1, 0xc7, 0x61, 0x01, 0x45, 0x75, 0xed, 0x5c, 0x01, 0xeb, 0x58, - 0x08, 0x46, 0xdb, 0xbe, 0x20, 0x88, 0x70, 0xc1, 0x68, 0x47, 0x50, 0xd7, 0x09, 0x87, 0x0b, 0x8d, - 0x6f, 0x2c, 0x18, 0x2e, 0xce, 0x14, 0x88, 0xf0, 0x3f, 0x3f, 0xfc, 0x2b, 0x88, 0x13, 0xfa, 0xb7, - 0xbe, 0x8c, 0x47, 0x5a, 0xdf, 0x9d, 0xa7, 0x88, 0xe6, 0x5f, 0xa4, 0x6d, 0x00, 0x15, 0x7b, 0xf4, - 0x47, 0xe6, 0xfa, 0x1e, 0xd7, 0xb3, 0x72, 0xce, 0x52, 0x30, 0xaa, 0xaa, 0xbb, 0x87, 0x7b, 0x51, - 0x11, 0xa5, 0xfd, 0x10, 0x9c, 0x64, 0x2c, 0xd7, 0x73, 0x29, 0x18, 0x25, 0x45, 0x94, 0xf6, 0xb5, - 0x6f, 0x40, 0x29, 0x39, 0x1c, 0xe0, 0x01, 0xe1, 0x7a, 0x5e, 0x12, 0xd6, 0x82, 0x51, 0xb5, 0x84, - 0x26, 0x1b, 0x68, 0x1a, 0xa7, 0x7d, 0x07, 0xca, 0x8e, 0xeb, 0x24, 0x90, 0x5f, 0xd1, 0x3e, 0xd7, - 0x3f, 0x91, 0xd4, 0xcf, 0x83, 0x51, 0xb5, 0x7c, 0x30, 0xdd, 0x42, 0xd7, 0xb1, 0xf5, 0xa7, 0x0a, - 0xc8, 0x7d, 0xb8, 0xf1, 0xf8, 0x68, 0x05, 0x14, 0x3f, 0xe6, 0xe2, 0x12, 0xb9, 0x18, 0x46, 0xc7, - 0x3d, 0x07, 0xe2, 0xdd, 0xa3, 0xe3, 0xe6, 0x24, 0x7c, 0xa6, 0x80, 0xc2, 0x7d, 0x45, 0xe0, 0xd1, - 0xb4, 0x0f, 0x78, 0x4b, 0x1f, 0xf3, 0x0d, 0xfc, 0x0f, 0x92, 0xdf, 0x48, 0xdb, 0x04, 0x85, 0x24, - 0x33, 0xe4, 0xf8, 0x6a, 0x3a, 0x4d, 0x12, 0x2b, 0x68, 0x8c, 0xd0, 0x6a, 0x20, 0xd7, 0xa7, 0x4e, - 0x57, 0x46, 0x9e, 0x6a, 0x7d, 0x1a, 0x23, 0x73, 0x3f, 0x51, 0xa7, 0x8b, 0x64, 0x27, 0x44, 0x38, - 0x78, 0x40, 0xe4, 0x2b, 0x9a, 0x40, 0x84, 0x69, 0x81, 0x64, 0xa7, 0xfe, 0x44, 0x01, 0xab, 0xf1, - 0x0b, 0x1c, 0xeb, 0x29, 0x0b, 0xf5, 0x5a, 0x00, 0x60, 0x8f, 0x1e, 0x47, 0x4b, 0x8b, 0xef, 0x1d, - 0x7f, 0x2b, 0xbb, 0x87, 0x7b, 0x71, 0x07, 0x4d, 0xa0, 0x6e, 0x9e, 0x41, 0x33, 0x81, 0x1a, 0xfe, - 0xe5, 0x1e, 0xee, 0x10, 0x3d, 0x27, 0x61, 0x6b, 0x31, 0x4c, 0x3d, 0x48, 0x1a, 0x28, 0xc5, 0x58, - 0x5f, 0x5d, 0x5c, 0x19, 0x99, 0xcb, 0x2b, 0x23, 0xf3, 0xf2, 0xca, 0xc8, 0x9c, 0x07, 0x86, 0x72, - 0x11, 0x18, 0xca, 0x65, 0x60, 0x28, 0xaf, 0x03, 0x43, 0x79, 0xf8, 0xc6, 0xc8, 0x9c, 0x14, 0x92, - 0xc5, 0xbf, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x62, 0x32, 0x8a, 0x1f, 0x89, 0x0b, 0x00, 0x00, + // 886 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xec, 0x55, 0xcf, 0x6f, 0x1b, 0x45, + 0x14, 0xf6, 0xc4, 0x36, 0xb1, 0x5f, 0x88, 0x42, 0x06, 0x15, 0x2d, 0x96, 0xb0, 0x23, 0x9f, 0x2c, + 0xda, 0xee, 0xca, 0x51, 0x2b, 0x7a, 0x80, 0x43, 0x16, 0x21, 0x14, 0x51, 0x42, 0x34, 0x15, 0x15, + 0x54, 0x20, 0x34, 0x5e, 0x4f, 0x9d, 0xc1, 0xeb, 0xdd, 0xd5, 0xcc, 0xac, 0x01, 0x21, 0xa4, 0x8a, + 0x13, 0x47, 0xfe, 0x8a, 0xde, 0xb8, 0x70, 0x45, 0xe2, 0xc0, 0x29, 0x07, 0x0e, 0x3d, 0x22, 0x0e, + 0x16, 0x31, 0xff, 0x08, 0xda, 0xdd, 0xd9, 0x1f, 0xc9, 0xae, 0x5b, 0x37, 0x88, 0x48, 0x48, 0x3d, + 0xd9, 0xfb, 0xde, 0xf7, 0x7d, 0xf3, 0xbe, 0x79, 0x33, 0x6f, 0xe0, 0xce, 0xf4, 0x8e, 0x34, 0xb9, + 0x6f, 0x4d, 0xc3, 0x11, 0x13, 0x1e, 0x53, 0x4c, 0x5a, 0xc1, 0x74, 0x62, 0xd1, 0x80, 0x4b, 0x4b, + 0x8c, 0xa8, 0x63, 0xcd, 0x87, 0xd4, 0x0d, 0x4e, 0xe8, 0xd0, 0x9a, 0x30, 0x8f, 0x09, 0xaa, 0xd8, + 0xd8, 0x0c, 0x84, 0xaf, 0x7c, 0x3c, 0x48, 0x98, 0x66, 0xce, 0x34, 0x83, 0xe9, 0xc4, 0x8c, 0x98, + 0x66, 0xc4, 0x34, 0x53, 0x66, 0xe7, 0xe6, 0x84, 0xab, 0x93, 0x70, 0x64, 0x3a, 0xfe, 0xcc, 0x9a, + 0xf8, 0x13, 0xdf, 0x8a, 0x05, 0x46, 0xe1, 0xc3, 0xf8, 0x2b, 0xfe, 0x88, 0xff, 0x25, 0xc2, 0x9d, + 0xfd, 0x95, 0x25, 0x59, 0x82, 0x49, 0x3f, 0x14, 0x0e, 0xbb, 0x58, 0x4c, 0xe7, 0xf6, 0x6a, 0x4e, + 0xe8, 0xcd, 0x99, 0x90, 0xdc, 0xf7, 0xd8, 0xb8, 0x44, 0xbb, 0xb1, 0x9a, 0x36, 0x2f, 0x39, 0xee, + 0xdc, 0xac, 0x46, 0x8b, 0xd0, 0x53, 0x7c, 0x56, 0xae, 0xe9, 0xd6, 0xd3, 0xe1, 0xd2, 0x39, 0x61, + 0x33, 0x5a, 0x62, 0x0d, 0xab, 0x59, 0xa1, 0xe2, 0xae, 0xc5, 0x3d, 0x25, 0x95, 0xb8, 0x48, 0xe9, + 0xff, 0x86, 0x60, 0xeb, 0x5d, 0x37, 0x94, 0x8a, 0x09, 0xe2, 0xbb, 0x0c, 0x7f, 0x02, 0xad, 0x19, + 0x53, 0x74, 0x4c, 0x15, 0x35, 0xd0, 0x1e, 0x1a, 0x6c, 0xed, 0x0f, 0xcc, 0x95, 0xcd, 0x32, 0xe7, + 0x43, 0xf3, 0xa3, 0xd1, 0x97, 0xcc, 0x51, 0x1f, 0x32, 0x45, 0x6d, 0x7c, 0xba, 0xe8, 0xd5, 0x96, + 0x8b, 0x1e, 0xe4, 0x31, 0x92, 0xa9, 0xe1, 0x4f, 0xa1, 0x29, 0x42, 0x97, 0x49, 0x63, 0x63, 0xaf, + 0x3e, 0xd8, 0xda, 0xbf, 0x65, 0xae, 0x7b, 0x06, 0xcc, 0x63, 0xdf, 0xe5, 0xce, 0x37, 0x24, 0x74, + 0x99, 0xbd, 0xad, 0x97, 0x68, 0x46, 0x5f, 0x92, 0x24, 0x8a, 0xfd, 0x9f, 0x36, 0x00, 0x17, 0x4c, + 0xd8, 0xdc, 0x1b, 0x73, 0x6f, 0xf2, 0x1f, 0x7a, 0xf9, 0x02, 0x5a, 0x32, 0x8c, 0x13, 0xa9, 0x9d, + 0xe1, 0xfa, 0x76, 0xee, 0x25, 0x4c, 0xfb, 0x15, 0xbd, 0x44, 0x4b, 0x07, 0x24, 0xc9, 0x44, 0xf1, + 0x67, 0xb0, 0x29, 0x7c, 0x97, 0x11, 0xf6, 0xd0, 0xa8, 0xc7, 0x95, 0x3f, 0x87, 0x3e, 0x49, 0x88, + 0xf6, 0x8e, 0xd6, 0xdf, 0xd4, 0x01, 0x92, 0x4a, 0xf6, 0x1f, 0x23, 0x78, 0xbd, 0xbc, 0x5f, 0x76, + 0xc8, 0xdd, 0x31, 0x13, 0xf8, 0x07, 0x04, 0xd8, 0x29, 0x65, 0xf5, 0x0e, 0xbe, 0xbd, 0x7e, 0x1d, + 0x15, 0x2b, 0x74, 0x74, 0x49, 0x15, 0xdd, 0x22, 0x15, 0x6b, 0xf6, 0xff, 0x44, 0xf0, 0x5a, 0x19, + 0x7a, 0x97, 0x4b, 0x85, 0x3f, 0x2f, 0x35, 0xd7, 0x7a, 0x4a, 0x73, 0x0b, 0x17, 0xd9, 0x8c, 0xe8, + 0x71, 0x8f, 0xb3, 0x06, 0xa4, 0x91, 0x42, 0x87, 0x29, 0x34, 0xb9, 0x62, 0xb3, 0xb4, 0xbd, 0xff, + 0xce, 0x76, 0x76, 0x6a, 0x0f, 0x23, 0x49, 0x92, 0x28, 0xf7, 0x7f, 0x47, 0xb0, 0x53, 0x00, 0x5f, + 0x85, 0xab, 0x07, 0xe7, 0x5d, 0xdd, 0xbe, 0x9c, 0xab, 0x6a, 0x3b, 0xdf, 0xd7, 0x01, 0xf2, 0x9b, + 0x8a, 0x7b, 0xd0, 0x9c, 0x33, 0x31, 0x92, 0x06, 0xda, 0xab, 0x0f, 0xda, 0x76, 0x3b, 0xc2, 0xdf, + 0x8f, 0x02, 0x24, 0x89, 0xe3, 0x47, 0x08, 0xae, 0x51, 0xa5, 0x04, 0x1f, 0x85, 0x8a, 0x11, 0x26, + 0x95, 0xe0, 0x8e, 0xe2, 0xbe, 0x17, 0x15, 0x17, 0x19, 0xbf, 0xbe, 0xa2, 0x38, 0x3d, 0x03, 0x4d, + 0x42, 0xbf, 0x7a, 0xef, 0x6b, 0xc5, 0xbc, 0xc8, 0xbf, 0xfd, 0x86, 0x2e, 0xe9, 0xda, 0x41, 0x95, + 0x22, 0xa9, 0x5e, 0x08, 0x5f, 0x87, 0x36, 0x0d, 0xf8, 0xfb, 0xc2, 0x0f, 0x03, 0x69, 0xd4, 0xe3, + 0x3a, 0xb7, 0x97, 0x8b, 0x5e, 0xfb, 0xe0, 0xf8, 0x30, 0x09, 0x92, 0x3c, 0x1f, 0x81, 0xd3, 0x27, + 0x44, 0x1a, 0x8d, 0x1c, 0x4c, 0xd2, 0x20, 0xc9, 0xf3, 0xf8, 0x2d, 0xd8, 0x4e, 0x3f, 0x8e, 0xe8, + 0x8c, 0x49, 0xa3, 0x19, 0x13, 0x76, 0x97, 0x8b, 0xde, 0x36, 0x29, 0x26, 0xc8, 0x79, 0x1c, 0x7e, + 0x07, 0x76, 0x3c, 0xdf, 0x4b, 0x21, 0x1f, 0x93, 0xbb, 0xd2, 0x78, 0x29, 0xa6, 0xbe, 0xba, 0x5c, + 0xf4, 0x76, 0x8e, 0xce, 0xa7, 0xc8, 0x45, 0x6c, 0xff, 0x3b, 0xd8, 0x2d, 0x4c, 0x4b, 0x7d, 0xa1, + 0x4f, 0x00, 0x82, 0x2c, 0xa8, 0x8f, 0xd5, 0xe5, 0xc6, 0x6f, 0x36, 0x15, 0xf3, 0x18, 0x29, 0x68, + 0xf7, 0x7f, 0x41, 0xd0, 0xf8, 0xff, 0x3e, 0x23, 0x8f, 0x37, 0x60, 0xeb, 0xc5, 0xfb, 0xb1, 0xc6, + 0xfb, 0x11, 0x4d, 0xae, 0x2b, 0x9e, 0xc7, 0x97, 0x9f, 0x5c, 0xcf, 0x1e, 0xc4, 0xbf, 0x22, 0x68, + 0x5d, 0xd5, 0x04, 0xbe, 0x77, 0xde, 0x87, 0xf9, 0x9c, 0x3e, 0xaa, 0x0d, 0x7c, 0x0b, 0x69, 0x8f, + 0xf0, 0x0d, 0x68, 0xa5, 0x23, 0x2b, 0x2e, 0xbf, 0x9d, 0x57, 0x93, 0x4e, 0x35, 0x92, 0x21, 0xf0, + 0x1e, 0x34, 0xa6, 0xdc, 0x1b, 0xc7, 0x13, 0xb7, 0x6d, 0xbf, 0xac, 0x91, 0x8d, 0x0f, 0xb8, 0x37, + 0x26, 0x71, 0x26, 0x42, 0x78, 0x74, 0xc6, 0xe2, 0x53, 0x54, 0x40, 0x44, 0xc3, 0x8a, 0xc4, 0x99, + 0xfe, 0xcf, 0x08, 0x36, 0xf5, 0x09, 0xcc, 0xf4, 0xd0, 0x4a, 0xbd, 0x7d, 0x00, 0x1a, 0xf0, 0xfb, + 0xc9, 0xa6, 0xe9, 0x75, 0xb3, 0xbb, 0x72, 0x70, 0x7c, 0xa8, 0x33, 0xa4, 0x80, 0x7a, 0x76, 0x0d, + 0xd8, 0x82, 0x76, 0xf4, 0x2b, 0x03, 0xea, 0x30, 0xa3, 0x11, 0xc3, 0x76, 0x35, 0xac, 0x7d, 0x94, + 0x26, 0x48, 0x8e, 0xb1, 0xdf, 0x3c, 0x3d, 0xeb, 0xd6, 0x9e, 0x9c, 0x75, 0x6b, 0x7f, 0x9c, 0x75, + 0x6b, 0x8f, 0x96, 0x5d, 0x74, 0xba, 0xec, 0xa2, 0x27, 0xcb, 0x2e, 0xfa, 0x6b, 0xd9, 0x45, 0x3f, + 0xfe, 0xdd, 0xad, 0x3d, 0x68, 0xa5, 0x1b, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x90, 0xdd, + 0x28, 0xaf, 0xe7, 0x0c, 0x00, 0x00, } diff --git a/pkg/apis/rbac/v1alpha1/generated.proto b/pkg/apis/rbac/v1alpha1/generated.proto index 09f11e33..c265441f 100644 --- a/pkg/apis/rbac/v1alpha1/generated.proto +++ b/pkg/apis/rbac/v1alpha1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". @@ -55,6 +56,14 @@ message ClusterRoleBinding { optional RoleRef roleRef = 3; } +// +k8s:deepcopy-gen=false +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +message ClusterRoleBindingBuilder { + optional ClusterRoleBinding clusterRoleBinding = 1; +} + // ClusterRoleBindingList is a collection of ClusterRoleBindings message ClusterRoleBindingList { // Standard object's metadata. @@ -107,6 +116,14 @@ message PolicyRule { repeated string nonResourceURLs = 6; } +// +k8s:deepcopy-gen=false +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +message PolicyRuleBuilder { + optional PolicyRule policyRule = 1; +} + // Role is a namespaced, logical grouping of PolicyRules that can be referenced as a unit by a RoleBinding. message Role { // Standard object's metadata. diff --git a/pkg/apis/rbac/v1alpha1/helpers.go b/pkg/apis/rbac/v1alpha1/helpers.go new file mode 100644 index 00000000..789859c9 --- /dev/null +++ b/pkg/apis/rbac/v1alpha1/helpers.go @@ -0,0 +1,148 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "fmt" + + "k8s.io/client-go/pkg/api/v1" +) + +// +k8s:deepcopy-gen=false +// PolicyRuleBuilder let's us attach methods. A no-no for API types. +// We use it to construct rules in code. It's more compact than trying to write them +// out in a literal and allows us to perform some basic checking during construction +type PolicyRuleBuilder struct { + PolicyRule PolicyRule `protobuf:"bytes,1,opt,name=policyRule"` +} + +func NewRule(verbs ...string) *PolicyRuleBuilder { + return &PolicyRuleBuilder{ + PolicyRule: PolicyRule{Verbs: verbs}, + } +} + +func (r *PolicyRuleBuilder) Groups(groups ...string) *PolicyRuleBuilder { + r.PolicyRule.APIGroups = append(r.PolicyRule.APIGroups, groups...) + return r +} + +func (r *PolicyRuleBuilder) Resources(resources ...string) *PolicyRuleBuilder { + r.PolicyRule.Resources = append(r.PolicyRule.Resources, resources...) + return r +} + +func (r *PolicyRuleBuilder) Names(names ...string) *PolicyRuleBuilder { + r.PolicyRule.ResourceNames = append(r.PolicyRule.ResourceNames, names...) + return r +} + +func (r *PolicyRuleBuilder) URLs(urls ...string) *PolicyRuleBuilder { + r.PolicyRule.NonResourceURLs = append(r.PolicyRule.NonResourceURLs, urls...) + return r +} + +func (r *PolicyRuleBuilder) RuleOrDie() PolicyRule { + ret, err := r.Rule() + if err != nil { + panic(err) + } + return ret +} + +func (r *PolicyRuleBuilder) Rule() (PolicyRule, error) { + if len(r.PolicyRule.Verbs) == 0 { + return PolicyRule{}, fmt.Errorf("verbs are required: %#v", r.PolicyRule) + } + + switch { + case len(r.PolicyRule.NonResourceURLs) > 0: + if len(r.PolicyRule.APIGroups) != 0 || len(r.PolicyRule.Resources) != 0 || len(r.PolicyRule.ResourceNames) != 0 { + return PolicyRule{}, fmt.Errorf("non-resource rule may not have apiGroups, resources, or resourceNames: %#v", r.PolicyRule) + } + case len(r.PolicyRule.Resources) > 0: + if len(r.PolicyRule.NonResourceURLs) != 0 { + return PolicyRule{}, fmt.Errorf("resource rule may not have nonResourceURLs: %#v", r.PolicyRule) + } + if len(r.PolicyRule.APIGroups) == 0 { + // this a common bug + return PolicyRule{}, fmt.Errorf("resource rule must have apiGroups: %#v", r.PolicyRule) + } + default: + return PolicyRule{}, fmt.Errorf("a rule must have either nonResourceURLs or resources: %#v", r.PolicyRule) + } + + return r.PolicyRule, nil +} + +// +k8s:deepcopy-gen=false +// ClusterRoleBindingBuilder let's us attach methods. A no-no for API types. +// We use it to construct bindings in code. It's more compact than trying to write them +// out in a literal. +type ClusterRoleBindingBuilder struct { + ClusterRoleBinding ClusterRoleBinding `protobuf:"bytes,1,opt,name=clusterRoleBinding"` +} + +func NewClusterBinding(clusterRoleName string) *ClusterRoleBindingBuilder { + return &ClusterRoleBindingBuilder{ + ClusterRoleBinding: ClusterRoleBinding{ + ObjectMeta: v1.ObjectMeta{Name: clusterRoleName}, + RoleRef: RoleRef{ + APIGroup: GroupName, + Kind: "ClusterRole", + Name: clusterRoleName, + }, + }, + } +} + +func (r *ClusterRoleBindingBuilder) Groups(groups ...string) *ClusterRoleBindingBuilder { + for _, group := range groups { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: GroupKind, Name: group}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) Users(users ...string) *ClusterRoleBindingBuilder { + for _, user := range users { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: UserKind, Name: user}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) SAs(namespace string, serviceAccountNames ...string) *ClusterRoleBindingBuilder { + for _, saName := range serviceAccountNames { + r.ClusterRoleBinding.Subjects = append(r.ClusterRoleBinding.Subjects, Subject{Kind: ServiceAccountKind, Namespace: namespace, Name: saName}) + } + return r +} + +func (r *ClusterRoleBindingBuilder) BindingOrDie() ClusterRoleBinding { + ret, err := r.Binding() + if err != nil { + panic(err) + } + return ret +} + +func (r *ClusterRoleBindingBuilder) Binding() (ClusterRoleBinding, error) { + if len(r.ClusterRoleBinding.Subjects) == 0 { + return ClusterRoleBinding{}, fmt.Errorf("subjects are required: %#v", r.ClusterRoleBinding) + } + + return r.ClusterRoleBinding, nil +} diff --git a/pkg/apis/rbac/v1alpha1/register.go b/pkg/apis/rbac/v1alpha1/register.go index 06907113..537019bc 100644 --- a/pkg/apis/rbac/v1alpha1/register.go +++ b/pkg/apis/rbac/v1alpha1/register.go @@ -17,16 +17,16 @@ limitations under the License. package v1alpha1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/watch/versioned" ) const GroupName = "rbac.authorization.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) diff --git a/pkg/apis/rbac/v1alpha1/types.go b/pkg/apis/rbac/v1alpha1/types.go index a8b8b229..6ddc6167 100644 --- a/pkg/apis/rbac/v1alpha1/types.go +++ b/pkg/apis/rbac/v1alpha1/types.go @@ -27,6 +27,24 @@ import ( // 2. evaluation of RoleBindings in the namespace requested - short circuit on match // 3. deny by default +const ( + APIGroupAll = "*" + ResourceAll = "*" + VerbAll = "*" + NonResourceAll = "*" + + GroupKind = "Group" + ServiceAccountKind = "ServiceAccount" + UserKind = "User" + + UserAll = "*" +) + +// Authorization is calculated against +// 1. evaluation of ClusterRoleBindings - short circuit on match +// 2. evaluation of RoleBindings in the namespace requested - short circuit on match +// 3. deny by default + // PolicyRule holds information that describes a policy rule, but does not contain information // about who the rule applies to or which namespace the rule applies to. type PolicyRule struct { diff --git a/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go b/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go index 1181cf7f..14398504 100644 --- a/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go +++ b/pkg/apis/rbac/v1alpha1/zz_generated.conversion.go @@ -39,12 +39,16 @@ func RegisterConversions(scheme *runtime.Scheme) error { Convert_rbac_ClusterRole_To_v1alpha1_ClusterRole, Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding, Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding, + Convert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder, + Convert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder, Convert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList, Convert_rbac_ClusterRoleBindingList_To_v1alpha1_ClusterRoleBindingList, Convert_v1alpha1_ClusterRoleList_To_rbac_ClusterRoleList, Convert_rbac_ClusterRoleList_To_v1alpha1_ClusterRoleList, Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule, Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule, + Convert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder, + Convert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder, Convert_v1alpha1_Role_To_rbac_Role, Convert_rbac_Role_To_v1alpha1_Role, Convert_v1alpha1_RoleBinding_To_rbac_RoleBinding, @@ -138,6 +142,28 @@ func Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in *rbac.Clu return autoConvert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(in, out, s) } +func autoConvert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in *ClusterRoleBindingBuilder, out *rbac.ClusterRoleBindingBuilder, s conversion.Scope) error { + if err := Convert_v1alpha1_ClusterRoleBinding_To_rbac_ClusterRoleBinding(&in.ClusterRoleBinding, &out.ClusterRoleBinding, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in *ClusterRoleBindingBuilder, out *rbac.ClusterRoleBindingBuilder, s conversion.Scope) error { + return autoConvert_v1alpha1_ClusterRoleBindingBuilder_To_rbac_ClusterRoleBindingBuilder(in, out, s) +} + +func autoConvert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder(in *rbac.ClusterRoleBindingBuilder, out *ClusterRoleBindingBuilder, s conversion.Scope) error { + if err := Convert_rbac_ClusterRoleBinding_To_v1alpha1_ClusterRoleBinding(&in.ClusterRoleBinding, &out.ClusterRoleBinding, s); err != nil { + return err + } + return nil +} + +func Convert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder(in *rbac.ClusterRoleBindingBuilder, out *ClusterRoleBindingBuilder, s conversion.Scope) error { + return autoConvert_rbac_ClusterRoleBindingBuilder_To_v1alpha1_ClusterRoleBindingBuilder(in, out, s) +} + func autoConvert_v1alpha1_ClusterRoleBindingList_To_rbac_ClusterRoleBindingList(in *ClusterRoleBindingList, out *rbac.ClusterRoleBindingList, s conversion.Scope) error { out.ListMeta = in.ListMeta out.Items = *(*[]rbac.ClusterRoleBinding)(unsafe.Pointer(&in.Items)) @@ -230,6 +256,28 @@ func Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in *rbac.PolicyRule, out *Po return autoConvert_rbac_PolicyRule_To_v1alpha1_PolicyRule(in, out, s) } +func autoConvert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in *PolicyRuleBuilder, out *rbac.PolicyRuleBuilder, s conversion.Scope) error { + if err := Convert_v1alpha1_PolicyRule_To_rbac_PolicyRule(&in.PolicyRule, &out.PolicyRule, s); err != nil { + return err + } + return nil +} + +func Convert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in *PolicyRuleBuilder, out *rbac.PolicyRuleBuilder, s conversion.Scope) error { + return autoConvert_v1alpha1_PolicyRuleBuilder_To_rbac_PolicyRuleBuilder(in, out, s) +} + +func autoConvert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder(in *rbac.PolicyRuleBuilder, out *PolicyRuleBuilder, s conversion.Scope) error { + if err := Convert_rbac_PolicyRule_To_v1alpha1_PolicyRule(&in.PolicyRule, &out.PolicyRule, s); err != nil { + return err + } + return nil +} + +func Convert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder(in *rbac.PolicyRuleBuilder, out *PolicyRuleBuilder, s conversion.Scope) error { + return autoConvert_rbac_PolicyRuleBuilder_To_v1alpha1_PolicyRuleBuilder(in, out, s) +} + func autoConvert_v1alpha1_Role_To_rbac_Role(in *Role, out *rbac.Role, s conversion.Scope) error { // TODO: Inefficient conversion - can we improve it? if err := s.Convert(&in.ObjectMeta, &out.ObjectMeta, 0); err != nil { diff --git a/pkg/apis/rbac/zz_generated.deepcopy.go b/pkg/apis/rbac/zz_generated.deepcopy.go index 253c1517..bd340bf4 100644 --- a/pkg/apis/rbac/zz_generated.deepcopy.go +++ b/pkg/apis/rbac/zz_generated.deepcopy.go @@ -21,10 +21,11 @@ limitations under the License. package rbac import ( + reflect "reflect" + api "k8s.io/client-go/pkg/api" conversion "k8s.io/client-go/pkg/conversion" runtime "k8s.io/client-go/pkg/runtime" - reflect "reflect" ) func init() { diff --git a/pkg/apis/storage/register.go b/pkg/apis/storage/register.go index a924b775..5dc5fe48 100644 --- a/pkg/apis/storage/register.go +++ b/pkg/apis/storage/register.go @@ -18,23 +18,23 @@ package storage import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "storage.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } diff --git a/pkg/apis/storage/v1beta1/generated.pb.go b/pkg/apis/storage/v1beta1/generated.pb.go index 8ec0b148..49c051ce 100644 --- a/pkg/apis/storage/v1beta1/generated.pb.go +++ b/pkg/apis/storage/v1beta1/generated.pb.go @@ -696,34 +696,35 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 462 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x92, 0xcf, 0x8b, 0xd3, 0x40, - 0x14, 0xc7, 0x33, 0x2d, 0xc5, 0xdd, 0xa9, 0x62, 0x89, 0x1e, 0x4a, 0x0e, 0xd9, 0xb2, 0xa7, 0x2a, - 0xee, 0x0c, 0x2d, 0x2c, 0x94, 0x05, 0x2f, 0x15, 0x41, 0x41, 0x71, 0x89, 0x17, 0x11, 0xf6, 0x30, - 0x69, 0x9f, 0x71, 0x4c, 0x93, 0x09, 0x33, 0x2f, 0x81, 0x05, 0x0f, 0xfe, 0x09, 0xfe, 0x59, 0x3d, - 0xf6, 0xe8, 0x41, 0x16, 0x1b, 0xff, 0x11, 0x69, 0x12, 0x37, 0xa1, 0x3f, 0x44, 0xf6, 0x36, 0x6f, - 0xe6, 0x7d, 0xbe, 0xef, 0xfb, 0xbe, 0x0c, 0xbd, 0x08, 0x27, 0x86, 0x49, 0xc5, 0xc3, 0xd4, 0x07, - 0x1d, 0x03, 0x82, 0xe1, 0x49, 0x18, 0x70, 0x91, 0x48, 0xc3, 0x0d, 0x2a, 0x2d, 0x02, 0xe0, 0xd9, - 0xc8, 0x07, 0x14, 0x23, 0x1e, 0x40, 0x0c, 0x5a, 0x20, 0xcc, 0x59, 0xa2, 0x15, 0x2a, 0xfb, 0x69, - 0xc9, 0xb2, 0x9a, 0x65, 0x49, 0x18, 0xb0, 0x0d, 0xcb, 0x2a, 0x96, 0x55, 0xac, 0x73, 0x16, 0x48, - 0xfc, 0x9c, 0xfa, 0x6c, 0xa6, 0x22, 0x1e, 0xa8, 0x40, 0xf1, 0x42, 0xc2, 0x4f, 0x3f, 0x15, 0x55, - 0x51, 0x14, 0xa7, 0x52, 0xda, 0x19, 0x1f, 0xb4, 0xc5, 0x35, 0x18, 0x95, 0xea, 0x19, 0x6c, 0xdb, - 0x71, 0xce, 0x0f, 0x33, 0x69, 0x9c, 0x81, 0x36, 0x52, 0xc5, 0x30, 0xdf, 0xc1, 0x9e, 0x1d, 0xc6, - 0xb2, 0x9d, 0x9d, 0x9d, 0xb3, 0xfd, 0xdd, 0x3a, 0x8d, 0x51, 0x46, 0xbb, 0x9e, 0x46, 0xfb, 0xdb, - 0x53, 0x94, 0x0b, 0x2e, 0x63, 0x34, 0xa8, 0xb7, 0x91, 0xd3, 0x9f, 0x2d, 0x7a, 0xff, 0x7d, 0x99, - 0xde, 0x8b, 0x85, 0x30, 0xc6, 0xfe, 0x40, 0x8f, 0x22, 0x40, 0x31, 0x17, 0x28, 0xfa, 0x64, 0x40, - 0x86, 0xdd, 0xf1, 0x90, 0x1d, 0x4c, 0x9e, 0x65, 0x23, 0xf6, 0xce, 0xff, 0x02, 0x33, 0x7c, 0x0b, - 0x28, 0xa6, 0xf6, 0xf2, 0xe6, 0xc4, 0xca, 0x6f, 0x4e, 0x68, 0x7d, 0xe7, 0xdd, 0xaa, 0xd9, 0xe7, - 0xb4, 0x9b, 0x68, 0x95, 0xc9, 0x22, 0x19, 0xdd, 0x6f, 0x0d, 0xc8, 0xf0, 0x78, 0xfa, 0xa8, 0x42, - 0xba, 0x97, 0xf5, 0x93, 0xd7, 0xec, 0xb3, 0xbf, 0x52, 0x9a, 0x08, 0x2d, 0x22, 0x40, 0xd0, 0xa6, - 0xdf, 0x1e, 0xb4, 0x87, 0xdd, 0xf1, 0x2b, 0xf6, 0xff, 0x9f, 0x81, 0x35, 0xd7, 0x63, 0x97, 0xb7, - 0x52, 0x2f, 0x63, 0xd4, 0xd7, 0xb5, 0xe5, 0xfa, 0xc1, 0x6b, 0xcc, 0x73, 0x9e, 0xd3, 0x87, 0x5b, - 0x88, 0xdd, 0xa3, 0xed, 0x10, 0xae, 0x8b, 0x70, 0x8e, 0xbd, 0xcd, 0xd1, 0x7e, 0x4c, 0x3b, 0x99, - 0x58, 0xa4, 0x50, 0xee, 0xe4, 0x95, 0xc5, 0x45, 0x6b, 0x42, 0x4e, 0x57, 0x84, 0xf6, 0x9a, 0xf3, - 0xdf, 0x48, 0x83, 0xf6, 0xd5, 0x4e, 0xc4, 0xfc, 0x1f, 0x11, 0x37, 0x7e, 0x13, 0xdb, 0xe0, 0x45, - 0xd2, 0xbd, 0xca, 0xf6, 0xd1, 0xdf, 0x9b, 0x46, 0xce, 0x57, 0xb4, 0x23, 0x11, 0x22, 0xd3, 0x6f, - 0x15, 0x59, 0x4d, 0xee, 0x9a, 0xd5, 0xf4, 0x41, 0x35, 0xa4, 0xf3, 0x7a, 0x23, 0xe7, 0x95, 0xaa, - 0xd3, 0x27, 0xcb, 0xb5, 0x6b, 0xad, 0xd6, 0xae, 0xf5, 0x63, 0xed, 0x5a, 0xdf, 0x72, 0x97, 0x2c, - 0x73, 0x97, 0xac, 0x72, 0x97, 0xfc, 0xca, 0x5d, 0xf2, 0xfd, 0xb7, 0x6b, 0x7d, 0xbc, 0x57, 0xa9, - 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, 0x86, 0x21, 0xa9, 0x43, 0xef, 0x03, 0x00, 0x00, + // 472 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x9c, 0x92, 0x41, 0x8b, 0xd3, 0x40, + 0x14, 0xc7, 0x3b, 0x2d, 0xc5, 0xdd, 0xa9, 0x62, 0x89, 0x1e, 0x4a, 0x0e, 0xd9, 0xb2, 0xa7, 0x2a, + 0xee, 0x0c, 0x2d, 0x2e, 0x94, 0x05, 0x2f, 0x15, 0x41, 0x41, 0x71, 0x89, 0x17, 0x11, 0xf6, 0x30, + 0x69, 0x9f, 0xd9, 0x31, 0x4d, 0x26, 0xcc, 0xbc, 0x04, 0x16, 0x3c, 0xf8, 0x11, 0xfc, 0x58, 0x3d, + 0xf6, 0xe8, 0x41, 0x16, 0x1b, 0xbf, 0x88, 0x34, 0x89, 0x9b, 0xd0, 0x6c, 0x17, 0xf1, 0x96, 0x37, + 0xf3, 0x7e, 0xff, 0xf7, 0x7f, 0xff, 0x0c, 0x3d, 0x0b, 0xa6, 0x86, 0x49, 0xc5, 0x83, 0xc4, 0x03, + 0x1d, 0x01, 0x82, 0xe1, 0x71, 0xe0, 0x73, 0x11, 0x4b, 0xc3, 0x0d, 0x2a, 0x2d, 0x7c, 0xe0, 0xe9, + 0xd8, 0x03, 0x14, 0x63, 0xee, 0x43, 0x04, 0x5a, 0x20, 0x2c, 0x58, 0xac, 0x15, 0x2a, 0xeb, 0x69, + 0xc1, 0xb2, 0x8a, 0x65, 0x71, 0xe0, 0xb3, 0x2d, 0xcb, 0x4a, 0x96, 0x95, 0xac, 0x7d, 0xe2, 0x4b, + 0xbc, 0x4c, 0x3c, 0x36, 0x57, 0x21, 0xf7, 0x95, 0xaf, 0x78, 0x2e, 0xe1, 0x25, 0x9f, 0xf3, 0x2a, + 0x2f, 0xf2, 0xaf, 0x42, 0xda, 0x9e, 0xec, 0xb5, 0xc5, 0x35, 0x18, 0x95, 0xe8, 0x39, 0xec, 0xda, + 0xb1, 0x4f, 0xf7, 0x33, 0x49, 0x94, 0x82, 0x36, 0x52, 0x45, 0xb0, 0x68, 0x60, 0xcf, 0xf6, 0x63, + 0x69, 0x63, 0x67, 0xfb, 0xe4, 0xf6, 0x6e, 0x9d, 0x44, 0x28, 0xc3, 0xa6, 0xa7, 0xe7, 0x77, 0xb7, + 0x9b, 0xf9, 0x25, 0x84, 0xa2, 0x41, 0x8d, 0x6f, 0xa7, 0x12, 0x94, 0x4b, 0x2e, 0x23, 0x34, 0xa8, + 0x77, 0x91, 0xe3, 0x9f, 0x6d, 0x7a, 0xff, 0x43, 0x91, 0xf9, 0xcb, 0xa5, 0x30, 0xc6, 0xfa, 0x48, + 0x0f, 0x42, 0x40, 0xb1, 0x10, 0x28, 0x06, 0x64, 0x48, 0x46, 0xbd, 0xc9, 0x88, 0xed, 0xfd, 0x5f, + 0x2c, 0x1d, 0xb3, 0xf7, 0xde, 0x17, 0x98, 0xe3, 0x3b, 0x40, 0x31, 0xb3, 0x56, 0xd7, 0x47, 0xad, + 0xec, 0xfa, 0x88, 0x56, 0x67, 0xee, 0x8d, 0x9a, 0x75, 0x4a, 0x7b, 0xb1, 0x56, 0xa9, 0xcc, 0xf3, + 0xd4, 0x83, 0xf6, 0x90, 0x8c, 0x0e, 0x67, 0x8f, 0x4a, 0xa4, 0x77, 0x5e, 0x5d, 0xb9, 0xf5, 0x3e, + 0xeb, 0x2b, 0xa5, 0xb1, 0xd0, 0x22, 0x04, 0x04, 0x6d, 0x06, 0x9d, 0x61, 0x67, 0xd4, 0x9b, 0xbc, + 0x66, 0xff, 0xfe, 0x84, 0x58, 0x7d, 0x3d, 0x76, 0x7e, 0x23, 0xf5, 0x2a, 0x42, 0x7d, 0x55, 0x59, + 0xae, 0x2e, 0xdc, 0xda, 0x3c, 0xfb, 0x05, 0x7d, 0xb8, 0x83, 0x58, 0x7d, 0xda, 0x09, 0xe0, 0x2a, + 0x0f, 0xe7, 0xd0, 0xdd, 0x7e, 0x5a, 0x8f, 0x69, 0x37, 0x15, 0xcb, 0x04, 0x8a, 0x9d, 0xdc, 0xa2, + 0x38, 0x6b, 0x4f, 0xc9, 0xf1, 0x9a, 0xd0, 0x7e, 0x7d, 0xfe, 0x5b, 0x69, 0xd0, 0xba, 0x68, 0x44, + 0xcc, 0xef, 0x88, 0xb8, 0xf6, 0x06, 0xd9, 0x16, 0xcf, 0x93, 0xee, 0x97, 0xb6, 0x0f, 0xfe, 0x9e, + 0xd4, 0x72, 0xbe, 0xa0, 0x5d, 0x89, 0x10, 0x9a, 0x41, 0x3b, 0xcf, 0x6a, 0xfa, 0xbf, 0x59, 0xcd, + 0x1e, 0x94, 0x43, 0xba, 0x6f, 0xb6, 0x72, 0x6e, 0xa1, 0x3a, 0x7b, 0xb2, 0xda, 0x38, 0xad, 0xf5, + 0xc6, 0x69, 0xfd, 0xd8, 0x38, 0xad, 0x6f, 0x99, 0x43, 0x56, 0x99, 0x43, 0xd6, 0x99, 0x43, 0x7e, + 0x65, 0x0e, 0xf9, 0xfe, 0xdb, 0x69, 0x7d, 0xba, 0x57, 0xaa, 0xfd, 0x09, 0x00, 0x00, 0xff, 0xff, + 0x0a, 0x07, 0x46, 0xe4, 0x25, 0x04, 0x00, 0x00, } diff --git a/pkg/apis/storage/v1beta1/generated.proto b/pkg/apis/storage/v1beta1/generated.proto index bdc0631c..efc3b806 100644 --- a/pkg/apis/storage/v1beta1/generated.proto +++ b/pkg/apis/storage/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/apis/storage/v1beta1/register.go b/pkg/apis/storage/v1beta1/register.go index 04088117..fbd0ad89 100644 --- a/pkg/apis/storage/v1beta1/register.go +++ b/pkg/apis/storage/v1beta1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "storage.k8s.io" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) diff --git a/pkg/federation/apis/federation/install/install.go b/pkg/federation/apis/federation/install/install.go index 506713a2..5b1976ad 100644 --- a/pkg/federation/apis/federation/install/install.go +++ b/pkg/federation/apis/federation/install/install.go @@ -23,12 +23,12 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/meta" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/federation/apis/federation" "k8s.io/client-go/pkg/federation/apis/federation/v1beta1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/sets" ) @@ -37,11 +37,11 @@ const importPrefix = "k8s.io/client-go/pkg/federation/apis/federation" var accessor = meta.NewAccessor() // availableVersions lists all known external versions for this group from most preferred to least preferred -var availableVersions = []unversioned.GroupVersion{v1beta1.SchemeGroupVersion} +var availableVersions = []schema.GroupVersion{v1beta1.SchemeGroupVersion} func init() { registered.RegisterVersions(availableVersions) - externalVersions := []unversioned.GroupVersion{} + externalVersions := []schema.GroupVersion{} for _, v := range availableVersions { if registered.IsAllowedVersion(v) { externalVersions = append(externalVersions, v) @@ -66,7 +66,7 @@ func init() { // group. // We can combine registered.RegisterVersions, registered.EnableVersions and // registered.RegisterGroup once we have moved enableVersions there. -func enableVersions(externalVersions []unversioned.GroupVersion) error { +func enableVersions(externalVersions []schema.GroupVersion) error { addVersionsToScheme(externalVersions...) preferredExternalVersion := externalVersions[0] @@ -84,7 +84,7 @@ func enableVersions(externalVersions []unversioned.GroupVersion) error { return nil } -func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper { +func newRESTMapper(externalVersions []schema.GroupVersion) meta.RESTMapper { // the list of kinds that are scoped at the root of the api hierarchy // if a kind is not enumerated here, it is assumed to have a namespace scope rootScoped := sets.NewString( @@ -98,7 +98,7 @@ func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper // interfacesFor returns the default Codec and ResourceVersioner for a given version // string, or an error if the version is not known. -func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) { +func interfacesFor(version schema.GroupVersion) (*meta.VersionInterfaces, error) { switch version { case v1beta1.SchemeGroupVersion: return &meta.VersionInterfaces{ @@ -111,7 +111,7 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e } } -func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) { +func addVersionsToScheme(externalVersions ...schema.GroupVersion) { // add the internal version to Scheme if err := federation.AddToScheme(api.Scheme); err != nil { // Programmer error, detect immediately diff --git a/pkg/federation/apis/federation/register.go b/pkg/federation/apis/federation/register.go index 8a669a1c..3eff8582 100644 --- a/pkg/federation/apis/federation/register.go +++ b/pkg/federation/apis/federation/register.go @@ -18,23 +18,23 @@ package federation import ( "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // GroupName is the group name use in this package const GroupName = "federation" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} // Kind takes an unqualified kind and returns a Group qualified GroupKind -func Kind(kind string) unversioned.GroupKind { +func Kind(kind string) schema.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() } // Resource takes an unqualified resource and returns a Group qualified GroupResource -func Resource(resource string) unversioned.GroupResource { +func Resource(resource string) schema.GroupResource { return SchemeGroupVersion.WithResource(resource).GroupResource() } @@ -53,5 +53,5 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *Cluster) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *ClusterList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *Cluster) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ClusterList) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/federation/apis/federation/types.go b/pkg/federation/apis/federation/types.go index 9ab2743e..761722d5 100644 --- a/pkg/federation/apis/federation/types.go +++ b/pkg/federation/apis/federation/types.go @@ -133,7 +133,7 @@ type FederatedReplicaSetPreferences struct { // +optional Rebalance bool `json:"rebalance,omitempty"` - // A mapping between cluser names and preferences regarding local replicasets in these clusters. + // A mapping between cluster names and preferences regarding local ReplicaSet in these clusters. // "*" (if provided) applies to all clusters if an explicit mapping is not provided. If there is no // "*" that clusters without explicit preferences should not have any replicas scheduled. // +optional diff --git a/pkg/federation/apis/federation/v1beta1/generated.pb.go b/pkg/federation/apis/federation/v1beta1/generated.pb.go index 0723f561..8db4e211 100644 --- a/pkg/federation/apis/federation/v1beta1/generated.pb.go +++ b/pkg/federation/apis/federation/v1beta1/generated.pb.go @@ -1487,55 +1487,55 @@ var ( ) var fileDescriptorGenerated = []byte{ - // 787 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x54, 0xdd, 0x6a, 0xe3, 0x46, - 0x14, 0xb6, 0xfc, 0x1b, 0x4f, 0xea, 0x36, 0x0c, 0x2d, 0xb8, 0xbe, 0x90, 0x83, 0x29, 0xc5, 0xa1, - 0x8d, 0x84, 0x4d, 0x0b, 0x81, 0xd2, 0x42, 0xe4, 0x50, 0x08, 0x38, 0xa4, 0x4c, 0x42, 0x29, 0x81, - 0x52, 0x64, 0xf9, 0x58, 0x51, 0x6d, 0x4b, 0x62, 0x66, 0xe4, 0x92, 0x5c, 0xf5, 0x01, 0x7a, 0xd1, - 0x87, 0xd8, 0x37, 0x58, 0xf6, 0x1d, 0x72, 0x99, 0x8b, 0xbd, 0x58, 0xf6, 0xc2, 0x6c, 0xbc, 0x6f, - 0x91, 0xab, 0x65, 0x46, 0x63, 0xd9, 0x8a, 0x63, 0xb3, 0x9b, 0xdc, 0xe9, 0x1c, 0x9d, 0xf3, 0x7d, - 0xdf, 0x9c, 0x3f, 0x74, 0x34, 0x3c, 0x60, 0x86, 0x17, 0x98, 0xc3, 0xa8, 0x07, 0xd4, 0x07, 0x0e, - 0xcc, 0x1c, 0x40, 0x1f, 0xa8, 0xcd, 0xbd, 0xc0, 0x37, 0xed, 0xd0, 0x4b, 0xd9, 0x93, 0x56, 0x0f, - 0xb8, 0xdd, 0x32, 0x5d, 0xf0, 0x85, 0x0b, 0xfa, 0x46, 0x48, 0x03, 0x1e, 0xe0, 0x1f, 0x62, 0x14, - 0x63, 0x81, 0x62, 0x2c, 0xb2, 0x0c, 0x81, 0xb2, 0x6c, 0x2b, 0x94, 0xda, 0xbe, 0xeb, 0xf1, 0xcb, - 0xa8, 0x67, 0x38, 0xc1, 0xd8, 0x74, 0x03, 0x37, 0x30, 0x25, 0x58, 0x2f, 0x1a, 0x48, 0x4b, 0x1a, - 0xf2, 0x2b, 0x26, 0xa9, 0xb5, 0x57, 0xa5, 0x86, 0x43, 0x57, 0x68, 0x34, 0x29, 0xb0, 0x20, 0xa2, - 0x0e, 0x3c, 0x14, 0x56, 0xfb, 0x71, 0x7d, 0x4e, 0xe4, 0x4f, 0x80, 0x32, 0x2f, 0xf0, 0xa1, 0xbf, - 0x92, 0xf6, 0xfd, 0xfa, 0xb4, 0xc9, 0xca, 0xeb, 0x6b, 0xfb, 0x8f, 0x47, 0xd3, 0xc8, 0xe7, 0xde, - 0x78, 0x55, 0x53, 0xeb, 0xf1, 0xf0, 0x88, 0x7b, 0x23, 0xd3, 0xf3, 0x39, 0xe3, 0xf4, 0x61, 0x4a, - 0xe3, 0x55, 0x16, 0x95, 0x3a, 0xa3, 0x88, 0x71, 0xa0, 0xf8, 0x0f, 0xb4, 0x35, 0x06, 0x6e, 0xf7, - 0x6d, 0x6e, 0x57, 0xb5, 0x5d, 0xad, 0xb9, 0xdd, 0x6e, 0x1a, 0xab, 0xe5, 0x0f, 0x87, 0xae, 0xa8, - 0xbb, 0x31, 0x69, 0x19, 0xa7, 0xbd, 0xbf, 0xc1, 0xe1, 0x27, 0xc0, 0x6d, 0x0b, 0xdf, 0x4c, 0xeb, - 0x99, 0xd9, 0xb4, 0x8e, 0x16, 0x3e, 0x92, 0xa0, 0x61, 0x07, 0xe5, 0x59, 0x08, 0x4e, 0x35, 0x2b, - 0x51, 0x0f, 0x8d, 0xa7, 0x34, 0xd5, 0x50, 0x32, 0xcf, 0x42, 0x70, 0xac, 0xcf, 0x14, 0x5d, 0x5e, - 0x58, 0x44, 0x82, 0xe3, 0x21, 0x2a, 0x32, 0x6e, 0xf3, 0x88, 0x55, 0x73, 0x92, 0xa6, 0xf3, 0x3c, - 0x1a, 0x09, 0x65, 0x7d, 0xae, 0x88, 0x8a, 0xb1, 0x4d, 0x14, 0x45, 0xe3, 0x6d, 0x0e, 0xed, 0xa8, - 0xc8, 0x4e, 0xe0, 0xf7, 0x3d, 0x01, 0x81, 0x0f, 0x50, 0x9e, 0x5f, 0x85, 0x20, 0x8b, 0x57, 0xb6, - 0xbe, 0x99, 0x6b, 0x3c, 0xbf, 0x0a, 0xe1, 0x7e, 0x5a, 0xff, 0xf2, 0x61, 0xbc, 0xf0, 0x13, 0x99, - 0x81, 0x7f, 0x4f, 0xb4, 0x67, 0x65, 0xee, 0x2f, 0x69, 0xda, 0xfb, 0x69, 0x7d, 0xe3, 0xe0, 0x18, - 0x09, 0x66, 0x5a, 0x26, 0xbe, 0x44, 0x95, 0x91, 0xcd, 0xf8, 0x6f, 0x34, 0xe8, 0xc1, 0xb9, 0x37, - 0x06, 0x55, 0x9a, 0xef, 0x36, 0xf4, 0x75, 0x69, 0x7a, 0x0d, 0x91, 0x62, 0x7d, 0xa5, 0xb4, 0x54, - 0xba, 0xcb, 0x48, 0x24, 0x0d, 0x8c, 0xff, 0x41, 0x58, 0x38, 0xce, 0xa9, 0xed, 0xb3, 0xf8, 0x75, - 0x82, 0x2e, 0xff, 0xe9, 0x74, 0x35, 0x45, 0x87, 0xbb, 0x2b, 0x70, 0xe4, 0x11, 0x0a, 0xfc, 0x2d, - 0x2a, 0x52, 0xb0, 0x59, 0xe0, 0x57, 0x0b, 0xb2, 0x74, 0x49, 0xc7, 0x88, 0xf4, 0x12, 0xf5, 0x17, - 0xef, 0xa1, 0xd2, 0x18, 0x18, 0xb3, 0x5d, 0xa8, 0x16, 0x65, 0xe0, 0x17, 0x2a, 0xb0, 0x74, 0x12, - 0xbb, 0xc9, 0xfc, 0x7f, 0xe3, 0x56, 0x43, 0xdb, 0xaa, 0x59, 0x5d, 0x8f, 0x71, 0xfc, 0xe7, 0xca, - 0x62, 0x98, 0x1f, 0xf9, 0x22, 0x91, 0x2e, 0xf7, 0x63, 0x47, 0x91, 0x6d, 0xcd, 0x3d, 0x4b, 0xdb, - 0xd1, 0x43, 0x05, 0x8f, 0xc3, 0x58, 0xf4, 0x3e, 0xd7, 0xdc, 0x6e, 0xff, 0xfc, 0xac, 0xb9, 0xb5, - 0x2a, 0x8a, 0xa9, 0x70, 0x2c, 0x30, 0x49, 0x0c, 0xdd, 0x78, 0x91, 0x4d, 0x9e, 0x24, 0x56, 0x06, - 0xbf, 0xd4, 0x50, 0x8d, 0x01, 0x9d, 0x00, 0x3d, 0xec, 0xf7, 0x29, 0x30, 0x66, 0x5d, 0x75, 0x46, - 0x1e, 0xf8, 0xbc, 0x73, 0x7c, 0x44, 0x58, 0x55, 0x93, 0x4a, 0x4e, 0x9f, 0xa6, 0xe4, 0x6c, 0x1d, - 0xae, 0xd5, 0x50, 0xda, 0x6a, 0x6b, 0x43, 0x18, 0xd9, 0x20, 0x0b, 0xff, 0x85, 0xca, 0x0c, 0x1c, - 0x0a, 0x9c, 0xc0, 0x40, 0x1d, 0x93, 0xf6, 0xe6, 0x13, 0xd5, 0x0d, 0x1c, 0x7b, 0x14, 0xdf, 0x24, - 0x02, 0x03, 0xa0, 0xe0, 0x3b, 0x60, 0x55, 0x66, 0xd3, 0x7a, 0xf9, 0x6c, 0x0e, 0x44, 0x16, 0x98, - 0x8d, 0xd7, 0x1a, 0xaa, 0xa4, 0x0e, 0x00, 0xbe, 0x46, 0xc8, 0x99, 0x2f, 0xd7, 0xbc, 0x2e, 0xbf, - 0x3e, 0xab, 0x43, 0xc9, 0xae, 0x2e, 0x8e, 0x66, 0xe2, 0x62, 0x64, 0x89, 0x0d, 0xd7, 0x51, 0xe1, - 0x3a, 0xf0, 0x81, 0x55, 0x0b, 0xbb, 0xb9, 0x66, 0xd9, 0x2a, 0x8b, 0xae, 0x5e, 0x08, 0x07, 0x89, - 0xfd, 0xf1, 0xec, 0xbb, 0x5e, 0xe0, 0xab, 0x91, 0x5e, 0x9a, 0x7d, 0xe1, 0x25, 0xea, 0x6f, 0xe3, - 0x3f, 0x0d, 0x7d, 0xbd, 0xb6, 0xe4, 0xb8, 0x8d, 0x90, 0x93, 0x58, 0xea, 0x78, 0x2d, 0xa4, 0x25, - 0x7f, 0xc8, 0x52, 0x14, 0xfe, 0x09, 0x55, 0x52, 0x7d, 0x52, 0x77, 0x2b, 0xb9, 0x15, 0x29, 0x36, - 0x92, 0x8e, 0xb5, 0xf6, 0x6e, 0xee, 0xf4, 0xcc, 0xed, 0x9d, 0x9e, 0x79, 0x73, 0xa7, 0x67, 0xfe, - 0x9d, 0xe9, 0xda, 0xcd, 0x4c, 0xd7, 0x6e, 0x67, 0xba, 0xf6, 0x6e, 0xa6, 0x6b, 0xff, 0xbf, 0xd7, - 0x33, 0x17, 0x25, 0x55, 0xb3, 0x0f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x48, 0x5d, 0x6b, 0x0c, 0x46, - 0x08, 0x00, 0x00, + // 793 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x54, 0xdd, 0x6a, 0x03, 0x45, + 0x14, 0xce, 0xe6, 0xb7, 0x99, 0x1a, 0x2d, 0x83, 0x42, 0xcc, 0xc5, 0xa6, 0x04, 0x91, 0x14, 0xed, + 0x2e, 0x09, 0x15, 0x0a, 0xa2, 0xd0, 0x4d, 0x11, 0x0a, 0x29, 0x95, 0x69, 0x11, 0x29, 0x88, 0x6c, + 0x36, 0x27, 0xdb, 0x35, 0xc9, 0xee, 0x32, 0x33, 0x1b, 0x69, 0xaf, 0x7c, 0x00, 0x2f, 0x7c, 0x08, + 0xdf, 0x40, 0x7c, 0x87, 0x5e, 0xf6, 0xc2, 0x0b, 0xf1, 0x22, 0xd8, 0xf8, 0x16, 0xbd, 0x92, 0x99, + 0x9d, 0x6c, 0xb2, 0xdd, 0x26, 0x68, 0x7b, 0xb7, 0xe7, 0xec, 0x39, 0xdf, 0xf7, 0xcd, 0xf9, 0x43, + 0xa7, 0xe3, 0x63, 0x66, 0x78, 0x81, 0x39, 0x8e, 0x06, 0x40, 0x7d, 0xe0, 0xc0, 0xcc, 0x11, 0x0c, + 0x81, 0xda, 0xdc, 0x0b, 0x7c, 0xd3, 0x0e, 0xbd, 0x94, 0x3d, 0xeb, 0x0c, 0x80, 0xdb, 0x1d, 0xd3, + 0x05, 0x5f, 0xb8, 0x60, 0x68, 0x84, 0x34, 0xe0, 0x01, 0x3e, 0x8a, 0x51, 0x8c, 0x15, 0x8a, 0xb1, + 0xca, 0x32, 0x04, 0xca, 0xba, 0xad, 0x50, 0x1a, 0x87, 0xae, 0xc7, 0x6f, 0xa2, 0x81, 0xe1, 0x04, + 0x53, 0xd3, 0x0d, 0xdc, 0xc0, 0x94, 0x60, 0x83, 0x68, 0x24, 0x2d, 0x69, 0xc8, 0xaf, 0x98, 0xa4, + 0xd1, 0xcd, 0x4a, 0x0d, 0xc7, 0xae, 0xd0, 0x68, 0x52, 0x60, 0x41, 0x44, 0x1d, 0x78, 0x2e, 0xac, + 0xf1, 0xd9, 0xe6, 0x9c, 0xc8, 0x9f, 0x01, 0x65, 0x5e, 0xe0, 0xc3, 0x30, 0x93, 0xf6, 0xe9, 0xe6, + 0xb4, 0x59, 0xe6, 0xf5, 0x8d, 0xc3, 0x97, 0xa3, 0x69, 0xe4, 0x73, 0x6f, 0x9a, 0xd5, 0x74, 0xb4, + 0x3d, 0x9c, 0x39, 0x37, 0x30, 0xb5, 0x33, 0x59, 0x9d, 0x97, 0xb3, 0x22, 0xee, 0x4d, 0x4c, 0xcf, + 0xe7, 0x8c, 0xd3, 0xe7, 0x29, 0xad, 0xdf, 0xf3, 0xa8, 0xd2, 0x9b, 0x44, 0x8c, 0x03, 0xc5, 0xdf, + 0xa2, 0x9d, 0x29, 0x70, 0x7b, 0x68, 0x73, 0xbb, 0xae, 0xed, 0x6b, 0xed, 0xdd, 0x6e, 0xdb, 0xc8, + 0x36, 0x2d, 0x1c, 0xbb, 0xa2, 0x5b, 0xc6, 0xac, 0x63, 0x5c, 0x0c, 0x7e, 0x00, 0x87, 0x9f, 0x03, + 0xb7, 0x2d, 0x7c, 0x3f, 0x6f, 0xe6, 0x16, 0xf3, 0x26, 0x5a, 0xf9, 0x48, 0x82, 0x86, 0x1d, 0x54, + 0x64, 0x21, 0x38, 0xf5, 0xbc, 0x44, 0x3d, 0x31, 0x5e, 0x33, 0x0a, 0x86, 0x92, 0x79, 0x19, 0x82, + 0x63, 0xbd, 0xa3, 0xe8, 0x8a, 0xc2, 0x22, 0x12, 0x1c, 0x8f, 0x51, 0x99, 0x71, 0x9b, 0x47, 0xac, + 0x5e, 0x90, 0x34, 0xbd, 0xb7, 0xd1, 0x48, 0x28, 0xeb, 0x5d, 0x45, 0x54, 0x8e, 0x6d, 0xa2, 0x28, + 0x5a, 0x7f, 0x15, 0xd0, 0x9e, 0x8a, 0xec, 0x05, 0xfe, 0xd0, 0x13, 0x10, 0xf8, 0x18, 0x15, 0xf9, + 0x6d, 0x08, 0xb2, 0x78, 0x55, 0xeb, 0xa3, 0xa5, 0xc6, 0xab, 0xdb, 0x10, 0x9e, 0xe6, 0xcd, 0xf7, + 0x9f, 0xc7, 0x0b, 0x3f, 0x91, 0x19, 0xf8, 0x9b, 0x44, 0x7b, 0x5e, 0xe6, 0x7e, 0x99, 0xa6, 0x7d, + 0x9a, 0x37, 0xb7, 0x8e, 0x9b, 0x91, 0x60, 0xa6, 0x65, 0xe2, 0x1b, 0x54, 0x9b, 0xd8, 0x8c, 0x7f, + 0x4d, 0x83, 0x01, 0x5c, 0x79, 0x53, 0x50, 0xa5, 0xf9, 0x64, 0x4b, 0x5f, 0xd7, 0x66, 0xde, 0x10, + 0x29, 0xd6, 0x07, 0x4a, 0x4b, 0xad, 0xbf, 0x8e, 0x44, 0xd2, 0xc0, 0xf8, 0x47, 0x84, 0x85, 0xe3, + 0x8a, 0xda, 0x3e, 0x8b, 0x5f, 0x27, 0xe8, 0x8a, 0xff, 0x9f, 0xae, 0xa1, 0xe8, 0x70, 0x3f, 0x03, + 0x47, 0x5e, 0xa0, 0xc0, 0x1f, 0xa3, 0x32, 0x05, 0x9b, 0x05, 0x7e, 0xbd, 0x24, 0x4b, 0x97, 0x74, + 0x8c, 0x48, 0x2f, 0x51, 0x7f, 0xf1, 0x01, 0xaa, 0x4c, 0x81, 0x31, 0xdb, 0x85, 0x7a, 0x59, 0x06, + 0xbe, 0xa7, 0x02, 0x2b, 0xe7, 0xb1, 0x9b, 0x2c, 0xff, 0xb7, 0x1e, 0x34, 0xb4, 0xab, 0x9a, 0xd5, + 0xf7, 0x18, 0xc7, 0xdf, 0x65, 0x16, 0xc3, 0xfc, 0x8f, 0x2f, 0x12, 0xe9, 0x72, 0x3f, 0xf6, 0x14, + 0xd9, 0xce, 0xd2, 0xb3, 0xb6, 0x1d, 0x03, 0x54, 0xf2, 0x38, 0x4c, 0x45, 0xef, 0x0b, 0xed, 0xdd, + 0xee, 0x17, 0x6f, 0x9a, 0x5b, 0xab, 0xa6, 0x98, 0x4a, 0x67, 0x02, 0x93, 0xc4, 0xd0, 0xad, 0x5f, + 0xf3, 0xc9, 0x93, 0xc4, 0xca, 0xe0, 0xdf, 0x34, 0xd4, 0x60, 0x40, 0x67, 0x40, 0x4f, 0x86, 0x43, + 0x0a, 0x8c, 0x59, 0xb7, 0xbd, 0x89, 0x07, 0x3e, 0xef, 0x9d, 0x9d, 0x12, 0x56, 0xd7, 0xa4, 0x92, + 0x8b, 0xd7, 0x29, 0xb9, 0xdc, 0x84, 0x6b, 0xb5, 0x94, 0xb6, 0xc6, 0xc6, 0x10, 0x46, 0xb6, 0xc8, + 0xc2, 0xdf, 0xa3, 0x2a, 0x03, 0x87, 0x02, 0x27, 0x30, 0x52, 0xc7, 0xa4, 0xbb, 0xfd, 0x44, 0xf5, + 0x03, 0xc7, 0x9e, 0xc4, 0x37, 0x89, 0xc0, 0x08, 0x28, 0xf8, 0x0e, 0x58, 0xb5, 0xc5, 0xbc, 0x59, + 0xbd, 0x5c, 0x02, 0x91, 0x15, 0x66, 0xeb, 0x0f, 0x0d, 0xd5, 0x52, 0x07, 0x00, 0xdf, 0x21, 0xe4, + 0x2c, 0x97, 0x6b, 0x59, 0x97, 0xaf, 0xde, 0xd4, 0xa1, 0x64, 0x57, 0x57, 0x47, 0x33, 0x71, 0x31, + 0xb2, 0xc6, 0x86, 0x9b, 0xa8, 0x74, 0x17, 0xf8, 0xc0, 0xea, 0xa5, 0xfd, 0x42, 0xbb, 0x6a, 0x55, + 0x45, 0x57, 0xaf, 0x85, 0x83, 0xc4, 0xfe, 0x78, 0xf6, 0x5d, 0x2f, 0xf0, 0xd5, 0x48, 0xaf, 0xcd, + 0xbe, 0xf0, 0x12, 0xf5, 0xb7, 0xf5, 0xb3, 0x86, 0x3e, 0xdc, 0x58, 0x72, 0xdc, 0x45, 0xc8, 0x49, + 0x2c, 0x75, 0xbc, 0x56, 0xd2, 0x92, 0x3f, 0x64, 0x2d, 0x0a, 0x7f, 0x8e, 0x6a, 0xa9, 0x3e, 0xa9, + 0xbb, 0x95, 0xdc, 0x8a, 0x14, 0x1b, 0x49, 0xc7, 0x5a, 0x07, 0xf7, 0x8f, 0x7a, 0xee, 0xe1, 0x51, + 0xcf, 0xfd, 0xf9, 0xa8, 0xe7, 0x7e, 0x5a, 0xe8, 0xda, 0xfd, 0x42, 0xd7, 0x1e, 0x16, 0xba, 0xf6, + 0xf7, 0x42, 0xd7, 0x7e, 0xf9, 0x47, 0xcf, 0x5d, 0x57, 0x54, 0xcd, 0xfe, 0x0d, 0x00, 0x00, 0xff, + 0xff, 0x4b, 0x32, 0xe4, 0xec, 0x7c, 0x08, 0x00, 0x00, } diff --git a/pkg/federation/apis/federation/v1beta1/generated.proto b/pkg/federation/apis/federation/v1beta1/generated.proto index 9ad46d69..db890906 100644 --- a/pkg/federation/apis/federation/v1beta1/generated.proto +++ b/pkg/federation/apis/federation/v1beta1/generated.proto @@ -25,6 +25,7 @@ import "k8s.io/kubernetes/pkg/api/resource/generated.proto"; import "k8s.io/kubernetes/pkg/api/unversioned/generated.proto"; import "k8s.io/kubernetes/pkg/api/v1/generated.proto"; import "k8s.io/kubernetes/pkg/runtime/generated.proto"; +import "k8s.io/kubernetes/pkg/runtime/schema/generated.proto"; import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; // Package-wide variables from generator "generated". diff --git a/pkg/federation/apis/federation/v1beta1/register.go b/pkg/federation/apis/federation/v1beta1/register.go index 669b5625..b67a3425 100644 --- a/pkg/federation/apis/federation/v1beta1/register.go +++ b/pkg/federation/apis/federation/v1beta1/register.go @@ -17,9 +17,9 @@ limitations under the License. package v1beta1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" versionedwatch "k8s.io/client-go/pkg/watch/versioned" ) @@ -27,7 +27,7 @@ import ( const GroupName = "federation" // SchemeGroupVersion is group version used to register these objects -var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1beta1"} +var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1beta1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs, addConversionFuncs) @@ -46,5 +46,5 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *Cluster) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } -func (obj *ClusterList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *Cluster) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } +func (obj *ClusterList) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } diff --git a/pkg/kubelet/qos/policy.go b/pkg/kubelet/qos/policy.go index 304be9df..8f953edf 100644 --- a/pkg/kubelet/qos/policy.go +++ b/pkg/kubelet/qos/policy.go @@ -16,9 +16,7 @@ limitations under the License. package qos -import ( - "k8s.io/client-go/pkg/api" -) +import "k8s.io/client-go/pkg/api/v1" const ( // PodInfraOOMAdj is very docker specific. For arbitrary runtime, it may not make @@ -39,7 +37,7 @@ const ( // multiplied by 10 (barring exceptional cases) + a configurable quantity which is between -1000 // and 1000. Containers with higher OOM scores are killed if the system runs out of memory. // See https://lwn.net/Articles/391222/ for more information. -func GetContainerOOMScoreAdjust(pod *api.Pod, container *api.Container, memoryCapacity int64) int { +func GetContainerOOMScoreAdjust(pod *v1.Pod, container *v1.Container, memoryCapacity int64) int { switch GetPodQOS(pod) { case Guaranteed: // Guaranteed containers should be the last to get killed. diff --git a/pkg/kubelet/qos/qos.go b/pkg/kubelet/qos/qos.go index 0c408483..1829fc47 100644 --- a/pkg/kubelet/qos/qos.go +++ b/pkg/kubelet/qos/qos.go @@ -19,11 +19,12 @@ package qos import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/resource" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/util/sets" ) // isResourceGuaranteed returns true if the container's resource requirements are Guaranteed. -func isResourceGuaranteed(container *api.Container, resource api.ResourceName) bool { +func isResourceGuaranteed(container *v1.Container, resource v1.ResourceName) bool { // A container resource is guaranteed if its request == limit. // If request == limit, the user is very confident of resource consumption. req, hasReq := container.Resources.Requests[resource] @@ -35,7 +36,7 @@ func isResourceGuaranteed(container *api.Container, resource api.ResourceName) b } // isResourceBestEffort returns true if the container's resource requirements are best-effort. -func isResourceBestEffort(container *api.Container, resource api.ResourceName) bool { +func isResourceBestEffort(container *v1.Container, resource v1.ResourceName) bool { // A container resource is best-effort if its request is unspecified or 0. // If a request is specified, then the user expects some kind of resource guarantee. req, hasReq := container.Resources.Requests[resource] @@ -46,9 +47,9 @@ func isResourceBestEffort(container *api.Container, resource api.ResourceName) b // A pod is besteffort if none of its containers have specified any requests or limits. // A pod is guaranteed only when requests and limits are specified for all the containers and they are equal. // A pod is burstable if limits and requests do not match across all containers. -func GetPodQOS(pod *api.Pod) QOSClass { - requests := api.ResourceList{} - limits := api.ResourceList{} +func GetPodQOS(pod *v1.Pod) QOSClass { + requests := v1.ResourceList{} + limits := v1.ResourceList{} zeroQuantity := resource.MustParse("0") isGuaranteed := true for _, container := range pod.Spec.Containers { @@ -108,11 +109,78 @@ func GetPodQOS(pod *api.Pod) QOSClass { return Burstable } +// InternalGetPodQOS returns the QoS class of a pod. +// A pod is besteffort if none of its containers have specified any requests or limits. +// A pod is guaranteed only when requests and limits are specified for all the containers and they are equal. +// A pod is burstable if limits and requests do not match across all containers. +func InternalGetPodQOS(pod *api.Pod) QOSClass { + requests := api.ResourceList{} + limits := api.ResourceList{} + zeroQuantity := resource.MustParse("0") + isGuaranteed := true + var supportedQoSComputeResources = sets.NewString(string(api.ResourceCPU), string(api.ResourceMemory)) + for _, container := range pod.Spec.Containers { + // process requests + for name, quantity := range container.Resources.Requests { + if !supportedQoSComputeResources.Has(string(name)) { + continue + } + if quantity.Cmp(zeroQuantity) == 1 { + delta := quantity.Copy() + if _, exists := requests[name]; !exists { + requests[name] = *delta + } else { + delta.Add(requests[name]) + requests[name] = *delta + } + } + } + // process limits + qosLimitsFound := sets.NewString() + for name, quantity := range container.Resources.Limits { + if !supportedQoSComputeResources.Has(string(name)) { + continue + } + if quantity.Cmp(zeroQuantity) == 1 { + qosLimitsFound.Insert(string(name)) + delta := quantity.Copy() + if _, exists := limits[name]; !exists { + limits[name] = *delta + } else { + delta.Add(limits[name]) + limits[name] = *delta + } + } + } + + if len(qosLimitsFound) != len(supportedQoSComputeResources) { + isGuaranteed = false + } + } + if len(requests) == 0 && len(limits) == 0 { + return BestEffort + } + // Check is requests match limits for all resources. + if isGuaranteed { + for name, req := range requests { + if lim, exists := limits[name]; !exists || lim.Cmp(req) != 0 { + isGuaranteed = false + break + } + } + } + if isGuaranteed && + len(requests) == len(limits) { + return Guaranteed + } + return Burstable +} + // QOSList is a set of (resource name, QoS class) pairs. -type QOSList map[api.ResourceName]QOSClass +type QOSList map[v1.ResourceName]QOSClass // GetQOS returns a mapping of resource name to QoS class of a container -func GetQOS(container *api.Container) QOSList { +func GetQOS(container *v1.Container) QOSList { resourceToQOS := QOSList{} for resource := range allResources(container) { switch { @@ -128,13 +196,13 @@ func GetQOS(container *api.Container) QOSList { } // supportedComputeResources is the list of compute resources for with QoS is supported. -var supportedQoSComputeResources = sets.NewString(string(api.ResourceCPU), string(api.ResourceMemory)) +var supportedQoSComputeResources = sets.NewString(string(v1.ResourceCPU), string(v1.ResourceMemory)) // allResources returns a set of all possible resources whose mapped key value is true if present on the container -func allResources(container *api.Container) map[api.ResourceName]bool { - resources := map[api.ResourceName]bool{} +func allResources(container *v1.Container) map[v1.ResourceName]bool { + resources := map[v1.ResourceName]bool{} for _, resource := range supportedQoSComputeResources.List() { - resources[api.ResourceName(resource)] = false + resources[v1.ResourceName(resource)] = false } for resource := range container.Resources.Requests { resources[resource] = true diff --git a/pkg/kubelet/types/pod_update.go b/pkg/kubelet/types/pod_update.go index fb7ac4c9..ca276ebb 100644 --- a/pkg/kubelet/types/pod_update.go +++ b/pkg/kubelet/types/pod_update.go @@ -19,7 +19,7 @@ package types import ( "fmt" - "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" ) const ConfigSourceAnnotationKey = "kubernetes.io/config.source" @@ -55,7 +55,7 @@ const ( // Updates from all sources AllSource = "*" - NamespaceDefault = api.NamespaceDefault + NamespaceDefault = v1.NamespaceDefault ) // PodUpdate defines an operation sent on the channel. You can add or remove single services by @@ -68,7 +68,7 @@ const ( // functionally similar, this helps our unit tests properly check that the correct PodUpdates // are generated. type PodUpdate struct { - Pods []*api.Pod + Pods []*v1.Pod Op PodOperation Source string } @@ -93,7 +93,7 @@ func GetValidatedSources(sources []string) ([]string, error) { } // GetPodSource returns the source of the pod based on the annotation. -func GetPodSource(pod *api.Pod) (string, error) { +func GetPodSource(pod *v1.Pod) (string, error) { if pod.Annotations != nil { if source, ok := pod.Annotations[ConfigSourceAnnotationKey]; ok { return source, nil diff --git a/pkg/kubelet/types/types.go b/pkg/kubelet/types/types.go index 7009cea2..84007a2a 100644 --- a/pkg/kubelet/types/types.go +++ b/pkg/kubelet/types/types.go @@ -20,7 +20,7 @@ import ( "net/http" "time" - "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" ) // TODO: Reconcile custom types in kubelet/types and this subpackage @@ -59,7 +59,7 @@ func (t *Timestamp) GetString() string { } // A type to help sort container statuses based on container names. -type SortedContainerStatuses []api.ContainerStatus +type SortedContainerStatuses []v1.ContainerStatus func (s SortedContainerStatuses) Len() int { return len(s) } func (s SortedContainerStatuses) Swap(i, j int) { s[i], s[j] = s[j], s[i] } @@ -70,7 +70,7 @@ func (s SortedContainerStatuses) Less(i, j int) bool { // SortInitContainerStatuses ensures that statuses are in the order that their // init container appears in the pod spec -func SortInitContainerStatuses(p *api.Pod, statuses []api.ContainerStatus) { +func SortInitContainerStatuses(p *v1.Pod, statuses []v1.ContainerStatus) { containers := p.Spec.InitContainers current := 0 for _, container := range containers { @@ -87,7 +87,7 @@ func SortInitContainerStatuses(p *api.Pod, statuses []api.ContainerStatus) { // Reservation represents reserved resources for non-pod components. type Reservation struct { // System represents resources reserved for non-kubernetes components. - System api.ResourceList + System v1.ResourceList // Kubernetes represents resources reserved for kubernetes system components. - Kubernetes api.ResourceList + Kubernetes v1.ResourceList } diff --git a/pkg/runtime/codec.go b/pkg/runtime/codec.go index 070738cd..36df7332 100644 --- a/pkg/runtime/codec.go +++ b/pkg/runtime/codec.go @@ -24,8 +24,8 @@ import ( "net/url" "reflect" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/conversion/queryparams" + "k8s.io/client-go/pkg/runtime/schema" ) // codec binds an encoder and decoder. @@ -85,7 +85,7 @@ type DefaultingSerializer struct { } // Decode performs a decode and then allows the defaulter to act on the provided object. -func (d DefaultingSerializer) Decode(data []byte, defaultGVK *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) { +func (d DefaultingSerializer) Decode(data []byte, defaultGVK *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { obj, gvk, err := d.Decoder.Decode(data, defaultGVK, into) if err != nil { return obj, gvk, err @@ -96,7 +96,7 @@ func (d DefaultingSerializer) Decode(data []byte, defaultGVK *unversioned.GroupV // UseOrCreateObject returns obj if the canonical ObjectKind returned by the provided typer matches gvk, or // invokes the ObjectCreator to instantiate a new gvk. Returns an error if the typer cannot find the object. -func UseOrCreateObject(t ObjectTyper, c ObjectCreater, gvk unversioned.GroupVersionKind, obj Object) (Object, error) { +func UseOrCreateObject(t ObjectTyper, c ObjectCreater, gvk schema.GroupVersionKind, obj Object) (Object, error) { if obj != nil { kinds, _, err := t.ObjectKinds(obj) if err != nil { @@ -129,7 +129,7 @@ type NoopDecoder struct { var _ Serializer = NoopDecoder{} -func (n NoopDecoder) Decode(data []byte, gvk *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) { +func (n NoopDecoder) Decode(data []byte, gvk *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { return nil, nil, fmt.Errorf("decoding is not allowed for this codec: %v", reflect.TypeOf(n.Encoder)) } @@ -153,7 +153,7 @@ var _ ParameterCodec = ¶meterCodec{} // DecodeParameters converts the provided url.Values into an object of type From with the kind of into, and then // converts that object to into (if necessary). Returns an error if the operation cannot be completed. -func (c *parameterCodec) DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into Object) error { +func (c *parameterCodec) DecodeParameters(parameters url.Values, from schema.GroupVersion, into Object) error { if len(parameters) == 0 { return nil } @@ -177,7 +177,7 @@ func (c *parameterCodec) DecodeParameters(parameters url.Values, from unversione // EncodeParameters converts the provided object into the to version, then converts that object to url.Values. // Returns an error if conversion is not possible. -func (c *parameterCodec) EncodeParameters(obj Object, to unversioned.GroupVersion) (url.Values, error) { +func (c *parameterCodec) EncodeParameters(obj Object, to schema.GroupVersion) (url.Values, error) { gvks, _, err := c.typer.ObjectKinds(obj) if err != nil { return nil, err @@ -208,7 +208,7 @@ func (s base64Serializer) Encode(obj Object, stream io.Writer) error { return err } -func (s base64Serializer) Decode(data []byte, defaults *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) { +func (s base64Serializer) Decode(data []byte, defaults *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) { out := make([]byte, base64.StdEncoding.DecodedLen(len(data))) n, err := base64.StdEncoding.Decode(out, data) if err != nil { @@ -243,30 +243,30 @@ var ( type internalGroupVersioner struct{} // KindForGroupVersionKinds returns an internal Kind if one is found, or converts the first provided kind to the internal version. -func (internalGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { +func (internalGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { for _, kind := range kinds { if kind.Version == APIVersionInternal { return kind, true } } for _, kind := range kinds { - return unversioned.GroupVersionKind{Group: kind.Group, Version: APIVersionInternal, Kind: kind.Kind}, true + return schema.GroupVersionKind{Group: kind.Group, Version: APIVersionInternal, Kind: kind.Kind}, true } - return unversioned.GroupVersionKind{}, false + return schema.GroupVersionKind{}, false } type disabledGroupVersioner struct{} // KindForGroupVersionKinds returns false for any input. -func (disabledGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { - return unversioned.GroupVersionKind{}, false +func (disabledGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { + return schema.GroupVersionKind{}, false } // GroupVersioners implements GroupVersioner and resolves to the first exact match for any kind. type GroupVersioners []GroupVersioner // KindForGroupVersionKinds returns the first match of any of the group versioners, or false if no match occured. -func (gvs GroupVersioners) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { +func (gvs GroupVersioners) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { for _, gv := range gvs { target, ok := gv.KindForGroupVersionKinds(kinds) if !ok { @@ -274,22 +274,22 @@ func (gvs GroupVersioners) KindForGroupVersionKinds(kinds []unversioned.GroupVer } return target, true } - return unversioned.GroupVersionKind{}, false + return schema.GroupVersionKind{}, false } -// Assert that unversioned.GroupVersion and GroupVersions implement GroupVersioner -var _ GroupVersioner = unversioned.GroupVersion{} -var _ GroupVersioner = unversioned.GroupVersions{} +// Assert that schema.GroupVersion and GroupVersions implement GroupVersioner +var _ GroupVersioner = schema.GroupVersion{} +var _ GroupVersioner = schema.GroupVersions{} var _ GroupVersioner = multiGroupVersioner{} type multiGroupVersioner struct { - target unversioned.GroupVersion - acceptedGroupKinds []unversioned.GroupKind + target schema.GroupVersion + acceptedGroupKinds []schema.GroupKind } // NewMultiGroupVersioner returns the provided group version for any kind that matches one of the provided group kinds. // Kind may be empty in the provided group kind, in which case any kind will match. -func NewMultiGroupVersioner(gv unversioned.GroupVersion, groupKinds ...unversioned.GroupKind) GroupVersioner { +func NewMultiGroupVersioner(gv schema.GroupVersion, groupKinds ...schema.GroupKind) GroupVersioner { if len(groupKinds) == 0 || (len(groupKinds) == 1 && groupKinds[0].Group == gv.Group) { return gv } @@ -298,7 +298,7 @@ func NewMultiGroupVersioner(gv unversioned.GroupVersion, groupKinds ...unversion // KindForGroupVersionKinds returns the target group version if any kind matches any of the original group kinds. It will // use the originating kind where possible. -func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (unversioned.GroupVersionKind, bool) { +func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (schema.GroupVersionKind, bool) { for _, src := range kinds { for _, kind := range v.acceptedGroupKinds { if kind.Group != src.Group { @@ -310,5 +310,5 @@ func (v multiGroupVersioner) KindForGroupVersionKinds(kinds []unversioned.GroupV return v.target.WithKind(src.Kind), true } } - return unversioned.GroupVersionKind{}, false + return schema.GroupVersionKind{}, false } diff --git a/pkg/runtime/codec_check.go b/pkg/runtime/codec_check.go index 9a52ad2e..2920113f 100644 --- a/pkg/runtime/codec_check.go +++ b/pkg/runtime/codec_check.go @@ -20,14 +20,14 @@ import ( "fmt" "reflect" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) // CheckCodec makes sure that the codec can encode objects like internalType, // decode all of the external types listed, and also decode them into the given // object. (Will modify internalObject.) (Assumes JSON serialization.) // TODO: verify that the correct external version is chosen on encode... -func CheckCodec(c Codec, internalType Object, externalTypes ...unversioned.GroupVersionKind) error { +func CheckCodec(c Codec, internalType Object, externalTypes ...schema.GroupVersionKind) error { _, err := Encode(c, internalType) if err != nil { return fmt.Errorf("Internal type not encodable: %v", err) diff --git a/pkg/runtime/embedded.go b/pkg/runtime/embedded.go index f914256b..2ad4afe6 100644 --- a/pkg/runtime/embedded.go +++ b/pkg/runtime/embedded.go @@ -19,21 +19,21 @@ package runtime import ( "errors" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/conversion" + "k8s.io/client-go/pkg/runtime/schema" ) type encodable struct { E Encoder `json:"-"` obj Object - versions []unversioned.GroupVersion + versions []schema.GroupVersion } -func (e encodable) GetObjectKind() unversioned.ObjectKind { return e.obj.GetObjectKind() } +func (e encodable) GetObjectKind() schema.ObjectKind { return e.obj.GetObjectKind() } // NewEncodable creates an object that will be encoded with the provided codec on demand. // Provided as a convenience for test cases dealing with internal objects. -func NewEncodable(e Encoder, obj Object, versions ...unversioned.GroupVersion) Object { +func NewEncodable(e Encoder, obj Object, versions ...schema.GroupVersion) Object { if _, ok := obj.(*Unknown); ok { return obj } @@ -52,7 +52,7 @@ func (re encodable) MarshalJSON() ([]byte, error) { // NewEncodableList creates an object that will be encoded with the provided codec on demand. // Provided as a convenience for test cases dealing with internal objects. -func NewEncodableList(e Encoder, objects []Object, versions ...unversioned.GroupVersion) []Object { +func NewEncodableList(e Encoder, objects []Object, versions ...schema.GroupVersion) []Object { out := make([]Object, len(objects)) for i := range objects { if _, ok := objects[i].(*Unknown); ok { diff --git a/pkg/runtime/error.go b/pkg/runtime/error.go index 086507c1..f414466e 100644 --- a/pkg/runtime/error.go +++ b/pkg/runtime/error.go @@ -20,16 +20,16 @@ import ( "fmt" "reflect" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) type notRegisteredErr struct { - gvk unversioned.GroupVersionKind + gvk schema.GroupVersionKind t reflect.Type } // NewNotRegisteredErr is exposed for testing. -func NewNotRegisteredErr(gvk unversioned.GroupVersionKind, t reflect.Type) error { +func NewNotRegisteredErr(gvk schema.GroupVersionKind, t reflect.Type) error { return ¬RegisteredErr{gvk: gvk, t: t} } diff --git a/pkg/runtime/helper.go b/pkg/runtime/helper.go index 3062109f..d0662b18 100644 --- a/pkg/runtime/helper.go +++ b/pkg/runtime/helper.go @@ -21,8 +21,8 @@ import ( "io" "reflect" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/conversion" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/errors" ) @@ -173,7 +173,7 @@ type MultiObjectTyper []ObjectTyper var _ ObjectTyper = MultiObjectTyper{} -func (m MultiObjectTyper) ObjectKinds(obj Object) (gvks []unversioned.GroupVersionKind, unversionedType bool, err error) { +func (m MultiObjectTyper) ObjectKinds(obj Object) (gvks []schema.GroupVersionKind, unversionedType bool, err error) { for _, t := range m { gvks, unversionedType, err = t.ObjectKinds(obj) if err == nil { @@ -183,7 +183,7 @@ func (m MultiObjectTyper) ObjectKinds(obj Object) (gvks []unversioned.GroupVersi return } -func (m MultiObjectTyper) Recognizes(gvk unversioned.GroupVersionKind) bool { +func (m MultiObjectTyper) Recognizes(gvk schema.GroupVersionKind) bool { for _, t := range m { if t.Recognizes(gvk) { return true diff --git a/pkg/runtime/interfaces.go b/pkg/runtime/interfaces.go index 0315cac5..d2cb38c7 100644 --- a/pkg/runtime/interfaces.go +++ b/pkg/runtime/interfaces.go @@ -20,7 +20,7 @@ import ( "io" "net/url" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) const ( @@ -36,7 +36,7 @@ type GroupVersioner interface { // target is known. In general, if the return target is not in the input list, the caller is expected to invoke // Scheme.New(target) and then perform a conversion between the current Go type and the destination Go type. // Sophisticated implementations may use additional information about the input kinds to pick a destination kind. - KindForGroupVersionKinds(kinds []unversioned.GroupVersionKind) (target unversioned.GroupVersionKind, ok bool) + KindForGroupVersionKinds(kinds []schema.GroupVersionKind) (target schema.GroupVersionKind, ok bool) } // Encoders write objects to a serialized form @@ -55,7 +55,7 @@ type Decoder interface { // guaranteed to be populated. The returned object is not guaranteed to match into. If defaults are // provided, they are applied to the data by default. If no defaults or partial defaults are provided, the // type of the into may be used to guide conversion decisions. - Decode(data []byte, defaults *unversioned.GroupVersionKind, into Object) (Object, *unversioned.GroupVersionKind, error) + Decode(data []byte, defaults *schema.GroupVersionKind, into Object) (Object, *schema.GroupVersionKind, error) } // Serializer is the core interface for transforming objects into a serialized format and back. @@ -76,9 +76,9 @@ type Codec Serializer type ParameterCodec interface { // DecodeParameters takes the given url.Values in the specified group version and decodes them // into the provided object, or returns an error. - DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into Object) error + DecodeParameters(parameters url.Values, from schema.GroupVersion, into Object) error // EncodeParameters encodes the provided object as query parameters or returns an error. - EncodeParameters(obj Object, to unversioned.GroupVersion) (url.Values, error) + EncodeParameters(obj Object, to schema.GroupVersion) (url.Values, error) } // Framer is a factory for creating readers and writers that obey a particular framing pattern. @@ -191,16 +191,16 @@ type ObjectTyper interface { // ObjectKinds returns the all possible group,version,kind of the provided object, true if // the object is unversioned, or an error if the object is not recognized // (IsNotRegisteredError will return true). - ObjectKinds(Object) ([]unversioned.GroupVersionKind, bool, error) + ObjectKinds(Object) ([]schema.GroupVersionKind, bool, error) // Recognizes returns true if the scheme is able to handle the provided version and kind, // or more precisely that the provided version is a possible conversion or decoding // target. - Recognizes(gvk unversioned.GroupVersionKind) bool + Recognizes(gvk schema.GroupVersionKind) bool } // ObjectCreater contains methods for instantiating an object by kind and version. type ObjectCreater interface { - New(kind unversioned.GroupVersionKind) (out Object, err error) + New(kind schema.GroupVersionKind) (out Object, err error) } // ObjectCopier duplicates an object. @@ -233,5 +233,5 @@ type SelfLinker interface { // serializers to set the kind, version, and group the object is represented as. An Object may choose // to return a no-op ObjectKindAccessor in cases where it is not expected to be serialized. type Object interface { - GetObjectKind() unversioned.ObjectKind + GetObjectKind() schema.ObjectKind } diff --git a/pkg/runtime/register.go b/pkg/runtime/register.go index 66f664fa..28791ec2 100644 --- a/pkg/runtime/register.go +++ b/pkg/runtime/register.go @@ -16,32 +16,30 @@ limitations under the License. package runtime -import ( - "k8s.io/client-go/pkg/api/unversioned" -) +import "k8s.io/client-go/pkg/runtime/schema" // SetGroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta -func (obj *TypeMeta) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (obj *TypeMeta) SetGroupVersionKind(gvk schema.GroupVersionKind) { obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() } // GroupVersionKind satisfies the ObjectKind interface for all objects that embed TypeMeta -func (obj *TypeMeta) GroupVersionKind() unversioned.GroupVersionKind { - return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +func (obj *TypeMeta) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } -func (obj *Unknown) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta } +func (obj *Unknown) GetObjectKind() schema.ObjectKind { return &obj.TypeMeta } -func (obj *Unstructured) GetObjectKind() unversioned.ObjectKind { return obj } -func (obj *UnstructuredList) GetObjectKind() unversioned.ObjectKind { return obj } +func (obj *Unstructured) GetObjectKind() schema.ObjectKind { return obj } +func (obj *UnstructuredList) GetObjectKind() schema.ObjectKind { return obj } // GetObjectKind implements Object for VersionedObjects, returning an empty ObjectKind // interface if no objects are provided, or the ObjectKind interface of the object in the // highest array position. -func (obj *VersionedObjects) GetObjectKind() unversioned.ObjectKind { +func (obj *VersionedObjects) GetObjectKind() schema.ObjectKind { last := obj.Last() if last == nil { - return unversioned.EmptyObjectKind + return schema.EmptyObjectKind } return last.GetObjectKind() } diff --git a/pkg/runtime/schema/generated.pb.go b/pkg/runtime/schema/generated.pb.go new file mode 100644 index 00000000..82c20997 --- /dev/null +++ b/pkg/runtime/schema/generated.pb.go @@ -0,0 +1,58 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +// Code generated by protoc-gen-gogo. +// source: k8s.io/kubernetes/pkg/runtime/schema/generated.proto +// DO NOT EDIT! + +/* + Package schema is a generated protocol buffer package. + + It is generated from these files: + k8s.io/kubernetes/pkg/runtime/schema/generated.proto + + It has these top-level messages: +*/ +package schema + +import proto "github.com/gogo/protobuf/proto" +import fmt "fmt" +import math "math" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +const _ = proto.GoGoProtoPackageIsVersion1 + +var fileDescriptorGenerated = []byte{ + // 183 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0xc9, 0xb6, 0x28, 0xd6, + 0xcb, 0xcc, 0xd7, 0xcf, 0x2e, 0x4d, 0x4a, 0x2d, 0xca, 0x4b, 0x2d, 0x49, 0x2d, 0xd6, 0x2f, 0xc8, + 0x4e, 0xd7, 0x2f, 0x2a, 0xcd, 0x2b, 0xc9, 0xcc, 0x4d, 0xd5, 0x2f, 0x4e, 0xce, 0x48, 0xcd, 0x4d, + 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0x4a, 0x2c, 0x49, 0x4d, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, + 0x17, 0x52, 0x81, 0xe8, 0xd2, 0x43, 0xe8, 0xd2, 0x2b, 0xc8, 0x4e, 0xd7, 0x83, 0xea, 0xd2, 0x83, + 0xe8, 0x92, 0xd2, 0x4d, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, + 0x4f, 0xcf, 0xd7, 0x07, 0x6b, 0x4e, 0x2a, 0x4d, 0x03, 0xf3, 0xc0, 0x1c, 0x30, 0x0b, 0x62, 0xa8, + 0x94, 0x21, 0x76, 0xa7, 0x94, 0x96, 0x64, 0xe6, 0xe8, 0x67, 0xe6, 0x95, 0x14, 0x97, 0x14, 0xa1, + 0xbb, 0xc3, 0x49, 0xe3, 0xc4, 0x43, 0x39, 0x86, 0x0b, 0x0f, 0xe5, 0x18, 0x6e, 0x3c, 0x94, 0x63, + 0x68, 0x78, 0x24, 0xc7, 0x78, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, 0xc9, + 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x10, 0xc5, 0x06, 0x71, 0x0b, 0x20, 0x00, 0x00, 0xff, 0xff, 0x8d, + 0x74, 0x75, 0xa7, 0xe8, 0x00, 0x00, 0x00, +} diff --git a/pkg/runtime/schema/generated.proto b/pkg/runtime/schema/generated.proto new file mode 100644 index 00000000..2630a82e --- /dev/null +++ b/pkg/runtime/schema/generated.proto @@ -0,0 +1,28 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + + +// This file was autogenerated by go-to-protobuf. Do not edit it manually! + +syntax = 'proto2'; + +package k8s.io.kubernetes.pkg.runtime.schema; + +import "k8s.io/kubernetes/pkg/util/intstr/generated.proto"; + +// Package-wide variables from generator "generated". +option go_package = "schema"; + diff --git a/pkg/runtime/schema/group_version.go b/pkg/runtime/schema/group_version.go new file mode 100644 index 00000000..1a9bba10 --- /dev/null +++ b/pkg/runtime/schema/group_version.go @@ -0,0 +1,277 @@ +/* +Copyright 2015 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schema + +import ( + "fmt" + "strings" +) + +// ParseResourceArg takes the common style of string which may be either `resource.group.com` or `resource.version.group.com` +// and parses it out into both possibilities. This code takes no responsibility for knowing which representation was intended +// but with a knowledge of all GroupVersions, calling code can take a very good guess. If there are only two segments, then +// `*GroupVersionResource` is nil. +// `resource.group.com` -> `group=com, version=group, resource=resource` and `group=group.com, resource=resource` +func ParseResourceArg(arg string) (*GroupVersionResource, GroupResource) { + var gvr *GroupVersionResource + if strings.Count(arg, ".") >= 2 { + s := strings.SplitN(arg, ".", 3) + gvr = &GroupVersionResource{Group: s[2], Version: s[1], Resource: s[0]} + } + + return gvr, ParseGroupResource(arg) +} + +// GroupResource specifies a Group and a Resource, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +type GroupResource struct { + Group string + Resource string +} + +func (gr GroupResource) WithVersion(version string) GroupVersionResource { + return GroupVersionResource{Group: gr.Group, Version: version, Resource: gr.Resource} +} + +func (gr GroupResource) Empty() bool { + return len(gr.Group) == 0 && len(gr.Resource) == 0 +} + +func (gr *GroupResource) String() string { + if len(gr.Group) == 0 { + return gr.Resource + } + return gr.Resource + "." + gr.Group +} + +// ParseGroupResource turns "resource.group" string into a GroupResource struct. Empty strings are allowed +// for each field. +func ParseGroupResource(gr string) GroupResource { + if i := strings.Index(gr, "."); i == -1 { + return GroupResource{Resource: gr} + } else { + return GroupResource{Group: gr[i+1:], Resource: gr[:i]} + } +} + +// GroupVersionResource unambiguously identifies a resource. It doesn't anonymously include GroupVersion +// to avoid automatic coercion. It doesn't use a GroupVersion to avoid custom marshalling +type GroupVersionResource struct { + Group string + Version string + Resource string +} + +func (gvr GroupVersionResource) Empty() bool { + return len(gvr.Group) == 0 && len(gvr.Version) == 0 && len(gvr.Resource) == 0 +} + +func (gvr GroupVersionResource) GroupResource() GroupResource { + return GroupResource{Group: gvr.Group, Resource: gvr.Resource} +} + +func (gvr GroupVersionResource) GroupVersion() GroupVersion { + return GroupVersion{Group: gvr.Group, Version: gvr.Version} +} + +func (gvr *GroupVersionResource) String() string { + return strings.Join([]string{gvr.Group, "/", gvr.Version, ", Resource=", gvr.Resource}, "") +} + +// GroupKind specifies a Group and a Kind, but does not force a version. This is useful for identifying +// concepts during lookup stages without having partially valid types +type GroupKind struct { + Group string + Kind string +} + +func (gk GroupKind) Empty() bool { + return len(gk.Group) == 0 && len(gk.Kind) == 0 +} + +func (gk GroupKind) WithVersion(version string) GroupVersionKind { + return GroupVersionKind{Group: gk.Group, Version: version, Kind: gk.Kind} +} + +func (gk *GroupKind) String() string { + if len(gk.Group) == 0 { + return gk.Kind + } + return gk.Kind + "." + gk.Group +} + +// GroupVersionKind unambiguously identifies a kind. It doesn't anonymously include GroupVersion +// to avoid automatic coercion. It doesn't use a GroupVersion to avoid custom marshalling +type GroupVersionKind struct { + Group string + Version string + Kind string +} + +// Empty returns true if group, version, and kind are empty +func (gvk GroupVersionKind) Empty() bool { + return len(gvk.Group) == 0 && len(gvk.Version) == 0 && len(gvk.Kind) == 0 +} + +func (gvk GroupVersionKind) GroupKind() GroupKind { + return GroupKind{Group: gvk.Group, Kind: gvk.Kind} +} + +func (gvk GroupVersionKind) GroupVersion() GroupVersion { + return GroupVersion{Group: gvk.Group, Version: gvk.Version} +} + +func (gvk GroupVersionKind) String() string { + return gvk.Group + "/" + gvk.Version + ", Kind=" + gvk.Kind +} + +// GroupVersion contains the "group" and the "version", which uniquely identifies the API. +type GroupVersion struct { + Group string + Version string +} + +// Empty returns true if group and version are empty +func (gv GroupVersion) Empty() bool { + return len(gv.Group) == 0 && len(gv.Version) == 0 +} + +// String puts "group" and "version" into a single "group/version" string. For the legacy v1 +// it returns "v1". +func (gv GroupVersion) String() string { + // special case the internal apiVersion for the legacy kube types + if gv.Empty() { + return "" + } + + // special case of "v1" for backward compatibility + if len(gv.Group) == 0 && gv.Version == "v1" { + return gv.Version + } + if len(gv.Group) > 0 { + return gv.Group + "/" + gv.Version + } + return gv.Version +} + +// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false +// if none of the options match the group. It prefers a match to group and version over just group. +// TODO: Move GroupVersion to a package under pkg/runtime, since it's used by scheme. +// TODO: Introduce an adapter type between GroupVersion and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) +// in fewer places. +func (gv GroupVersion) KindForGroupVersionKinds(kinds []GroupVersionKind) (target GroupVersionKind, ok bool) { + for _, gvk := range kinds { + if gvk.Group == gv.Group && gvk.Version == gv.Version { + return gvk, true + } + } + for _, gvk := range kinds { + if gvk.Group == gv.Group { + return gv.WithKind(gvk.Kind), true + } + } + return GroupVersionKind{}, false +} + +// ParseGroupVersion turns "group/version" string into a GroupVersion struct. It reports error +// if it cannot parse the string. +func ParseGroupVersion(gv string) (GroupVersion, error) { + // this can be the internal version for the legacy kube types + // TODO once we've cleared the last uses as strings, this special case should be removed. + if (len(gv) == 0) || (gv == "/") { + return GroupVersion{}, nil + } + + switch strings.Count(gv, "/") { + case 0: + return GroupVersion{"", gv}, nil + case 1: + i := strings.Index(gv, "/") + return GroupVersion{gv[:i], gv[i+1:]}, nil + default: + return GroupVersion{}, fmt.Errorf("unexpected GroupVersion string: %v", gv) + } +} + +// WithKind creates a GroupVersionKind based on the method receiver's GroupVersion and the passed Kind. +func (gv GroupVersion) WithKind(kind string) GroupVersionKind { + return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} +} + +// WithResource creates a GroupVersionResource based on the method receiver's GroupVersion and the passed Resource. +func (gv GroupVersion) WithResource(resource string) GroupVersionResource { + return GroupVersionResource{Group: gv.Group, Version: gv.Version, Resource: resource} +} + +// GroupVersions can be used to represent a set of desired group versions. +// TODO: Move GroupVersions to a package under pkg/runtime, since it's used by scheme. +// TODO: Introduce an adapter type between GroupVersions and runtime.GroupVersioner, and use LegacyCodec(GroupVersion) +// in fewer places. +type GroupVersions []GroupVersion + +// KindForGroupVersionKinds identifies the preferred GroupVersionKind out of a list. It returns ok false +// if none of the options match the group. +func (gvs GroupVersions) KindForGroupVersionKinds(kinds []GroupVersionKind) (GroupVersionKind, bool) { + var targets []GroupVersionKind + for _, gv := range gvs { + target, ok := gv.KindForGroupVersionKinds(kinds) + if !ok { + continue + } + targets = append(targets, target) + } + if len(targets) == 1 { + return targets[0], true + } + if len(targets) > 1 { + return bestMatch(kinds, targets), true + } + return GroupVersionKind{}, false +} + +// bestMatch tries to pick best matching GroupVersionKind and falls back to the first +// found if no exact match exists. +func bestMatch(kinds []GroupVersionKind, targets []GroupVersionKind) GroupVersionKind { + for _, gvk := range targets { + for _, k := range kinds { + if k == gvk { + return k + } + } + } + return targets[0] +} + +// ToAPIVersionAndKind is a convenience method for satisfying runtime.Object on types that +// do not use TypeMeta. +func (gvk *GroupVersionKind) ToAPIVersionAndKind() (string, string) { + if gvk == nil { + return "", "" + } + return gvk.GroupVersion().String(), gvk.Kind +} + +// FromAPIVersionAndKind returns a GVK representing the provided fields for types that +// do not use TypeMeta. This method exists to support test types and legacy serializations +// that have a distinct group and kind. +// TODO: further reduce usage of this method. +func FromAPIVersionAndKind(apiVersion, kind string) GroupVersionKind { + if gv, err := ParseGroupVersion(apiVersion); err == nil { + return GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: kind} + } + return GroupVersionKind{Kind: kind} +} diff --git a/pkg/runtime/schema/interfaces.go b/pkg/runtime/schema/interfaces.go new file mode 100644 index 00000000..b5706684 --- /dev/null +++ b/pkg/runtime/schema/interfaces.go @@ -0,0 +1,40 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package schema + +// All objects that are serialized from a Scheme encode their type information. This interface is used +// by serialization to set type information from the Scheme onto the serialized version of an object. +// For objects that cannot be serialized or have unique requirements, this interface may be a no-op. +type ObjectKind interface { + // SetGroupVersionKind sets or clears the intended serialized kind of an object. Passing kind nil + // should clear the current setting. + SetGroupVersionKind(kind GroupVersionKind) + // GroupVersionKind returns the stored group, version, and kind of an object, or nil if the object does + // not expose or provide these fields. + GroupVersionKind() GroupVersionKind +} + +// EmptyObjectKind implements the ObjectKind interface as a noop +var EmptyObjectKind = emptyObjectKind{} + +type emptyObjectKind struct{} + +// SetGroupVersionKind implements the ObjectKind interface +func (emptyObjectKind) SetGroupVersionKind(gvk GroupVersionKind) {} + +// GroupVersionKind implements the ObjectKind interface +func (emptyObjectKind) GroupVersionKind() GroupVersionKind { return GroupVersionKind{} } diff --git a/pkg/runtime/scheme.go b/pkg/runtime/scheme.go index b191e5fb..6c0a87e0 100644 --- a/pkg/runtime/scheme.go +++ b/pkg/runtime/scheme.go @@ -21,8 +21,8 @@ import ( "net/url" "reflect" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/conversion" + "k8s.io/client-go/pkg/runtime/schema" ) // Scheme defines methods for serializing and deserializing API objects, a type @@ -43,14 +43,14 @@ import ( type Scheme struct { // versionMap allows one to figure out the go type of an object with // the given version and name. - gvkToType map[unversioned.GroupVersionKind]reflect.Type + gvkToType map[schema.GroupVersionKind]reflect.Type // typeToGroupVersion allows one to find metadata for a given go object. // The reflect.Type we index by should *not* be a pointer. - typeToGVK map[reflect.Type][]unversioned.GroupVersionKind + typeToGVK map[reflect.Type][]schema.GroupVersionKind // unversionedTypes are transformed without conversion in ConvertToVersion. - unversionedTypes map[reflect.Type]unversioned.GroupVersionKind + unversionedTypes map[reflect.Type]schema.GroupVersionKind // unversionedKinds are the names of kinds that can be created in the context of any group // or version @@ -80,9 +80,9 @@ type FieldLabelConversionFunc func(label, value string) (internalLabel, internal // NewScheme creates a new Scheme. This scheme is pluggable by default. func NewScheme() *Scheme { s := &Scheme{ - gvkToType: map[unversioned.GroupVersionKind]reflect.Type{}, - typeToGVK: map[reflect.Type][]unversioned.GroupVersionKind{}, - unversionedTypes: map[reflect.Type]unversioned.GroupVersionKind{}, + gvkToType: map[schema.GroupVersionKind]reflect.Type{}, + typeToGVK: map[reflect.Type][]schema.GroupVersionKind{}, + unversionedTypes: map[reflect.Type]schema.GroupVersionKind{}, unversionedKinds: map[string]reflect.Type{}, cloner: conversion.NewCloner(), fieldLabelConversionFuncs: map[string]map[string]FieldLabelConversionFunc{}, @@ -145,7 +145,7 @@ func (s *Scheme) Converter() *conversion.Converter { // // TODO: there is discussion about removing unversioned and replacing it with objects that are manifest into // every version with particular schemas. Resolve this method at that point. -func (s *Scheme) AddUnversionedTypes(version unversioned.GroupVersion, types ...Object) { +func (s *Scheme) AddUnversionedTypes(version schema.GroupVersion, types ...Object) { s.AddKnownTypes(version, types...) for _, obj := range types { t := reflect.TypeOf(obj).Elem() @@ -162,7 +162,7 @@ func (s *Scheme) AddUnversionedTypes(version unversioned.GroupVersion, types ... // All objects passed to types should be pointers to structs. The name that go reports for // the struct becomes the "kind" field when encoding. Version may not be empty - use the // APIVersionInternal constant if you have a type that does not have a formal version. -func (s *Scheme) AddKnownTypes(gv unversioned.GroupVersion, types ...Object) { +func (s *Scheme) AddKnownTypes(gv schema.GroupVersion, types ...Object) { if len(gv.Version) == 0 { panic(fmt.Sprintf("version is required on all types: %s %v", gv, types[0])) } @@ -186,7 +186,7 @@ func (s *Scheme) AddKnownTypes(gv unversioned.GroupVersion, types ...Object) { // be encoded as. Useful for testing when you don't want to make multiple packages to define // your structs. Version may not be empty - use the APIVersionInternal constant if you have a // type that does not have a formal version. -func (s *Scheme) AddKnownTypeWithName(gvk unversioned.GroupVersionKind, obj Object) { +func (s *Scheme) AddKnownTypeWithName(gvk schema.GroupVersionKind, obj Object) { t := reflect.TypeOf(obj) if len(gvk.Version) == 0 { panic(fmt.Sprintf("version is required on all types: %s %v", gvk, t)) @@ -204,7 +204,7 @@ func (s *Scheme) AddKnownTypeWithName(gvk unversioned.GroupVersionKind, obj Obje } // KnownTypes returns the types known for the given version. -func (s *Scheme) KnownTypes(gv unversioned.GroupVersion) map[string]reflect.Type { +func (s *Scheme) KnownTypes(gv schema.GroupVersion) map[string]reflect.Type { types := make(map[string]reflect.Type) for gvk, t := range s.gvkToType { if gv != gvk.GroupVersion() { @@ -217,23 +217,23 @@ func (s *Scheme) KnownTypes(gv unversioned.GroupVersion) map[string]reflect.Type } // AllKnownTypes returns the all known types. -func (s *Scheme) AllKnownTypes() map[unversioned.GroupVersionKind]reflect.Type { +func (s *Scheme) AllKnownTypes() map[schema.GroupVersionKind]reflect.Type { return s.gvkToType } // ObjectKind returns the group,version,kind of the go object and true if this object // is considered unversioned, or an error if it's not a pointer or is unregistered. -func (s *Scheme) ObjectKind(obj Object) (unversioned.GroupVersionKind, bool, error) { +func (s *Scheme) ObjectKind(obj Object) (schema.GroupVersionKind, bool, error) { gvks, unversionedType, err := s.ObjectKinds(obj) if err != nil { - return unversioned.GroupVersionKind{}, false, err + return schema.GroupVersionKind{}, false, err } return gvks[0], unversionedType, nil } // ObjectKinds returns all possible group,version,kind of the go object, true if the // object is considered unversioned, or an error if it's not a pointer or is unregistered. -func (s *Scheme) ObjectKinds(obj Object) ([]unversioned.GroupVersionKind, bool, error) { +func (s *Scheme) ObjectKinds(obj Object) ([]schema.GroupVersionKind, bool, error) { v, err := conversion.EnforcePtr(obj) if err != nil { return nil, false, err @@ -242,7 +242,7 @@ func (s *Scheme) ObjectKinds(obj Object) ([]unversioned.GroupVersionKind, bool, gvks, ok := s.typeToGVK[t] if !ok { - return nil, false, NewNotRegisteredErr(unversioned.GroupVersionKind{}, t) + return nil, false, NewNotRegisteredErr(schema.GroupVersionKind{}, t) } _, unversionedType := s.unversionedTypes[t] @@ -251,7 +251,7 @@ func (s *Scheme) ObjectKinds(obj Object) ([]unversioned.GroupVersionKind, bool, // Recognizes returns true if the scheme is able to handle the provided group,version,kind // of an object. -func (s *Scheme) Recognizes(gvk unversioned.GroupVersionKind) bool { +func (s *Scheme) Recognizes(gvk schema.GroupVersionKind) bool { _, exists := s.gvkToType[gvk] return exists } @@ -272,7 +272,7 @@ func (s *Scheme) IsUnversioned(obj Object) (bool, bool) { // New returns a new API object of the given version and name, or an error if it hasn't // been registered. The version and kind fields must be specified. -func (s *Scheme) New(kind unversioned.GroupVersionKind) (Object, error) { +func (s *Scheme) New(kind schema.GroupVersionKind) (Object, error) { if t, exists := s.gvkToType[kind]; exists { return reflect.New(t).Interface().(Object), nil } @@ -514,7 +514,7 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) ( } kinds, ok := s.typeToGVK[t] if !ok || len(kinds) == 0 { - return nil, NewNotRegisteredErr(unversioned.GroupVersionKind{}, t) + return nil, NewNotRegisteredErr(schema.GroupVersionKind{}, t) } gvk, ok := target.KindForGroupVersionKinds(kinds) @@ -522,7 +522,7 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) ( // try to see if this type is listed as unversioned (for legacy support) // TODO: when we move to server API versions, we should completely remove the unversioned concept if unversionedKind, ok := s.unversionedTypes[t]; ok { - if gvk, ok := target.KindForGroupVersionKinds([]unversioned.GroupVersionKind{unversionedKind}); ok { + if gvk, ok := target.KindForGroupVersionKinds([]schema.GroupVersionKind{unversionedKind}); ok { return copyAndSetTargetKind(copy, s, in, gvk) } return copyAndSetTargetKind(copy, s, in, unversionedKind) @@ -541,7 +541,7 @@ func (s *Scheme) convertToVersion(copy bool, in Object, target GroupVersioner) ( // type is unversioned, no conversion necessary if unversionedKind, ok := s.unversionedTypes[t]; ok { - if gvk, ok := target.KindForGroupVersionKinds([]unversioned.GroupVersionKind{unversionedKind}); ok { + if gvk, ok := target.KindForGroupVersionKinds([]schema.GroupVersionKind{unversionedKind}); ok { return copyAndSetTargetKind(copy, s, in, gvk) } return copyAndSetTargetKind(copy, s, in, unversionedKind) @@ -576,7 +576,7 @@ func (s *Scheme) generateConvertMeta(in interface{}) (conversion.FieldMatchingFl } // copyAndSetTargetKind performs a conditional copy before returning the object, or an error if copy was not successful. -func copyAndSetTargetKind(copy bool, copier ObjectCopier, obj Object, kind unversioned.GroupVersionKind) (Object, error) { +func copyAndSetTargetKind(copy bool, copier ObjectCopier, obj Object, kind schema.GroupVersionKind) (Object, error) { if copy { copied, err := copier.Copy(obj) if err != nil { @@ -589,11 +589,11 @@ func copyAndSetTargetKind(copy bool, copier ObjectCopier, obj Object, kind unver } // setTargetKind sets the kind on an object, taking into account whether the target kind is the internal version. -func setTargetKind(obj Object, kind unversioned.GroupVersionKind) { +func setTargetKind(obj Object, kind schema.GroupVersionKind) { if kind.Version == APIVersionInternal { // internal is a special case // TODO: look at removing the need to special case this - obj.GetObjectKind().SetGroupVersionKind(unversioned.GroupVersionKind{}) + obj.GetObjectKind().SetGroupVersionKind(schema.GroupVersionKind{}) return } obj.GetObjectKind().SetGroupVersionKind(kind) diff --git a/pkg/runtime/serializer/codec_factory.go b/pkg/runtime/serializer/codec_factory.go index 69f56bb6..5782023a 100644 --- a/pkg/runtime/serializer/codec_factory.go +++ b/pkg/runtime/serializer/codec_factory.go @@ -17,8 +17,8 @@ limitations under the License. package serializer import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/json" "k8s.io/client-go/pkg/runtime/serializer/recognizer" "k8s.io/client-go/pkg/runtime/serializer/versioning" @@ -162,8 +162,8 @@ func (f CodecFactory) SupportedMediaTypes() []runtime.SerializerInfo { // // TODO: make this call exist only in pkg/api, and initialize it with the set of default versions. // All other callers will be forced to request a Codec directly. -func (f CodecFactory) LegacyCodec(version ...unversioned.GroupVersion) runtime.Codec { - return versioning.NewDefaultingCodecForScheme(f.scheme, f.legacySerializer, f.universal, unversioned.GroupVersions(version), runtime.InternalGroupVersioner) +func (f CodecFactory) LegacyCodec(version ...schema.GroupVersion) runtime.Codec { + return versioning.NewDefaultingCodecForScheme(f.scheme, f.legacySerializer, f.universal, schema.GroupVersions(version), runtime.InternalGroupVersioner) } // UniversalDeserializer can convert any stored data recognized by this factory into a Go object that satisfies @@ -181,12 +181,12 @@ func (f CodecFactory) UniversalDeserializer() runtime.Decoder { // // TODO: the decoder will eventually be removed in favor of dealing with objects in their versioned form // TODO: only accept a group versioner -func (f CodecFactory) UniversalDecoder(versions ...unversioned.GroupVersion) runtime.Decoder { +func (f CodecFactory) UniversalDecoder(versions ...schema.GroupVersion) runtime.Decoder { var versioner runtime.GroupVersioner if len(versions) == 0 { versioner = runtime.InternalGroupVersioner } else { - versioner = unversioned.GroupVersions(versions) + versioner = schema.GroupVersions(versions) } return f.CodecForVersions(nil, f.universal, nil, versioner) } diff --git a/pkg/runtime/serializer/json/json.go b/pkg/runtime/serializer/json/json.go index 2f2f69fb..cd88dc1e 100644 --- a/pkg/runtime/serializer/json/json.go +++ b/pkg/runtime/serializer/json/json.go @@ -23,8 +23,8 @@ import ( "github.com/ghodss/yaml" "github.com/ugorji/go/codec" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/recognizer" "k8s.io/client-go/pkg/util/framer" utilyaml "k8s.io/client-go/pkg/util/yaml" @@ -71,7 +71,7 @@ var _ recognizer.RecognizingDecoder = &Serializer{} // extracted and no decoding will be performed. If into is not registered with the typer, then the object will be straight decoded using // normal JSON/YAML unmarshalling. If into is provided and the original data is not fully qualified with kind/version/group, the type of // the into will be used to alter the returned gvk. On success or most errors, the method will return the calculated schema kind. -func (s *Serializer) Decode(originalData []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { if versioned, ok := into.(*runtime.VersionedObjects); ok { into = versioned.Last() obj, actual, err := s.Decode(originalData, gvk, into) diff --git a/pkg/runtime/serializer/json/meta.go b/pkg/runtime/serializer/json/meta.go index 325df63d..7b5758e4 100644 --- a/pkg/runtime/serializer/json/meta.go +++ b/pkg/runtime/serializer/json/meta.go @@ -20,7 +20,7 @@ import ( "encoding/json" "fmt" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) // MetaFactory is used to store and retrieve the version and kind @@ -28,7 +28,7 @@ import ( type MetaFactory interface { // Interpret should return the version and kind of the wire-format of // the object. - Interpret(data []byte) (*unversioned.GroupVersionKind, error) + Interpret(data []byte) (*schema.GroupVersionKind, error) } // DefaultMetaFactory is a default factory for versioning objects in JSON. The object @@ -45,7 +45,7 @@ type SimpleMetaFactory struct { // Interpret will return the APIVersion and Kind of the JSON wire-format // encoding of an object, or an error. -func (SimpleMetaFactory) Interpret(data []byte) (*unversioned.GroupVersionKind, error) { +func (SimpleMetaFactory) Interpret(data []byte) (*schema.GroupVersionKind, error) { findKind := struct { // +optional APIVersion string `json:"apiVersion,omitempty"` @@ -55,9 +55,9 @@ func (SimpleMetaFactory) Interpret(data []byte) (*unversioned.GroupVersionKind, if err := json.Unmarshal(data, &findKind); err != nil { return nil, fmt.Errorf("couldn't get version/kind; json parse error: %v", err) } - gv, err := unversioned.ParseGroupVersion(findKind.APIVersion) + gv, err := schema.ParseGroupVersion(findKind.APIVersion) if err != nil { return nil, err } - return &unversioned.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.Kind}, nil + return &schema.GroupVersionKind{Group: gv.Group, Version: gv.Version, Kind: findKind.Kind}, nil } diff --git a/pkg/runtime/serializer/protobuf/protobuf.go b/pkg/runtime/serializer/protobuf/protobuf.go index 0118828e..f48bca29 100644 --- a/pkg/runtime/serializer/protobuf/protobuf.go +++ b/pkg/runtime/serializer/protobuf/protobuf.go @@ -24,8 +24,8 @@ import ( "github.com/gogo/protobuf/proto" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/recognizer" "k8s.io/client-go/pkg/util/framer" ) @@ -85,7 +85,7 @@ var _ recognizer.RecognizingDecoder = &Serializer{} // be straight decoded using normal protobuf unmarshalling (the MarshalTo interface). If into is provided and the original data is // not fully qualified with kind/version/group, the type of the into will be used to alter the returned gvk. On success or most // errors, the method will return the calculated schema kind. -func (s *Serializer) Decode(originalData []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (s *Serializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { if versioned, ok := into.(*runtime.VersionedObjects); ok { into = versioned.Last() obj, actual, err := s.Decode(originalData, gvk, into) @@ -255,7 +255,7 @@ func (s *Serializer) RecognizesData(peek io.Reader) (bool, bool, error) { } // copyKindDefaults defaults dst to the value in src if dst does not have a value set. -func copyKindDefaults(dst, src *unversioned.GroupVersionKind) { +func copyKindDefaults(dst, src *schema.GroupVersionKind) { if src == nil { return } @@ -316,7 +316,7 @@ var _ runtime.Serializer = &RawSerializer{} // be straight decoded using normal protobuf unmarshalling (the MarshalTo interface). If into is provided and the original data is // not fully qualified with kind/version/group, the type of the into will be used to alter the returned gvk. On success or most // errors, the method will return the calculated schema kind. -func (s *RawSerializer) Decode(originalData []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (s *RawSerializer) Decode(originalData []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { if into == nil { return nil, nil, fmt.Errorf("this serializer requires an object to decode into: %#v", s) } @@ -341,7 +341,7 @@ func (s *RawSerializer) Decode(originalData []byte, gvk *unversioned.GroupVersio } data := originalData - actual := &unversioned.GroupVersionKind{} + actual := &schema.GroupVersionKind{} copyKindDefaults(actual, gvk) if intoUnknown, ok := into.(*runtime.Unknown); ok && intoUnknown != nil { @@ -386,7 +386,7 @@ func (s *RawSerializer) Decode(originalData []byte, gvk *unversioned.GroupVersio } // unmarshalToObject is the common code between decode in the raw and normal serializer. -func unmarshalToObject(typer runtime.ObjectTyper, creater runtime.ObjectCreater, actual *unversioned.GroupVersionKind, into runtime.Object, data []byte) (runtime.Object, *unversioned.GroupVersionKind, error) { +func unmarshalToObject(typer runtime.ObjectTyper, creater runtime.ObjectCreater, actual *schema.GroupVersionKind, into runtime.Object, data []byte) (runtime.Object, *schema.GroupVersionKind, error) { // use the target if necessary obj, err := runtime.UseOrCreateObject(typer, creater, *actual, into) if err != nil { diff --git a/pkg/runtime/serializer/recognizer/recognizer.go b/pkg/runtime/serializer/recognizer/recognizer.go index 54d978fb..6f0d99fd 100644 --- a/pkg/runtime/serializer/recognizer/recognizer.go +++ b/pkg/runtime/serializer/recognizer/recognizer.go @@ -22,8 +22,8 @@ import ( "fmt" "io" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) type RecognizingDecoder interface { @@ -81,7 +81,7 @@ func (d *decoder) RecognizesData(peek io.Reader) (bool, bool, error) { return false, anyUnknown, lastErr } -func (d *decoder) Decode(data []byte, gvk *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (d *decoder) Decode(data []byte, gvk *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { var ( lastErr error skipped []runtime.Decoder diff --git a/pkg/runtime/serializer/streaming/streaming.go b/pkg/runtime/serializer/streaming/streaming.go index 9b91f1ba..75a1a15e 100644 --- a/pkg/runtime/serializer/streaming/streaming.go +++ b/pkg/runtime/serializer/streaming/streaming.go @@ -23,8 +23,8 @@ import ( "fmt" "io" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // Encoder is a runtime.Encoder on a stream. @@ -37,7 +37,7 @@ type Encoder interface { // Decoder is a runtime.Decoder from a stream. type Decoder interface { // Decode will return io.EOF when no more objects are available. - Decode(defaults *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) + Decode(defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) // Close closes the underlying stream. Close() error } @@ -71,7 +71,7 @@ func NewDecoder(r io.ReadCloser, d runtime.Decoder) Decoder { var ErrObjectTooLarge = fmt.Errorf("object to decode was longer than maximum allowed size") // Decode reads the next object from the stream and decodes it. -func (d *decoder) Decode(defaults *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (d *decoder) Decode(defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { base := 0 for { n, err := d.reader.Read(d.buf[base:]) diff --git a/pkg/runtime/serializer/versioning/versioning.go b/pkg/runtime/serializer/versioning/versioning.go index 386397f0..a25a69f3 100644 --- a/pkg/runtime/serializer/versioning/versioning.go +++ b/pkg/runtime/serializer/versioning/versioning.go @@ -19,8 +19,8 @@ package versioning import ( "io" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" utilruntime "k8s.io/client-go/pkg/util/runtime" ) @@ -93,7 +93,7 @@ type codec struct { // Decode attempts a decode of the object, then tries to convert it to the internal version. If into is provided and the decoding is // successful, the returned runtime.Object will be the value passed as into. Note that this may bypass conversion if you pass an // into that matches the serialized version. -func (c *codec) Decode(data []byte, defaultGVK *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (c *codec) Decode(data []byte, defaultGVK *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { versioned, isVersioned := into.(*runtime.VersionedObjects) if isVersioned { into = versioned.Last() @@ -254,12 +254,12 @@ type DirectDecoder struct { } // Decode does not do conversion. It removes the gvk during deserialization. -func (d DirectDecoder) Decode(data []byte, defaults *unversioned.GroupVersionKind, into runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (d DirectDecoder) Decode(data []byte, defaults *schema.GroupVersionKind, into runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { obj, gvk, err := d.Decoder.Decode(data, defaults, into) if obj != nil { kind := obj.GetObjectKind() // clearing the gvk is just a convention of a codec - kind.SetGroupVersionKind(unversioned.GroupVersionKind{}) + kind.SetGroupVersionKind(schema.GroupVersionKind{}) } return obj, gvk, err } diff --git a/pkg/runtime/unstructured.go b/pkg/runtime/unstructured.go index a15208c5..7a0e76b6 100644 --- a/pkg/runtime/unstructured.go +++ b/pkg/runtime/unstructured.go @@ -28,6 +28,7 @@ import ( "k8s.io/client-go/pkg/api/meta/metatypes" "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/types" "k8s.io/client-go/pkg/util/json" ) @@ -327,15 +328,15 @@ func (u *Unstructured) SetAnnotations(annotations map[string]string) { u.setNestedMap(annotations, "metadata", "annotations") } -func (u *Unstructured) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (u *Unstructured) SetGroupVersionKind(gvk schema.GroupVersionKind) { u.SetAPIVersion(gvk.GroupVersion().String()) u.SetKind(gvk.Kind) } -func (u *Unstructured) GroupVersionKind() unversioned.GroupVersionKind { - gv, err := unversioned.ParseGroupVersion(u.GetAPIVersion()) +func (u *Unstructured) GroupVersionKind() schema.GroupVersionKind { + gv, err := schema.ParseGroupVersion(u.GetAPIVersion()) if err != nil { - return unversioned.GroupVersionKind{} + return schema.GroupVersionKind{} } gvk := gv.WithKind(u.GetKind()) return gvk @@ -421,15 +422,15 @@ func (u *UnstructuredList) SetSelfLink(selfLink string) { u.setNestedField(selfLink, "metadata", "selfLink") } -func (u *UnstructuredList) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (u *UnstructuredList) SetGroupVersionKind(gvk schema.GroupVersionKind) { u.SetAPIVersion(gvk.GroupVersion().String()) u.SetKind(gvk.Kind) } -func (u *UnstructuredList) GroupVersionKind() unversioned.GroupVersionKind { - gv, err := unversioned.ParseGroupVersion(u.GetAPIVersion()) +func (u *UnstructuredList) GroupVersionKind() schema.GroupVersionKind { + gv, err := schema.ParseGroupVersion(u.GetAPIVersion()) if err != nil { - return unversioned.GroupVersionKind{} + return schema.GroupVersionKind{} } gvk := gv.WithKind(u.GetKind()) return gvk @@ -442,7 +443,7 @@ var UnstructuredJSONScheme Codec = unstructuredJSONScheme{} type unstructuredJSONScheme struct{} -func (s unstructuredJSONScheme) Decode(data []byte, _ *unversioned.GroupVersionKind, obj Object) (Object, *unversioned.GroupVersionKind, error) { +func (s unstructuredJSONScheme) Decode(data []byte, _ *schema.GroupVersionKind, obj Object) (Object, *schema.GroupVersionKind, error) { var err error if obj != nil { err = s.decodeInto(data, obj) @@ -597,7 +598,7 @@ func (UnstructuredObjectConverter) Convert(in, out, context interface{}) error { func (UnstructuredObjectConverter) ConvertToVersion(in Object, target GroupVersioner) (Object, error) { if kind := in.GetObjectKind().GroupVersionKind(); !kind.Empty() { - gvk, ok := target.KindForGroupVersionKinds([]unversioned.GroupVersionKind{kind}) + gvk, ok := target.KindForGroupVersionKinds([]schema.GroupVersionKind{kind}) if !ok { // TODO: should this be a typed error? return nil, fmt.Errorf("%v is unstructured and is not suitable for converting to %q", kind, target) diff --git a/pkg/util/cert/csr.go b/pkg/util/cert/csr.go index 69846df6..9a0f628b 100644 --- a/pkg/util/cert/csr.go +++ b/pkg/util/cert/csr.go @@ -26,6 +26,7 @@ import ( "net" "k8s.io/client-go/pkg/apis/certificates" + "k8s.io/client-go/pkg/apis/certificates/v1alpha1" ) // ParseCSR extracts the CSR from the API object and decodes it. @@ -43,6 +44,21 @@ func ParseCSR(obj *certificates.CertificateSigningRequest) (*x509.CertificateReq return csr, nil } +// ParseCSRV1alpha1 extracts the CSR from the API object and decodes it. +func ParseCSRV1alpha1(obj *v1alpha1.CertificateSigningRequest) (*x509.CertificateRequest, error) { + // extract PEM from request object + pemBytes := obj.Spec.Request + block, _ := pem.Decode(pemBytes) + if block == nil || block.Type != "CERTIFICATE REQUEST" { + return nil, errors.New("PEM block type must be CERTIFICATE REQUEST") + } + csr, err := x509.ParseCertificateRequest(block.Bytes) + if err != nil { + return nil, err + } + return csr, nil +} + // MakeCSR generates a PEM-encoded CSR using the supplied private key, subject, and SANs. // All key types that are implemented via crypto.Signer are supported (This includes *rsa.PrivateKey and *ecdsa.PrivateKey.) func MakeCSR(privateKey interface{}, subject *pkix.Name, dnsSANs []string, ipSANs []net.IP) (csr []byte, err error) { diff --git a/pkg/util/config/feature_gate.go b/pkg/util/config/feature_gate.go index 11996dab..ff90f2fb 100644 --- a/pkg/util/config/feature_gate.go +++ b/pkg/util/config/feature_gate.go @@ -43,18 +43,26 @@ const ( dynamicKubeletConfig = "DynamicKubeletConfig" dynamicVolumeProvisioning = "DynamicVolumeProvisioning" streamingProxyRedirects = "StreamingProxyRedirects" + + // experimentalHostUserNamespaceDefaulting Default userns=host for containers + // that are using other host namespaces, host mounts, the pod contains a privileged container, + // or specific non-namespaced capabilities + // (MKNOD, SYS_MODULE, SYS_TIME). This should only be enabled if user namespace remapping is enabled + // in the docker daemon. + experimentalHostUserNamespaceDefaultingGate = "ExperimentalHostUserNamespaceDefaulting" ) var ( // Default values for recorded features. Every new feature gate should be // represented here. knownFeatures = map[string]featureSpec{ - allAlphaGate: {false, alpha}, - externalTrafficLocalOnly: {true, beta}, - appArmor: {true, beta}, - dynamicKubeletConfig: {false, alpha}, - dynamicVolumeProvisioning: {true, alpha}, - streamingProxyRedirects: {false, alpha}, + allAlphaGate: {false, alpha}, + externalTrafficLocalOnly: {true, beta}, + appArmor: {true, beta}, + dynamicKubeletConfig: {false, alpha}, + dynamicVolumeProvisioning: {true, alpha}, + streamingProxyRedirects: {false, alpha}, + experimentalHostUserNamespaceDefaultingGate: {false, alpha}, } // Special handling for a few gates. @@ -115,6 +123,10 @@ type FeatureGate interface { // owner: timstclair // alpha: v1.5 StreamingProxyRedirects() bool + + // owner: @pweil- + // alpha: v1.5 + ExperimentalHostUserNamespaceDefaulting() bool } // featureGate implements FeatureGate as well as pflag.Value for flag parsing. @@ -209,6 +221,11 @@ func (f *featureGate) StreamingProxyRedirects() bool { return f.lookup(streamingProxyRedirects) } +// ExperimentalHostUserNamespaceDefaulting returns value for experimentalHostUserNamespaceDefaulting +func (f *featureGate) ExperimentalHostUserNamespaceDefaulting() bool { + return f.lookup(experimentalHostUserNamespaceDefaultingGate) +} + func (f *featureGate) lookup(key string) bool { defaultValue := f.known[key].enabled if f.enabled != nil { diff --git a/pkg/watch/mux.go b/pkg/watch/mux.go index 3c7cfd1b..9094bf6d 100644 --- a/pkg/watch/mux.go +++ b/pkg/watch/mux.go @@ -19,8 +19,8 @@ package watch import ( "sync" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // FullChannelBehavior controls how the Broadcaster reacts if a watcher's watch @@ -81,8 +81,8 @@ const internalRunFunctionMarker = "internal-do-function" // a function type we can shoehorn into the queue. type functionFakeRuntimeObject func() -func (obj functionFakeRuntimeObject) GetObjectKind() unversioned.ObjectKind { - return unversioned.EmptyObjectKind +func (obj functionFakeRuntimeObject) GetObjectKind() schema.ObjectKind { + return schema.EmptyObjectKind } // Execute f, blocking the incoming queue (and waiting for it to drain first). diff --git a/pkg/watch/versioned/register.go b/pkg/watch/versioned/register.go index 2223a934..980214d2 100644 --- a/pkg/watch/versioned/register.go +++ b/pkg/watch/versioned/register.go @@ -17,9 +17,9 @@ limitations under the License. package versioned import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/conversion" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/watch" ) @@ -28,10 +28,10 @@ const WatchEventKind = "WatchEvent" // AddToGroupVersion registers the watch external and internal kinds with the scheme, and ensures the proper // conversions are in place. -func AddToGroupVersion(scheme *runtime.Scheme, groupVersion unversioned.GroupVersion) { +func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) { scheme.AddKnownTypeWithName(groupVersion.WithKind(WatchEventKind), &Event{}) scheme.AddKnownTypeWithName( - unversioned.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}.WithKind(WatchEventKind), + schema.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}.WithKind(WatchEventKind), &InternalEvent{}, ) scheme.AddConversionFuncs( @@ -80,5 +80,5 @@ func Convert_versioned_Event_to_versioned_InternalEvent(in *Event, out *Internal // InternalEvent makes watch.Event versioned type InternalEvent watch.Event -func (e *InternalEvent) GetObjectKind() unversioned.ObjectKind { return unversioned.EmptyObjectKind } -func (e *Event) GetObjectKind() unversioned.ObjectKind { return unversioned.EmptyObjectKind } +func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } +func (e *Event) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind } diff --git a/plugin/pkg/client/auth/gcp/gcp.go b/plugin/pkg/client/auth/gcp/gcp.go index bf5b253d..c187bdd0 100644 --- a/plugin/pkg/client/auth/gcp/gcp.go +++ b/plugin/pkg/client/auth/gcp/gcp.go @@ -23,6 +23,7 @@ import ( "net/http" "os/exec" "strings" + "sync" "time" "github.com/golang/glog" @@ -40,6 +41,48 @@ func init() { } } +// gcpAuthProvider is an auth provider plugin that uses GCP credentials to provide +// tokens for kubectl to authenticate itself to the apiserver. A sample json config +// is provided below with all recognized options described. +// +// { +// 'auth-provider': { +// # Required +// "name": "gcp", +// +// 'config': { +// # Caching options +// +// # Raw string data representing cached access token. +// "access-token": "ya29.CjWdA4GiBPTt", +// # RFC3339Nano expiration timestamp for cached access token. +// "expiry": "2016-10-31 22:31:9.123", +// +// # Command execution options +// # These options direct the plugin to execute a specified command and parse +// # token and expiry time from the output of the command. +// +// # Command to execute for access token. String is split on whitespace +// # with first field treated as the executable, remaining fields as args. +// # Command output will be parsed as JSON. +// "cmd-path": "/usr/bin/gcloud config config-helper --output=json", +// +// # JSONPath to the string field that represents the access token in +// # command output. If omitted, defaults to "{.access_token}". +// "token-key": "{.credential.access_token}", +// +// # JSONPath to the string field that represents expiration timestamp +// # of the access token in the command output. If omitted, defaults to +// # "{.token_expiry}" +// "expiry-key": ""{.credential.token_expiry}", +// +// # golang reference time in the format that the expiration timestamp uses. +// # If omitted, defaults to time.RFC3339Nano +// "time-fmt": "2006-01-02 15:04:05.999999999" +// } +// } +// } +// type gcpAuthProvider struct { tokenSource oauth2.TokenSource persister rest.AuthProviderConfigPersister @@ -74,6 +117,7 @@ func (g *gcpAuthProvider) WrapTransport(rt http.RoundTripper) http.RoundTripper func (g *gcpAuthProvider) Login() error { return nil } type cachedTokenSource struct { + lk sync.Mutex source oauth2.TokenSource accessToken string expiry time.Time @@ -99,11 +143,7 @@ func newCachedTokenSource(accessToken, expiry string, persister rest.AuthProvide } func (t *cachedTokenSource) Token() (*oauth2.Token, error) { - tok := &oauth2.Token{ - AccessToken: t.accessToken, - TokenType: "Bearer", - Expiry: t.expiry, - } + tok := t.cachedToken() if tok.Valid() && !tok.Expiry.IsZero() { return tok, nil } @@ -111,16 +151,39 @@ func (t *cachedTokenSource) Token() (*oauth2.Token, error) { if err != nil { return nil, err } + cache := t.update(tok) if t.persister != nil { - t.cache["access-token"] = tok.AccessToken - t.cache["expiry"] = tok.Expiry.Format(time.RFC3339Nano) - if err := t.persister.Persist(t.cache); err != nil { + if err := t.persister.Persist(cache); err != nil { glog.V(4).Infof("Failed to persist token: %v", err) } } return tok, nil } +func (t *cachedTokenSource) cachedToken() *oauth2.Token { + t.lk.Lock() + defer t.lk.Unlock() + return &oauth2.Token{ + AccessToken: t.accessToken, + TokenType: "Bearer", + Expiry: t.expiry, + } +} + +func (t *cachedTokenSource) update(tok *oauth2.Token) map[string]string { + t.lk.Lock() + defer t.lk.Unlock() + t.accessToken = tok.AccessToken + t.expiry = tok.Expiry + ret := map[string]string{} + for k, v := range t.cache { + ret[k] = v + } + ret["access-token"] = t.accessToken + ret["expiry"] = t.expiry.Format(time.RFC3339Nano) + return ret +} + type commandTokenSource struct { cmd string args []string diff --git a/plugin/pkg/client/auth/gcp/gcp_test.go b/plugin/pkg/client/auth/gcp/gcp_test.go index dfd25bbf..cb64b838 100644 --- a/plugin/pkg/client/auth/gcp/gcp_test.go +++ b/plugin/pkg/client/auth/gcp/gcp_test.go @@ -20,6 +20,7 @@ import ( "fmt" "reflect" "strings" + "sync" "testing" "time" @@ -141,3 +142,70 @@ func TestCmdTokenSource(t *testing.T) { } } } + +type fakePersister struct { + lk sync.Mutex + cache map[string]string +} + +func (f *fakePersister) Persist(cache map[string]string) error { + f.lk.Lock() + defer f.lk.Unlock() + f.cache = map[string]string{} + for k, v := range cache { + f.cache[k] = v + } + return nil +} + +func (f *fakePersister) read() map[string]string { + ret := map[string]string{} + f.lk.Lock() + for k, v := range f.cache { + ret[k] = v + } + return ret +} + +type fakeTokenSource struct { + token *oauth2.Token + err error +} + +func (f *fakeTokenSource) Token() (*oauth2.Token, error) { + return f.token, f.err +} + +func TestCachedTokenSource(t *testing.T) { + tok := &oauth2.Token{AccessToken: "fakeaccesstoken"} + persister := &fakePersister{} + source := &fakeTokenSource{ + token: tok, + err: nil, + } + cache := map[string]string{ + "foo": "bar", + "baz": "bazinga", + } + ts, err := newCachedTokenSource("fakeaccesstoken", "", persister, source, cache) + if err != nil { + t.Fatal(err) + } + var wg sync.WaitGroup + wg.Add(10) + for i := 0; i < 10; i++ { + go func() { + _, err := ts.Token() + if err != nil { + t.Errorf("unexpected error: %s", err) + } + wg.Done() + }() + } + wg.Wait() + cache["access-token"] = "fakeaccesstoken" + cache["expiry"] = tok.Expiry.Format(time.RFC3339Nano) + if got := persister.read(); !reflect.DeepEqual(got, cache) { + t.Errorf("got cache %v, want %v", got, cache) + } +} diff --git a/rest/client.go b/rest/client.go index 79559edb..c397a262 100644 --- a/rest/client.go +++ b/rest/client.go @@ -27,8 +27,8 @@ import ( "time" "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/flowcontrol" ) @@ -48,7 +48,7 @@ type Interface interface { Patch(pt api.PatchType) *Request Get() *Request Delete() *Request - APIVersion() unversioned.GroupVersion + APIVersion() schema.GroupVersion } // RESTClient imposes common Kubernetes API conventions on a set of resource paths. @@ -100,7 +100,7 @@ func NewRESTClient(baseURL *url.URL, versionedAPIPath string, config ContentConf base.Fragment = "" if config.GroupVersion == nil { - config.GroupVersion = &unversioned.GroupVersion{} + config.GroupVersion = &schema.GroupVersion{} } if len(config.ContentType) == 0 { config.ContentType = "application/json" @@ -173,7 +173,7 @@ func createSerializers(config ContentConfig) (*Serializers, error) { info = mediaTypes[0] } - internalGV := unversioned.GroupVersions{ + internalGV := schema.GroupVersions{ { Group: config.GroupVersion.Group, Version: runtime.APIVersionInternal, @@ -253,6 +253,6 @@ func (c *RESTClient) Delete() *Request { } // APIVersion returns the APIVersion this RESTClient is expected to use. -func (c *RESTClient) APIVersion() unversioned.GroupVersion { +func (c *RESTClient) APIVersion() schema.GroupVersion { return *c.contentConfig.GroupVersion } diff --git a/rest/client_test.go b/rest/client_test.go index b8a0221b..1e0dc0e6 100644 --- a/rest/client_test.go +++ b/rest/client_test.go @@ -33,6 +33,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/diff" utiltesting "k8s.io/client-go/pkg/util/testing" ) @@ -51,7 +52,7 @@ type TestParam struct { func TestSerializer(t *testing.T) { contentConfig := ContentConfig{ ContentType: "application/json", - GroupVersion: &unversioned.GroupVersion{Group: "other", Version: runtime.APIVersionInternal}, + GroupVersion: &schema.GroupVersion{Group: "other", Version: runtime.APIVersionInternal}, NegotiatedSerializer: api.Codecs, } diff --git a/rest/config.go b/rest/config.go index 37d87564..6e316d12 100644 --- a/rest/config.go +++ b/rest/config.go @@ -32,6 +32,7 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" certutil "k8s.io/client-go/pkg/util/cert" "k8s.io/client-go/pkg/util/flowcontrol" "k8s.io/client-go/pkg/version" @@ -150,7 +151,7 @@ type ContentConfig struct { // GroupVersion is the API version to talk to. Must be provided when initializing // a RESTClient directly. When initializing a Client, will be set with the default // code version. - GroupVersion *unversioned.GroupVersion + GroupVersion *schema.GroupVersion // NegotiatedSerializer is used for obtaining encoders and decoders for multiple // supported media types. NegotiatedSerializer runtime.NegotiatedSerializer diff --git a/rest/config_test.go b/rest/config_test.go index 16837363..c4e62a55 100644 --- a/rest/config_test.go +++ b/rest/config_test.go @@ -27,9 +27,9 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/testapi" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/diff" "k8s.io/client-go/pkg/util/flowcontrol" clientcmdapi "k8s.io/client-go/tools/clientcmd/api" @@ -133,7 +133,7 @@ func (t *fakeLimiter) Accept() {} type fakeCodec struct{} -func (c *fakeCodec) Decode([]byte, *unversioned.GroupVersionKind, runtime.Object) (runtime.Object, *unversioned.GroupVersionKind, error) { +func (c *fakeCodec) Decode([]byte, *schema.GroupVersionKind, runtime.Object) (runtime.Object, *schema.GroupVersionKind, error) { return nil, nil, nil } diff --git a/rest/fake/fake.go b/rest/fake/fake.go index 4321ed01..4ecdd4c3 100644 --- a/rest/fake/fake.go +++ b/rest/fake/fake.go @@ -24,9 +24,9 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/testapi" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/util/flowcontrol" "k8s.io/client-go/rest" ) @@ -78,7 +78,7 @@ func (c *RESTClient) Verb(verb string) *rest.Request { return c.request(verb) } -func (c *RESTClient) APIVersion() unversioned.GroupVersion { +func (c *RESTClient) APIVersion() schema.GroupVersion { return *(testapi.Default.GroupVersion()) } @@ -99,7 +99,7 @@ func (c *RESTClient) request(verb string) *rest.Request { } ns := c.NegotiatedSerializer info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON) - internalVersion := unversioned.GroupVersion{ + internalVersion := schema.GroupVersion{ Group: registered.GroupOrDie(groupName).GroupVersion.Group, Version: runtime.APIVersionInternal, } diff --git a/rest/request.go b/rest/request.go index f5926e3b..460ac974 100644 --- a/rest/request.go +++ b/rest/request.go @@ -39,6 +39,7 @@ import ( "k8s.io/client-go/pkg/fields" "k8s.io/client-go/pkg/labels" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/streaming" "k8s.io/client-go/pkg/util/flowcontrol" "k8s.io/client-go/pkg/util/net" @@ -333,10 +334,10 @@ func (r resourceTypeToFieldMapping) filterField(resourceType, field, value strin return fMapping.filterField(field, value) } -type versionToResourceToFieldMapping map[unversioned.GroupVersion]resourceTypeToFieldMapping +type versionToResourceToFieldMapping map[schema.GroupVersion]resourceTypeToFieldMapping // filterField transforms the given field/value selector for the given groupVersion and resource -func (v versionToResourceToFieldMapping) filterField(groupVersion *unversioned.GroupVersion, resourceType, field, value string) (newField, newValue string, err error) { +func (v versionToResourceToFieldMapping) filterField(groupVersion *schema.GroupVersion, resourceType, field, value string) (newField, newValue string, err error) { rMapping, ok := v[*groupVersion] if !ok { // no groupVersion overrides registered, default to identity mapping @@ -1001,7 +1002,7 @@ func (r *Request) newUnstructuredResponseError(body []byte, isTextResponse bool, return errors.NewGenericServerResponse( statusCode, method, - unversioned.GroupResource{ + schema.GroupResource{ Group: r.content.GroupVersion.Group, Resource: r.resource, }, @@ -1146,7 +1147,7 @@ func (r Result) Error() error { // attempt to convert the body into a Status object // to be backwards compatible with old servers that do not return a version, default to "v1" - out, _, err := r.decoder.Decode(r.body, &unversioned.GroupVersionKind{Version: "v1"}, nil) + out, _, err := r.decoder.Decode(r.body, &schema.GroupVersionKind{Version: "v1"}, nil) if err != nil { glog.V(5).Infof("body was not decodable (unable to check for Status): %v", err) return r.err diff --git a/rest/request_test.go b/rest/request_test.go index 1771374d..c647a5e8 100755 --- a/rest/request_test.go +++ b/rest/request_test.go @@ -39,6 +39,7 @@ import ( "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/labels" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/streaming" "k8s.io/client-go/pkg/util/clock" "k8s.io/client-go/pkg/util/diff" @@ -270,8 +271,8 @@ func TestRequestURI(t *testing.T) { type NotAnAPIObject struct{} -func (obj NotAnAPIObject) GroupVersionKind() *unversioned.GroupVersionKind { return nil } -func (obj NotAnAPIObject) SetGroupVersionKind(gvk *unversioned.GroupVersionKind) {} +func (obj NotAnAPIObject) GroupVersionKind() *schema.GroupVersionKind { return nil } +func (obj NotAnAPIObject) SetGroupVersionKind(gvk *schema.GroupVersionKind) {} func defaultContentConfig() ContentConfig { return ContentConfig{ @@ -327,7 +328,7 @@ func TestResultIntoWithErrReturnsErr(t *testing.T) { func TestURLTemplate(t *testing.T) { uri, _ := url.Parse("http://localhost") - r := NewRequest(nil, "POST", uri, "", ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "test"}}, Serializers{}, nil, nil) + r := NewRequest(nil, "POST", uri, "", ContentConfig{GroupVersion: &schema.GroupVersion{Group: "test"}}, Serializers{}, nil, nil) r.Prefix("pre1").Resource("r1").Namespace("ns").Name("nm").Param("p0", "v0") full := r.URL() if full.String() != "http://localhost/pre1/namespaces/ns/r1/nm?p0=v0" { @@ -1412,7 +1413,7 @@ func TestAbsPath(t *testing.T) { {"/p1/api/p2", "/api/r1", "/api/", "/p1/api/p2/api/"}, } { u, _ := url.Parse("http://localhost:123" + tc.configPrefix) - r := NewRequest(nil, "POST", u, "", ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "test"}}, Serializers{}, nil, nil).Prefix(tc.resourcePrefix).AbsPath(tc.absPath) + r := NewRequest(nil, "POST", u, "", ContentConfig{GroupVersion: &schema.GroupVersion{Group: "test"}}, Serializers{}, nil, nil).Prefix(tc.resourcePrefix).AbsPath(tc.absPath) if r.pathPrefix != tc.wantsAbsPath { t.Errorf("test case %d failed, unexpected path: %q, expected %q", i, r.pathPrefix, tc.wantsAbsPath) } @@ -1432,7 +1433,7 @@ func TestUintParam(t *testing.T) { for _, item := range table { u, _ := url.Parse("http://localhost") - r := NewRequest(nil, "GET", u, "", ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "test"}}, Serializers{}, nil, nil).AbsPath("").UintParam(item.name, item.testVal) + r := NewRequest(nil, "GET", u, "", ContentConfig{GroupVersion: &schema.GroupVersion{Group: "test"}}, Serializers{}, nil, nil).AbsPath("").UintParam(item.name, item.testVal) if e, a := item.expectStr, r.URL().String(); e != a { t.Errorf("expected %v, got %v", e, a) } diff --git a/rest/url_utils.go b/rest/url_utils.go index 46da9910..052798e7 100644 --- a/rest/url_utils.go +++ b/rest/url_utils.go @@ -21,13 +21,13 @@ import ( "net/url" "path" - "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/runtime/schema" ) // DefaultServerURL converts a host, host:port, or URL string to the default base server API path // to use with a Client at a given API version following the standard conventions for a // Kubernetes API. -func DefaultServerURL(host, apiPath string, groupVersion unversioned.GroupVersion, defaultTLS bool) (*url.URL, string, error) { +func DefaultServerURL(host, apiPath string, groupVersion schema.GroupVersion, defaultTLS bool) (*url.URL, string, error) { if host == "" { return nil, "", fmt.Errorf("host must be a URL or a host:port pair") } @@ -89,5 +89,5 @@ func defaultServerUrlFor(config *Config) (*url.URL, string, error) { if config.GroupVersion != nil { return DefaultServerURL(host, config.APIPath, *config.GroupVersion, defaultTLS) } - return DefaultServerURL(host, config.APIPath, unversioned.GroupVersion{}, defaultTLS) + return DefaultServerURL(host, config.APIPath, schema.GroupVersion{}, defaultTLS) } diff --git a/testing/actions.go b/testing/actions.go index c8f955c3..4708c225 100644 --- a/testing/actions.go +++ b/testing/actions.go @@ -22,14 +22,14 @@ import ( "strings" "k8s.io/client-go/pkg/api" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/fields" "k8s.io/client-go/pkg/labels" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) -func NewRootGetAction(resource unversioned.GroupVersionResource, name string) GetActionImpl { +func NewRootGetAction(resource schema.GroupVersionResource, name string) GetActionImpl { action := GetActionImpl{} action.Verb = "get" action.Resource = resource @@ -38,7 +38,7 @@ func NewRootGetAction(resource unversioned.GroupVersionResource, name string) Ge return action } -func NewGetAction(resource unversioned.GroupVersionResource, namespace, name string) GetActionImpl { +func NewGetAction(resource schema.GroupVersionResource, namespace, name string) GetActionImpl { action := GetActionImpl{} action.Verb = "get" action.Resource = resource @@ -48,7 +48,7 @@ func NewGetAction(resource unversioned.GroupVersionResource, namespace, name str return action } -func NewRootListAction(resource unversioned.GroupVersionResource, opts interface{}) ListActionImpl { +func NewRootListAction(resource schema.GroupVersionResource, opts interface{}) ListActionImpl { action := ListActionImpl{} action.Verb = "list" action.Resource = resource @@ -58,7 +58,7 @@ func NewRootListAction(resource unversioned.GroupVersionResource, opts interface return action } -func NewListAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) ListActionImpl { +func NewListAction(resource schema.GroupVersionResource, namespace string, opts interface{}) ListActionImpl { action := ListActionImpl{} action.Verb = "list" action.Resource = resource @@ -69,7 +69,7 @@ func NewListAction(resource unversioned.GroupVersionResource, namespace string, return action } -func NewRootCreateAction(resource unversioned.GroupVersionResource, object runtime.Object) CreateActionImpl { +func NewRootCreateAction(resource schema.GroupVersionResource, object runtime.Object) CreateActionImpl { action := CreateActionImpl{} action.Verb = "create" action.Resource = resource @@ -78,7 +78,7 @@ func NewRootCreateAction(resource unversioned.GroupVersionResource, object runti return action } -func NewCreateAction(resource unversioned.GroupVersionResource, namespace string, object runtime.Object) CreateActionImpl { +func NewCreateAction(resource schema.GroupVersionResource, namespace string, object runtime.Object) CreateActionImpl { action := CreateActionImpl{} action.Verb = "create" action.Resource = resource @@ -88,7 +88,7 @@ func NewCreateAction(resource unversioned.GroupVersionResource, namespace string return action } -func NewRootUpdateAction(resource unversioned.GroupVersionResource, object runtime.Object) UpdateActionImpl { +func NewRootUpdateAction(resource schema.GroupVersionResource, object runtime.Object) UpdateActionImpl { action := UpdateActionImpl{} action.Verb = "update" action.Resource = resource @@ -97,7 +97,7 @@ func NewRootUpdateAction(resource unversioned.GroupVersionResource, object runti return action } -func NewUpdateAction(resource unversioned.GroupVersionResource, namespace string, object runtime.Object) UpdateActionImpl { +func NewUpdateAction(resource schema.GroupVersionResource, namespace string, object runtime.Object) UpdateActionImpl { action := UpdateActionImpl{} action.Verb = "update" action.Resource = resource @@ -107,7 +107,7 @@ func NewUpdateAction(resource unversioned.GroupVersionResource, namespace string return action } -func NewRootPatchAction(resource unversioned.GroupVersionResource, name string, patch []byte) PatchActionImpl { +func NewRootPatchAction(resource schema.GroupVersionResource, name string, patch []byte) PatchActionImpl { action := PatchActionImpl{} action.Verb = "patch" action.Resource = resource @@ -117,7 +117,7 @@ func NewRootPatchAction(resource unversioned.GroupVersionResource, name string, return action } -func NewPatchAction(resource unversioned.GroupVersionResource, namespace string, name string, patch []byte) PatchActionImpl { +func NewPatchAction(resource schema.GroupVersionResource, namespace string, name string, patch []byte) PatchActionImpl { action := PatchActionImpl{} action.Verb = "patch" action.Resource = resource @@ -128,7 +128,7 @@ func NewPatchAction(resource unversioned.GroupVersionResource, namespace string, return action } -func NewRootPatchSubresourceAction(resource unversioned.GroupVersionResource, name string, patch []byte, subresources ...string) PatchActionImpl { +func NewRootPatchSubresourceAction(resource schema.GroupVersionResource, name string, patch []byte, subresources ...string) PatchActionImpl { action := PatchActionImpl{} action.Verb = "patch" action.Resource = resource @@ -139,7 +139,7 @@ func NewRootPatchSubresourceAction(resource unversioned.GroupVersionResource, na return action } -func NewPatchSubresourceAction(resource unversioned.GroupVersionResource, namespace, name string, patch []byte, subresources ...string) PatchActionImpl { +func NewPatchSubresourceAction(resource schema.GroupVersionResource, namespace, name string, patch []byte, subresources ...string) PatchActionImpl { action := PatchActionImpl{} action.Verb = "patch" action.Resource = resource @@ -151,7 +151,7 @@ func NewPatchSubresourceAction(resource unversioned.GroupVersionResource, namesp return action } -func NewRootUpdateSubresourceAction(resource unversioned.GroupVersionResource, subresource string, object runtime.Object) UpdateActionImpl { +func NewRootUpdateSubresourceAction(resource schema.GroupVersionResource, subresource string, object runtime.Object) UpdateActionImpl { action := UpdateActionImpl{} action.Verb = "update" action.Resource = resource @@ -160,7 +160,7 @@ func NewRootUpdateSubresourceAction(resource unversioned.GroupVersionResource, s return action } -func NewUpdateSubresourceAction(resource unversioned.GroupVersionResource, subresource string, namespace string, object runtime.Object) UpdateActionImpl { +func NewUpdateSubresourceAction(resource schema.GroupVersionResource, subresource string, namespace string, object runtime.Object) UpdateActionImpl { action := UpdateActionImpl{} action.Verb = "update" action.Resource = resource @@ -171,7 +171,7 @@ func NewUpdateSubresourceAction(resource unversioned.GroupVersionResource, subre return action } -func NewRootDeleteAction(resource unversioned.GroupVersionResource, name string) DeleteActionImpl { +func NewRootDeleteAction(resource schema.GroupVersionResource, name string) DeleteActionImpl { action := DeleteActionImpl{} action.Verb = "delete" action.Resource = resource @@ -180,7 +180,7 @@ func NewRootDeleteAction(resource unversioned.GroupVersionResource, name string) return action } -func NewDeleteAction(resource unversioned.GroupVersionResource, namespace, name string) DeleteActionImpl { +func NewDeleteAction(resource schema.GroupVersionResource, namespace, name string) DeleteActionImpl { action := DeleteActionImpl{} action.Verb = "delete" action.Resource = resource @@ -190,7 +190,7 @@ func NewDeleteAction(resource unversioned.GroupVersionResource, namespace, name return action } -func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl { +func NewRootDeleteCollectionAction(resource schema.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl { action := DeleteCollectionActionImpl{} action.Verb = "delete-collection" action.Resource = resource @@ -200,7 +200,7 @@ func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, op return action } -func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) DeleteCollectionActionImpl { +func NewDeleteCollectionAction(resource schema.GroupVersionResource, namespace string, opts interface{}) DeleteCollectionActionImpl { action := DeleteCollectionActionImpl{} action.Verb = "delete-collection" action.Resource = resource @@ -211,7 +211,7 @@ func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namesp return action } -func NewRootWatchAction(resource unversioned.GroupVersionResource, opts interface{}) WatchActionImpl { +func NewRootWatchAction(resource schema.GroupVersionResource, opts interface{}) WatchActionImpl { action := WatchActionImpl{} action.Verb = "watch" action.Resource = resource @@ -250,7 +250,7 @@ func ExtractFromListOptions(opts interface{}) (labelSelector labels.Selector, fi return labelSelector, fieldSelector, resourceVersion } -func NewWatchAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) WatchActionImpl { +func NewWatchAction(resource schema.GroupVersionResource, namespace string, opts interface{}) WatchActionImpl { action := WatchActionImpl{} action.Verb = "watch" action.Resource = resource @@ -261,7 +261,7 @@ func NewWatchAction(resource unversioned.GroupVersionResource, namespace string, return action } -func NewProxyGetAction(resource unversioned.GroupVersionResource, namespace, scheme, name, port, path string, params map[string]string) ProxyGetActionImpl { +func NewProxyGetAction(resource schema.GroupVersionResource, namespace, scheme, name, port, path string, params map[string]string) ProxyGetActionImpl { action := ProxyGetActionImpl{} action.Verb = "get" action.Resource = resource @@ -287,7 +287,7 @@ type WatchRestrictions struct { type Action interface { GetNamespace() string GetVerb() string - GetResource() unversioned.GroupVersionResource + GetResource() schema.GroupVersionResource GetSubresource() string Matches(verb, resource string) bool } @@ -339,7 +339,7 @@ type ProxyGetAction interface { type ActionImpl struct { Namespace string Verb string - Resource unversioned.GroupVersionResource + Resource schema.GroupVersionResource Subresource string } @@ -349,7 +349,7 @@ func (a ActionImpl) GetNamespace() string { func (a ActionImpl) GetVerb() string { return a.Verb } -func (a ActionImpl) GetResource() unversioned.GroupVersionResource { +func (a ActionImpl) GetResource() schema.GroupVersionResource { return a.Resource } func (a ActionImpl) GetSubresource() string { diff --git a/testing/fake.go b/testing/fake.go index 82e9efbf..192e635c 100644 --- a/testing/fake.go +++ b/testing/fake.go @@ -22,6 +22,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/version" "k8s.io/client-go/pkg/watch" "k8s.io/client-go/rest" @@ -221,7 +222,7 @@ type FakeDiscovery struct { func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*unversioned.APIResourceList, error) { action := ActionImpl{ Verb: "get", - Resource: unversioned.GroupVersionResource{Resource: "resource"}, + Resource: schema.GroupVersionResource{Resource: "resource"}, } c.Invokes(action, nil) return c.Resources[groupVersion], nil @@ -230,7 +231,7 @@ func (c *FakeDiscovery) ServerResourcesForGroupVersion(groupVersion string) (*un func (c *FakeDiscovery) ServerResources() (map[string]*unversioned.APIResourceList, error) { action := ActionImpl{ Verb: "get", - Resource: unversioned.GroupVersionResource{Resource: "resource"}, + Resource: schema.GroupVersionResource{Resource: "resource"}, } c.Invokes(action, nil) return c.Resources, nil @@ -243,7 +244,7 @@ func (c *FakeDiscovery) ServerGroups() (*unversioned.APIGroupList, error) { func (c *FakeDiscovery) ServerVersion() (*version.Info, error) { action := ActionImpl{} action.Verb = "get" - action.Resource = unversioned.GroupVersionResource{Resource: "version"} + action.Resource = schema.GroupVersionResource{Resource: "version"} c.Invokes(action, nil) versionInfo := version.Get() diff --git a/testing/fixture.go b/testing/fixture.go index 2a2d88c1..b8afc9fa 100644 --- a/testing/fixture.go +++ b/testing/fixture.go @@ -25,6 +25,7 @@ import ( "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/apimachinery/registered" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/watch" "k8s.io/client-go/rest" ) @@ -38,19 +39,19 @@ type ObjectTracker interface { Add(obj runtime.Object) error // Get retrieves the object by its kind, namespace and name. - Get(gvk unversioned.GroupVersionKind, ns, name string) (runtime.Object, error) + Get(gvk schema.GroupVersionKind, ns, name string) (runtime.Object, error) // Update updates an existing object in the tracker. Update(obj runtime.Object) error // List retrieves all objects of a given kind in the given // namespace. Only non-List kinds are accepted. - List(gvk unversioned.GroupVersionKind, ns string) (runtime.Object, error) + List(gvk schema.GroupVersionKind, ns string) (runtime.Object, error) // Delete deletes an existing object from the tracker. If object // didn't exist in the tracker prior to deletion, Delete returns // no error. - Delete(gvk unversioned.GroupVersionKind, ns, name string) error + Delete(gvk schema.GroupVersionKind, ns, name string) error } // ObjectScheme abstracts the implementation of common operations on objects. @@ -143,7 +144,7 @@ type tracker struct { scheme ObjectScheme decoder runtime.Decoder lock sync.RWMutex - objects map[unversioned.GroupVersionKind][]runtime.Object + objects map[schema.GroupVersionKind][]runtime.Object } var _ ObjectTracker = &tracker{} @@ -154,11 +155,11 @@ func NewObjectTracker(scheme ObjectScheme, decoder runtime.Decoder) ObjectTracke return &tracker{ scheme: scheme, decoder: decoder, - objects: make(map[unversioned.GroupVersionKind][]runtime.Object), + objects: make(map[schema.GroupVersionKind][]runtime.Object), } } -func (t *tracker) List(gvk unversioned.GroupVersionKind, ns string) (runtime.Object, error) { +func (t *tracker) List(gvk schema.GroupVersionKind, ns string) (runtime.Object, error) { // Heuristic for list kind: original kind + List suffix. Might // not always be true but this tracker has a pretty limited // understanding of the actual API model. @@ -195,12 +196,12 @@ func (t *tracker) List(gvk unversioned.GroupVersionKind, ns string) (runtime.Obj return list, nil } -func (t *tracker) Get(gvk unversioned.GroupVersionKind, ns, name string) (runtime.Object, error) { +func (t *tracker) Get(gvk schema.GroupVersionKind, ns, name string) (runtime.Object, error) { if err := checkNamespace(gvk, ns); err != nil { return nil, err } - errNotFound := errors.NewNotFound(unversioned.GroupResource{Group: gvk.Group, Resource: gvk.Kind}, name) + errNotFound := errors.NewNotFound(schema.GroupResource{Group: gvk.Group, Resource: gvk.Kind}, name) t.lock.RLock() defer t.lock.RUnlock() @@ -266,7 +267,7 @@ func (t *tracker) add(obj runtime.Object, replaceExisting bool) error { defer t.lock.Unlock() for _, gvk := range gvks { - gr := unversioned.GroupResource{Group: gvk.Group, Resource: gvk.Kind} + gr := schema.GroupResource{Group: gvk.Group, Resource: gvk.Kind} // To avoid the object from being accidentally modified by caller // after it's been added to the tracker, we always store the deep @@ -332,7 +333,7 @@ func (t *tracker) addList(obj runtime.Object, replaceExisting bool) error { return nil } -func (t *tracker) Delete(gvk unversioned.GroupVersionKind, ns, name string) error { +func (t *tracker) Delete(gvk schema.GroupVersionKind, ns, name string) error { if err := checkNamespace(gvk, ns); err != nil { return err } @@ -358,7 +359,7 @@ func (t *tracker) Delete(gvk unversioned.GroupVersionKind, ns, name string) erro return nil } - return errors.NewNotFound(unversioned.GroupResource{Group: gvk.Group, Resource: gvk.Kind}, name) + return errors.NewNotFound(schema.GroupResource{Group: gvk.Group, Resource: gvk.Kind}, name) } // filterByNamespaceAndName returns all objects in the collection that @@ -387,7 +388,7 @@ func filterByNamespaceAndName(objs []runtime.Object, ns, name string) ([]runtime // checkNamespace makes sure that the scope of gvk matches ns. It // returns an error if namespace is empty but gvk is a namespaced // kind, or if ns is non-empty and gvk is a namespaced kind. -func checkNamespace(gvk unversioned.GroupVersionKind, ns string) error { +func checkNamespace(gvk schema.GroupVersionKind, ns string) error { group, err := registered.Group(gvk.Group) if err != nil { return err diff --git a/tools/cache/controller_test.go b/tools/cache/controller_test.go index 2e74c11e..022e21f0 100644 --- a/tools/cache/controller_test.go +++ b/tools/cache/controller_test.go @@ -23,7 +23,7 @@ import ( "testing" "time" - "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" "k8s.io/client-go/pkg/util/sets" "k8s.io/client-go/pkg/util/wait" @@ -51,7 +51,7 @@ func Example() { cfg := &Config{ Queue: fifo, ListerWatcher: source, - ObjectType: &api.Pod{}, + ObjectType: &v1.Pod{}, FullResyncPeriod: time.Millisecond * 100, RetryOnError: false, @@ -101,7 +101,7 @@ func Example() { for _, name := range testIDs { // Note that these pods are not valid-- the fake source doesn't // call validation or anything. - source.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: name}}) + source.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: name}}) } // Let's wait for the controller to process the things we just added. @@ -130,7 +130,7 @@ func ExampleNewInformer() { // logs anything deleted. _, controller := NewInformer( source, - &api.Pod{}, + &v1.Pod{}, time.Millisecond*100, ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { @@ -158,7 +158,7 @@ func ExampleNewInformer() { for _, name := range testIDs { // Note that these pods are not valid-- the fake source doesn't // call validation or anything. - source.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: name}}) + source.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: name}}) } // Let's wait for the controller to process the things we just added. @@ -206,7 +206,7 @@ func TestHammerController(t *testing.T) { // Make a controller which just logs all the changes it gets. _, controller := NewInformer( source, - &api.Pod{}, + &v1.Pod{}, time.Millisecond*100, ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { recordFunc("add", obj) }, @@ -253,7 +253,7 @@ func TestHammerController(t *testing.T) { name = l[r.Intn(len(l))] } - pod := &api.Pod{} + pod := &v1.Pod{} f.Fuzz(pod) pod.ObjectMeta.Name = name pod.ObjectMeta.Namespace = "default" @@ -315,9 +315,9 @@ func TestUpdate(t *testing.T) { pair{FROM, FROM}: true, } - pod := func(name, check string, final bool) *api.Pod { - p := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := func(name, check string, final bool) *v1.Pod { + p := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: name, Labels: map[string]string{"check": check}, }, @@ -327,7 +327,7 @@ func TestUpdate(t *testing.T) { } return p } - deletePod := func(p *api.Pod) bool { + deletePod := func(p *v1.Pod) bool { return p.Labels["final"] == "true" } @@ -350,20 +350,20 @@ func TestUpdate(t *testing.T) { watchCh := make(chan struct{}) _, controller := NewInformer( &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { watch, err := source.Watch(options) close(watchCh) return watch, err }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { return source.List(options) }, }, - &api.Pod{}, + &v1.Pod{}, 0, ResourceEventHandlerFuncs{ UpdateFunc: func(oldObj, newObj interface{}) { - o, n := oldObj.(*api.Pod), newObj.(*api.Pod) + o, n := oldObj.(*v1.Pod), newObj.(*v1.Pod) from, to := o.Labels["check"], n.Labels["check"] if !allowedTransitions[pair{from, to}] { t.Errorf("observed transition %q -> %q for %v", from, to, n.Name) diff --git a/tools/cache/index_test.go b/tools/cache/index_test.go index 67943647..07cb8ac5 100644 --- a/tools/cache/index_test.go +++ b/tools/cache/index_test.go @@ -21,19 +21,20 @@ import ( "testing" "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" ) func testIndexFunc(obj interface{}) ([]string, error) { - pod := obj.(*api.Pod) + pod := obj.(*v1.Pod) return []string{pod.Labels["foo"]}, nil } func TestGetIndexFuncValues(t *testing.T) { index := NewIndexer(MetaNamespaceKeyFunc, Indexers{"testmodes": testIndexFunc}) - pod1 := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "one", Labels: map[string]string{"foo": "bar"}}} - pod2 := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "two", Labels: map[string]string{"foo": "bar"}}} - pod3 := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "tre", Labels: map[string]string{"foo": "biz"}}} + pod1 := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "one", Labels: map[string]string{"foo": "bar"}}} + pod2 := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "two", Labels: map[string]string{"foo": "bar"}}} + pod3 := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "tre", Labels: map[string]string{"foo": "biz"}}} index.Add(pod1) index.Add(pod2) @@ -52,7 +53,7 @@ func TestGetIndexFuncValues(t *testing.T) { } func testUsersIndexFunc(obj interface{}) ([]string, error) { - pod := obj.(*api.Pod) + pod := obj.(*v1.Pod) usersString := pod.Annotations["users"] return strings.Split(usersString, ","), nil @@ -61,9 +62,9 @@ func testUsersIndexFunc(obj interface{}) ([]string, error) { func TestMultiIndexKeys(t *testing.T) { index := NewIndexer(MetaNamespaceKeyFunc, Indexers{"byUser": testUsersIndexFunc}) - pod1 := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "one", Annotations: map[string]string{"users": "ernie,bert"}}} - pod2 := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "two", Annotations: map[string]string{"users": "bert,oscar"}}} - pod3 := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "tre", Annotations: map[string]string{"users": "ernie,elmo"}}} + pod1 := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "one", Annotations: map[string]string{"users": "ernie,bert"}}} + pod2 := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "two", Annotations: map[string]string{"users": "bert,oscar"}}} + pod3 := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "tre", Annotations: map[string]string{"users": "ernie,elmo"}}} index.Add(pod1) index.Add(pod2) @@ -121,7 +122,7 @@ func TestMultiIndexKeys(t *testing.T) { if err != nil { t.Errorf("unexpected error: %v", err) } - copyOfPod2 := obj.(*api.Pod) + copyOfPod2 := obj.(*v1.Pod) copyOfPod2.Annotations["users"] = "oscar" index.Update(copyOfPod2) bertPods, err = index.ByIndex("byUser", "bert") diff --git a/tools/cache/listers.go b/tools/cache/listers.go index eafac197..6fa98f20 100644 --- a/tools/cache/listers.go +++ b/tools/cache/listers.go @@ -20,17 +20,19 @@ import ( "fmt" "github.com/golang/glog" - "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/meta" "k8s.io/client-go/pkg/api/unversioned" - "k8s.io/client-go/pkg/apis/apps" - "k8s.io/client-go/pkg/apis/certificates" - "k8s.io/client-go/pkg/apis/extensions" - "k8s.io/client-go/pkg/apis/policy" - "k8s.io/client-go/pkg/apis/storage" + "k8s.io/client-go/pkg/api/v1" + apps "k8s.io/client-go/pkg/apis/apps/v1beta1" + certificates "k8s.io/client-go/pkg/apis/certificates/v1alpha1" + extensions "k8s.io/client-go/pkg/apis/extensions/v1beta1" + policy "k8s.io/client-go/pkg/apis/policy/v1beta1" + storageinternal "k8s.io/client-go/pkg/apis/storage" + storage "k8s.io/client-go/pkg/apis/storage/v1beta1" "k8s.io/client-go/pkg/labels" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // AppendFunc is used to add a matching item to whatever list the caller is using @@ -50,7 +52,7 @@ func ListAll(store Store, selector labels.Selector, appendFn AppendFunc) error { } func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selector, appendFn AppendFunc) error { - if namespace == api.NamespaceAll { + if namespace == v1.NamespaceAll { for _, m := range indexer.List() { metadata, err := meta.Accessor(m) if err != nil { @@ -63,7 +65,7 @@ func ListAllByNamespace(indexer Indexer, namespace string, selector labels.Selec return nil } - items, err := indexer.Index(NamespaceIndex, &api.ObjectMeta{Namespace: namespace}) + items, err := indexer.Index(NamespaceIndex, &v1.ObjectMeta{Namespace: namespace}) if err != nil { // Ignore error; do slow search without index. glog.Warningf("can not retrieve list of objects using index : %v", err) @@ -110,13 +112,13 @@ type GenericNamespaceLister interface { Get(name string) (runtime.Object, error) } -func NewGenericLister(indexer Indexer, resource unversioned.GroupResource) GenericLister { +func NewGenericLister(indexer Indexer, resource schema.GroupResource) GenericLister { return &genericLister{indexer: indexer, resource: resource} } type genericLister struct { indexer Indexer - resource unversioned.GroupResource + resource schema.GroupResource } func (s *genericLister) List(selector labels.Selector) (ret []runtime.Object, err error) { @@ -144,7 +146,7 @@ func (s *genericLister) Get(name string) (runtime.Object, error) { type genericNamespaceLister struct { indexer Indexer namespace string - resource unversioned.GroupResource + resource schema.GroupResource } func (s *genericNamespaceLister) List(selector labels.Selector) (ret []runtime.Object, err error) { @@ -170,7 +172,7 @@ func (s *genericNamespaceLister) Get(name string) (runtime.Object, error) { // NodeConditionPredicate is a function that indicates whether the given node's conditions meet // some set of criteria defined by the function. -type NodeConditionPredicate func(node *api.Node) bool +type NodeConditionPredicate func(node *v1.Node) bool // StoreToNodeLister makes a Store have the List method of the client.NodeInterface // The Store must contain (only) Nodes. @@ -178,9 +180,9 @@ type StoreToNodeLister struct { Store } -func (s *StoreToNodeLister) List() (machines api.NodeList, err error) { +func (s *StoreToNodeLister) List() (machines v1.NodeList, err error) { for _, m := range s.Store.List() { - machines.Items = append(machines.Items, *(m.(*api.Node))) + machines.Items = append(machines.Items, *(m.(*v1.Node))) } return machines, nil } @@ -199,9 +201,9 @@ type storeToNodeConditionLister struct { } // List returns a list of nodes that match the conditions defined by the predicate functions in the storeToNodeConditionLister. -func (s storeToNodeConditionLister) List() (nodes []*api.Node, err error) { +func (s storeToNodeConditionLister) List() (nodes []*v1.Node, err error) { for _, m := range s.store.List() { - node := m.(*api.Node) + node := m.(*v1.Node) if s.predicate(node) { nodes = append(nodes, node) } else { @@ -236,7 +238,7 @@ func (s *StoreToDaemonSetLister) List() (dss extensions.DaemonSetList, err error // GetPodDaemonSets returns a list of daemon sets managing a pod. // Returns an error if and only if no matching daemon sets are found. -func (s *StoreToDaemonSetLister) GetPodDaemonSets(pod *api.Pod) (daemonSets []extensions.DaemonSet, err error) { +func (s *StoreToDaemonSetLister) GetPodDaemonSets(pod *v1.Pod) (daemonSets []extensions.DaemonSet, err error) { var selector labels.Selector var daemonSet extensions.DaemonSet @@ -274,17 +276,17 @@ type StoreToEndpointsLister struct { } // List lists all endpoints in the store. -func (s *StoreToEndpointsLister) List() (services api.EndpointsList, err error) { +func (s *StoreToEndpointsLister) List() (services v1.EndpointsList, err error) { for _, m := range s.Store.List() { - services.Items = append(services.Items, *(m.(*api.Endpoints))) + services.Items = append(services.Items, *(m.(*v1.Endpoints))) } return services, nil } // GetServiceEndpoints returns the endpoints of a service, matched on service name. -func (s *StoreToEndpointsLister) GetServiceEndpoints(svc *api.Service) (ep api.Endpoints, err error) { +func (s *StoreToEndpointsLister) GetServiceEndpoints(svc *v1.Service) (ep v1.Endpoints, err error) { for _, m := range s.Store.List() { - ep = *m.(*api.Endpoints) + ep = *m.(*v1.Endpoints) if svc.Name == ep.Name && svc.Namespace == ep.Namespace { return ep, nil } @@ -299,8 +301,8 @@ type StoreToPVFetcher struct { } // GetPersistentVolumeInfo returns cached data for the PersistentVolume 'id'. -func (s *StoreToPVFetcher) GetPersistentVolumeInfo(id string) (*api.PersistentVolume, error) { - o, exists, err := s.Get(&api.PersistentVolume{ObjectMeta: api.ObjectMeta{Name: id}}) +func (s *StoreToPVFetcher) GetPersistentVolumeInfo(id string) (*v1.PersistentVolume, error) { + o, exists, err := s.Get(&v1.PersistentVolume{ObjectMeta: v1.ObjectMeta{Name: id}}) if err != nil { return nil, fmt.Errorf("error retrieving PersistentVolume '%v' from cache: %v", id, err) @@ -310,7 +312,7 @@ func (s *StoreToPVFetcher) GetPersistentVolumeInfo(id string) (*api.PersistentVo return nil, fmt.Errorf("PersistentVolume '%v' not found", id) } - return o.(*api.PersistentVolume), nil + return o.(*v1.PersistentVolume), nil } // StoreToStatefulSetLister gives a store List and Exists methods. The store must contain only StatefulSets. @@ -345,7 +347,7 @@ func (s *StoreToStatefulSetLister) StatefulSets(namespace string) storeStatefulS } // GetPodStatefulSets returns a list of StatefulSets managing a pod. Returns an error only if no matching StatefulSets are found. -func (s *StoreToStatefulSetLister) GetPodStatefulSets(pod *api.Pod) (psList []apps.StatefulSet, err error) { +func (s *StoreToStatefulSetLister) GetPodStatefulSets(pod *v1.Pod) (psList []apps.StatefulSet, err error) { var selector labels.Selector var ps apps.StatefulSet @@ -404,7 +406,7 @@ type StoreToPodDisruptionBudgetLister struct { } // GetPodPodDisruptionBudgets returns a list of PodDisruptionBudgets matching a pod. Returns an error only if no matching PodDisruptionBudgets are found. -func (s *StoreToPodDisruptionBudgetLister) GetPodPodDisruptionBudgets(pod *api.Pod) (pdbList []policy.PodDisruptionBudget, err error) { +func (s *StoreToPodDisruptionBudgetLister) GetPodPodDisruptionBudgets(pod *v1.Pod) (pdbList []policy.PodDisruptionBudget, err error) { var selector labels.Selector if len(pod.Labels) == 0 { @@ -466,13 +468,13 @@ func (s *storageClassLister) List(selector labels.Selector) (ret []*storage.Stor // List returns a list of storage classes func (s *storageClassLister) Get(name string) (*storage.StorageClass, error) { - key := &storage.StorageClass{ObjectMeta: api.ObjectMeta{Name: name}} + key := &storage.StorageClass{ObjectMeta: v1.ObjectMeta{Name: name}} obj, exists, err := s.indexer.Get(key) if err != nil { return nil, err } if !exists { - return nil, errors.NewNotFound(storage.Resource("storageclass"), name) + return nil, errors.NewNotFound(storageinternal.Resource("storageclass"), name) } return obj.(*storage.StorageClass), nil } diff --git a/tools/cache/listers_core.go b/tools/cache/listers_core.go index b9038e4a..19d613c3 100644 --- a/tools/cache/listers_core.go +++ b/tools/cache/listers_core.go @@ -21,6 +21,7 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/errors" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/labels" ) @@ -40,9 +41,9 @@ type StoreToPodLister struct { Indexer Indexer } -func (s *StoreToPodLister) List(selector labels.Selector) (ret []*api.Pod, err error) { +func (s *StoreToPodLister) List(selector labels.Selector) (ret []*v1.Pod, err error) { err = ListAll(s.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.Pod)) + ret = append(ret, m.(*v1.Pod)) }) return ret, err } @@ -56,14 +57,14 @@ type storePodsNamespacer struct { namespace string } -func (s storePodsNamespacer) List(selector labels.Selector) (ret []*api.Pod, err error) { +func (s storePodsNamespacer) List(selector labels.Selector) (ret []*v1.Pod, err error) { err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*api.Pod)) + ret = append(ret, m.(*v1.Pod)) }) return ret, err } -func (s storePodsNamespacer) Get(name string) (*api.Pod, error) { +func (s storePodsNamespacer) Get(name string) (*v1.Pod, error) { obj, exists, err := s.Indexer.GetByKey(s.namespace + "/" + name) if err != nil { return nil, err @@ -71,7 +72,7 @@ func (s storePodsNamespacer) Get(name string) (*api.Pod, error) { if !exists { return nil, errors.NewNotFound(api.Resource("pod"), name) } - return obj.(*api.Pod), nil + return obj.(*v1.Pod), nil } // StoreToServiceLister helps list services @@ -79,9 +80,9 @@ type StoreToServiceLister struct { Indexer Indexer } -func (s *StoreToServiceLister) List(selector labels.Selector) (ret []*api.Service, err error) { +func (s *StoreToServiceLister) List(selector labels.Selector) (ret []*v1.Service, err error) { err = ListAll(s.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.Service)) + ret = append(ret, m.(*v1.Service)) }) return ret, err } @@ -95,14 +96,14 @@ type storeServicesNamespacer struct { namespace string } -func (s storeServicesNamespacer) List(selector labels.Selector) (ret []*api.Service, err error) { +func (s storeServicesNamespacer) List(selector labels.Selector) (ret []*v1.Service, err error) { err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*api.Service)) + ret = append(ret, m.(*v1.Service)) }) return ret, err } -func (s storeServicesNamespacer) Get(name string) (*api.Service, error) { +func (s storeServicesNamespacer) Get(name string) (*v1.Service, error) { obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) if err != nil { return nil, err @@ -110,12 +111,12 @@ func (s storeServicesNamespacer) Get(name string) (*api.Service, error) { if !exists { return nil, errors.NewNotFound(api.Resource("service"), name) } - return obj.(*api.Service), nil + return obj.(*v1.Service), nil } // TODO: Move this back to scheduler as a helper function that takes a Store, // rather than a method of StoreToServiceLister. -func (s *StoreToServiceLister) GetPodServices(pod *api.Pod) (services []*api.Service, err error) { +func (s *StoreToServiceLister) GetPodServices(pod *v1.Pod) (services []*v1.Service, err error) { allServices, err := s.Services(pod.Namespace).List(labels.Everything()) if err != nil { return nil, err @@ -141,9 +142,9 @@ type StoreToReplicationControllerLister struct { Indexer Indexer } -func (s *StoreToReplicationControllerLister) List(selector labels.Selector) (ret []*api.ReplicationController, err error) { +func (s *StoreToReplicationControllerLister) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) { err = ListAll(s.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.ReplicationController)) + ret = append(ret, m.(*v1.ReplicationController)) }) return ret, err } @@ -157,14 +158,14 @@ type storeReplicationControllersNamespacer struct { namespace string } -func (s storeReplicationControllersNamespacer) List(selector labels.Selector) (ret []*api.ReplicationController, err error) { +func (s storeReplicationControllersNamespacer) List(selector labels.Selector) (ret []*v1.ReplicationController, err error) { err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*api.ReplicationController)) + ret = append(ret, m.(*v1.ReplicationController)) }) return ret, err } -func (s storeReplicationControllersNamespacer) Get(name string) (*api.ReplicationController, error) { +func (s storeReplicationControllersNamespacer) Get(name string) (*v1.ReplicationController, error) { obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) if err != nil { return nil, err @@ -172,24 +173,24 @@ func (s storeReplicationControllersNamespacer) Get(name string) (*api.Replicatio if !exists { return nil, errors.NewNotFound(api.Resource("replicationcontroller"), name) } - return obj.(*api.ReplicationController), nil + return obj.(*v1.ReplicationController), nil } // GetPodControllers returns a list of replication controllers managing a pod. Returns an error only if no matching controllers are found. -func (s *StoreToReplicationControllerLister) GetPodControllers(pod *api.Pod) (controllers []*api.ReplicationController, err error) { +func (s *StoreToReplicationControllerLister) GetPodControllers(pod *v1.Pod) (controllers []*v1.ReplicationController, err error) { if len(pod.Labels) == 0 { err = fmt.Errorf("no controllers found for pod %v because it has no labels", pod.Name) return } - key := &api.ReplicationController{ObjectMeta: api.ObjectMeta{Namespace: pod.Namespace}} + key := &v1.ReplicationController{ObjectMeta: v1.ObjectMeta{Namespace: pod.Namespace}} items, err := s.Indexer.Index(NamespaceIndex, key) if err != nil { return } for _, m := range items { - rc := m.(*api.ReplicationController) + rc := m.(*v1.ReplicationController) selector := labels.Set(rc.Spec.Selector).AsSelectorPreValidated() // If an rc with a nil or empty selector creeps in, it should match nothing, not everything. @@ -209,9 +210,9 @@ type StoreToServiceAccountLister struct { Indexer Indexer } -func (s *StoreToServiceAccountLister) List(selector labels.Selector) (ret []*api.ServiceAccount, err error) { +func (s *StoreToServiceAccountLister) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) { err = ListAll(s.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.ServiceAccount)) + ret = append(ret, m.(*v1.ServiceAccount)) }) return ret, err } @@ -225,14 +226,14 @@ type storeServiceAccountsNamespacer struct { namespace string } -func (s storeServiceAccountsNamespacer) List(selector labels.Selector) (ret []*api.ServiceAccount, err error) { +func (s storeServiceAccountsNamespacer) List(selector labels.Selector) (ret []*v1.ServiceAccount, err error) { err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*api.ServiceAccount)) + ret = append(ret, m.(*v1.ServiceAccount)) }) return ret, err } -func (s storeServiceAccountsNamespacer) Get(name string) (*api.ServiceAccount, error) { +func (s storeServiceAccountsNamespacer) Get(name string) (*v1.ServiceAccount, error) { obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) if err != nil { return nil, err @@ -240,7 +241,7 @@ func (s storeServiceAccountsNamespacer) Get(name string) (*api.ServiceAccount, e if !exists { return nil, errors.NewNotFound(api.Resource("serviceaccount"), name) } - return obj.(*api.ServiceAccount), nil + return obj.(*v1.ServiceAccount), nil } // StoreToLimitRangeLister helps list limit ranges @@ -248,9 +249,9 @@ type StoreToLimitRangeLister struct { Indexer Indexer } -func (s *StoreToLimitRangeLister) List(selector labels.Selector) (ret []*api.LimitRange, err error) { +func (s *StoreToLimitRangeLister) List(selector labels.Selector) (ret []*v1.LimitRange, err error) { err = ListAll(s.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.LimitRange)) + ret = append(ret, m.(*v1.LimitRange)) }) return ret, err } @@ -261,9 +262,9 @@ type StoreToPersistentVolumeClaimLister struct { } // List returns all persistentvolumeclaims that match the specified selector -func (s *StoreToPersistentVolumeClaimLister) List(selector labels.Selector) (ret []*api.PersistentVolumeClaim, err error) { +func (s *StoreToPersistentVolumeClaimLister) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { err = ListAll(s.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.PersistentVolumeClaim)) + ret = append(ret, m.(*v1.PersistentVolumeClaim)) }) return ret, err } @@ -277,14 +278,14 @@ type storeLimitRangesNamespacer struct { namespace string } -func (s storeLimitRangesNamespacer) List(selector labels.Selector) (ret []*api.LimitRange, err error) { +func (s storeLimitRangesNamespacer) List(selector labels.Selector) (ret []*v1.LimitRange, err error) { err = ListAllByNamespace(s.indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*api.LimitRange)) + ret = append(ret, m.(*v1.LimitRange)) }) return ret, err } -func (s storeLimitRangesNamespacer) Get(name string) (*api.LimitRange, error) { +func (s storeLimitRangesNamespacer) Get(name string) (*v1.LimitRange, error) { obj, exists, err := s.indexer.GetByKey(s.namespace + "/" + name) if err != nil { return nil, err @@ -292,7 +293,7 @@ func (s storeLimitRangesNamespacer) Get(name string) (*api.LimitRange, error) { if !exists { return nil, errors.NewNotFound(api.Resource("limitrange"), name) } - return obj.(*api.LimitRange), nil + return obj.(*v1.LimitRange), nil } // PersistentVolumeClaims returns all claims in a specified namespace. @@ -305,14 +306,14 @@ type storePersistentVolumeClaimsNamespacer struct { namespace string } -func (s storePersistentVolumeClaimsNamespacer) List(selector labels.Selector) (ret []*api.PersistentVolumeClaim, err error) { +func (s storePersistentVolumeClaimsNamespacer) List(selector labels.Selector) (ret []*v1.PersistentVolumeClaim, err error) { err = ListAllByNamespace(s.Indexer, s.namespace, selector, func(m interface{}) { - ret = append(ret, m.(*api.PersistentVolumeClaim)) + ret = append(ret, m.(*v1.PersistentVolumeClaim)) }) return ret, err } -func (s storePersistentVolumeClaimsNamespacer) Get(name string) (*api.PersistentVolumeClaim, error) { +func (s storePersistentVolumeClaimsNamespacer) Get(name string) (*v1.PersistentVolumeClaim, error) { obj, exists, err := s.Indexer.GetByKey(s.namespace + "/" + name) if err != nil { return nil, err @@ -320,7 +321,7 @@ func (s storePersistentVolumeClaimsNamespacer) Get(name string) (*api.Persistent if !exists { return nil, errors.NewNotFound(api.Resource("persistentvolumeclaims"), name) } - return obj.(*api.PersistentVolumeClaim), nil + return obj.(*v1.PersistentVolumeClaim), nil } // IndexerToNamespaceLister gives an Indexer List method @@ -329,14 +330,14 @@ type IndexerToNamespaceLister struct { } // List returns a list of namespaces -func (i *IndexerToNamespaceLister) List(selector labels.Selector) (ret []*api.Namespace, err error) { +func (i *IndexerToNamespaceLister) List(selector labels.Selector) (ret []*v1.Namespace, err error) { err = ListAll(i.Indexer, selector, func(m interface{}) { - ret = append(ret, m.(*api.Namespace)) + ret = append(ret, m.(*v1.Namespace)) }) return ret, err } -func (i *IndexerToNamespaceLister) Get(name string) (*api.Namespace, error) { +func (i *IndexerToNamespaceLister) Get(name string) (*v1.Namespace, error) { obj, exists, err := i.Indexer.GetByKey(name) if err != nil { return nil, err @@ -344,5 +345,5 @@ func (i *IndexerToNamespaceLister) Get(name string) (*api.Namespace, error) { if !exists { return nil, errors.NewNotFound(api.Resource("namespace"), name) } - return obj.(*api.Namespace), nil + return obj.(*v1.Namespace), nil } diff --git a/tools/cache/listers_extensions.go b/tools/cache/listers_extensions.go index 7281df9e..b9a9a792 100644 --- a/tools/cache/listers_extensions.go +++ b/tools/cache/listers_extensions.go @@ -19,10 +19,11 @@ package cache import ( "fmt" - "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/unversioned" - "k8s.io/client-go/pkg/apis/extensions" + "k8s.io/client-go/pkg/api/v1" + extensionsinternal "k8s.io/client-go/pkg/apis/extensions" + extensions "k8s.io/client-go/pkg/apis/extensions/v1beta1" "k8s.io/client-go/pkg/labels" ) @@ -71,7 +72,7 @@ func (s storeDeploymentsNamespacer) Get(name string) (*extensions.Deployment, er return nil, err } if !exists { - return nil, errors.NewNotFound(extensions.Resource("deployment"), name) + return nil, errors.NewNotFound(extensionsinternal.Resource("deployment"), name) } return obj.(*extensions.Deployment), nil } @@ -107,7 +108,7 @@ func (s *StoreToDeploymentLister) GetDeploymentsForReplicaSet(rs *extensions.Rep // GetDeploymentsForDeployments returns a list of deployments managing a pod. Returns an error only if no matching deployments are found. // TODO eliminate shallow copies -func (s *StoreToDeploymentLister) GetDeploymentsForPod(pod *api.Pod) (deployments []*extensions.Deployment, err error) { +func (s *StoreToDeploymentLister) GetDeploymentsForPod(pod *v1.Pod) (deployments []*extensions.Deployment, err error) { if len(pod.Labels) == 0 { err = fmt.Errorf("no deployments found for Pod %v because it has no labels", pod.Name) return @@ -172,13 +173,13 @@ func (s storeReplicaSetsNamespacer) Get(name string) (*extensions.ReplicaSet, er return nil, err } if !exists { - return nil, errors.NewNotFound(extensions.Resource("replicaset"), name) + return nil, errors.NewNotFound(extensionsinternal.Resource("replicaset"), name) } return obj.(*extensions.ReplicaSet), nil } // GetPodReplicaSets returns a list of ReplicaSets managing a pod. Returns an error only if no matching ReplicaSets are found. -func (s *StoreToReplicaSetLister) GetPodReplicaSets(pod *api.Pod) (rss []*extensions.ReplicaSet, err error) { +func (s *StoreToReplicaSetLister) GetPodReplicaSets(pod *v1.Pod) (rss []*extensions.ReplicaSet, err error) { if len(pod.Labels) == 0 { err = fmt.Errorf("no ReplicaSets found for pod %v because it has no labels", pod.Name) return diff --git a/tools/cache/listers_rbac.go b/tools/cache/listers_rbac.go index fb9906f1..a8463667 100644 --- a/tools/cache/listers_rbac.go +++ b/tools/cache/listers_rbac.go @@ -18,7 +18,7 @@ package cache import ( "k8s.io/client-go/pkg/api/errors" - "k8s.io/client-go/pkg/apis/rbac" + rbac "k8s.io/client-go/pkg/apis/rbac" "k8s.io/client-go/pkg/labels" ) diff --git a/tools/cache/listers_test.go b/tools/cache/listers_test.go index ff1d0b3e..12b3884e 100644 --- a/tools/cache/listers_test.go +++ b/tools/cache/listers_test.go @@ -19,10 +19,10 @@ package cache import ( "testing" - "k8s.io/client-go/pkg/api" apierrors "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/unversioned" - "k8s.io/client-go/pkg/apis/extensions" + "k8s.io/client-go/pkg/api/v1" + extensions "k8s.io/client-go/pkg/apis/extensions/v1beta1" "k8s.io/client-go/pkg/labels" "k8s.io/client-go/pkg/util/sets" ) @@ -31,7 +31,7 @@ func TestStoreToNodeLister(t *testing.T) { store := NewStore(MetaNamespaceKeyFunc) ids := sets.NewString("foo", "bar", "baz") for id := range ids { - store.Add(&api.Node{ObjectMeta: api.ObjectMeta{Name: id}}) + store.Add(&v1.Node{ObjectMeta: v1.ObjectMeta{Name: id}}) } sml := StoreToNodeLister{store} @@ -50,44 +50,44 @@ func TestStoreToNodeLister(t *testing.T) { func TestStoreToNodeConditionLister(t *testing.T) { store := NewStore(MetaNamespaceKeyFunc) - nodes := []*api.Node{ + nodes := []*v1.Node{ { - ObjectMeta: api.ObjectMeta{Name: "foo"}, - Status: api.NodeStatus{ - Conditions: []api.NodeCondition{ + ObjectMeta: v1.ObjectMeta{Name: "foo"}, + Status: v1.NodeStatus{ + Conditions: []v1.NodeCondition{ { - Type: api.NodeReady, - Status: api.ConditionTrue, + Type: v1.NodeReady, + Status: v1.ConditionTrue, }, { - Type: api.NodeOutOfDisk, - Status: api.ConditionFalse, + Type: v1.NodeOutOfDisk, + Status: v1.ConditionFalse, }, }, }, }, { - ObjectMeta: api.ObjectMeta{Name: "bar"}, - Status: api.NodeStatus{ - Conditions: []api.NodeCondition{ + ObjectMeta: v1.ObjectMeta{Name: "bar"}, + Status: v1.NodeStatus{ + Conditions: []v1.NodeCondition{ { - Type: api.NodeOutOfDisk, - Status: api.ConditionTrue, + Type: v1.NodeOutOfDisk, + Status: v1.ConditionTrue, }, }, }, }, { - ObjectMeta: api.ObjectMeta{Name: "baz"}, - Status: api.NodeStatus{ - Conditions: []api.NodeCondition{ + ObjectMeta: v1.ObjectMeta{Name: "baz"}, + Status: v1.NodeStatus{ + Conditions: []v1.NodeCondition{ { - Type: api.NodeReady, - Status: api.ConditionFalse, + Type: v1.NodeReady, + Status: v1.ConditionFalse, }, { - Type: api.NodeOutOfDisk, - Status: api.ConditionUnknown, + Type: v1.NodeOutOfDisk, + Status: v1.ConditionUnknown, }, }, }, @@ -97,9 +97,9 @@ func TestStoreToNodeConditionLister(t *testing.T) { store.Add(n) } - predicate := func(node *api.Node) bool { + predicate := func(node *v1.Node) bool { for _, cond := range node.Status.Conditions { - if cond.Type == api.NodeOutOfDisk && cond.Status == api.ConditionTrue { + if cond.Type == v1.NodeOutOfDisk && cond.Status == v1.ConditionTrue { return false } } @@ -126,65 +126,65 @@ func TestStoreToNodeConditionLister(t *testing.T) { func TestStoreToReplicationControllerLister(t *testing.T) { testCases := []struct { description string - inRCs []*api.ReplicationController - list func(StoreToReplicationControllerLister) ([]*api.ReplicationController, error) + inRCs []*v1.ReplicationController + list func(StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) outRCNames sets.String expectErr bool onlyIfIndexedByNamespace bool }{ { description: "Verify we can search all namespaces", - inRCs: []*api.ReplicationController{ + inRCs: []*v1.ReplicationController{ { - ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "bar"}, + ObjectMeta: v1.ObjectMeta{Name: "foo", Namespace: "bar"}, }, { - ObjectMeta: api.ObjectMeta{Name: "hmm", Namespace: "hmm"}, + ObjectMeta: v1.ObjectMeta{Name: "hmm", Namespace: "hmm"}, }, }, - list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) { - return lister.ReplicationControllers(api.NamespaceAll).List(labels.Set{}.AsSelectorPreValidated()) + list: func(lister StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) { + return lister.ReplicationControllers(v1.NamespaceAll).List(labels.Set{}.AsSelectorPreValidated()) }, outRCNames: sets.NewString("hmm", "foo"), }, { description: "Verify we can search a specific namespace", - inRCs: []*api.ReplicationController{ + inRCs: []*v1.ReplicationController{ { - ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: "bar"}, + ObjectMeta: v1.ObjectMeta{Name: "foo", Namespace: "bar"}, }, { - ObjectMeta: api.ObjectMeta{Name: "hmm", Namespace: "hmm"}, + ObjectMeta: v1.ObjectMeta{Name: "hmm", Namespace: "hmm"}, }, }, - list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) { + list: func(lister StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) { return lister.ReplicationControllers("hmm").List(labels.Set{}.AsSelectorPreValidated()) }, outRCNames: sets.NewString("hmm"), }, { description: "Basic listing with all labels and no selectors", - inRCs: []*api.ReplicationController{ - {ObjectMeta: api.ObjectMeta{Name: "basic"}}, + inRCs: []*v1.ReplicationController{ + {ObjectMeta: v1.ObjectMeta{Name: "basic"}}, }, - list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) { + list: func(lister StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) { return lister.List(labels.Everything()) }, outRCNames: sets.NewString("basic"), }, { description: "No pod labels", - inRCs: []*api.ReplicationController{ + inRCs: []*v1.ReplicationController{ { - ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"}, - Spec: api.ReplicationControllerSpec{ + ObjectMeta: v1.ObjectMeta{Name: "basic", Namespace: "ns"}, + Spec: v1.ReplicationControllerSpec{ Selector: map[string]string{"foo": "baz"}, }, }, }, - list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{Name: "pod1", Namespace: "ns"}, + list: func(lister StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) { + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{Name: "pod1", Namespace: "ns"}, } return lister.GetPodControllers(pod) }, @@ -193,14 +193,14 @@ func TestStoreToReplicationControllerLister(t *testing.T) { }, { description: "No RC selectors", - inRCs: []*api.ReplicationController{ + inRCs: []*v1.ReplicationController{ { - ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "basic", Namespace: "ns"}, }, }, - list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + list: func(lister StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) { + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "pod1", Namespace: "ns", Labels: map[string]string{"foo": "bar"}, @@ -213,23 +213,23 @@ func TestStoreToReplicationControllerLister(t *testing.T) { }, { description: "Matching labels to selectors and namespace", - inRCs: []*api.ReplicationController{ + inRCs: []*v1.ReplicationController{ { - ObjectMeta: api.ObjectMeta{Name: "foo"}, - Spec: api.ReplicationControllerSpec{ + ObjectMeta: v1.ObjectMeta{Name: "foo"}, + Spec: v1.ReplicationControllerSpec{ Selector: map[string]string{"foo": "bar"}, }, }, { - ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "ns"}, - Spec: api.ReplicationControllerSpec{ + ObjectMeta: v1.ObjectMeta{Name: "bar", Namespace: "ns"}, + Spec: v1.ReplicationControllerSpec{ Selector: map[string]string{"foo": "bar"}, }, }, }, - list: func(lister StoreToReplicationControllerLister) ([]*api.ReplicationController, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + list: func(lister StoreToReplicationControllerLister) ([]*v1.ReplicationController, error) { + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "pod1", Labels: map[string]string{"foo": "bar"}, Namespace: "ns", @@ -290,7 +290,7 @@ func TestStoreToReplicaSetLister(t *testing.T) { // Basic listing with all labels and no selectors { inRSs: []*extensions.ReplicaSet{ - {ObjectMeta: api.ObjectMeta{Name: "basic"}}, + {ObjectMeta: v1.ObjectMeta{Name: "basic"}}, }, list: func() ([]*extensions.ReplicaSet, error) { return lister.List(labels.Everything()) @@ -301,15 +301,15 @@ func TestStoreToReplicaSetLister(t *testing.T) { { inRSs: []*extensions.ReplicaSet{ { - ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "basic", Namespace: "ns"}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "baz"}}, }, }, }, list: func() ([]*extensions.ReplicaSet, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{Name: "pod1", Namespace: "ns"}, + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{Name: "pod1", Namespace: "ns"}, } return lister.GetPodReplicaSets(pod) }, @@ -320,12 +320,12 @@ func TestStoreToReplicaSetLister(t *testing.T) { { inRSs: []*extensions.ReplicaSet{ { - ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "basic", Namespace: "ns"}, }, }, list: func() ([]*extensions.ReplicaSet, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "pod1", Namespace: "ns", Labels: map[string]string{"foo": "bar"}, @@ -340,21 +340,21 @@ func TestStoreToReplicaSetLister(t *testing.T) { { inRSs: []*extensions.ReplicaSet{ { - ObjectMeta: api.ObjectMeta{Name: "foo"}, + ObjectMeta: v1.ObjectMeta{Name: "foo"}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}}, }, }, { - ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "bar", Namespace: "ns"}, Spec: extensions.ReplicaSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}}, }, }, }, list: func() ([]*extensions.ReplicaSet, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "pod1", Labels: map[string]string{"foo": "bar"}, Namespace: "ns", @@ -402,7 +402,7 @@ func TestStoreToDaemonSetLister(t *testing.T) { // Basic listing { inDSs: []*extensions.DaemonSet{ - {ObjectMeta: api.ObjectMeta{Name: "basic"}}, + {ObjectMeta: v1.ObjectMeta{Name: "basic"}}, }, list: func() ([]extensions.DaemonSet, error) { list, err := lister.List() @@ -413,9 +413,9 @@ func TestStoreToDaemonSetLister(t *testing.T) { // Listing multiple daemon sets { inDSs: []*extensions.DaemonSet{ - {ObjectMeta: api.ObjectMeta{Name: "basic"}}, - {ObjectMeta: api.ObjectMeta{Name: "complex"}}, - {ObjectMeta: api.ObjectMeta{Name: "complex2"}}, + {ObjectMeta: v1.ObjectMeta{Name: "basic"}}, + {ObjectMeta: v1.ObjectMeta{Name: "complex"}}, + {ObjectMeta: v1.ObjectMeta{Name: "complex2"}}, }, list: func() ([]extensions.DaemonSet, error) { list, err := lister.List() @@ -427,15 +427,15 @@ func TestStoreToDaemonSetLister(t *testing.T) { { inDSs: []*extensions.DaemonSet{ { - ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "basic", Namespace: "ns"}, Spec: extensions.DaemonSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "baz"}}, }, }, }, list: func() ([]extensions.DaemonSet, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{Name: "pod1", Namespace: "ns"}, + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{Name: "pod1", Namespace: "ns"}, } return lister.GetPodDaemonSets(pod) }, @@ -446,12 +446,12 @@ func TestStoreToDaemonSetLister(t *testing.T) { { inDSs: []*extensions.DaemonSet{ { - ObjectMeta: api.ObjectMeta{Name: "basic", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "basic", Namespace: "ns"}, }, }, list: func() ([]extensions.DaemonSet, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "pod1", Namespace: "ns", Labels: map[string]string{"foo": "bar"}, @@ -466,21 +466,21 @@ func TestStoreToDaemonSetLister(t *testing.T) { { inDSs: []*extensions.DaemonSet{ { - ObjectMeta: api.ObjectMeta{Name: "foo"}, + ObjectMeta: v1.ObjectMeta{Name: "foo"}, Spec: extensions.DaemonSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}}, }, }, { - ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: "ns"}, + ObjectMeta: v1.ObjectMeta{Name: "bar", Namespace: "ns"}, Spec: extensions.DaemonSetSpec{ Selector: &unversioned.LabelSelector{MatchLabels: map[string]string{"foo": "bar"}}, }, }, }, list: func() ([]extensions.DaemonSet, error) { - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "pod1", Labels: map[string]string{"foo": "bar"}, Namespace: "ns", @@ -527,25 +527,25 @@ func TestStoreToPodLister(t *testing.T) { for _, store := range stores { ids := []string{"foo", "bar", "baz"} for _, id := range ids { - store.Add(&api.Pod{ - ObjectMeta: api.ObjectMeta{ + store.Add(&v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Namespace: "other", Name: id, Labels: map[string]string{"name": id}, }, }) } - store.Add(&api.Pod{ - ObjectMeta: api.ObjectMeta{ + store.Add(&v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "quux", - Namespace: api.NamespaceDefault, + Namespace: v1.NamespaceDefault, Labels: map[string]string{"name": "quux"}, }, }) spl := StoreToPodLister{store} // Verify that we can always look up by Namespace. - defaultPods, err := spl.Pods(api.NamespaceDefault).List(labels.Set{}.AsSelectorPreValidated()) + defaultPods, err := spl.Pods(v1.NamespaceDefault).List(labels.Set{}.AsSelectorPreValidated()) if err != nil { t.Errorf("Unexpected error: %v", err) } else if e, a := 1, len(defaultPods); e != a { @@ -583,17 +583,17 @@ func TestStoreToPodLister(t *testing.T) { func TestStoreToServiceLister(t *testing.T) { store := NewIndexer(MetaNamespaceKeyFunc, Indexers{NamespaceIndex: MetaNamespaceIndexFunc}) - store.Add(&api.Service{ - ObjectMeta: api.ObjectMeta{Name: "foo"}, - Spec: api.ServiceSpec{ + store.Add(&v1.Service{ + ObjectMeta: v1.ObjectMeta{Name: "foo"}, + Spec: v1.ServiceSpec{ Selector: map[string]string{}, }, }) - store.Add(&api.Service{ObjectMeta: api.ObjectMeta{Name: "bar"}}) + store.Add(&v1.Service{ObjectMeta: v1.ObjectMeta{Name: "bar"}}) ssl := StoreToServiceLister{store} - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "foopod", Labels: map[string]string{"role": "foo"}, }, diff --git a/tools/cache/listwatch.go b/tools/cache/listwatch.go index d3c7d67d..05559faf 100644 --- a/tools/cache/listwatch.go +++ b/tools/cache/listwatch.go @@ -21,6 +21,7 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/meta" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/fields" "k8s.io/client-go/pkg/runtime" "k8s.io/client-go/pkg/watch" @@ -31,16 +32,16 @@ import ( type ListerWatcher interface { // List should return a list type object; the Items field will be extracted, and the // ResourceVersion field will be used to start the watch in the right place. - List(options api.ListOptions) (runtime.Object, error) + List(options v1.ListOptions) (runtime.Object, error) // Watch should begin a watch at the specified version. - Watch(options api.ListOptions) (watch.Interface, error) + Watch(options v1.ListOptions) (watch.Interface, error) } // ListFunc knows how to list resources -type ListFunc func(options api.ListOptions) (runtime.Object, error) +type ListFunc func(options v1.ListOptions) (runtime.Object, error) // WatchFunc knows how to watch resources -type WatchFunc func(options api.ListOptions) (watch.Interface, error) +type WatchFunc func(options v1.ListOptions) (watch.Interface, error) // ListWatch knows how to list and watch a set of apiserver resources. It satisfies the ListerWatcher interface. // It is a convenience function for users of NewReflector, etc. @@ -57,7 +58,7 @@ type Getter interface { // NewListWatchFromClient creates a new ListWatch from the specified client, resource, namespace and field selector. func NewListWatchFromClient(c Getter, resource string, namespace string, fieldSelector fields.Selector) *ListWatch { - listFunc := func(options api.ListOptions) (runtime.Object, error) { + listFunc := func(options v1.ListOptions) (runtime.Object, error) { return c.Get(). Namespace(namespace). Resource(resource). @@ -66,7 +67,7 @@ func NewListWatchFromClient(c Getter, resource string, namespace string, fieldSe Do(). Get() } - watchFunc := func(options api.ListOptions) (watch.Interface, error) { + watchFunc := func(options v1.ListOptions) (watch.Interface, error) { return c.Get(). Prefix("watch"). Namespace(namespace). @@ -78,7 +79,7 @@ func NewListWatchFromClient(c Getter, resource string, namespace string, fieldSe return &ListWatch{ListFunc: listFunc, WatchFunc: watchFunc} } -func timeoutFromListOptions(options api.ListOptions) time.Duration { +func timeoutFromListOptions(options v1.ListOptions) time.Duration { if options.TimeoutSeconds != nil { return time.Duration(*options.TimeoutSeconds) * time.Second } @@ -86,12 +87,12 @@ func timeoutFromListOptions(options api.ListOptions) time.Duration { } // List a set of apiserver resources -func (lw *ListWatch) List(options api.ListOptions) (runtime.Object, error) { +func (lw *ListWatch) List(options v1.ListOptions) (runtime.Object, error) { return lw.ListFunc(options) } // Watch a set of apiserver resources -func (lw *ListWatch) Watch(options api.ListOptions) (watch.Interface, error) { +func (lw *ListWatch) Watch(options v1.ListOptions) (watch.Interface, error) { return lw.WatchFunc(options) } @@ -101,7 +102,7 @@ func ListWatchUntil(timeout time.Duration, lw ListerWatcher, conditions ...watch return nil, nil } - list, err := lw.List(api.ListOptions{}) + list, err := lw.List(v1.ListOptions{}) if err != nil { return nil, err } @@ -153,7 +154,7 @@ func ListWatchUntil(timeout time.Duration, lw ListerWatcher, conditions ...watch } currResourceVersion := metaObj.GetResourceVersion() - watchInterface, err := lw.Watch(api.ListOptions{ResourceVersion: currResourceVersion}) + watchInterface, err := lw.Watch(v1.ListOptions{ResourceVersion: currResourceVersion}) if err != nil { return nil, err } diff --git a/tools/cache/mutation_detector_test.go b/tools/cache/mutation_detector_test.go index 7614ab5c..557c8c83 100644 --- a/tools/cache/mutation_detector_test.go +++ b/tools/cache/mutation_detector_test.go @@ -22,7 +22,7 @@ import ( "testing" "time" - "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" "k8s.io/client-go/pkg/watch" ) @@ -30,15 +30,15 @@ import ( func TestMutationDetector(t *testing.T) { fakeWatch := watch.NewFake() lw := &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { return fakeWatch, nil }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { - return &api.PodList{}, nil + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return &v1.PodList{}, nil }, } - pod := &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: "anything", Labels: map[string]string{"check": "foo"}, }, @@ -48,7 +48,7 @@ func TestMutationDetector(t *testing.T) { addReceived := make(chan bool) mutationFound := make(chan bool) - informer := NewSharedInformer(lw, &api.Pod{}, 1*time.Second).(*sharedIndexInformer) + informer := NewSharedInformer(lw, &v1.Pod{}, 1*time.Second).(*sharedIndexInformer) informer.cacheMutationDetector = &defaultCacheMutationDetector{ name: "name", period: 1 * time.Second, diff --git a/tools/cache/reflector.go b/tools/cache/reflector.go index 55da33ee..5d95b229 100644 --- a/tools/cache/reflector.go +++ b/tools/cache/reflector.go @@ -34,9 +34,9 @@ import ( "time" "github.com/golang/glog" - "k8s.io/client-go/pkg/api" apierrs "k8s.io/client-go/pkg/api/errors" "k8s.io/client-go/pkg/api/meta" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" utilruntime "k8s.io/client-go/pkg/util/runtime" "k8s.io/client-go/pkg/util/wait" @@ -239,7 +239,7 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { // Explicitly set "0" as resource version - it's fine for the List() // to be served from cache and potentially be delayed relative to // etcd contents. Reflector framework will catch up via Watch() eventually. - options := api.ListOptions{ResourceVersion: "0"} + options := v1.ListOptions{ResourceVersion: "0"} list, err := r.listerWatcher.List(options) if err != nil { return fmt.Errorf("%s: Failed to list %v: %v", r.name, r.expectedType, err) @@ -278,7 +278,7 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { for { timemoutseconds := int64(minWatchTimeout.Seconds() * (rand.Float64() + 1.0)) - options = api.ListOptions{ + options = v1.ListOptions{ ResourceVersion: resourceVersion, // We want to avoid situations of hanging watchers. Stop any wachers that do not // receive any events within the timeout window. diff --git a/tools/cache/reflector_test.go b/tools/cache/reflector_test.go index 9ae39afa..9600ee87 100644 --- a/tools/cache/reflector_test.go +++ b/tools/cache/reflector_test.go @@ -24,8 +24,8 @@ import ( "testing" "time" - "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/unversioned" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" "k8s.io/client-go/pkg/util/wait" "k8s.io/client-go/pkg/watch" @@ -34,27 +34,27 @@ import ( var nevererrc chan error type testLW struct { - ListFunc func(options api.ListOptions) (runtime.Object, error) - WatchFunc func(options api.ListOptions) (watch.Interface, error) + ListFunc func(options v1.ListOptions) (runtime.Object, error) + WatchFunc func(options v1.ListOptions) (watch.Interface, error) } -func (t *testLW) List(options api.ListOptions) (runtime.Object, error) { +func (t *testLW) List(options v1.ListOptions) (runtime.Object, error) { return t.ListFunc(options) } -func (t *testLW) Watch(options api.ListOptions) (watch.Interface, error) { +func (t *testLW) Watch(options v1.ListOptions) (watch.Interface, error) { return t.WatchFunc(options) } func TestCloseWatchChannelOnError(t *testing.T) { - r := NewReflector(&testLW{}, &api.Pod{}, NewStore(MetaNamespaceKeyFunc), 0) - pod := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "bar"}} + r := NewReflector(&testLW{}, &v1.Pod{}, NewStore(MetaNamespaceKeyFunc), 0) + pod := &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "bar"}} fw := watch.NewFake() r.listerWatcher = &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { return fw, nil }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { - return &api.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "1"}}, nil + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "1"}}, nil }, } go r.ListAndWatch(wait.NeverStop) @@ -73,20 +73,20 @@ func TestCloseWatchChannelOnError(t *testing.T) { func TestRunUntil(t *testing.T) { stopCh := make(chan struct{}) store := NewStore(MetaNamespaceKeyFunc) - r := NewReflector(&testLW{}, &api.Pod{}, store, 0) + r := NewReflector(&testLW{}, &v1.Pod{}, store, 0) fw := watch.NewFake() r.listerWatcher = &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { return fw, nil }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { - return &api.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "1"}}, nil + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "1"}}, nil }, } r.RunUntil(stopCh) // Synchronously add a dummy pod into the watch channel so we // know the RunUntil go routine is in the watch handler. - fw.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: "bar"}}) + fw.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "bar"}}) close(stopCh) select { case _, ok := <-fw.ResultChan(): @@ -101,7 +101,7 @@ func TestRunUntil(t *testing.T) { func TestReflectorResyncChan(t *testing.T) { s := NewStore(MetaNamespaceKeyFunc) - g := NewReflector(&testLW{}, &api.Pod{}, s, time.Millisecond) + g := NewReflector(&testLW{}, &v1.Pod{}, s, time.Millisecond) a, _ := g.resyncChan() b := time.After(wait.ForeverTestTimeout) select { @@ -114,7 +114,7 @@ func TestReflectorResyncChan(t *testing.T) { func BenchmarkReflectorResyncChanMany(b *testing.B) { s := NewStore(MetaNamespaceKeyFunc) - g := NewReflector(&testLW{}, &api.Pod{}, s, 25*time.Millisecond) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 25*time.Millisecond) // The improvement to this (calling the timer's Stop() method) makes // this benchmark about 40% faster. for i := 0; i < b.N; i++ { @@ -126,7 +126,7 @@ func BenchmarkReflectorResyncChanMany(b *testing.B) { func TestReflectorWatchHandlerError(t *testing.T) { s := NewStore(MetaNamespaceKeyFunc) - g := NewReflector(&testLW{}, &api.Pod{}, s, 0) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 0) fw := watch.NewFake() go func() { fw.Stop() @@ -140,15 +140,15 @@ func TestReflectorWatchHandlerError(t *testing.T) { func TestReflectorWatchHandler(t *testing.T) { s := NewStore(MetaNamespaceKeyFunc) - g := NewReflector(&testLW{}, &api.Pod{}, s, 0) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 0) fw := watch.NewFake() - s.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}) - s.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: "bar"}}) + s.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "foo"}}) + s.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "bar"}}) go func() { - fw.Add(&api.Service{ObjectMeta: api.ObjectMeta{Name: "rejected"}}) - fw.Delete(&api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}) - fw.Modify(&api.Pod{ObjectMeta: api.ObjectMeta{Name: "bar", ResourceVersion: "55"}}) - fw.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: "baz", ResourceVersion: "32"}}) + fw.Add(&v1.Service{ObjectMeta: v1.ObjectMeta{Name: "rejected"}}) + fw.Delete(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "foo"}}) + fw.Modify(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "bar", ResourceVersion: "55"}}) + fw.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: "baz", ResourceVersion: "32"}}) fw.Stop() }() var resumeRV string @@ -157,12 +157,12 @@ func TestReflectorWatchHandler(t *testing.T) { t.Errorf("unexpected error %v", err) } - mkPod := func(id string, rv string) *api.Pod { - return &api.Pod{ObjectMeta: api.ObjectMeta{Name: id, ResourceVersion: rv}} + mkPod := func(id string, rv string) *v1.Pod { + return &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: id, ResourceVersion: rv}} } table := []struct { - Pod *api.Pod + Pod *v1.Pod exists bool }{ {mkPod("foo", ""), false}, @@ -178,7 +178,7 @@ func TestReflectorWatchHandler(t *testing.T) { if !exists { continue } - if e, a := item.Pod.ResourceVersion, obj.(*api.Pod).ResourceVersion; e != a { + if e, a := item.Pod.ResourceVersion, obj.(*v1.Pod).ResourceVersion; e != a { t.Errorf("%v: expected %v, got %v", item.Pod, e, a) } } @@ -196,7 +196,7 @@ func TestReflectorWatchHandler(t *testing.T) { func TestReflectorStopWatch(t *testing.T) { s := NewStore(MetaNamespaceKeyFunc) - g := NewReflector(&testLW{}, &api.Pod{}, s, 0) + g := NewReflector(&testLW{}, &v1.Pod{}, s, 0) fw := watch.NewFake() var resumeRV string stopWatch := make(chan struct{}, 1) @@ -215,7 +215,7 @@ func TestReflectorListAndWatch(t *testing.T) { // inject an error. expectedRVs := []string{"1", "3"} lw := &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { rv := options.ResourceVersion fw := watch.NewFake() if e, a := expectedRVs[0], rv; e != a { @@ -227,12 +227,12 @@ func TestReflectorListAndWatch(t *testing.T) { go func() { createdFakes <- fw }() return fw, nil }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { - return &api.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "1"}}, nil + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "1"}}, nil }, } s := NewFIFO(MetaNamespaceKeyFunc) - r := NewReflector(lw, &api.Pod{}, s, 0) + r := NewReflector(lw, &v1.Pod{}, s, 0) go r.ListAndWatch(wait.NeverStop) ids := []string{"foo", "bar", "baz", "qux", "zoo"} @@ -242,7 +242,7 @@ func TestReflectorListAndWatch(t *testing.T) { fw = <-createdFakes } sendingRV := strconv.FormatUint(uint64(i+2), 10) - fw.Add(&api.Pod{ObjectMeta: api.ObjectMeta{Name: id, ResourceVersion: sendingRV}}) + fw.Add(&v1.Pod{ObjectMeta: v1.ObjectMeta{Name: id, ResourceVersion: sendingRV}}) if sendingRV == "3" { // Inject a failure. fw.Stop() @@ -252,7 +252,7 @@ func TestReflectorListAndWatch(t *testing.T) { // Verify we received the right ids with the right resource versions. for i, id := range ids { - pod := Pop(s).(*api.Pod) + pod := Pop(s).(*v1.Pod) if e, a := id, pod.Name; e != a { t.Errorf("%v: Expected %v, got %v", i, e, a) } @@ -267,18 +267,18 @@ func TestReflectorListAndWatch(t *testing.T) { } func TestReflectorListAndWatchWithErrors(t *testing.T) { - mkPod := func(id string, rv string) *api.Pod { - return &api.Pod{ObjectMeta: api.ObjectMeta{Name: id, ResourceVersion: rv}} + mkPod := func(id string, rv string) *v1.Pod { + return &v1.Pod{ObjectMeta: v1.ObjectMeta{Name: id, ResourceVersion: rv}} } - mkList := func(rv string, pods ...*api.Pod) *api.PodList { - list := &api.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: rv}} + mkList := func(rv string, pods ...*v1.Pod) *v1.PodList { + list := &v1.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: rv}} for _, pod := range pods { list.Items = append(list.Items, *pod) } return list } table := []struct { - list *api.PodList + list *v1.PodList listErr error events []watch.Event watchErr error @@ -317,7 +317,7 @@ func TestReflectorListAndWatchWithErrors(t *testing.T) { current := s.List() checkMap := map[string]string{} for _, item := range current { - pod := item.(*api.Pod) + pod := item.(*v1.Pod) checkMap[pod.Name] = pod.ResourceVersion } for _, pod := range item.list.Items { @@ -331,7 +331,7 @@ func TestReflectorListAndWatchWithErrors(t *testing.T) { } watchRet, watchErr := item.events, item.watchErr lw := &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { if watchErr != nil { return nil, watchErr } @@ -345,11 +345,11 @@ func TestReflectorListAndWatchWithErrors(t *testing.T) { }() return fw, nil }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { return item.list, item.listErr }, } - r := NewReflector(lw, &api.Pod{}, s, 0) + r := NewReflector(lw, &v1.Pod{}, s, 0) r.ListAndWatch(wait.NeverStop) } } @@ -369,16 +369,16 @@ func TestReflectorResync(t *testing.T) { } lw := &testLW{ - WatchFunc: func(options api.ListOptions) (watch.Interface, error) { + WatchFunc: func(options v1.ListOptions) (watch.Interface, error) { fw := watch.NewFake() return fw, nil }, - ListFunc: func(options api.ListOptions) (runtime.Object, error) { - return &api.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "0"}}, nil + ListFunc: func(options v1.ListOptions) (runtime.Object, error) { + return &v1.PodList{ListMeta: unversioned.ListMeta{ResourceVersion: "0"}}, nil }, } resyncPeriod := 1 * time.Millisecond - r := NewReflector(lw, &api.Pod{}, s, resyncPeriod) + r := NewReflector(lw, &v1.Pod{}, s, resyncPeriod) if err := r.ListAndWatch(stopCh); err != nil { // error from Resync is not propaged up to here. t.Errorf("expected error %v", err) diff --git a/tools/cache/testing/fake_controller_source.go b/tools/cache/testing/fake_controller_source.go index 6eb6ca87..d51b086d 100644 --- a/tools/cache/testing/fake_controller_source.go +++ b/tools/cache/testing/fake_controller_source.go @@ -24,6 +24,7 @@ import ( "k8s.io/client-go/pkg/api" "k8s.io/client-go/pkg/api/meta" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/runtime" "k8s.io/client-go/pkg/types" "k8s.io/client-go/pkg/watch" @@ -161,7 +162,7 @@ func (f *FakeControllerSource) getListItemsLocked() ([]runtime.Object, error) { } // List returns a list object, with its resource version set. -func (f *FakeControllerSource) List(options api.ListOptions) (runtime.Object, error) { +func (f *FakeControllerSource) List(options v1.ListOptions) (runtime.Object, error) { f.lock.RLock() defer f.lock.RUnlock() list, err := f.getListItemsLocked() @@ -182,14 +183,14 @@ func (f *FakeControllerSource) List(options api.ListOptions) (runtime.Object, er } // List returns a list object, with its resource version set. -func (f *FakePVControllerSource) List(options api.ListOptions) (runtime.Object, error) { +func (f *FakePVControllerSource) List(options v1.ListOptions) (runtime.Object, error) { f.lock.RLock() defer f.lock.RUnlock() list, err := f.FakeControllerSource.getListItemsLocked() if err != nil { return nil, err } - listObj := &api.PersistentVolumeList{} + listObj := &v1.PersistentVolumeList{} if err := meta.SetList(listObj, list); err != nil { return nil, err } @@ -203,14 +204,14 @@ func (f *FakePVControllerSource) List(options api.ListOptions) (runtime.Object, } // List returns a list object, with its resource version set. -func (f *FakePVCControllerSource) List(options api.ListOptions) (runtime.Object, error) { +func (f *FakePVCControllerSource) List(options v1.ListOptions) (runtime.Object, error) { f.lock.RLock() defer f.lock.RUnlock() list, err := f.FakeControllerSource.getListItemsLocked() if err != nil { return nil, err } - listObj := &api.PersistentVolumeClaimList{} + listObj := &v1.PersistentVolumeClaimList{} if err := meta.SetList(listObj, list); err != nil { return nil, err } @@ -225,7 +226,7 @@ func (f *FakePVCControllerSource) List(options api.ListOptions) (runtime.Object, // Watch returns a watch, which will be pre-populated with all changes // after resourceVersion. -func (f *FakeControllerSource) Watch(options api.ListOptions) (watch.Interface, error) { +func (f *FakeControllerSource) Watch(options v1.ListOptions) (watch.Interface, error) { f.lock.RLock() defer f.lock.RUnlock() rc, err := strconv.Atoi(options.ResourceVersion) diff --git a/tools/cache/testing/fake_controller_source_test.go b/tools/cache/testing/fake_controller_source_test.go index 6c4f56d5..c558cda4 100644 --- a/tools/cache/testing/fake_controller_source_test.go +++ b/tools/cache/testing/fake_controller_source_test.go @@ -21,6 +21,7 @@ import ( "testing" "k8s.io/client-go/pkg/api" + "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/watch" ) @@ -33,7 +34,7 @@ func consume(t *testing.T, w watch.Interface, rvs []string, done *sync.WaitGroup t.Errorf("%#v: unexpected channel close, wanted %v", rvs, rv) return } - gotRV := got.Object.(*api.Pod).ObjectMeta.ResourceVersion + gotRV := got.Object.(*v1.Pod).ObjectMeta.ResourceVersion if e, a := rv, gotRV; e != a { t.Errorf("wanted %v, got %v", e, a) } else { @@ -48,9 +49,9 @@ func consume(t *testing.T, w watch.Interface, rvs []string, done *sync.WaitGroup } func TestRCNumber(t *testing.T) { - pod := func(name string) *api.Pod { - return &api.Pod{ - ObjectMeta: api.ObjectMeta{ + pod := func(name string) *v1.Pod { + return &v1.Pod{ + ObjectMeta: v1.ObjectMeta{ Name: name, }, } @@ -64,13 +65,13 @@ func TestRCNumber(t *testing.T) { source.Modify(pod("foo")) source.Modify(pod("foo")) - w, err := source.Watch(api.ListOptions{ResourceVersion: "1"}) + w, err := source.Watch(v1.ListOptions{ResourceVersion: "1"}) if err != nil { t.Fatalf("Unexpected error: %v", err) } go consume(t, w, []string{"2", "3"}, wg) - list, err := source.List(api.ListOptions{}) + list, err := source.List(v1.ListOptions{}) if err != nil { t.Fatalf("Unexpected error: %v", err) } @@ -78,13 +79,13 @@ func TestRCNumber(t *testing.T) { t.Errorf("wanted %v, got %v", e, a) } - w2, err := source.Watch(api.ListOptions{ResourceVersion: "2"}) + w2, err := source.Watch(v1.ListOptions{ResourceVersion: "2"}) if err != nil { t.Fatalf("Unexpected error: %v", err) } go consume(t, w2, []string{"3"}, wg) - w3, err := source.Watch(api.ListOptions{ResourceVersion: "3"}) + w3, err := source.Watch(v1.ListOptions{ResourceVersion: "3"}) if err != nil { t.Fatalf("Unexpected error: %v", err) } diff --git a/tools/clientcmd/api/latest/latest.go b/tools/clientcmd/api/latest/latest.go index f9c24d6e..b8792373 100644 --- a/tools/clientcmd/api/latest/latest.go +++ b/tools/clientcmd/api/latest/latest.go @@ -17,8 +17,8 @@ limitations under the License. package latest import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" "k8s.io/client-go/pkg/runtime/serializer/json" "k8s.io/client-go/pkg/runtime/serializer/versioning" "k8s.io/client-go/tools/clientcmd/api" @@ -28,7 +28,7 @@ import ( // Version is the string that represents the current external default version. const Version = "v1" -var ExternalVersion = unversioned.GroupVersion{Group: "", Version: "v1"} +var ExternalVersion = schema.GroupVersion{Group: "", Version: "v1"} // OldestVersion is the string that represents the oldest server version supported, // for client code that wants to hardcode the lowest common denominator. @@ -60,7 +60,7 @@ func init() { Scheme, yamlSerializer, yamlSerializer, - unversioned.GroupVersion{Version: Version}, + schema.GroupVersion{Version: Version}, runtime.InternalGroupVersioner, ) } diff --git a/tools/clientcmd/api/register.go b/tools/clientcmd/api/register.go index efca4eea..08e55976 100644 --- a/tools/clientcmd/api/register.go +++ b/tools/clientcmd/api/register.go @@ -17,13 +17,13 @@ limitations under the License. package api import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // SchemeGroupVersion is group version used to register these objects // TODO this should be in the "kubeconfig" group -var SchemeGroupVersion = unversioned.GroupVersion{Group: "", Version: runtime.APIVersionInternal} +var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) @@ -37,10 +37,10 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *Config) GetObjectKind() unversioned.ObjectKind { return obj } -func (obj *Config) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (obj *Config) GetObjectKind() schema.ObjectKind { return obj } +func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind) { obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() } -func (obj *Config) GroupVersionKind() unversioned.GroupVersionKind { - return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +func (obj *Config) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } diff --git a/tools/clientcmd/api/v1/register.go b/tools/clientcmd/api/v1/register.go index d8659354..213a5fc4 100644 --- a/tools/clientcmd/api/v1/register.go +++ b/tools/clientcmd/api/v1/register.go @@ -17,13 +17,13 @@ limitations under the License. package v1 import ( - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" ) // SchemeGroupVersion is group version used to register these objects // TODO this should be in the "kubeconfig" group -var SchemeGroupVersion = unversioned.GroupVersion{Group: "", Version: "v1"} +var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: "v1"} var ( SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addConversionFuncs) @@ -37,10 +37,10 @@ func addKnownTypes(scheme *runtime.Scheme) error { return nil } -func (obj *Config) GetObjectKind() unversioned.ObjectKind { return obj } -func (obj *Config) SetGroupVersionKind(gvk unversioned.GroupVersionKind) { +func (obj *Config) GetObjectKind() schema.ObjectKind { return obj } +func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind) { obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind() } -func (obj *Config) GroupVersionKind() unversioned.GroupVersionKind { - return unversioned.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) +func (obj *Config) GroupVersionKind() schema.GroupVersionKind { + return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind) } diff --git a/tools/clientcmd/loader.go b/tools/clientcmd/loader.go index d678e7fa..7b251b11 100644 --- a/tools/clientcmd/loader.go +++ b/tools/clientcmd/loader.go @@ -30,8 +30,8 @@ import ( "github.com/golang/glog" "github.com/imdario/mergo" - "k8s.io/client-go/pkg/api/unversioned" "k8s.io/client-go/pkg/runtime" + "k8s.io/client-go/pkg/runtime/schema" utilerrors "k8s.io/client-go/pkg/util/errors" "k8s.io/client-go/pkg/util/homedir" "k8s.io/client-go/rest" @@ -388,7 +388,7 @@ func Load(data []byte) (*clientcmdapi.Config, error) { if len(data) == 0 { return config, nil } - decoded, _, err := clientcmdlatest.Codec.Decode(data, &unversioned.GroupVersionKind{Version: clientcmdlatest.Version, Kind: "Config"}, config) + decoded, _, err := clientcmdlatest.Codec.Decode(data, &schema.GroupVersionKind{Version: clientcmdlatest.Version, Kind: "Config"}, config) if err != nil { return nil, err } diff --git a/vendor/cloud.google.com/go/AUTHORS b/vendor/cloud.google.com/go/AUTHORS deleted file mode 100644 index c364af1d..00000000 --- a/vendor/cloud.google.com/go/AUTHORS +++ /dev/null @@ -1,15 +0,0 @@ -# This is the official list of cloud authors for copyright purposes. -# This file is distinct from the CONTRIBUTORS files. -# See the latter for an explanation. - -# Names should be added to this file as: -# Name or Organization -# The email address is not required for organizations. - -Filippo Valsorda -Google Inc. -Ingo Oeser -Palm Stone Games, Inc. -Paweł Knap -Péter Szilágyi -Tyler Treat diff --git a/vendor/cloud.google.com/go/CONTRIBUTORS b/vendor/cloud.google.com/go/CONTRIBUTORS deleted file mode 100644 index 07509ccb..00000000 --- a/vendor/cloud.google.com/go/CONTRIBUTORS +++ /dev/null @@ -1,34 +0,0 @@ -# People who have agreed to one of the CLAs and can contribute patches. -# The AUTHORS file lists the copyright holders; this file -# lists people. For example, Google employees are listed here -# but not in AUTHORS, because Google holds the copyright. -# -# https://developers.google.com/open-source/cla/individual -# https://developers.google.com/open-source/cla/corporate -# -# Names should be added to this file as: -# Name - -# Keep the list alphabetically sorted. - -Andreas Litt -Andrew Gerrand -Brad Fitzpatrick -Burcu Dogan -Dave Day -David Sansome -David Symonds -Filippo Valsorda -Glenn Lewis -Ingo Oeser -Johan Euphrosine -Jonathan Amsterdam -Luna Duclos -Michael McGreevy -Omar Jarjur -Paweł Knap -Péter Szilágyi -Sarah Adams -Toby Burress -Tuo Shan -Tyler Treat diff --git a/vendor/github.com/docker/distribution/AUTHORS b/vendor/github.com/docker/distribution/AUTHORS deleted file mode 100644 index 0857b62f..00000000 --- a/vendor/github.com/docker/distribution/AUTHORS +++ /dev/null @@ -1,128 +0,0 @@ -Aaron Lehmann -Aaron Vinson -Adam Enger -Adrian Mouat -Ahmet Alp Balkan -Alex Chan -Alex Elman -amitshukla -Amy Lindburg -Andrew Meredith -Andrew T Nguyen -Andrey Kostov -Andy Goldstein -Anton Tiurin -Antonio Mercado -Antonio Murdaca -Arnaud Porterie -Arthur Baars -Asuka Suzuki -Avi Miller -Ayose Cazorla -BadZen -Ben Firshman -bin liu -Brian Bland -burnettk -Carson A -Chris Dillon -Daisuke Fujita -Darren Shepherd -Dave Trombley -Dave Tucker -David Lawrence -David Verhasselt -David Xia -davidli -Dejan Golja -Derek McGowan -Diogo Mónica -DJ Enriquez -Donald Huang -Doug Davis -Eric Yang -farmerworking -Felix Yan -Florentin Raud -Frederick F. Kautz IV -gabriell nascimento -harche -Henri Gomez -Hu Keping -Hua Wang -HuKeping -Ian Babrou -igayoso -Jack Griffin -Jason Freidman -Jeff Nickoloff -Jessie Frazelle -Jianqing Wang -John Starks -Jon Poler -Jonathan Boulle -Jordan Liggitt -Josh Hawn -Julien Fernandez -Keerthan Mala -Kelsey Hightower -Kenneth Lim -Kenny Leung -Li Yi -Liu Hua -liuchang0812 -Louis Kottmann -Luke Carpenter -Mary Anthony -Matt Bentley -Matt Duch -Matt Moore -Matt Robenolt -Michael Prokop -Michal Minar -Miquel Sabaté -Morgan Bauer -moxiegirl -Nathan Sullivan -nevermosby -Nghia Tran -Nuutti Kotivuori -Oilbeater -Olivier Gambier -Olivier Jacques -Omer Cohen -Patrick Devine -Philip Misiowiec -Richard Scothern -Rodolfo Carvalho -Rusty Conover -Sean Boran -Sebastiaan van Stijn -Sharif Nassar -Shawn Falkner-Horine -Shreyas Karnik -Simon Thulbourn -Spencer Rinehart -Stefan Weil -Stephen J Day -Sungho Moon -Sven Dowideit -Sylvain Baubeau -Ted Reed -tgic -Thomas Sjögren -Tianon Gravi -Tibor Vass -Tonis Tiigi -Trevor Pounds -Troels Thomsen -Vincent Batts -Vincent Demeester -Vincent Giersch -W. Trevor King -weiyuan.yl -xg.song -xiekeyang -Yann ROBERT -yuzou -姜继忠 diff --git a/vendor/github.com/gogo/protobuf/CONTRIBUTORS b/vendor/github.com/gogo/protobuf/CONTRIBUTORS deleted file mode 100644 index d2c3b418..00000000 --- a/vendor/github.com/gogo/protobuf/CONTRIBUTORS +++ /dev/null @@ -1,15 +0,0 @@ -Anton Povarov -Clayton Coleman -Denis Smirnov -DongYun Kang -Dwayne Schultz -Georg Apitz -Gustav Paul -John Tuley -Laurent -Patrick Lee -Stephen J Day -Tamir Duberstein -Todd Eisenberger -Tormod Erevik Lea -Walter Schulze diff --git a/vendor/github.com/golang/protobuf/AUTHORS b/vendor/github.com/golang/protobuf/AUTHORS deleted file mode 100644 index 15167cd7..00000000 --- a/vendor/github.com/golang/protobuf/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/github.com/golang/protobuf/CONTRIBUTORS b/vendor/github.com/golang/protobuf/CONTRIBUTORS deleted file mode 100644 index 1c4577e9..00000000 --- a/vendor/github.com/golang/protobuf/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/crypto/AUTHORS b/vendor/golang.org/x/crypto/AUTHORS deleted file mode 100644 index 15167cd7..00000000 --- a/vendor/golang.org/x/crypto/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/crypto/CONTRIBUTORS b/vendor/golang.org/x/crypto/CONTRIBUTORS deleted file mode 100644 index 1c4577e9..00000000 --- a/vendor/golang.org/x/crypto/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/net/AUTHORS b/vendor/golang.org/x/net/AUTHORS deleted file mode 100644 index 15167cd7..00000000 --- a/vendor/golang.org/x/net/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/net/CONTRIBUTORS b/vendor/golang.org/x/net/CONTRIBUTORS deleted file mode 100644 index 1c4577e9..00000000 --- a/vendor/golang.org/x/net/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/sys/AUTHORS b/vendor/golang.org/x/sys/AUTHORS deleted file mode 100644 index 15167cd7..00000000 --- a/vendor/golang.org/x/sys/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/sys/CONTRIBUTORS b/vendor/golang.org/x/sys/CONTRIBUTORS deleted file mode 100644 index 1c4577e9..00000000 --- a/vendor/golang.org/x/sys/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS. diff --git a/vendor/golang.org/x/text/AUTHORS b/vendor/golang.org/x/text/AUTHORS deleted file mode 100644 index 15167cd7..00000000 --- a/vendor/golang.org/x/text/AUTHORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code refers to The Go Authors for copyright purposes. -# The master list of authors is in the main Go distribution, -# visible at http://tip.golang.org/AUTHORS. diff --git a/vendor/golang.org/x/text/CONTRIBUTORS b/vendor/golang.org/x/text/CONTRIBUTORS deleted file mode 100644 index 1c4577e9..00000000 --- a/vendor/golang.org/x/text/CONTRIBUTORS +++ /dev/null @@ -1,3 +0,0 @@ -# This source code was written by the Go contributors. -# The master list of contributors is in the main Go distribution, -# visible at http://tip.golang.org/CONTRIBUTORS.