mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-26 21:17:23 +00:00
Merge pull request #98312 from deads2k/finish-export-option-removal
finish removal of exportoptions
This commit is contained in:
commit
b7fc3f91ea
1120
api/openapi-spec/swagger.json
generated
1120
api/openapi-spec/swagger.json
generated
File diff suppressed because it is too large
Load Diff
@ -167,7 +167,7 @@ var nonRoundTrippableTypes = sets.NewString(
|
||||
"PatchOptions",
|
||||
)
|
||||
|
||||
var commonKinds = []string{"Status", "ListOptions", "DeleteOptions", "ExportOptions", "GetOptions", "CreateOptions", "UpdateOptions", "PatchOptions"}
|
||||
var commonKinds = []string{"Status", "ListOptions", "DeleteOptions", "GetOptions", "CreateOptions", "UpdateOptions", "PatchOptions"}
|
||||
|
||||
// TestCommonKindsRegistered verifies that all group/versions registered with
|
||||
// the legacyscheme package have the common kinds.
|
||||
|
@ -64,7 +64,6 @@ var typesAllowedTags = map[reflect.Type]bool{
|
||||
reflect.TypeOf(metav1.OwnerReference{}): true,
|
||||
reflect.TypeOf(metav1.LabelSelector{}): true,
|
||||
reflect.TypeOf(metav1.GetOptions{}): true,
|
||||
reflect.TypeOf(metav1.ExportOptions{}): true,
|
||||
reflect.TypeOf(metav1.ListOptions{}): true,
|
||||
reflect.TypeOf(metav1.DeleteOptions{}): true,
|
||||
reflect.TypeOf(metav1.GroupVersionKind{}): true,
|
||||
|
@ -160,18 +160,7 @@ func TestLegacyRestStorageStrategies(t *testing.T) {
|
||||
t.Errorf("failed to create legacy REST storage: %v", err)
|
||||
}
|
||||
|
||||
// Any new stores with export logic will need to be added here:
|
||||
exceptions := registrytest.StrategyExceptions{
|
||||
// Only these stores should have an export strategy defined:
|
||||
HasExportStrategy: []string{
|
||||
"secrets",
|
||||
"limitRanges",
|
||||
"nodes",
|
||||
"podTemplates",
|
||||
},
|
||||
}
|
||||
|
||||
strategyErrors := registrytest.ValidateStorageStrategies(apiGroupInfo.VersionedResourcesStorageMap["v1"], exceptions)
|
||||
strategyErrors := registrytest.ValidateStorageStrategies(apiGroupInfo.VersionedResourcesStorageMap["v1"])
|
||||
for _, err := range strategyErrors {
|
||||
t.Error(err)
|
||||
}
|
||||
@ -187,14 +176,8 @@ func TestCertificatesRestStorageStrategies(t *testing.T) {
|
||||
t.Fatalf("unexpected error from REST storage: %v", err)
|
||||
}
|
||||
|
||||
exceptions := registrytest.StrategyExceptions{
|
||||
HasExportStrategy: []string{
|
||||
"certificatesigningrequests",
|
||||
},
|
||||
}
|
||||
|
||||
strategyErrors := registrytest.ValidateStorageStrategies(
|
||||
apiGroupInfo.VersionedResourcesStorageMap[certificatesapiv1beta1.SchemeGroupVersion.Version], exceptions)
|
||||
apiGroupInfo.VersionedResourcesStorageMap[certificatesapiv1beta1.SchemeGroupVersion.Version])
|
||||
for _, err := range strategyErrors {
|
||||
t.Error(err)
|
||||
}
|
||||
|
@ -46,7 +46,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, *StatusREST, *Approva
|
||||
CreateStrategy: csrregistry.Strategy,
|
||||
UpdateStrategy: csrregistry.Strategy,
|
||||
DeleteStrategy: csrregistry.Strategy,
|
||||
ExportStrategy: csrregistry.Strategy,
|
||||
|
||||
TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
|
||||
}
|
||||
|
@ -118,21 +118,6 @@ func (csrStrategy) AllowUnconditionalUpdate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (s csrStrategy) Export(ctx context.Context, obj runtime.Object, exact bool) error {
|
||||
csr, ok := obj.(*certificates.CertificateSigningRequest)
|
||||
if !ok {
|
||||
// unexpected programmer error
|
||||
return fmt.Errorf("unexpected object: %v", obj)
|
||||
}
|
||||
s.PrepareForCreate(ctx, obj)
|
||||
if exact {
|
||||
return nil
|
||||
}
|
||||
// CSRs allow direct subresource edits, we clear them without exact so the CSR value can be reused.
|
||||
csr.Status = certificates.CertificateSigningRequestStatus{}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Storage strategy for the Status subresource
|
||||
type csrStatusStrategy struct {
|
||||
csrStrategy
|
||||
|
@ -40,7 +40,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, error) {
|
||||
CreateStrategy: limitrange.Strategy,
|
||||
UpdateStrategy: limitrange.Strategy,
|
||||
DeleteStrategy: limitrange.Strategy,
|
||||
ExportStrategy: limitrange.Strategy,
|
||||
|
||||
// TODO: define table converter that exposes more than name/creation timestamp
|
||||
TableConvertor: rest.NewDefaultTableConvertor(api.Resource("limitranges")),
|
||||
|
@ -72,10 +72,3 @@ func (limitrangeStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.O
|
||||
func (limitrangeStrategy) AllowUnconditionalUpdate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (limitrangeStrategy) Export(context.Context, runtime.Object, bool) error {
|
||||
// Copied from OpenShift exporter
|
||||
// TODO: this needs to be fixed
|
||||
// limitrange.Strategy.PrepareForCreate(ctx, obj)
|
||||
return nil
|
||||
}
|
||||
|
@ -119,10 +119,6 @@ func (r *REST) Watch(ctx context.Context, options *metainternalversion.ListOptio
|
||||
return r.store.Watch(ctx, options)
|
||||
}
|
||||
|
||||
func (r *REST) Export(ctx context.Context, name string, opts metav1.ExportOptions) (runtime.Object, error) {
|
||||
return r.store.Export(ctx, name, opts)
|
||||
}
|
||||
|
||||
// Delete enforces life-cycle rules for namespace termination
|
||||
func (r *REST) Delete(ctx context.Context, name string, deleteValidation rest.ValidateObjectFunc, options *metav1.DeleteOptions) (runtime.Object, bool, error) {
|
||||
nsObj, err := r.Get(ctx, name, &metav1.GetOptions{})
|
||||
|
@ -88,7 +88,6 @@ func NewStorage(optsGetter generic.RESTOptionsGetter, kubeletClientConfig client
|
||||
CreateStrategy: node.Strategy,
|
||||
UpdateStrategy: node.Strategy,
|
||||
DeleteStrategy: node.Strategy,
|
||||
ExportStrategy: node.Strategy,
|
||||
|
||||
TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
|
||||
}
|
||||
|
@ -141,22 +141,6 @@ func (nodeStrategy) AllowUnconditionalUpdate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (ns nodeStrategy) Export(ctx context.Context, obj runtime.Object, exact bool) error {
|
||||
n, ok := obj.(*api.Node)
|
||||
if !ok {
|
||||
// unexpected programmer error
|
||||
return fmt.Errorf("unexpected object: %v", obj)
|
||||
}
|
||||
ns.PrepareForCreate(ctx, obj)
|
||||
if exact {
|
||||
return nil
|
||||
}
|
||||
// Nodes are the only resources that allow direct status edits, therefore
|
||||
// we clear that without exact so that the node value can be reused.
|
||||
n.Status = api.NodeStatus{}
|
||||
return nil
|
||||
}
|
||||
|
||||
type nodeStatusStrategy struct {
|
||||
nodeStrategy
|
||||
}
|
||||
|
@ -42,7 +42,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, error) {
|
||||
CreateStrategy: podtemplate.Strategy,
|
||||
UpdateStrategy: podtemplate.Strategy,
|
||||
DeleteStrategy: podtemplate.Strategy,
|
||||
ExportStrategy: podtemplate.Strategy,
|
||||
|
||||
ReturnDeletedObject: true,
|
||||
|
||||
|
@ -87,8 +87,3 @@ func (podTemplateStrategy) ValidateUpdate(ctx context.Context, obj, old runtime.
|
||||
func (podTemplateStrategy) AllowUnconditionalUpdate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (podTemplateStrategy) Export(ctx context.Context, obj runtime.Object, exact bool) error {
|
||||
// Do nothing
|
||||
return nil
|
||||
}
|
||||
|
@ -17,7 +17,6 @@ go_library(
|
||||
"//pkg/api/legacyscheme:go_default_library",
|
||||
"//pkg/apis/core:go_default_library",
|
||||
"//pkg/apis/core/validation:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
@ -37,9 +36,6 @@ go_test(
|
||||
"//pkg/api/testing:go_default_library",
|
||||
"//pkg/apis/core:go_default_library",
|
||||
"//pkg/apis/core/install:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apiserver/pkg/endpoints/request:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -44,7 +44,6 @@ func NewREST(optsGetter generic.RESTOptionsGetter) (*REST, error) {
|
||||
CreateStrategy: secret.Strategy,
|
||||
UpdateStrategy: secret.Strategy,
|
||||
DeleteStrategy: secret.Strategy,
|
||||
ExportStrategy: secret.Strategy,
|
||||
|
||||
TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
"k8s.io/apimachinery/pkg/fields"
|
||||
"k8s.io/apimachinery/pkg/labels"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
@ -85,26 +84,6 @@ func (strategy) AllowUnconditionalUpdate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (s strategy) Export(ctx context.Context, obj runtime.Object, exact bool) error {
|
||||
t, ok := obj.(*api.Secret)
|
||||
if !ok {
|
||||
// unexpected programmer error
|
||||
return fmt.Errorf("unexpected object: %v", obj)
|
||||
}
|
||||
s.PrepareForCreate(ctx, obj)
|
||||
if exact {
|
||||
return nil
|
||||
}
|
||||
// secrets that are tied to the UID of a service account cannot be exported anyway
|
||||
if t.Type == api.SecretTypeServiceAccountToken || len(t.Annotations[api.ServiceAccountUIDKey]) > 0 {
|
||||
errs := []*field.Error{
|
||||
field.Invalid(field.NewPath("type"), t, "can not export service account secrets"),
|
||||
}
|
||||
return errors.NewInvalid(api.Kind("Secret"), t.Name, errs)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// GetAttrs returns labels and fields of a given object for filtering purposes.
|
||||
func GetAttrs(obj runtime.Object) (labels.Set, fields.Set, error) {
|
||||
secret, ok := obj.(*api.Secret)
|
||||
|
@ -17,12 +17,8 @@ limitations under the License.
|
||||
package secret
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||
apitesting "k8s.io/kubernetes/pkg/api/testing"
|
||||
api "k8s.io/kubernetes/pkg/apis/core"
|
||||
|
||||
@ -30,80 +26,6 @@ import (
|
||||
_ "k8s.io/kubernetes/pkg/apis/core/install"
|
||||
)
|
||||
|
||||
func TestExportSecret(t *testing.T) {
|
||||
tests := []struct {
|
||||
objIn runtime.Object
|
||||
objOut runtime.Object
|
||||
exact bool
|
||||
expectErr bool
|
||||
}{
|
||||
{
|
||||
objIn: &api.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Data: map[string][]byte{
|
||||
"foo": []byte("bar"),
|
||||
},
|
||||
},
|
||||
objOut: &api.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Data: map[string][]byte{
|
||||
"foo": []byte("bar"),
|
||||
},
|
||||
},
|
||||
exact: true,
|
||||
},
|
||||
{
|
||||
objIn: &api.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Type: api.SecretTypeServiceAccountToken,
|
||||
},
|
||||
expectErr: true,
|
||||
},
|
||||
{
|
||||
objIn: &api.Secret{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
Annotations: map[string]string{
|
||||
api.ServiceAccountUIDKey: "true",
|
||||
},
|
||||
},
|
||||
},
|
||||
expectErr: true,
|
||||
},
|
||||
{
|
||||
objIn: &api.Pod{},
|
||||
expectErr: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
err := Strategy.Export(genericapirequest.NewContext(), test.objIn, test.exact)
|
||||
if err != nil {
|
||||
if !test.expectErr {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if test.expectErr {
|
||||
t.Error("unexpected non-error")
|
||||
continue
|
||||
}
|
||||
if !reflect.DeepEqual(test.objIn, test.objOut) {
|
||||
t.Errorf("expected:\n%v\nsaw:\n%v\n", test.objOut, test.objIn)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectableFieldLabelConversions(t *testing.T) {
|
||||
apitesting.TestSelectableFieldLabelConversionsOfKind(t,
|
||||
"v1",
|
||||
|
@ -79,7 +79,6 @@ type ServiceStorage interface {
|
||||
rest.CreaterUpdater
|
||||
rest.GracefulDeleter
|
||||
rest.Watcher
|
||||
rest.Exporter
|
||||
rest.StorageVersionProvider
|
||||
}
|
||||
|
||||
@ -189,10 +188,6 @@ func (rs *REST) Watch(ctx context.Context, options *metainternalversion.ListOpti
|
||||
return rs.services.Watch(ctx, options)
|
||||
}
|
||||
|
||||
func (rs *REST) Export(ctx context.Context, name string, opts metav1.ExportOptions) (runtime.Object, error) {
|
||||
return rs.services.Export(ctx, name, opts)
|
||||
}
|
||||
|
||||
func (rs *REST) Create(ctx context.Context, obj runtime.Object, createValidation rest.ValidateObjectFunc, options *metav1.CreateOptions) (runtime.Object, error) {
|
||||
service := obj.(*api.Service)
|
||||
|
||||
|
@ -163,10 +163,6 @@ func (s *serviceStorage) ConvertToTable(ctx context.Context, object runtime.Obje
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
func (s *serviceStorage) Export(ctx context.Context, name string, opts metav1.ExportOptions) (runtime.Object, error) {
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
func (s *serviceStorage) StorageVersion() runtime.GroupVersioner {
|
||||
panic("not implemented")
|
||||
}
|
||||
|
@ -57,7 +57,6 @@ func NewGenericREST(optsGetter generic.RESTOptionsGetter, serviceCIDR net.IPNet,
|
||||
CreateStrategy: strategy,
|
||||
UpdateStrategy: strategy,
|
||||
DeleteStrategy: strategy,
|
||||
ExportStrategy: strategy,
|
||||
|
||||
TableConvertor: printerstorage.TableConvertor{TableGenerator: printers.NewTableGenerator().With(printersinternal.AddHandlers)},
|
||||
}
|
||||
|
@ -18,7 +18,6 @@ package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net"
|
||||
"reflect"
|
||||
|
||||
@ -37,7 +36,6 @@ import (
|
||||
|
||||
type Strategy interface {
|
||||
rest.RESTCreateUpdateStrategy
|
||||
rest.RESTExportStrategy
|
||||
}
|
||||
|
||||
// svcStrategy implements behavior for Services
|
||||
@ -139,30 +137,6 @@ func (svcStrategy) AllowUnconditionalUpdate() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (svcStrategy) Export(ctx context.Context, obj runtime.Object, exact bool) error {
|
||||
t, ok := obj.(*api.Service)
|
||||
if !ok {
|
||||
// unexpected programmer error
|
||||
return fmt.Errorf("unexpected object: %v", obj)
|
||||
}
|
||||
// TODO: service does not yet have a prepare create strategy (see above)
|
||||
t.Status = api.ServiceStatus{}
|
||||
if exact {
|
||||
return nil
|
||||
}
|
||||
//set ClusterIPs as nil - if ClusterIPs[0] != None
|
||||
if len(t.Spec.ClusterIPs) > 0 && t.Spec.ClusterIPs[0] != api.ClusterIPNone {
|
||||
t.Spec.ClusterIP = ""
|
||||
t.Spec.ClusterIPs = nil
|
||||
}
|
||||
if t.Spec.Type == api.ServiceTypeNodePort {
|
||||
for i := range t.Spec.Ports {
|
||||
t.Spec.Ports[i].NodePort = 0
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// dropServiceDisabledFields drops fields that are not used if their associated feature gates
|
||||
// are not enabled. The typical pattern is:
|
||||
// if !utilfeature.DefaultFeatureGate.Enabled(features.MyFeature) && !myFeatureInUse(oldSvc) {
|
||||
|
@ -47,115 +47,6 @@ func newStrategy(cidr string, hasSecondary bool) (testStrategy Strategy, testSta
|
||||
return
|
||||
}
|
||||
|
||||
func TestExportService(t *testing.T) {
|
||||
testStrategy, _ := newStrategy("10.0.0.0/16", false)
|
||||
tests := []struct {
|
||||
objIn runtime.Object
|
||||
objOut runtime.Object
|
||||
exact bool
|
||||
expectErr bool
|
||||
}{
|
||||
{
|
||||
objIn: &api.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Status: api.ServiceStatus{
|
||||
LoadBalancer: api.LoadBalancerStatus{
|
||||
Ingress: []api.LoadBalancerIngress{
|
||||
{IP: "1.2.3.4"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
objOut: &api.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
},
|
||||
exact: true,
|
||||
},
|
||||
{
|
||||
objIn: &api.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Spec: api.ServiceSpec{
|
||||
ClusterIPs: []string{"10.0.0.1"},
|
||||
},
|
||||
Status: api.ServiceStatus{
|
||||
LoadBalancer: api.LoadBalancerStatus{
|
||||
Ingress: []api.LoadBalancerIngress{
|
||||
{IP: "1.2.3.4"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
objOut: &api.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Spec: api.ServiceSpec{
|
||||
ClusterIPs: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
objIn: &api.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Spec: api.ServiceSpec{
|
||||
ClusterIPs: []string{"10.0.0.1", "2001::1"},
|
||||
},
|
||||
Status: api.ServiceStatus{
|
||||
LoadBalancer: api.LoadBalancerStatus{
|
||||
Ingress: []api.LoadBalancerIngress{
|
||||
{IP: "1.2.3.4"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
objOut: &api.Service{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "foo",
|
||||
Namespace: "bar",
|
||||
},
|
||||
Spec: api.ServiceSpec{
|
||||
ClusterIPs: nil,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
objIn: &api.Pod{},
|
||||
expectErr: true,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
err := testStrategy.Export(genericapirequest.NewContext(), test.objIn, test.exact)
|
||||
if err != nil {
|
||||
if !test.expectErr {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if test.expectErr {
|
||||
t.Error("unexpected non-error")
|
||||
continue
|
||||
}
|
||||
if !reflect.DeepEqual(test.objIn, test.objOut) {
|
||||
t.Errorf("expected:\n%v\nsaw:\n%v\n", test.objOut, test.objIn)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestCheckGeneratedNameError(t *testing.T) {
|
||||
testStrategy, _ := newStrategy("10.0.0.0/16", false)
|
||||
expect := errors.NewNotFound(api.Resource("foos"), "bar")
|
||||
|
@ -21,7 +21,6 @@ go_library(
|
||||
deps = [
|
||||
"//pkg/apis/core:go_default_library",
|
||||
"//pkg/kubeapiserver:go_default_library",
|
||||
"//pkg/util/slice:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/internalversion:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
|
@ -117,10 +117,3 @@ func (r *ServiceRegistry) WatchServices(ctx context.Context, options *metaintern
|
||||
|
||||
return nil, r.Err
|
||||
}
|
||||
|
||||
func (r *ServiceRegistry) ExportService(ctx context.Context, name string, options metav1.ExportOptions) (*api.Service, error) {
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
|
||||
return r.Service, r.Err
|
||||
}
|
||||
|
@ -21,17 +21,13 @@ import (
|
||||
|
||||
"k8s.io/apiserver/pkg/registry/generic/registry"
|
||||
"k8s.io/apiserver/pkg/registry/rest"
|
||||
"k8s.io/kubernetes/pkg/util/slice"
|
||||
)
|
||||
|
||||
// ValidateStorageStrategies ensures any instances of the generic registry.Store in the given storage map
|
||||
// have expected strategies defined.
|
||||
func ValidateStorageStrategies(storageMap map[string]rest.Storage, exceptions StrategyExceptions) []error {
|
||||
func ValidateStorageStrategies(storageMap map[string]rest.Storage) []error {
|
||||
errs := []error{}
|
||||
|
||||
// Used to ensure we saw all the expected exceptions:
|
||||
hasExportExceptionsSeen := []string{}
|
||||
|
||||
for k, storage := range storageMap {
|
||||
switch t := storage.(type) {
|
||||
case registry.GenericStore:
|
||||
@ -46,27 +42,6 @@ func ValidateStorageStrategies(storageMap map[string]rest.Storage, exceptions St
|
||||
if t.GetDeleteStrategy() == nil {
|
||||
errs = append(errs, fmt.Errorf("store for type [%v] does not have a DeleteStrategy", k))
|
||||
}
|
||||
|
||||
// Check that ExportStrategy is set if applicable:
|
||||
if slice.ContainsString(exceptions.HasExportStrategy, k, nil) {
|
||||
hasExportExceptionsSeen = append(hasExportExceptionsSeen, k)
|
||||
if t.GetExportStrategy() == nil {
|
||||
errs = append(errs, fmt.Errorf("store for type [%v] does not have an ExportStrategy", k))
|
||||
}
|
||||
} else {
|
||||
// By default we expect Stores to not have additional export logic:
|
||||
if t.GetExportStrategy() != nil {
|
||||
errs = append(errs, fmt.Errorf("store for type [%v] has an unexpected ExportStrategy", k))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure that we saw all our expected exceptions:
|
||||
for _, expKey := range exceptions.HasExportStrategy {
|
||||
if !slice.ContainsString(hasExportExceptionsSeen, expKey, nil) {
|
||||
errs = append(errs, fmt.Errorf("no generic store seen for expected ExportStrategy: %v", expKey))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -388,7 +388,7 @@ func (r *crdHandler) serveResource(w http.ResponseWriter, req *http.Request, req
|
||||
|
||||
switch requestInfo.Verb {
|
||||
case "get":
|
||||
return handlers.GetResource(storage, storage, requestScope)
|
||||
return handlers.GetResource(storage, requestScope)
|
||||
case "list":
|
||||
forceWatch := false
|
||||
return handlers.ListResource(storage, storage, requestScope, forceWatch, r.minRequestTimeout)
|
||||
@ -428,7 +428,7 @@ func (r *crdHandler) serveStatus(w http.ResponseWriter, req *http.Request, reque
|
||||
|
||||
switch requestInfo.Verb {
|
||||
case "get":
|
||||
return handlers.GetResource(storage, nil, requestScope)
|
||||
return handlers.GetResource(storage, requestScope)
|
||||
case "update":
|
||||
return handlers.UpdateResource(storage, requestScope, r.admission)
|
||||
case "patch":
|
||||
@ -448,7 +448,7 @@ func (r *crdHandler) serveScale(w http.ResponseWriter, req *http.Request, reques
|
||||
|
||||
switch requestInfo.Verb {
|
||||
case "get":
|
||||
return handlers.GetResource(storage, nil, requestScope)
|
||||
return handlers.GetResource(storage, requestScope)
|
||||
case "update":
|
||||
return handlers.UpdateResource(storage, requestScope, r.admission)
|
||||
case "patch":
|
||||
@ -698,7 +698,6 @@ func (r *crdHandler) getOrCreateServingInfoFor(uid types.UID, name string) (*crd
|
||||
parameterScheme := runtime.NewScheme()
|
||||
parameterScheme.AddUnversionedTypes(schema.GroupVersion{Group: crd.Spec.Group, Version: v.Name},
|
||||
&metav1.ListOptions{},
|
||||
&metav1.ExportOptions{},
|
||||
&metav1.GetOptions{},
|
||||
&metav1.DeleteOptions{},
|
||||
)
|
||||
|
@ -60,7 +60,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.ExportOptions": schema_pkg_apis_meta_v1_ExportOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref),
|
||||
@ -1560,50 +1559,6 @@ func schema_pkg_apis_meta_v1_Duration(ref common.ReferenceCallback) common.OpenA
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_ExportOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ExportOptions is the query options to the standard REST get call. Deprecated. Planned for removal in 1.18.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"export": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should this value be exported. Export strips fields that a user can not specify. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"exact": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"export", "exact"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_FieldsV1(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -55,7 +55,6 @@ func newStorage(t *testing.T) (customresource.CustomResourceStorage, *etcd3testi
|
||||
parameterScheme := runtime.NewScheme()
|
||||
parameterScheme.AddUnversionedTypes(schema.GroupVersion{Group: "mygroup.example.com", Version: "v1beta1"},
|
||||
&metav1.ListOptions{},
|
||||
&metav1.ExportOptions{},
|
||||
&metav1.GetOptions{},
|
||||
&metav1.DeleteOptions{},
|
||||
)
|
||||
|
@ -52,7 +52,6 @@ func addToGroupVersion(scheme *runtime.Scheme) error {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&ListOptions{},
|
||||
&metav1.GetOptions{},
|
||||
&metav1.ExportOptions{},
|
||||
&metav1.DeleteOptions{},
|
||||
&metav1.CreateOptions{},
|
||||
&metav1.UpdateOptions{},
|
||||
|
@ -301,38 +301,10 @@ func (m *Duration) XXX_DiscardUnknown() {
|
||||
|
||||
var xxx_messageInfo_Duration proto.InternalMessageInfo
|
||||
|
||||
func (m *ExportOptions) Reset() { *m = ExportOptions{} }
|
||||
func (*ExportOptions) ProtoMessage() {}
|
||||
func (*ExportOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{9}
|
||||
}
|
||||
func (m *ExportOptions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
}
|
||||
func (m *ExportOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||
b = b[:cap(b)]
|
||||
n, err := m.MarshalToSizedBuffer(b)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return b[:n], nil
|
||||
}
|
||||
func (m *ExportOptions) XXX_Merge(src proto.Message) {
|
||||
xxx_messageInfo_ExportOptions.Merge(m, src)
|
||||
}
|
||||
func (m *ExportOptions) XXX_Size() int {
|
||||
return m.Size()
|
||||
}
|
||||
func (m *ExportOptions) XXX_DiscardUnknown() {
|
||||
xxx_messageInfo_ExportOptions.DiscardUnknown(m)
|
||||
}
|
||||
|
||||
var xxx_messageInfo_ExportOptions proto.InternalMessageInfo
|
||||
|
||||
func (m *FieldsV1) Reset() { *m = FieldsV1{} }
|
||||
func (*FieldsV1) ProtoMessage() {}
|
||||
func (*FieldsV1) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{10}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{9}
|
||||
}
|
||||
func (m *FieldsV1) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -360,7 +332,7 @@ var xxx_messageInfo_FieldsV1 proto.InternalMessageInfo
|
||||
func (m *GetOptions) Reset() { *m = GetOptions{} }
|
||||
func (*GetOptions) ProtoMessage() {}
|
||||
func (*GetOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{11}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{10}
|
||||
}
|
||||
func (m *GetOptions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -388,7 +360,7 @@ var xxx_messageInfo_GetOptions proto.InternalMessageInfo
|
||||
func (m *GroupKind) Reset() { *m = GroupKind{} }
|
||||
func (*GroupKind) ProtoMessage() {}
|
||||
func (*GroupKind) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{12}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{11}
|
||||
}
|
||||
func (m *GroupKind) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -416,7 +388,7 @@ var xxx_messageInfo_GroupKind proto.InternalMessageInfo
|
||||
func (m *GroupResource) Reset() { *m = GroupResource{} }
|
||||
func (*GroupResource) ProtoMessage() {}
|
||||
func (*GroupResource) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{13}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{12}
|
||||
}
|
||||
func (m *GroupResource) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -444,7 +416,7 @@ var xxx_messageInfo_GroupResource proto.InternalMessageInfo
|
||||
func (m *GroupVersion) Reset() { *m = GroupVersion{} }
|
||||
func (*GroupVersion) ProtoMessage() {}
|
||||
func (*GroupVersion) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{14}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{13}
|
||||
}
|
||||
func (m *GroupVersion) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -472,7 +444,7 @@ var xxx_messageInfo_GroupVersion proto.InternalMessageInfo
|
||||
func (m *GroupVersionForDiscovery) Reset() { *m = GroupVersionForDiscovery{} }
|
||||
func (*GroupVersionForDiscovery) ProtoMessage() {}
|
||||
func (*GroupVersionForDiscovery) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{15}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{14}
|
||||
}
|
||||
func (m *GroupVersionForDiscovery) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -500,7 +472,7 @@ var xxx_messageInfo_GroupVersionForDiscovery proto.InternalMessageInfo
|
||||
func (m *GroupVersionKind) Reset() { *m = GroupVersionKind{} }
|
||||
func (*GroupVersionKind) ProtoMessage() {}
|
||||
func (*GroupVersionKind) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{16}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{15}
|
||||
}
|
||||
func (m *GroupVersionKind) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -528,7 +500,7 @@ var xxx_messageInfo_GroupVersionKind proto.InternalMessageInfo
|
||||
func (m *GroupVersionResource) Reset() { *m = GroupVersionResource{} }
|
||||
func (*GroupVersionResource) ProtoMessage() {}
|
||||
func (*GroupVersionResource) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{17}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{16}
|
||||
}
|
||||
func (m *GroupVersionResource) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -556,7 +528,7 @@ var xxx_messageInfo_GroupVersionResource proto.InternalMessageInfo
|
||||
func (m *LabelSelector) Reset() { *m = LabelSelector{} }
|
||||
func (*LabelSelector) ProtoMessage() {}
|
||||
func (*LabelSelector) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{18}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{17}
|
||||
}
|
||||
func (m *LabelSelector) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -584,7 +556,7 @@ var xxx_messageInfo_LabelSelector proto.InternalMessageInfo
|
||||
func (m *LabelSelectorRequirement) Reset() { *m = LabelSelectorRequirement{} }
|
||||
func (*LabelSelectorRequirement) ProtoMessage() {}
|
||||
func (*LabelSelectorRequirement) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{19}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{18}
|
||||
}
|
||||
func (m *LabelSelectorRequirement) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -612,7 +584,7 @@ var xxx_messageInfo_LabelSelectorRequirement proto.InternalMessageInfo
|
||||
func (m *List) Reset() { *m = List{} }
|
||||
func (*List) ProtoMessage() {}
|
||||
func (*List) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{20}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{19}
|
||||
}
|
||||
func (m *List) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -640,7 +612,7 @@ var xxx_messageInfo_List proto.InternalMessageInfo
|
||||
func (m *ListMeta) Reset() { *m = ListMeta{} }
|
||||
func (*ListMeta) ProtoMessage() {}
|
||||
func (*ListMeta) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{21}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{20}
|
||||
}
|
||||
func (m *ListMeta) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -668,7 +640,7 @@ var xxx_messageInfo_ListMeta proto.InternalMessageInfo
|
||||
func (m *ListOptions) Reset() { *m = ListOptions{} }
|
||||
func (*ListOptions) ProtoMessage() {}
|
||||
func (*ListOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{22}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{21}
|
||||
}
|
||||
func (m *ListOptions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -696,7 +668,7 @@ var xxx_messageInfo_ListOptions proto.InternalMessageInfo
|
||||
func (m *ManagedFieldsEntry) Reset() { *m = ManagedFieldsEntry{} }
|
||||
func (*ManagedFieldsEntry) ProtoMessage() {}
|
||||
func (*ManagedFieldsEntry) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{23}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{22}
|
||||
}
|
||||
func (m *ManagedFieldsEntry) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -724,7 +696,7 @@ var xxx_messageInfo_ManagedFieldsEntry proto.InternalMessageInfo
|
||||
func (m *MicroTime) Reset() { *m = MicroTime{} }
|
||||
func (*MicroTime) ProtoMessage() {}
|
||||
func (*MicroTime) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{24}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{23}
|
||||
}
|
||||
func (m *MicroTime) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_MicroTime.Unmarshal(m, b)
|
||||
@ -747,7 +719,7 @@ var xxx_messageInfo_MicroTime proto.InternalMessageInfo
|
||||
func (m *ObjectMeta) Reset() { *m = ObjectMeta{} }
|
||||
func (*ObjectMeta) ProtoMessage() {}
|
||||
func (*ObjectMeta) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{25}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{24}
|
||||
}
|
||||
func (m *ObjectMeta) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -775,7 +747,7 @@ var xxx_messageInfo_ObjectMeta proto.InternalMessageInfo
|
||||
func (m *OwnerReference) Reset() { *m = OwnerReference{} }
|
||||
func (*OwnerReference) ProtoMessage() {}
|
||||
func (*OwnerReference) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{26}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{25}
|
||||
}
|
||||
func (m *OwnerReference) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -803,7 +775,7 @@ var xxx_messageInfo_OwnerReference proto.InternalMessageInfo
|
||||
func (m *PartialObjectMetadata) Reset() { *m = PartialObjectMetadata{} }
|
||||
func (*PartialObjectMetadata) ProtoMessage() {}
|
||||
func (*PartialObjectMetadata) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{27}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{26}
|
||||
}
|
||||
func (m *PartialObjectMetadata) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -831,7 +803,7 @@ var xxx_messageInfo_PartialObjectMetadata proto.InternalMessageInfo
|
||||
func (m *PartialObjectMetadataList) Reset() { *m = PartialObjectMetadataList{} }
|
||||
func (*PartialObjectMetadataList) ProtoMessage() {}
|
||||
func (*PartialObjectMetadataList) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{28}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{27}
|
||||
}
|
||||
func (m *PartialObjectMetadataList) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -859,7 +831,7 @@ var xxx_messageInfo_PartialObjectMetadataList proto.InternalMessageInfo
|
||||
func (m *Patch) Reset() { *m = Patch{} }
|
||||
func (*Patch) ProtoMessage() {}
|
||||
func (*Patch) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{29}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{28}
|
||||
}
|
||||
func (m *Patch) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -887,7 +859,7 @@ var xxx_messageInfo_Patch proto.InternalMessageInfo
|
||||
func (m *PatchOptions) Reset() { *m = PatchOptions{} }
|
||||
func (*PatchOptions) ProtoMessage() {}
|
||||
func (*PatchOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{30}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{29}
|
||||
}
|
||||
func (m *PatchOptions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -915,7 +887,7 @@ var xxx_messageInfo_PatchOptions proto.InternalMessageInfo
|
||||
func (m *Preconditions) Reset() { *m = Preconditions{} }
|
||||
func (*Preconditions) ProtoMessage() {}
|
||||
func (*Preconditions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{31}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{30}
|
||||
}
|
||||
func (m *Preconditions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -943,7 +915,7 @@ var xxx_messageInfo_Preconditions proto.InternalMessageInfo
|
||||
func (m *RootPaths) Reset() { *m = RootPaths{} }
|
||||
func (*RootPaths) ProtoMessage() {}
|
||||
func (*RootPaths) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{32}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{31}
|
||||
}
|
||||
func (m *RootPaths) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -971,7 +943,7 @@ var xxx_messageInfo_RootPaths proto.InternalMessageInfo
|
||||
func (m *ServerAddressByClientCIDR) Reset() { *m = ServerAddressByClientCIDR{} }
|
||||
func (*ServerAddressByClientCIDR) ProtoMessage() {}
|
||||
func (*ServerAddressByClientCIDR) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{33}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{32}
|
||||
}
|
||||
func (m *ServerAddressByClientCIDR) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -999,7 +971,7 @@ var xxx_messageInfo_ServerAddressByClientCIDR proto.InternalMessageInfo
|
||||
func (m *Status) Reset() { *m = Status{} }
|
||||
func (*Status) ProtoMessage() {}
|
||||
func (*Status) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{34}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{33}
|
||||
}
|
||||
func (m *Status) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1027,7 +999,7 @@ var xxx_messageInfo_Status proto.InternalMessageInfo
|
||||
func (m *StatusCause) Reset() { *m = StatusCause{} }
|
||||
func (*StatusCause) ProtoMessage() {}
|
||||
func (*StatusCause) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{35}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{34}
|
||||
}
|
||||
func (m *StatusCause) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1055,7 +1027,7 @@ var xxx_messageInfo_StatusCause proto.InternalMessageInfo
|
||||
func (m *StatusDetails) Reset() { *m = StatusDetails{} }
|
||||
func (*StatusDetails) ProtoMessage() {}
|
||||
func (*StatusDetails) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{36}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{35}
|
||||
}
|
||||
func (m *StatusDetails) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1083,7 +1055,7 @@ var xxx_messageInfo_StatusDetails proto.InternalMessageInfo
|
||||
func (m *TableOptions) Reset() { *m = TableOptions{} }
|
||||
func (*TableOptions) ProtoMessage() {}
|
||||
func (*TableOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{37}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{36}
|
||||
}
|
||||
func (m *TableOptions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1111,7 +1083,7 @@ var xxx_messageInfo_TableOptions proto.InternalMessageInfo
|
||||
func (m *Time) Reset() { *m = Time{} }
|
||||
func (*Time) ProtoMessage() {}
|
||||
func (*Time) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{38}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{37}
|
||||
}
|
||||
func (m *Time) XXX_Unmarshal(b []byte) error {
|
||||
return xxx_messageInfo_Time.Unmarshal(m, b)
|
||||
@ -1134,7 +1106,7 @@ var xxx_messageInfo_Time proto.InternalMessageInfo
|
||||
func (m *Timestamp) Reset() { *m = Timestamp{} }
|
||||
func (*Timestamp) ProtoMessage() {}
|
||||
func (*Timestamp) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{39}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{38}
|
||||
}
|
||||
func (m *Timestamp) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1162,7 +1134,7 @@ var xxx_messageInfo_Timestamp proto.InternalMessageInfo
|
||||
func (m *TypeMeta) Reset() { *m = TypeMeta{} }
|
||||
func (*TypeMeta) ProtoMessage() {}
|
||||
func (*TypeMeta) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{40}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{39}
|
||||
}
|
||||
func (m *TypeMeta) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1190,7 +1162,7 @@ var xxx_messageInfo_TypeMeta proto.InternalMessageInfo
|
||||
func (m *UpdateOptions) Reset() { *m = UpdateOptions{} }
|
||||
func (*UpdateOptions) ProtoMessage() {}
|
||||
func (*UpdateOptions) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{41}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{40}
|
||||
}
|
||||
func (m *UpdateOptions) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1218,7 +1190,7 @@ var xxx_messageInfo_UpdateOptions proto.InternalMessageInfo
|
||||
func (m *Verbs) Reset() { *m = Verbs{} }
|
||||
func (*Verbs) ProtoMessage() {}
|
||||
func (*Verbs) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{42}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{41}
|
||||
}
|
||||
func (m *Verbs) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1246,7 +1218,7 @@ var xxx_messageInfo_Verbs proto.InternalMessageInfo
|
||||
func (m *WatchEvent) Reset() { *m = WatchEvent{} }
|
||||
func (*WatchEvent) ProtoMessage() {}
|
||||
func (*WatchEvent) Descriptor() ([]byte, []int) {
|
||||
return fileDescriptor_cf52fa777ced5367, []int{43}
|
||||
return fileDescriptor_cf52fa777ced5367, []int{42}
|
||||
}
|
||||
func (m *WatchEvent) XXX_Unmarshal(b []byte) error {
|
||||
return m.Unmarshal(b)
|
||||
@ -1281,7 +1253,6 @@ func init() {
|
||||
proto.RegisterType((*CreateOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.CreateOptions")
|
||||
proto.RegisterType((*DeleteOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.DeleteOptions")
|
||||
proto.RegisterType((*Duration)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.Duration")
|
||||
proto.RegisterType((*ExportOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.ExportOptions")
|
||||
proto.RegisterType((*FieldsV1)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.FieldsV1")
|
||||
proto.RegisterType((*GetOptions)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GetOptions")
|
||||
proto.RegisterType((*GroupKind)(nil), "k8s.io.apimachinery.pkg.apis.meta.v1.GroupKind")
|
||||
@ -1326,184 +1297,182 @@ func init() {
|
||||
}
|
||||
|
||||
var fileDescriptor_cf52fa777ced5367 = []byte{
|
||||
// 2832 bytes of a gzipped FileDescriptorProto
|
||||
// 2792 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x1a, 0xcd, 0x6f, 0x23, 0x57,
|
||||
0x3d, 0x63, 0xc7, 0x89, 0xfd, 0x73, 0x9c, 0x8f, 0xb7, 0x59, 0xf0, 0x06, 0x11, 0xa7, 0x53, 0xb4,
|
||||
0xda, 0x42, 0xeb, 0x34, 0x4b, 0xa9, 0xb6, 0x5b, 0x5a, 0x88, 0xe3, 0x64, 0x1b, 0x9a, 0x34, 0xd1,
|
||||
0xcb, 0xee, 0x02, 0xa5, 0x42, 0x9d, 0x78, 0x5e, 0x9c, 0x21, 0xe3, 0x19, 0xf7, 0xbd, 0x71, 0xb2,
|
||||
0x86, 0x03, 0x3d, 0x80, 0x00, 0x09, 0xaa, 0x1e, 0x11, 0x07, 0xd4, 0x0a, 0xfe, 0x02, 0x2e, 0xf0,
|
||||
0x07, 0x20, 0xd1, 0x63, 0x25, 0x2e, 0x95, 0x40, 0x56, 0x37, 0x1c, 0x38, 0x22, 0xae, 0xb9, 0x80,
|
||||
0xde, 0xc7, 0xcc, 0xbc, 0xf1, 0xc7, 0x66, 0xdc, 0x2d, 0x15, 0x37, 0xcf, 0xef, 0xfb, 0xbd, 0xf7,
|
||||
0x7b, 0xbf, 0xaf, 0x67, 0xd8, 0x3d, 0xb9, 0xc5, 0xaa, 0x8e, 0xbf, 0x7a, 0xd2, 0x39, 0x24, 0xd4,
|
||||
0x23, 0x01, 0x61, 0xab, 0xa7, 0xc4, 0xb3, 0x7d, 0xba, 0xaa, 0x10, 0x56, 0xdb, 0x69, 0x59, 0x8d,
|
||||
0x63, 0xc7, 0x23, 0xb4, 0xbb, 0xda, 0x3e, 0x69, 0x72, 0x00, 0x5b, 0x6d, 0x91, 0xc0, 0x5a, 0x3d,
|
||||
0x5d, 0x5b, 0x6d, 0x12, 0x8f, 0x50, 0x2b, 0x20, 0x76, 0xb5, 0x4d, 0xfd, 0xc0, 0x47, 0x5f, 0x92,
|
||||
0x5c, 0x55, 0x9d, 0xab, 0xda, 0x3e, 0x69, 0x72, 0x00, 0xab, 0x72, 0xae, 0xea, 0xe9, 0xda, 0xd2,
|
||||
0x33, 0x4d, 0x27, 0x38, 0xee, 0x1c, 0x56, 0x1b, 0x7e, 0x6b, 0xb5, 0xe9, 0x37, 0xfd, 0x55, 0xc1,
|
||||
0x7c, 0xd8, 0x39, 0x12, 0x5f, 0xe2, 0x43, 0xfc, 0x92, 0x42, 0x97, 0x46, 0x9a, 0x42, 0x3b, 0x5e,
|
||||
0xe0, 0xb4, 0x48, 0xbf, 0x15, 0x4b, 0xcf, 0x5f, 0xc6, 0xc0, 0x1a, 0xc7, 0xa4, 0x65, 0xf5, 0xf3,
|
||||
0x99, 0x7f, 0xc9, 0x42, 0x7e, 0x7d, 0x7f, 0xfb, 0x0e, 0xf5, 0x3b, 0x6d, 0xb4, 0x02, 0x93, 0x9e,
|
||||
0xd5, 0x22, 0x65, 0x63, 0xc5, 0xb8, 0x51, 0xa8, 0xcd, 0x7c, 0xd0, 0xab, 0x4c, 0x9c, 0xf7, 0x2a,
|
||||
0x93, 0xaf, 0x59, 0x2d, 0x82, 0x05, 0x06, 0xb9, 0x90, 0x3f, 0x25, 0x94, 0x39, 0xbe, 0xc7, 0xca,
|
||||
0x99, 0x95, 0xec, 0x8d, 0xe2, 0xcd, 0x97, 0xab, 0x69, 0xd6, 0x5f, 0x15, 0x0a, 0xee, 0x4b, 0xd6,
|
||||
0x2d, 0x9f, 0xd6, 0x1d, 0xd6, 0xf0, 0x4f, 0x09, 0xed, 0xd6, 0xe6, 0x95, 0x96, 0xbc, 0x42, 0x32,
|
||||
0x1c, 0x69, 0x40, 0x3f, 0x31, 0x60, 0xbe, 0x4d, 0xc9, 0x11, 0xa1, 0x94, 0xd8, 0x0a, 0x5f, 0xce,
|
||||
0xae, 0x18, 0x9f, 0x82, 0xda, 0xb2, 0x52, 0x3b, 0xbf, 0xdf, 0x27, 0x1f, 0x0f, 0x68, 0x44, 0xbf,
|
||||
0x33, 0x60, 0x89, 0x11, 0x7a, 0x4a, 0xe8, 0xba, 0x6d, 0x53, 0xc2, 0x58, 0xad, 0xbb, 0xe1, 0x3a,
|
||||
0xc4, 0x0b, 0x36, 0xb6, 0xeb, 0x98, 0x95, 0x27, 0xc5, 0x3e, 0x7c, 0x23, 0x9d, 0x41, 0x07, 0xa3,
|
||||
0xe4, 0xd4, 0x4c, 0x65, 0xd1, 0xd2, 0x48, 0x12, 0x86, 0x1f, 0x61, 0x86, 0x79, 0x04, 0x33, 0xe1,
|
||||
0x41, 0xee, 0x38, 0x2c, 0x40, 0xf7, 0x61, 0xaa, 0xc9, 0x3f, 0x58, 0xd9, 0x10, 0x06, 0x56, 0xd3,
|
||||
0x19, 0x18, 0xca, 0xa8, 0xcd, 0x2a, 0x7b, 0xa6, 0xc4, 0x27, 0xc3, 0x4a, 0x9a, 0xf9, 0x8b, 0x49,
|
||||
0x28, 0xae, 0xef, 0x6f, 0x63, 0xc2, 0xfc, 0x0e, 0x6d, 0x90, 0x14, 0x4e, 0x73, 0x0b, 0x66, 0x98,
|
||||
0xe3, 0x35, 0x3b, 0xae, 0x45, 0x39, 0xb4, 0x3c, 0x25, 0x28, 0x17, 0x15, 0xe5, 0xcc, 0x81, 0x86,
|
||||
0xc3, 0x09, 0x4a, 0x74, 0x13, 0x80, 0x4b, 0x60, 0x6d, 0xab, 0x41, 0xec, 0x72, 0x66, 0xc5, 0xb8,
|
||||
0x91, 0xaf, 0x21, 0xc5, 0x07, 0xaf, 0x45, 0x18, 0xac, 0x51, 0xa1, 0x27, 0x21, 0x27, 0x2c, 0x2d,
|
||||
0xe7, 0x85, 0x9a, 0x92, 0x22, 0xcf, 0x89, 0x65, 0x60, 0x89, 0x43, 0x4f, 0xc1, 0xb4, 0xf2, 0xb2,
|
||||
0x72, 0x41, 0x90, 0xcd, 0x29, 0xb2, 0xe9, 0xd0, 0x0d, 0x42, 0x3c, 0x5f, 0xdf, 0x89, 0xe3, 0xd9,
|
||||
0xc2, 0xef, 0xb4, 0xf5, 0xbd, 0xea, 0x78, 0x36, 0x16, 0x18, 0xb4, 0x03, 0xb9, 0x53, 0x42, 0x0f,
|
||||
0xb9, 0x27, 0x70, 0xd7, 0xfc, 0x4a, 0xba, 0x8d, 0xbe, 0xcf, 0x59, 0x6a, 0x05, 0x6e, 0x9a, 0xf8,
|
||||
0x89, 0xa5, 0x10, 0x54, 0x05, 0x60, 0xc7, 0x3e, 0x0d, 0xc4, 0xf2, 0xca, 0xb9, 0x95, 0xec, 0x8d,
|
||||
0x42, 0x6d, 0x96, 0xaf, 0xf7, 0x20, 0x82, 0x62, 0x8d, 0x82, 0xd3, 0x37, 0xac, 0x80, 0x34, 0x7d,
|
||||
0xea, 0x10, 0x56, 0x9e, 0x8e, 0xe9, 0x37, 0x22, 0x28, 0xd6, 0x28, 0xd0, 0xb7, 0x00, 0xb1, 0xc0,
|
||||
0xa7, 0x56, 0x93, 0xa8, 0xa5, 0xbe, 0x62, 0xb1, 0xe3, 0x32, 0x88, 0xd5, 0x2d, 0xa9, 0xd5, 0xa1,
|
||||
0x83, 0x01, 0x0a, 0x3c, 0x84, 0xcb, 0xfc, 0x83, 0x01, 0x73, 0x9a, 0x2f, 0x08, 0xbf, 0xbb, 0x05,
|
||||
0x33, 0x4d, 0xed, 0xd6, 0x29, 0xbf, 0x88, 0x4e, 0x5b, 0xbf, 0x91, 0x38, 0x41, 0x89, 0x08, 0x14,
|
||||
0xa8, 0x92, 0x14, 0x46, 0x97, 0xb5, 0xd4, 0x4e, 0x1b, 0xda, 0x10, 0x6b, 0xd2, 0x80, 0x0c, 0xc7,
|
||||
0x92, 0xcd, 0x7f, 0x1a, 0xc2, 0x81, 0xc3, 0x78, 0x83, 0x6e, 0x68, 0x31, 0xcd, 0x10, 0xdb, 0x37,
|
||||
0x33, 0x22, 0x1e, 0x5d, 0x12, 0x08, 0x32, 0xff, 0x17, 0x81, 0xe0, 0x76, 0xfe, 0xd7, 0xef, 0x55,
|
||||
0x26, 0xde, 0xfe, 0xfb, 0xca, 0x84, 0xf9, 0x9f, 0x0c, 0x14, 0x36, 0x7c, 0xcf, 0x76, 0x02, 0xe5,
|
||||
0xc8, 0x41, 0xb7, 0x3d, 0x70, 0x51, 0xef, 0x76, 0xdb, 0x04, 0x0b, 0x0c, 0x7a, 0x01, 0xa6, 0x58,
|
||||
0x60, 0x05, 0x1d, 0x26, 0xae, 0x5a, 0xa1, 0xf6, 0x44, 0x18, 0x02, 0x0e, 0x04, 0xf4, 0xa2, 0x57,
|
||||
0x99, 0x8b, 0xc4, 0x49, 0x10, 0x56, 0x0c, 0xdc, 0xab, 0xfc, 0x43, 0x61, 0x94, 0x7d, 0x47, 0xa6,
|
||||
0x98, 0x30, 0x56, 0x67, 0x63, 0xaf, 0xda, 0x1b, 0xa0, 0xc0, 0x43, 0xb8, 0xd0, 0x29, 0x20, 0xd7,
|
||||
0x62, 0xc1, 0x5d, 0x6a, 0x79, 0x4c, 0xe8, 0xba, 0xeb, 0xb4, 0x88, 0xba, 0x5c, 0x5f, 0x4e, 0xb7,
|
||||
0xbb, 0x9c, 0x23, 0xd6, 0xbb, 0x33, 0x20, 0x0d, 0x0f, 0xd1, 0x80, 0xae, 0xc3, 0x14, 0x25, 0x16,
|
||||
0xf3, 0xbd, 0x72, 0x4e, 0x2c, 0x3f, 0x8a, 0x80, 0x58, 0x40, 0xb1, 0xc2, 0xf2, 0xe0, 0xd1, 0x22,
|
||||
0x8c, 0x59, 0xcd, 0x30, 0x94, 0x45, 0xc1, 0x63, 0x57, 0x82, 0x71, 0x88, 0x37, 0x5b, 0x50, 0xda,
|
||||
0xa0, 0xc4, 0x0a, 0xc8, 0x5e, 0x3b, 0x10, 0x2e, 0x64, 0xc2, 0x94, 0x4d, 0xbb, 0xb8, 0xe3, 0x29,
|
||||
0x57, 0x03, 0x2e, 0xbf, 0x2e, 0x20, 0x58, 0x61, 0xf8, 0x0d, 0x3a, 0x72, 0x88, 0x6b, 0xef, 0x5a,
|
||||
0x9e, 0xd5, 0x24, 0x54, 0x45, 0x9e, 0xc8, 0xaf, 0xb7, 0x34, 0x1c, 0x4e, 0x50, 0x9a, 0x3f, 0xcb,
|
||||
0x42, 0xa9, 0x4e, 0x5c, 0x12, 0xeb, 0xdb, 0x02, 0xd4, 0xa4, 0x56, 0x83, 0xec, 0x13, 0xea, 0xf8,
|
||||
0xf6, 0x01, 0x69, 0xf8, 0x9e, 0xcd, 0x84, 0x0b, 0x64, 0x6b, 0x9f, 0xe3, 0x7b, 0x73, 0x67, 0x00,
|
||||
0x8b, 0x87, 0x70, 0x20, 0x17, 0x4a, 0x6d, 0x2a, 0x7e, 0x8b, 0xfd, 0x92, 0x1e, 0x52, 0xbc, 0xf9,
|
||||
0xd5, 0x74, 0xc7, 0xb1, 0xaf, 0xb3, 0xd6, 0x16, 0xce, 0x7b, 0x95, 0x52, 0x02, 0x84, 0x93, 0xc2,
|
||||
0xd1, 0x37, 0x61, 0xde, 0xa7, 0xed, 0x63, 0xcb, 0xab, 0x93, 0x36, 0xf1, 0x6c, 0xe2, 0x05, 0x4c,
|
||||
0xec, 0x42, 0xbe, 0xb6, 0xc8, 0x73, 0xf6, 0x5e, 0x1f, 0x0e, 0x0f, 0x50, 0xa3, 0xd7, 0x61, 0xa1,
|
||||
0x4d, 0xfd, 0xb6, 0xd5, 0x14, 0x2e, 0xb5, 0xef, 0xbb, 0x4e, 0xa3, 0x2b, 0x5c, 0xa8, 0x50, 0x7b,
|
||||
0xfa, 0xbc, 0x57, 0x59, 0xd8, 0xef, 0x47, 0x5e, 0xf4, 0x2a, 0x57, 0xc4, 0xd6, 0x71, 0x48, 0x8c,
|
||||
0xc4, 0x83, 0x62, 0xb4, 0x33, 0xcc, 0x8d, 0x3a, 0x43, 0x73, 0x1b, 0xf2, 0xf5, 0x8e, 0xf2, 0xe7,
|
||||
0x97, 0x20, 0x6f, 0xab, 0xdf, 0x6a, 0xe7, 0xc3, 0x8b, 0x15, 0xd1, 0x5c, 0xf4, 0x2a, 0x25, 0x5e,
|
||||
0xa6, 0x55, 0x43, 0x00, 0x8e, 0x58, 0xcc, 0x37, 0xa0, 0xb4, 0xf9, 0xa0, 0xed, 0xd3, 0x20, 0x3c,
|
||||
0xd3, 0xeb, 0x30, 0x45, 0x04, 0x40, 0x48, 0xcb, 0xc7, 0x7e, 0x2a, 0xc9, 0xb0, 0xc2, 0xf2, 0x4c,
|
||||
0x48, 0x1e, 0x58, 0x8d, 0x40, 0x25, 0xce, 0x28, 0x13, 0x6e, 0x72, 0x20, 0x96, 0x38, 0xf3, 0x3a,
|
||||
0xe4, 0x85, 0x43, 0xb1, 0xfb, 0x6b, 0x68, 0x1e, 0xb2, 0xd8, 0x3a, 0x13, 0x52, 0x67, 0x70, 0x96,
|
||||
0x5a, 0x67, 0x5a, 0x2c, 0xd9, 0x03, 0xb8, 0x43, 0x22, 0x13, 0xd6, 0x61, 0x2e, 0x0c, 0xa8, 0xc9,
|
||||
0x38, 0xff, 0x79, 0xa5, 0x64, 0x0e, 0x27, 0xd1, 0xb8, 0x9f, 0xde, 0x7c, 0x03, 0x0a, 0x22, 0x17,
|
||||
0xf0, 0x44, 0x1a, 0x27, 0x6d, 0xe3, 0x11, 0x49, 0x3b, 0xcc, 0xc4, 0x99, 0x51, 0x99, 0x58, 0x33,
|
||||
0xd7, 0x85, 0x92, 0xe4, 0x0d, 0xcb, 0x94, 0x54, 0x1a, 0x9e, 0x86, 0x7c, 0x68, 0xa6, 0xd2, 0x12,
|
||||
0x95, 0xa7, 0xa1, 0x20, 0x1c, 0x51, 0x68, 0xda, 0x8e, 0x21, 0x91, 0xd7, 0xd2, 0x29, 0xd3, 0x6a,
|
||||
0x90, 0xcc, 0xa3, 0x6b, 0x10, 0x4d, 0xd3, 0x8f, 0xa1, 0x3c, 0xaa, 0xa6, 0x7d, 0x8c, 0xcc, 0x9b,
|
||||
0xde, 0x14, 0xf3, 0x1d, 0x03, 0xe6, 0x75, 0x49, 0xe9, 0x8f, 0x2f, 0xbd, 0x92, 0xcb, 0x6b, 0x2e,
|
||||
0x6d, 0x47, 0x7e, 0x6b, 0xc0, 0x62, 0x62, 0x69, 0x63, 0x9d, 0xf8, 0x18, 0x46, 0xe9, 0xce, 0x91,
|
||||
0x1d, 0xc3, 0x39, 0xfe, 0x9a, 0x81, 0xd2, 0x8e, 0x75, 0x48, 0xdc, 0x03, 0xe2, 0x92, 0x46, 0xe0,
|
||||
0x53, 0xf4, 0x23, 0x28, 0xb6, 0xac, 0xa0, 0x71, 0x2c, 0xa0, 0x61, 0x7d, 0x5e, 0x4f, 0x17, 0x4a,
|
||||
0x13, 0x92, 0xaa, 0xbb, 0xb1, 0x98, 0x4d, 0x2f, 0xa0, 0xdd, 0xda, 0x15, 0x65, 0x52, 0x51, 0xc3,
|
||||
0x60, 0x5d, 0x9b, 0x68, 0xaa, 0xc4, 0xf7, 0xe6, 0x83, 0x36, 0x2f, 0x1e, 0xc6, 0xef, 0xe5, 0x12,
|
||||
0x26, 0x60, 0xf2, 0x56, 0xc7, 0xa1, 0xa4, 0x45, 0xbc, 0x20, 0x6e, 0xaa, 0x76, 0xfb, 0xe4, 0xe3,
|
||||
0x01, 0x8d, 0x4b, 0x2f, 0xc3, 0x7c, 0xbf, 0xf1, 0x3c, 0xfe, 0x9c, 0x90, 0xae, 0x3c, 0x2f, 0xcc,
|
||||
0x7f, 0xa2, 0x45, 0xc8, 0x9d, 0x5a, 0x6e, 0x47, 0xdd, 0x46, 0x2c, 0x3f, 0x6e, 0x67, 0x6e, 0x19,
|
||||
0xe6, 0xef, 0x0d, 0x28, 0x8f, 0x32, 0x04, 0x7d, 0x51, 0x13, 0x54, 0x2b, 0x2a, 0xab, 0xb2, 0xaf,
|
||||
0x92, 0xae, 0x94, 0xba, 0x09, 0x79, 0xbf, 0xcd, 0xab, 0x0d, 0x9f, 0xaa, 0x53, 0x7f, 0x2a, 0x3c,
|
||||
0xc9, 0x3d, 0x05, 0xbf, 0xe8, 0x55, 0xae, 0x26, 0xc4, 0x87, 0x08, 0x1c, 0xb1, 0xf2, 0x3c, 0x20,
|
||||
0xec, 0xe1, 0xb9, 0x29, 0xca, 0x03, 0xf7, 0x05, 0x04, 0x2b, 0x8c, 0xf9, 0x27, 0x03, 0x26, 0x45,
|
||||
0x59, 0xfc, 0x06, 0xe4, 0xf9, 0xfe, 0xd9, 0x56, 0x60, 0x09, 0xbb, 0x52, 0x37, 0x64, 0x9c, 0x7b,
|
||||
0x97, 0x04, 0x56, 0xec, 0x6d, 0x21, 0x04, 0x47, 0x12, 0x11, 0x86, 0x9c, 0x13, 0x90, 0x56, 0x78,
|
||||
0x90, 0xcf, 0x8c, 0x14, 0xad, 0xc6, 0x01, 0x55, 0x6c, 0x9d, 0x6d, 0x3e, 0x08, 0x88, 0xc7, 0x0f,
|
||||
0x23, 0xbe, 0x1a, 0xdb, 0x5c, 0x06, 0x96, 0xa2, 0xcc, 0x7f, 0x1b, 0x10, 0xa9, 0xe2, 0xce, 0xcf,
|
||||
0x88, 0x7b, 0xb4, 0xe3, 0x78, 0x27, 0x6a, 0x5b, 0x23, 0x73, 0x0e, 0x14, 0x1c, 0x47, 0x14, 0xc3,
|
||||
0xd2, 0x43, 0x66, 0xbc, 0xf4, 0xc0, 0x15, 0x36, 0x7c, 0x2f, 0x70, 0xbc, 0xce, 0xc0, 0x6d, 0xdb,
|
||||
0x50, 0x70, 0x1c, 0x51, 0xf0, 0x32, 0x87, 0x92, 0x96, 0xe5, 0x78, 0x8e, 0xd7, 0xe4, 0x8b, 0xd8,
|
||||
0xf0, 0x3b, 0x5e, 0x20, 0xf2, 0xbd, 0x2a, 0x73, 0xf0, 0x00, 0x16, 0x0f, 0xe1, 0x30, 0xff, 0x38,
|
||||
0x09, 0x45, 0xbe, 0xe6, 0x30, 0xcf, 0xbd, 0x08, 0x25, 0x57, 0xf7, 0x02, 0xb5, 0xf6, 0xab, 0xca,
|
||||
0x94, 0xe4, 0xbd, 0xc6, 0x49, 0x5a, 0xce, 0x2c, 0xaa, 0xb3, 0x88, 0x39, 0x93, 0x64, 0xde, 0xd2,
|
||||
0x91, 0x38, 0x49, 0xcb, 0xa3, 0xd7, 0x19, 0xbf, 0x1f, 0xaa, 0xee, 0x89, 0x8e, 0xe8, 0xdb, 0x1c,
|
||||
0x88, 0x25, 0x0e, 0xed, 0xc2, 0x15, 0xcb, 0x75, 0xfd, 0x33, 0x01, 0xac, 0xf9, 0xfe, 0x49, 0xcb,
|
||||
0xa2, 0x27, 0x4c, 0xb4, 0xb4, 0xf9, 0xda, 0x17, 0x14, 0xcb, 0x95, 0xf5, 0x41, 0x12, 0x3c, 0x8c,
|
||||
0x6f, 0xd8, 0xb1, 0x4d, 0x8e, 0x79, 0x6c, 0xc7, 0xb0, 0xd8, 0x07, 0x12, 0xb7, 0x5c, 0xf5, 0x97,
|
||||
0xcf, 0x29, 0x39, 0x8b, 0x78, 0x08, 0xcd, 0xc5, 0x08, 0x38, 0x1e, 0x2a, 0x11, 0xdd, 0x86, 0x59,
|
||||
0xee, 0xc9, 0x7e, 0x27, 0x08, 0xab, 0xda, 0x9c, 0x38, 0x6e, 0x74, 0xde, 0xab, 0xcc, 0xde, 0x4d,
|
||||
0x60, 0x70, 0x1f, 0x25, 0xdf, 0x5c, 0xd7, 0x69, 0x39, 0x41, 0x79, 0x5a, 0xb0, 0x44, 0x9b, 0xbb,
|
||||
0xc3, 0x81, 0x58, 0xe2, 0x12, 0x1e, 0x98, 0xbf, 0xcc, 0x03, 0xcd, 0xdf, 0x64, 0x01, 0xc9, 0x32,
|
||||
0xdc, 0x96, 0xf5, 0x94, 0x0c, 0x69, 0xbc, 0x57, 0x50, 0x65, 0xbc, 0xd1, 0xd7, 0x2b, 0xa8, 0x0a,
|
||||
0x3e, 0xc4, 0xa3, 0x5d, 0x28, 0xc8, 0xd0, 0x12, 0x5f, 0x97, 0x55, 0x45, 0x5c, 0xd8, 0x0b, 0x11,
|
||||
0x17, 0xbd, 0xca, 0x52, 0x42, 0x4d, 0x84, 0x11, 0x7d, 0x5c, 0x2c, 0x01, 0xdd, 0x04, 0xb0, 0xda,
|
||||
0x8e, 0x3e, 0x35, 0x2b, 0xc4, 0xb3, 0x93, 0xb8, 0xff, 0xc5, 0x1a, 0x15, 0x7a, 0x05, 0x26, 0x83,
|
||||
0x4f, 0xd6, 0x6b, 0xe5, 0x45, 0x2b, 0xc9, 0x3b, 0x2b, 0x21, 0x81, 0x6b, 0x17, 0xfe, 0xcc, 0xb8,
|
||||
0x59, 0xaa, 0x4d, 0x8a, 0xb4, 0x6f, 0x45, 0x18, 0xac, 0x51, 0xa1, 0xef, 0x40, 0xfe, 0x48, 0x95,
|
||||
0xa2, 0xe2, 0x60, 0x52, 0x87, 0xc8, 0xb0, 0x80, 0x95, 0x8d, 0x7b, 0xf8, 0x85, 0x23, 0x69, 0xe6,
|
||||
0x5b, 0x50, 0xd8, 0x75, 0x1a, 0xd4, 0x17, 0x6d, 0xde, 0x53, 0x30, 0xcd, 0x12, 0x7d, 0x50, 0x74,
|
||||
0x24, 0xa1, 0xbb, 0x84, 0x78, 0xee, 0x27, 0x9e, 0xe5, 0xf9, 0xb2, 0xdb, 0xc9, 0xc5, 0x7e, 0xf2,
|
||||
0x1a, 0x07, 0x62, 0x89, 0xbb, 0xbd, 0xc8, 0x33, 0xfd, 0xcf, 0xdf, 0xaf, 0x4c, 0xbc, 0xfb, 0x7e,
|
||||
0x65, 0xe2, 0xbd, 0xf7, 0x55, 0xd6, 0xbf, 0x00, 0x80, 0xbd, 0xc3, 0x1f, 0x90, 0x86, 0x8c, 0x9f,
|
||||
0xa9, 0xa6, 0x64, 0xe1, 0x70, 0x56, 0x4c, 0xc9, 0x32, 0x7d, 0xd5, 0x9b, 0x86, 0xc3, 0x09, 0x4a,
|
||||
0xb4, 0x0a, 0x85, 0x68, 0xfe, 0xa5, 0x0e, 0x7a, 0x21, 0x74, 0x9c, 0x68, 0x48, 0x86, 0x63, 0x9a,
|
||||
0x44, 0x30, 0x9f, 0xbc, 0x34, 0x98, 0xd7, 0x20, 0xdb, 0x71, 0x6c, 0xd5, 0x13, 0x3f, 0x1b, 0x26,
|
||||
0xd3, 0x7b, 0xdb, 0xf5, 0x8b, 0x5e, 0xe5, 0x89, 0x51, 0x63, 0xe7, 0xa0, 0xdb, 0x26, 0xac, 0x7a,
|
||||
0x6f, 0xbb, 0x8e, 0x39, 0xf3, 0xb0, 0xc8, 0x32, 0x35, 0x66, 0x64, 0xb9, 0x09, 0xd0, 0x8c, 0x27,
|
||||
0x0b, 0xf2, 0xe2, 0x46, 0x1e, 0xa5, 0x4d, 0x14, 0x34, 0x2a, 0xc4, 0x60, 0xa1, 0xc1, 0xdb, 0x6f,
|
||||
0xd5, 0xe1, 0xb3, 0xc0, 0x6a, 0xc9, 0xb9, 0xe0, 0x78, 0xce, 0x7d, 0x4d, 0xa9, 0x59, 0xd8, 0xe8,
|
||||
0x17, 0x86, 0x07, 0xe5, 0x23, 0x1f, 0x16, 0x6c, 0xd5, 0x48, 0xc6, 0x4a, 0x0b, 0x63, 0x2b, 0xbd,
|
||||
0xca, 0x15, 0xd6, 0xfb, 0x05, 0xe1, 0x41, 0xd9, 0xe8, 0xfb, 0xb0, 0x14, 0x02, 0x07, 0xbb, 0x79,
|
||||
0x11, 0x79, 0xb3, 0xb5, 0xe5, 0xf3, 0x5e, 0x65, 0xa9, 0x3e, 0x92, 0x0a, 0x3f, 0x42, 0x02, 0xb2,
|
||||
0x61, 0xca, 0x95, 0x95, 0x6a, 0x51, 0x54, 0x17, 0x5f, 0x4f, 0xb7, 0x8a, 0xd8, 0xfb, 0xab, 0x7a,
|
||||
0x85, 0x1a, 0x75, 0xab, 0xaa, 0x38, 0x55, 0xb2, 0xd1, 0x03, 0x28, 0x5a, 0x9e, 0xe7, 0x07, 0x96,
|
||||
0x9c, 0x2f, 0xcc, 0x08, 0x55, 0xeb, 0x63, 0xab, 0x5a, 0x8f, 0x65, 0xf4, 0x55, 0xc4, 0x1a, 0x06,
|
||||
0xeb, 0xaa, 0xd0, 0x19, 0xcc, 0xf9, 0x67, 0x1e, 0xa1, 0x98, 0x1c, 0x11, 0x4a, 0xbc, 0x06, 0x61,
|
||||
0xe5, 0x92, 0xd0, 0xfe, 0x5c, 0x4a, 0xed, 0x09, 0xe6, 0xd8, 0xa5, 0x93, 0x70, 0x86, 0xfb, 0xb5,
|
||||
0xa0, 0x2a, 0x0f, 0x92, 0x9e, 0xe5, 0x3a, 0x3f, 0x24, 0x94, 0x95, 0x67, 0xe3, 0xd1, 0xed, 0x56,
|
||||
0x04, 0xc5, 0x1a, 0x05, 0xfa, 0x1a, 0x14, 0x1b, 0x6e, 0x87, 0x05, 0x44, 0xce, 0xd1, 0xe7, 0xc4,
|
||||
0x0d, 0x8a, 0xd6, 0xb7, 0x11, 0xa3, 0xb0, 0x4e, 0x87, 0x3a, 0x50, 0x6a, 0xe9, 0x29, 0xa3, 0xbc,
|
||||
0x20, 0x56, 0x77, 0x2b, 0xdd, 0xea, 0x06, 0x93, 0x5a, 0x5c, 0xc1, 0x24, 0x70, 0x38, 0xa9, 0x65,
|
||||
0xe9, 0x05, 0x28, 0x7e, 0xc2, 0xe2, 0x9e, 0x37, 0x07, 0xfd, 0xe7, 0x38, 0x56, 0x73, 0xf0, 0xe7,
|
||||
0x0c, 0xcc, 0x26, 0x77, 0xbf, 0x2f, 0x1d, 0xe6, 0x52, 0xa5, 0xc3, 0xb0, 0x0d, 0x35, 0x46, 0x8e,
|
||||
0xfe, 0xc3, 0xb0, 0x9e, 0x1d, 0x19, 0xd6, 0x55, 0xf4, 0x9c, 0x7c, 0x9c, 0xe8, 0x59, 0x05, 0xe0,
|
||||
0x75, 0x06, 0xf5, 0x5d, 0x97, 0x50, 0x11, 0x38, 0xf3, 0x6a, 0xc4, 0x1f, 0x41, 0xb1, 0x46, 0xc1,
|
||||
0xab, 0xe1, 0x43, 0xd7, 0x6f, 0x9c, 0x88, 0x2d, 0x08, 0x2f, 0xbd, 0x08, 0x99, 0x79, 0x59, 0x0d,
|
||||
0xd7, 0x06, 0xb0, 0x78, 0x08, 0x87, 0xd9, 0x85, 0xab, 0xfb, 0x16, 0x0d, 0x1c, 0xcb, 0x8d, 0x2f,
|
||||
0x98, 0x68, 0x37, 0xde, 0x1c, 0x68, 0x66, 0x9e, 0x1d, 0xf7, 0xa2, 0xc6, 0x9b, 0x1f, 0xc3, 0xe2,
|
||||
0x86, 0xc6, 0xfc, 0x9b, 0x01, 0xd7, 0x86, 0xea, 0xfe, 0x0c, 0x9a, 0xa9, 0x37, 0x93, 0xcd, 0xd4,
|
||||
0x8b, 0x29, 0x67, 0x9c, 0xc3, 0xac, 0x1d, 0xd1, 0x5a, 0x4d, 0x43, 0x6e, 0x9f, 0x17, 0xb1, 0xe6,
|
||||
0xaf, 0x0c, 0x98, 0x11, 0xbf, 0xc6, 0x99, 0x0f, 0x57, 0x20, 0x77, 0xe4, 0x87, 0x23, 0xaa, 0xbc,
|
||||
0x7c, 0x42, 0xda, 0xe2, 0x00, 0x2c, 0xe1, 0x8f, 0x31, 0x40, 0x7e, 0xc7, 0x80, 0xe4, 0x64, 0x16,
|
||||
0xbd, 0x2c, 0xfd, 0xd7, 0x88, 0x46, 0xa7, 0x63, 0xfa, 0xee, 0x4b, 0xa3, 0x5a, 0xc1, 0x2b, 0xa9,
|
||||
0xa6, 0x84, 0x4f, 0x43, 0x01, 0xfb, 0x7e, 0xb0, 0x6f, 0x05, 0xc7, 0x8c, 0x2f, 0xbc, 0xcd, 0x7f,
|
||||
0xa8, 0xbd, 0x11, 0x0b, 0x17, 0x18, 0x2c, 0xe1, 0xe6, 0x2f, 0x0d, 0xb8, 0x36, 0xf2, 0xd5, 0x84,
|
||||
0x87, 0x80, 0x46, 0xf4, 0xa5, 0x56, 0x14, 0x79, 0x61, 0x4c, 0x87, 0x35, 0x2a, 0xde, 0xc3, 0x25,
|
||||
0x9e, 0x5a, 0xfa, 0x7b, 0xb8, 0x84, 0x36, 0x9c, 0xa4, 0x35, 0xff, 0x95, 0x01, 0xf5, 0x74, 0xf2,
|
||||
0x3f, 0xf6, 0xd8, 0xeb, 0x7d, 0x0f, 0x37, 0xb3, 0xc9, 0x87, 0x9b, 0xe8, 0x95, 0x46, 0x7b, 0xb9,
|
||||
0xc8, 0x3e, 0xfa, 0xe5, 0x02, 0x3d, 0x1f, 0x3d, 0x86, 0xc8, 0xd0, 0xb5, 0x9c, 0x7c, 0x0c, 0xb9,
|
||||
0xe8, 0x55, 0x66, 0x94, 0xf0, 0xe4, 0xe3, 0xc8, 0xeb, 0x30, 0x6d, 0x93, 0xc0, 0x72, 0x5c, 0xd9,
|
||||
0x8f, 0xa5, 0x7e, 0x22, 0x90, 0xc2, 0xea, 0x92, 0xb5, 0x56, 0xe4, 0x36, 0xa9, 0x0f, 0x1c, 0x0a,
|
||||
0xe4, 0xd1, 0xb6, 0xe1, 0xdb, 0xb2, 0x9d, 0xc8, 0xc5, 0xd1, 0x76, 0xc3, 0xb7, 0x09, 0x16, 0x18,
|
||||
0xf3, 0x5d, 0x03, 0x8a, 0x52, 0xd2, 0x86, 0xd5, 0x61, 0x04, 0xad, 0x45, 0xab, 0x90, 0xc7, 0x7d,
|
||||
0x4d, 0x7f, 0xf5, 0xba, 0xe8, 0x55, 0x0a, 0x82, 0x4c, 0x74, 0x22, 0x43, 0x5e, 0x77, 0x32, 0x97,
|
||||
0xec, 0xd1, 0x93, 0x90, 0x13, 0xb7, 0x47, 0x6d, 0x66, 0x74, 0xd7, 0xc5, 0x05, 0xc3, 0x12, 0x67,
|
||||
0x7e, 0x9c, 0x81, 0x52, 0x62, 0x71, 0x29, 0x7a, 0x81, 0x68, 0x74, 0x99, 0x49, 0x31, 0x0e, 0x1f,
|
||||
0xfd, 0x30, 0xad, 0x72, 0xcf, 0xd4, 0xe3, 0xe4, 0x9e, 0xef, 0xc2, 0x54, 0x83, 0xef, 0x51, 0xf8,
|
||||
0x3f, 0x87, 0xb5, 0x71, 0x8e, 0x53, 0xec, 0x6e, 0xec, 0x8d, 0xe2, 0x93, 0x61, 0x25, 0x10, 0xdd,
|
||||
0x81, 0x05, 0x4a, 0x02, 0xda, 0x5d, 0x3f, 0x0a, 0x08, 0xd5, 0x9b, 0xf8, 0x5c, 0x5c, 0x71, 0xe3,
|
||||
0x7e, 0x02, 0x3c, 0xc8, 0x63, 0x1e, 0xc2, 0xcc, 0x5d, 0xeb, 0xd0, 0x8d, 0x1e, 0xbd, 0x30, 0x94,
|
||||
0x1c, 0xaf, 0xe1, 0x76, 0x6c, 0x22, 0xa3, 0x71, 0x18, 0xbd, 0xc2, 0x4b, 0xbb, 0xad, 0x23, 0x2f,
|
||||
0x7a, 0x95, 0x2b, 0x09, 0x80, 0x7c, 0xe5, 0xc1, 0x49, 0x11, 0xa6, 0x0b, 0x93, 0x9f, 0x61, 0xf7,
|
||||
0xf8, 0x3d, 0x28, 0xc4, 0xf5, 0xfd, 0xa7, 0xac, 0xd2, 0x7c, 0x13, 0xf2, 0xdc, 0xe3, 0xc3, 0xbe,
|
||||
0xf4, 0x92, 0x12, 0x27, 0x59, 0x38, 0x65, 0xd2, 0x14, 0x4e, 0x66, 0x0b, 0x4a, 0xf7, 0xda, 0xf6,
|
||||
0x63, 0x3e, 0x7b, 0x66, 0x52, 0x67, 0xad, 0x9b, 0x20, 0xff, 0x42, 0xc1, 0x13, 0x84, 0xcc, 0xdc,
|
||||
0x5a, 0x82, 0xd0, 0x13, 0xaf, 0x36, 0x95, 0xff, 0xa9, 0x01, 0x20, 0xc6, 0x5f, 0x9b, 0xa7, 0xc4,
|
||||
0x0b, 0x52, 0x3c, 0x8e, 0xdf, 0x83, 0x29, 0x5f, 0x7a, 0x93, 0x7c, 0xfa, 0x1c, 0x73, 0xc6, 0x1a,
|
||||
0x5d, 0x02, 0xe9, 0x4f, 0x58, 0x09, 0xab, 0xdd, 0xf8, 0xe0, 0xe1, 0xf2, 0xc4, 0x87, 0x0f, 0x97,
|
||||
0x27, 0x3e, 0x7a, 0xb8, 0x3c, 0xf1, 0xf6, 0xf9, 0xb2, 0xf1, 0xc1, 0xf9, 0xb2, 0xf1, 0xe1, 0xf9,
|
||||
0xb2, 0xf1, 0xd1, 0xf9, 0xb2, 0xf1, 0xf1, 0xf9, 0xb2, 0xf1, 0xee, 0x3f, 0x96, 0x27, 0x5e, 0xcf,
|
||||
0x9c, 0xae, 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff, 0x82, 0x62, 0x88, 0xff, 0xb8, 0x26, 0x00, 0x00,
|
||||
0x3d, 0x63, 0xc7, 0x89, 0xfd, 0x73, 0x9c, 0x8f, 0xb7, 0x59, 0xf0, 0x06, 0x11, 0xa7, 0x53, 0x54,
|
||||
0xa5, 0xd0, 0x3a, 0x4d, 0x28, 0xd5, 0x76, 0x4b, 0x0b, 0x71, 0xbc, 0xd9, 0x86, 0x26, 0x4d, 0xf4,
|
||||
0xb2, 0xbb, 0x40, 0xa9, 0x50, 0x27, 0x9e, 0x17, 0x67, 0xc8, 0x78, 0xc6, 0x7d, 0x6f, 0x9c, 0xd4,
|
||||
0x70, 0xa0, 0x07, 0x10, 0x20, 0x41, 0xd5, 0x23, 0xe2, 0x80, 0x5a, 0xc1, 0x5f, 0xc0, 0x05, 0xfe,
|
||||
0x00, 0x24, 0x7a, 0xac, 0xc4, 0xa5, 0x12, 0xc8, 0xea, 0x86, 0x03, 0x47, 0xc4, 0x35, 0x17, 0xd0,
|
||||
0xfb, 0x98, 0x99, 0x37, 0xfe, 0xd8, 0x8c, 0xbb, 0xa5, 0xe2, 0xe6, 0xf9, 0x7d, 0xbf, 0xf7, 0x7e,
|
||||
0xef, 0xf7, 0xf5, 0x0c, 0x7b, 0xa7, 0x37, 0x59, 0xd5, 0xf1, 0xd7, 0x4e, 0x3b, 0x47, 0x84, 0x7a,
|
||||
0x24, 0x20, 0x6c, 0xed, 0x8c, 0x78, 0xb6, 0x4f, 0xd7, 0x14, 0xc2, 0x6a, 0x3b, 0x2d, 0xab, 0x71,
|
||||
0xe2, 0x78, 0x84, 0x76, 0xd7, 0xda, 0xa7, 0x4d, 0x0e, 0x60, 0x6b, 0x2d, 0x12, 0x58, 0x6b, 0x67,
|
||||
0xeb, 0x6b, 0x4d, 0xe2, 0x11, 0x6a, 0x05, 0xc4, 0xae, 0xb6, 0xa9, 0x1f, 0xf8, 0xe8, 0x4b, 0x92,
|
||||
0xab, 0xaa, 0x73, 0x55, 0xdb, 0xa7, 0x4d, 0x0e, 0x60, 0x55, 0xce, 0x55, 0x3d, 0x5b, 0x5f, 0x7a,
|
||||
0xba, 0xe9, 0x04, 0x27, 0x9d, 0xa3, 0x6a, 0xc3, 0x6f, 0xad, 0x35, 0xfd, 0xa6, 0xbf, 0x26, 0x98,
|
||||
0x8f, 0x3a, 0xc7, 0xe2, 0x4b, 0x7c, 0x88, 0x5f, 0x52, 0xe8, 0xd2, 0x48, 0x53, 0x68, 0xc7, 0x0b,
|
||||
0x9c, 0x16, 0xe9, 0xb7, 0x62, 0xe9, 0xb9, 0xab, 0x18, 0x58, 0xe3, 0x84, 0xb4, 0xac, 0x7e, 0x3e,
|
||||
0xf3, 0x2f, 0x59, 0xc8, 0x6f, 0x1e, 0xec, 0xdc, 0xa1, 0x7e, 0xa7, 0x8d, 0x56, 0x60, 0xd2, 0xb3,
|
||||
0x5a, 0xa4, 0x6c, 0xac, 0x18, 0xab, 0x85, 0xda, 0xcc, 0x07, 0xbd, 0xca, 0xc4, 0x45, 0xaf, 0x32,
|
||||
0xf9, 0xaa, 0xd5, 0x22, 0x58, 0x60, 0x90, 0x0b, 0xf9, 0x33, 0x42, 0x99, 0xe3, 0x7b, 0xac, 0x9c,
|
||||
0x59, 0xc9, 0xae, 0x16, 0x37, 0x5e, 0xaa, 0xa6, 0x59, 0x7f, 0x55, 0x28, 0xb8, 0x2f, 0x59, 0xb7,
|
||||
0x7d, 0x5a, 0x77, 0x58, 0xc3, 0x3f, 0x23, 0xb4, 0x5b, 0x9b, 0x57, 0x5a, 0xf2, 0x0a, 0xc9, 0x70,
|
||||
0xa4, 0x01, 0xfd, 0xc4, 0x80, 0xf9, 0x36, 0x25, 0xc7, 0x84, 0x52, 0x62, 0x2b, 0x7c, 0x39, 0xbb,
|
||||
0x62, 0x7c, 0x0a, 0x6a, 0xcb, 0x4a, 0xed, 0xfc, 0x41, 0x9f, 0x7c, 0x3c, 0xa0, 0x11, 0xfd, 0xce,
|
||||
0x80, 0x25, 0x46, 0xe8, 0x19, 0xa1, 0x9b, 0xb6, 0x4d, 0x09, 0x63, 0xb5, 0xee, 0x96, 0xeb, 0x10,
|
||||
0x2f, 0xd8, 0xda, 0xa9, 0x63, 0x56, 0x9e, 0x14, 0xfb, 0xf0, 0x8d, 0x74, 0x06, 0x1d, 0x8e, 0x92,
|
||||
0x53, 0x33, 0x95, 0x45, 0x4b, 0x23, 0x49, 0x18, 0x7e, 0x88, 0x19, 0xe6, 0x31, 0xcc, 0x84, 0x07,
|
||||
0xb9, 0xeb, 0xb0, 0x00, 0xdd, 0x87, 0xa9, 0x26, 0xff, 0x60, 0x65, 0x43, 0x18, 0x58, 0x4d, 0x67,
|
||||
0x60, 0x28, 0xa3, 0x36, 0xab, 0xec, 0x99, 0x12, 0x9f, 0x0c, 0x2b, 0x69, 0xe6, 0x2f, 0x26, 0xa1,
|
||||
0xb8, 0x79, 0xb0, 0x83, 0x09, 0xf3, 0x3b, 0xb4, 0x41, 0x52, 0x38, 0xcd, 0x4d, 0x98, 0x61, 0x8e,
|
||||
0xd7, 0xec, 0xb8, 0x16, 0xe5, 0xd0, 0xf2, 0x94, 0xa0, 0x5c, 0x54, 0x94, 0x33, 0x87, 0x1a, 0x0e,
|
||||
0x27, 0x28, 0xd1, 0x06, 0x00, 0x97, 0xc0, 0xda, 0x56, 0x83, 0xd8, 0xe5, 0xcc, 0x8a, 0xb1, 0x9a,
|
||||
0xaf, 0x21, 0xc5, 0x07, 0xaf, 0x46, 0x18, 0xac, 0x51, 0xa1, 0xc7, 0x21, 0x27, 0x2c, 0x2d, 0xe7,
|
||||
0x85, 0x9a, 0x92, 0x22, 0xcf, 0x89, 0x65, 0x60, 0x89, 0x43, 0x4f, 0xc2, 0xb4, 0xf2, 0xb2, 0x72,
|
||||
0x41, 0x90, 0xcd, 0x29, 0xb2, 0xe9, 0xd0, 0x0d, 0x42, 0x3c, 0x5f, 0xdf, 0xa9, 0xe3, 0xd9, 0xc2,
|
||||
0xef, 0xb4, 0xf5, 0xbd, 0xe2, 0x78, 0x36, 0x16, 0x18, 0xb4, 0x0b, 0xb9, 0x33, 0x42, 0x8f, 0xb8,
|
||||
0x27, 0x70, 0xd7, 0xfc, 0x4a, 0xba, 0x8d, 0xbe, 0xcf, 0x59, 0x6a, 0x05, 0x6e, 0x9a, 0xf8, 0x89,
|
||||
0xa5, 0x10, 0x54, 0x05, 0x60, 0x27, 0x3e, 0x0d, 0xc4, 0xf2, 0xca, 0xb9, 0x95, 0xec, 0x6a, 0xa1,
|
||||
0x36, 0xcb, 0xd7, 0x7b, 0x18, 0x41, 0xb1, 0x46, 0xc1, 0xe9, 0x1b, 0x56, 0x40, 0x9a, 0x3e, 0x75,
|
||||
0x08, 0x2b, 0x4f, 0xc7, 0xf4, 0x5b, 0x11, 0x14, 0x6b, 0x14, 0xe8, 0x5b, 0x80, 0x58, 0xe0, 0x53,
|
||||
0xab, 0x49, 0xd4, 0x52, 0x5f, 0xb6, 0xd8, 0x49, 0x19, 0xc4, 0xea, 0x96, 0xd4, 0xea, 0xd0, 0xe1,
|
||||
0x00, 0x05, 0x1e, 0xc2, 0x65, 0xfe, 0xc1, 0x80, 0x39, 0xcd, 0x17, 0x84, 0xdf, 0xdd, 0x84, 0x99,
|
||||
0xa6, 0x76, 0xeb, 0x94, 0x5f, 0x44, 0xa7, 0xad, 0xdf, 0x48, 0x9c, 0xa0, 0x44, 0x04, 0x0a, 0x54,
|
||||
0x49, 0x0a, 0xa3, 0xcb, 0x7a, 0x6a, 0xa7, 0x0d, 0x6d, 0x88, 0x35, 0x69, 0x40, 0x86, 0x63, 0xc9,
|
||||
0xe6, 0x3f, 0x0d, 0xe1, 0xc0, 0x61, 0xbc, 0x41, 0xab, 0x5a, 0x4c, 0x33, 0xc4, 0xf6, 0xcd, 0x8c,
|
||||
0x88, 0x47, 0x57, 0x04, 0x82, 0xcc, 0xff, 0x45, 0x20, 0xb8, 0x95, 0xff, 0xf5, 0x7b, 0x95, 0x89,
|
||||
0xb7, 0xff, 0xbe, 0x32, 0x61, 0xfe, 0x27, 0x03, 0x85, 0x2d, 0xdf, 0xb3, 0x9d, 0x40, 0x39, 0x72,
|
||||
0xd0, 0x6d, 0x0f, 0x5c, 0xd4, 0xbb, 0xdd, 0x36, 0xc1, 0x02, 0x83, 0x9e, 0x87, 0x29, 0x16, 0x58,
|
||||
0x41, 0x87, 0x89, 0xab, 0x56, 0xa8, 0x3d, 0x16, 0x86, 0x80, 0x43, 0x01, 0xbd, 0xec, 0x55, 0xe6,
|
||||
0x22, 0x71, 0x12, 0x84, 0x15, 0x03, 0xf7, 0x2a, 0xff, 0x48, 0x18, 0x65, 0xdf, 0x91, 0x29, 0x26,
|
||||
0x8c, 0xd5, 0xd9, 0xd8, 0xab, 0xf6, 0x07, 0x28, 0xf0, 0x10, 0x2e, 0x74, 0x06, 0xc8, 0xb5, 0x58,
|
||||
0x70, 0x97, 0x5a, 0x1e, 0x13, 0xba, 0xee, 0x3a, 0x2d, 0xa2, 0x2e, 0xd7, 0x97, 0xd3, 0xed, 0x2e,
|
||||
0xe7, 0x88, 0xf5, 0xee, 0x0e, 0x48, 0xc3, 0x43, 0x34, 0xa0, 0x27, 0x60, 0x8a, 0x12, 0x8b, 0xf9,
|
||||
0x5e, 0x39, 0x27, 0x96, 0x1f, 0x45, 0x40, 0x2c, 0xa0, 0x58, 0x61, 0x79, 0xf0, 0x68, 0x11, 0xc6,
|
||||
0xac, 0x66, 0x18, 0xca, 0xa2, 0xe0, 0xb1, 0x27, 0xc1, 0x38, 0xc4, 0x9b, 0x2d, 0x28, 0x6d, 0x51,
|
||||
0x62, 0x05, 0x64, 0xbf, 0x1d, 0x08, 0x17, 0x32, 0x61, 0xca, 0xa6, 0x5d, 0xdc, 0xf1, 0x94, 0xab,
|
||||
0x01, 0x97, 0x5f, 0x17, 0x10, 0xac, 0x30, 0xfc, 0x06, 0x1d, 0x3b, 0xc4, 0xb5, 0xf7, 0x2c, 0xcf,
|
||||
0x6a, 0x12, 0xaa, 0x22, 0x4f, 0xe4, 0xd7, 0xdb, 0x1a, 0x0e, 0x27, 0x28, 0xcd, 0x9f, 0x65, 0xa1,
|
||||
0x54, 0x27, 0x2e, 0x89, 0xf5, 0x6d, 0x03, 0x6a, 0x52, 0xab, 0x41, 0x0e, 0x08, 0x75, 0x7c, 0xfb,
|
||||
0x90, 0x34, 0x7c, 0xcf, 0x66, 0xc2, 0x05, 0xb2, 0xb5, 0xcf, 0xf1, 0xbd, 0xb9, 0x33, 0x80, 0xc5,
|
||||
0x43, 0x38, 0x90, 0x0b, 0xa5, 0x36, 0x15, 0xbf, 0xc5, 0x7e, 0x49, 0x0f, 0x29, 0x6e, 0x7c, 0x35,
|
||||
0xdd, 0x71, 0x1c, 0xe8, 0xac, 0xb5, 0x85, 0x8b, 0x5e, 0xa5, 0x94, 0x00, 0xe1, 0xa4, 0x70, 0xf4,
|
||||
0x4d, 0x98, 0xf7, 0x69, 0xfb, 0xc4, 0xf2, 0xea, 0xa4, 0x4d, 0x3c, 0x9b, 0x78, 0x01, 0x13, 0xbb,
|
||||
0x90, 0xaf, 0x2d, 0xf2, 0x9c, 0xbd, 0xdf, 0x87, 0xc3, 0x03, 0xd4, 0xe8, 0x35, 0x58, 0x68, 0x53,
|
||||
0xbf, 0x6d, 0x35, 0x85, 0x4b, 0x1d, 0xf8, 0xae, 0xd3, 0xe8, 0x0a, 0x17, 0x2a, 0xd4, 0x9e, 0xba,
|
||||
0xe8, 0x55, 0x16, 0x0e, 0xfa, 0x91, 0x97, 0xbd, 0xca, 0x35, 0xb1, 0x75, 0x1c, 0x12, 0x23, 0xf1,
|
||||
0xa0, 0x18, 0xed, 0x0c, 0x73, 0xa3, 0xce, 0xd0, 0xdc, 0x81, 0x7c, 0xbd, 0xa3, 0xfc, 0xf9, 0x45,
|
||||
0xc8, 0xdb, 0xea, 0xb7, 0xda, 0xf9, 0xf0, 0x62, 0x45, 0x34, 0x97, 0xbd, 0x4a, 0x89, 0x97, 0x69,
|
||||
0xd5, 0x10, 0x80, 0x23, 0x16, 0xf3, 0x09, 0xc8, 0x8b, 0x23, 0x67, 0xf7, 0xd7, 0xd1, 0x3c, 0x64,
|
||||
0xb1, 0x75, 0x2e, 0xa4, 0xcc, 0xe0, 0x2c, 0xb5, 0xce, 0xb5, 0xdb, 0xbe, 0x0f, 0x70, 0x87, 0x04,
|
||||
0xe1, 0xc1, 0x6f, 0xc2, 0x5c, 0x18, 0xf2, 0x92, 0x91, 0xf8, 0xf3, 0x4a, 0xf7, 0x1c, 0x4e, 0xa2,
|
||||
0x71, 0x3f, 0xbd, 0xf9, 0x3a, 0x14, 0x44, 0xb4, 0xe6, 0xa9, 0x2e, 0x4e, 0xab, 0xc6, 0x43, 0xd2,
|
||||
0x6a, 0x98, 0x2b, 0x33, 0xa3, 0x72, 0xa5, 0x66, 0xae, 0x0b, 0x25, 0xc9, 0x1b, 0x16, 0x12, 0xa9,
|
||||
0x34, 0x3c, 0x05, 0xf9, 0xd0, 0x4c, 0xa5, 0x25, 0x2a, 0x20, 0x43, 0x41, 0x38, 0xa2, 0xd0, 0xb4,
|
||||
0x9d, 0x40, 0x22, 0xf3, 0xa4, 0x53, 0xa6, 0x55, 0x09, 0x99, 0x87, 0x57, 0x09, 0x9a, 0xa6, 0x1f,
|
||||
0x43, 0x79, 0x54, 0xd5, 0xf9, 0x08, 0xb9, 0x31, 0xbd, 0x29, 0xe6, 0x3b, 0x06, 0xcc, 0xeb, 0x92,
|
||||
0xd2, 0x1f, 0x5f, 0x7a, 0x25, 0x57, 0x57, 0x45, 0xda, 0x8e, 0xfc, 0xd6, 0x80, 0xc5, 0xc4, 0xd2,
|
||||
0xc6, 0x3a, 0xf1, 0x31, 0x8c, 0xd2, 0x9d, 0x23, 0x3b, 0x86, 0x73, 0xfc, 0x35, 0x03, 0xa5, 0x5d,
|
||||
0xeb, 0x88, 0xb8, 0x87, 0xc4, 0x25, 0x8d, 0xc0, 0xa7, 0xe8, 0x47, 0x50, 0x6c, 0x59, 0x41, 0xe3,
|
||||
0x44, 0x40, 0xc3, 0x0a, 0xba, 0x9e, 0x2e, 0xd8, 0x25, 0x24, 0x55, 0xf7, 0x62, 0x31, 0xb7, 0xbd,
|
||||
0x80, 0x76, 0x6b, 0xd7, 0x94, 0x49, 0x45, 0x0d, 0x83, 0x75, 0x6d, 0xa2, 0xed, 0x11, 0xdf, 0xb7,
|
||||
0xdf, 0x6a, 0xf3, 0xf4, 0x3e, 0x7e, 0xb7, 0x95, 0x30, 0x01, 0x93, 0x37, 0x3b, 0x0e, 0x25, 0x2d,
|
||||
0xe2, 0x05, 0x71, 0xdb, 0xb3, 0xd7, 0x27, 0x1f, 0x0f, 0x68, 0x5c, 0x7a, 0x09, 0xe6, 0xfb, 0x8d,
|
||||
0xe7, 0xf1, 0xe7, 0x94, 0x74, 0xe5, 0x79, 0x61, 0xfe, 0x13, 0x2d, 0x42, 0xee, 0xcc, 0x72, 0x3b,
|
||||
0xea, 0x36, 0x62, 0xf9, 0x71, 0x2b, 0x73, 0xd3, 0x30, 0x7f, 0x6f, 0x40, 0x79, 0x94, 0x21, 0xe8,
|
||||
0x8b, 0x9a, 0xa0, 0x5a, 0x51, 0x59, 0x95, 0x7d, 0x85, 0x74, 0xa5, 0xd4, 0xdb, 0x90, 0xf7, 0xdb,
|
||||
0xbc, 0x1e, 0xf0, 0xa9, 0x3a, 0xf5, 0x27, 0xc3, 0x93, 0xdc, 0x57, 0xf0, 0xcb, 0x5e, 0xe5, 0x7a,
|
||||
0x42, 0x7c, 0x88, 0xc0, 0x11, 0x2b, 0x8f, 0xd4, 0xc2, 0x1e, 0x9e, 0x3d, 0xa2, 0x48, 0x7d, 0x5f,
|
||||
0x40, 0xb0, 0xc2, 0x98, 0x7f, 0x32, 0x60, 0x52, 0x14, 0xae, 0xaf, 0x43, 0x9e, 0xef, 0x9f, 0x6d,
|
||||
0x05, 0x96, 0xb0, 0x2b, 0x75, 0xcb, 0xc4, 0xb9, 0xf7, 0x48, 0x60, 0xc5, 0xde, 0x16, 0x42, 0x70,
|
||||
0x24, 0x11, 0x61, 0xc8, 0x39, 0x01, 0x69, 0x85, 0x07, 0xf9, 0xf4, 0x48, 0xd1, 0xaa, 0x61, 0xaf,
|
||||
0x62, 0xeb, 0xfc, 0xf6, 0x5b, 0x01, 0xf1, 0xf8, 0x61, 0xc4, 0x57, 0x63, 0x87, 0xcb, 0xc0, 0x52,
|
||||
0x94, 0xf9, 0x6f, 0x03, 0x22, 0x55, 0xdc, 0xf9, 0x19, 0x71, 0x8f, 0x77, 0x1d, 0xef, 0x54, 0x6d,
|
||||
0x6b, 0x64, 0xce, 0xa1, 0x82, 0xe3, 0x88, 0x62, 0x58, 0x7a, 0xc8, 0x8c, 0x97, 0x1e, 0xb8, 0xc2,
|
||||
0x86, 0xef, 0x05, 0x8e, 0xd7, 0x19, 0xb8, 0x6d, 0x5b, 0x0a, 0x8e, 0x23, 0x0a, 0x5e, 0x88, 0x50,
|
||||
0xd2, 0xb2, 0x1c, 0xcf, 0xf1, 0x9a, 0x7c, 0x11, 0x5b, 0x7e, 0xc7, 0x0b, 0x44, 0x46, 0x56, 0x85,
|
||||
0x08, 0x1e, 0xc0, 0xe2, 0x21, 0x1c, 0xe6, 0x1f, 0x27, 0xa1, 0xc8, 0xd7, 0x1c, 0xe6, 0xb9, 0x17,
|
||||
0xa0, 0xe4, 0xea, 0x5e, 0xa0, 0xd6, 0x7e, 0x5d, 0x99, 0x92, 0xbc, 0xd7, 0x38, 0x49, 0xcb, 0x99,
|
||||
0x45, 0xfd, 0x14, 0x31, 0x67, 0x92, 0xcc, 0xdb, 0x3a, 0x12, 0x27, 0x69, 0x79, 0xf4, 0x3a, 0xe7,
|
||||
0xf7, 0x43, 0x55, 0x26, 0xd1, 0x11, 0x7d, 0x9b, 0x03, 0xb1, 0xc4, 0xa1, 0x3d, 0xb8, 0x66, 0xb9,
|
||||
0xae, 0x7f, 0x2e, 0x80, 0x35, 0xdf, 0x3f, 0x6d, 0x59, 0xf4, 0x94, 0x89, 0xa6, 0x33, 0x5f, 0xfb,
|
||||
0x82, 0x62, 0xb9, 0xb6, 0x39, 0x48, 0x82, 0x87, 0xf1, 0x0d, 0x3b, 0xb6, 0xc9, 0x31, 0x8f, 0xed,
|
||||
0x04, 0x16, 0xfb, 0x40, 0xe2, 0x96, 0xab, 0x0e, 0xf0, 0x59, 0x25, 0x67, 0x11, 0x0f, 0xa1, 0xb9,
|
||||
0x1c, 0x01, 0xc7, 0x43, 0x25, 0xa2, 0x5b, 0x30, 0xcb, 0x3d, 0xd9, 0xef, 0x04, 0x61, 0xdd, 0x99,
|
||||
0x13, 0xc7, 0x8d, 0x2e, 0x7a, 0x95, 0xd9, 0xbb, 0x09, 0x0c, 0xee, 0xa3, 0xe4, 0x9b, 0xeb, 0x3a,
|
||||
0x2d, 0x27, 0x28, 0x4f, 0x0b, 0x96, 0x68, 0x73, 0x77, 0x39, 0x10, 0x4b, 0x5c, 0xc2, 0x03, 0xf3,
|
||||
0x57, 0x79, 0xa0, 0xf9, 0x9b, 0x2c, 0x20, 0x59, 0x28, 0xdb, 0xb2, 0x9e, 0x92, 0x21, 0x8d, 0x57,
|
||||
0xf3, 0xaa, 0xd0, 0x36, 0xfa, 0xaa, 0x79, 0x55, 0x63, 0x87, 0x78, 0xb4, 0x07, 0x05, 0x19, 0x5a,
|
||||
0xe2, 0xeb, 0xb2, 0xa6, 0x88, 0x0b, 0xfb, 0x21, 0xe2, 0xb2, 0x57, 0x59, 0x4a, 0xa8, 0x89, 0x30,
|
||||
0xa2, 0xd3, 0x8a, 0x25, 0xa0, 0x0d, 0x00, 0xab, 0xed, 0xe8, 0x73, 0xad, 0x42, 0x3c, 0xdd, 0x88,
|
||||
0x3b, 0x54, 0xac, 0x51, 0xa1, 0x97, 0x61, 0x32, 0xf8, 0x64, 0xdd, 0x50, 0x5e, 0x34, 0x7b, 0xbc,
|
||||
0xf7, 0x11, 0x12, 0xb8, 0x76, 0xe1, 0xcf, 0x8c, 0x9b, 0xa5, 0x1a, 0x99, 0x48, 0xfb, 0x76, 0x84,
|
||||
0xc1, 0x1a, 0x15, 0xfa, 0x0e, 0xe4, 0x8f, 0x55, 0x29, 0x2a, 0x0e, 0x26, 0x75, 0x88, 0x0c, 0x0b,
|
||||
0x58, 0xd9, 0x5a, 0x87, 0x5f, 0x38, 0x92, 0x66, 0xbe, 0x09, 0x85, 0x3d, 0xa7, 0x41, 0x7d, 0xd1,
|
||||
0x88, 0x3d, 0x09, 0xd3, 0x2c, 0xd1, 0xa9, 0x44, 0x47, 0x12, 0xba, 0x4b, 0x88, 0xe7, 0x7e, 0xe2,
|
||||
0x59, 0x9e, 0x2f, 0xfb, 0x91, 0x5c, 0xec, 0x27, 0xaf, 0x72, 0x20, 0x96, 0xb8, 0x5b, 0x8b, 0x3c,
|
||||
0xd3, 0xff, 0xfc, 0xfd, 0xca, 0xc4, 0xbb, 0xef, 0x57, 0x26, 0xde, 0x7b, 0x5f, 0x65, 0xfd, 0x4b,
|
||||
0x00, 0xd8, 0x3f, 0xfa, 0x01, 0x69, 0xc8, 0xf8, 0x99, 0x6a, 0x8e, 0x15, 0x8e, 0x4f, 0xc5, 0x1c,
|
||||
0x2b, 0xd3, 0x57, 0xbd, 0x69, 0x38, 0x9c, 0xa0, 0x44, 0x6b, 0x50, 0x88, 0x26, 0x54, 0xea, 0xa0,
|
||||
0x17, 0x42, 0xc7, 0x89, 0xc6, 0x58, 0x38, 0xa6, 0x49, 0x04, 0xf3, 0xc9, 0x2b, 0x83, 0x79, 0x0d,
|
||||
0xb2, 0x1d, 0xc7, 0x56, 0x5d, 0xeb, 0x33, 0x61, 0x32, 0xbd, 0xb7, 0x53, 0xbf, 0xec, 0x55, 0x1e,
|
||||
0x1b, 0x35, 0x18, 0xe6, 0x1d, 0x3f, 0xab, 0xde, 0xdb, 0xa9, 0x63, 0xce, 0x3c, 0x2c, 0xb2, 0x4c,
|
||||
0x8d, 0x19, 0x59, 0x36, 0x00, 0x9a, 0x71, 0xef, 0x2f, 0x2f, 0x6e, 0xe4, 0x51, 0x5a, 0xcf, 0xaf,
|
||||
0x51, 0x21, 0x06, 0x0b, 0x0d, 0xde, 0x20, 0xab, 0x1e, 0x9c, 0x05, 0x56, 0x4b, 0x4e, 0xee, 0xc6,
|
||||
0x73, 0xee, 0x1b, 0x4a, 0xcd, 0xc2, 0x56, 0xbf, 0x30, 0x3c, 0x28, 0x1f, 0xf9, 0xb0, 0x60, 0xab,
|
||||
0x56, 0x2f, 0x56, 0x5a, 0x18, 0x5b, 0xe9, 0x75, 0xae, 0xb0, 0xde, 0x2f, 0x08, 0x0f, 0xca, 0x46,
|
||||
0xdf, 0x87, 0xa5, 0x10, 0x38, 0xd8, 0x6f, 0x8b, 0xc8, 0x9b, 0xad, 0x2d, 0x5f, 0xf4, 0x2a, 0x4b,
|
||||
0xf5, 0x91, 0x54, 0xf8, 0x21, 0x12, 0x90, 0x0d, 0x53, 0xae, 0xac, 0x54, 0x8b, 0xa2, 0xba, 0xf8,
|
||||
0x7a, 0xba, 0x55, 0xc4, 0xde, 0x5f, 0xd5, 0x2b, 0xd4, 0x68, 0xee, 0xa1, 0x8a, 0x53, 0x25, 0x1b,
|
||||
0xbd, 0x05, 0x45, 0xcb, 0xf3, 0xfc, 0xc0, 0x92, 0x13, 0x80, 0x19, 0xa1, 0x6a, 0x73, 0x6c, 0x55,
|
||||
0x9b, 0xb1, 0x8c, 0xbe, 0x8a, 0x58, 0xc3, 0x60, 0x5d, 0x15, 0x3a, 0x87, 0x39, 0xff, 0xdc, 0x23,
|
||||
0x14, 0x93, 0x63, 0x42, 0x89, 0xd7, 0x20, 0xac, 0x5c, 0x12, 0xda, 0x9f, 0x4d, 0xa9, 0x3d, 0xc1,
|
||||
0x1c, 0xbb, 0x74, 0x12, 0xce, 0x70, 0xbf, 0x16, 0x54, 0xe5, 0x41, 0xd2, 0xb3, 0x5c, 0xe7, 0x87,
|
||||
0x84, 0xb2, 0xf2, 0x6c, 0x3c, 0x5c, 0xdd, 0x8e, 0xa0, 0x58, 0xa3, 0x40, 0x5f, 0x83, 0x62, 0xc3,
|
||||
0xed, 0xb0, 0x80, 0xc8, 0x49, 0xf7, 0x9c, 0xb8, 0x41, 0xd1, 0xfa, 0xb6, 0x62, 0x14, 0xd6, 0xe9,
|
||||
0x50, 0x07, 0x4a, 0x2d, 0x3d, 0x65, 0x94, 0x17, 0xc4, 0xea, 0x6e, 0xa6, 0x5b, 0xdd, 0x60, 0x52,
|
||||
0x8b, 0x2b, 0x98, 0x04, 0x0e, 0x27, 0xb5, 0x2c, 0x3d, 0x0f, 0xc5, 0x4f, 0x58, 0xdc, 0xf3, 0xe6,
|
||||
0xa0, 0xff, 0x1c, 0xc7, 0x6a, 0x0e, 0xfe, 0x9c, 0x81, 0xd9, 0xe4, 0xee, 0xf7, 0xa5, 0xc3, 0x5c,
|
||||
0xaa, 0x74, 0x18, 0xb6, 0xa1, 0xc6, 0xc8, 0xe1, 0x7c, 0x18, 0xd6, 0xb3, 0x23, 0xc3, 0xba, 0x8a,
|
||||
0x9e, 0x93, 0x8f, 0x12, 0x3d, 0xab, 0x00, 0xbc, 0xce, 0xa0, 0xbe, 0xeb, 0x12, 0x2a, 0x02, 0x67,
|
||||
0x5e, 0x0d, 0xe1, 0x23, 0x28, 0xd6, 0x28, 0x78, 0x35, 0x7c, 0xe4, 0xfa, 0x8d, 0x53, 0xb1, 0x05,
|
||||
0xe1, 0xa5, 0x17, 0x21, 0x33, 0x2f, 0xab, 0xe1, 0xda, 0x00, 0x16, 0x0f, 0xe1, 0x30, 0xbb, 0x70,
|
||||
0xfd, 0xc0, 0xa2, 0x81, 0x63, 0xb9, 0xf1, 0x05, 0x13, 0xed, 0xc6, 0x1b, 0x03, 0xcd, 0xcc, 0x33,
|
||||
0xe3, 0x5e, 0xd4, 0x78, 0xf3, 0x63, 0x58, 0xdc, 0xd0, 0x98, 0x7f, 0x33, 0xe0, 0xc6, 0x50, 0xdd,
|
||||
0x9f, 0x41, 0x33, 0xf5, 0x46, 0xb2, 0x99, 0x7a, 0x21, 0xe5, 0x14, 0x72, 0x98, 0xb5, 0x23, 0x5a,
|
||||
0xab, 0x69, 0xc8, 0x1d, 0xf0, 0x22, 0xd6, 0xfc, 0x95, 0x01, 0x33, 0xe2, 0xd7, 0x38, 0x13, 0xdc,
|
||||
0x0a, 0xe4, 0x8e, 0xfd, 0x70, 0x44, 0x95, 0x97, 0x8f, 0x3c, 0xdb, 0x1c, 0x80, 0x25, 0xfc, 0x11,
|
||||
0x46, 0xbc, 0xef, 0x18, 0x90, 0x9c, 0x9d, 0xa2, 0x97, 0xa4, 0xff, 0x1a, 0xd1, 0x70, 0x73, 0x4c,
|
||||
0xdf, 0x7d, 0x71, 0x54, 0x2b, 0x78, 0x2d, 0xd5, 0x94, 0xf0, 0x29, 0x28, 0x60, 0xdf, 0x0f, 0x0e,
|
||||
0xac, 0xe0, 0x84, 0xf1, 0x85, 0xb7, 0xf9, 0x0f, 0xb5, 0x37, 0x62, 0xe1, 0x02, 0x83, 0x25, 0xdc,
|
||||
0xfc, 0xa5, 0x01, 0x37, 0x46, 0xbe, 0x6b, 0xf0, 0x10, 0xd0, 0x88, 0xbe, 0xd4, 0x8a, 0x22, 0x2f,
|
||||
0x8c, 0xe9, 0xb0, 0x46, 0xc5, 0x7b, 0xb8, 0xc4, 0x63, 0x48, 0x7f, 0x0f, 0x97, 0xd0, 0x86, 0x93,
|
||||
0xb4, 0xe6, 0xbf, 0x32, 0xa0, 0x1e, 0x37, 0xfe, 0xc7, 0x1e, 0xfb, 0x44, 0xdf, 0xd3, 0xca, 0x6c,
|
||||
0xf2, 0x69, 0x25, 0x7a, 0x47, 0xd1, 0xde, 0x16, 0xb2, 0x0f, 0x7f, 0x5b, 0x40, 0xcf, 0x45, 0xcf,
|
||||
0x15, 0x32, 0x74, 0x2d, 0x27, 0x9f, 0x2b, 0x2e, 0x7b, 0x95, 0x19, 0x25, 0x3c, 0xf9, 0x7c, 0xf1,
|
||||
0x1a, 0x4c, 0xdb, 0x24, 0xb0, 0x1c, 0x57, 0xf6, 0x63, 0xa9, 0x87, 0xf8, 0x52, 0x58, 0x5d, 0xb2,
|
||||
0xd6, 0x8a, 0xdc, 0x26, 0xf5, 0x81, 0x43, 0x81, 0x3c, 0xda, 0x36, 0x7c, 0x5b, 0xb6, 0x13, 0xb9,
|
||||
0x38, 0xda, 0x6e, 0xf9, 0x36, 0xc1, 0x02, 0x63, 0xbe, 0x6b, 0x40, 0x51, 0x4a, 0xda, 0xb2, 0x3a,
|
||||
0x8c, 0xa0, 0xf5, 0x68, 0x15, 0xf2, 0xb8, 0x6f, 0xe8, 0xef, 0x52, 0x97, 0xbd, 0x4a, 0x41, 0x90,
|
||||
0x89, 0x4e, 0x64, 0xc8, 0xfb, 0x4b, 0xe6, 0x8a, 0x3d, 0x7a, 0x1c, 0x72, 0xe2, 0xf6, 0xa8, 0xcd,
|
||||
0x8c, 0xee, 0xba, 0xb8, 0x60, 0x58, 0xe2, 0xcc, 0x8f, 0x33, 0x50, 0x4a, 0x2c, 0x2e, 0x45, 0x2f,
|
||||
0x10, 0x8d, 0x2e, 0x33, 0x29, 0xc6, 0xe1, 0xa3, 0x9f, 0x8e, 0x55, 0xee, 0x99, 0x7a, 0x94, 0xdc,
|
||||
0xf3, 0x5d, 0x98, 0x6a, 0xf0, 0x3d, 0x0a, 0xff, 0x89, 0xb0, 0x3e, 0xce, 0x71, 0x8a, 0xdd, 0x8d,
|
||||
0xbd, 0x51, 0x7c, 0x32, 0xac, 0x04, 0xa2, 0x3b, 0xb0, 0x40, 0x49, 0x40, 0xbb, 0x9b, 0xc7, 0x01,
|
||||
0xa1, 0x7a, 0x13, 0x9f, 0x8b, 0x2b, 0x6e, 0xdc, 0x4f, 0x80, 0x07, 0x79, 0xcc, 0x23, 0x98, 0xb9,
|
||||
0x6b, 0x1d, 0xb9, 0xd1, 0xb3, 0x14, 0x86, 0x92, 0xe3, 0x35, 0xdc, 0x8e, 0x4d, 0x64, 0x34, 0x0e,
|
||||
0xa3, 0x57, 0x78, 0x69, 0x77, 0x74, 0xe4, 0x65, 0xaf, 0x72, 0x2d, 0x01, 0x90, 0xef, 0x30, 0x38,
|
||||
0x29, 0xc2, 0x74, 0x61, 0xf2, 0x33, 0xec, 0x1e, 0xbf, 0x07, 0x85, 0xb8, 0xbe, 0xff, 0x94, 0x55,
|
||||
0x9a, 0x6f, 0x40, 0x9e, 0x7b, 0x7c, 0xd8, 0x97, 0x5e, 0x51, 0xe2, 0x24, 0x0b, 0xa7, 0x4c, 0x9a,
|
||||
0xc2, 0xc9, 0x6c, 0x41, 0xe9, 0x5e, 0xdb, 0x7e, 0xc4, 0x87, 0xc9, 0x4c, 0xea, 0xac, 0xb5, 0x01,
|
||||
0xf2, 0x4f, 0x0e, 0x3c, 0x41, 0xc8, 0xcc, 0xad, 0x25, 0x08, 0x3d, 0xf1, 0x6a, 0x53, 0xf9, 0x9f,
|
||||
0x1a, 0x00, 0x62, 0xfc, 0x75, 0xfb, 0x8c, 0x78, 0x41, 0x8a, 0xe7, 0xeb, 0x7b, 0x30, 0xe5, 0x4b,
|
||||
0x6f, 0x92, 0x8f, 0x93, 0x63, 0xce, 0x58, 0xa3, 0x4b, 0x20, 0xfd, 0x09, 0x2b, 0x61, 0xb5, 0xd5,
|
||||
0x0f, 0x1e, 0x2c, 0x4f, 0x7c, 0xf8, 0x60, 0x79, 0xe2, 0xa3, 0x07, 0xcb, 0x13, 0x6f, 0x5f, 0x2c,
|
||||
0x1b, 0x1f, 0x5c, 0x2c, 0x1b, 0x1f, 0x5e, 0x2c, 0x1b, 0x1f, 0x5d, 0x2c, 0x1b, 0x1f, 0x5f, 0x2c,
|
||||
0x1b, 0xef, 0xfe, 0x63, 0x79, 0xe2, 0xb5, 0xcc, 0xd9, 0xfa, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff,
|
||||
0x8c, 0xe4, 0xf0, 0xe3, 0x5a, 0x26, 0x00, 0x00,
|
||||
}
|
||||
|
||||
func (m *APIGroup) Marshal() (dAtA []byte, err error) {
|
||||
@ -1973,45 +1942,6 @@ func (m *Duration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *ExportOptions) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
n, err := m.MarshalToSizedBuffer(dAtA[:size])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return dAtA[:n], nil
|
||||
}
|
||||
|
||||
func (m *ExportOptions) MarshalTo(dAtA []byte) (int, error) {
|
||||
size := m.Size()
|
||||
return m.MarshalToSizedBuffer(dAtA[:size])
|
||||
}
|
||||
|
||||
func (m *ExportOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
|
||||
i := len(dAtA)
|
||||
_ = i
|
||||
var l int
|
||||
_ = l
|
||||
i--
|
||||
if m.Exact {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x10
|
||||
i--
|
||||
if m.Export {
|
||||
dAtA[i] = 1
|
||||
} else {
|
||||
dAtA[i] = 0
|
||||
}
|
||||
i--
|
||||
dAtA[i] = 0x8
|
||||
return len(dAtA) - i, nil
|
||||
}
|
||||
|
||||
func (m *FieldsV1) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
@ -3661,17 +3591,6 @@ func (m *Duration) Size() (n int) {
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *ExportOptions) Size() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
}
|
||||
var l int
|
||||
_ = l
|
||||
n += 2
|
||||
n += 2
|
||||
return n
|
||||
}
|
||||
|
||||
func (m *FieldsV1) Size() (n int) {
|
||||
if m == nil {
|
||||
return 0
|
||||
@ -4367,17 +4286,6 @@ func (this *Duration) String() string {
|
||||
}, "")
|
||||
return s
|
||||
}
|
||||
func (this *ExportOptions) String() string {
|
||||
if this == nil {
|
||||
return "nil"
|
||||
}
|
||||
s := strings.Join([]string{`&ExportOptions{`,
|
||||
`Export:` + fmt.Sprintf("%v", this.Export) + `,`,
|
||||
`Exact:` + fmt.Sprintf("%v", this.Exact) + `,`,
|
||||
`}`,
|
||||
}, "")
|
||||
return s
|
||||
}
|
||||
func (this *GetOptions) String() string {
|
||||
if this == nil {
|
||||
return "nil"
|
||||
@ -6250,99 +6158,6 @@ func (m *Duration) Unmarshal(dAtA []byte) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *ExportOptions) 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: ExportOptions: wiretype end group for non-group")
|
||||
}
|
||||
if fieldNum <= 0 {
|
||||
return fmt.Errorf("proto: ExportOptions: illegal tag %d (wire type %d)", fieldNum, wire)
|
||||
}
|
||||
switch fieldNum {
|
||||
case 1:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Export", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowGenerated
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.Export = bool(v != 0)
|
||||
case 2:
|
||||
if wireType != 0 {
|
||||
return fmt.Errorf("proto: wrong wireType = %d for field Exact", wireType)
|
||||
}
|
||||
var v int
|
||||
for shift := uint(0); ; shift += 7 {
|
||||
if shift >= 64 {
|
||||
return ErrIntOverflowGenerated
|
||||
}
|
||||
if iNdEx >= l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
b := dAtA[iNdEx]
|
||||
iNdEx++
|
||||
v |= int(b&0x7F) << shift
|
||||
if b < 0x80 {
|
||||
break
|
||||
}
|
||||
}
|
||||
m.Exact = bool(v != 0)
|
||||
default:
|
||||
iNdEx = preIndex
|
||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if skippy < 0 {
|
||||
return ErrInvalidLengthGenerated
|
||||
}
|
||||
if (iNdEx + skippy) < 0 {
|
||||
return ErrInvalidLengthGenerated
|
||||
}
|
||||
if (iNdEx + skippy) > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
iNdEx += skippy
|
||||
}
|
||||
}
|
||||
|
||||
if iNdEx > l {
|
||||
return io.ErrUnexpectedEOF
|
||||
}
|
||||
return nil
|
||||
}
|
||||
func (m *FieldsV1) Unmarshal(dAtA []byte) error {
|
||||
l := len(dAtA)
|
||||
iNdEx := 0
|
||||
|
@ -268,18 +268,6 @@ message Duration {
|
||||
optional int64 duration = 1;
|
||||
}
|
||||
|
||||
// ExportOptions is the query options to the standard REST get call.
|
||||
// Deprecated. Planned for removal in 1.18.
|
||||
message ExportOptions {
|
||||
// Should this value be exported. Export strips fields that a user can not specify.
|
||||
// Deprecated. Planned for removal in 1.18.
|
||||
optional bool export = 1;
|
||||
|
||||
// Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.
|
||||
// Deprecated. Planned for removal in 1.18.
|
||||
optional bool exact = 2;
|
||||
}
|
||||
|
||||
// FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.
|
||||
//
|
||||
// Each key is either a '.' representing the field itself, and will always map to an empty set,
|
||||
|
@ -55,7 +55,6 @@ var ParameterCodec = runtime.NewParameterCodec(scheme)
|
||||
|
||||
var optionsTypes = []runtime.Object{
|
||||
&ListOptions{},
|
||||
&ExportOptions{},
|
||||
&GetOptions{},
|
||||
&DeleteOptions{},
|
||||
&CreateOptions{},
|
||||
|
@ -433,21 +433,6 @@ const (
|
||||
// +k8s:conversion-gen:explicit-from=net/url.Values
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// ExportOptions is the query options to the standard REST get call.
|
||||
// Deprecated. Planned for removal in 1.18.
|
||||
type ExportOptions struct {
|
||||
TypeMeta `json:",inline"`
|
||||
// Should this value be exported. Export strips fields that a user can not specify.
|
||||
// Deprecated. Planned for removal in 1.18.
|
||||
Export bool `json:"export" protobuf:"varint,1,opt,name=export"`
|
||||
// Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'.
|
||||
// Deprecated. Planned for removal in 1.18.
|
||||
Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"`
|
||||
}
|
||||
|
||||
// +k8s:conversion-gen:explicit-from=net/url.Values
|
||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||
|
||||
// GetOptions is the standard query options to the standard REST get call.
|
||||
type GetOptions struct {
|
||||
TypeMeta `json:",inline"`
|
||||
|
@ -123,16 +123,6 @@ func (DeleteOptions) SwaggerDoc() map[string]string {
|
||||
return map_DeleteOptions
|
||||
}
|
||||
|
||||
var map_ExportOptions = map[string]string{
|
||||
"": "ExportOptions is the query options to the standard REST get call. Deprecated. Planned for removal in 1.18.",
|
||||
"export": "Should this value be exported. Export strips fields that a user can not specify. Deprecated. Planned for removal in 1.18.",
|
||||
"exact": "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. Deprecated. Planned for removal in 1.18.",
|
||||
}
|
||||
|
||||
func (ExportOptions) SwaggerDoc() map[string]string {
|
||||
return map_ExportOptions
|
||||
}
|
||||
|
||||
var map_FieldsV1 = map[string]string{
|
||||
"": "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is position of a item in a list 'k:<keys>', where <keys> is a map of a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff",
|
||||
}
|
||||
|
@ -50,11 +50,6 @@ func RegisterConversions(s *runtime.Scheme) error {
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*url.Values)(nil), (*ExportOptions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_url_Values_To_v1_ExportOptions(a.(*url.Values), b.(*ExportOptions), scope)
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := s.AddGeneratedConversionFunc((*url.Values)(nil), (*GetOptions)(nil), func(a, b interface{}, scope conversion.Scope) error {
|
||||
return Convert_url_Values_To_v1_GetOptions(a.(*url.Values), b.(*GetOptions), scope)
|
||||
}); err != nil {
|
||||
@ -339,31 +334,6 @@ func autoConvert_url_Values_To_v1_DeleteOptions(in *url.Values, out *DeleteOptio
|
||||
return nil
|
||||
}
|
||||
|
||||
func autoConvert_url_Values_To_v1_ExportOptions(in *url.Values, out *ExportOptions, s conversion.Scope) error {
|
||||
// WARNING: Field TypeMeta does not have json tag, skipping.
|
||||
|
||||
if values, ok := map[string][]string(*in)["export"]; ok && len(values) > 0 {
|
||||
if err := runtime.Convert_Slice_string_To_bool(&values, &out.Export, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Export = false
|
||||
}
|
||||
if values, ok := map[string][]string(*in)["exact"]; ok && len(values) > 0 {
|
||||
if err := runtime.Convert_Slice_string_To_bool(&values, &out.Exact, s); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
out.Exact = false
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Convert_url_Values_To_v1_ExportOptions is an autogenerated conversion function.
|
||||
func Convert_url_Values_To_v1_ExportOptions(in *url.Values, out *ExportOptions, s conversion.Scope) error {
|
||||
return autoConvert_url_Values_To_v1_ExportOptions(in, out, s)
|
||||
}
|
||||
|
||||
func autoConvert_url_Values_To_v1_GetOptions(in *url.Values, out *GetOptions, s conversion.Scope) error {
|
||||
// WARNING: Field TypeMeta does not have json tag, skipping.
|
||||
|
||||
|
@ -304,31 +304,6 @@ func (in *Duration) DeepCopy() *Duration {
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *ExportOptions) DeepCopyInto(out *ExportOptions) {
|
||||
*out = *in
|
||||
out.TypeMeta = in.TypeMeta
|
||||
return
|
||||
}
|
||||
|
||||
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExportOptions.
|
||||
func (in *ExportOptions) DeepCopy() *ExportOptions {
|
||||
if in == nil {
|
||||
return nil
|
||||
}
|
||||
out := new(ExportOptions)
|
||||
in.DeepCopyInto(out)
|
||||
return out
|
||||
}
|
||||
|
||||
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||
func (in *ExportOptions) DeepCopyObject() runtime.Object {
|
||||
if c := in.DeepCopy(); c != nil {
|
||||
return c
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||
func (in *FieldsV1) DeepCopyInto(out *FieldsV1) {
|
||||
*out = *in
|
||||
|
@ -142,10 +142,10 @@ func init() {
|
||||
|
||||
func addGrouplessTypes() {
|
||||
scheme.AddKnownTypes(grouplessGroupVersion,
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{}, &metav1.ListOptions{}, &metav1.ExportOptions{},
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{}, &metav1.ListOptions{},
|
||||
&metav1.DeleteOptions{}, &genericapitesting.SimpleGetOptions{}, &genericapitesting.SimpleRoot{})
|
||||
scheme.AddKnownTypes(grouplessInternalGroupVersion,
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{}, &metav1.ExportOptions{},
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{},
|
||||
&genericapitesting.SimpleGetOptions{}, &genericapitesting.SimpleRoot{})
|
||||
|
||||
utilruntime.Must(genericapitesting.RegisterConversions(scheme))
|
||||
@ -153,20 +153,20 @@ func addGrouplessTypes() {
|
||||
|
||||
func addTestTypes() {
|
||||
scheme.AddKnownTypes(testGroupVersion,
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{}, &metav1.ExportOptions{},
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{},
|
||||
&metav1.DeleteOptions{}, &genericapitesting.SimpleGetOptions{}, &genericapitesting.SimpleRoot{},
|
||||
&genericapitesting.SimpleXGSubresource{})
|
||||
scheme.AddKnownTypes(testGroupVersion, &examplev1.Pod{})
|
||||
scheme.AddKnownTypes(testInternalGroupVersion,
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{}, &metav1.ExportOptions{},
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{},
|
||||
&genericapitesting.SimpleGetOptions{}, &genericapitesting.SimpleRoot{},
|
||||
&genericapitesting.SimpleXGSubresource{})
|
||||
scheme.AddKnownTypes(testInternalGroupVersion, &example.Pod{})
|
||||
// Register SimpleXGSubresource in both testGroupVersion and testGroup2Version, and also their
|
||||
// their corresponding internal versions, to verify that the desired group version object is
|
||||
// served in the tests.
|
||||
scheme.AddKnownTypes(testGroup2Version, &genericapitesting.SimpleXGSubresource{}, &metav1.ExportOptions{})
|
||||
scheme.AddKnownTypes(testInternalGroup2Version, &genericapitesting.SimpleXGSubresource{}, &metav1.ExportOptions{})
|
||||
scheme.AddKnownTypes(testGroup2Version, &genericapitesting.SimpleXGSubresource{})
|
||||
scheme.AddKnownTypes(testInternalGroup2Version, &genericapitesting.SimpleXGSubresource{})
|
||||
metav1.AddToGroupVersion(scheme, testGroupVersion)
|
||||
|
||||
utilruntime.Must(genericapitesting.RegisterConversions(scheme))
|
||||
@ -174,7 +174,7 @@ func addTestTypes() {
|
||||
|
||||
func addNewTestTypes() {
|
||||
scheme.AddKnownTypes(newGroupVersion,
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{}, &metav1.ExportOptions{},
|
||||
&genericapitesting.Simple{}, &genericapitesting.SimpleList{},
|
||||
&metav1.DeleteOptions{}, &genericapitesting.SimpleGetOptions{}, &genericapitesting.SimpleRoot{},
|
||||
&examplev1.Pod{},
|
||||
)
|
||||
@ -368,21 +368,6 @@ func (storage *SimpleRESTStorage) NamespaceScoped() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (storage *SimpleRESTStorage) Export(ctx context.Context, name string, opts metav1.ExportOptions) (runtime.Object, error) {
|
||||
obj, err := storage.Get(ctx, name, &metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
s, ok := obj.(*genericapitesting.Simple)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("unexpected object")
|
||||
}
|
||||
|
||||
// Set a marker to verify the method was called
|
||||
s.Other = "exported"
|
||||
return obj, storage.errors["export"]
|
||||
}
|
||||
|
||||
func (storage *SimpleRESTStorage) ConvertToTable(ctx context.Context, obj runtime.Object, tableOptions runtime.Object) (*metav1.Table, error) {
|
||||
return rest.NewDefaultTableConvertor(schema.GroupResource{Resource: "simple"}).ConvertToTable(ctx, obj, tableOptions)
|
||||
}
|
||||
@ -1556,55 +1541,6 @@ func TestMetadata(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestExport(t *testing.T) {
|
||||
storage := map[string]rest.Storage{}
|
||||
simpleStorage := SimpleRESTStorage{
|
||||
item: genericapitesting.Simple{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
ResourceVersion: "1234",
|
||||
CreationTimestamp: metav1.NewTime(time.Unix(10, 10)),
|
||||
},
|
||||
Other: "foo",
|
||||
},
|
||||
}
|
||||
selfLinker := &setTestSelfLinker{
|
||||
t: t,
|
||||
expectedSet: "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/default/simple/id",
|
||||
name: "id",
|
||||
namespace: "default",
|
||||
}
|
||||
storage["simple"] = &simpleStorage
|
||||
handler := handleLinker(storage, selfLinker)
|
||||
server := httptest.NewServer(handler)
|
||||
defer server.Close()
|
||||
|
||||
resp, err := http.Get(server.URL + "/" + prefix + "/" + testGroupVersion.Group + "/" + testGroupVersion.Version + "/namespaces/default/simple/id?export=true")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
if resp.StatusCode != http.StatusOK {
|
||||
data, _ := ioutil.ReadAll(resp.Body)
|
||||
resp.Body.Close()
|
||||
t.Fatalf("unexpected response: %#v\n%s\n", resp, string(data))
|
||||
}
|
||||
var itemOut genericapitesting.Simple
|
||||
body, err := extractBody(resp, &itemOut)
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
if itemOut.Name != simpleStorage.item.Name {
|
||||
t.Errorf("Unexpected data: %#v, expected %#v (%s)", itemOut, simpleStorage.item, string(body))
|
||||
}
|
||||
if itemOut.Other != "exported" {
|
||||
t.Errorf("Expected: exported, saw: %s", itemOut.Other)
|
||||
}
|
||||
|
||||
if utilfeature.DefaultFeatureGate.Enabled(features.RemoveSelfLink) == selfLinker.called {
|
||||
t.Errorf("unexpected selfLinker.called: %v", selfLinker.called)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGet(t *testing.T) {
|
||||
storage := map[string]rest.Storage{}
|
||||
simpleStorage := SimpleRESTStorage{
|
||||
|
@ -19,14 +19,15 @@ package handlers
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
metainternalversionvalidation "k8s.io/apimachinery/pkg/apis/meta/internalversion/validation"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"math/rand"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
metainternalversionvalidation "k8s.io/apimachinery/pkg/apis/meta/internalversion/validation"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
|
||||
"k8s.io/klog/v2"
|
||||
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
@ -81,22 +82,22 @@ func getResourceHandler(scope *RequestScope, getter getterFunc) http.HandlerFunc
|
||||
}
|
||||
|
||||
// GetResource returns a function that handles retrieving a single resource from a rest.Storage object.
|
||||
func GetResource(r rest.Getter, e rest.Exporter, scope *RequestScope) http.HandlerFunc {
|
||||
func GetResource(r rest.Getter, scope *RequestScope) http.HandlerFunc {
|
||||
return getResourceHandler(scope,
|
||||
func(ctx context.Context, name string, req *http.Request, trace *utiltrace.Trace) (runtime.Object, error) {
|
||||
// check for export
|
||||
options := metav1.GetOptions{}
|
||||
if values := req.URL.Query(); len(values) > 0 {
|
||||
exports := metav1.ExportOptions{}
|
||||
if err := metainternalversionscheme.ParameterCodec.DecodeParameters(values, scope.MetaGroupVersion, &exports); err != nil {
|
||||
err = errors.NewBadRequest(err.Error())
|
||||
return nil, err
|
||||
}
|
||||
if exports.Export {
|
||||
if e == nil {
|
||||
return nil, errors.NewBadRequest(fmt.Sprintf("export of %q is not supported", scope.Resource.Resource))
|
||||
if len(values["export"]) > 0 {
|
||||
exportBool := true
|
||||
exportStrings := values["export"]
|
||||
err := runtime.Convert_Slice_string_To_bool(&exportStrings, &exportBool, nil)
|
||||
if err != nil {
|
||||
return nil, errors.NewBadRequest(fmt.Sprintf("the export parameter cannot be parsed: %v", err))
|
||||
}
|
||||
if exportBool {
|
||||
return nil, errors.NewBadRequest("the export parameter, deprecated since v1.14, is no longer supported")
|
||||
}
|
||||
return e.Export(ctx, name, exports)
|
||||
}
|
||||
if err := metainternalversionscheme.ParameterCodec.DecodeParameters(values, scope.MetaGroupVersion, &options); err != nil {
|
||||
err = errors.NewBadRequest(err.Error())
|
||||
|
@ -253,15 +253,6 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
if !isMetadata {
|
||||
storageMeta = defaultStorageMetadata{}
|
||||
}
|
||||
exporter, isExporter := storage.(rest.Exporter)
|
||||
if !isExporter {
|
||||
exporter = nil
|
||||
}
|
||||
|
||||
versionedExportOptions, err := a.group.Creater.New(optionsExternalVersion.WithKind("ExportOptions"))
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
if isNamedCreater {
|
||||
isCreater = true
|
||||
@ -684,7 +675,7 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
if isGetterWithOptions {
|
||||
handler = restfulGetResourceWithOptions(getterWithOptions, reqScope, isSubresource)
|
||||
} else {
|
||||
handler = restfulGetResource(getter, exporter, reqScope)
|
||||
handler = restfulGetResource(getter, reqScope)
|
||||
}
|
||||
|
||||
if needOverride {
|
||||
@ -713,11 +704,6 @@ func (a *APIInstaller) registerResourceHandlers(path string, storage rest.Storag
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
if isExporter {
|
||||
if err := AddObjectParams(ws, route, versionedExportOptions); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
addParams(route, action.Params)
|
||||
routes = append(routes, route)
|
||||
case "LIST": // List all resources of a kind.
|
||||
@ -1227,9 +1213,9 @@ func restfulPatchResource(r rest.Patcher, scope handlers.RequestScope, admit adm
|
||||
}
|
||||
}
|
||||
|
||||
func restfulGetResource(r rest.Getter, e rest.Exporter, scope handlers.RequestScope) restful.RouteFunction {
|
||||
func restfulGetResource(r rest.Getter, scope handlers.RequestScope) restful.RouteFunction {
|
||||
return func(req *restful.Request, res *restful.Response) {
|
||||
handlers.GetResource(r, e, &scope)(res.ResponseWriter, req.Request)
|
||||
handlers.GetResource(r, &scope)(res.ResponseWriter, req.Request)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,6 @@ package registry
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"reflect"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@ -73,7 +72,6 @@ type GenericStore interface {
|
||||
GetCreateStrategy() rest.RESTCreateStrategy
|
||||
GetUpdateStrategy() rest.RESTUpdateStrategy
|
||||
GetDeleteStrategy() rest.RESTDeleteStrategy
|
||||
GetExportStrategy() rest.RESTExportStrategy
|
||||
}
|
||||
|
||||
// Store implements k8s.io/apiserver/pkg/registry/rest.StandardStorage. It's
|
||||
@ -199,10 +197,6 @@ type Store struct {
|
||||
// deletionTimestamp, and deletionGracePeriodSeconds checks.
|
||||
ShouldDeleteDuringUpdate func(ctx context.Context, key string, obj, existing runtime.Object) bool
|
||||
|
||||
// ExportStrategy implements resource-specific behavior during export,
|
||||
// optional. Exported objects are not decorated.
|
||||
ExportStrategy rest.RESTExportStrategy
|
||||
|
||||
// TableConvertor is an optional interface for transforming items or lists
|
||||
// of items into tabular output. If unset, the default will be used.
|
||||
TableConvertor rest.TableConvertor
|
||||
@ -223,7 +217,6 @@ type Store struct {
|
||||
|
||||
// Note: the rest.StandardStorage interface aggregates the common REST verbs
|
||||
var _ rest.StandardStorage = &Store{}
|
||||
var _ rest.Exporter = &Store{}
|
||||
var _ rest.TableConvertor = &Store{}
|
||||
var _ GenericStore = &Store{}
|
||||
|
||||
@ -312,11 +305,6 @@ func (e *Store) GetDeleteStrategy() rest.RESTDeleteStrategy {
|
||||
return e.DeleteStrategy
|
||||
}
|
||||
|
||||
// GetExportStrategy implements GenericStore.
|
||||
func (e *Store) GetExportStrategy() rest.RESTExportStrategy {
|
||||
return e.ExportStrategy
|
||||
}
|
||||
|
||||
// List returns a list of items matching labels and field according to the
|
||||
// store's PredicateFunc.
|
||||
func (e *Store) List(ctx context.Context, options *metainternalversion.ListOptions) (runtime.Object, error) {
|
||||
@ -1267,44 +1255,6 @@ func (e *Store) calculateTTL(obj runtime.Object, defaultTTL int64, update bool)
|
||||
return ttl, err
|
||||
}
|
||||
|
||||
// exportObjectMeta unsets the fields on the given object that should not be
|
||||
// present when the object is exported.
|
||||
func exportObjectMeta(accessor metav1.Object, exact bool) {
|
||||
accessor.SetUID("")
|
||||
if !exact {
|
||||
accessor.SetNamespace("")
|
||||
}
|
||||
accessor.SetCreationTimestamp(metav1.Time{})
|
||||
accessor.SetDeletionTimestamp(nil)
|
||||
accessor.SetResourceVersion("")
|
||||
accessor.SetSelfLink("")
|
||||
if len(accessor.GetGenerateName()) > 0 && !exact {
|
||||
accessor.SetName("")
|
||||
}
|
||||
}
|
||||
|
||||
// Export implements the rest.Exporter interface
|
||||
func (e *Store) Export(ctx context.Context, name string, opts metav1.ExportOptions) (runtime.Object, error) {
|
||||
obj, err := e.Get(ctx, name, &metav1.GetOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if accessor, err := meta.Accessor(obj); err == nil {
|
||||
exportObjectMeta(accessor, opts.Exact)
|
||||
} else {
|
||||
klog.V(4).Infof("Object of type %v does not have ObjectMeta: %v", reflect.TypeOf(obj), err)
|
||||
}
|
||||
|
||||
if e.ExportStrategy != nil {
|
||||
if err = e.ExportStrategy.Export(ctx, obj, opts.Exact); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
} else {
|
||||
e.CreateStrategy.PrepareForCreate(ctx, obj)
|
||||
}
|
||||
return obj, nil
|
||||
}
|
||||
|
||||
// CompleteWithOptions updates the store with the provided options and
|
||||
// defaults common fields.
|
||||
func (e *Store) CompleteWithOptions(options *generic.StoreOptions) error {
|
||||
|
@ -1162,104 +1162,6 @@ func TestStoreUpdateHooksInnerRetry(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Add a test to check no-op update if we have object with ResourceVersion
|
||||
// already stored in etcd. Currently there is no easy way to store object with
|
||||
// ResourceVersion in etcd.
|
||||
|
||||
type testPodExport struct{}
|
||||
|
||||
func (t testPodExport) Export(ctx context.Context, obj runtime.Object, exact bool) error {
|
||||
pod := obj.(*example.Pod)
|
||||
if pod.Labels == nil {
|
||||
pod.Labels = map[string]string{}
|
||||
}
|
||||
pod.Labels["exported"] = "true"
|
||||
pod.Labels["exact"] = strconv.FormatBool(exact)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func TestStoreCustomExport(t *testing.T) {
|
||||
podA := example.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: "test",
|
||||
Name: "foo",
|
||||
Labels: map[string]string{},
|
||||
},
|
||||
Spec: example.PodSpec{NodeName: "machine"},
|
||||
}
|
||||
|
||||
destroyFunc, registry := NewTestGenericStoreRegistry(t)
|
||||
defer destroyFunc()
|
||||
|
||||
registry.ExportStrategy = testPodExport{}
|
||||
|
||||
testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test")
|
||||
registry.UpdateStrategy.(*testRESTStrategy).allowCreateOnUpdate = true
|
||||
if !updateAndVerify(t, testContext, registry, &podA) {
|
||||
t.Errorf("Unexpected error updating podA")
|
||||
}
|
||||
|
||||
obj, err := registry.Export(testContext, podA.Name, metav1.ExportOptions{})
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
exportedPod := obj.(*example.Pod)
|
||||
if exportedPod.Labels["exported"] != "true" {
|
||||
t.Errorf("expected: exported->true, found: %s", exportedPod.Labels["exported"])
|
||||
}
|
||||
if exportedPod.Labels["exact"] != "false" {
|
||||
t.Errorf("expected: exact->false, found: %s", exportedPod.Labels["exact"])
|
||||
}
|
||||
if exportedPod.Labels["prepare_create"] != "true" {
|
||||
t.Errorf("expected: prepare_create->true, found: %s", exportedPod.Labels["prepare_create"])
|
||||
}
|
||||
delete(exportedPod.Labels, "exported")
|
||||
delete(exportedPod.Labels, "exact")
|
||||
delete(exportedPod.Labels, "prepare_create")
|
||||
exportObjectMeta(&podA.ObjectMeta, false)
|
||||
podA.Spec = exportedPod.Spec
|
||||
if !reflect.DeepEqual(&podA, exportedPod) {
|
||||
t.Errorf("expected:\n%v\nsaw:\n%v\n", &podA, exportedPod)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreBasicExport(t *testing.T) {
|
||||
podA := example.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Namespace: "test",
|
||||
Name: "foo",
|
||||
Labels: map[string]string{},
|
||||
},
|
||||
Spec: example.PodSpec{NodeName: "machine"},
|
||||
Status: example.PodStatus{HostIP: "1.2.3.4"},
|
||||
}
|
||||
|
||||
destroyFunc, registry := NewTestGenericStoreRegistry(t)
|
||||
defer destroyFunc()
|
||||
|
||||
testContext := genericapirequest.WithNamespace(genericapirequest.NewContext(), "test")
|
||||
registry.UpdateStrategy.(*testRESTStrategy).allowCreateOnUpdate = true
|
||||
if !updateAndVerify(t, testContext, registry, &podA) {
|
||||
t.Errorf("Unexpected error updating podA")
|
||||
}
|
||||
|
||||
obj, err := registry.Export(testContext, podA.Name, metav1.ExportOptions{})
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
exportedPod := obj.(*example.Pod)
|
||||
if exportedPod.Labels["prepare_create"] != "true" {
|
||||
t.Errorf("expected: prepare_create->true, found: %s", exportedPod.Labels["prepare_create"])
|
||||
}
|
||||
delete(exportedPod.Labels, "prepare_create")
|
||||
exportObjectMeta(&podA.ObjectMeta, false)
|
||||
podA.Spec = exportedPod.Spec
|
||||
if !reflect.DeepEqual(&podA, exportedPod) {
|
||||
t.Errorf("expected:\n%v\nsaw:\n%v\n", &podA, exportedPod)
|
||||
}
|
||||
}
|
||||
|
||||
func TestStoreGet(t *testing.T) {
|
||||
podA := &example.Pod{
|
||||
ObjectMeta: metav1.ObjectMeta{Namespace: "test", Name: "foo"},
|
||||
|
@ -25,7 +25,6 @@ go_library(
|
||||
"create_update.go",
|
||||
"delete.go",
|
||||
"doc.go",
|
||||
"export.go",
|
||||
"meta.go",
|
||||
"rest.go",
|
||||
"table.go",
|
||||
|
@ -1,34 +0,0 @@
|
||||
/*
|
||||
Copyright 2015 The Kubernetes Authors.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
package rest
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"k8s.io/apimachinery/pkg/runtime"
|
||||
)
|
||||
|
||||
// RESTExportStrategy is the interface that defines how to export a Kubernetes
|
||||
// object. An exported object is stripped of non-user-settable fields and
|
||||
// optionally, the identifying information related to the object's identity in
|
||||
// the cluster so that it can be loaded into a different namespace or entirely
|
||||
// different cluster without conflict.
|
||||
type RESTExportStrategy interface {
|
||||
// Export strips fields that can not be set by the user. If 'exact' is false
|
||||
// fields specific to the cluster are also stripped
|
||||
Export(ctx context.Context, obj runtime.Object, exact bool) error
|
||||
}
|
@ -102,16 +102,6 @@ type Lister interface {
|
||||
TableConvertor
|
||||
}
|
||||
|
||||
// Exporter is an object that knows how to strip a RESTful resource for export. A store should implement this interface
|
||||
// if export is generally supported for that type. Errors can still be returned during the actual Export when certain
|
||||
// instances of the type are not exportable.
|
||||
type Exporter interface {
|
||||
// Export an object. Fields that are not user specified (e.g. Status, ObjectMeta.ResourceVersion) are stripped out
|
||||
// Returns the stripped object. If 'exact' is true, fields that are specific to the cluster (e.g. namespace) are
|
||||
// retained, otherwise they are stripped also.
|
||||
Export(ctx context.Context, name string, opts metav1.ExportOptions) (runtime.Object, error)
|
||||
}
|
||||
|
||||
// Getter is an object that can retrieve a named RESTful resource.
|
||||
type Getter interface {
|
||||
// Get finds a resource in the storage by name and returns it.
|
||||
|
@ -39,7 +39,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.ExportOptions": schema_pkg_apis_meta_v1_ExportOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref),
|
||||
@ -628,50 +627,6 @@ func schema_pkg_apis_meta_v1_Duration(ref common.ReferenceCallback) common.OpenA
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_ExportOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ExportOptions is the query options to the standard REST get call. Deprecated. Planned for removal in 1.18.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"export": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should this value be exported. Export strips fields that a user can not specify. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"exact": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"export", "exact"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_FieldsV1(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -39,7 +39,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.ExportOptions": schema_pkg_apis_meta_v1_ExportOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref),
|
||||
@ -631,50 +630,6 @@ func schema_pkg_apis_meta_v1_Duration(ref common.ReferenceCallback) common.OpenA
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_ExportOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ExportOptions is the query options to the standard REST get call. Deprecated. Planned for removal in 1.18.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"export": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should this value be exported. Export strips fields that a user can not specify. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"exact": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"export", "exact"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_FieldsV1(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -39,7 +39,6 @@ func GetOpenAPIDefinitions(ref common.ReferenceCallback) map[string]common.OpenA
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.CreateOptions": schema_pkg_apis_meta_v1_CreateOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.DeleteOptions": schema_pkg_apis_meta_v1_DeleteOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.Duration": schema_pkg_apis_meta_v1_Duration(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.ExportOptions": schema_pkg_apis_meta_v1_ExportOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.FieldsV1": schema_pkg_apis_meta_v1_FieldsV1(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GetOptions": schema_pkg_apis_meta_v1_GetOptions(ref),
|
||||
"k8s.io/apimachinery/pkg/apis/meta/v1.GroupKind": schema_pkg_apis_meta_v1_GroupKind(ref),
|
||||
@ -629,50 +628,6 @@ func schema_pkg_apis_meta_v1_Duration(ref common.ReferenceCallback) common.OpenA
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_ExportOptions(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "ExportOptions is the query options to the standard REST get call. Deprecated. Planned for removal in 1.18.",
|
||||
Type: []string{"object"},
|
||||
Properties: map[string]spec.Schema{
|
||||
"kind": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"apiVersion": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
|
||||
Type: []string{"string"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"export": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should this value be exported. Export strips fields that a user can not specify. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
"exact": {
|
||||
SchemaProps: spec.SchemaProps{
|
||||
Description: "Should the export be exact. Exact export maintains cluster-specific fields like 'Namespace'. Deprecated. Planned for removal in 1.18.",
|
||||
Default: false,
|
||||
Type: []string{"boolean"},
|
||||
Format: "",
|
||||
},
|
||||
},
|
||||
},
|
||||
Required: []string{"export", "exact"},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func schema_pkg_apis_meta_v1_FieldsV1(ref common.ReferenceCallback) common.OpenAPIDefinition {
|
||||
return common.OpenAPIDefinition{
|
||||
Schema: spec.Schema{
|
||||
|
@ -10,6 +10,7 @@ go_test(
|
||||
size = "large",
|
||||
srcs = [
|
||||
"apiserver_test.go",
|
||||
"export_test.go",
|
||||
"main_test.go",
|
||||
"max_json_patch_operations_test.go",
|
||||
"max_request_body_bytes_test.go",
|
||||
|
57
test/integration/apiserver/export_test.go
Normal file
57
test/integration/apiserver/export_test.go
Normal file
@ -0,0 +1,57 @@
|
||||
/*
|
||||
Copyright 2020 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 apiserver
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
)
|
||||
|
||||
// Tests that the apiserver rejects the export param
|
||||
func TestExportRejection(t *testing.T) {
|
||||
_, clientSet, closeFn := setup(t)
|
||||
defer closeFn()
|
||||
|
||||
_, err := clientSet.CoreV1().Namespaces().Create(context.Background(), &corev1.Namespace{
|
||||
ObjectMeta: metav1.ObjectMeta{Name: "export-fail"},
|
||||
}, metav1.CreateOptions{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer func() {
|
||||
clientSet.CoreV1().Namespaces().Delete(context.Background(), "export-fail", metav1.DeleteOptions{})
|
||||
}()
|
||||
|
||||
result := clientSet.Discovery().RESTClient().Get().AbsPath("/api/v1/namespaces/export-fail").Param("export", "true").Do(context.Background())
|
||||
statusCode := 0
|
||||
result.StatusCode(&statusCode)
|
||||
if statusCode != http.StatusBadRequest {
|
||||
t.Errorf("expected %v, got %v", http.StatusBadRequest, statusCode)
|
||||
}
|
||||
|
||||
result = clientSet.Discovery().RESTClient().Get().AbsPath("/api/v1/namespaces/export-fail").Param("export", "false").Do(context.Background())
|
||||
statusCode = 0
|
||||
result.StatusCode(&statusCode)
|
||||
if statusCode != http.StatusOK {
|
||||
t.Errorf("expected %v, got %v", http.StatusOK, statusCode)
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user