mirror of https://github.com/docker/cli.git
bump kubernetes to v1.14.0
bump required: - replacing vendor ghodss/yaml with sigs.k8s.io/yaml - adding vendor k8s.io/klog and github.com/evanphx - compose-on-kubernetes removed 'IncludeUninitialized' from watch as it have been removed from k8s Signed-off-by: Nick Adcock <nick.adcock@docker.com>
This commit is contained in:
parent
f40f9c240a
commit
0b6685bca8
|
@ -220,13 +220,11 @@ func newPodInformer(podsClient podListWatch, stackName string, indexers cache.In
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
|
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
|
||||||
options.LabelSelector = labels.SelectorForStack(stackName)
|
options.LabelSelector = labels.SelectorForStack(stackName)
|
||||||
options.IncludeUninitialized = true
|
|
||||||
return podsClient.List(options)
|
return podsClient.List(options)
|
||||||
},
|
},
|
||||||
|
|
||||||
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
|
||||||
options.LabelSelector = labels.SelectorForStack(stackName)
|
options.LabelSelector = labels.SelectorForStack(stackName)
|
||||||
options.IncludeUninitialized = true
|
|
||||||
return podsClient.Watch(options)
|
return podsClient.Watch(options)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
17
vendor.conf
17
vendor.conf
|
@ -14,7 +14,7 @@ github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76 # v1.1.0
|
||||||
github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af
|
github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af
|
||||||
github.com/docker/distribution 0d3efadf0154c2b8a4e7b6621fff9809655cc580
|
github.com/docker/distribution 0d3efadf0154c2b8a4e7b6621fff9809655cc580
|
||||||
github.com/docker/docker 827cb09f87964ed38b46502f22a585f2ed4a78e1
|
github.com/docker/docker 827cb09f87964ed38b46502f22a585f2ed4a78e1
|
||||||
github.com/docker/compose-on-kubernetes 356b2919c496f7e988f6e0dfe7e67d919602e14e # master w/ v1alpha3+pullsecrets+pull-policy
|
github.com/docker/compose-on-kubernetes v0.4.21
|
||||||
github.com/docker/docker-credential-helpers 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
|
github.com/docker/docker-credential-helpers 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
|
||||||
# the docker/go package contains a customized version of canonical/json
|
# the docker/go package contains a customized version of canonical/json
|
||||||
# and is used by Notary. The package is periodically rebased on current Go versions.
|
# and is used by Notary. The package is periodically rebased on current Go versions.
|
||||||
|
@ -26,8 +26,8 @@ github.com/docker/go-units 47565b4f722fb6ceae66b95f853feed578a4a51c # v0.3.3
|
||||||
github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
|
github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
|
||||||
github.com/docker/licensing 9781369abdb5281cdc07a2a446c6df01347ec793
|
github.com/docker/licensing 9781369abdb5281cdc07a2a446c6df01347ec793
|
||||||
github.com/docker/swarmkit 415dc72789e2b733ea884f09188c286ca187d8ec
|
github.com/docker/swarmkit 415dc72789e2b733ea884f09188c286ca187d8ec
|
||||||
|
github.com/evanphx/json-patch v4.1.0
|
||||||
github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff
|
github.com/flynn-archive/go-shlex 3f9db97f856818214da2e1057f8ad84803971cff
|
||||||
github.com/ghodss/yaml 0ca9ea5df5451ffdf184b4428c902747c2c11cd7 # v1.0.0
|
|
||||||
github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef
|
github.com/gogo/googleapis 08a7655d27152912db7aaf4f983275eaf8d128ef
|
||||||
github.com/gogo/protobuf v1.2.0
|
github.com/gogo/protobuf v1.2.0
|
||||||
github.com/golang/glog 23def4e6c14b4da8ac2ed8007337bc5eb5007998
|
github.com/golang/glog 23def4e6c14b4da8ac2ed8007337bc5eb5007998
|
||||||
|
@ -93,9 +93,12 @@ google.golang.org/grpc v1.12.0
|
||||||
gopkg.in/inf.v0 d2d2541c53f18d2a059457998ce2876cc8e67cbf # v0.9.1
|
gopkg.in/inf.v0 d2d2541c53f18d2a059457998ce2876cc8e67cbf # v0.9.1
|
||||||
gopkg.in/yaml.v2 5420a8b6744d3b0345ab293f6fcba19c978f1183 # v2.2.1
|
gopkg.in/yaml.v2 5420a8b6744d3b0345ab293f6fcba19c978f1183 # v2.2.1
|
||||||
gotest.tools v2.2.0
|
gotest.tools v2.2.0
|
||||||
k8s.io/api kubernetes-1.11.2
|
k8s.io/api kubernetes-1.14.0
|
||||||
k8s.io/apimachinery kubernetes-1.11.2
|
k8s.io/apimachinery kubernetes-1.14.0
|
||||||
k8s.io/client-go kubernetes-1.11.2
|
k8s.io/client-go kubernetes-1.14.0
|
||||||
k8s.io/kube-openapi d8ea2fe547a448256204cfc68dfee7b26c720acb
|
k8s.io/klog v0.2.0
|
||||||
k8s.io/kubernetes v1.11.2
|
k8s.io/kube-openapi 5e45bb682580c9be5ffa4d27d367f0eeba125c7b
|
||||||
|
k8s.io/kubernetes v1.14.0
|
||||||
|
k8s.io/utils 21c4ce38f2a793ec01e925ddc31216500183b773
|
||||||
vbom.ml/util 256737ac55c46798123f754ab7d2c784e2c71783
|
vbom.ml/util 256737ac55c46798123f754ab7d2c784e2c71783
|
||||||
|
sigs.k8s.io/yaml v1.1.0
|
||||||
|
|
|
@ -186,4 +186,5 @@ See the [contributing](./CONTRIBUTING.md) and [debugging](./DEBUGGING.md) guides
|
||||||
|
|
||||||
- Guide for [Azure AKS](./docs/install-on-aks.md).
|
- Guide for [Azure AKS](./docs/install-on-aks.md).
|
||||||
- Guide for [GKE](./docs/install-on-gke.md).
|
- Guide for [GKE](./docs/install-on-gke.md).
|
||||||
|
- Guide for [Microk8s](./docs/install-on-microk8s.md).
|
||||||
- Guide for [Minikube](./docs/install-on-minikube.md).
|
- Guide for [Minikube](./docs/install-on-minikube.md).
|
||||||
|
|
|
@ -49,3 +49,26 @@ func (f *stackInformer) Informer() cache.SharedIndexInformer {
|
||||||
func (f *stackInformer) Lister() v1alpha3.StackLister {
|
func (f *stackInformer) Lister() v1alpha3.StackLister {
|
||||||
return v1alpha3.NewStackLister(f.Informer().GetIndexer())
|
return v1alpha3.NewStackLister(f.Informer().GetIndexer())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewFilteredStackInformer creates a stack informer with specific list options
|
||||||
|
func NewFilteredStackInformer(client clientset.Interface, resyncPeriod time.Duration, tweakListOptions func(*v1.ListOptions)) cache.SharedIndexInformer {
|
||||||
|
return cache.NewSharedIndexInformer(
|
||||||
|
&cache.ListWatch{
|
||||||
|
ListFunc: func(options v1.ListOptions) (runtime.Object, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ComposeV1alpha3().Stacks(v1.NamespaceAll).List(options)
|
||||||
|
},
|
||||||
|
WatchFunc: func(options v1.ListOptions) (watch.Interface, error) {
|
||||||
|
if tweakListOptions != nil {
|
||||||
|
tweakListOptions(&options)
|
||||||
|
}
|
||||||
|
return client.ComposeV1alpha3().Stacks(v1.NamespaceAll).Watch(options)
|
||||||
|
},
|
||||||
|
},
|
||||||
|
&compose_v1alpha3.Stack{},
|
||||||
|
resyncPeriod,
|
||||||
|
cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
12
vendor/github.com/docker/compose-on-kubernetes/api/compose/v1alpha3/conversion_custom.go
generated
vendored
Normal file
12
vendor/github.com/docker/compose-on-kubernetes/api/compose/v1alpha3/conversion_custom.go
generated
vendored
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
package v1alpha3
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/docker/compose-on-kubernetes/api/compose/v1beta2"
|
||||||
|
conversion "k8s.io/apimachinery/pkg/conversion"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Convert_v1alpha3_ServiceConfig_To_v1beta2_ServiceConfig is a wrapper around an auto-generated conversion
|
||||||
|
// nolint: golint
|
||||||
|
func Convert_v1alpha3_ServiceConfig_To_v1beta2_ServiceConfig(in *ServiceConfig, out *v1beta2.ServiceConfig, s conversion.Scope) error {
|
||||||
|
return autoConvert_v1alpha3_ServiceConfig_To_v1beta2_ServiceConfig(in, out, s)
|
||||||
|
}
|
825
vendor/github.com/docker/compose-on-kubernetes/api/compose/v1alpha3/conversion_generated.go
generated
vendored
825
vendor/github.com/docker/compose-on-kubernetes/api/compose/v1alpha3/conversion_generated.go
generated
vendored
File diff suppressed because it is too large
Load Diff
206
vendor/github.com/docker/compose-on-kubernetes/api/compose/v1alpha3/deepcopy_generated.go
generated
vendored
206
vendor/github.com/docker/compose-on-kubernetes/api/compose/v1alpha3/deepcopy_generated.go
generated
vendored
|
@ -1,22 +1,6 @@
|
||||||
// +build !ignore_autogenerated
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
/*
|
// Code generated by deepcopy-gen. DO NOT EDIT.
|
||||||
Copyright The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Code generated by C:\gohome\bin\deepcopy-gen.exe. DO NOT EDIT.
|
|
||||||
|
|
||||||
package v1alpha3
|
package v1alpha3
|
||||||
|
|
||||||
|
@ -69,30 +53,18 @@ func (in *Constraints) DeepCopyInto(out *Constraints) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.OperatingSystem != nil {
|
if in.OperatingSystem != nil {
|
||||||
in, out := &in.OperatingSystem, &out.OperatingSystem
|
in, out := &in.OperatingSystem, &out.OperatingSystem
|
||||||
if *in == nil {
|
*out = new(Constraint)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(Constraint)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Architecture != nil {
|
if in.Architecture != nil {
|
||||||
in, out := &in.Architecture, &out.Architecture
|
in, out := &in.Architecture, &out.Architecture
|
||||||
if *in == nil {
|
*out = new(Constraint)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(Constraint)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Hostname != nil {
|
if in.Hostname != nil {
|
||||||
in, out := &in.Hostname, &out.Hostname
|
in, out := &in.Hostname, &out.Hostname
|
||||||
if *in == nil {
|
*out = new(Constraint)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(Constraint)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.MatchLabels != nil {
|
if in.MatchLabels != nil {
|
||||||
in, out := &in.MatchLabels, &out.MatchLabels
|
in, out := &in.MatchLabels, &out.MatchLabels
|
||||||
|
@ -119,12 +91,8 @@ func (in *DeployConfig) DeepCopyInto(out *DeployConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(uint64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(uint64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Labels != nil {
|
if in.Labels != nil {
|
||||||
in, out := &in.Labels, &out.Labels
|
in, out := &in.Labels, &out.Labels
|
||||||
|
@ -135,22 +103,14 @@ func (in *DeployConfig) DeepCopyInto(out *DeployConfig) {
|
||||||
}
|
}
|
||||||
if in.UpdateConfig != nil {
|
if in.UpdateConfig != nil {
|
||||||
in, out := &in.UpdateConfig, &out.UpdateConfig
|
in, out := &in.UpdateConfig, &out.UpdateConfig
|
||||||
if *in == nil {
|
*out = new(UpdateConfig)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(UpdateConfig)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Resources.DeepCopyInto(&out.Resources)
|
in.Resources.DeepCopyInto(&out.Resources)
|
||||||
if in.RestartPolicy != nil {
|
if in.RestartPolicy != nil {
|
||||||
in, out := &in.RestartPolicy, &out.RestartPolicy
|
in, out := &in.RestartPolicy, &out.RestartPolicy
|
||||||
if *in == nil {
|
*out = new(RestartPolicy)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(RestartPolicy)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Placement.DeepCopyInto(&out.Placement)
|
in.Placement.DeepCopyInto(&out.Placement)
|
||||||
return
|
return
|
||||||
|
@ -211,12 +171,8 @@ func (in *FileReferenceConfig) DeepCopyInto(out *FileReferenceConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Mode != nil {
|
if in.Mode != nil {
|
||||||
in, out := &in.Mode, &out.Mode
|
in, out := &in.Mode, &out.Mode
|
||||||
if *in == nil {
|
*out = new(uint32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(uint32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -241,30 +197,18 @@ func (in *HealthCheckConfig) DeepCopyInto(out *HealthCheckConfig) {
|
||||||
}
|
}
|
||||||
if in.Timeout != nil {
|
if in.Timeout != nil {
|
||||||
in, out := &in.Timeout, &out.Timeout
|
in, out := &in.Timeout, &out.Timeout
|
||||||
if *in == nil {
|
*out = new(time.Duration)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(time.Duration)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Interval != nil {
|
if in.Interval != nil {
|
||||||
in, out := &in.Interval, &out.Interval
|
in, out := &in.Interval, &out.Interval
|
||||||
if *in == nil {
|
*out = new(time.Duration)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(time.Duration)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Retries != nil {
|
if in.Retries != nil {
|
||||||
in, out := &in.Retries, &out.Retries
|
in, out := &in.Retries, &out.Retries
|
||||||
if *in == nil {
|
*out = new(uint64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(uint64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -279,17 +223,29 @@ func (in *HealthCheckConfig) DeepCopy() *HealthCheckConfig {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *InternalPort) DeepCopyInto(out *InternalPort) {
|
||||||
|
*out = *in
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InternalPort.
|
||||||
|
func (in *InternalPort) DeepCopy() *InternalPort {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(InternalPort)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *Placement) DeepCopyInto(out *Placement) {
|
func (in *Placement) DeepCopyInto(out *Placement) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Constraints != nil {
|
if in.Constraints != nil {
|
||||||
in, out := &in.Constraints, &out.Constraints
|
in, out := &in.Constraints, &out.Constraints
|
||||||
if *in == nil {
|
*out = new(Constraints)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(Constraints)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -325,21 +281,13 @@ func (in *Resources) DeepCopyInto(out *Resources) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Limits != nil {
|
if in.Limits != nil {
|
||||||
in, out := &in.Limits, &out.Limits
|
in, out := &in.Limits, &out.Limits
|
||||||
if *in == nil {
|
*out = new(Resource)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(Resource)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Reservations != nil {
|
if in.Reservations != nil {
|
||||||
in, out := &in.Reservations, &out.Reservations
|
in, out := &in.Reservations, &out.Reservations
|
||||||
if *in == nil {
|
*out = new(Resource)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(Resource)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -429,12 +377,15 @@ func (in *ServiceConfig) DeepCopyInto(out *ServiceConfig) {
|
||||||
in, out := &in.Environment, &out.Environment
|
in, out := &in.Environment, &out.Environment
|
||||||
*out = make(map[string]*string, len(*in))
|
*out = make(map[string]*string, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
|
var outVal *string
|
||||||
if val == nil {
|
if val == nil {
|
||||||
(*out)[key] = nil
|
(*out)[key] = nil
|
||||||
} else {
|
} else {
|
||||||
outVal := *val
|
in, out := &val, &outVal
|
||||||
(*out)[key] = &outVal
|
*out = new(string)
|
||||||
|
**out = **in
|
||||||
}
|
}
|
||||||
|
(*out)[key] = outVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if in.ExtraHosts != nil {
|
if in.ExtraHosts != nil {
|
||||||
|
@ -444,12 +395,8 @@ func (in *ServiceConfig) DeepCopyInto(out *ServiceConfig) {
|
||||||
}
|
}
|
||||||
if in.HealthCheck != nil {
|
if in.HealthCheck != nil {
|
||||||
in, out := &in.HealthCheck, &out.HealthCheck
|
in, out := &in.HealthCheck, &out.HealthCheck
|
||||||
if *in == nil {
|
*out = new(HealthCheckConfig)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(HealthCheckConfig)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Labels != nil {
|
if in.Labels != nil {
|
||||||
in, out := &in.Labels, &out.Labels
|
in, out := &in.Labels, &out.Labels
|
||||||
|
@ -472,12 +419,8 @@ func (in *ServiceConfig) DeepCopyInto(out *ServiceConfig) {
|
||||||
}
|
}
|
||||||
if in.StopGracePeriod != nil {
|
if in.StopGracePeriod != nil {
|
||||||
in, out := &in.StopGracePeriod, &out.StopGracePeriod
|
in, out := &in.StopGracePeriod, &out.StopGracePeriod
|
||||||
if *in == nil {
|
*out = new(time.Duration)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(time.Duration)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Tmpfs != nil {
|
if in.Tmpfs != nil {
|
||||||
in, out := &in.Tmpfs, &out.Tmpfs
|
in, out := &in.Tmpfs, &out.Tmpfs
|
||||||
|
@ -486,18 +429,19 @@ func (in *ServiceConfig) DeepCopyInto(out *ServiceConfig) {
|
||||||
}
|
}
|
||||||
if in.User != nil {
|
if in.User != nil {
|
||||||
in, out := &in.User, &out.User
|
in, out := &in.User, &out.User
|
||||||
if *in == nil {
|
*out = new(int64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Volumes != nil {
|
if in.Volumes != nil {
|
||||||
in, out := &in.Volumes, &out.Volumes
|
in, out := &in.Volumes, &out.Volumes
|
||||||
*out = make([]ServiceVolumeConfig, len(*in))
|
*out = make([]ServiceVolumeConfig, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
if in.InternalPorts != nil {
|
||||||
|
in, out := &in.InternalPorts, &out.InternalPorts
|
||||||
|
*out = make([]InternalPort, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -516,12 +460,8 @@ func (in *ServiceConfigObjConfig) DeepCopyInto(out *ServiceConfigObjConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Mode != nil {
|
if in.Mode != nil {
|
||||||
in, out := &in.Mode, &out.Mode
|
in, out := &in.Mode, &out.Mode
|
||||||
if *in == nil {
|
*out = new(uint32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(uint32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -557,12 +497,8 @@ func (in *ServiceSecretConfig) DeepCopyInto(out *ServiceSecretConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Mode != nil {
|
if in.Mode != nil {
|
||||||
in, out := &in.Mode, &out.Mode
|
in, out := &in.Mode, &out.Mode
|
||||||
if *in == nil {
|
*out = new(uint32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(uint32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -607,18 +543,14 @@ func (in *StackSpec) DeepCopyInto(out *StackSpec) {
|
||||||
in, out := &in.Secrets, &out.Secrets
|
in, out := &in.Secrets, &out.Secrets
|
||||||
*out = make(map[string]SecretConfig, len(*in))
|
*out = make(map[string]SecretConfig, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
newVal := new(SecretConfig)
|
(*out)[key] = *val.DeepCopy()
|
||||||
val.DeepCopyInto(newVal)
|
|
||||||
(*out)[key] = *newVal
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if in.Configs != nil {
|
if in.Configs != nil {
|
||||||
in, out := &in.Configs, &out.Configs
|
in, out := &in.Configs, &out.Configs
|
||||||
*out = make(map[string]ConfigObjConfig, len(*in))
|
*out = make(map[string]ConfigObjConfig, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
newVal := new(ConfigObjConfig)
|
(*out)[key] = *val.DeepCopy()
|
||||||
val.DeepCopyInto(newVal)
|
|
||||||
(*out)[key] = *newVal
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
@ -639,12 +571,8 @@ func (in *UpdateConfig) DeepCopyInto(out *UpdateConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Parallelism != nil {
|
if in.Parallelism != nil {
|
||||||
in, out := &in.Parallelism, &out.Parallelism
|
in, out := &in.Parallelism, &out.Parallelism
|
||||||
if *in == nil {
|
*out = new(uint64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(uint64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package v1alpha3
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
@ -72,35 +73,49 @@ type StackSpec struct {
|
||||||
type ServiceConfig struct {
|
type ServiceConfig struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
CapAdd []string `json:"cap_add,omitempty"`
|
CapAdd []string `json:"cap_add,omitempty"`
|
||||||
CapDrop []string `json:"cap_drop,omitempty"`
|
CapDrop []string `json:"cap_drop,omitempty"`
|
||||||
Command []string `json:"command,omitempty"`
|
Command []string `json:"command,omitempty"`
|
||||||
Configs []ServiceConfigObjConfig `json:"configs,omitempty"`
|
Configs []ServiceConfigObjConfig `json:"configs,omitempty"`
|
||||||
Deploy DeployConfig `json:"deploy,omitempty"`
|
Deploy DeployConfig `json:"deploy,omitempty"`
|
||||||
Entrypoint []string `json:"entrypoint,omitempty"`
|
Entrypoint []string `json:"entrypoint,omitempty"`
|
||||||
Environment map[string]*string `json:"environment,omitempty"`
|
Environment map[string]*string `json:"environment,omitempty"`
|
||||||
ExtraHosts []string `json:"extra_hosts,omitempty"`
|
ExtraHosts []string `json:"extra_hosts,omitempty"`
|
||||||
Hostname string `json:"hostname,omitempty"`
|
Hostname string `json:"hostname,omitempty"`
|
||||||
HealthCheck *HealthCheckConfig `json:"health_check,omitempty"`
|
HealthCheck *HealthCheckConfig `json:"health_check,omitempty"`
|
||||||
Image string `json:"image,omitempty"`
|
Image string `json:"image,omitempty"`
|
||||||
Ipc string `json:"ipc,omitempty"`
|
Ipc string `json:"ipc,omitempty"`
|
||||||
Labels map[string]string `json:"labels,omitempty"`
|
Labels map[string]string `json:"labels,omitempty"`
|
||||||
Pid string `json:"pid,omitempty"`
|
Pid string `json:"pid,omitempty"`
|
||||||
Ports []ServicePortConfig `json:"ports,omitempty"`
|
Ports []ServicePortConfig `json:"ports,omitempty"`
|
||||||
Privileged bool `json:"privileged,omitempty"`
|
Privileged bool `json:"privileged,omitempty"`
|
||||||
ReadOnly bool `json:"read_only,omitempty"`
|
ReadOnly bool `json:"read_only,omitempty"`
|
||||||
Secrets []ServiceSecretConfig `json:"secrets,omitempty"`
|
Secrets []ServiceSecretConfig `json:"secrets,omitempty"`
|
||||||
StdinOpen bool `json:"stdin_open,omitempty"`
|
StdinOpen bool `json:"stdin_open,omitempty"`
|
||||||
StopGracePeriod *time.Duration `json:"stop_grace_period,omitempty"`
|
StopGracePeriod *time.Duration `json:"stop_grace_period,omitempty"`
|
||||||
Tmpfs []string `json:"tmpfs,omitempty"`
|
Tmpfs []string `json:"tmpfs,omitempty"`
|
||||||
Tty bool `json:"tty,omitempty"`
|
Tty bool `json:"tty,omitempty"`
|
||||||
User *int64 `json:"user,omitempty"`
|
User *int64 `json:"user,omitempty"`
|
||||||
Volumes []ServiceVolumeConfig `json:"volumes,omitempty"`
|
Volumes []ServiceVolumeConfig `json:"volumes,omitempty"`
|
||||||
WorkingDir string `json:"working_dir,omitempty"`
|
WorkingDir string `json:"working_dir,omitempty"`
|
||||||
PullSecret string `json:"pull_secret,omitempty"`
|
PullSecret string `json:"pull_secret,omitempty"`
|
||||||
PullPolicy string `json:"pull_policy,omitempty"`
|
PullPolicy string `json:"pull_policy,omitempty"`
|
||||||
|
InternalPorts []InternalPort `json:"internal_ports,omitempty"`
|
||||||
|
InternalServiceType InternalServiceType `json:"internal_service_type,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InternalServiceType defines the strategy for defining the Service Type to use for inter-service networking
|
||||||
|
type InternalServiceType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// InternalServiceTypeAuto behavior is the same as InternalServiceTypeHeadless if InternalPorts is empty, InternalServiceTypeClusterIP otherwise
|
||||||
|
InternalServiceTypeAuto = InternalServiceType("")
|
||||||
|
// InternalServiceTypeHeadless always create a Headless service
|
||||||
|
InternalServiceTypeHeadless = InternalServiceType("Headless")
|
||||||
|
// InternalServiceTypeClusterIP always create a ClusterIP service
|
||||||
|
InternalServiceTypeClusterIP = InternalServiceType("ClusterIP")
|
||||||
|
)
|
||||||
|
|
||||||
// ServicePortConfig is the port configuration for a service
|
// ServicePortConfig is the port configuration for a service
|
||||||
// +k8s:deepcopy-gen=true
|
// +k8s:deepcopy-gen=true
|
||||||
type ServicePortConfig struct {
|
type ServicePortConfig struct {
|
||||||
|
@ -270,3 +285,11 @@ func (s *StackStatus) clone() *StackStatus {
|
||||||
func (s *Stack) Clone() *Stack {
|
func (s *Stack) Clone() *Stack {
|
||||||
return s.clone()
|
return s.clone()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// InternalPort describes a Port exposed internally to other services
|
||||||
|
// in the stack
|
||||||
|
// +k8s:deepcopy-gen=true
|
||||||
|
type InternalPort struct {
|
||||||
|
Port int32 `json:"port,omitempty"`
|
||||||
|
Protocol v1.Protocol `json:"protocol,omitempty"`
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
Copyright (c) 2014, Evan Phoenix
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the Evan Phoenix nor the names of its contributors
|
||||||
|
may be used to endorse or promote products derived from this software
|
||||||
|
without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -0,0 +1,292 @@
|
||||||
|
# JSON-Patch
|
||||||
|
`jsonpatch` is a library which provides functionallity for both applying
|
||||||
|
[RFC6902 JSON patches](http://tools.ietf.org/html/rfc6902) against documents, as
|
||||||
|
well as for calculating & applying [RFC7396 JSON merge patches](https://tools.ietf.org/html/rfc7396).
|
||||||
|
|
||||||
|
[![GoDoc](https://godoc.org/github.com/evanphx/json-patch?status.svg)](http://godoc.org/github.com/evanphx/json-patch)
|
||||||
|
[![Build Status](https://travis-ci.org/evanphx/json-patch.svg?branch=master)](https://travis-ci.org/evanphx/json-patch)
|
||||||
|
[![Report Card](https://goreportcard.com/badge/github.com/evanphx/json-patch)](https://goreportcard.com/report/github.com/evanphx/json-patch)
|
||||||
|
|
||||||
|
# Get It!
|
||||||
|
|
||||||
|
**Latest and greatest**:
|
||||||
|
```bash
|
||||||
|
go get -u github.com/evanphx/json-patch
|
||||||
|
```
|
||||||
|
|
||||||
|
**Stable Versions**:
|
||||||
|
* Version 4: `go get -u gopkg.in/evanphx/json-patch.v4`
|
||||||
|
|
||||||
|
(previous versions below `v3` are unavailable)
|
||||||
|
|
||||||
|
# Use It!
|
||||||
|
* [Create and apply a merge patch](#create-and-apply-a-merge-patch)
|
||||||
|
* [Create and apply a JSON Patch](#create-and-apply-a-json-patch)
|
||||||
|
* [Comparing JSON documents](#comparing-json-documents)
|
||||||
|
* [Combine merge patches](#combine-merge-patches)
|
||||||
|
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
|
||||||
|
There is a single global configuration variable `jsonpatch.SupportNegativeIndices'. This
|
||||||
|
defaults to `true` and enables the non-standard practice of allowing negative indices
|
||||||
|
to mean indices starting at the end of an array. This functionality can be disabled
|
||||||
|
by setting `jsonpatch.SupportNegativeIndices = false`.
|
||||||
|
|
||||||
|
## Create and apply a merge patch
|
||||||
|
Given both an original JSON document and a modified JSON document, you can create
|
||||||
|
a [Merge Patch](https://tools.ietf.org/html/rfc7396) document.
|
||||||
|
|
||||||
|
It can describe the changes needed to convert from the original to the
|
||||||
|
modified JSON document.
|
||||||
|
|
||||||
|
Once you have a merge patch, you can apply it to other JSON documents using the
|
||||||
|
`jsonpatch.MergePatch(document, patch)` function.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
jsonpatch "github.com/evanphx/json-patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Let's create a merge patch from these two documents...
|
||||||
|
original := []byte(`{"name": "John", "age": 24, "height": 3.21}`)
|
||||||
|
target := []byte(`{"name": "Jane", "age": 24}`)
|
||||||
|
|
||||||
|
patch, err := jsonpatch.CreateMergePatch(original, target)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now lets apply the patch against a different JSON document...
|
||||||
|
|
||||||
|
alternative := []byte(`{"name": "Tina", "age": 28, "height": 3.75}`)
|
||||||
|
modifiedAlternative, err := jsonpatch.MergePatch(alternative, patch)
|
||||||
|
|
||||||
|
fmt.Printf("patch document: %s\n", patch)
|
||||||
|
fmt.Printf("updated alternative doc: %s\n", modifiedAlternative)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
When ran, you get the following output:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ go run main.go
|
||||||
|
patch document: {"height":null,"name":"Jane"}
|
||||||
|
updated tina doc: {"age":28,"name":"Jane"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create and apply a JSON Patch
|
||||||
|
You can create patch objects using `DecodePatch([]byte)`, which can then
|
||||||
|
be applied against JSON documents.
|
||||||
|
|
||||||
|
The following is an example of creating a patch from two operations, and
|
||||||
|
applying it against a JSON document.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
jsonpatch "github.com/evanphx/json-patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
original := []byte(`{"name": "John", "age": 24, "height": 3.21}`)
|
||||||
|
patchJSON := []byte(`[
|
||||||
|
{"op": "replace", "path": "/name", "value": "Jane"},
|
||||||
|
{"op": "remove", "path": "/height"}
|
||||||
|
]`)
|
||||||
|
|
||||||
|
patch, err := jsonpatch.DecodePatch(patchJSON)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
modified, err := patch.Apply(original)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Original document: %s\n", original)
|
||||||
|
fmt.Printf("Modified document: %s\n", modified)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
When ran, you get the following output:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ go run main.go
|
||||||
|
Original document: {"name": "John", "age": 24, "height": 3.21}
|
||||||
|
Modified document: {"age":24,"name":"Jane"}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Comparing JSON documents
|
||||||
|
Due to potential whitespace and ordering differences, one cannot simply compare
|
||||||
|
JSON strings or byte-arrays directly.
|
||||||
|
|
||||||
|
As such, you can instead use `jsonpatch.Equal(document1, document2)` to
|
||||||
|
determine if two JSON documents are _structurally_ equal. This ignores
|
||||||
|
whitespace differences, and key-value ordering.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
jsonpatch "github.com/evanphx/json-patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
original := []byte(`{"name": "John", "age": 24, "height": 3.21}`)
|
||||||
|
similar := []byte(`
|
||||||
|
{
|
||||||
|
"age": 24,
|
||||||
|
"height": 3.21,
|
||||||
|
"name": "John"
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
different := []byte(`{"name": "Jane", "age": 20, "height": 3.37}`)
|
||||||
|
|
||||||
|
if jsonpatch.Equal(original, similar) {
|
||||||
|
fmt.Println(`"original" is structurally equal to "similar"`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !jsonpatch.Equal(original, different) {
|
||||||
|
fmt.Println(`"original" is _not_ structurally equal to "similar"`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
When ran, you get the following output:
|
||||||
|
```bash
|
||||||
|
$ go run main.go
|
||||||
|
"original" is structurally equal to "similar"
|
||||||
|
"original" is _not_ structurally equal to "similar"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Combine merge patches
|
||||||
|
Given two JSON merge patch documents, it is possible to combine them into a
|
||||||
|
single merge patch which can describe both set of changes.
|
||||||
|
|
||||||
|
The resulting merge patch can be used such that applying it results in a
|
||||||
|
document structurally similar as merging each merge patch to the document
|
||||||
|
in succession.
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
jsonpatch "github.com/evanphx/json-patch"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
original := []byte(`{"name": "John", "age": 24, "height": 3.21}`)
|
||||||
|
|
||||||
|
nameAndHeight := []byte(`{"height":null,"name":"Jane"}`)
|
||||||
|
ageAndEyes := []byte(`{"age":4.23,"eyes":"blue"}`)
|
||||||
|
|
||||||
|
// Let's combine these merge patch documents...
|
||||||
|
combinedPatch, err := jsonpatch.MergeMergePatches(nameAndHeight, ageAndEyes)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply each patch individual against the original document
|
||||||
|
withoutCombinedPatch, err := jsonpatch.MergePatch(original, nameAndHeight)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
withoutCombinedPatch, err = jsonpatch.MergePatch(withoutCombinedPatch, ageAndEyes)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply the combined patch against the original document
|
||||||
|
|
||||||
|
withCombinedPatch, err := jsonpatch.MergePatch(original, combinedPatch)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Do both result in the same thing? They should!
|
||||||
|
if jsonpatch.Equal(withCombinedPatch, withoutCombinedPatch) {
|
||||||
|
fmt.Println("Both JSON documents are structurally the same!")
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("combined merge patch: %s", combinedPatch)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
When ran, you get the following output:
|
||||||
|
```bash
|
||||||
|
$ go run main.go
|
||||||
|
Both JSON documents are structurally the same!
|
||||||
|
combined merge patch: {"age":4.23,"eyes":"blue","height":null,"name":"Jane"}
|
||||||
|
```
|
||||||
|
|
||||||
|
# CLI for comparing JSON documents
|
||||||
|
You can install the commandline program `json-patch`.
|
||||||
|
|
||||||
|
This program can take multiple JSON patch documents as arguments,
|
||||||
|
and fed a JSON document from `stdin`. It will apply the patch(es) against
|
||||||
|
the document and output the modified doc.
|
||||||
|
|
||||||
|
**patch.1.json**
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{"op": "replace", "path": "/name", "value": "Jane"},
|
||||||
|
{"op": "remove", "path": "/height"}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
**patch.2.json**
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{"op": "add", "path": "/address", "value": "123 Main St"},
|
||||||
|
{"op": "replace", "path": "/age", "value": "21"}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
**document.json**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "John",
|
||||||
|
"age": 24,
|
||||||
|
"height": 3.21
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
You can then run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ go install github.com/evanphx/json-patch/cmd/json-patch
|
||||||
|
$ cat document.json | json-patch -p patch.1.json -p patch.2.json
|
||||||
|
{"address":"123 Main St","age":"21","name":"Jane"}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Help It!
|
||||||
|
Contributions are welcomed! Leave [an issue](https://github.com/evanphx/json-patch/issues)
|
||||||
|
or [create a PR](https://github.com/evanphx/json-patch/compare).
|
||||||
|
|
||||||
|
|
||||||
|
Before creating a pull request, we'd ask that you make sure tests are passing
|
||||||
|
and that you have added new tests when applicable.
|
||||||
|
|
||||||
|
Contributors can run tests using:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go test -cover ./...
|
||||||
|
```
|
||||||
|
|
||||||
|
Builds for pull requests are tested automatically
|
||||||
|
using [TravisCI](https://travis-ci.org/evanphx/json-patch).
|
|
@ -0,0 +1,383 @@
|
||||||
|
package jsonpatch
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"reflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
func merge(cur, patch *lazyNode, mergeMerge bool) *lazyNode {
|
||||||
|
curDoc, err := cur.intoDoc()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
pruneNulls(patch)
|
||||||
|
return patch
|
||||||
|
}
|
||||||
|
|
||||||
|
patchDoc, err := patch.intoDoc()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return patch
|
||||||
|
}
|
||||||
|
|
||||||
|
mergeDocs(curDoc, patchDoc, mergeMerge)
|
||||||
|
|
||||||
|
return cur
|
||||||
|
}
|
||||||
|
|
||||||
|
func mergeDocs(doc, patch *partialDoc, mergeMerge bool) {
|
||||||
|
for k, v := range *patch {
|
||||||
|
if v == nil {
|
||||||
|
if mergeMerge {
|
||||||
|
(*doc)[k] = nil
|
||||||
|
} else {
|
||||||
|
delete(*doc, k)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cur, ok := (*doc)[k]
|
||||||
|
|
||||||
|
if !ok || cur == nil {
|
||||||
|
pruneNulls(v)
|
||||||
|
(*doc)[k] = v
|
||||||
|
} else {
|
||||||
|
(*doc)[k] = merge(cur, v, mergeMerge)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func pruneNulls(n *lazyNode) {
|
||||||
|
sub, err := n.intoDoc()
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
pruneDocNulls(sub)
|
||||||
|
} else {
|
||||||
|
ary, err := n.intoAry()
|
||||||
|
|
||||||
|
if err == nil {
|
||||||
|
pruneAryNulls(ary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func pruneDocNulls(doc *partialDoc) *partialDoc {
|
||||||
|
for k, v := range *doc {
|
||||||
|
if v == nil {
|
||||||
|
delete(*doc, k)
|
||||||
|
} else {
|
||||||
|
pruneNulls(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return doc
|
||||||
|
}
|
||||||
|
|
||||||
|
func pruneAryNulls(ary *partialArray) *partialArray {
|
||||||
|
newAry := []*lazyNode{}
|
||||||
|
|
||||||
|
for _, v := range *ary {
|
||||||
|
if v != nil {
|
||||||
|
pruneNulls(v)
|
||||||
|
newAry = append(newAry, v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*ary = newAry
|
||||||
|
|
||||||
|
return ary
|
||||||
|
}
|
||||||
|
|
||||||
|
var errBadJSONDoc = fmt.Errorf("Invalid JSON Document")
|
||||||
|
var errBadJSONPatch = fmt.Errorf("Invalid JSON Patch")
|
||||||
|
var errBadMergeTypes = fmt.Errorf("Mismatched JSON Documents")
|
||||||
|
|
||||||
|
// MergeMergePatches merges two merge patches together, such that
|
||||||
|
// applying this resulting merged merge patch to a document yields the same
|
||||||
|
// as merging each merge patch to the document in succession.
|
||||||
|
func MergeMergePatches(patch1Data, patch2Data []byte) ([]byte, error) {
|
||||||
|
return doMergePatch(patch1Data, patch2Data, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// MergePatch merges the patchData into the docData.
|
||||||
|
func MergePatch(docData, patchData []byte) ([]byte, error) {
|
||||||
|
return doMergePatch(docData, patchData, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
func doMergePatch(docData, patchData []byte, mergeMerge bool) ([]byte, error) {
|
||||||
|
doc := &partialDoc{}
|
||||||
|
|
||||||
|
docErr := json.Unmarshal(docData, doc)
|
||||||
|
|
||||||
|
patch := &partialDoc{}
|
||||||
|
|
||||||
|
patchErr := json.Unmarshal(patchData, patch)
|
||||||
|
|
||||||
|
if _, ok := docErr.(*json.SyntaxError); ok {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
if _, ok := patchErr.(*json.SyntaxError); ok {
|
||||||
|
return nil, errBadJSONPatch
|
||||||
|
}
|
||||||
|
|
||||||
|
if docErr == nil && *doc == nil {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
if patchErr == nil && *patch == nil {
|
||||||
|
return nil, errBadJSONPatch
|
||||||
|
}
|
||||||
|
|
||||||
|
if docErr != nil || patchErr != nil {
|
||||||
|
// Not an error, just not a doc, so we turn straight into the patch
|
||||||
|
if patchErr == nil {
|
||||||
|
if mergeMerge {
|
||||||
|
doc = patch
|
||||||
|
} else {
|
||||||
|
doc = pruneDocNulls(patch)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
patchAry := &partialArray{}
|
||||||
|
patchErr = json.Unmarshal(patchData, patchAry)
|
||||||
|
|
||||||
|
if patchErr != nil {
|
||||||
|
return nil, errBadJSONPatch
|
||||||
|
}
|
||||||
|
|
||||||
|
pruneAryNulls(patchAry)
|
||||||
|
|
||||||
|
out, patchErr := json.Marshal(patchAry)
|
||||||
|
|
||||||
|
if patchErr != nil {
|
||||||
|
return nil, errBadJSONPatch
|
||||||
|
}
|
||||||
|
|
||||||
|
return out, nil
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
mergeDocs(doc, patch, mergeMerge)
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(doc)
|
||||||
|
}
|
||||||
|
|
||||||
|
// resemblesJSONArray indicates whether the byte-slice "appears" to be
|
||||||
|
// a JSON array or not.
|
||||||
|
// False-positives are possible, as this function does not check the internal
|
||||||
|
// structure of the array. It only checks that the outer syntax is present and
|
||||||
|
// correct.
|
||||||
|
func resemblesJSONArray(input []byte) bool {
|
||||||
|
input = bytes.TrimSpace(input)
|
||||||
|
|
||||||
|
hasPrefix := bytes.HasPrefix(input, []byte("["))
|
||||||
|
hasSuffix := bytes.HasSuffix(input, []byte("]"))
|
||||||
|
|
||||||
|
return hasPrefix && hasSuffix
|
||||||
|
}
|
||||||
|
|
||||||
|
// CreateMergePatch will return a merge patch document capable of converting
|
||||||
|
// the original document(s) to the modified document(s).
|
||||||
|
// The parameters can be bytes of either two JSON Documents, or two arrays of
|
||||||
|
// JSON documents.
|
||||||
|
// The merge patch returned follows the specification defined at http://tools.ietf.org/html/draft-ietf-appsawg-json-merge-patch-07
|
||||||
|
func CreateMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error) {
|
||||||
|
originalResemblesArray := resemblesJSONArray(originalJSON)
|
||||||
|
modifiedResemblesArray := resemblesJSONArray(modifiedJSON)
|
||||||
|
|
||||||
|
// Do both byte-slices seem like JSON arrays?
|
||||||
|
if originalResemblesArray && modifiedResemblesArray {
|
||||||
|
return createArrayMergePatch(originalJSON, modifiedJSON)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Are both byte-slices are not arrays? Then they are likely JSON objects...
|
||||||
|
if !originalResemblesArray && !modifiedResemblesArray {
|
||||||
|
return createObjectMergePatch(originalJSON, modifiedJSON)
|
||||||
|
}
|
||||||
|
|
||||||
|
// None of the above? Then return an error because of mismatched types.
|
||||||
|
return nil, errBadMergeTypes
|
||||||
|
}
|
||||||
|
|
||||||
|
// createObjectMergePatch will return a merge-patch document capable of
|
||||||
|
// converting the original document to the modified document.
|
||||||
|
func createObjectMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error) {
|
||||||
|
originalDoc := map[string]interface{}{}
|
||||||
|
modifiedDoc := map[string]interface{}{}
|
||||||
|
|
||||||
|
err := json.Unmarshal(originalJSON, &originalDoc)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(modifiedJSON, &modifiedDoc)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
dest, err := getDiff(originalDoc, modifiedDoc)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(dest)
|
||||||
|
}
|
||||||
|
|
||||||
|
// createArrayMergePatch will return an array of merge-patch documents capable
|
||||||
|
// of converting the original document to the modified document for each
|
||||||
|
// pair of JSON documents provided in the arrays.
|
||||||
|
// Arrays of mismatched sizes will result in an error.
|
||||||
|
func createArrayMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error) {
|
||||||
|
originalDocs := []json.RawMessage{}
|
||||||
|
modifiedDocs := []json.RawMessage{}
|
||||||
|
|
||||||
|
err := json.Unmarshal(originalJSON, &originalDocs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal(modifiedJSON, &modifiedDocs)
|
||||||
|
if err != nil {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
total := len(originalDocs)
|
||||||
|
if len(modifiedDocs) != total {
|
||||||
|
return nil, errBadJSONDoc
|
||||||
|
}
|
||||||
|
|
||||||
|
result := []json.RawMessage{}
|
||||||
|
for i := 0; i < len(originalDocs); i++ {
|
||||||
|
original := originalDocs[i]
|
||||||
|
modified := modifiedDocs[i]
|
||||||
|
|
||||||
|
patch, err := createObjectMergePatch(original, modified)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
result = append(result, json.RawMessage(patch))
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns true if the array matches (must be json types).
|
||||||
|
// As is idiomatic for go, an empty array is not the same as a nil array.
|
||||||
|
func matchesArray(a, b []interface{}) bool {
|
||||||
|
if len(a) != len(b) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (a == nil && b != nil) || (a != nil && b == nil) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for i := range a {
|
||||||
|
if !matchesValue(a[i], b[i]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
// Returns true if the values matches (must be json types)
|
||||||
|
// The types of the values must match, otherwise it will always return false
|
||||||
|
// If two map[string]interface{} are given, all elements must match.
|
||||||
|
func matchesValue(av, bv interface{}) bool {
|
||||||
|
if reflect.TypeOf(av) != reflect.TypeOf(bv) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
switch at := av.(type) {
|
||||||
|
case string:
|
||||||
|
bt := bv.(string)
|
||||||
|
if bt == at {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case float64:
|
||||||
|
bt := bv.(float64)
|
||||||
|
if bt == at {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case bool:
|
||||||
|
bt := bv.(bool)
|
||||||
|
if bt == at {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case nil:
|
||||||
|
// Both nil, fine.
|
||||||
|
return true
|
||||||
|
case map[string]interface{}:
|
||||||
|
bt := bv.(map[string]interface{})
|
||||||
|
for key := range at {
|
||||||
|
if !matchesValue(at[key], bt[key]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for key := range bt {
|
||||||
|
if !matchesValue(at[key], bt[key]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
case []interface{}:
|
||||||
|
bt := bv.([]interface{})
|
||||||
|
return matchesArray(at, bt)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// getDiff returns the (recursive) difference between a and b as a map[string]interface{}.
|
||||||
|
func getDiff(a, b map[string]interface{}) (map[string]interface{}, error) {
|
||||||
|
into := map[string]interface{}{}
|
||||||
|
for key, bv := range b {
|
||||||
|
av, ok := a[key]
|
||||||
|
// value was added
|
||||||
|
if !ok {
|
||||||
|
into[key] = bv
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// If types have changed, replace completely
|
||||||
|
if reflect.TypeOf(av) != reflect.TypeOf(bv) {
|
||||||
|
into[key] = bv
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// Types are the same, compare values
|
||||||
|
switch at := av.(type) {
|
||||||
|
case map[string]interface{}:
|
||||||
|
bt := bv.(map[string]interface{})
|
||||||
|
dst := make(map[string]interface{}, len(bt))
|
||||||
|
dst, err := getDiff(at, bt)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if len(dst) > 0 {
|
||||||
|
into[key] = dst
|
||||||
|
}
|
||||||
|
case string, float64, bool:
|
||||||
|
if !matchesValue(av, bv) {
|
||||||
|
into[key] = bv
|
||||||
|
}
|
||||||
|
case []interface{}:
|
||||||
|
bt := bv.([]interface{})
|
||||||
|
if !matchesArray(at, bt) {
|
||||||
|
into[key] = bv
|
||||||
|
}
|
||||||
|
case nil:
|
||||||
|
switch bv.(type) {
|
||||||
|
case nil:
|
||||||
|
// Both nil, fine.
|
||||||
|
default:
|
||||||
|
into[key] = bv
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("Unknown type:%T in key %s", av, key))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Now add all deleted values as nil
|
||||||
|
for key := range a {
|
||||||
|
_, found := b[key]
|
||||||
|
if !found {
|
||||||
|
into[key] = nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return into, nil
|
||||||
|
}
|
|
@ -0,0 +1,682 @@
|
||||||
|
package jsonpatch
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
eRaw = iota
|
||||||
|
eDoc
|
||||||
|
eAry
|
||||||
|
)
|
||||||
|
|
||||||
|
var SupportNegativeIndices bool = true
|
||||||
|
|
||||||
|
type lazyNode struct {
|
||||||
|
raw *json.RawMessage
|
||||||
|
doc partialDoc
|
||||||
|
ary partialArray
|
||||||
|
which int
|
||||||
|
}
|
||||||
|
|
||||||
|
type operation map[string]*json.RawMessage
|
||||||
|
|
||||||
|
// Patch is an ordered collection of operations.
|
||||||
|
type Patch []operation
|
||||||
|
|
||||||
|
type partialDoc map[string]*lazyNode
|
||||||
|
type partialArray []*lazyNode
|
||||||
|
|
||||||
|
type container interface {
|
||||||
|
get(key string) (*lazyNode, error)
|
||||||
|
set(key string, val *lazyNode) error
|
||||||
|
add(key string, val *lazyNode) error
|
||||||
|
remove(key string) error
|
||||||
|
}
|
||||||
|
|
||||||
|
func newLazyNode(raw *json.RawMessage) *lazyNode {
|
||||||
|
return &lazyNode{raw: raw, doc: nil, ary: nil, which: eRaw}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) MarshalJSON() ([]byte, error) {
|
||||||
|
switch n.which {
|
||||||
|
case eRaw:
|
||||||
|
return json.Marshal(n.raw)
|
||||||
|
case eDoc:
|
||||||
|
return json.Marshal(n.doc)
|
||||||
|
case eAry:
|
||||||
|
return json.Marshal(n.ary)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("Unknown type")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) UnmarshalJSON(data []byte) error {
|
||||||
|
dest := make(json.RawMessage, len(data))
|
||||||
|
copy(dest, data)
|
||||||
|
n.raw = &dest
|
||||||
|
n.which = eRaw
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) intoDoc() (*partialDoc, error) {
|
||||||
|
if n.which == eDoc {
|
||||||
|
return &n.doc, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if n.raw == nil {
|
||||||
|
return nil, fmt.Errorf("Unable to unmarshal nil pointer as partial document")
|
||||||
|
}
|
||||||
|
|
||||||
|
err := json.Unmarshal(*n.raw, &n.doc)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n.which = eDoc
|
||||||
|
return &n.doc, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) intoAry() (*partialArray, error) {
|
||||||
|
if n.which == eAry {
|
||||||
|
return &n.ary, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if n.raw == nil {
|
||||||
|
return nil, fmt.Errorf("Unable to unmarshal nil pointer as partial array")
|
||||||
|
}
|
||||||
|
|
||||||
|
err := json.Unmarshal(*n.raw, &n.ary)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n.which = eAry
|
||||||
|
return &n.ary, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) compact() []byte {
|
||||||
|
buf := &bytes.Buffer{}
|
||||||
|
|
||||||
|
if n.raw == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
err := json.Compact(buf, *n.raw)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return *n.raw
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.Bytes()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) tryDoc() bool {
|
||||||
|
if n.raw == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
err := json.Unmarshal(*n.raw, &n.doc)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
n.which = eDoc
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) tryAry() bool {
|
||||||
|
if n.raw == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
err := json.Unmarshal(*n.raw, &n.ary)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
n.which = eAry
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *lazyNode) equal(o *lazyNode) bool {
|
||||||
|
if n.which == eRaw {
|
||||||
|
if !n.tryDoc() && !n.tryAry() {
|
||||||
|
if o.which != eRaw {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return bytes.Equal(n.compact(), o.compact())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if n.which == eDoc {
|
||||||
|
if o.which == eRaw {
|
||||||
|
if !o.tryDoc() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if o.which != eDoc {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for k, v := range n.doc {
|
||||||
|
ov, ok := o.doc[k]
|
||||||
|
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if v == nil && ov == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if !v.equal(ov) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
if o.which != eAry && !o.tryAry() {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(n.ary) != len(o.ary) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
for idx, val := range n.ary {
|
||||||
|
if !val.equal(o.ary[idx]) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o operation) kind() string {
|
||||||
|
if obj, ok := o["op"]; ok && obj != nil {
|
||||||
|
var op string
|
||||||
|
|
||||||
|
err := json.Unmarshal(*obj, &op)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
return op
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o operation) path() string {
|
||||||
|
if obj, ok := o["path"]; ok && obj != nil {
|
||||||
|
var op string
|
||||||
|
|
||||||
|
err := json.Unmarshal(*obj, &op)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
return op
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o operation) from() string {
|
||||||
|
if obj, ok := o["from"]; ok && obj != nil {
|
||||||
|
var op string
|
||||||
|
|
||||||
|
err := json.Unmarshal(*obj, &op)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
return op
|
||||||
|
}
|
||||||
|
|
||||||
|
return "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o operation) value() *lazyNode {
|
||||||
|
if obj, ok := o["value"]; ok {
|
||||||
|
return newLazyNode(obj)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func isArray(buf []byte) bool {
|
||||||
|
Loop:
|
||||||
|
for _, c := range buf {
|
||||||
|
switch c {
|
||||||
|
case ' ':
|
||||||
|
case '\n':
|
||||||
|
case '\t':
|
||||||
|
continue
|
||||||
|
case '[':
|
||||||
|
return true
|
||||||
|
default:
|
||||||
|
break Loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func findObject(pd *container, path string) (container, string) {
|
||||||
|
doc := *pd
|
||||||
|
|
||||||
|
split := strings.Split(path, "/")
|
||||||
|
|
||||||
|
if len(split) < 2 {
|
||||||
|
return nil, ""
|
||||||
|
}
|
||||||
|
|
||||||
|
parts := split[1 : len(split)-1]
|
||||||
|
|
||||||
|
key := split[len(split)-1]
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
|
for _, part := range parts {
|
||||||
|
|
||||||
|
next, ok := doc.get(decodePatchKey(part))
|
||||||
|
|
||||||
|
if next == nil || ok != nil {
|
||||||
|
return nil, ""
|
||||||
|
}
|
||||||
|
|
||||||
|
if isArray(*next.raw) {
|
||||||
|
doc, err = next.intoAry()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, ""
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
doc, err = next.intoDoc()
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return doc, decodePatchKey(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialDoc) set(key string, val *lazyNode) error {
|
||||||
|
(*d)[key] = val
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialDoc) add(key string, val *lazyNode) error {
|
||||||
|
(*d)[key] = val
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialDoc) get(key string) (*lazyNode, error) {
|
||||||
|
return (*d)[key], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialDoc) remove(key string) error {
|
||||||
|
_, ok := (*d)[key]
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("Unable to remove nonexistent key: %s", key)
|
||||||
|
}
|
||||||
|
|
||||||
|
delete(*d, key)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialArray) set(key string, val *lazyNode) error {
|
||||||
|
if key == "-" {
|
||||||
|
*d = append(*d, val)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
idx, err := strconv.Atoi(key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
sz := len(*d)
|
||||||
|
if idx+1 > sz {
|
||||||
|
sz = idx + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
ary := make([]*lazyNode, sz)
|
||||||
|
|
||||||
|
cur := *d
|
||||||
|
|
||||||
|
copy(ary, cur)
|
||||||
|
|
||||||
|
if idx >= len(ary) {
|
||||||
|
return fmt.Errorf("Unable to access invalid index: %d", idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
ary[idx] = val
|
||||||
|
|
||||||
|
*d = ary
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialArray) add(key string, val *lazyNode) error {
|
||||||
|
if key == "-" {
|
||||||
|
*d = append(*d, val)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
idx, err := strconv.Atoi(key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ary := make([]*lazyNode, len(*d)+1)
|
||||||
|
|
||||||
|
cur := *d
|
||||||
|
|
||||||
|
if idx >= len(ary) {
|
||||||
|
return fmt.Errorf("Unable to access invalid index: %d", idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
if SupportNegativeIndices {
|
||||||
|
if idx < -len(ary) {
|
||||||
|
return fmt.Errorf("Unable to access invalid index: %d", idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
if idx < 0 {
|
||||||
|
idx += len(ary)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
copy(ary[0:idx], cur[0:idx])
|
||||||
|
ary[idx] = val
|
||||||
|
copy(ary[idx+1:], cur[idx:])
|
||||||
|
|
||||||
|
*d = ary
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialArray) get(key string) (*lazyNode, error) {
|
||||||
|
idx, err := strconv.Atoi(key)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if idx >= len(*d) {
|
||||||
|
return nil, fmt.Errorf("Unable to access invalid index: %d", idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*d)[idx], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *partialArray) remove(key string) error {
|
||||||
|
idx, err := strconv.Atoi(key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
cur := *d
|
||||||
|
|
||||||
|
if idx >= len(cur) {
|
||||||
|
return fmt.Errorf("Unable to access invalid index: %d", idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
if SupportNegativeIndices {
|
||||||
|
if idx < -len(cur) {
|
||||||
|
return fmt.Errorf("Unable to access invalid index: %d", idx)
|
||||||
|
}
|
||||||
|
|
||||||
|
if idx < 0 {
|
||||||
|
idx += len(cur)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ary := make([]*lazyNode, len(cur)-1)
|
||||||
|
|
||||||
|
copy(ary[0:idx], cur[0:idx])
|
||||||
|
copy(ary[idx:], cur[idx+1:])
|
||||||
|
|
||||||
|
*d = ary
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Patch) add(doc *container, op operation) error {
|
||||||
|
path := op.path()
|
||||||
|
|
||||||
|
con, key := findObject(doc, path)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch add operation does not apply: doc is missing path: \"%s\"", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
return con.add(key, op.value())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Patch) remove(doc *container, op operation) error {
|
||||||
|
path := op.path()
|
||||||
|
|
||||||
|
con, key := findObject(doc, path)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch remove operation does not apply: doc is missing path: \"%s\"", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
return con.remove(key)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Patch) replace(doc *container, op operation) error {
|
||||||
|
path := op.path()
|
||||||
|
|
||||||
|
con, key := findObject(doc, path)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch replace operation does not apply: doc is missing path: %s", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
_, ok := con.get(key)
|
||||||
|
if ok != nil {
|
||||||
|
return fmt.Errorf("jsonpatch replace operation does not apply: doc is missing key: %s", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
return con.set(key, op.value())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Patch) move(doc *container, op operation) error {
|
||||||
|
from := op.from()
|
||||||
|
|
||||||
|
con, key := findObject(doc, from)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch move operation does not apply: doc is missing from path: %s", from)
|
||||||
|
}
|
||||||
|
|
||||||
|
val, err := con.get(key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = con.remove(key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
path := op.path()
|
||||||
|
|
||||||
|
con, key = findObject(doc, path)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch move operation does not apply: doc is missing destination path: %s", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
return con.set(key, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Patch) test(doc *container, op operation) error {
|
||||||
|
path := op.path()
|
||||||
|
|
||||||
|
con, key := findObject(doc, path)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch test operation does not apply: is missing path: %s", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
val, err := con.get(key)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if val == nil {
|
||||||
|
if op.value().raw == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return fmt.Errorf("Testing value %s failed", path)
|
||||||
|
} else if op.value() == nil {
|
||||||
|
return fmt.Errorf("Testing value %s failed", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
if val.equal(op.value()) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return fmt.Errorf("Testing value %s failed", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p Patch) copy(doc *container, op operation) error {
|
||||||
|
from := op.from()
|
||||||
|
|
||||||
|
con, key := findObject(doc, from)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch copy operation does not apply: doc is missing from path: %s", from)
|
||||||
|
}
|
||||||
|
|
||||||
|
val, err := con.get(key)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
path := op.path()
|
||||||
|
|
||||||
|
con, key = findObject(doc, path)
|
||||||
|
|
||||||
|
if con == nil {
|
||||||
|
return fmt.Errorf("jsonpatch copy operation does not apply: doc is missing destination path: %s", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
return con.set(key, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Equal indicates if 2 JSON documents have the same structural equality.
|
||||||
|
func Equal(a, b []byte) bool {
|
||||||
|
ra := make(json.RawMessage, len(a))
|
||||||
|
copy(ra, a)
|
||||||
|
la := newLazyNode(&ra)
|
||||||
|
|
||||||
|
rb := make(json.RawMessage, len(b))
|
||||||
|
copy(rb, b)
|
||||||
|
lb := newLazyNode(&rb)
|
||||||
|
|
||||||
|
return la.equal(lb)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DecodePatch decodes the passed JSON document as an RFC 6902 patch.
|
||||||
|
func DecodePatch(buf []byte) (Patch, error) {
|
||||||
|
var p Patch
|
||||||
|
|
||||||
|
err := json.Unmarshal(buf, &p)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return p, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Apply mutates a JSON document according to the patch, and returns the new
|
||||||
|
// document.
|
||||||
|
func (p Patch) Apply(doc []byte) ([]byte, error) {
|
||||||
|
return p.ApplyIndent(doc, "")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ApplyIndent mutates a JSON document according to the patch, and returns the new
|
||||||
|
// document indented.
|
||||||
|
func (p Patch) ApplyIndent(doc []byte, indent string) ([]byte, error) {
|
||||||
|
var pd container
|
||||||
|
if doc[0] == '[' {
|
||||||
|
pd = &partialArray{}
|
||||||
|
} else {
|
||||||
|
pd = &partialDoc{}
|
||||||
|
}
|
||||||
|
|
||||||
|
err := json.Unmarshal(doc, pd)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = nil
|
||||||
|
|
||||||
|
for _, op := range p {
|
||||||
|
switch op.kind() {
|
||||||
|
case "add":
|
||||||
|
err = p.add(&pd, op)
|
||||||
|
case "remove":
|
||||||
|
err = p.remove(&pd, op)
|
||||||
|
case "replace":
|
||||||
|
err = p.replace(&pd, op)
|
||||||
|
case "move":
|
||||||
|
err = p.move(&pd, op)
|
||||||
|
case "test":
|
||||||
|
err = p.test(&pd, op)
|
||||||
|
case "copy":
|
||||||
|
err = p.copy(&pd, op)
|
||||||
|
default:
|
||||||
|
err = fmt.Errorf("Unexpected kind: %s", op.kind())
|
||||||
|
}
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if indent != "" {
|
||||||
|
return json.MarshalIndent(pd, "", indent)
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(pd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// From http://tools.ietf.org/html/rfc6901#section-4 :
|
||||||
|
//
|
||||||
|
// Evaluation of each reference token begins by decoding any escaped
|
||||||
|
// character sequence. This is performed by first transforming any
|
||||||
|
// occurrence of the sequence '~1' to '/', and then transforming any
|
||||||
|
// occurrence of the sequence '~0' to '~'.
|
||||||
|
|
||||||
|
var (
|
||||||
|
rfc6901Decoder = strings.NewReplacer("~1", "/", "~0", "~")
|
||||||
|
)
|
||||||
|
|
||||||
|
func decodePatchKey(k string) string {
|
||||||
|
return rfc6901Decoder.Replace(k)
|
||||||
|
}
|
|
@ -1,12 +0,0 @@
|
||||||
# BTree implementation for Go
|
|
||||||
|
|
||||||
![Travis CI Build Status](https://api.travis-ci.org/google/btree.svg?branch=master)
|
|
||||||
|
|
||||||
This package provides an in-memory B-Tree implementation for Go, useful as
|
|
||||||
an ordered, mutable data structure.
|
|
||||||
|
|
||||||
The API is based off of the wonderful
|
|
||||||
http://godoc.org/github.com/petar/GoLLRB/llrb, and is meant to allow btree to
|
|
||||||
act as a drop-in replacement for gollrb trees.
|
|
||||||
|
|
||||||
See http://godoc.org/github.com/google/btree for documentation.
|
|
|
@ -1,881 +0,0 @@
|
||||||
// Copyright 2014 Google Inc.
|
|
||||||
//
|
|
||||||
// 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 btree implements in-memory B-Trees of arbitrary degree.
|
|
||||||
//
|
|
||||||
// btree implements an in-memory B-Tree for use as an ordered data structure.
|
|
||||||
// It is not meant for persistent storage solutions.
|
|
||||||
//
|
|
||||||
// It has a flatter structure than an equivalent red-black or other binary tree,
|
|
||||||
// which in some cases yields better memory usage and/or performance.
|
|
||||||
// See some discussion on the matter here:
|
|
||||||
// http://google-opensource.blogspot.com/2013/01/c-containers-that-save-memory-and-time.html
|
|
||||||
// Note, though, that this project is in no way related to the C++ B-Tree
|
|
||||||
// implementation written about there.
|
|
||||||
//
|
|
||||||
// Within this tree, each node contains a slice of items and a (possibly nil)
|
|
||||||
// slice of children. For basic numeric values or raw structs, this can cause
|
|
||||||
// efficiency differences when compared to equivalent C++ template code that
|
|
||||||
// stores values in arrays within the node:
|
|
||||||
// * Due to the overhead of storing values as interfaces (each
|
|
||||||
// value needs to be stored as the value itself, then 2 words for the
|
|
||||||
// interface pointing to that value and its type), resulting in higher
|
|
||||||
// memory use.
|
|
||||||
// * Since interfaces can point to values anywhere in memory, values are
|
|
||||||
// most likely not stored in contiguous blocks, resulting in a higher
|
|
||||||
// number of cache misses.
|
|
||||||
// These issues don't tend to matter, though, when working with strings or other
|
|
||||||
// heap-allocated structures, since C++-equivalent structures also must store
|
|
||||||
// pointers and also distribute their values across the heap.
|
|
||||||
//
|
|
||||||
// This implementation is designed to be a drop-in replacement to gollrb.LLRB
|
|
||||||
// trees, (http://github.com/petar/gollrb), an excellent and probably the most
|
|
||||||
// widely used ordered tree implementation in the Go ecosystem currently.
|
|
||||||
// Its functions, therefore, exactly mirror those of
|
|
||||||
// llrb.LLRB where possible. Unlike gollrb, though, we currently don't
|
|
||||||
// support storing multiple equivalent values.
|
|
||||||
package btree
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"sort"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Item represents a single object in the tree.
|
|
||||||
type Item interface {
|
|
||||||
// Less tests whether the current item is less than the given argument.
|
|
||||||
//
|
|
||||||
// This must provide a strict weak ordering.
|
|
||||||
// If !a.Less(b) && !b.Less(a), we treat this to mean a == b (i.e. we can only
|
|
||||||
// hold one of either a or b in the tree).
|
|
||||||
Less(than Item) bool
|
|
||||||
}
|
|
||||||
|
|
||||||
const (
|
|
||||||
DefaultFreeListSize = 32
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
nilItems = make(items, 16)
|
|
||||||
nilChildren = make(children, 16)
|
|
||||||
)
|
|
||||||
|
|
||||||
// FreeList represents a free list of btree nodes. By default each
|
|
||||||
// BTree has its own FreeList, but multiple BTrees can share the same
|
|
||||||
// FreeList.
|
|
||||||
// Two Btrees using the same freelist are safe for concurrent write access.
|
|
||||||
type FreeList struct {
|
|
||||||
mu sync.Mutex
|
|
||||||
freelist []*node
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewFreeList creates a new free list.
|
|
||||||
// size is the maximum size of the returned free list.
|
|
||||||
func NewFreeList(size int) *FreeList {
|
|
||||||
return &FreeList{freelist: make([]*node, 0, size)}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (f *FreeList) newNode() (n *node) {
|
|
||||||
f.mu.Lock()
|
|
||||||
index := len(f.freelist) - 1
|
|
||||||
if index < 0 {
|
|
||||||
f.mu.Unlock()
|
|
||||||
return new(node)
|
|
||||||
}
|
|
||||||
n = f.freelist[index]
|
|
||||||
f.freelist[index] = nil
|
|
||||||
f.freelist = f.freelist[:index]
|
|
||||||
f.mu.Unlock()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// freeNode adds the given node to the list, returning true if it was added
|
|
||||||
// and false if it was discarded.
|
|
||||||
func (f *FreeList) freeNode(n *node) (out bool) {
|
|
||||||
f.mu.Lock()
|
|
||||||
if len(f.freelist) < cap(f.freelist) {
|
|
||||||
f.freelist = append(f.freelist, n)
|
|
||||||
out = true
|
|
||||||
}
|
|
||||||
f.mu.Unlock()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// ItemIterator allows callers of Ascend* to iterate in-order over portions of
|
|
||||||
// the tree. When this function returns false, iteration will stop and the
|
|
||||||
// associated Ascend* function will immediately return.
|
|
||||||
type ItemIterator func(i Item) bool
|
|
||||||
|
|
||||||
// New creates a new B-Tree with the given degree.
|
|
||||||
//
|
|
||||||
// New(2), for example, will create a 2-3-4 tree (each node contains 1-3 items
|
|
||||||
// and 2-4 children).
|
|
||||||
func New(degree int) *BTree {
|
|
||||||
return NewWithFreeList(degree, NewFreeList(DefaultFreeListSize))
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewWithFreeList creates a new B-Tree that uses the given node free list.
|
|
||||||
func NewWithFreeList(degree int, f *FreeList) *BTree {
|
|
||||||
if degree <= 1 {
|
|
||||||
panic("bad degree")
|
|
||||||
}
|
|
||||||
return &BTree{
|
|
||||||
degree: degree,
|
|
||||||
cow: ©OnWriteContext{freelist: f},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// items stores items in a node.
|
|
||||||
type items []Item
|
|
||||||
|
|
||||||
// insertAt inserts a value into the given index, pushing all subsequent values
|
|
||||||
// forward.
|
|
||||||
func (s *items) insertAt(index int, item Item) {
|
|
||||||
*s = append(*s, nil)
|
|
||||||
if index < len(*s) {
|
|
||||||
copy((*s)[index+1:], (*s)[index:])
|
|
||||||
}
|
|
||||||
(*s)[index] = item
|
|
||||||
}
|
|
||||||
|
|
||||||
// removeAt removes a value at a given index, pulling all subsequent values
|
|
||||||
// back.
|
|
||||||
func (s *items) removeAt(index int) Item {
|
|
||||||
item := (*s)[index]
|
|
||||||
copy((*s)[index:], (*s)[index+1:])
|
|
||||||
(*s)[len(*s)-1] = nil
|
|
||||||
*s = (*s)[:len(*s)-1]
|
|
||||||
return item
|
|
||||||
}
|
|
||||||
|
|
||||||
// pop removes and returns the last element in the list.
|
|
||||||
func (s *items) pop() (out Item) {
|
|
||||||
index := len(*s) - 1
|
|
||||||
out = (*s)[index]
|
|
||||||
(*s)[index] = nil
|
|
||||||
*s = (*s)[:index]
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// truncate truncates this instance at index so that it contains only the
|
|
||||||
// first index items. index must be less than or equal to length.
|
|
||||||
func (s *items) truncate(index int) {
|
|
||||||
var toClear items
|
|
||||||
*s, toClear = (*s)[:index], (*s)[index:]
|
|
||||||
for len(toClear) > 0 {
|
|
||||||
toClear = toClear[copy(toClear, nilItems):]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// find returns the index where the given item should be inserted into this
|
|
||||||
// list. 'found' is true if the item already exists in the list at the given
|
|
||||||
// index.
|
|
||||||
func (s items) find(item Item) (index int, found bool) {
|
|
||||||
i := sort.Search(len(s), func(i int) bool {
|
|
||||||
return item.Less(s[i])
|
|
||||||
})
|
|
||||||
if i > 0 && !s[i-1].Less(item) {
|
|
||||||
return i - 1, true
|
|
||||||
}
|
|
||||||
return i, false
|
|
||||||
}
|
|
||||||
|
|
||||||
// children stores child nodes in a node.
|
|
||||||
type children []*node
|
|
||||||
|
|
||||||
// insertAt inserts a value into the given index, pushing all subsequent values
|
|
||||||
// forward.
|
|
||||||
func (s *children) insertAt(index int, n *node) {
|
|
||||||
*s = append(*s, nil)
|
|
||||||
if index < len(*s) {
|
|
||||||
copy((*s)[index+1:], (*s)[index:])
|
|
||||||
}
|
|
||||||
(*s)[index] = n
|
|
||||||
}
|
|
||||||
|
|
||||||
// removeAt removes a value at a given index, pulling all subsequent values
|
|
||||||
// back.
|
|
||||||
func (s *children) removeAt(index int) *node {
|
|
||||||
n := (*s)[index]
|
|
||||||
copy((*s)[index:], (*s)[index+1:])
|
|
||||||
(*s)[len(*s)-1] = nil
|
|
||||||
*s = (*s)[:len(*s)-1]
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
|
|
||||||
// pop removes and returns the last element in the list.
|
|
||||||
func (s *children) pop() (out *node) {
|
|
||||||
index := len(*s) - 1
|
|
||||||
out = (*s)[index]
|
|
||||||
(*s)[index] = nil
|
|
||||||
*s = (*s)[:index]
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// truncate truncates this instance at index so that it contains only the
|
|
||||||
// first index children. index must be less than or equal to length.
|
|
||||||
func (s *children) truncate(index int) {
|
|
||||||
var toClear children
|
|
||||||
*s, toClear = (*s)[:index], (*s)[index:]
|
|
||||||
for len(toClear) > 0 {
|
|
||||||
toClear = toClear[copy(toClear, nilChildren):]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// node is an internal node in a tree.
|
|
||||||
//
|
|
||||||
// It must at all times maintain the invariant that either
|
|
||||||
// * len(children) == 0, len(items) unconstrained
|
|
||||||
// * len(children) == len(items) + 1
|
|
||||||
type node struct {
|
|
||||||
items items
|
|
||||||
children children
|
|
||||||
cow *copyOnWriteContext
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *node) mutableFor(cow *copyOnWriteContext) *node {
|
|
||||||
if n.cow == cow {
|
|
||||||
return n
|
|
||||||
}
|
|
||||||
out := cow.newNode()
|
|
||||||
if cap(out.items) >= len(n.items) {
|
|
||||||
out.items = out.items[:len(n.items)]
|
|
||||||
} else {
|
|
||||||
out.items = make(items, len(n.items), cap(n.items))
|
|
||||||
}
|
|
||||||
copy(out.items, n.items)
|
|
||||||
// Copy children
|
|
||||||
if cap(out.children) >= len(n.children) {
|
|
||||||
out.children = out.children[:len(n.children)]
|
|
||||||
} else {
|
|
||||||
out.children = make(children, len(n.children), cap(n.children))
|
|
||||||
}
|
|
||||||
copy(out.children, n.children)
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n *node) mutableChild(i int) *node {
|
|
||||||
c := n.children[i].mutableFor(n.cow)
|
|
||||||
n.children[i] = c
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// split splits the given node at the given index. The current node shrinks,
|
|
||||||
// and this function returns the item that existed at that index and a new node
|
|
||||||
// containing all items/children after it.
|
|
||||||
func (n *node) split(i int) (Item, *node) {
|
|
||||||
item := n.items[i]
|
|
||||||
next := n.cow.newNode()
|
|
||||||
next.items = append(next.items, n.items[i+1:]...)
|
|
||||||
n.items.truncate(i)
|
|
||||||
if len(n.children) > 0 {
|
|
||||||
next.children = append(next.children, n.children[i+1:]...)
|
|
||||||
n.children.truncate(i + 1)
|
|
||||||
}
|
|
||||||
return item, next
|
|
||||||
}
|
|
||||||
|
|
||||||
// maybeSplitChild checks if a child should be split, and if so splits it.
|
|
||||||
// Returns whether or not a split occurred.
|
|
||||||
func (n *node) maybeSplitChild(i, maxItems int) bool {
|
|
||||||
if len(n.children[i].items) < maxItems {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
first := n.mutableChild(i)
|
|
||||||
item, second := first.split(maxItems / 2)
|
|
||||||
n.items.insertAt(i, item)
|
|
||||||
n.children.insertAt(i+1, second)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// insert inserts an item into the subtree rooted at this node, making sure
|
|
||||||
// no nodes in the subtree exceed maxItems items. Should an equivalent item be
|
|
||||||
// be found/replaced by insert, it will be returned.
|
|
||||||
func (n *node) insert(item Item, maxItems int) Item {
|
|
||||||
i, found := n.items.find(item)
|
|
||||||
if found {
|
|
||||||
out := n.items[i]
|
|
||||||
n.items[i] = item
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
if len(n.children) == 0 {
|
|
||||||
n.items.insertAt(i, item)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if n.maybeSplitChild(i, maxItems) {
|
|
||||||
inTree := n.items[i]
|
|
||||||
switch {
|
|
||||||
case item.Less(inTree):
|
|
||||||
// no change, we want first split node
|
|
||||||
case inTree.Less(item):
|
|
||||||
i++ // we want second split node
|
|
||||||
default:
|
|
||||||
out := n.items[i]
|
|
||||||
n.items[i] = item
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return n.mutableChild(i).insert(item, maxItems)
|
|
||||||
}
|
|
||||||
|
|
||||||
// get finds the given key in the subtree and returns it.
|
|
||||||
func (n *node) get(key Item) Item {
|
|
||||||
i, found := n.items.find(key)
|
|
||||||
if found {
|
|
||||||
return n.items[i]
|
|
||||||
} else if len(n.children) > 0 {
|
|
||||||
return n.children[i].get(key)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// min returns the first item in the subtree.
|
|
||||||
func min(n *node) Item {
|
|
||||||
if n == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
for len(n.children) > 0 {
|
|
||||||
n = n.children[0]
|
|
||||||
}
|
|
||||||
if len(n.items) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return n.items[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
// max returns the last item in the subtree.
|
|
||||||
func max(n *node) Item {
|
|
||||||
if n == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
for len(n.children) > 0 {
|
|
||||||
n = n.children[len(n.children)-1]
|
|
||||||
}
|
|
||||||
if len(n.items) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return n.items[len(n.items)-1]
|
|
||||||
}
|
|
||||||
|
|
||||||
// toRemove details what item to remove in a node.remove call.
|
|
||||||
type toRemove int
|
|
||||||
|
|
||||||
const (
|
|
||||||
removeItem toRemove = iota // removes the given item
|
|
||||||
removeMin // removes smallest item in the subtree
|
|
||||||
removeMax // removes largest item in the subtree
|
|
||||||
)
|
|
||||||
|
|
||||||
// remove removes an item from the subtree rooted at this node.
|
|
||||||
func (n *node) remove(item Item, minItems int, typ toRemove) Item {
|
|
||||||
var i int
|
|
||||||
var found bool
|
|
||||||
switch typ {
|
|
||||||
case removeMax:
|
|
||||||
if len(n.children) == 0 {
|
|
||||||
return n.items.pop()
|
|
||||||
}
|
|
||||||
i = len(n.items)
|
|
||||||
case removeMin:
|
|
||||||
if len(n.children) == 0 {
|
|
||||||
return n.items.removeAt(0)
|
|
||||||
}
|
|
||||||
i = 0
|
|
||||||
case removeItem:
|
|
||||||
i, found = n.items.find(item)
|
|
||||||
if len(n.children) == 0 {
|
|
||||||
if found {
|
|
||||||
return n.items.removeAt(i)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
panic("invalid type")
|
|
||||||
}
|
|
||||||
// If we get to here, we have children.
|
|
||||||
if len(n.children[i].items) <= minItems {
|
|
||||||
return n.growChildAndRemove(i, item, minItems, typ)
|
|
||||||
}
|
|
||||||
child := n.mutableChild(i)
|
|
||||||
// Either we had enough items to begin with, or we've done some
|
|
||||||
// merging/stealing, because we've got enough now and we're ready to return
|
|
||||||
// stuff.
|
|
||||||
if found {
|
|
||||||
// The item exists at index 'i', and the child we've selected can give us a
|
|
||||||
// predecessor, since if we've gotten here it's got > minItems items in it.
|
|
||||||
out := n.items[i]
|
|
||||||
// We use our special-case 'remove' call with typ=maxItem to pull the
|
|
||||||
// predecessor of item i (the rightmost leaf of our immediate left child)
|
|
||||||
// and set it into where we pulled the item from.
|
|
||||||
n.items[i] = child.remove(nil, minItems, removeMax)
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
// Final recursive call. Once we're here, we know that the item isn't in this
|
|
||||||
// node and that the child is big enough to remove from.
|
|
||||||
return child.remove(item, minItems, typ)
|
|
||||||
}
|
|
||||||
|
|
||||||
// growChildAndRemove grows child 'i' to make sure it's possible to remove an
|
|
||||||
// item from it while keeping it at minItems, then calls remove to actually
|
|
||||||
// remove it.
|
|
||||||
//
|
|
||||||
// Most documentation says we have to do two sets of special casing:
|
|
||||||
// 1) item is in this node
|
|
||||||
// 2) item is in child
|
|
||||||
// In both cases, we need to handle the two subcases:
|
|
||||||
// A) node has enough values that it can spare one
|
|
||||||
// B) node doesn't have enough values
|
|
||||||
// For the latter, we have to check:
|
|
||||||
// a) left sibling has node to spare
|
|
||||||
// b) right sibling has node to spare
|
|
||||||
// c) we must merge
|
|
||||||
// To simplify our code here, we handle cases #1 and #2 the same:
|
|
||||||
// If a node doesn't have enough items, we make sure it does (using a,b,c).
|
|
||||||
// We then simply redo our remove call, and the second time (regardless of
|
|
||||||
// whether we're in case 1 or 2), we'll have enough items and can guarantee
|
|
||||||
// that we hit case A.
|
|
||||||
func (n *node) growChildAndRemove(i int, item Item, minItems int, typ toRemove) Item {
|
|
||||||
if i > 0 && len(n.children[i-1].items) > minItems {
|
|
||||||
// Steal from left child
|
|
||||||
child := n.mutableChild(i)
|
|
||||||
stealFrom := n.mutableChild(i - 1)
|
|
||||||
stolenItem := stealFrom.items.pop()
|
|
||||||
child.items.insertAt(0, n.items[i-1])
|
|
||||||
n.items[i-1] = stolenItem
|
|
||||||
if len(stealFrom.children) > 0 {
|
|
||||||
child.children.insertAt(0, stealFrom.children.pop())
|
|
||||||
}
|
|
||||||
} else if i < len(n.items) && len(n.children[i+1].items) > minItems {
|
|
||||||
// steal from right child
|
|
||||||
child := n.mutableChild(i)
|
|
||||||
stealFrom := n.mutableChild(i + 1)
|
|
||||||
stolenItem := stealFrom.items.removeAt(0)
|
|
||||||
child.items = append(child.items, n.items[i])
|
|
||||||
n.items[i] = stolenItem
|
|
||||||
if len(stealFrom.children) > 0 {
|
|
||||||
child.children = append(child.children, stealFrom.children.removeAt(0))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if i >= len(n.items) {
|
|
||||||
i--
|
|
||||||
}
|
|
||||||
child := n.mutableChild(i)
|
|
||||||
// merge with right child
|
|
||||||
mergeItem := n.items.removeAt(i)
|
|
||||||
mergeChild := n.children.removeAt(i + 1)
|
|
||||||
child.items = append(child.items, mergeItem)
|
|
||||||
child.items = append(child.items, mergeChild.items...)
|
|
||||||
child.children = append(child.children, mergeChild.children...)
|
|
||||||
n.cow.freeNode(mergeChild)
|
|
||||||
}
|
|
||||||
return n.remove(item, minItems, typ)
|
|
||||||
}
|
|
||||||
|
|
||||||
type direction int
|
|
||||||
|
|
||||||
const (
|
|
||||||
descend = direction(-1)
|
|
||||||
ascend = direction(+1)
|
|
||||||
)
|
|
||||||
|
|
||||||
// iterate provides a simple method for iterating over elements in the tree.
|
|
||||||
//
|
|
||||||
// When ascending, the 'start' should be less than 'stop' and when descending,
|
|
||||||
// the 'start' should be greater than 'stop'. Setting 'includeStart' to true
|
|
||||||
// will force the iterator to include the first item when it equals 'start',
|
|
||||||
// thus creating a "greaterOrEqual" or "lessThanEqual" rather than just a
|
|
||||||
// "greaterThan" or "lessThan" queries.
|
|
||||||
func (n *node) iterate(dir direction, start, stop Item, includeStart bool, hit bool, iter ItemIterator) (bool, bool) {
|
|
||||||
var ok bool
|
|
||||||
switch dir {
|
|
||||||
case ascend:
|
|
||||||
for i := 0; i < len(n.items); i++ {
|
|
||||||
if start != nil && n.items[i].Less(start) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if len(n.children) > 0 {
|
|
||||||
if hit, ok = n.children[i].iterate(dir, start, stop, includeStart, hit, iter); !ok {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !includeStart && !hit && start != nil && !start.Less(n.items[i]) {
|
|
||||||
hit = true
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
hit = true
|
|
||||||
if stop != nil && !n.items[i].Less(stop) {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
if !iter(n.items[i]) {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(n.children) > 0 {
|
|
||||||
if hit, ok = n.children[len(n.children)-1].iterate(dir, start, stop, includeStart, hit, iter); !ok {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
case descend:
|
|
||||||
for i := len(n.items) - 1; i >= 0; i-- {
|
|
||||||
if start != nil && !n.items[i].Less(start) {
|
|
||||||
if !includeStart || hit || start.Less(n.items[i]) {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(n.children) > 0 {
|
|
||||||
if hit, ok = n.children[i+1].iterate(dir, start, stop, includeStart, hit, iter); !ok {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if stop != nil && !stop.Less(n.items[i]) {
|
|
||||||
return hit, false // continue
|
|
||||||
}
|
|
||||||
hit = true
|
|
||||||
if !iter(n.items[i]) {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(n.children) > 0 {
|
|
||||||
if hit, ok = n.children[0].iterate(dir, start, stop, includeStart, hit, iter); !ok {
|
|
||||||
return hit, false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return hit, true
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used for testing/debugging purposes.
|
|
||||||
func (n *node) print(w io.Writer, level int) {
|
|
||||||
fmt.Fprintf(w, "%sNODE:%v\n", strings.Repeat(" ", level), n.items)
|
|
||||||
for _, c := range n.children {
|
|
||||||
c.print(w, level+1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// BTree is an implementation of a B-Tree.
|
|
||||||
//
|
|
||||||
// BTree stores Item instances in an ordered structure, allowing easy insertion,
|
|
||||||
// removal, and iteration.
|
|
||||||
//
|
|
||||||
// Write operations are not safe for concurrent mutation by multiple
|
|
||||||
// goroutines, but Read operations are.
|
|
||||||
type BTree struct {
|
|
||||||
degree int
|
|
||||||
length int
|
|
||||||
root *node
|
|
||||||
cow *copyOnWriteContext
|
|
||||||
}
|
|
||||||
|
|
||||||
// copyOnWriteContext pointers determine node ownership... a tree with a write
|
|
||||||
// context equivalent to a node's write context is allowed to modify that node.
|
|
||||||
// A tree whose write context does not match a node's is not allowed to modify
|
|
||||||
// it, and must create a new, writable copy (IE: it's a Clone).
|
|
||||||
//
|
|
||||||
// When doing any write operation, we maintain the invariant that the current
|
|
||||||
// node's context is equal to the context of the tree that requested the write.
|
|
||||||
// We do this by, before we descend into any node, creating a copy with the
|
|
||||||
// correct context if the contexts don't match.
|
|
||||||
//
|
|
||||||
// Since the node we're currently visiting on any write has the requesting
|
|
||||||
// tree's context, that node is modifiable in place. Children of that node may
|
|
||||||
// not share context, but before we descend into them, we'll make a mutable
|
|
||||||
// copy.
|
|
||||||
type copyOnWriteContext struct {
|
|
||||||
freelist *FreeList
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clone clones the btree, lazily. Clone should not be called concurrently,
|
|
||||||
// but the original tree (t) and the new tree (t2) can be used concurrently
|
|
||||||
// once the Clone call completes.
|
|
||||||
//
|
|
||||||
// The internal tree structure of b is marked read-only and shared between t and
|
|
||||||
// t2. Writes to both t and t2 use copy-on-write logic, creating new nodes
|
|
||||||
// whenever one of b's original nodes would have been modified. Read operations
|
|
||||||
// should have no performance degredation. Write operations for both t and t2
|
|
||||||
// will initially experience minor slow-downs caused by additional allocs and
|
|
||||||
// copies due to the aforementioned copy-on-write logic, but should converge to
|
|
||||||
// the original performance characteristics of the original tree.
|
|
||||||
func (t *BTree) Clone() (t2 *BTree) {
|
|
||||||
// Create two entirely new copy-on-write contexts.
|
|
||||||
// This operation effectively creates three trees:
|
|
||||||
// the original, shared nodes (old b.cow)
|
|
||||||
// the new b.cow nodes
|
|
||||||
// the new out.cow nodes
|
|
||||||
cow1, cow2 := *t.cow, *t.cow
|
|
||||||
out := *t
|
|
||||||
t.cow = &cow1
|
|
||||||
out.cow = &cow2
|
|
||||||
return &out
|
|
||||||
}
|
|
||||||
|
|
||||||
// maxItems returns the max number of items to allow per node.
|
|
||||||
func (t *BTree) maxItems() int {
|
|
||||||
return t.degree*2 - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
// minItems returns the min number of items to allow per node (ignored for the
|
|
||||||
// root node).
|
|
||||||
func (t *BTree) minItems() int {
|
|
||||||
return t.degree - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *copyOnWriteContext) newNode() (n *node) {
|
|
||||||
n = c.freelist.newNode()
|
|
||||||
n.cow = c
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type freeType int
|
|
||||||
|
|
||||||
const (
|
|
||||||
ftFreelistFull freeType = iota // node was freed (available for GC, not stored in freelist)
|
|
||||||
ftStored // node was stored in the freelist for later use
|
|
||||||
ftNotOwned // node was ignored by COW, since it's owned by another one
|
|
||||||
)
|
|
||||||
|
|
||||||
// freeNode frees a node within a given COW context, if it's owned by that
|
|
||||||
// context. It returns what happened to the node (see freeType const
|
|
||||||
// documentation).
|
|
||||||
func (c *copyOnWriteContext) freeNode(n *node) freeType {
|
|
||||||
if n.cow == c {
|
|
||||||
// clear to allow GC
|
|
||||||
n.items.truncate(0)
|
|
||||||
n.children.truncate(0)
|
|
||||||
n.cow = nil
|
|
||||||
if c.freelist.freeNode(n) {
|
|
||||||
return ftStored
|
|
||||||
} else {
|
|
||||||
return ftFreelistFull
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return ftNotOwned
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReplaceOrInsert adds the given item to the tree. If an item in the tree
|
|
||||||
// already equals the given one, it is removed from the tree and returned.
|
|
||||||
// Otherwise, nil is returned.
|
|
||||||
//
|
|
||||||
// nil cannot be added to the tree (will panic).
|
|
||||||
func (t *BTree) ReplaceOrInsert(item Item) Item {
|
|
||||||
if item == nil {
|
|
||||||
panic("nil item being added to BTree")
|
|
||||||
}
|
|
||||||
if t.root == nil {
|
|
||||||
t.root = t.cow.newNode()
|
|
||||||
t.root.items = append(t.root.items, item)
|
|
||||||
t.length++
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
t.root = t.root.mutableFor(t.cow)
|
|
||||||
if len(t.root.items) >= t.maxItems() {
|
|
||||||
item2, second := t.root.split(t.maxItems() / 2)
|
|
||||||
oldroot := t.root
|
|
||||||
t.root = t.cow.newNode()
|
|
||||||
t.root.items = append(t.root.items, item2)
|
|
||||||
t.root.children = append(t.root.children, oldroot, second)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
out := t.root.insert(item, t.maxItems())
|
|
||||||
if out == nil {
|
|
||||||
t.length++
|
|
||||||
}
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete removes an item equal to the passed in item from the tree, returning
|
|
||||||
// it. If no such item exists, returns nil.
|
|
||||||
func (t *BTree) Delete(item Item) Item {
|
|
||||||
return t.deleteItem(item, removeItem)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteMin removes the smallest item in the tree and returns it.
|
|
||||||
// If no such item exists, returns nil.
|
|
||||||
func (t *BTree) DeleteMin() Item {
|
|
||||||
return t.deleteItem(nil, removeMin)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DeleteMax removes the largest item in the tree and returns it.
|
|
||||||
// If no such item exists, returns nil.
|
|
||||||
func (t *BTree) DeleteMax() Item {
|
|
||||||
return t.deleteItem(nil, removeMax)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (t *BTree) deleteItem(item Item, typ toRemove) Item {
|
|
||||||
if t.root == nil || len(t.root.items) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
t.root = t.root.mutableFor(t.cow)
|
|
||||||
out := t.root.remove(item, t.minItems(), typ)
|
|
||||||
if len(t.root.items) == 0 && len(t.root.children) > 0 {
|
|
||||||
oldroot := t.root
|
|
||||||
t.root = t.root.children[0]
|
|
||||||
t.cow.freeNode(oldroot)
|
|
||||||
}
|
|
||||||
if out != nil {
|
|
||||||
t.length--
|
|
||||||
}
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
// AscendRange calls the iterator for every value in the tree within the range
|
|
||||||
// [greaterOrEqual, lessThan), until iterator returns false.
|
|
||||||
func (t *BTree) AscendRange(greaterOrEqual, lessThan Item, iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(ascend, greaterOrEqual, lessThan, true, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AscendLessThan calls the iterator for every value in the tree within the range
|
|
||||||
// [first, pivot), until iterator returns false.
|
|
||||||
func (t *BTree) AscendLessThan(pivot Item, iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(ascend, nil, pivot, false, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AscendGreaterOrEqual calls the iterator for every value in the tree within
|
|
||||||
// the range [pivot, last], until iterator returns false.
|
|
||||||
func (t *BTree) AscendGreaterOrEqual(pivot Item, iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(ascend, pivot, nil, true, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ascend calls the iterator for every value in the tree within the range
|
|
||||||
// [first, last], until iterator returns false.
|
|
||||||
func (t *BTree) Ascend(iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(ascend, nil, nil, false, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DescendRange calls the iterator for every value in the tree within the range
|
|
||||||
// [lessOrEqual, greaterThan), until iterator returns false.
|
|
||||||
func (t *BTree) DescendRange(lessOrEqual, greaterThan Item, iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(descend, lessOrEqual, greaterThan, true, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DescendLessOrEqual calls the iterator for every value in the tree within the range
|
|
||||||
// [pivot, first], until iterator returns false.
|
|
||||||
func (t *BTree) DescendLessOrEqual(pivot Item, iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(descend, pivot, nil, true, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DescendGreaterThan calls the iterator for every value in the tree within
|
|
||||||
// the range (pivot, last], until iterator returns false.
|
|
||||||
func (t *BTree) DescendGreaterThan(pivot Item, iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(descend, nil, pivot, false, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Descend calls the iterator for every value in the tree within the range
|
|
||||||
// [last, first], until iterator returns false.
|
|
||||||
func (t *BTree) Descend(iterator ItemIterator) {
|
|
||||||
if t.root == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
t.root.iterate(descend, nil, nil, false, false, iterator)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get looks for the key item in the tree, returning it. It returns nil if
|
|
||||||
// unable to find that item.
|
|
||||||
func (t *BTree) Get(key Item) Item {
|
|
||||||
if t.root == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return t.root.get(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Min returns the smallest item in the tree, or nil if the tree is empty.
|
|
||||||
func (t *BTree) Min() Item {
|
|
||||||
return min(t.root)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Max returns the largest item in the tree, or nil if the tree is empty.
|
|
||||||
func (t *BTree) Max() Item {
|
|
||||||
return max(t.root)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Has returns true if the given key is in the tree.
|
|
||||||
func (t *BTree) Has(key Item) bool {
|
|
||||||
return t.Get(key) != nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Len returns the number of items currently in the tree.
|
|
||||||
func (t *BTree) Len() int {
|
|
||||||
return t.length
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear removes all items from the btree. If addNodesToFreelist is true,
|
|
||||||
// t's nodes are added to its freelist as part of this call, until the freelist
|
|
||||||
// is full. Otherwise, the root node is simply dereferenced and the subtree
|
|
||||||
// left to Go's normal GC processes.
|
|
||||||
//
|
|
||||||
// This can be much faster
|
|
||||||
// than calling Delete on all elements, because that requires finding/removing
|
|
||||||
// each element in the tree and updating the tree accordingly. It also is
|
|
||||||
// somewhat faster than creating a new tree to replace the old one, because
|
|
||||||
// nodes from the old tree are reclaimed into the freelist for use by the new
|
|
||||||
// one, instead of being lost to the garbage collector.
|
|
||||||
//
|
|
||||||
// This call takes:
|
|
||||||
// O(1): when addNodesToFreelist is false, this is a single operation.
|
|
||||||
// O(1): when the freelist is already full, it breaks out immediately
|
|
||||||
// O(freelist size): when the freelist is empty and the nodes are all owned
|
|
||||||
// by this tree, nodes are added to the freelist until full.
|
|
||||||
// O(tree size): when all nodes are owned by another tree, all nodes are
|
|
||||||
// iterated over looking for nodes to add to the freelist, and due to
|
|
||||||
// ownership, none are.
|
|
||||||
func (t *BTree) Clear(addNodesToFreelist bool) {
|
|
||||||
if t.root != nil && addNodesToFreelist {
|
|
||||||
t.root.reset(t.cow)
|
|
||||||
}
|
|
||||||
t.root, t.length = nil, 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// reset returns a subtree to the freelist. It breaks out immediately if the
|
|
||||||
// freelist is full, since the only benefit of iterating is to fill that
|
|
||||||
// freelist up. Returns true if parent reset call should continue.
|
|
||||||
func (n *node) reset(c *copyOnWriteContext) bool {
|
|
||||||
for _, child := range n.children {
|
|
||||||
if !child.reset(c) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return c.freeNode(n) != ftFreelistFull
|
|
||||||
}
|
|
||||||
|
|
||||||
// Int implements the Item interface for integers.
|
|
||||||
type Int int
|
|
||||||
|
|
||||||
// Less returns true if int(a) < int(b).
|
|
||||||
func (a Int) Less(b Item) bool {
|
|
||||||
return a < b.(Int)
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
Copyright © 2012 Greg Jones (greg.jones@gmail.com)
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -1,25 +0,0 @@
|
||||||
httpcache
|
|
||||||
=========
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/gregjones/httpcache.svg?branch=master)](https://travis-ci.org/gregjones/httpcache) [![GoDoc](https://godoc.org/github.com/gregjones/httpcache?status.svg)](https://godoc.org/github.com/gregjones/httpcache)
|
|
||||||
|
|
||||||
Package httpcache provides a http.RoundTripper implementation that works as a mostly [RFC 7234](https://tools.ietf.org/html/rfc7234) compliant cache for http responses.
|
|
||||||
|
|
||||||
It is only suitable for use as a 'private' cache (i.e. for a web-browser or an API-client and not for a shared proxy).
|
|
||||||
|
|
||||||
Cache Backends
|
|
||||||
--------------
|
|
||||||
|
|
||||||
- The built-in 'memory' cache stores responses in an in-memory map.
|
|
||||||
- [`github.com/gregjones/httpcache/diskcache`](https://github.com/gregjones/httpcache/tree/master/diskcache) provides a filesystem-backed cache using the [diskv](https://github.com/peterbourgon/diskv) library.
|
|
||||||
- [`github.com/gregjones/httpcache/memcache`](https://github.com/gregjones/httpcache/tree/master/memcache) provides memcache implementations, for both App Engine and 'normal' memcache servers.
|
|
||||||
- [`sourcegraph.com/sourcegraph/s3cache`](https://sourcegraph.com/github.com/sourcegraph/s3cache) uses Amazon S3 for storage.
|
|
||||||
- [`github.com/gregjones/httpcache/leveldbcache`](https://github.com/gregjones/httpcache/tree/master/leveldbcache) provides a filesystem-backed cache using [leveldb](https://github.com/syndtr/goleveldb/leveldb).
|
|
||||||
- [`github.com/die-net/lrucache`](https://github.com/die-net/lrucache) provides an in-memory cache that will evict least-recently used entries.
|
|
||||||
- [`github.com/die-net/lrucache/twotier`](https://github.com/die-net/lrucache/tree/master/twotier) allows caches to be combined, for example to use lrucache above with a persistent disk-cache.
|
|
||||||
- [`github.com/birkelund/boltdbcache`](https://github.com/birkelund/boltdbcache) provides a BoltDB implementation (based on the [bbolt](https://github.com/coreos/bbolt) fork).
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
- [MIT License](LICENSE.txt)
|
|
|
@ -1,61 +0,0 @@
|
||||||
// Package diskcache provides an implementation of httpcache.Cache that uses the diskv package
|
|
||||||
// to supplement an in-memory map with persistent storage
|
|
||||||
//
|
|
||||||
package diskcache
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"crypto/md5"
|
|
||||||
"encoding/hex"
|
|
||||||
"github.com/peterbourgon/diskv"
|
|
||||||
"io"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Cache is an implementation of httpcache.Cache that supplements the in-memory map with persistent storage
|
|
||||||
type Cache struct {
|
|
||||||
d *diskv.Diskv
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get returns the response corresponding to key if present
|
|
||||||
func (c *Cache) Get(key string) (resp []byte, ok bool) {
|
|
||||||
key = keyToFilename(key)
|
|
||||||
resp, err := c.d.Read(key)
|
|
||||||
if err != nil {
|
|
||||||
return []byte{}, false
|
|
||||||
}
|
|
||||||
return resp, true
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set saves a response to the cache as key
|
|
||||||
func (c *Cache) Set(key string, resp []byte) {
|
|
||||||
key = keyToFilename(key)
|
|
||||||
c.d.WriteStream(key, bytes.NewReader(resp), true)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete removes the response with key from the cache
|
|
||||||
func (c *Cache) Delete(key string) {
|
|
||||||
key = keyToFilename(key)
|
|
||||||
c.d.Erase(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
func keyToFilename(key string) string {
|
|
||||||
h := md5.New()
|
|
||||||
io.WriteString(h, key)
|
|
||||||
return hex.EncodeToString(h.Sum(nil))
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns a new Cache that will store files in basePath
|
|
||||||
func New(basePath string) *Cache {
|
|
||||||
return &Cache{
|
|
||||||
d: diskv.New(diskv.Options{
|
|
||||||
BasePath: basePath,
|
|
||||||
CacheSizeMax: 100 * 1024 * 1024, // 100MB
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewWithDiskv returns a new Cache using the provided Diskv as underlying
|
|
||||||
// storage.
|
|
||||||
func NewWithDiskv(d *diskv.Diskv) *Cache {
|
|
||||||
return &Cache{d}
|
|
||||||
}
|
|
|
@ -1,551 +0,0 @@
|
||||||
// Package httpcache provides a http.RoundTripper implementation that works as a
|
|
||||||
// mostly RFC-compliant cache for http responses.
|
|
||||||
//
|
|
||||||
// It is only suitable for use as a 'private' cache (i.e. for a web-browser or an API-client
|
|
||||||
// and not for a shared proxy).
|
|
||||||
//
|
|
||||||
package httpcache
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bufio"
|
|
||||||
"bytes"
|
|
||||||
"errors"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"net/http"
|
|
||||||
"net/http/httputil"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
stale = iota
|
|
||||||
fresh
|
|
||||||
transparent
|
|
||||||
// XFromCache is the header added to responses that are returned from the cache
|
|
||||||
XFromCache = "X-From-Cache"
|
|
||||||
)
|
|
||||||
|
|
||||||
// A Cache interface is used by the Transport to store and retrieve responses.
|
|
||||||
type Cache interface {
|
|
||||||
// Get returns the []byte representation of a cached response and a bool
|
|
||||||
// set to true if the value isn't empty
|
|
||||||
Get(key string) (responseBytes []byte, ok bool)
|
|
||||||
// Set stores the []byte representation of a response against a key
|
|
||||||
Set(key string, responseBytes []byte)
|
|
||||||
// Delete removes the value associated with the key
|
|
||||||
Delete(key string)
|
|
||||||
}
|
|
||||||
|
|
||||||
// cacheKey returns the cache key for req.
|
|
||||||
func cacheKey(req *http.Request) string {
|
|
||||||
if req.Method == http.MethodGet {
|
|
||||||
return req.URL.String()
|
|
||||||
} else {
|
|
||||||
return req.Method + " " + req.URL.String()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// CachedResponse returns the cached http.Response for req if present, and nil
|
|
||||||
// otherwise.
|
|
||||||
func CachedResponse(c Cache, req *http.Request) (resp *http.Response, err error) {
|
|
||||||
cachedVal, ok := c.Get(cacheKey(req))
|
|
||||||
if !ok {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
b := bytes.NewBuffer(cachedVal)
|
|
||||||
return http.ReadResponse(bufio.NewReader(b), req)
|
|
||||||
}
|
|
||||||
|
|
||||||
// MemoryCache is an implemtation of Cache that stores responses in an in-memory map.
|
|
||||||
type MemoryCache struct {
|
|
||||||
mu sync.RWMutex
|
|
||||||
items map[string][]byte
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get returns the []byte representation of the response and true if present, false if not
|
|
||||||
func (c *MemoryCache) Get(key string) (resp []byte, ok bool) {
|
|
||||||
c.mu.RLock()
|
|
||||||
resp, ok = c.items[key]
|
|
||||||
c.mu.RUnlock()
|
|
||||||
return resp, ok
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set saves response resp to the cache with key
|
|
||||||
func (c *MemoryCache) Set(key string, resp []byte) {
|
|
||||||
c.mu.Lock()
|
|
||||||
c.items[key] = resp
|
|
||||||
c.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete removes key from the cache
|
|
||||||
func (c *MemoryCache) Delete(key string) {
|
|
||||||
c.mu.Lock()
|
|
||||||
delete(c.items, key)
|
|
||||||
c.mu.Unlock()
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMemoryCache returns a new Cache that will store items in an in-memory map
|
|
||||||
func NewMemoryCache() *MemoryCache {
|
|
||||||
c := &MemoryCache{items: map[string][]byte{}}
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// Transport is an implementation of http.RoundTripper that will return values from a cache
|
|
||||||
// where possible (avoiding a network request) and will additionally add validators (etag/if-modified-since)
|
|
||||||
// to repeated requests allowing servers to return 304 / Not Modified
|
|
||||||
type Transport struct {
|
|
||||||
// The RoundTripper interface actually used to make requests
|
|
||||||
// If nil, http.DefaultTransport is used
|
|
||||||
Transport http.RoundTripper
|
|
||||||
Cache Cache
|
|
||||||
// If true, responses returned from the cache will be given an extra header, X-From-Cache
|
|
||||||
MarkCachedResponses bool
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewTransport returns a new Transport with the
|
|
||||||
// provided Cache implementation and MarkCachedResponses set to true
|
|
||||||
func NewTransport(c Cache) *Transport {
|
|
||||||
return &Transport{Cache: c, MarkCachedResponses: true}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Client returns an *http.Client that caches responses.
|
|
||||||
func (t *Transport) Client() *http.Client {
|
|
||||||
return &http.Client{Transport: t}
|
|
||||||
}
|
|
||||||
|
|
||||||
// varyMatches will return false unless all of the cached values for the headers listed in Vary
|
|
||||||
// match the new request
|
|
||||||
func varyMatches(cachedResp *http.Response, req *http.Request) bool {
|
|
||||||
for _, header := range headerAllCommaSepValues(cachedResp.Header, "vary") {
|
|
||||||
header = http.CanonicalHeaderKey(header)
|
|
||||||
if header != "" && req.Header.Get(header) != cachedResp.Header.Get("X-Varied-"+header) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// RoundTrip takes a Request and returns a Response
|
|
||||||
//
|
|
||||||
// If there is a fresh Response already in cache, then it will be returned without connecting to
|
|
||||||
// the server.
|
|
||||||
//
|
|
||||||
// If there is a stale Response, then any validators it contains will be set on the new request
|
|
||||||
// to give the server a chance to respond with NotModified. If this happens, then the cached Response
|
|
||||||
// will be returned.
|
|
||||||
func (t *Transport) RoundTrip(req *http.Request) (resp *http.Response, err error) {
|
|
||||||
cacheKey := cacheKey(req)
|
|
||||||
cacheable := (req.Method == "GET" || req.Method == "HEAD") && req.Header.Get("range") == ""
|
|
||||||
var cachedResp *http.Response
|
|
||||||
if cacheable {
|
|
||||||
cachedResp, err = CachedResponse(t.Cache, req)
|
|
||||||
} else {
|
|
||||||
// Need to invalidate an existing value
|
|
||||||
t.Cache.Delete(cacheKey)
|
|
||||||
}
|
|
||||||
|
|
||||||
transport := t.Transport
|
|
||||||
if transport == nil {
|
|
||||||
transport = http.DefaultTransport
|
|
||||||
}
|
|
||||||
|
|
||||||
if cacheable && cachedResp != nil && err == nil {
|
|
||||||
if t.MarkCachedResponses {
|
|
||||||
cachedResp.Header.Set(XFromCache, "1")
|
|
||||||
}
|
|
||||||
|
|
||||||
if varyMatches(cachedResp, req) {
|
|
||||||
// Can only use cached value if the new request doesn't Vary significantly
|
|
||||||
freshness := getFreshness(cachedResp.Header, req.Header)
|
|
||||||
if freshness == fresh {
|
|
||||||
return cachedResp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
if freshness == stale {
|
|
||||||
var req2 *http.Request
|
|
||||||
// Add validators if caller hasn't already done so
|
|
||||||
etag := cachedResp.Header.Get("etag")
|
|
||||||
if etag != "" && req.Header.Get("etag") == "" {
|
|
||||||
req2 = cloneRequest(req)
|
|
||||||
req2.Header.Set("if-none-match", etag)
|
|
||||||
}
|
|
||||||
lastModified := cachedResp.Header.Get("last-modified")
|
|
||||||
if lastModified != "" && req.Header.Get("last-modified") == "" {
|
|
||||||
if req2 == nil {
|
|
||||||
req2 = cloneRequest(req)
|
|
||||||
}
|
|
||||||
req2.Header.Set("if-modified-since", lastModified)
|
|
||||||
}
|
|
||||||
if req2 != nil {
|
|
||||||
req = req2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
resp, err = transport.RoundTrip(req)
|
|
||||||
if err == nil && req.Method == "GET" && resp.StatusCode == http.StatusNotModified {
|
|
||||||
// Replace the 304 response with the one from cache, but update with some new headers
|
|
||||||
endToEndHeaders := getEndToEndHeaders(resp.Header)
|
|
||||||
for _, header := range endToEndHeaders {
|
|
||||||
cachedResp.Header[header] = resp.Header[header]
|
|
||||||
}
|
|
||||||
resp = cachedResp
|
|
||||||
} else if (err != nil || (cachedResp != nil && resp.StatusCode >= 500)) &&
|
|
||||||
req.Method == "GET" && canStaleOnError(cachedResp.Header, req.Header) {
|
|
||||||
// In case of transport failure and stale-if-error activated, returns cached content
|
|
||||||
// when available
|
|
||||||
return cachedResp, nil
|
|
||||||
} else {
|
|
||||||
if err != nil || resp.StatusCode != http.StatusOK {
|
|
||||||
t.Cache.Delete(cacheKey)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
reqCacheControl := parseCacheControl(req.Header)
|
|
||||||
if _, ok := reqCacheControl["only-if-cached"]; ok {
|
|
||||||
resp = newGatewayTimeoutResponse(req)
|
|
||||||
} else {
|
|
||||||
resp, err = transport.RoundTrip(req)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if cacheable && canStore(parseCacheControl(req.Header), parseCacheControl(resp.Header)) {
|
|
||||||
for _, varyKey := range headerAllCommaSepValues(resp.Header, "vary") {
|
|
||||||
varyKey = http.CanonicalHeaderKey(varyKey)
|
|
||||||
fakeHeader := "X-Varied-" + varyKey
|
|
||||||
reqValue := req.Header.Get(varyKey)
|
|
||||||
if reqValue != "" {
|
|
||||||
resp.Header.Set(fakeHeader, reqValue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
switch req.Method {
|
|
||||||
case "GET":
|
|
||||||
// Delay caching until EOF is reached.
|
|
||||||
resp.Body = &cachingReadCloser{
|
|
||||||
R: resp.Body,
|
|
||||||
OnEOF: func(r io.Reader) {
|
|
||||||
resp := *resp
|
|
||||||
resp.Body = ioutil.NopCloser(r)
|
|
||||||
respBytes, err := httputil.DumpResponse(&resp, true)
|
|
||||||
if err == nil {
|
|
||||||
t.Cache.Set(cacheKey, respBytes)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
respBytes, err := httputil.DumpResponse(resp, true)
|
|
||||||
if err == nil {
|
|
||||||
t.Cache.Set(cacheKey, respBytes)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
t.Cache.Delete(cacheKey)
|
|
||||||
}
|
|
||||||
return resp, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ErrNoDateHeader indicates that the HTTP headers contained no Date header.
|
|
||||||
var ErrNoDateHeader = errors.New("no Date header")
|
|
||||||
|
|
||||||
// Date parses and returns the value of the Date header.
|
|
||||||
func Date(respHeaders http.Header) (date time.Time, err error) {
|
|
||||||
dateHeader := respHeaders.Get("date")
|
|
||||||
if dateHeader == "" {
|
|
||||||
err = ErrNoDateHeader
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return time.Parse(time.RFC1123, dateHeader)
|
|
||||||
}
|
|
||||||
|
|
||||||
type realClock struct{}
|
|
||||||
|
|
||||||
func (c *realClock) since(d time.Time) time.Duration {
|
|
||||||
return time.Since(d)
|
|
||||||
}
|
|
||||||
|
|
||||||
type timer interface {
|
|
||||||
since(d time.Time) time.Duration
|
|
||||||
}
|
|
||||||
|
|
||||||
var clock timer = &realClock{}
|
|
||||||
|
|
||||||
// getFreshness will return one of fresh/stale/transparent based on the cache-control
|
|
||||||
// values of the request and the response
|
|
||||||
//
|
|
||||||
// fresh indicates the response can be returned
|
|
||||||
// stale indicates that the response needs validating before it is returned
|
|
||||||
// transparent indicates the response should not be used to fulfil the request
|
|
||||||
//
|
|
||||||
// Because this is only a private cache, 'public' and 'private' in cache-control aren't
|
|
||||||
// signficant. Similarly, smax-age isn't used.
|
|
||||||
func getFreshness(respHeaders, reqHeaders http.Header) (freshness int) {
|
|
||||||
respCacheControl := parseCacheControl(respHeaders)
|
|
||||||
reqCacheControl := parseCacheControl(reqHeaders)
|
|
||||||
if _, ok := reqCacheControl["no-cache"]; ok {
|
|
||||||
return transparent
|
|
||||||
}
|
|
||||||
if _, ok := respCacheControl["no-cache"]; ok {
|
|
||||||
return stale
|
|
||||||
}
|
|
||||||
if _, ok := reqCacheControl["only-if-cached"]; ok {
|
|
||||||
return fresh
|
|
||||||
}
|
|
||||||
|
|
||||||
date, err := Date(respHeaders)
|
|
||||||
if err != nil {
|
|
||||||
return stale
|
|
||||||
}
|
|
||||||
currentAge := clock.since(date)
|
|
||||||
|
|
||||||
var lifetime time.Duration
|
|
||||||
var zeroDuration time.Duration
|
|
||||||
|
|
||||||
// If a response includes both an Expires header and a max-age directive,
|
|
||||||
// the max-age directive overrides the Expires header, even if the Expires header is more restrictive.
|
|
||||||
if maxAge, ok := respCacheControl["max-age"]; ok {
|
|
||||||
lifetime, err = time.ParseDuration(maxAge + "s")
|
|
||||||
if err != nil {
|
|
||||||
lifetime = zeroDuration
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
expiresHeader := respHeaders.Get("Expires")
|
|
||||||
if expiresHeader != "" {
|
|
||||||
expires, err := time.Parse(time.RFC1123, expiresHeader)
|
|
||||||
if err != nil {
|
|
||||||
lifetime = zeroDuration
|
|
||||||
} else {
|
|
||||||
lifetime = expires.Sub(date)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if maxAge, ok := reqCacheControl["max-age"]; ok {
|
|
||||||
// the client is willing to accept a response whose age is no greater than the specified time in seconds
|
|
||||||
lifetime, err = time.ParseDuration(maxAge + "s")
|
|
||||||
if err != nil {
|
|
||||||
lifetime = zeroDuration
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if minfresh, ok := reqCacheControl["min-fresh"]; ok {
|
|
||||||
// the client wants a response that will still be fresh for at least the specified number of seconds.
|
|
||||||
minfreshDuration, err := time.ParseDuration(minfresh + "s")
|
|
||||||
if err == nil {
|
|
||||||
currentAge = time.Duration(currentAge + minfreshDuration)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if maxstale, ok := reqCacheControl["max-stale"]; ok {
|
|
||||||
// Indicates that the client is willing to accept a response that has exceeded its expiration time.
|
|
||||||
// If max-stale is assigned a value, then the client is willing to accept a response that has exceeded
|
|
||||||
// its expiration time by no more than the specified number of seconds.
|
|
||||||
// If no value is assigned to max-stale, then the client is willing to accept a stale response of any age.
|
|
||||||
//
|
|
||||||
// Responses served only because of a max-stale value are supposed to have a Warning header added to them,
|
|
||||||
// but that seems like a hassle, and is it actually useful? If so, then there needs to be a different
|
|
||||||
// return-value available here.
|
|
||||||
if maxstale == "" {
|
|
||||||
return fresh
|
|
||||||
}
|
|
||||||
maxstaleDuration, err := time.ParseDuration(maxstale + "s")
|
|
||||||
if err == nil {
|
|
||||||
currentAge = time.Duration(currentAge - maxstaleDuration)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if lifetime > currentAge {
|
|
||||||
return fresh
|
|
||||||
}
|
|
||||||
|
|
||||||
return stale
|
|
||||||
}
|
|
||||||
|
|
||||||
// Returns true if either the request or the response includes the stale-if-error
|
|
||||||
// cache control extension: https://tools.ietf.org/html/rfc5861
|
|
||||||
func canStaleOnError(respHeaders, reqHeaders http.Header) bool {
|
|
||||||
respCacheControl := parseCacheControl(respHeaders)
|
|
||||||
reqCacheControl := parseCacheControl(reqHeaders)
|
|
||||||
|
|
||||||
var err error
|
|
||||||
lifetime := time.Duration(-1)
|
|
||||||
|
|
||||||
if staleMaxAge, ok := respCacheControl["stale-if-error"]; ok {
|
|
||||||
if staleMaxAge != "" {
|
|
||||||
lifetime, err = time.ParseDuration(staleMaxAge + "s")
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if staleMaxAge, ok := reqCacheControl["stale-if-error"]; ok {
|
|
||||||
if staleMaxAge != "" {
|
|
||||||
lifetime, err = time.ParseDuration(staleMaxAge + "s")
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if lifetime >= 0 {
|
|
||||||
date, err := Date(respHeaders)
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
currentAge := clock.since(date)
|
|
||||||
if lifetime > currentAge {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func getEndToEndHeaders(respHeaders http.Header) []string {
|
|
||||||
// These headers are always hop-by-hop
|
|
||||||
hopByHopHeaders := map[string]struct{}{
|
|
||||||
"Connection": struct{}{},
|
|
||||||
"Keep-Alive": struct{}{},
|
|
||||||
"Proxy-Authenticate": struct{}{},
|
|
||||||
"Proxy-Authorization": struct{}{},
|
|
||||||
"Te": struct{}{},
|
|
||||||
"Trailers": struct{}{},
|
|
||||||
"Transfer-Encoding": struct{}{},
|
|
||||||
"Upgrade": struct{}{},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, extra := range strings.Split(respHeaders.Get("connection"), ",") {
|
|
||||||
// any header listed in connection, if present, is also considered hop-by-hop
|
|
||||||
if strings.Trim(extra, " ") != "" {
|
|
||||||
hopByHopHeaders[http.CanonicalHeaderKey(extra)] = struct{}{}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
endToEndHeaders := []string{}
|
|
||||||
for respHeader, _ := range respHeaders {
|
|
||||||
if _, ok := hopByHopHeaders[respHeader]; !ok {
|
|
||||||
endToEndHeaders = append(endToEndHeaders, respHeader)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return endToEndHeaders
|
|
||||||
}
|
|
||||||
|
|
||||||
func canStore(reqCacheControl, respCacheControl cacheControl) (canStore bool) {
|
|
||||||
if _, ok := respCacheControl["no-store"]; ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if _, ok := reqCacheControl["no-store"]; ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func newGatewayTimeoutResponse(req *http.Request) *http.Response {
|
|
||||||
var braw bytes.Buffer
|
|
||||||
braw.WriteString("HTTP/1.1 504 Gateway Timeout\r\n\r\n")
|
|
||||||
resp, err := http.ReadResponse(bufio.NewReader(&braw), req)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return resp
|
|
||||||
}
|
|
||||||
|
|
||||||
// cloneRequest returns a clone of the provided *http.Request.
|
|
||||||
// The clone is a shallow copy of the struct and its Header map.
|
|
||||||
// (This function copyright goauth2 authors: https://code.google.com/p/goauth2)
|
|
||||||
func cloneRequest(r *http.Request) *http.Request {
|
|
||||||
// shallow copy of the struct
|
|
||||||
r2 := new(http.Request)
|
|
||||||
*r2 = *r
|
|
||||||
// deep copy of the Header
|
|
||||||
r2.Header = make(http.Header)
|
|
||||||
for k, s := range r.Header {
|
|
||||||
r2.Header[k] = s
|
|
||||||
}
|
|
||||||
return r2
|
|
||||||
}
|
|
||||||
|
|
||||||
type cacheControl map[string]string
|
|
||||||
|
|
||||||
func parseCacheControl(headers http.Header) cacheControl {
|
|
||||||
cc := cacheControl{}
|
|
||||||
ccHeader := headers.Get("Cache-Control")
|
|
||||||
for _, part := range strings.Split(ccHeader, ",") {
|
|
||||||
part = strings.Trim(part, " ")
|
|
||||||
if part == "" {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if strings.ContainsRune(part, '=') {
|
|
||||||
keyval := strings.Split(part, "=")
|
|
||||||
cc[strings.Trim(keyval[0], " ")] = strings.Trim(keyval[1], ",")
|
|
||||||
} else {
|
|
||||||
cc[part] = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return cc
|
|
||||||
}
|
|
||||||
|
|
||||||
// headerAllCommaSepValues returns all comma-separated values (each
|
|
||||||
// with whitespace trimmed) for header name in headers. According to
|
|
||||||
// Section 4.2 of the HTTP/1.1 spec
|
|
||||||
// (http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2),
|
|
||||||
// values from multiple occurrences of a header should be concatenated, if
|
|
||||||
// the header's value is a comma-separated list.
|
|
||||||
func headerAllCommaSepValues(headers http.Header, name string) []string {
|
|
||||||
var vals []string
|
|
||||||
for _, val := range headers[http.CanonicalHeaderKey(name)] {
|
|
||||||
fields := strings.Split(val, ",")
|
|
||||||
for i, f := range fields {
|
|
||||||
fields[i] = strings.TrimSpace(f)
|
|
||||||
}
|
|
||||||
vals = append(vals, fields...)
|
|
||||||
}
|
|
||||||
return vals
|
|
||||||
}
|
|
||||||
|
|
||||||
// cachingReadCloser is a wrapper around ReadCloser R that calls OnEOF
|
|
||||||
// handler with a full copy of the content read from R when EOF is
|
|
||||||
// reached.
|
|
||||||
type cachingReadCloser struct {
|
|
||||||
// Underlying ReadCloser.
|
|
||||||
R io.ReadCloser
|
|
||||||
// OnEOF is called with a copy of the content of R when EOF is reached.
|
|
||||||
OnEOF func(io.Reader)
|
|
||||||
|
|
||||||
buf bytes.Buffer // buf stores a copy of the content of R.
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read reads the next len(p) bytes from R or until R is drained. The
|
|
||||||
// return value n is the number of bytes read. If R has no data to
|
|
||||||
// return, err is io.EOF and OnEOF is called with a full copy of what
|
|
||||||
// has been read so far.
|
|
||||||
func (r *cachingReadCloser) Read(p []byte) (n int, err error) {
|
|
||||||
n, err = r.R.Read(p)
|
|
||||||
r.buf.Write(p[:n])
|
|
||||||
if err == io.EOF {
|
|
||||||
r.OnEOF(bytes.NewReader(r.buf.Bytes()))
|
|
||||||
}
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *cachingReadCloser) Close() error {
|
|
||||||
return r.R.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewMemoryCacheTransport returns a new Transport using the in-memory cache implementation
|
|
||||||
func NewMemoryCacheTransport() *Transport {
|
|
||||||
c := NewMemoryCache()
|
|
||||||
t := NewTransport(c)
|
|
||||||
return t
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
Copyright (c) 2011-2012 Peter Bourgon
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
|
@ -1,141 +0,0 @@
|
||||||
# What is diskv?
|
|
||||||
|
|
||||||
Diskv (disk-vee) is a simple, persistent key-value store written in the Go
|
|
||||||
language. It starts with an incredibly simple API for storing arbitrary data on
|
|
||||||
a filesystem by key, and builds several layers of performance-enhancing
|
|
||||||
abstraction on top. The end result is a conceptually simple, but highly
|
|
||||||
performant, disk-backed storage system.
|
|
||||||
|
|
||||||
[![Build Status][1]][2]
|
|
||||||
|
|
||||||
[1]: https://drone.io/github.com/peterbourgon/diskv/status.png
|
|
||||||
[2]: https://drone.io/github.com/peterbourgon/diskv/latest
|
|
||||||
|
|
||||||
|
|
||||||
# Installing
|
|
||||||
|
|
||||||
Install [Go 1][3], either [from source][4] or [with a prepackaged binary][5].
|
|
||||||
Then,
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ go get github.com/peterbourgon/diskv
|
|
||||||
```
|
|
||||||
|
|
||||||
[3]: http://golang.org
|
|
||||||
[4]: http://golang.org/doc/install/source
|
|
||||||
[5]: http://golang.org/doc/install
|
|
||||||
|
|
||||||
|
|
||||||
# Usage
|
|
||||||
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"github.com/peterbourgon/diskv"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
// Simplest transform function: put all the data files into the base dir.
|
|
||||||
flatTransform := func(s string) []string { return []string{} }
|
|
||||||
|
|
||||||
// Initialize a new diskv store, rooted at "my-data-dir", with a 1MB cache.
|
|
||||||
d := diskv.New(diskv.Options{
|
|
||||||
BasePath: "my-data-dir",
|
|
||||||
Transform: flatTransform,
|
|
||||||
CacheSizeMax: 1024 * 1024,
|
|
||||||
})
|
|
||||||
|
|
||||||
// Write three bytes to the key "alpha".
|
|
||||||
key := "alpha"
|
|
||||||
d.Write(key, []byte{'1', '2', '3'})
|
|
||||||
|
|
||||||
// Read the value back out of the store.
|
|
||||||
value, _ := d.Read(key)
|
|
||||||
fmt.Printf("%v\n", value)
|
|
||||||
|
|
||||||
// Erase the key+value from the store (and the disk).
|
|
||||||
d.Erase(key)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
More complex examples can be found in the "examples" subdirectory.
|
|
||||||
|
|
||||||
|
|
||||||
# Theory
|
|
||||||
|
|
||||||
## Basic idea
|
|
||||||
|
|
||||||
At its core, diskv is a map of a key (`string`) to arbitrary data (`[]byte`).
|
|
||||||
The data is written to a single file on disk, with the same name as the key.
|
|
||||||
The key determines where that file will be stored, via a user-provided
|
|
||||||
`TransformFunc`, which takes a key and returns a slice (`[]string`)
|
|
||||||
corresponding to a path list where the key file will be stored. The simplest
|
|
||||||
TransformFunc,
|
|
||||||
|
|
||||||
```go
|
|
||||||
func SimpleTransform (key string) []string {
|
|
||||||
return []string{}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
will place all keys in the same, base directory. The design is inspired by
|
|
||||||
[Redis diskstore][6]; a TransformFunc which emulates the default diskstore
|
|
||||||
behavior is available in the content-addressable-storage example.
|
|
||||||
|
|
||||||
[6]: http://groups.google.com/group/redis-db/browse_thread/thread/d444bc786689bde9?pli=1
|
|
||||||
|
|
||||||
**Note** that your TransformFunc should ensure that one valid key doesn't
|
|
||||||
transform to a subset of another valid key. That is, it shouldn't be possible
|
|
||||||
to construct valid keys that resolve to directory names. As a concrete example,
|
|
||||||
if your TransformFunc splits on every 3 characters, then
|
|
||||||
|
|
||||||
```go
|
|
||||||
d.Write("abcabc", val) // OK: written to <base>/abc/abc/abcabc
|
|
||||||
d.Write("abc", val) // Error: attempted write to <base>/abc/abc, but it's a directory
|
|
||||||
```
|
|
||||||
|
|
||||||
This will be addressed in an upcoming version of diskv.
|
|
||||||
|
|
||||||
Probably the most important design principle behind diskv is that your data is
|
|
||||||
always flatly available on the disk. diskv will never do anything that would
|
|
||||||
prevent you from accessing, copying, backing up, or otherwise interacting with
|
|
||||||
your data via common UNIX commandline tools.
|
|
||||||
|
|
||||||
## Adding a cache
|
|
||||||
|
|
||||||
An in-memory caching layer is provided by combining the BasicStore
|
|
||||||
functionality with a simple map structure, and keeping it up-to-date as
|
|
||||||
appropriate. Since the map structure in Go is not threadsafe, it's combined
|
|
||||||
with a RWMutex to provide safe concurrent access.
|
|
||||||
|
|
||||||
## Adding order
|
|
||||||
|
|
||||||
diskv is a key-value store and therefore inherently unordered. An ordering
|
|
||||||
system can be injected into the store by passing something which satisfies the
|
|
||||||
diskv.Index interface. (A default implementation, using Google's
|
|
||||||
[btree][7] package, is provided.) Basically, diskv keeps an ordered (by a
|
|
||||||
user-provided Less function) index of the keys, which can be queried.
|
|
||||||
|
|
||||||
[7]: https://github.com/google/btree
|
|
||||||
|
|
||||||
## Adding compression
|
|
||||||
|
|
||||||
Something which implements the diskv.Compression interface may be passed
|
|
||||||
during store creation, so that all Writes and Reads are filtered through
|
|
||||||
a compression/decompression pipeline. Several default implementations,
|
|
||||||
using stdlib compression algorithms, are provided. Note that data is cached
|
|
||||||
compressed; the cost of decompression is borne with each Read.
|
|
||||||
|
|
||||||
## Streaming
|
|
||||||
|
|
||||||
diskv also now provides ReadStream and WriteStream methods, to allow very large
|
|
||||||
data to be handled efficiently.
|
|
||||||
|
|
||||||
|
|
||||||
# Future plans
|
|
||||||
|
|
||||||
* Needs plenty of robust testing: huge datasets, etc...
|
|
||||||
* More thorough benchmarking
|
|
||||||
* Your suggestions for use-cases I haven't thought of
|
|
|
@ -1,64 +0,0 @@
|
||||||
package diskv
|
|
||||||
|
|
||||||
import (
|
|
||||||
"compress/flate"
|
|
||||||
"compress/gzip"
|
|
||||||
"compress/zlib"
|
|
||||||
"io"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Compression is an interface that Diskv uses to implement compression of
|
|
||||||
// data. Writer takes a destination io.Writer and returns a WriteCloser that
|
|
||||||
// compresses all data written through it. Reader takes a source io.Reader and
|
|
||||||
// returns a ReadCloser that decompresses all data read through it. You may
|
|
||||||
// define these methods on your own type, or use one of the NewCompression
|
|
||||||
// helpers.
|
|
||||||
type Compression interface {
|
|
||||||
Writer(dst io.Writer) (io.WriteCloser, error)
|
|
||||||
Reader(src io.Reader) (io.ReadCloser, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewGzipCompression returns a Gzip-based Compression.
|
|
||||||
func NewGzipCompression() Compression {
|
|
||||||
return NewGzipCompressionLevel(flate.DefaultCompression)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewGzipCompressionLevel returns a Gzip-based Compression with the given level.
|
|
||||||
func NewGzipCompressionLevel(level int) Compression {
|
|
||||||
return &genericCompression{
|
|
||||||
wf: func(w io.Writer) (io.WriteCloser, error) { return gzip.NewWriterLevel(w, level) },
|
|
||||||
rf: func(r io.Reader) (io.ReadCloser, error) { return gzip.NewReader(r) },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewZlibCompression returns a Zlib-based Compression.
|
|
||||||
func NewZlibCompression() Compression {
|
|
||||||
return NewZlibCompressionLevel(flate.DefaultCompression)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewZlibCompressionLevel returns a Zlib-based Compression with the given level.
|
|
||||||
func NewZlibCompressionLevel(level int) Compression {
|
|
||||||
return NewZlibCompressionLevelDict(level, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewZlibCompressionLevelDict returns a Zlib-based Compression with the given
|
|
||||||
// level, based on the given dictionary.
|
|
||||||
func NewZlibCompressionLevelDict(level int, dict []byte) Compression {
|
|
||||||
return &genericCompression{
|
|
||||||
func(w io.Writer) (io.WriteCloser, error) { return zlib.NewWriterLevelDict(w, level, dict) },
|
|
||||||
func(r io.Reader) (io.ReadCloser, error) { return zlib.NewReaderDict(r, dict) },
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
type genericCompression struct {
|
|
||||||
wf func(w io.Writer) (io.WriteCloser, error)
|
|
||||||
rf func(r io.Reader) (io.ReadCloser, error)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *genericCompression) Writer(dst io.Writer) (io.WriteCloser, error) {
|
|
||||||
return g.wf(dst)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (g *genericCompression) Reader(src io.Reader) (io.ReadCloser, error) {
|
|
||||||
return g.rf(src)
|
|
||||||
}
|
|
|
@ -1,624 +0,0 @@
|
||||||
// Diskv (disk-vee) is a simple, persistent, key-value store.
|
|
||||||
// It stores all data flatly on the filesystem.
|
|
||||||
|
|
||||||
package diskv
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"strings"
|
|
||||||
"sync"
|
|
||||||
"syscall"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
defaultBasePath = "diskv"
|
|
||||||
defaultFilePerm os.FileMode = 0666
|
|
||||||
defaultPathPerm os.FileMode = 0777
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
defaultTransform = func(s string) []string { return []string{} }
|
|
||||||
errCanceled = errors.New("canceled")
|
|
||||||
errEmptyKey = errors.New("empty key")
|
|
||||||
errBadKey = errors.New("bad key")
|
|
||||||
errImportDirectory = errors.New("can't import a directory")
|
|
||||||
)
|
|
||||||
|
|
||||||
// TransformFunction transforms a key into a slice of strings, with each
|
|
||||||
// element in the slice representing a directory in the file path where the
|
|
||||||
// key's entry will eventually be stored.
|
|
||||||
//
|
|
||||||
// For example, if TransformFunc transforms "abcdef" to ["ab", "cde", "f"],
|
|
||||||
// the final location of the data file will be <basedir>/ab/cde/f/abcdef
|
|
||||||
type TransformFunction func(s string) []string
|
|
||||||
|
|
||||||
// Options define a set of properties that dictate Diskv behavior.
|
|
||||||
// All values are optional.
|
|
||||||
type Options struct {
|
|
||||||
BasePath string
|
|
||||||
Transform TransformFunction
|
|
||||||
CacheSizeMax uint64 // bytes
|
|
||||||
PathPerm os.FileMode
|
|
||||||
FilePerm os.FileMode
|
|
||||||
// If TempDir is set, it will enable filesystem atomic writes by
|
|
||||||
// writing temporary files to that location before being moved
|
|
||||||
// to BasePath.
|
|
||||||
// Note that TempDir MUST be on the same device/partition as
|
|
||||||
// BasePath.
|
|
||||||
TempDir string
|
|
||||||
|
|
||||||
Index Index
|
|
||||||
IndexLess LessFunction
|
|
||||||
|
|
||||||
Compression Compression
|
|
||||||
}
|
|
||||||
|
|
||||||
// Diskv implements the Diskv interface. You shouldn't construct Diskv
|
|
||||||
// structures directly; instead, use the New constructor.
|
|
||||||
type Diskv struct {
|
|
||||||
Options
|
|
||||||
mu sync.RWMutex
|
|
||||||
cache map[string][]byte
|
|
||||||
cacheSize uint64
|
|
||||||
}
|
|
||||||
|
|
||||||
// New returns an initialized Diskv structure, ready to use.
|
|
||||||
// If the path identified by baseDir already contains data,
|
|
||||||
// it will be accessible, but not yet cached.
|
|
||||||
func New(o Options) *Diskv {
|
|
||||||
if o.BasePath == "" {
|
|
||||||
o.BasePath = defaultBasePath
|
|
||||||
}
|
|
||||||
if o.Transform == nil {
|
|
||||||
o.Transform = defaultTransform
|
|
||||||
}
|
|
||||||
if o.PathPerm == 0 {
|
|
||||||
o.PathPerm = defaultPathPerm
|
|
||||||
}
|
|
||||||
if o.FilePerm == 0 {
|
|
||||||
o.FilePerm = defaultFilePerm
|
|
||||||
}
|
|
||||||
|
|
||||||
d := &Diskv{
|
|
||||||
Options: o,
|
|
||||||
cache: map[string][]byte{},
|
|
||||||
cacheSize: 0,
|
|
||||||
}
|
|
||||||
|
|
||||||
if d.Index != nil && d.IndexLess != nil {
|
|
||||||
d.Index.Initialize(d.IndexLess, d.Keys(nil))
|
|
||||||
}
|
|
||||||
|
|
||||||
return d
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write synchronously writes the key-value pair to disk, making it immediately
|
|
||||||
// available for reads. Write relies on the filesystem to perform an eventual
|
|
||||||
// sync to physical media. If you need stronger guarantees, see WriteStream.
|
|
||||||
func (d *Diskv) Write(key string, val []byte) error {
|
|
||||||
return d.WriteStream(key, bytes.NewBuffer(val), false)
|
|
||||||
}
|
|
||||||
|
|
||||||
// WriteStream writes the data represented by the io.Reader to the disk, under
|
|
||||||
// the provided key. If sync is true, WriteStream performs an explicit sync on
|
|
||||||
// the file as soon as it's written.
|
|
||||||
//
|
|
||||||
// bytes.Buffer provides io.Reader semantics for basic data types.
|
|
||||||
func (d *Diskv) WriteStream(key string, r io.Reader, sync bool) error {
|
|
||||||
if len(key) <= 0 {
|
|
||||||
return errEmptyKey
|
|
||||||
}
|
|
||||||
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
|
|
||||||
return d.writeStreamWithLock(key, r, sync)
|
|
||||||
}
|
|
||||||
|
|
||||||
// createKeyFileWithLock either creates the key file directly, or
|
|
||||||
// creates a temporary file in TempDir if it is set.
|
|
||||||
func (d *Diskv) createKeyFileWithLock(key string) (*os.File, error) {
|
|
||||||
if d.TempDir != "" {
|
|
||||||
if err := os.MkdirAll(d.TempDir, d.PathPerm); err != nil {
|
|
||||||
return nil, fmt.Errorf("temp mkdir: %s", err)
|
|
||||||
}
|
|
||||||
f, err := ioutil.TempFile(d.TempDir, "")
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("temp file: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := f.Chmod(d.FilePerm); err != nil {
|
|
||||||
f.Close() // error deliberately ignored
|
|
||||||
os.Remove(f.Name()) // error deliberately ignored
|
|
||||||
return nil, fmt.Errorf("chmod: %s", err)
|
|
||||||
}
|
|
||||||
return f, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
mode := os.O_WRONLY | os.O_CREATE | os.O_TRUNC // overwrite if exists
|
|
||||||
f, err := os.OpenFile(d.completeFilename(key), mode, d.FilePerm)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("open file: %s", err)
|
|
||||||
}
|
|
||||||
return f, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// writeStream does no input validation checking.
|
|
||||||
func (d *Diskv) writeStreamWithLock(key string, r io.Reader, sync bool) error {
|
|
||||||
if err := d.ensurePathWithLock(key); err != nil {
|
|
||||||
return fmt.Errorf("ensure path: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := d.createKeyFileWithLock(key)
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("create key file: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
wc := io.WriteCloser(&nopWriteCloser{f})
|
|
||||||
if d.Compression != nil {
|
|
||||||
wc, err = d.Compression.Writer(f)
|
|
||||||
if err != nil {
|
|
||||||
f.Close() // error deliberately ignored
|
|
||||||
os.Remove(f.Name()) // error deliberately ignored
|
|
||||||
return fmt.Errorf("compression writer: %s", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if _, err := io.Copy(wc, r); err != nil {
|
|
||||||
f.Close() // error deliberately ignored
|
|
||||||
os.Remove(f.Name()) // error deliberately ignored
|
|
||||||
return fmt.Errorf("i/o copy: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := wc.Close(); err != nil {
|
|
||||||
f.Close() // error deliberately ignored
|
|
||||||
os.Remove(f.Name()) // error deliberately ignored
|
|
||||||
return fmt.Errorf("compression close: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if sync {
|
|
||||||
if err := f.Sync(); err != nil {
|
|
||||||
f.Close() // error deliberately ignored
|
|
||||||
os.Remove(f.Name()) // error deliberately ignored
|
|
||||||
return fmt.Errorf("file sync: %s", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := f.Close(); err != nil {
|
|
||||||
return fmt.Errorf("file close: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if f.Name() != d.completeFilename(key) {
|
|
||||||
if err := os.Rename(f.Name(), d.completeFilename(key)); err != nil {
|
|
||||||
os.Remove(f.Name()) // error deliberately ignored
|
|
||||||
return fmt.Errorf("rename: %s", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if d.Index != nil {
|
|
||||||
d.Index.Insert(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
d.bustCacheWithLock(key) // cache only on read
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Import imports the source file into diskv under the destination key. If the
|
|
||||||
// destination key already exists, it's overwritten. If move is true, the
|
|
||||||
// source file is removed after a successful import.
|
|
||||||
func (d *Diskv) Import(srcFilename, dstKey string, move bool) (err error) {
|
|
||||||
if dstKey == "" {
|
|
||||||
return errEmptyKey
|
|
||||||
}
|
|
||||||
|
|
||||||
if fi, err := os.Stat(srcFilename); err != nil {
|
|
||||||
return err
|
|
||||||
} else if fi.IsDir() {
|
|
||||||
return errImportDirectory
|
|
||||||
}
|
|
||||||
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
|
|
||||||
if err := d.ensurePathWithLock(dstKey); err != nil {
|
|
||||||
return fmt.Errorf("ensure path: %s", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if move {
|
|
||||||
if err := syscall.Rename(srcFilename, d.completeFilename(dstKey)); err == nil {
|
|
||||||
d.bustCacheWithLock(dstKey)
|
|
||||||
return nil
|
|
||||||
} else if err != syscall.EXDEV {
|
|
||||||
// If it failed due to being on a different device, fall back to copying
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := os.Open(srcFilename)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer f.Close()
|
|
||||||
err = d.writeStreamWithLock(dstKey, f, false)
|
|
||||||
if err == nil && move {
|
|
||||||
err = os.Remove(srcFilename)
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read reads the key and returns the value.
|
|
||||||
// If the key is available in the cache, Read won't touch the disk.
|
|
||||||
// If the key is not in the cache, Read will have the side-effect of
|
|
||||||
// lazily caching the value.
|
|
||||||
func (d *Diskv) Read(key string) ([]byte, error) {
|
|
||||||
rc, err := d.ReadStream(key, false)
|
|
||||||
if err != nil {
|
|
||||||
return []byte{}, err
|
|
||||||
}
|
|
||||||
defer rc.Close()
|
|
||||||
return ioutil.ReadAll(rc)
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadStream reads the key and returns the value (data) as an io.ReadCloser.
|
|
||||||
// If the value is cached from a previous read, and direct is false,
|
|
||||||
// ReadStream will use the cached value. Otherwise, it will return a handle to
|
|
||||||
// the file on disk, and cache the data on read.
|
|
||||||
//
|
|
||||||
// If direct is true, ReadStream will lazily delete any cached value for the
|
|
||||||
// key, and return a direct handle to the file on disk.
|
|
||||||
//
|
|
||||||
// If compression is enabled, ReadStream taps into the io.Reader stream prior
|
|
||||||
// to decompression, and caches the compressed data.
|
|
||||||
func (d *Diskv) ReadStream(key string, direct bool) (io.ReadCloser, error) {
|
|
||||||
d.mu.RLock()
|
|
||||||
defer d.mu.RUnlock()
|
|
||||||
|
|
||||||
if val, ok := d.cache[key]; ok {
|
|
||||||
if !direct {
|
|
||||||
buf := bytes.NewBuffer(val)
|
|
||||||
if d.Compression != nil {
|
|
||||||
return d.Compression.Reader(buf)
|
|
||||||
}
|
|
||||||
return ioutil.NopCloser(buf), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
d.uncacheWithLock(key, uint64(len(val)))
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
return d.readWithRLock(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// read ignores the cache, and returns an io.ReadCloser representing the
|
|
||||||
// decompressed data for the given key, streamed from the disk. Clients should
|
|
||||||
// acquire a read lock on the Diskv and check the cache themselves before
|
|
||||||
// calling read.
|
|
||||||
func (d *Diskv) readWithRLock(key string) (io.ReadCloser, error) {
|
|
||||||
filename := d.completeFilename(key)
|
|
||||||
|
|
||||||
fi, err := os.Stat(filename)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if fi.IsDir() {
|
|
||||||
return nil, os.ErrNotExist
|
|
||||||
}
|
|
||||||
|
|
||||||
f, err := os.Open(filename)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var r io.Reader
|
|
||||||
if d.CacheSizeMax > 0 {
|
|
||||||
r = newSiphon(f, d, key)
|
|
||||||
} else {
|
|
||||||
r = &closingReader{f}
|
|
||||||
}
|
|
||||||
|
|
||||||
var rc = io.ReadCloser(ioutil.NopCloser(r))
|
|
||||||
if d.Compression != nil {
|
|
||||||
rc, err = d.Compression.Reader(r)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return rc, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// closingReader provides a Reader that automatically closes the
|
|
||||||
// embedded ReadCloser when it reaches EOF
|
|
||||||
type closingReader struct {
|
|
||||||
rc io.ReadCloser
|
|
||||||
}
|
|
||||||
|
|
||||||
func (cr closingReader) Read(p []byte) (int, error) {
|
|
||||||
n, err := cr.rc.Read(p)
|
|
||||||
if err == io.EOF {
|
|
||||||
if closeErr := cr.rc.Close(); closeErr != nil {
|
|
||||||
return n, closeErr // close must succeed for Read to succeed
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// siphon is like a TeeReader: it copies all data read through it to an
|
|
||||||
// internal buffer, and moves that buffer to the cache at EOF.
|
|
||||||
type siphon struct {
|
|
||||||
f *os.File
|
|
||||||
d *Diskv
|
|
||||||
key string
|
|
||||||
buf *bytes.Buffer
|
|
||||||
}
|
|
||||||
|
|
||||||
// newSiphon constructs a siphoning reader that represents the passed file.
|
|
||||||
// When a successful series of reads ends in an EOF, the siphon will write
|
|
||||||
// the buffered data to Diskv's cache under the given key.
|
|
||||||
func newSiphon(f *os.File, d *Diskv, key string) io.Reader {
|
|
||||||
return &siphon{
|
|
||||||
f: f,
|
|
||||||
d: d,
|
|
||||||
key: key,
|
|
||||||
buf: &bytes.Buffer{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read implements the io.Reader interface for siphon.
|
|
||||||
func (s *siphon) Read(p []byte) (int, error) {
|
|
||||||
n, err := s.f.Read(p)
|
|
||||||
|
|
||||||
if err == nil {
|
|
||||||
return s.buf.Write(p[0:n]) // Write must succeed for Read to succeed
|
|
||||||
}
|
|
||||||
|
|
||||||
if err == io.EOF {
|
|
||||||
s.d.cacheWithoutLock(s.key, s.buf.Bytes()) // cache may fail
|
|
||||||
if closeErr := s.f.Close(); closeErr != nil {
|
|
||||||
return n, closeErr // close must succeed for Read to succeed
|
|
||||||
}
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return n, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Erase synchronously erases the given key from the disk and the cache.
|
|
||||||
func (d *Diskv) Erase(key string) error {
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
|
|
||||||
d.bustCacheWithLock(key)
|
|
||||||
|
|
||||||
// erase from index
|
|
||||||
if d.Index != nil {
|
|
||||||
d.Index.Delete(key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// erase from disk
|
|
||||||
filename := d.completeFilename(key)
|
|
||||||
if s, err := os.Stat(filename); err == nil {
|
|
||||||
if s.IsDir() {
|
|
||||||
return errBadKey
|
|
||||||
}
|
|
||||||
if err = os.Remove(filename); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Return err as-is so caller can do os.IsNotExist(err).
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// clean up and return
|
|
||||||
d.pruneDirsWithLock(key)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// EraseAll will delete all of the data from the store, both in the cache and on
|
|
||||||
// the disk. Note that EraseAll doesn't distinguish diskv-related data from non-
|
|
||||||
// diskv-related data. Care should be taken to always specify a diskv base
|
|
||||||
// directory that is exclusively for diskv data.
|
|
||||||
func (d *Diskv) EraseAll() error {
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
d.cache = make(map[string][]byte)
|
|
||||||
d.cacheSize = 0
|
|
||||||
if d.TempDir != "" {
|
|
||||||
os.RemoveAll(d.TempDir) // errors ignored
|
|
||||||
}
|
|
||||||
return os.RemoveAll(d.BasePath)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Has returns true if the given key exists.
|
|
||||||
func (d *Diskv) Has(key string) bool {
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
|
|
||||||
if _, ok := d.cache[key]; ok {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
filename := d.completeFilename(key)
|
|
||||||
s, err := os.Stat(filename)
|
|
||||||
if err != nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if s.IsDir() {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keys returns a channel that will yield every key accessible by the store,
|
|
||||||
// in undefined order. If a cancel channel is provided, closing it will
|
|
||||||
// terminate and close the keys channel.
|
|
||||||
func (d *Diskv) Keys(cancel <-chan struct{}) <-chan string {
|
|
||||||
return d.KeysPrefix("", cancel)
|
|
||||||
}
|
|
||||||
|
|
||||||
// KeysPrefix returns a channel that will yield every key accessible by the
|
|
||||||
// store with the given prefix, in undefined order. If a cancel channel is
|
|
||||||
// provided, closing it will terminate and close the keys channel. If the
|
|
||||||
// provided prefix is the empty string, all keys will be yielded.
|
|
||||||
func (d *Diskv) KeysPrefix(prefix string, cancel <-chan struct{}) <-chan string {
|
|
||||||
var prepath string
|
|
||||||
if prefix == "" {
|
|
||||||
prepath = d.BasePath
|
|
||||||
} else {
|
|
||||||
prepath = d.pathFor(prefix)
|
|
||||||
}
|
|
||||||
c := make(chan string)
|
|
||||||
go func() {
|
|
||||||
filepath.Walk(prepath, walker(c, prefix, cancel))
|
|
||||||
close(c)
|
|
||||||
}()
|
|
||||||
return c
|
|
||||||
}
|
|
||||||
|
|
||||||
// walker returns a function which satisfies the filepath.WalkFunc interface.
|
|
||||||
// It sends every non-directory file entry down the channel c.
|
|
||||||
func walker(c chan<- string, prefix string, cancel <-chan struct{}) filepath.WalkFunc {
|
|
||||||
return func(path string, info os.FileInfo, err error) error {
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if info.IsDir() || !strings.HasPrefix(info.Name(), prefix) {
|
|
||||||
return nil // "pass"
|
|
||||||
}
|
|
||||||
|
|
||||||
select {
|
|
||||||
case c <- info.Name():
|
|
||||||
case <-cancel:
|
|
||||||
return errCanceled
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// pathFor returns the absolute path for location on the filesystem where the
|
|
||||||
// data for the given key will be stored.
|
|
||||||
func (d *Diskv) pathFor(key string) string {
|
|
||||||
return filepath.Join(d.BasePath, filepath.Join(d.Transform(key)...))
|
|
||||||
}
|
|
||||||
|
|
||||||
// ensurePathWithLock is a helper function that generates all necessary
|
|
||||||
// directories on the filesystem for the given key.
|
|
||||||
func (d *Diskv) ensurePathWithLock(key string) error {
|
|
||||||
return os.MkdirAll(d.pathFor(key), d.PathPerm)
|
|
||||||
}
|
|
||||||
|
|
||||||
// completeFilename returns the absolute path to the file for the given key.
|
|
||||||
func (d *Diskv) completeFilename(key string) string {
|
|
||||||
return filepath.Join(d.pathFor(key), key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// cacheWithLock attempts to cache the given key-value pair in the store's
|
|
||||||
// cache. It can fail if the value is larger than the cache's maximum size.
|
|
||||||
func (d *Diskv) cacheWithLock(key string, val []byte) error {
|
|
||||||
valueSize := uint64(len(val))
|
|
||||||
if err := d.ensureCacheSpaceWithLock(valueSize); err != nil {
|
|
||||||
return fmt.Errorf("%s; not caching", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// be very strict about memory guarantees
|
|
||||||
if (d.cacheSize + valueSize) > d.CacheSizeMax {
|
|
||||||
panic(fmt.Sprintf("failed to make room for value (%d/%d)", valueSize, d.CacheSizeMax))
|
|
||||||
}
|
|
||||||
|
|
||||||
d.cache[key] = val
|
|
||||||
d.cacheSize += valueSize
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// cacheWithoutLock acquires the store's (write) mutex and calls cacheWithLock.
|
|
||||||
func (d *Diskv) cacheWithoutLock(key string, val []byte) error {
|
|
||||||
d.mu.Lock()
|
|
||||||
defer d.mu.Unlock()
|
|
||||||
return d.cacheWithLock(key, val)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *Diskv) bustCacheWithLock(key string) {
|
|
||||||
if val, ok := d.cache[key]; ok {
|
|
||||||
d.uncacheWithLock(key, uint64(len(val)))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *Diskv) uncacheWithLock(key string, sz uint64) {
|
|
||||||
d.cacheSize -= sz
|
|
||||||
delete(d.cache, key)
|
|
||||||
}
|
|
||||||
|
|
||||||
// pruneDirsWithLock deletes empty directories in the path walk leading to the
|
|
||||||
// key k. Typically this function is called after an Erase is made.
|
|
||||||
func (d *Diskv) pruneDirsWithLock(key string) error {
|
|
||||||
pathlist := d.Transform(key)
|
|
||||||
for i := range pathlist {
|
|
||||||
dir := filepath.Join(d.BasePath, filepath.Join(pathlist[:len(pathlist)-i]...))
|
|
||||||
|
|
||||||
// thanks to Steven Blenkinsop for this snippet
|
|
||||||
switch fi, err := os.Stat(dir); true {
|
|
||||||
case err != nil:
|
|
||||||
return err
|
|
||||||
case !fi.IsDir():
|
|
||||||
panic(fmt.Sprintf("corrupt dirstate at %s", dir))
|
|
||||||
}
|
|
||||||
|
|
||||||
nlinks, err := filepath.Glob(filepath.Join(dir, "*"))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
} else if len(nlinks) > 0 {
|
|
||||||
return nil // has subdirs -- do not prune
|
|
||||||
}
|
|
||||||
if err = os.Remove(dir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ensureCacheSpaceWithLock deletes entries from the cache in arbitrary order
|
|
||||||
// until the cache has at least valueSize bytes available.
|
|
||||||
func (d *Diskv) ensureCacheSpaceWithLock(valueSize uint64) error {
|
|
||||||
if valueSize > d.CacheSizeMax {
|
|
||||||
return fmt.Errorf("value size (%d bytes) too large for cache (%d bytes)", valueSize, d.CacheSizeMax)
|
|
||||||
}
|
|
||||||
|
|
||||||
safe := func() bool { return (d.cacheSize + valueSize) <= d.CacheSizeMax }
|
|
||||||
|
|
||||||
for key, val := range d.cache {
|
|
||||||
if safe() {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
d.uncacheWithLock(key, uint64(len(val)))
|
|
||||||
}
|
|
||||||
|
|
||||||
if !safe() {
|
|
||||||
panic(fmt.Sprintf("%d bytes still won't fit in the cache! (max %d bytes)", valueSize, d.CacheSizeMax))
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// nopWriteCloser wraps an io.Writer and provides a no-op Close method to
|
|
||||||
// satisfy the io.WriteCloser interface.
|
|
||||||
type nopWriteCloser struct {
|
|
||||||
io.Writer
|
|
||||||
}
|
|
||||||
|
|
||||||
func (wc *nopWriteCloser) Write(p []byte) (int, error) { return wc.Writer.Write(p) }
|
|
||||||
func (wc *nopWriteCloser) Close() error { return nil }
|
|
|
@ -1,115 +0,0 @@
|
||||||
package diskv
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sync"
|
|
||||||
|
|
||||||
"github.com/google/btree"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Index is a generic interface for things that can
|
|
||||||
// provide an ordered list of keys.
|
|
||||||
type Index interface {
|
|
||||||
Initialize(less LessFunction, keys <-chan string)
|
|
||||||
Insert(key string)
|
|
||||||
Delete(key string)
|
|
||||||
Keys(from string, n int) []string
|
|
||||||
}
|
|
||||||
|
|
||||||
// LessFunction is used to initialize an Index of keys in a specific order.
|
|
||||||
type LessFunction func(string, string) bool
|
|
||||||
|
|
||||||
// btreeString is a custom data type that satisfies the BTree Less interface,
|
|
||||||
// making the strings it wraps sortable by the BTree package.
|
|
||||||
type btreeString struct {
|
|
||||||
s string
|
|
||||||
l LessFunction
|
|
||||||
}
|
|
||||||
|
|
||||||
// Less satisfies the BTree.Less interface using the btreeString's LessFunction.
|
|
||||||
func (s btreeString) Less(i btree.Item) bool {
|
|
||||||
return s.l(s.s, i.(btreeString).s)
|
|
||||||
}
|
|
||||||
|
|
||||||
// BTreeIndex is an implementation of the Index interface using google/btree.
|
|
||||||
type BTreeIndex struct {
|
|
||||||
sync.RWMutex
|
|
||||||
LessFunction
|
|
||||||
*btree.BTree
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize populates the BTree tree with data from the keys channel,
|
|
||||||
// according to the passed less function. It's destructive to the BTreeIndex.
|
|
||||||
func (i *BTreeIndex) Initialize(less LessFunction, keys <-chan string) {
|
|
||||||
i.Lock()
|
|
||||||
defer i.Unlock()
|
|
||||||
i.LessFunction = less
|
|
||||||
i.BTree = rebuild(less, keys)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Insert inserts the given key (only) into the BTree tree.
|
|
||||||
func (i *BTreeIndex) Insert(key string) {
|
|
||||||
i.Lock()
|
|
||||||
defer i.Unlock()
|
|
||||||
if i.BTree == nil || i.LessFunction == nil {
|
|
||||||
panic("uninitialized index")
|
|
||||||
}
|
|
||||||
i.BTree.ReplaceOrInsert(btreeString{s: key, l: i.LessFunction})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete removes the given key (only) from the BTree tree.
|
|
||||||
func (i *BTreeIndex) Delete(key string) {
|
|
||||||
i.Lock()
|
|
||||||
defer i.Unlock()
|
|
||||||
if i.BTree == nil || i.LessFunction == nil {
|
|
||||||
panic("uninitialized index")
|
|
||||||
}
|
|
||||||
i.BTree.Delete(btreeString{s: key, l: i.LessFunction})
|
|
||||||
}
|
|
||||||
|
|
||||||
// Keys yields a maximum of n keys in order. If the passed 'from' key is empty,
|
|
||||||
// Keys will return the first n keys. If the passed 'from' key is non-empty, the
|
|
||||||
// first key in the returned slice will be the key that immediately follows the
|
|
||||||
// passed key, in key order.
|
|
||||||
func (i *BTreeIndex) Keys(from string, n int) []string {
|
|
||||||
i.RLock()
|
|
||||||
defer i.RUnlock()
|
|
||||||
|
|
||||||
if i.BTree == nil || i.LessFunction == nil {
|
|
||||||
panic("uninitialized index")
|
|
||||||
}
|
|
||||||
|
|
||||||
if i.BTree.Len() <= 0 {
|
|
||||||
return []string{}
|
|
||||||
}
|
|
||||||
|
|
||||||
btreeFrom := btreeString{s: from, l: i.LessFunction}
|
|
||||||
skipFirst := true
|
|
||||||
if len(from) <= 0 || !i.BTree.Has(btreeFrom) {
|
|
||||||
// no such key, so fabricate an always-smallest item
|
|
||||||
btreeFrom = btreeString{s: "", l: func(string, string) bool { return true }}
|
|
||||||
skipFirst = false
|
|
||||||
}
|
|
||||||
|
|
||||||
keys := []string{}
|
|
||||||
iterator := func(i btree.Item) bool {
|
|
||||||
keys = append(keys, i.(btreeString).s)
|
|
||||||
return len(keys) < n
|
|
||||||
}
|
|
||||||
i.BTree.AscendGreaterOrEqual(btreeFrom, iterator)
|
|
||||||
|
|
||||||
if skipFirst && len(keys) > 0 {
|
|
||||||
keys = keys[1:]
|
|
||||||
}
|
|
||||||
|
|
||||||
return keys
|
|
||||||
}
|
|
||||||
|
|
||||||
// rebuildIndex does the work of regenerating the index
|
|
||||||
// with the given keys.
|
|
||||||
func rebuild(less LessFunction, keys <-chan string) *btree.BTree {
|
|
||||||
tree := btree.New(2)
|
|
||||||
for key := range keys {
|
|
||||||
tree.ReplaceOrInsert(btreeString{s: key, l: less})
|
|
||||||
}
|
|
||||||
return tree
|
|
||||||
}
|
|
|
@ -1 +1,19 @@
|
||||||
This repo is still in the experimental stage. Shortly it will contain the schema of the API that are served by the Kubernetes apiserver.
|
# api
|
||||||
|
|
||||||
|
Schema of the external API types that are served by the Kubernetes API server.
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
This library is the canonical location of the Kubernetes API definition. Most likely interaction with this repository is as a dependency of client-go.
|
||||||
|
|
||||||
|
## Compatibility
|
||||||
|
|
||||||
|
Branches track Kubernetes branches and are compatible with that repo.
|
||||||
|
|
||||||
|
## Where does it come from?
|
||||||
|
|
||||||
|
`api` is synced from https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/api. Code changes are made in that location, merged into `k8s.io/kubernetes` and later synced here.
|
||||||
|
|
||||||
|
## Things you should *NOT* do
|
||||||
|
|
||||||
|
1. https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/api is synced to k8s.io/api. All changes must be made in the former. The latter is read-only.
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
|
||||||
// +k8s:openapi-gen=true
|
|
||||||
|
|
||||||
// Package v1alpha1 is the v1alpha1 version of the API.
|
|
||||||
// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration
|
|
||||||
// InitializerConfiguration and validatingWebhookConfiguration is for the
|
|
||||||
// new dynamic admission controller configuration.
|
|
||||||
// +groupName=admissionregistration.k8s.io
|
|
||||||
package v1alpha1 // import "k8s.io/api/admissionregistration/v1alpha1"
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,108 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
|
||||||
|
|
||||||
syntax = 'proto2';
|
|
||||||
|
|
||||||
package k8s.io.api.admissionregistration.v1alpha1;
|
|
||||||
|
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
|
||||||
option go_package = "v1alpha1";
|
|
||||||
|
|
||||||
// Initializer describes the name and the failure policy of an initializer, and
|
|
||||||
// what resources it applies to.
|
|
||||||
message Initializer {
|
|
||||||
// Name is the identifier of the initializer. It will be added to the
|
|
||||||
// object that needs to be initialized.
|
|
||||||
// Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where
|
|
||||||
// "alwayspullimages" is the name of the webhook, and kubernetes.io is the name
|
|
||||||
// of the organization.
|
|
||||||
// Required
|
|
||||||
optional string name = 1;
|
|
||||||
|
|
||||||
// Rules describes what resources/subresources the initializer cares about.
|
|
||||||
// The initializer cares about an operation if it matches _any_ Rule.
|
|
||||||
// Rule.Resources must not include subresources.
|
|
||||||
repeated Rule rules = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// InitializerConfiguration describes the configuration of initializers.
|
|
||||||
message InitializerConfiguration {
|
|
||||||
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
|
|
||||||
// +optional
|
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
|
||||||
|
|
||||||
// Initializers is a list of resources and their default initializers
|
|
||||||
// Order-sensitive.
|
|
||||||
// When merging multiple InitializerConfigurations, we sort the initializers
|
|
||||||
// from different InitializerConfigurations by the name of the
|
|
||||||
// InitializerConfigurations; the order of the initializers from the same
|
|
||||||
// InitializerConfiguration is preserved.
|
|
||||||
// +patchMergeKey=name
|
|
||||||
// +patchStrategy=merge
|
|
||||||
// +optional
|
|
||||||
repeated Initializer initializers = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// InitializerConfigurationList is a list of InitializerConfiguration.
|
|
||||||
message InitializerConfigurationList {
|
|
||||||
// Standard list metadata.
|
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
|
|
||||||
// +optional
|
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
|
||||||
|
|
||||||
// List of InitializerConfiguration.
|
|
||||||
repeated InitializerConfiguration items = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended
|
|
||||||
// to make sure that all the tuple expansions are valid.
|
|
||||||
message Rule {
|
|
||||||
// APIGroups is the API groups the resources belong to. '*' is all groups.
|
|
||||||
// If '*' is present, the length of the slice must be one.
|
|
||||||
// Required.
|
|
||||||
repeated string apiGroups = 1;
|
|
||||||
|
|
||||||
// APIVersions is the API versions the resources belong to. '*' is all versions.
|
|
||||||
// If '*' is present, the length of the slice must be one.
|
|
||||||
// Required.
|
|
||||||
repeated string apiVersions = 2;
|
|
||||||
|
|
||||||
// Resources is a list of resources this rule applies to.
|
|
||||||
//
|
|
||||||
// For example:
|
|
||||||
// 'pods' means pods.
|
|
||||||
// 'pods/log' means the log subresource of pods.
|
|
||||||
// '*' means all resources, but not subresources.
|
|
||||||
// 'pods/*' means all subresources of pods.
|
|
||||||
// '*/scale' means all scale subresources.
|
|
||||||
// '*/*' means all resources and their subresources.
|
|
||||||
//
|
|
||||||
// If wildcard is present, the validation rule will ensure resources do not
|
|
||||||
// overlap with each other.
|
|
||||||
//
|
|
||||||
// Depending on the enclosing object, subresources might not be allowed.
|
|
||||||
// Required.
|
|
||||||
repeated string resources = 3;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,106 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2017 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package v1alpha1
|
|
||||||
|
|
||||||
import (
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// +genclient
|
|
||||||
// +genclient:nonNamespaced
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
|
||||||
|
|
||||||
// InitializerConfiguration describes the configuration of initializers.
|
|
||||||
type InitializerConfiguration struct {
|
|
||||||
metav1.TypeMeta `json:",inline"`
|
|
||||||
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
|
|
||||||
// +optional
|
|
||||||
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
||||||
|
|
||||||
// Initializers is a list of resources and their default initializers
|
|
||||||
// Order-sensitive.
|
|
||||||
// When merging multiple InitializerConfigurations, we sort the initializers
|
|
||||||
// from different InitializerConfigurations by the name of the
|
|
||||||
// InitializerConfigurations; the order of the initializers from the same
|
|
||||||
// InitializerConfiguration is preserved.
|
|
||||||
// +patchMergeKey=name
|
|
||||||
// +patchStrategy=merge
|
|
||||||
// +optional
|
|
||||||
Initializers []Initializer `json:"initializers,omitempty" patchStrategy:"merge" patchMergeKey:"name" protobuf:"bytes,2,rep,name=initializers"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
|
||||||
|
|
||||||
// InitializerConfigurationList is a list of InitializerConfiguration.
|
|
||||||
type InitializerConfigurationList struct {
|
|
||||||
metav1.TypeMeta `json:",inline"`
|
|
||||||
// Standard list metadata.
|
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
|
|
||||||
// +optional
|
|
||||||
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
|
||||||
|
|
||||||
// List of InitializerConfiguration.
|
|
||||||
Items []InitializerConfiguration `json:"items" protobuf:"bytes,2,rep,name=items"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initializer describes the name and the failure policy of an initializer, and
|
|
||||||
// what resources it applies to.
|
|
||||||
type Initializer struct {
|
|
||||||
// Name is the identifier of the initializer. It will be added to the
|
|
||||||
// object that needs to be initialized.
|
|
||||||
// Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where
|
|
||||||
// "alwayspullimages" is the name of the webhook, and kubernetes.io is the name
|
|
||||||
// of the organization.
|
|
||||||
// Required
|
|
||||||
Name string `json:"name" protobuf:"bytes,1,opt,name=name"`
|
|
||||||
|
|
||||||
// Rules describes what resources/subresources the initializer cares about.
|
|
||||||
// The initializer cares about an operation if it matches _any_ Rule.
|
|
||||||
// Rule.Resources must not include subresources.
|
|
||||||
Rules []Rule `json:"rules,omitempty" protobuf:"bytes,2,rep,name=rules"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended
|
|
||||||
// to make sure that all the tuple expansions are valid.
|
|
||||||
type Rule struct {
|
|
||||||
// APIGroups is the API groups the resources belong to. '*' is all groups.
|
|
||||||
// If '*' is present, the length of the slice must be one.
|
|
||||||
// Required.
|
|
||||||
APIGroups []string `json:"apiGroups,omitempty" protobuf:"bytes,1,rep,name=apiGroups"`
|
|
||||||
|
|
||||||
// APIVersions is the API versions the resources belong to. '*' is all versions.
|
|
||||||
// If '*' is present, the length of the slice must be one.
|
|
||||||
// Required.
|
|
||||||
APIVersions []string `json:"apiVersions,omitempty" protobuf:"bytes,2,rep,name=apiVersions"`
|
|
||||||
|
|
||||||
// Resources is a list of resources this rule applies to.
|
|
||||||
//
|
|
||||||
// For example:
|
|
||||||
// 'pods' means pods.
|
|
||||||
// 'pods/log' means the log subresource of pods.
|
|
||||||
// '*' means all resources, but not subresources.
|
|
||||||
// 'pods/*' means all subresources of pods.
|
|
||||||
// '*/scale' means all scale subresources.
|
|
||||||
// '*/*' means all resources and their subresources.
|
|
||||||
//
|
|
||||||
// If wildcard is present, the validation rule will ensure resources do not
|
|
||||||
// overlap with each other.
|
|
||||||
//
|
|
||||||
// Depending on the enclosing object, subresources might not be allowed.
|
|
||||||
// Required.
|
|
||||||
Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
|
|
||||||
}
|
|
71
vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
generated
vendored
71
vendor/k8s.io/api/admissionregistration/v1alpha1/types_swagger_doc_generated.go
generated
vendored
|
@ -1,71 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package v1alpha1
|
|
||||||
|
|
||||||
// This file contains a collection of methods that can be used from go-restful to
|
|
||||||
// generate Swagger API documentation for its models. Please read this PR for more
|
|
||||||
// information on the implementation: https://github.com/emicklei/go-restful/pull/215
|
|
||||||
//
|
|
||||||
// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
|
|
||||||
// they are on one line! For multiple line or blocks that you want to ignore use ---.
|
|
||||||
// Any context after a --- is ignored.
|
|
||||||
//
|
|
||||||
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
|
|
||||||
|
|
||||||
// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
|
|
||||||
var map_Initializer = map[string]string{
|
|
||||||
"": "Initializer describes the name and the failure policy of an initializer, and what resources it applies to.",
|
|
||||||
"name": "Name is the identifier of the initializer. It will be added to the object that needs to be initialized. Name should be fully qualified, e.g., alwayspullimages.kubernetes.io, where \"alwayspullimages\" is the name of the webhook, and kubernetes.io is the name of the organization. Required",
|
|
||||||
"rules": "Rules describes what resources/subresources the initializer cares about. The initializer cares about an operation if it matches _any_ Rule. Rule.Resources must not include subresources.",
|
|
||||||
}
|
|
||||||
|
|
||||||
func (Initializer) SwaggerDoc() map[string]string {
|
|
||||||
return map_Initializer
|
|
||||||
}
|
|
||||||
|
|
||||||
var map_InitializerConfiguration = map[string]string{
|
|
||||||
"": "InitializerConfiguration describes the configuration of initializers.",
|
|
||||||
"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.",
|
|
||||||
"initializers": "Initializers is a list of resources and their default initializers Order-sensitive. When merging multiple InitializerConfigurations, we sort the initializers from different InitializerConfigurations by the name of the InitializerConfigurations; the order of the initializers from the same InitializerConfiguration is preserved.",
|
|
||||||
}
|
|
||||||
|
|
||||||
func (InitializerConfiguration) SwaggerDoc() map[string]string {
|
|
||||||
return map_InitializerConfiguration
|
|
||||||
}
|
|
||||||
|
|
||||||
var map_InitializerConfigurationList = map[string]string{
|
|
||||||
"": "InitializerConfigurationList is a list of InitializerConfiguration.",
|
|
||||||
"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
|
|
||||||
"items": "List of InitializerConfiguration.",
|
|
||||||
}
|
|
||||||
|
|
||||||
func (InitializerConfigurationList) SwaggerDoc() map[string]string {
|
|
||||||
return map_InitializerConfigurationList
|
|
||||||
}
|
|
||||||
|
|
||||||
var map_Rule = map[string]string{
|
|
||||||
"": "Rule is a tuple of APIGroups, APIVersion, and Resources.It is recommended to make sure that all the tuple expansions are valid.",
|
|
||||||
"apiGroups": "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.",
|
|
||||||
"apiVersions": "APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.",
|
|
||||||
"resources": "Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.",
|
|
||||||
}
|
|
||||||
|
|
||||||
func (Rule) SwaggerDoc() map[string]string {
|
|
||||||
return map_Rule
|
|
||||||
}
|
|
||||||
|
|
||||||
// AUTO-GENERATED FUNCTIONS END HERE
|
|
|
@ -15,11 +15,12 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
// +groupName=admissionregistration.k8s.io
|
||||||
|
|
||||||
// Package v1beta1 is the v1beta1 version of the API.
|
// Package v1beta1 is the v1beta1 version of the API.
|
||||||
// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration
|
// AdmissionConfiguration and AdmissionPluginConfiguration are legacy static admission plugin configuration
|
||||||
// InitializerConfiguration and validatingWebhookConfiguration is for the
|
// MutatingWebhookConfiguration and ValidatingWebhookConfiguration are for the
|
||||||
// new dynamic admission controller configuration.
|
// new dynamic admission controller configuration.
|
||||||
// +groupName=admissionregistration.k8s.io
|
|
||||||
package v1beta1 // import "k8s.io/api/admissionregistration/v1beta1"
|
package v1beta1 // import "k8s.io/api/admissionregistration/v1beta1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/admissionregistration/v1beta1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1beta1 is a generated protocol buffer package.
|
Package v1beta1 is a generated protocol buffer package.
|
||||||
|
@ -250,6 +249,12 @@ func (m *Rule) MarshalTo(dAtA []byte) (int, error) {
|
||||||
i += copy(dAtA[i:], s)
|
i += copy(dAtA[i:], s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if m.Scope != nil {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(len(*m.Scope)))
|
||||||
|
i += copy(dAtA[i:], *m.Scope)
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,6 +462,32 @@ func (m *Webhook) MarshalTo(dAtA []byte) (int, error) {
|
||||||
}
|
}
|
||||||
i += n7
|
i += n7
|
||||||
}
|
}
|
||||||
|
if m.SideEffects != nil {
|
||||||
|
dAtA[i] = 0x32
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(len(*m.SideEffects)))
|
||||||
|
i += copy(dAtA[i:], *m.SideEffects)
|
||||||
|
}
|
||||||
|
if m.TimeoutSeconds != nil {
|
||||||
|
dAtA[i] = 0x38
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(*m.TimeoutSeconds))
|
||||||
|
}
|
||||||
|
if len(m.AdmissionReviewVersions) > 0 {
|
||||||
|
for _, s := range m.AdmissionReviewVersions {
|
||||||
|
dAtA[i] = 0x42
|
||||||
|
i++
|
||||||
|
l = len(s)
|
||||||
|
for l >= 1<<7 {
|
||||||
|
dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
|
||||||
|
l >>= 7
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
dAtA[i] = uint8(l)
|
||||||
|
i++
|
||||||
|
i += copy(dAtA[i:], s)
|
||||||
|
}
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -500,24 +531,6 @@ func (m *WebhookClientConfig) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -576,6 +589,10 @@ func (m *Rule) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if m.Scope != nil {
|
||||||
|
l = len(*m.Scope)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,6 +673,19 @@ func (m *Webhook) Size() (n int) {
|
||||||
l = m.NamespaceSelector.Size()
|
l = m.NamespaceSelector.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
}
|
}
|
||||||
|
if m.SideEffects != nil {
|
||||||
|
l = len(*m.SideEffects)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
if m.TimeoutSeconds != nil {
|
||||||
|
n += 1 + sovGenerated(uint64(*m.TimeoutSeconds))
|
||||||
|
}
|
||||||
|
if len(m.AdmissionReviewVersions) > 0 {
|
||||||
|
for _, s := range m.AdmissionReviewVersions {
|
||||||
|
l = len(s)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -720,6 +750,7 @@ func (this *Rule) String() string {
|
||||||
`APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`,
|
`APIGroups:` + fmt.Sprintf("%v", this.APIGroups) + `,`,
|
||||||
`APIVersions:` + fmt.Sprintf("%v", this.APIVersions) + `,`,
|
`APIVersions:` + fmt.Sprintf("%v", this.APIVersions) + `,`,
|
||||||
`Resources:` + fmt.Sprintf("%v", this.Resources) + `,`,
|
`Resources:` + fmt.Sprintf("%v", this.Resources) + `,`,
|
||||||
|
`Scope:` + valueToStringGenerated(this.Scope) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -779,6 +810,9 @@ func (this *Webhook) String() string {
|
||||||
`Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`,
|
`Rules:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Rules), "RuleWithOperations", "RuleWithOperations", 1), `&`, ``, 1) + `,`,
|
||||||
`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
|
`FailurePolicy:` + valueToStringGenerated(this.FailurePolicy) + `,`,
|
||||||
`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
`NamespaceSelector:` + strings.Replace(fmt.Sprintf("%v", this.NamespaceSelector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
|
`SideEffects:` + valueToStringGenerated(this.SideEffects) + `,`,
|
||||||
|
`TimeoutSeconds:` + valueToStringGenerated(this.TimeoutSeconds) + `,`,
|
||||||
|
`AdmissionReviewVersions:` + fmt.Sprintf("%v", this.AdmissionReviewVersions) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1141,6 +1175,36 @@ func (m *Rule) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex]))
|
m.Resources = append(m.Resources, string(dAtA[iNdEx:postIndex]))
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Scope", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
s := ScopeType(dAtA[iNdEx:postIndex])
|
||||||
|
m.Scope = &s
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -1813,6 +1877,85 @@ func (m *Webhook) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 6:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field SideEffects", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
s := SideEffectClass(dAtA[iNdEx:postIndex])
|
||||||
|
m.SideEffects = &s
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 7:
|
||||||
|
if wireType != 0 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field TimeoutSeconds", wireType)
|
||||||
|
}
|
||||||
|
var v int32
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
v |= (int32(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.TimeoutSeconds = &v
|
||||||
|
case 8:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field AdmissionReviewVersions", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.AdmissionReviewVersions = append(m.AdmissionReviewVersions, string(dAtA[iNdEx:postIndex]))
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -2088,63 +2231,67 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 916 bytes of a gzipped FileDescriptorProto
|
// 989 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x54, 0xcf, 0x6f, 0x1b, 0x45,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x55, 0x4f, 0x6f, 0xe3, 0x44,
|
||||||
0x14, 0xf6, 0xd6, 0x8e, 0x6c, 0x8f, 0x6d, 0xd1, 0x0c, 0x20, 0x99, 0xa8, 0xda, 0xb5, 0x7c, 0x40,
|
0x14, 0xaf, 0x37, 0x09, 0x49, 0x26, 0xed, 0xee, 0x76, 0xf8, 0xb3, 0xa1, 0xac, 0xec, 0x28, 0x07,
|
||||||
0x96, 0x50, 0x76, 0x71, 0x8a, 0x10, 0x42, 0x20, 0x94, 0x8d, 0x54, 0x88, 0x94, 0xb4, 0x66, 0x02,
|
0x14, 0x09, 0xd6, 0xa6, 0x05, 0x21, 0xb4, 0x02, 0xa1, 0xba, 0xb0, 0x50, 0xa9, 0xbb, 0x5b, 0x26,
|
||||||
0xad, 0x84, 0x38, 0x30, 0x5e, 0xbf, 0xd8, 0x83, 0xf7, 0x97, 0x66, 0x66, 0xdd, 0xe6, 0x86, 0xc4,
|
0xfb, 0x47, 0x42, 0x1c, 0x98, 0x38, 0x2f, 0xc9, 0x10, 0xc7, 0x63, 0x79, 0xc6, 0x29, 0xbd, 0x21,
|
||||||
0x3f, 0x80, 0xc4, 0x1f, 0xc1, 0x5f, 0xc1, 0x3d, 0x37, 0x7a, 0x41, 0xf4, 0xb4, 0x22, 0xcb, 0x99,
|
0xf1, 0x05, 0xf8, 0x16, 0xf0, 0x25, 0x38, 0x70, 0xeb, 0x71, 0x2f, 0x88, 0x3d, 0x59, 0xd4, 0x9c,
|
||||||
0x03, 0xd7, 0x9e, 0xd0, 0xce, 0xae, 0xbd, 0x76, 0x1c, 0xa7, 0xee, 0x85, 0x03, 0x37, 0xcf, 0xf7,
|
0x39, 0x70, 0xed, 0x09, 0x8d, 0xed, 0xd8, 0x49, 0xd3, 0x76, 0xb3, 0x17, 0x0e, 0xdc, 0x3c, 0xbf,
|
||||||
0xde, 0xf7, 0xbd, 0xf7, 0x3d, 0xbf, 0xb7, 0xe8, 0xcb, 0xe9, 0x47, 0xc2, 0x64, 0x81, 0x35, 0x8d,
|
0xf7, 0x7e, 0xef, 0xbd, 0xdf, 0xcc, 0x7b, 0xcf, 0xe8, 0xab, 0xf1, 0x47, 0xc2, 0x64, 0xdc, 0x1a,
|
||||||
0x86, 0xc0, 0x7d, 0x90, 0x20, 0xac, 0x19, 0xf8, 0xa3, 0x80, 0x5b, 0x79, 0x80, 0x86, 0xcc, 0xa2,
|
0x87, 0x3d, 0x08, 0x3c, 0x90, 0x20, 0xac, 0x29, 0x78, 0x7d, 0x1e, 0x58, 0x99, 0x81, 0xfa, 0xcc,
|
||||||
0x23, 0x8f, 0x09, 0xc1, 0x02, 0x9f, 0xc3, 0x98, 0x09, 0xc9, 0xa9, 0x64, 0x81, 0x6f, 0xcd, 0xfa,
|
0xa2, 0xfd, 0x09, 0x13, 0x82, 0x71, 0x2f, 0x80, 0x21, 0x13, 0x32, 0xa0, 0x92, 0x71, 0xcf, 0x9a,
|
||||||
0x43, 0x90, 0xb4, 0x6f, 0x8d, 0xc1, 0x07, 0x4e, 0x25, 0x8c, 0xcc, 0x90, 0x07, 0x32, 0xc0, 0xbd,
|
0x6e, 0xf7, 0x40, 0xd2, 0x6d, 0x6b, 0x08, 0x1e, 0x04, 0x54, 0x42, 0xdf, 0xf4, 0x03, 0x2e, 0x39,
|
||||||
0x8c, 0x69, 0xd2, 0x90, 0x99, 0x37, 0x32, 0xcd, 0x9c, 0xb9, 0xb7, 0x3f, 0x66, 0x72, 0x12, 0x0d,
|
0xee, 0xa4, 0x4c, 0x93, 0xfa, 0xcc, 0xbc, 0x90, 0x69, 0x66, 0xcc, 0xad, 0x3b, 0x43, 0x26, 0x47,
|
||||||
0x4d, 0x27, 0xf0, 0xac, 0x71, 0x30, 0x0e, 0x2c, 0x25, 0x30, 0x8c, 0xce, 0xd5, 0x4b, 0x3d, 0xd4,
|
0x61, 0xcf, 0x74, 0xf8, 0xc4, 0x1a, 0xf2, 0x21, 0xb7, 0x92, 0x00, 0xbd, 0x70, 0x90, 0x9c, 0x92,
|
||||||
0xaf, 0x4c, 0x78, 0xaf, 0xbb, 0xd4, 0x92, 0x13, 0x70, 0xb0, 0x66, 0x6b, 0xc5, 0xf7, 0x4e, 0x8b,
|
0x43, 0xf2, 0x95, 0x06, 0xde, 0xfa, 0xa0, 0x28, 0x69, 0x42, 0x9d, 0x11, 0xf3, 0x20, 0x38, 0xb6,
|
||||||
0x1c, 0x78, 0x26, 0xc1, 0x4f, 0x6b, 0x8b, 0x7d, 0x1a, 0x32, 0x01, 0x7c, 0x06, 0xdc, 0x0a, 0xa7,
|
0xfc, 0xf1, 0x50, 0x01, 0xc2, 0x9a, 0x80, 0xa4, 0xd6, 0x74, 0xa9, 0x9c, 0x2d, 0xeb, 0x32, 0x56,
|
||||||
0xe3, 0x34, 0x26, 0x56, 0x13, 0x36, 0x79, 0xd9, 0xfb, 0xa0, 0x90, 0xf3, 0xa8, 0x33, 0x61, 0x3e,
|
0x10, 0x7a, 0x92, 0x4d, 0x60, 0x89, 0xf0, 0xe1, 0x8b, 0x08, 0xc2, 0x19, 0xc1, 0x84, 0x9e, 0xe7,
|
||||||
0xf0, 0x8b, 0x42, 0xc3, 0x03, 0x49, 0x6f, 0x6a, 0xc2, 0xda, 0xc4, 0xe2, 0x91, 0x2f, 0x99, 0x07,
|
0xb5, 0x7f, 0xd7, 0xd0, 0xed, 0xfb, 0xa1, 0xa4, 0x92, 0x79, 0xc3, 0xa7, 0xd0, 0x1b, 0x71, 0x3e,
|
||||||
0x6b, 0x84, 0x0f, 0x5f, 0x45, 0x10, 0xce, 0x04, 0x3c, 0xba, 0xc6, 0xbb, 0xbf, 0x89, 0x17, 0x49,
|
0xde, 0xe3, 0xde, 0x80, 0x0d, 0xc3, 0x54, 0x36, 0xfe, 0x16, 0xd5, 0x54, 0x91, 0x7d, 0x2a, 0x69,
|
||||||
0xe6, 0x5a, 0xcc, 0x97, 0x42, 0xf2, 0xeb, 0xa4, 0xee, 0xef, 0x1a, 0xba, 0x77, 0x1a, 0x49, 0x2a,
|
0x53, 0x6b, 0x69, 0x9d, 0xc6, 0xce, 0x7b, 0x66, 0x71, 0x57, 0x79, 0x2e, 0xd3, 0x1f, 0x0f, 0x15,
|
||||||
0x99, 0x3f, 0x7e, 0x02, 0xc3, 0x49, 0x10, 0x4c, 0x8f, 0x02, 0xff, 0x9c, 0x8d, 0xa3, 0xec, 0xef,
|
0x20, 0x4c, 0xe5, 0x6d, 0x4e, 0xb7, 0xcd, 0x87, 0xbd, 0xef, 0xc0, 0x91, 0xf7, 0x41, 0x52, 0x1b,
|
||||||
0xc1, 0xdf, 0xa1, 0x5a, 0xea, 0x6c, 0x44, 0x25, 0x6d, 0x6b, 0x1d, 0xad, 0xd7, 0x38, 0x78, 0xdf,
|
0x9f, 0x44, 0xc6, 0x5a, 0x1c, 0x19, 0xa8, 0xc0, 0x48, 0x1e, 0x15, 0x77, 0x51, 0x2d, 0xcb, 0x2c,
|
||||||
0x2c, 0xfe, 0xd3, 0x45, 0x21, 0x33, 0x9c, 0x8e, 0x53, 0x40, 0x98, 0x69, 0xb6, 0x39, 0xeb, 0x9b,
|
0x9a, 0xd7, 0x5a, 0xa5, 0x4e, 0x63, 0x67, 0xdb, 0x5c, 0xf5, 0x35, 0xcc, 0x8c, 0x69, 0x97, 0x55,
|
||||||
0x8f, 0x86, 0xdf, 0x83, 0x23, 0x4f, 0x41, 0x52, 0x1b, 0x5f, 0xc6, 0x46, 0x29, 0x89, 0x0d, 0x54,
|
0x0a, 0x52, 0x3b, 0xca, 0x02, 0xb5, 0xff, 0xd6, 0x50, 0xeb, 0x2a, 0x5d, 0x07, 0x4c, 0x48, 0xfc,
|
||||||
0x60, 0x64, 0xa1, 0x8a, 0xcf, 0x50, 0x2d, 0xaf, 0x2c, 0xda, 0x77, 0x3a, 0xe5, 0x5e, 0xe3, 0xa0,
|
0xcd, 0x92, 0x36, 0x73, 0x35, 0x6d, 0x8a, 0x9d, 0x28, 0xbb, 0x99, 0x29, 0xab, 0xcd, 0x90, 0x39,
|
||||||
0x6f, 0x6e, 0xbb, 0x35, 0x66, 0xce, 0xb4, 0x2b, 0x69, 0x09, 0x52, 0x7b, 0x9a, 0x0b, 0x75, 0xff,
|
0x5d, 0x63, 0x54, 0x61, 0x12, 0x26, 0x33, 0x51, 0xf7, 0x56, 0x17, 0x75, 0x55, 0xe1, 0xf6, 0x46,
|
||||||
0xd6, 0x50, 0xe7, 0x36, 0x5f, 0x27, 0x4c, 0x48, 0xfc, 0xed, 0x9a, 0x37, 0x73, 0x3b, 0x6f, 0x29,
|
0x96, 0xb2, 0xb2, 0xaf, 0x82, 0x93, 0x34, 0x47, 0xfb, 0x37, 0x0d, 0x95, 0x49, 0xe8, 0x02, 0x7e,
|
||||||
0x5b, 0x39, 0xbb, 0x9b, 0x3b, 0xab, 0xcd, 0x91, 0x25, 0x5f, 0x53, 0xb4, 0xc3, 0x24, 0x78, 0x73,
|
0x07, 0xd5, 0xa9, 0xcf, 0xbe, 0x08, 0x78, 0xe8, 0x8b, 0xa6, 0xd6, 0x2a, 0x75, 0xea, 0xf6, 0x46,
|
||||||
0x53, 0x0f, 0xb6, 0x37, 0x75, 0x5b, 0xe3, 0x76, 0x2b, 0x2f, 0xb9, 0x73, 0x9c, 0x8a, 0x93, 0xac,
|
0x1c, 0x19, 0xf5, 0xdd, 0xc3, 0xfd, 0x14, 0x24, 0x85, 0x1d, 0x6f, 0xa3, 0x06, 0xf5, 0xd9, 0x13,
|
||||||
0x46, 0xf7, 0x67, 0x0d, 0x55, 0x48, 0xe4, 0x02, 0x7e, 0x0f, 0xd5, 0x69, 0xc8, 0x3e, 0xe7, 0x41,
|
0x08, 0x54, 0x29, 0x69, 0xa1, 0x75, 0xfb, 0x46, 0x1c, 0x19, 0x8d, 0xdd, 0xc3, 0xfd, 0x19, 0x4c,
|
||||||
0x14, 0x8a, 0xb6, 0xd6, 0x29, 0xf7, 0xea, 0x76, 0x2b, 0x89, 0x8d, 0xfa, 0xe1, 0xe0, 0x38, 0x03,
|
0xe6, 0x7d, 0x54, 0xfc, 0x00, 0x04, 0x0f, 0x03, 0x07, 0x44, 0xb3, 0x54, 0xc4, 0x27, 0x33, 0x90,
|
||||||
0x49, 0x11, 0xc7, 0x7d, 0xd4, 0xa0, 0x21, 0x7b, 0x0c, 0x5c, 0x2d, 0xbe, 0x6a, 0xb4, 0x6e, 0xbf,
|
0x14, 0x76, 0xfc, 0x2e, 0xaa, 0x08, 0x87, 0xfb, 0xd0, 0x2c, 0xb7, 0xb4, 0x4e, 0xdd, 0x7e, 0x43,
|
||||||
0x91, 0xc4, 0x46, 0xe3, 0x70, 0x70, 0x3c, 0x87, 0xc9, 0x72, 0x4e, 0xaa, 0xcf, 0x41, 0x04, 0x11,
|
0x95, 0xdd, 0x55, 0xc0, 0x59, 0x64, 0xd4, 0x93, 0x8f, 0x47, 0xc7, 0x3e, 0x90, 0xd4, 0xa9, 0xfd,
|
||||||
0x77, 0x40, 0xb4, 0xcb, 0x85, 0x3e, 0x99, 0x83, 0xa4, 0x88, 0x77, 0x7f, 0xd1, 0x10, 0x4e, 0xbb,
|
0xb3, 0x86, 0xb0, 0xd2, 0xf0, 0x94, 0xc9, 0xd1, 0x43, 0x1f, 0x52, 0xbd, 0x02, 0x7f, 0x8a, 0x10,
|
||||||
0x7a, 0xc2, 0xe4, 0xe4, 0x51, 0x08, 0x99, 0x03, 0x81, 0x3f, 0x43, 0x28, 0x58, 0xbc, 0xf2, 0x26,
|
0xcf, 0x4f, 0x99, 0x24, 0x23, 0xe9, 0xa6, 0x1c, 0x3d, 0x8b, 0x8c, 0x8d, 0xfc, 0x94, 0x84, 0x9c,
|
||||||
0x0d, 0xb5, 0x1f, 0x0b, 0xf4, 0x65, 0x6c, 0xb4, 0x16, 0xaf, 0xaf, 0x2e, 0x42, 0x20, 0x4b, 0x14,
|
0xa3, 0xe0, 0x43, 0x54, 0x0e, 0x42, 0x17, 0x9a, 0xd7, 0x96, 0x9e, 0xf8, 0x05, 0xef, 0xa0, 0x8a,
|
||||||
0x3c, 0x40, 0x15, 0x1e, 0xb9, 0xd0, 0xbe, 0xb3, 0xf6, 0xa7, 0xbd, 0x62, 0xb2, 0x69, 0x33, 0x76,
|
0xb1, 0xd7, 0xb3, 0xfb, 0x4e, 0xae, 0x97, 0x24, 0x91, 0xda, 0x3f, 0x6a, 0xe8, 0x66, 0x17, 0x82,
|
||||||
0x33, 0x9f, 0xa0, 0x1a, 0x18, 0x51, 0x4a, 0xdd, 0x1f, 0x35, 0x74, 0xf7, 0x0c, 0xf8, 0x8c, 0x39,
|
0x29, 0x73, 0x80, 0xc0, 0x00, 0x02, 0xf0, 0x1c, 0xc0, 0x16, 0xaa, 0x7b, 0x74, 0x02, 0xc2, 0xa7,
|
||||||
0x40, 0xe0, 0x1c, 0x38, 0xf8, 0x0e, 0x60, 0x0b, 0xd5, 0x7d, 0xea, 0x81, 0x08, 0xa9, 0x03, 0x6a,
|
0x0e, 0x24, 0xed, 0x54, 0xb7, 0x37, 0x33, 0x6e, 0xfd, 0xc1, 0xcc, 0x40, 0x0a, 0x1f, 0xdc, 0x42,
|
||||||
0x41, 0xea, 0xf6, 0x6e, 0xce, 0xad, 0x3f, 0x9c, 0x07, 0x48, 0x91, 0x83, 0x3b, 0xa8, 0x92, 0x3e,
|
0x65, 0x75, 0x48, 0xea, 0xaa, 0x17, 0x79, 0x94, 0x2f, 0x49, 0x2c, 0xf8, 0x36, 0x2a, 0xfb, 0x54,
|
||||||
0x54, 0x5f, 0xf5, 0xa2, 0x4e, 0x9a, 0x4b, 0x54, 0x04, 0xdf, 0x43, 0x95, 0x90, 0xca, 0x49, 0xbb,
|
0x8e, 0x9a, 0xa5, 0xc4, 0xa3, 0xa6, 0xac, 0x87, 0x54, 0x8e, 0x48, 0x82, 0xb6, 0xff, 0xd0, 0x90,
|
||||||
0xac, 0x32, 0x6a, 0x69, 0x74, 0x40, 0xe5, 0x84, 0x28, 0xb4, 0xfb, 0x87, 0x86, 0xf4, 0xc7, 0xd4,
|
0xfe, 0x84, 0xba, 0xac, 0xff, 0xbf, 0x9b, 0xde, 0x7f, 0x34, 0xd4, 0xbe, 0x5a, 0xd9, 0x7f, 0x30,
|
||||||
0x65, 0xa3, 0xff, 0xdd, 0x3d, 0xfe, 0xa3, 0xa1, 0xee, 0xed, 0xce, 0xfe, 0x83, 0x8b, 0xf4, 0x56,
|
0xbf, 0x93, 0xc5, 0xf9, 0xfd, 0x72, 0x75, 0x59, 0x57, 0x97, 0x7e, 0xc9, 0x04, 0xff, 0x52, 0x41,
|
||||||
0x2f, 0xf2, 0x8b, 0xed, 0x6d, 0xdd, 0xde, 0xfa, 0x86, 0x9b, 0xfc, 0xad, 0x8c, 0xaa, 0x79, 0xfa,
|
0xd5, 0xcc, 0x3d, 0xef, 0x0c, 0xed, 0xd2, 0xce, 0x38, 0x42, 0xeb, 0x8e, 0xcb, 0xc0, 0x93, 0x69,
|
||||||
0x62, 0x33, 0xb4, 0x8d, 0x9b, 0xf1, 0x14, 0x35, 0x1d, 0x97, 0x81, 0x2f, 0x33, 0xe9, 0x7c, 0xb7,
|
0xe8, 0xac, 0xb7, 0x3f, 0x79, 0xe9, 0xab, 0xdf, 0x9b, 0x0b, 0x62, 0xbf, 0x96, 0x25, 0x5a, 0x9f,
|
||||||
0x3f, 0x7d, 0xed, 0xd1, 0x1f, 0x2d, 0x89, 0xd8, 0x6f, 0xe5, 0x85, 0x9a, 0xcb, 0x28, 0x59, 0x29,
|
0x47, 0xc9, 0x42, 0x22, 0x4c, 0x51, 0x45, 0x8d, 0x40, 0x3a, 0xfb, 0x8d, 0x9d, 0x8f, 0x5f, 0x6e,
|
||||||
0x84, 0x29, 0xda, 0x49, 0x4f, 0x20, 0xbb, 0xe6, 0xc6, 0xc1, 0x27, 0xaf, 0x77, 0x4d, 0xab, 0xa7,
|
0x9a, 0x16, 0x47, 0xbb, 0xb8, 0x09, 0x65, 0x13, 0x24, 0x8d, 0x8c, 0x0f, 0xd0, 0xc6, 0x80, 0x32,
|
||||||
0x5d, 0x4c, 0x22, 0x8d, 0x09, 0x92, 0x29, 0xe3, 0x13, 0xd4, 0x3a, 0xa7, 0xcc, 0x8d, 0x38, 0x0c,
|
0x37, 0x0c, 0xe0, 0x90, 0xbb, 0xcc, 0x39, 0xce, 0xb6, 0xc7, 0xdb, 0x71, 0x64, 0x6c, 0xdc, 0x9b,
|
||||||
0x02, 0x97, 0x39, 0x17, 0xed, 0x8a, 0x1a, 0xc3, 0xbb, 0x49, 0x6c, 0xb4, 0x1e, 0x2c, 0x07, 0x5e,
|
0x37, 0x9c, 0x45, 0xc6, 0xe6, 0x02, 0x90, 0x8c, 0xfe, 0x22, 0x19, 0x7f, 0x8f, 0x36, 0xf3, 0x91,
|
||||||
0xc6, 0xc6, 0xee, 0x0a, 0xa0, 0x4e, 0x7f, 0x95, 0x8c, 0x9f, 0xa1, 0xdd, 0xc5, 0xc9, 0x9d, 0x81,
|
0xeb, 0x82, 0x0b, 0x8e, 0xe4, 0x41, 0xb3, 0x92, 0x5c, 0xd7, 0xfb, 0x2b, 0x76, 0x0b, 0xed, 0x81,
|
||||||
0x0b, 0x8e, 0x0c, 0x78, 0x7b, 0x47, 0x8d, 0xeb, 0xfe, 0x96, 0xdb, 0x42, 0x87, 0xe0, 0xce, 0xa9,
|
0x3b, 0xa3, 0xda, 0xaf, 0xc7, 0x91, 0xb1, 0xf9, 0xe0, 0x7c, 0x44, 0xb2, 0x9c, 0x04, 0x7f, 0x86,
|
||||||
0xf6, 0xdb, 0x49, 0x6c, 0xec, 0x3e, 0xbc, 0xae, 0x48, 0xd6, 0x8b, 0x74, 0x7f, 0xd5, 0xd0, 0x9b,
|
0x1a, 0x82, 0xf5, 0xe1, 0xf3, 0xc1, 0x00, 0x1c, 0x29, 0x9a, 0xaf, 0x24, 0x2a, 0xda, 0x6a, 0xbb,
|
||||||
0x37, 0x8c, 0x19, 0x53, 0x54, 0x15, 0xd9, 0xc7, 0x23, 0xdf, 0xda, 0x8f, 0xb7, 0x1f, 0xe2, 0xf5,
|
0x76, 0x0b, 0xf8, 0x2c, 0x32, 0x6e, 0x14, 0xc7, 0x3d, 0x97, 0x0a, 0x41, 0xe6, 0x69, 0xf8, 0x2e,
|
||||||
0xaf, 0x8e, 0xdd, 0x48, 0x62, 0xa3, 0x3a, 0x47, 0xe7, 0xba, 0xb8, 0x87, 0x6a, 0x0e, 0xb5, 0x23,
|
0xba, 0xae, 0x7e, 0xe0, 0x3c, 0x94, 0x5d, 0x70, 0xb8, 0xd7, 0x17, 0xcd, 0x6a, 0x4b, 0xeb, 0x54,
|
||||||
0x7f, 0x94, 0x7f, 0xf6, 0x9a, 0x76, 0x33, 0xdd, 0xf2, 0xa3, 0xc3, 0x0c, 0x23, 0x8b, 0x28, 0x7e,
|
0x6c, 0x1c, 0x47, 0xc6, 0xf5, 0x47, 0x0b, 0x16, 0x72, 0xce, 0x13, 0x3f, 0x46, 0xb7, 0xf2, 0x37,
|
||||||
0x07, 0x95, 0x23, 0xee, 0xe6, 0x5f, 0x98, 0x6a, 0x12, 0x1b, 0xe5, 0xaf, 0xc9, 0x09, 0x49, 0x31,
|
0x21, 0x30, 0x65, 0x70, 0x94, 0xef, 0xfa, 0x5a, 0xb2, 0x47, 0xdf, 0x8a, 0x23, 0xe3, 0xd6, 0xee,
|
||||||
0x7b, 0xff, 0xf2, 0x4a, 0x2f, 0x3d, 0xbf, 0xd2, 0x4b, 0x2f, 0xae, 0xf4, 0xd2, 0x0f, 0x89, 0xae,
|
0xc5, 0x2e, 0xe4, 0x32, 0x6e, 0xfb, 0x57, 0x0d, 0xbd, 0x7a, 0x41, 0xff, 0x60, 0x8a, 0xaa, 0x22,
|
||||||
0x5d, 0x26, 0xba, 0xf6, 0x3c, 0xd1, 0xb5, 0x17, 0x89, 0xae, 0xfd, 0x99, 0xe8, 0xda, 0x4f, 0x7f,
|
0xdd, 0x8a, 0xd9, 0x38, 0xde, 0x5d, 0xbd, 0x3b, 0xce, 0xaf, 0x53, 0xbb, 0x11, 0x47, 0x46, 0x75,
|
||||||
0xe9, 0xa5, 0x6f, 0xaa, 0x79, 0x6b, 0xff, 0x06, 0x00, 0x00, 0xff, 0xff, 0x78, 0x57, 0x76, 0x28,
|
0x86, 0xce, 0xe2, 0xe2, 0x0e, 0xaa, 0x39, 0xd4, 0x0e, 0xbd, 0x7e, 0xb6, 0xcf, 0xd7, 0xed, 0x75,
|
||||||
0x10, 0x0a, 0x00, 0x00,
|
0x35, 0xbe, 0x7b, 0xbb, 0x29, 0x46, 0x72, 0x2b, 0x7e, 0x13, 0x95, 0xc2, 0xc0, 0xcd, 0x56, 0x67,
|
||||||
|
0x35, 0x8e, 0x8c, 0xd2, 0x63, 0x72, 0x40, 0x14, 0x66, 0xdf, 0x39, 0x39, 0xd5, 0xd7, 0x9e, 0x9d,
|
||||||
|
0xea, 0x6b, 0xcf, 0x4f, 0xf5, 0xb5, 0x1f, 0x62, 0x5d, 0x3b, 0x89, 0x75, 0xed, 0x59, 0xac, 0x6b,
|
||||||
|
0xcf, 0x63, 0x5d, 0xfb, 0x33, 0xd6, 0xb5, 0x9f, 0xfe, 0xd2, 0xd7, 0xbe, 0xae, 0x66, 0xa5, 0xfd,
|
||||||
|
0x1b, 0x00, 0x00, 0xff, 0xff, 0xbb, 0xc0, 0x7c, 0xc4, 0x6f, 0x0a, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,12 +21,9 @@ syntax = 'proto2';
|
||||||
|
|
||||||
package k8s.io.api.admissionregistration.v1beta1;
|
package k8s.io.api.admissionregistration.v1beta1;
|
||||||
|
|
||||||
import "k8s.io/api/core/v1/generated.proto";
|
|
||||||
import "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1beta1";
|
option go_package = "v1beta1";
|
||||||
|
@ -69,7 +66,7 @@ message Rule {
|
||||||
repeated string apiVersions = 2;
|
repeated string apiVersions = 2;
|
||||||
|
|
||||||
// Resources is a list of resources this rule applies to.
|
// Resources is a list of resources this rule applies to.
|
||||||
//
|
//
|
||||||
// For example:
|
// For example:
|
||||||
// 'pods' means pods.
|
// 'pods' means pods.
|
||||||
// 'pods/log' means the log subresource of pods.
|
// 'pods/log' means the log subresource of pods.
|
||||||
|
@ -77,13 +74,25 @@ message Rule {
|
||||||
// 'pods/*' means all subresources of pods.
|
// 'pods/*' means all subresources of pods.
|
||||||
// '*/scale' means all scale subresources.
|
// '*/scale' means all scale subresources.
|
||||||
// '*/*' means all resources and their subresources.
|
// '*/*' means all resources and their subresources.
|
||||||
//
|
//
|
||||||
// If wildcard is present, the validation rule will ensure resources do not
|
// If wildcard is present, the validation rule will ensure resources do not
|
||||||
// overlap with each other.
|
// overlap with each other.
|
||||||
//
|
//
|
||||||
// Depending on the enclosing object, subresources might not be allowed.
|
// Depending on the enclosing object, subresources might not be allowed.
|
||||||
// Required.
|
// Required.
|
||||||
repeated string resources = 3;
|
repeated string resources = 3;
|
||||||
|
|
||||||
|
// scope specifies the scope of this rule.
|
||||||
|
// Valid values are "Cluster", "Namespaced", and "*"
|
||||||
|
// "Cluster" means that only cluster-scoped resources will match this rule.
|
||||||
|
// Namespace API objects are cluster-scoped.
|
||||||
|
// "Namespaced" means that only namespaced resources will match this rule.
|
||||||
|
// "*" means that there are no scope restrictions.
|
||||||
|
// Subresources match the scope of their parent resource.
|
||||||
|
// Default is "*".
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
optional string scope = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make
|
// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make
|
||||||
|
@ -171,7 +180,7 @@ message Webhook {
|
||||||
// object itself is a namespace, the matching is performed on
|
// object itself is a namespace, the matching is performed on
|
||||||
// object.metadata.labels. If the object is another cluster scoped resource,
|
// object.metadata.labels. If the object is another cluster scoped resource,
|
||||||
// it never skips the webhook.
|
// it never skips the webhook.
|
||||||
//
|
//
|
||||||
// For example, to run the webhook on any objects whose namespace is not
|
// For example, to run the webhook on any objects whose namespace is not
|
||||||
// associated with "runlevel" of "0" or "1"; you will set the selector as
|
// associated with "runlevel" of "0" or "1"; you will set the selector as
|
||||||
// follows:
|
// follows:
|
||||||
|
@ -187,7 +196,7 @@ message Webhook {
|
||||||
// }
|
// }
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// If instead you want to only run the webhook on any objects whose
|
// If instead you want to only run the webhook on any objects whose
|
||||||
// namespace is associated with the "environment" of "prod" or "staging";
|
// namespace is associated with the "environment" of "prod" or "staging";
|
||||||
// you will set the selector as follows:
|
// you will set the selector as follows:
|
||||||
|
@ -203,61 +212,89 @@ message Webhook {
|
||||||
// }
|
// }
|
||||||
// ]
|
// ]
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// See
|
// See
|
||||||
// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
// https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
// for more examples of label selectors.
|
// for more examples of label selectors.
|
||||||
//
|
//
|
||||||
// Default to the empty LabelSelector, which matches everything.
|
// Default to the empty LabelSelector, which matches everything.
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector namespaceSelector = 5;
|
||||||
|
|
||||||
|
// SideEffects states whether this webhookk has side effects.
|
||||||
|
// Acceptable values are: Unknown, None, Some, NoneOnDryRun
|
||||||
|
// Webhooks with side effects MUST implement a reconciliation system, since a request may be
|
||||||
|
// rejected by a future step in the admission change and the side effects therefore need to be undone.
|
||||||
|
// Requests with the dryRun attribute will be auto-rejected if they match a webhook with
|
||||||
|
// sideEffects == Unknown or Some. Defaults to Unknown.
|
||||||
|
// +optional
|
||||||
|
optional string sideEffects = 6;
|
||||||
|
|
||||||
|
// TimeoutSeconds specifies the timeout for this webhook. After the timeout passes,
|
||||||
|
// the webhook call will be ignored or the API call will fail based on the
|
||||||
|
// failure policy.
|
||||||
|
// The timeout value must be between 1 and 30 seconds.
|
||||||
|
// Default to 30 seconds.
|
||||||
|
// +optional
|
||||||
|
optional int32 timeoutSeconds = 7;
|
||||||
|
|
||||||
|
// AdmissionReviewVersions is an ordered list of preferred `AdmissionReview`
|
||||||
|
// versions the Webhook expects. API server will try to use first version in
|
||||||
|
// the list which it supports. If none of the versions specified in this list
|
||||||
|
// supported by API server, validation will fail for this object.
|
||||||
|
// If a persisted webhook configuration specifies allowed versions and does not
|
||||||
|
// include any versions known to the API Server, calls to the webhook will fail
|
||||||
|
// and be subject to the failure policy.
|
||||||
|
// Default to `['v1beta1']`.
|
||||||
|
// +optional
|
||||||
|
repeated string admissionReviewVersions = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
// WebhookClientConfig contains the information to make a TLS
|
// WebhookClientConfig contains the information to make a TLS
|
||||||
// connection with the webhook
|
// connection with the webhook
|
||||||
message WebhookClientConfig {
|
message WebhookClientConfig {
|
||||||
// `url` gives the location of the webhook, in standard URL form
|
// `url` gives the location of the webhook, in standard URL form
|
||||||
// (`[scheme://]host:port/path`). Exactly one of `url` or `service`
|
// (`scheme://host:port/path`). Exactly one of `url` or `service`
|
||||||
// must be specified.
|
// must be specified.
|
||||||
//
|
//
|
||||||
// The `host` should not refer to a service running in the cluster; use
|
// The `host` should not refer to a service running in the cluster; use
|
||||||
// the `service` field instead. The host might be resolved via external
|
// the `service` field instead. The host might be resolved via external
|
||||||
// DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
|
// DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
|
||||||
// in-cluster DNS as that would be a layering violation). `host` may
|
// in-cluster DNS as that would be a layering violation). `host` may
|
||||||
// also be an IP address.
|
// also be an IP address.
|
||||||
//
|
//
|
||||||
// Please note that using `localhost` or `127.0.0.1` as a `host` is
|
// Please note that using `localhost` or `127.0.0.1` as a `host` is
|
||||||
// risky unless you take great care to run this webhook on all hosts
|
// risky unless you take great care to run this webhook on all hosts
|
||||||
// which run an apiserver which might need to make calls to this
|
// which run an apiserver which might need to make calls to this
|
||||||
// webhook. Such installs are likely to be non-portable, i.e., not easy
|
// webhook. Such installs are likely to be non-portable, i.e., not easy
|
||||||
// to turn up in a new cluster.
|
// to turn up in a new cluster.
|
||||||
//
|
//
|
||||||
// The scheme must be "https"; the URL must begin with "https://".
|
// The scheme must be "https"; the URL must begin with "https://".
|
||||||
//
|
//
|
||||||
// A path is optional, and if present may be any string permissible in
|
// A path is optional, and if present may be any string permissible in
|
||||||
// a URL. You may use the path to pass an arbitrary string to the
|
// a URL. You may use the path to pass an arbitrary string to the
|
||||||
// webhook, for example, a cluster identifier.
|
// webhook, for example, a cluster identifier.
|
||||||
//
|
//
|
||||||
// Attempting to use a user or basic auth e.g. "user:password@" is not
|
// Attempting to use a user or basic auth e.g. "user:password@" is not
|
||||||
// allowed. Fragments ("#...") and query parameters ("?...") are not
|
// allowed. Fragments ("#...") and query parameters ("?...") are not
|
||||||
// allowed, either.
|
// allowed, either.
|
||||||
//
|
//
|
||||||
// +optional
|
// +optional
|
||||||
optional string url = 3;
|
optional string url = 3;
|
||||||
|
|
||||||
// `service` is a reference to the service for this webhook. Either
|
// `service` is a reference to the service for this webhook. Either
|
||||||
// `service` or `url` must be specified.
|
// `service` or `url` must be specified.
|
||||||
//
|
//
|
||||||
// If the webhook is running within the cluster, then you should use `service`.
|
// If the webhook is running within the cluster, then you should use `service`.
|
||||||
//
|
//
|
||||||
// Port 443 will be used if it is open, otherwise it is an error.
|
// Port 443 will be used if it is open, otherwise it is an error.
|
||||||
//
|
//
|
||||||
// +optional
|
// +optional
|
||||||
optional ServiceReference service = 1;
|
optional ServiceReference service = 1;
|
||||||
|
|
||||||
// `caBundle` is a PEM encoded CA bundle which will be used to validate
|
// `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
|
||||||
// the webhook's server certificate.
|
// If unspecified, system trust roots on the apiserver are used.
|
||||||
// Required.
|
// +optional
|
||||||
optional bytes caBundle = 2;
|
optional bytes caBundle = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,8 +49,32 @@ type Rule struct {
|
||||||
// Depending on the enclosing object, subresources might not be allowed.
|
// Depending on the enclosing object, subresources might not be allowed.
|
||||||
// Required.
|
// Required.
|
||||||
Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
|
Resources []string `json:"resources,omitempty" protobuf:"bytes,3,rep,name=resources"`
|
||||||
|
|
||||||
|
// scope specifies the scope of this rule.
|
||||||
|
// Valid values are "Cluster", "Namespaced", and "*"
|
||||||
|
// "Cluster" means that only cluster-scoped resources will match this rule.
|
||||||
|
// Namespace API objects are cluster-scoped.
|
||||||
|
// "Namespaced" means that only namespaced resources will match this rule.
|
||||||
|
// "*" means that there are no scope restrictions.
|
||||||
|
// Subresources match the scope of their parent resource.
|
||||||
|
// Default is "*".
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
Scope *ScopeType `json:"scope,omitempty" protobuf:"bytes,4,rep,name=scope"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ScopeType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// ClusterScope means that scope is limited to cluster-scoped objects.
|
||||||
|
// Namespace objects are cluster-scoped.
|
||||||
|
ClusterScope ScopeType = "Cluster"
|
||||||
|
// NamespacedScope means that scope is limited to namespaced objects.
|
||||||
|
NamespacedScope ScopeType = "Namespaced"
|
||||||
|
// AllScopes means that all scopes are included.
|
||||||
|
AllScopes ScopeType = "*"
|
||||||
|
)
|
||||||
|
|
||||||
type FailurePolicyType string
|
type FailurePolicyType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -60,6 +84,22 @@ const (
|
||||||
Fail FailurePolicyType = "Fail"
|
Fail FailurePolicyType = "Fail"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type SideEffectClass string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// SideEffectClassUnknown means that no information is known about the side effects of calling the webhook.
|
||||||
|
// If a request with the dry-run attribute would trigger a call to this webhook, the request will instead fail.
|
||||||
|
SideEffectClassUnknown SideEffectClass = "Unknown"
|
||||||
|
// SideEffectClassNone means that calling the webhook will have no side effects.
|
||||||
|
SideEffectClassNone SideEffectClass = "None"
|
||||||
|
// SideEffectClassSome means that calling the webhook will possibly have side effects.
|
||||||
|
// If a request with the dry-run attribute would trigger a call to this webhook, the request will instead fail.
|
||||||
|
SideEffectClassSome SideEffectClass = "Some"
|
||||||
|
// SideEffectClassNoneOnDryRun means that calling the webhook will possibly have side effects, but if the
|
||||||
|
// request being reviewed has the dry-run attribute, the side effects will be suppressed.
|
||||||
|
SideEffectClassNoneOnDryRun SideEffectClass = "NoneOnDryRun"
|
||||||
|
)
|
||||||
|
|
||||||
// +genclient
|
// +genclient
|
||||||
// +genclient:nonNamespaced
|
// +genclient:nonNamespaced
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
@ -191,6 +231,34 @@ type Webhook struct {
|
||||||
// Default to the empty LabelSelector, which matches everything.
|
// Default to the empty LabelSelector, which matches everything.
|
||||||
// +optional
|
// +optional
|
||||||
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,5,opt,name=namespaceSelector"`
|
NamespaceSelector *metav1.LabelSelector `json:"namespaceSelector,omitempty" protobuf:"bytes,5,opt,name=namespaceSelector"`
|
||||||
|
|
||||||
|
// SideEffects states whether this webhookk has side effects.
|
||||||
|
// Acceptable values are: Unknown, None, Some, NoneOnDryRun
|
||||||
|
// Webhooks with side effects MUST implement a reconciliation system, since a request may be
|
||||||
|
// rejected by a future step in the admission change and the side effects therefore need to be undone.
|
||||||
|
// Requests with the dryRun attribute will be auto-rejected if they match a webhook with
|
||||||
|
// sideEffects == Unknown or Some. Defaults to Unknown.
|
||||||
|
// +optional
|
||||||
|
SideEffects *SideEffectClass `json:"sideEffects,omitempty" protobuf:"bytes,6,opt,name=sideEffects,casttype=SideEffectClass"`
|
||||||
|
|
||||||
|
// TimeoutSeconds specifies the timeout for this webhook. After the timeout passes,
|
||||||
|
// the webhook call will be ignored or the API call will fail based on the
|
||||||
|
// failure policy.
|
||||||
|
// The timeout value must be between 1 and 30 seconds.
|
||||||
|
// Default to 30 seconds.
|
||||||
|
// +optional
|
||||||
|
TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty" protobuf:"varint,7,opt,name=timeoutSeconds"`
|
||||||
|
|
||||||
|
// AdmissionReviewVersions is an ordered list of preferred `AdmissionReview`
|
||||||
|
// versions the Webhook expects. API server will try to use first version in
|
||||||
|
// the list which it supports. If none of the versions specified in this list
|
||||||
|
// supported by API server, validation will fail for this object.
|
||||||
|
// If a persisted webhook configuration specifies allowed versions and does not
|
||||||
|
// include any versions known to the API Server, calls to the webhook will fail
|
||||||
|
// and be subject to the failure policy.
|
||||||
|
// Default to `['v1beta1']`.
|
||||||
|
// +optional
|
||||||
|
AdmissionReviewVersions []string `json:"admissionReviewVersions,omitempty" protobuf:"bytes,8,rep,name=admissionReviewVersions"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make
|
// RuleWithOperations is a tuple of Operations and Resources. It is recommended to make
|
||||||
|
@ -221,7 +289,7 @@ const (
|
||||||
// connection with the webhook
|
// connection with the webhook
|
||||||
type WebhookClientConfig struct {
|
type WebhookClientConfig struct {
|
||||||
// `url` gives the location of the webhook, in standard URL form
|
// `url` gives the location of the webhook, in standard URL form
|
||||||
// (`[scheme://]host:port/path`). Exactly one of `url` or `service`
|
// (`scheme://host:port/path`). Exactly one of `url` or `service`
|
||||||
// must be specified.
|
// must be specified.
|
||||||
//
|
//
|
||||||
// The `host` should not refer to a service running in the cluster; use
|
// The `host` should not refer to a service running in the cluster; use
|
||||||
|
@ -257,12 +325,12 @@ type WebhookClientConfig struct {
|
||||||
// Port 443 will be used if it is open, otherwise it is an error.
|
// Port 443 will be used if it is open, otherwise it is an error.
|
||||||
//
|
//
|
||||||
// +optional
|
// +optional
|
||||||
Service *ServiceReference `json:"service" protobuf:"bytes,1,opt,name=service"`
|
Service *ServiceReference `json:"service,omitempty" protobuf:"bytes,1,opt,name=service"`
|
||||||
|
|
||||||
// `caBundle` is a PEM encoded CA bundle which will be used to validate
|
// `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
|
||||||
// the webhook's server certificate.
|
// If unspecified, system trust roots on the apiserver are used.
|
||||||
// Required.
|
// +optional
|
||||||
CABundle []byte `json:"caBundle" protobuf:"bytes,2,opt,name=caBundle"`
|
CABundle []byte `json:"caBundle,omitempty" protobuf:"bytes,2,opt,name=caBundle"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServiceReference holds a reference to Service.legacy.k8s.io
|
// ServiceReference holds a reference to Service.legacy.k8s.io
|
||||||
|
|
20
vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
generated
vendored
20
vendor/k8s.io/api/admissionregistration/v1beta1/types_swagger_doc_generated.go
generated
vendored
|
@ -52,6 +52,7 @@ var map_Rule = map[string]string{
|
||||||
"apiGroups": "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.",
|
"apiGroups": "APIGroups is the API groups the resources belong to. '*' is all groups. If '*' is present, the length of the slice must be one. Required.",
|
||||||
"apiVersions": "APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.",
|
"apiVersions": "APIVersions is the API versions the resources belong to. '*' is all versions. If '*' is present, the length of the slice must be one. Required.",
|
||||||
"resources": "Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.",
|
"resources": "Resources is a list of resources this rule applies to.\n\nFor example: 'pods' means pods. 'pods/log' means the log subresource of pods. '*' means all resources, but not subresources. 'pods/*' means all subresources of pods. '*/scale' means all scale subresources. '*/*' means all resources and their subresources.\n\nIf wildcard is present, the validation rule will ensure resources do not overlap with each other.\n\nDepending on the enclosing object, subresources might not be allowed. Required.",
|
||||||
|
"scope": "scope specifies the scope of this rule. Valid values are \"Cluster\", \"Namespaced\", and \"*\" \"Cluster\" means that only cluster-scoped resources will match this rule. Namespace API objects are cluster-scoped. \"Namespaced\" means that only namespaced resources will match this rule. \"*\" means that there are no scope restrictions. Subresources match the scope of their parent resource. Default is \"*\".",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (Rule) SwaggerDoc() map[string]string {
|
func (Rule) SwaggerDoc() map[string]string {
|
||||||
|
@ -99,12 +100,15 @@ func (ValidatingWebhookConfigurationList) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_Webhook = map[string]string{
|
var map_Webhook = map[string]string{
|
||||||
"": "Webhook describes an admission webhook and the resources and operations it applies to.",
|
"": "Webhook describes an admission webhook and the resources and operations it applies to.",
|
||||||
"name": "The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
|
"name": "The name of the admission webhook. Name should be fully qualified, e.g., imagepolicy.kubernetes.io, where \"imagepolicy\" is the name of the webhook, and kubernetes.io is the name of the organization. Required.",
|
||||||
"clientConfig": "ClientConfig defines how to communicate with the hook. Required",
|
"clientConfig": "ClientConfig defines how to communicate with the hook. Required",
|
||||||
"rules": "Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.",
|
"rules": "Rules describes what operations on what resources/subresources the webhook cares about. The webhook cares about an operation if it matches _any_ Rule. However, in order to prevent ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks from putting the cluster in a state which cannot be recovered from without completely disabling the plugin, ValidatingAdmissionWebhooks and MutatingAdmissionWebhooks are never called on admission requests for ValidatingWebhookConfiguration and MutatingWebhookConfiguration objects.",
|
||||||
"failurePolicy": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.",
|
"failurePolicy": "FailurePolicy defines how unrecognized errors from the admission endpoint are handled - allowed values are Ignore or Fail. Defaults to Ignore.",
|
||||||
"namespaceSelector": "NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\n\nFor example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\"; you will set the selector as follows: \"namespaceSelector\": {\n \"matchExpressions\": [\n {\n \"key\": \"runlevel\",\n \"operator\": \"NotIn\",\n \"values\": [\n \"0\",\n \"1\"\n ]\n }\n ]\n}\n\nIf instead you want to only run the webhook on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n \"matchExpressions\": [\n {\n \"key\": \"environment\",\n \"operator\": \"In\",\n \"values\": [\n \"prod\",\n \"staging\"\n ]\n }\n ]\n}\n\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n\nDefault to the empty LabelSelector, which matches everything.",
|
"namespaceSelector": "NamespaceSelector decides whether to run the webhook on an object based on whether the namespace for that object matches the selector. If the object itself is a namespace, the matching is performed on object.metadata.labels. If the object is another cluster scoped resource, it never skips the webhook.\n\nFor example, to run the webhook on any objects whose namespace is not associated with \"runlevel\" of \"0\" or \"1\"; you will set the selector as follows: \"namespaceSelector\": {\n \"matchExpressions\": [\n {\n \"key\": \"runlevel\",\n \"operator\": \"NotIn\",\n \"values\": [\n \"0\",\n \"1\"\n ]\n }\n ]\n}\n\nIf instead you want to only run the webhook on any objects whose namespace is associated with the \"environment\" of \"prod\" or \"staging\"; you will set the selector as follows: \"namespaceSelector\": {\n \"matchExpressions\": [\n {\n \"key\": \"environment\",\n \"operator\": \"In\",\n \"values\": [\n \"prod\",\n \"staging\"\n ]\n }\n ]\n}\n\nSee https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ for more examples of label selectors.\n\nDefault to the empty LabelSelector, which matches everything.",
|
||||||
|
"sideEffects": "SideEffects states whether this webhookk has side effects. Acceptable values are: Unknown, None, Some, NoneOnDryRun Webhooks with side effects MUST implement a reconciliation system, since a request may be rejected by a future step in the admission change and the side effects therefore need to be undone. Requests with the dryRun attribute will be auto-rejected if they match a webhook with sideEffects == Unknown or Some. Defaults to Unknown.",
|
||||||
|
"timeoutSeconds": "TimeoutSeconds specifies the timeout for this webhook. After the timeout passes, the webhook call will be ignored or the API call will fail based on the failure policy. The timeout value must be between 1 and 30 seconds. Default to 30 seconds.",
|
||||||
|
"admissionReviewVersions": "AdmissionReviewVersions is an ordered list of preferred `AdmissionReview` versions the Webhook expects. API server will try to use first version in the list which it supports. If none of the versions specified in this list supported by API server, validation will fail for this object. If a persisted webhook configuration specifies allowed versions and does not include any versions known to the API Server, calls to the webhook will fail and be subject to the failure policy. Default to `['v1beta1']`.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (Webhook) SwaggerDoc() map[string]string {
|
func (Webhook) SwaggerDoc() map[string]string {
|
||||||
|
@ -113,9 +117,9 @@ func (Webhook) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_WebhookClientConfig = map[string]string{
|
var map_WebhookClientConfig = map[string]string{
|
||||||
"": "WebhookClientConfig contains the information to make a TLS connection with the webhook",
|
"": "WebhookClientConfig contains the information to make a TLS connection with the webhook",
|
||||||
"url": "`url` gives the location of the webhook, in standard URL form (`[scheme://]host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be \"https\"; the URL must begin with \"https://\".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.",
|
"url": "`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be \"https\"; the URL must begin with \"https://\".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.",
|
||||||
"service": "`service` is a reference to the service for this webhook. Either `service` or `url` must be specified.\n\nIf the webhook is running within the cluster, then you should use `service`.\n\nPort 443 will be used if it is open, otherwise it is an error.",
|
"service": "`service` is a reference to the service for this webhook. Either `service` or `url` must be specified.\n\nIf the webhook is running within the cluster, then you should use `service`.\n\nPort 443 will be used if it is open, otherwise it is an error.",
|
||||||
"caBundle": "`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. Required.",
|
"caBundle": "`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (WebhookClientConfig) SwaggerDoc() map[string]string {
|
func (WebhookClientConfig) SwaggerDoc() map[string]string {
|
||||||
|
|
|
@ -109,6 +109,11 @@ func (in *Rule) DeepCopyInto(out *Rule) {
|
||||||
*out = make([]string, len(*in))
|
*out = make([]string, len(*in))
|
||||||
copy(*out, *in)
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
if in.Scope != nil {
|
||||||
|
in, out := &in.Scope, &out.Scope
|
||||||
|
*out = new(ScopeType)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,12 +154,8 @@ func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Path != nil {
|
if in.Path != nil {
|
||||||
in, out := &in.Path, &out.Path
|
in, out := &in.Path, &out.Path
|
||||||
if *in == nil {
|
*out = new(string)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(string)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -248,21 +249,28 @@ func (in *Webhook) DeepCopyInto(out *Webhook) {
|
||||||
}
|
}
|
||||||
if in.FailurePolicy != nil {
|
if in.FailurePolicy != nil {
|
||||||
in, out := &in.FailurePolicy, &out.FailurePolicy
|
in, out := &in.FailurePolicy, &out.FailurePolicy
|
||||||
if *in == nil {
|
*out = new(FailurePolicyType)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(FailurePolicyType)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.NamespaceSelector != nil {
|
if in.NamespaceSelector != nil {
|
||||||
in, out := &in.NamespaceSelector, &out.NamespaceSelector
|
in, out := &in.NamespaceSelector, &out.NamespaceSelector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
}
|
||||||
*out = new(v1.LabelSelector)
|
if in.SideEffects != nil {
|
||||||
(*in).DeepCopyInto(*out)
|
in, out := &in.SideEffects, &out.SideEffects
|
||||||
}
|
*out = new(SideEffectClass)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.TimeoutSeconds != nil {
|
||||||
|
in, out := &in.TimeoutSeconds, &out.TimeoutSeconds
|
||||||
|
*out = new(int32)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.AdmissionReviewVersions != nil {
|
||||||
|
in, out := &in.AdmissionReviewVersions, &out.AdmissionReviewVersions
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -282,21 +290,13 @@ func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.URL != nil {
|
if in.URL != nil {
|
||||||
in, out := &in.URL, &out.URL
|
in, out := &in.URL, &out.URL
|
||||||
if *in == nil {
|
*out = new(string)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(string)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Service != nil {
|
if in.Service != nil {
|
||||||
in, out := &in.Service, &out.Service
|
in, out := &in.Service, &out.Service
|
||||||
if *in == nil {
|
*out = new(ServiceReference)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ServiceReference)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.CABundle != nil {
|
if in.CABundle != nil {
|
||||||
in, out := &in.CABundle, &out.CABundle
|
in, out := &in.CABundle, &out.CABundle
|
||||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1 // import "k8s.io/api/apps/v1"
|
package v1 // import "k8s.io/api/apps/v1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1 is a generated protocol buffer package.
|
Package v1 is a generated protocol buffer package.
|
||||||
|
@ -61,7 +60,6 @@ import fmt "fmt"
|
||||||
import math "math"
|
import math "math"
|
||||||
|
|
||||||
import k8s_io_api_core_v1 "k8s.io/api/core/v1"
|
import k8s_io_api_core_v1 "k8s.io/api/core/v1"
|
||||||
|
|
||||||
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr"
|
import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -1441,24 +1439,6 @@ func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -6812,134 +6792,133 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 2051 bytes of a gzipped FileDescriptorProto
|
// 2037 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x24, 0x47,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcd, 0x6f, 0x24, 0x47,
|
||||||
0x1d, 0x75, 0xcf, 0x87, 0x3d, 0x2e, 0xaf, 0xed, 0xdd, 0xb2, 0xb1, 0x27, 0xbb, 0x64, 0x66, 0x19,
|
0x1d, 0x75, 0xcf, 0x87, 0x3d, 0x2e, 0xaf, 0xed, 0xdd, 0xb2, 0xb1, 0x27, 0xbb, 0x64, 0x66, 0x19,
|
||||||
0x60, 0xe3, 0xcd, 0x66, 0x7b, 0xf0, 0x66, 0x13, 0xa1, 0x2c, 0x02, 0x79, 0xc6, 0x21, 0x84, 0x78,
|
0x60, 0xe3, 0x64, 0xb3, 0x3d, 0xec, 0x66, 0x13, 0xa1, 0x2c, 0x02, 0x79, 0xc6, 0x21, 0x84, 0x78,
|
||||||
0x6c, 0x53, 0x5e, 0xef, 0x61, 0x09, 0x12, 0x35, 0x33, 0xb5, 0xe3, 0x8e, 0xfb, 0x4b, 0xdd, 0xd5,
|
0x6c, 0x53, 0x5e, 0xef, 0x61, 0x09, 0x12, 0xe5, 0xe9, 0xda, 0x71, 0xc7, 0xfd, 0xa5, 0xee, 0xea,
|
||||||
0xc3, 0x8e, 0xb8, 0x20, 0x24, 0x38, 0x71, 0xe0, 0x3f, 0x41, 0x08, 0xc1, 0x0d, 0x45, 0x88, 0xcb,
|
0x61, 0x47, 0x5c, 0x10, 0x12, 0x9c, 0x38, 0xf0, 0x9f, 0x20, 0x84, 0xe0, 0x86, 0x22, 0xc4, 0x65,
|
||||||
0x5e, 0x90, 0x22, 0x2e, 0xe4, 0x64, 0xb1, 0x93, 0x13, 0x42, 0x39, 0x72, 0xc9, 0x05, 0x54, 0xd5,
|
0x2f, 0x48, 0x11, 0x17, 0x72, 0xb2, 0xd8, 0xc9, 0x09, 0xa1, 0x1c, 0xb9, 0xe4, 0x02, 0xaa, 0xea,
|
||||||
0xd5, 0xdf, 0xd5, 0x9e, 0xb1, 0x37, 0xeb, 0xa0, 0x68, 0x6f, 0x9e, 0xaa, 0xf7, 0x7b, 0xfd, 0xab,
|
0xea, 0xef, 0x6a, 0xcf, 0xd8, 0x9b, 0x75, 0x50, 0x94, 0x9b, 0xa7, 0xea, 0xfd, 0x5e, 0xff, 0xaa,
|
||||||
0xaa, 0x5f, 0xd5, 0x7b, 0x5d, 0x6d, 0x70, 0xef, 0xf8, 0xdb, 0xae, 0xaa, 0x59, 0xcd, 0x63, 0xaf,
|
0xea, 0x57, 0xf5, 0x5e, 0x57, 0x1b, 0xdc, 0x3b, 0xfe, 0xb6, 0xa7, 0xea, 0x76, 0xfb, 0xd8, 0x3f,
|
||||||
0x4b, 0x1c, 0x93, 0x50, 0xe2, 0x36, 0x87, 0xc4, 0xec, 0x5b, 0x4e, 0x53, 0x74, 0x60, 0x5b, 0x6b,
|
0x24, 0xae, 0x45, 0x28, 0xf1, 0xda, 0x43, 0x62, 0x69, 0xb6, 0xdb, 0x16, 0x1d, 0xd8, 0xd1, 0xdb,
|
||||||
0x62, 0xdb, 0x76, 0x9b, 0xc3, 0xcd, 0xe6, 0x80, 0x98, 0xc4, 0xc1, 0x94, 0xf4, 0x55, 0xdb, 0xb1,
|
0xd8, 0x71, 0xbc, 0xf6, 0xf0, 0x76, 0x7b, 0x40, 0x2c, 0xe2, 0x62, 0x4a, 0x34, 0xd5, 0x71, 0x6d,
|
||||||
0xa8, 0x05, 0xa1, 0x8f, 0x51, 0xb1, 0xad, 0xa9, 0x0c, 0xa3, 0x0e, 0x37, 0xaf, 0xde, 0x1e, 0x68,
|
0x6a, 0x43, 0x18, 0x60, 0x54, 0xec, 0xe8, 0x2a, 0xc3, 0xa8, 0xc3, 0xdb, 0x57, 0x6f, 0x0d, 0x74,
|
||||||
0xf4, 0xc8, 0xeb, 0xaa, 0x3d, 0xcb, 0x68, 0x0e, 0xac, 0x81, 0xd5, 0xe4, 0xd0, 0xae, 0xf7, 0x88,
|
0x7a, 0xe4, 0x1f, 0xaa, 0x7d, 0xdb, 0x6c, 0x0f, 0xec, 0x81, 0xdd, 0xe6, 0xd0, 0x43, 0xff, 0x11,
|
||||||
0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x3e, 0xc5, 0xd5, 0x46, 0xec, 0x31, 0x3d, 0xcb, 0x21, 0x92, 0xc7,
|
0xff, 0xc5, 0x7f, 0xf0, 0xbf, 0x02, 0x8a, 0xab, 0xad, 0xc4, 0x63, 0xfa, 0xb6, 0x4b, 0x24, 0x8f,
|
||||||
0x5c, 0xbd, 0x19, 0xc3, 0xd8, 0x96, 0xae, 0xf5, 0x46, 0xcd, 0xe1, 0x66, 0x97, 0x50, 0x9c, 0x85,
|
0xb9, 0x7a, 0x37, 0xc6, 0x98, 0xb8, 0x7f, 0xa4, 0x5b, 0xc4, 0x1d, 0xb5, 0x9d, 0xe3, 0x01, 0x6b,
|
||||||
0xde, 0x8d, 0xa0, 0x06, 0xee, 0x1d, 0x69, 0x26, 0x71, 0x46, 0x4d, 0xfb, 0x78, 0xc0, 0x1a, 0xdc,
|
0xf0, 0xda, 0x26, 0xa1, 0x58, 0x16, 0xd5, 0x2e, 0x8a, 0x72, 0x7d, 0x8b, 0xea, 0x26, 0xc9, 0x05,
|
||||||
0xa6, 0x41, 0x28, 0x96, 0x3d, 0xa0, 0x99, 0x17, 0xe5, 0x78, 0x26, 0xd5, 0x0c, 0x92, 0x09, 0x78,
|
0xbc, 0x31, 0x29, 0xc0, 0xeb, 0x1f, 0x11, 0x13, 0xe7, 0xe2, 0x5e, 0x2b, 0x8a, 0xf3, 0xa9, 0x6e,
|
||||||
0x73, 0x52, 0x80, 0xdb, 0x3b, 0x22, 0x06, 0xce, 0xc4, 0xbd, 0x9e, 0x17, 0xe7, 0x51, 0x4d, 0x6f,
|
0xb4, 0x75, 0x8b, 0x7a, 0xd4, 0xcd, 0x06, 0xb5, 0xfe, 0xa3, 0x00, 0xd8, 0xb5, 0x2d, 0xea, 0xda,
|
||||||
0x6a, 0x26, 0x75, 0xa9, 0x93, 0x0e, 0x6a, 0xfc, 0x47, 0x01, 0xb0, 0x6d, 0x99, 0xd4, 0xb1, 0x74,
|
0x86, 0x41, 0x5c, 0x44, 0x86, 0xba, 0xa7, 0xdb, 0x16, 0xfc, 0x29, 0xa8, 0xb1, 0xf1, 0x68, 0x98,
|
||||||
0x9d, 0x38, 0x88, 0x0c, 0x35, 0x57, 0xb3, 0x4c, 0xf8, 0x53, 0x50, 0x61, 0xe3, 0xe9, 0x63, 0x8a,
|
0xe2, 0xba, 0x72, 0x5d, 0xd9, 0x58, 0xb8, 0xf3, 0x2d, 0x35, 0x9e, 0xe4, 0x88, 0x5e, 0x75, 0x8e,
|
||||||
0xab, 0xca, 0x75, 0x65, 0x63, 0xe1, 0xce, 0xb7, 0xd4, 0x68, 0x3d, 0x42, 0x7a, 0xd5, 0x3e, 0x1e,
|
0x07, 0xac, 0xc1, 0x53, 0x19, 0x5a, 0x1d, 0xde, 0x56, 0x77, 0x0f, 0xdf, 0x27, 0x7d, 0xda, 0x23,
|
||||||
0xb0, 0x06, 0x57, 0x65, 0x68, 0x75, 0xb8, 0xa9, 0xee, 0x75, 0x3f, 0x20, 0x3d, 0xda, 0x21, 0x14,
|
0x14, 0x77, 0xe0, 0x93, 0x93, 0xe6, 0xcc, 0xf8, 0xa4, 0x09, 0xe2, 0x36, 0x14, 0xb1, 0xc2, 0x5d,
|
||||||
0xb7, 0xe0, 0x93, 0x93, 0xfa, 0xcc, 0xf8, 0xa4, 0x0e, 0xa2, 0x36, 0x14, 0xb2, 0xc2, 0x3d, 0x50,
|
0x50, 0xe1, 0xec, 0x25, 0xce, 0x7e, 0xab, 0x90, 0x5d, 0x0c, 0x5a, 0x45, 0xf8, 0x67, 0x6f, 0x3d,
|
||||||
0xe2, 0xec, 0x05, 0xce, 0x7e, 0x3b, 0x97, 0x5d, 0x0c, 0x5a, 0x45, 0xf8, 0x67, 0x6f, 0x3f, 0xa6,
|
0xa6, 0xc4, 0x62, 0xe9, 0x75, 0x2e, 0x09, 0xea, 0xca, 0x16, 0xa6, 0x18, 0x71, 0x22, 0xf8, 0x2a,
|
||||||
0xc4, 0x64, 0xe9, 0xb5, 0x2e, 0x09, 0xea, 0xd2, 0x36, 0xa6, 0x18, 0x71, 0x22, 0xf8, 0x1a, 0xa8,
|
0xa8, 0xb9, 0x22, 0xfd, 0x7a, 0xf9, 0xba, 0xb2, 0x51, 0xee, 0x5c, 0x16, 0xa8, 0x5a, 0x38, 0x2c,
|
||||||
0x38, 0x22, 0xfd, 0x6a, 0xf1, 0xba, 0xb2, 0x51, 0x6c, 0x5d, 0x16, 0xa8, 0x4a, 0x30, 0x2c, 0x14,
|
0x14, 0x21, 0x5a, 0x7f, 0x55, 0xc0, 0x5a, 0x7e, 0xdc, 0xdb, 0xba, 0x47, 0xe1, 0x7b, 0xb9, 0xb1,
|
||||||
0x22, 0x1a, 0x7f, 0x55, 0xc0, 0x5a, 0x76, 0xdc, 0x3b, 0x9a, 0x4b, 0xe1, 0xfb, 0x99, 0xb1, 0xab,
|
0xab, 0xd3, 0x8d, 0x9d, 0x45, 0xf3, 0x91, 0x47, 0x0f, 0x0e, 0x5b, 0x12, 0xe3, 0x7e, 0x17, 0x54,
|
||||||
0xd3, 0x8d, 0x9d, 0x45, 0xf3, 0x91, 0x87, 0x0f, 0x0e, 0x5a, 0x62, 0xe3, 0x7e, 0x0f, 0x94, 0x35,
|
0x75, 0x4a, 0x4c, 0xaf, 0x5e, 0xba, 0x5e, 0xde, 0x58, 0xb8, 0x73, 0x43, 0xcd, 0xd7, 0xae, 0x9a,
|
||||||
0x4a, 0x0c, 0xb7, 0x5a, 0xb8, 0x5e, 0xdc, 0x58, 0xb8, 0x73, 0x43, 0xcd, 0x96, 0xb9, 0x9a, 0x4d,
|
0x4f, 0xac, 0xb3, 0x28, 0x28, 0xab, 0xef, 0xb0, 0x60, 0x14, 0x70, 0xb4, 0xfe, 0xab, 0x80, 0xf9,
|
||||||
0xac, 0xb5, 0x28, 0x28, 0xcb, 0xef, 0xb2, 0x60, 0xe4, 0x73, 0x34, 0xfe, 0xab, 0x80, 0xf9, 0x6d,
|
0x2d, 0x4c, 0x4c, 0xdb, 0xda, 0x27, 0xf4, 0x02, 0x16, 0xad, 0x0b, 0x2a, 0x9e, 0x43, 0xfa, 0x62,
|
||||||
0x4c, 0x0c, 0xcb, 0x3c, 0x20, 0xf4, 0x02, 0x16, 0xad, 0x0d, 0x4a, 0xae, 0x4d, 0x7a, 0x62, 0xd1,
|
0xd1, 0xbe, 0x26, 0xcb, 0x3d, 0x4a, 0x67, 0xdf, 0x21, 0xfd, 0x78, 0xa1, 0xd8, 0x2f, 0xc4, 0x83,
|
||||||
0xbe, 0x26, 0xcb, 0x3d, 0x4c, 0xe7, 0xc0, 0x26, 0xbd, 0x68, 0xa1, 0xd8, 0x2f, 0xc4, 0x83, 0xe1,
|
0xe1, 0xbb, 0x60, 0xd6, 0xa3, 0x98, 0xfa, 0x1e, 0x5f, 0xa6, 0x85, 0x3b, 0x5f, 0x3f, 0x9d, 0x86,
|
||||||
0x7b, 0x60, 0xd6, 0xa5, 0x98, 0x7a, 0x2e, 0x5f, 0xa6, 0x85, 0x3b, 0x5f, 0x3f, 0x9d, 0x86, 0x43,
|
0x43, 0x3b, 0x4b, 0x82, 0x68, 0x36, 0xf8, 0x8d, 0x04, 0x45, 0xeb, 0x5f, 0x25, 0x00, 0x23, 0x6c,
|
||||||
0x5b, 0x4b, 0x82, 0x68, 0xd6, 0xff, 0x8d, 0x04, 0x45, 0xe3, 0x5f, 0x05, 0x00, 0x43, 0x6c, 0xdb,
|
0xd7, 0xb6, 0x34, 0x9d, 0xb2, 0xfa, 0x7d, 0x13, 0x54, 0xe8, 0xc8, 0x21, 0x7c, 0x1a, 0xe6, 0x3b,
|
||||||
0x32, 0xfb, 0x1a, 0x65, 0xf5, 0xfb, 0x16, 0x28, 0xd1, 0x91, 0x4d, 0xf8, 0x34, 0xcc, 0xb7, 0x6e,
|
0x37, 0xc2, 0x2c, 0xee, 0x8f, 0x1c, 0xf2, 0xe9, 0x49, 0x73, 0x2d, 0x1f, 0xc1, 0x7a, 0x10, 0x8f,
|
||||||
0x04, 0x59, 0xdc, 0x1f, 0xd9, 0xe4, 0xb3, 0x93, 0xfa, 0x5a, 0x36, 0x82, 0xf5, 0x20, 0x1e, 0x03,
|
0x81, 0xdb, 0x51, 0x7e, 0x25, 0x1e, 0x7d, 0x37, 0xfd, 0xe8, 0x4f, 0x4f, 0x9a, 0x92, 0xc3, 0x42,
|
||||||
0x77, 0xc2, 0xfc, 0x0a, 0x3c, 0xfa, 0x6e, 0xf2, 0xd1, 0x9f, 0x9d, 0xd4, 0x25, 0xe7, 0x8a, 0x1a,
|
0x8d, 0x98, 0xd2, 0x09, 0xc2, 0x21, 0x80, 0x06, 0xf6, 0xe8, 0x7d, 0x17, 0x5b, 0x5e, 0xf0, 0x24,
|
||||||
0x32, 0x25, 0x13, 0x84, 0x43, 0x00, 0x75, 0xec, 0xd2, 0xfb, 0x0e, 0x36, 0x5d, 0xff, 0x49, 0x9a,
|
0xdd, 0x24, 0x62, 0xe4, 0xaf, 0x4c, 0xb7, 0x3c, 0x2c, 0xa2, 0x73, 0x55, 0x64, 0x01, 0xb7, 0x73,
|
||||||
0x41, 0xc4, 0xc8, 0x5f, 0x9d, 0x6e, 0x79, 0x58, 0x44, 0xeb, 0xaa, 0xc8, 0x02, 0xee, 0x64, 0xd8,
|
0x6c, 0x48, 0xf2, 0x04, 0x78, 0x03, 0xcc, 0xba, 0x04, 0x7b, 0xb6, 0x55, 0xaf, 0xf0, 0x51, 0x44,
|
||||||
0x90, 0xe4, 0x09, 0xf0, 0x06, 0x98, 0x75, 0x08, 0x76, 0x2d, 0xb3, 0x5a, 0xe2, 0xa3, 0x08, 0x27,
|
0x13, 0x88, 0x78, 0x2b, 0x12, 0xbd, 0xf0, 0x65, 0x30, 0x67, 0x12, 0xcf, 0xc3, 0x03, 0x52, 0xaf,
|
||||||
0x10, 0xf1, 0x56, 0x24, 0x7a, 0xe1, 0x4d, 0x30, 0x67, 0x10, 0xd7, 0xc5, 0x03, 0x52, 0x2d, 0x73,
|
0x72, 0xe0, 0xb2, 0x00, 0xce, 0xf5, 0x82, 0x66, 0x14, 0xf6, 0xb7, 0x7e, 0xaf, 0x80, 0xc5, 0x68,
|
||||||
0xe0, 0xb2, 0x00, 0xce, 0x75, 0xfc, 0x66, 0x14, 0xf4, 0x37, 0x7e, 0xaf, 0x80, 0xc5, 0x70, 0xe6,
|
0xe6, 0x2e, 0x60, 0xab, 0x74, 0xd2, 0x5b, 0xe5, 0xc5, 0x53, 0xeb, 0xa4, 0x60, 0x87, 0x7c, 0x50,
|
||||||
0x2e, 0x60, 0xab, 0xb4, 0x92, 0x5b, 0xe5, 0xe5, 0x53, 0xeb, 0x24, 0x67, 0x87, 0x7c, 0x58, 0x8c,
|
0x4e, 0xe4, 0xcc, 0x8a, 0x10, 0xfe, 0x04, 0xd4, 0x3c, 0x62, 0x90, 0x3e, 0xb5, 0x5d, 0x91, 0xf3,
|
||||||
0xe5, 0xcc, 0x8a, 0x10, 0xfe, 0x04, 0x54, 0x5c, 0xa2, 0x93, 0x1e, 0xb5, 0x1c, 0x91, 0xf3, 0xeb,
|
0x6b, 0x53, 0xe6, 0x8c, 0x0f, 0x89, 0xb1, 0x2f, 0x42, 0x3b, 0x97, 0x58, 0xd2, 0xe1, 0x2f, 0x14,
|
||||||
0x53, 0xe6, 0x8c, 0xbb, 0x44, 0x3f, 0x10, 0xa1, 0xad, 0x4b, 0x2c, 0xe9, 0xe0, 0x17, 0x0a, 0x29,
|
0x51, 0xc2, 0x1f, 0x81, 0x1a, 0x25, 0xa6, 0x63, 0x60, 0x4a, 0xc4, 0x36, 0x49, 0xd5, 0x37, 0x2b,
|
||||||
0xe1, 0x8f, 0x40, 0x85, 0x12, 0xc3, 0xd6, 0x31, 0x25, 0x62, 0x9b, 0x24, 0xea, 0x9b, 0x95, 0x0b,
|
0x17, 0x46, 0xb6, 0x67, 0x6b, 0xf7, 0x05, 0x8c, 0x6f, 0x94, 0x68, 0x1e, 0xc2, 0x56, 0x14, 0xd1,
|
||||||
0x23, 0xdb, 0xb7, 0xfa, 0xf7, 0x05, 0x8c, 0x6f, 0x94, 0x70, 0x1e, 0x82, 0x56, 0x14, 0xd2, 0xc0,
|
0xc0, 0x63, 0xb0, 0xe4, 0x3b, 0x1a, 0x43, 0x52, 0x76, 0x74, 0x0f, 0x46, 0xa2, 0x7c, 0x6e, 0x9e,
|
||||||
0x63, 0xb0, 0xe4, 0xd9, 0x7d, 0x86, 0xa4, 0xec, 0xe8, 0x1e, 0x8c, 0x44, 0xf9, 0xdc, 0x3a, 0x75,
|
0x3a, 0x21, 0x07, 0xa9, 0x90, 0xce, 0x9a, 0x78, 0xc0, 0x52, 0xba, 0x1d, 0x65, 0xa8, 0xe1, 0x26,
|
||||||
0x42, 0x0e, 0x13, 0x21, 0xad, 0x35, 0xf1, 0x80, 0xa5, 0x64, 0x3b, 0x4a, 0x51, 0xc3, 0x2d, 0xb0,
|
0x58, 0x36, 0x75, 0x0b, 0x11, 0xac, 0x8d, 0xf6, 0x49, 0xdf, 0xb6, 0x34, 0x8f, 0x17, 0x50, 0xb5,
|
||||||
0x6c, 0x68, 0x26, 0x22, 0xb8, 0x3f, 0x3a, 0x20, 0x3d, 0xcb, 0xec, 0xbb, 0xbc, 0x80, 0xca, 0xad,
|
0xb3, 0x2e, 0x08, 0x96, 0x7b, 0xe9, 0x6e, 0x94, 0xc5, 0xc3, 0x6d, 0xb0, 0x1a, 0x9e, 0xb3, 0x3f,
|
||||||
0x75, 0x41, 0xb0, 0xdc, 0x49, 0x76, 0xa3, 0x34, 0x1e, 0xee, 0x80, 0xd5, 0xe0, 0x9c, 0xfd, 0x81,
|
0xd0, 0x3d, 0x6a, 0xbb, 0xa3, 0x6d, 0xdd, 0xd4, 0x69, 0x7d, 0x96, 0xf3, 0xd4, 0xc7, 0x27, 0xcd,
|
||||||
0xe6, 0x52, 0xcb, 0x19, 0xed, 0x68, 0x86, 0x46, 0xab, 0xb3, 0x9c, 0xa7, 0x3a, 0x3e, 0xa9, 0xaf,
|
0x55, 0x24, 0xe9, 0x47, 0xd2, 0xa8, 0xd6, 0x6f, 0x66, 0xc1, 0x72, 0xe6, 0x34, 0x80, 0x0f, 0xc0,
|
||||||
0x22, 0x49, 0x3f, 0x92, 0x46, 0x35, 0x7e, 0x33, 0x0b, 0x96, 0x53, 0xa7, 0x01, 0x7c, 0x00, 0xd6,
|
0x5a, 0xdf, 0x77, 0x5d, 0x62, 0xd1, 0x1d, 0xdf, 0x3c, 0x24, 0xee, 0x7e, 0xff, 0x88, 0x68, 0xbe,
|
||||||
0x7a, 0x9e, 0xe3, 0x10, 0x93, 0xee, 0x7a, 0x46, 0x97, 0x38, 0x07, 0xbd, 0x23, 0xd2, 0xf7, 0x74,
|
0x41, 0x34, 0xbe, 0xa2, 0xd5, 0x4e, 0x43, 0xe4, 0xba, 0xd6, 0x95, 0xa2, 0x50, 0x41, 0x34, 0xfc,
|
||||||
0xd2, 0xe7, 0x2b, 0x5a, 0x6e, 0xd5, 0x44, 0xae, 0x6b, 0x6d, 0x29, 0x0a, 0xe5, 0x44, 0xc3, 0x1f,
|
0x21, 0x80, 0x16, 0x6f, 0xea, 0xe9, 0x9e, 0x17, 0x71, 0x96, 0x38, 0x67, 0xb4, 0x01, 0x77, 0x72,
|
||||||
0x02, 0x68, 0xf2, 0xa6, 0x8e, 0xe6, 0xba, 0x21, 0x67, 0x81, 0x73, 0x86, 0x1b, 0x70, 0x37, 0x83,
|
0x08, 0x24, 0x89, 0x62, 0x39, 0x6a, 0xc4, 0xd3, 0x5d, 0xa2, 0x65, 0x73, 0x2c, 0xa7, 0x73, 0xdc,
|
||||||
0x40, 0x92, 0x28, 0x96, 0x63, 0x9f, 0xb8, 0x9a, 0x43, 0xfa, 0xe9, 0x1c, 0x8b, 0xc9, 0x1c, 0xb7,
|
0x92, 0xa2, 0x50, 0x41, 0x34, 0x7c, 0x1d, 0x2c, 0x04, 0x4f, 0xe3, 0x73, 0x2e, 0x16, 0x67, 0x45,
|
||||||
0xa5, 0x28, 0x94, 0x13, 0x0d, 0xdf, 0x00, 0x0b, 0xfe, 0xd3, 0xf8, 0x9c, 0x8b, 0xc5, 0x59, 0x11,
|
0x90, 0x2d, 0xec, 0xc4, 0x5d, 0x28, 0x89, 0x63, 0x43, 0xb3, 0x0f, 0x3d, 0xe2, 0x0e, 0x89, 0xf6,
|
||||||
0x64, 0x0b, 0xbb, 0x51, 0x17, 0x8a, 0xe3, 0xd8, 0xd0, 0xac, 0xae, 0x4b, 0x9c, 0x21, 0xe9, 0xbf,
|
0x76, 0xe0, 0x01, 0x98, 0x50, 0x56, 0xb9, 0x50, 0x46, 0x43, 0xdb, 0xcd, 0x21, 0x90, 0x24, 0x8a,
|
||||||
0xe3, 0x7b, 0x00, 0x26, 0x94, 0x65, 0x2e, 0x94, 0xe1, 0xd0, 0xf6, 0x32, 0x08, 0x24, 0x89, 0x62,
|
0x0d, 0x2d, 0xa8, 0x9a, 0xdc, 0xd0, 0x66, 0xd3, 0x43, 0x3b, 0x90, 0xa2, 0x50, 0x41, 0x34, 0xab,
|
||||||
0x43, 0xf3, 0xab, 0x26, 0x33, 0xb4, 0xd9, 0xe4, 0xd0, 0x0e, 0xa5, 0x28, 0x94, 0x13, 0xcd, 0x6a,
|
0xbd, 0x20, 0xe5, 0xcd, 0x21, 0xd6, 0x0d, 0x7c, 0x68, 0x90, 0xfa, 0x5c, 0xba, 0xf6, 0x76, 0xd2,
|
||||||
0xcf, 0x4f, 0x79, 0x6b, 0x88, 0x35, 0x1d, 0x77, 0x75, 0x52, 0x9d, 0x4b, 0xd6, 0xde, 0x6e, 0xb2,
|
0xdd, 0x28, 0x8b, 0x87, 0x6f, 0x83, 0x2b, 0x41, 0xd3, 0x81, 0x85, 0x23, 0x92, 0x1a, 0x27, 0x79,
|
||||||
0x1b, 0xa5, 0xf1, 0xf0, 0x1d, 0x70, 0xc5, 0x6f, 0x3a, 0x34, 0x71, 0x48, 0x52, 0xe1, 0x24, 0x2f,
|
0x41, 0x90, 0x5c, 0xd9, 0xc9, 0x02, 0x50, 0x3e, 0x06, 0xbe, 0x09, 0x96, 0xfa, 0xb6, 0x61, 0xf0,
|
||||||
0x09, 0x92, 0x2b, 0xbb, 0x69, 0x00, 0xca, 0xc6, 0xc0, 0xb7, 0xc0, 0x52, 0xcf, 0xd2, 0x75, 0x5e,
|
0x7a, 0xec, 0xda, 0xbe, 0x45, 0xeb, 0xf3, 0x9c, 0x05, 0xb2, 0x3d, 0xd4, 0x4d, 0xf5, 0xa0, 0x0c,
|
||||||
0x8f, 0x6d, 0xcb, 0x33, 0x69, 0x75, 0x9e, 0xb3, 0x40, 0xb6, 0x87, 0xda, 0x89, 0x1e, 0x94, 0x42,
|
0x12, 0x3e, 0x04, 0xa0, 0x1f, 0xca, 0x81, 0x57, 0x07, 0xc5, 0x42, 0x9f, 0xd7, 0xa1, 0x58, 0x80,
|
||||||
0xc2, 0x87, 0x00, 0xf4, 0x02, 0x39, 0x70, 0xab, 0x20, 0x5f, 0xe8, 0xb3, 0x3a, 0x14, 0x09, 0x70,
|
0xa3, 0x26, 0x0f, 0x25, 0xd8, 0x5a, 0x1f, 0x28, 0x60, 0xbd, 0x60, 0x8f, 0xc3, 0xef, 0xa5, 0x54,
|
||||||
0xd8, 0xe4, 0xa2, 0x18, 0x5b, 0xe3, 0x43, 0x05, 0xac, 0xe7, 0xec, 0x71, 0xf8, 0xbd, 0x84, 0xea,
|
0xef, 0x66, 0x46, 0xf5, 0xae, 0x15, 0x84, 0x25, 0xa4, 0xaf, 0x0f, 0x16, 0x99, 0xef, 0xd0, 0xad,
|
||||||
0xdd, 0x4a, 0xa9, 0xde, 0xb5, 0x9c, 0xb0, 0x98, 0xf4, 0xf5, 0xc0, 0x22, 0xf3, 0x1d, 0x9a, 0x39,
|
0x41, 0x00, 0x11, 0x27, 0xd8, 0x2b, 0xb2, 0xdc, 0x51, 0x12, 0x18, 0x1f, 0xc3, 0x57, 0xc6, 0x27,
|
||||||
0xf0, 0x21, 0xe2, 0x04, 0x7b, 0x55, 0x96, 0x3b, 0x8a, 0x03, 0xa3, 0x63, 0xf8, 0xca, 0xf8, 0xa4,
|
0xcd, 0xc5, 0x54, 0x1f, 0x4a, 0x73, 0xb6, 0x7e, 0x59, 0x02, 0x60, 0x8b, 0x38, 0x86, 0x3d, 0x32,
|
||||||
0xbe, 0x98, 0xe8, 0x43, 0x49, 0xce, 0xc6, 0x2f, 0x0b, 0x00, 0x6c, 0x13, 0x5b, 0xb7, 0x46, 0x06,
|
0x89, 0x75, 0x11, 0xae, 0x65, 0x2b, 0xe5, 0x5a, 0x5a, 0xd2, 0x85, 0x88, 0xf2, 0x29, 0xb4, 0x2d,
|
||||||
0x31, 0x2f, 0xc2, 0xb5, 0x6c, 0x27, 0x5c, 0x4b, 0x43, 0xba, 0x10, 0x61, 0x3e, 0xb9, 0xb6, 0x65,
|
0xdb, 0x19, 0xdb, 0xf2, 0x8d, 0x09, 0x3c, 0xa7, 0xfb, 0x96, 0x7f, 0x94, 0xc1, 0x4a, 0x0c, 0x8e,
|
||||||
0x27, 0x65, 0x5b, 0xbe, 0x31, 0x81, 0xe7, 0x74, 0xdf, 0xf2, 0x8f, 0x22, 0x58, 0x89, 0xc0, 0x91,
|
0x8d, 0xcb, 0xbd, 0xd4, 0x12, 0xbe, 0x94, 0x59, 0xc2, 0x75, 0x49, 0xc8, 0x73, 0x73, 0x2e, 0x9f,
|
||||||
0x71, 0xb9, 0x97, 0x58, 0xc2, 0x57, 0x52, 0x4b, 0xb8, 0x2e, 0x09, 0x79, 0x6e, 0xce, 0xe5, 0xf3,
|
0xbd, 0x83, 0x80, 0xef, 0x83, 0x25, 0x66, 0x55, 0x82, 0x42, 0xe0, 0x46, 0x68, 0xf6, 0xcc, 0x46,
|
||||||
0x77, 0x10, 0xf0, 0x03, 0xb0, 0xc4, 0xac, 0x8a, 0x5f, 0x08, 0xdc, 0x08, 0xcd, 0x9e, 0xd9, 0x08,
|
0x28, 0x12, 0xb2, 0xed, 0x14, 0x13, 0xca, 0x30, 0x17, 0x18, 0xaf, 0xb9, 0xe7, 0x6d, 0xbc, 0x5a,
|
||||||
0x85, 0x42, 0xb6, 0x93, 0x60, 0x42, 0x29, 0xe6, 0x1c, 0xe3, 0x35, 0xf7, 0xbc, 0x8d, 0x57, 0xe3,
|
0x7f, 0x50, 0xc0, 0x52, 0xbc, 0x4c, 0x17, 0x60, 0x93, 0xba, 0x69, 0x9b, 0xd4, 0x38, 0xbd, 0x2e,
|
||||||
0x0f, 0x0a, 0x58, 0x8a, 0x96, 0xe9, 0x02, 0x6c, 0x52, 0x3b, 0x69, 0x93, 0x6a, 0xa7, 0xd7, 0x65,
|
0x0b, 0x7c, 0xd2, 0xdf, 0x2b, 0xc9, 0xac, 0xb9, 0x51, 0xda, 0x60, 0x2f, 0x54, 0x8e, 0xa1, 0xf7,
|
||||||
0x8e, 0x4f, 0xfa, 0x7b, 0x29, 0x9e, 0x35, 0x37, 0x4a, 0x1b, 0xec, 0x85, 0xca, 0xd6, 0xb5, 0x1e,
|
0xb1, 0x27, 0x64, 0xf5, 0x52, 0xf0, 0x32, 0x15, 0xb4, 0xa1, 0xa8, 0x37, 0x65, 0xa9, 0x4a, 0xcf,
|
||||||
0x76, 0x85, 0xac, 0x5e, 0xf2, 0x5f, 0xa6, 0xfc, 0x36, 0x14, 0xf6, 0x26, 0x2c, 0x55, 0xe1, 0xf9,
|
0xd7, 0x52, 0x95, 0x3f, 0x1b, 0x4b, 0x75, 0x1f, 0xd4, 0xbc, 0xd0, 0x4c, 0x55, 0x38, 0xe5, 0x8d,
|
||||||
0x5a, 0xaa, 0xe2, 0xe7, 0x63, 0xa9, 0xee, 0x83, 0x8a, 0x1b, 0x98, 0xa9, 0x12, 0xa7, 0xbc, 0x31,
|
0x49, 0xdb, 0x59, 0xf8, 0xa8, 0x88, 0x35, 0x72, 0x50, 0x11, 0x93, 0xcc, 0x3b, 0x55, 0x3f, 0x4f,
|
||||||
0x69, 0x3b, 0x0b, 0x1f, 0x15, 0xb2, 0x86, 0x0e, 0x2a, 0x64, 0x92, 0x79, 0xa7, 0xf2, 0x17, 0xe9,
|
0xef, 0xc4, 0xb6, 0xb0, 0x83, 0x7d, 0x8f, 0x68, 0xbc, 0xee, 0x6b, 0xf1, 0x16, 0xde, 0xe3, 0xad,
|
||||||
0x9d, 0xd8, 0x16, 0xb6, 0xb1, 0xe7, 0x92, 0x3e, 0xaf, 0xfb, 0x4a, 0xb4, 0x85, 0xf7, 0x79, 0x2b,
|
0x48, 0xf4, 0xc2, 0x03, 0xb0, 0xee, 0xb8, 0xf6, 0xc0, 0x25, 0x9e, 0xb7, 0x45, 0xb0, 0x66, 0xe8,
|
||||||
0x12, 0xbd, 0xf0, 0x10, 0xac, 0xdb, 0x8e, 0x35, 0x70, 0x88, 0xeb, 0x6e, 0x13, 0xdc, 0xd7, 0x35,
|
0x16, 0x09, 0x07, 0x10, 0xa8, 0xde, 0xb5, 0xf1, 0x49, 0x73, 0x7d, 0x4f, 0x0e, 0x41, 0x45, 0xb1,
|
||||||
0x93, 0x04, 0x03, 0xf0, 0x55, 0xef, 0xda, 0xf8, 0xa4, 0xbe, 0xbe, 0x2f, 0x87, 0xa0, 0xbc, 0xd8,
|
0xad, 0x3f, 0x57, 0xc0, 0xe5, 0xec, 0x89, 0x58, 0x60, 0x44, 0x94, 0x73, 0x19, 0x91, 0x57, 0x13,
|
||||||
0xc6, 0x9f, 0x4b, 0xe0, 0x72, 0xfa, 0x44, 0xcc, 0x31, 0x22, 0xca, 0xb9, 0x8c, 0xc8, 0x6b, 0xb1,
|
0x25, 0x1a, 0xb8, 0xb4, 0xc4, 0x3b, 0x7f, 0xae, 0x4c, 0x37, 0xc1, 0xb2, 0x30, 0x1e, 0x61, 0xa7,
|
||||||
0x12, 0xf5, 0x5d, 0x5a, 0xec, 0x9d, 0x3f, 0x53, 0xa6, 0x5b, 0x60, 0x59, 0x18, 0x8f, 0xa0, 0x53,
|
0xb0, 0x62, 0xd1, 0xf2, 0x1c, 0xa4, 0xbb, 0x51, 0x16, 0xcf, 0xec, 0x45, 0xec, 0x1a, 0x42, 0x92,
|
||||||
0x58, 0xb1, 0x70, 0x79, 0x0e, 0x93, 0xdd, 0x28, 0x8d, 0x67, 0xf6, 0x22, 0x72, 0x0d, 0x01, 0x49,
|
0x4a, 0xda, 0x5e, 0x6c, 0x66, 0x01, 0x28, 0x1f, 0x03, 0x7b, 0x60, 0xc5, 0xb7, 0xf2, 0x54, 0x41,
|
||||||
0x29, 0x69, 0x2f, 0xb6, 0xd2, 0x00, 0x94, 0x8d, 0x81, 0x1d, 0xb0, 0xe2, 0x99, 0x59, 0x2a, 0xbf,
|
0xb9, 0x5c, 0x13, 0x54, 0x2b, 0x07, 0x79, 0x08, 0x92, 0xc5, 0xc1, 0x1f, 0xa7, 0x1c, 0xc7, 0x2c,
|
||||||
0x5c, 0xae, 0x09, 0xaa, 0x95, 0xc3, 0x2c, 0x04, 0xc9, 0xe2, 0xe0, 0x8f, 0x13, 0x8e, 0x63, 0x96,
|
0x3f, 0x08, 0x5e, 0x3a, 0xbd, 0xa2, 0xa7, 0xb6, 0x1c, 0xf0, 0x1e, 0x58, 0x74, 0xb9, 0xa1, 0x0c,
|
||||||
0x1f, 0x04, 0xaf, 0x9c, 0x5e, 0xd1, 0x53, 0x5b, 0x0e, 0x78, 0x0f, 0x2c, 0x3a, 0xdc, 0x50, 0x06,
|
0xb3, 0x0c, 0x4c, 0xd9, 0x57, 0x44, 0xd8, 0x22, 0x4a, 0x76, 0xa2, 0x34, 0x56, 0xe2, 0xa3, 0x6a,
|
||||||
0x59, 0xfa, 0xa6, 0xec, 0x2b, 0x22, 0x6c, 0x11, 0xc5, 0x3b, 0x51, 0x12, 0x2b, 0xf1, 0x51, 0x95,
|
0xd3, 0xfa, 0xa8, 0xd6, 0x9f, 0x14, 0x00, 0xf3, 0x5b, 0x70, 0xe2, 0xcb, 0x7d, 0x2e, 0x22, 0x21,
|
||||||
0x69, 0x7d, 0x54, 0xe3, 0x4f, 0x0a, 0x80, 0xd9, 0x2d, 0x38, 0xf1, 0xe5, 0x3e, 0x13, 0x11, 0x93,
|
0x91, 0x9a, 0xdc, 0xe1, 0xdc, 0x9c, 0xec, 0x70, 0xe2, 0x13, 0x74, 0x3a, 0x8b, 0x23, 0x66, 0xe0,
|
||||||
0xc8, 0xbe, 0xdc, 0xe1, 0xdc, 0x9a, 0xec, 0x70, 0xa2, 0x13, 0x74, 0x3a, 0x8b, 0x23, 0x66, 0xe0,
|
0x62, 0x2e, 0x66, 0xa6, 0xb0, 0x38, 0x71, 0x3e, 0xcf, 0x66, 0x71, 0x12, 0x3c, 0xa7, 0x5b, 0x9c,
|
||||||
0x62, 0x2e, 0x66, 0xa6, 0xb0, 0x38, 0x51, 0x3e, 0xcf, 0x66, 0x71, 0x62, 0x3c, 0xa7, 0x5b, 0x9c,
|
0x7f, 0x97, 0xc0, 0x4a, 0x0c, 0x9e, 0xda, 0xe2, 0x48, 0x42, 0xbe, 0xbc, 0x9c, 0x99, 0x7c, 0x39,
|
||||||
0x7f, 0x17, 0xc0, 0x4a, 0x04, 0x9e, 0xda, 0xe2, 0x48, 0x42, 0x5e, 0x5c, 0xce, 0x4c, 0xbe, 0x9c,
|
0xc3, 0x6c, 0x47, 0x3c, 0x75, 0xff, 0x27, 0xb6, 0x23, 0x4e, 0xa8, 0xc0, 0x76, 0xfc, 0xae, 0x94,
|
||||||
0x61, 0xb6, 0x23, 0x9a, 0xba, 0xff, 0x13, 0xdb, 0x11, 0x25, 0x94, 0x63, 0x3b, 0x7e, 0x57, 0x88,
|
0xcc, 0xfa, 0x0b, 0x6f, 0x3b, 0x9e, 0xfd, 0x72, 0xa5, 0xf5, 0x97, 0x32, 0xb8, 0x9c, 0xdd, 0x82,
|
||||||
0x67, 0xfd, 0xa5, 0xb7, 0x1d, 0xcf, 0x7e, 0xb9, 0xd2, 0xf8, 0x4b, 0x11, 0x5c, 0x4e, 0x6f, 0xc1,
|
0x29, 0x1d, 0x54, 0x26, 0xea, 0xe0, 0x1e, 0x58, 0x7d, 0xe4, 0x1b, 0xc6, 0x88, 0x4f, 0x43, 0x42,
|
||||||
0x84, 0x0e, 0x2a, 0x13, 0x75, 0x70, 0x1f, 0xac, 0x3e, 0xf2, 0x74, 0x7d, 0xc4, 0xa7, 0x21, 0x26,
|
0x0c, 0x03, 0x05, 0xfd, 0xaa, 0x88, 0x5c, 0xfd, 0xbe, 0x04, 0x83, 0xa4, 0x91, 0x05, 0x9a, 0x5e,
|
||||||
0x86, 0xbe, 0x82, 0x7e, 0x55, 0x44, 0xae, 0x7e, 0x5f, 0x82, 0x41, 0xd2, 0xc8, 0x1c, 0x4d, 0x2f,
|
0x3e, 0x97, 0xa6, 0xe7, 0xd4, 0xa6, 0x72, 0x06, 0xb5, 0x91, 0xea, 0x73, 0xf5, 0x1c, 0xfa, 0x3c,
|
||||||
0x9e, 0x4b, 0xd3, 0x33, 0x6a, 0x53, 0x3a, 0x83, 0xda, 0x48, 0xf5, 0xb9, 0x7c, 0x0e, 0x7d, 0x9e,
|
0xb5, 0xa0, 0x4a, 0x8e, 0xab, 0x89, 0xef, 0xf0, 0xbf, 0x56, 0xc0, 0x9a, 0xfc, 0xf5, 0x19, 0x1a,
|
||||||
0x5a, 0x50, 0x25, 0xc7, 0xd5, 0xc4, 0x77, 0xf8, 0x5f, 0x2b, 0x60, 0x4d, 0xfe, 0xfa, 0x0c, 0x75,
|
0x60, 0xc9, 0xc4, 0x8f, 0x93, 0x97, 0x17, 0x93, 0x04, 0xc3, 0xa7, 0xba, 0xa1, 0x06, 0x5f, 0x77,
|
||||||
0xb0, 0x64, 0xe0, 0xc7, 0xf1, 0xcb, 0x8b, 0x49, 0x82, 0xe1, 0x51, 0x4d, 0x57, 0xfd, 0xaf, 0x3b,
|
0xd4, 0x77, 0x2c, 0xba, 0xeb, 0xee, 0x53, 0x57, 0xb7, 0x06, 0x81, 0xc0, 0xf6, 0x52, 0x5c, 0x28,
|
||||||
0xea, 0xbb, 0x26, 0xdd, 0x73, 0x0e, 0xa8, 0xa3, 0x99, 0x03, 0x5f, 0x60, 0x3b, 0x09, 0x2e, 0x94,
|
0xc3, 0xdd, 0xfa, 0x58, 0x01, 0xeb, 0x05, 0x2a, 0x77, 0xb1, 0x99, 0xc0, 0x87, 0xa0, 0x66, 0xe2,
|
||||||
0xe2, 0x6e, 0x7c, 0xa2, 0x80, 0xf5, 0x1c, 0x95, 0xbb, 0xd8, 0x4c, 0xe0, 0x43, 0x50, 0x31, 0xf0,
|
0xc7, 0xfb, 0xbe, 0x3b, 0x08, 0x25, 0xf9, 0xec, 0xcf, 0xe1, 0x1b, 0xb9, 0x27, 0x58, 0x50, 0xc4,
|
||||||
0xe3, 0x03, 0xcf, 0x19, 0x04, 0x92, 0x7c, 0xf6, 0xe7, 0xf0, 0x8d, 0xdc, 0x11, 0x2c, 0x28, 0xe4,
|
0xd7, 0xda, 0x05, 0xd7, 0x53, 0x83, 0x64, 0x9b, 0x86, 0x3c, 0xf2, 0x0d, 0xbe, 0x7f, 0x84, 0xa7,
|
||||||
0x6b, 0xec, 0x81, 0xeb, 0x89, 0x41, 0xb2, 0x4d, 0x43, 0x1e, 0x79, 0x3a, 0xdf, 0x3f, 0xc2, 0x53,
|
0xb8, 0x09, 0xe6, 0x1d, 0xec, 0x52, 0x3d, 0x32, 0xa3, 0xd5, 0xce, 0xe2, 0xf8, 0xa4, 0x39, 0xbf,
|
||||||
0xdc, 0x02, 0xf3, 0x36, 0x76, 0xa8, 0x16, 0x9a, 0xd1, 0x72, 0x6b, 0x71, 0x7c, 0x52, 0x9f, 0xdf,
|
0x17, 0x36, 0xa2, 0xb8, 0xbf, 0xf5, 0xab, 0x12, 0x58, 0x48, 0x90, 0x5c, 0x80, 0xbe, 0xbf, 0x95,
|
||||||
0x0f, 0x1a, 0x51, 0xd4, 0xdf, 0xf8, 0x55, 0x01, 0x2c, 0xc4, 0x48, 0x2e, 0x40, 0xdf, 0xdf, 0x4e,
|
0xd2, 0x77, 0xe9, 0x17, 0x93, 0xe4, 0xa8, 0x8a, 0x04, 0xbe, 0x97, 0x11, 0xf8, 0x6f, 0x4e, 0x22,
|
||||||
0xe8, 0xbb, 0xf4, 0x8b, 0x49, 0x7c, 0x54, 0x79, 0x02, 0xdf, 0x49, 0x09, 0xfc, 0x37, 0x27, 0x11,
|
0x3a, 0x5d, 0xe1, 0x3f, 0x29, 0x81, 0xd5, 0x04, 0x3a, 0x96, 0xf8, 0xef, 0xa4, 0x24, 0x7e, 0x23,
|
||||||
0x9d, 0xae, 0xf0, 0x9f, 0x16, 0xc0, 0x6a, 0x0c, 0x1d, 0x49, 0xfc, 0x77, 0x12, 0x12, 0xbf, 0x91,
|
0x23, 0xf1, 0x75, 0x59, 0xcc, 0x97, 0x1a, 0x3f, 0x59, 0xe3, 0xff, 0xa8, 0x80, 0xe5, 0xc4, 0xdc,
|
||||||
0x92, 0xf8, 0xaa, 0x2c, 0xe6, 0x85, 0xc6, 0x4f, 0xd6, 0xf8, 0x3f, 0x2a, 0x60, 0x39, 0x36, 0x77,
|
0x5d, 0x80, 0xc8, 0x6f, 0xa5, 0x45, 0xbe, 0x39, 0xa1, 0x5e, 0x0a, 0x54, 0xfe, 0x49, 0x35, 0x95,
|
||||||
0x17, 0x20, 0xf2, 0xdb, 0x49, 0x91, 0xaf, 0x4f, 0xa8, 0x97, 0x1c, 0x95, 0x7f, 0x52, 0x4e, 0xe4,
|
0xf7, 0x17, 0x5e, 0xe6, 0x7f, 0x0e, 0x56, 0x87, 0xb6, 0xe1, 0x9b, 0xa4, 0x6b, 0x60, 0xdd, 0x0c,
|
||||||
0xfd, 0xa5, 0x97, 0xf9, 0x9f, 0x83, 0xd5, 0xa1, 0xa5, 0x7b, 0x06, 0x69, 0xeb, 0x58, 0x33, 0x02,
|
0x01, 0x4c, 0xc9, 0xd8, 0x24, 0xbe, 0x2c, 0xa5, 0x27, 0xae, 0xa7, 0x7b, 0x94, 0x58, 0xf4, 0x41,
|
||||||
0x00, 0x53, 0x32, 0x36, 0x89, 0x37, 0xa5, 0xf4, 0xc4, 0x71, 0x35, 0x97, 0x12, 0x93, 0x3e, 0x88,
|
0x1c, 0x19, 0x6b, 0xf1, 0x03, 0x09, 0x1d, 0x92, 0x3e, 0x04, 0xbe, 0x0e, 0x16, 0x98, 0xa6, 0xea,
|
||||||
0x22, 0x23, 0x2d, 0x7e, 0x20, 0xa1, 0x43, 0xd2, 0x87, 0xc0, 0x37, 0xc0, 0x02, 0xd3, 0x54, 0xad,
|
0x7d, 0xb2, 0x83, 0xcd, 0xb0, 0xa6, 0xa2, 0xef, 0x03, 0xfb, 0x71, 0x17, 0x4a, 0xe2, 0xe0, 0x11,
|
||||||
0x47, 0x76, 0xb1, 0x11, 0xd4, 0x54, 0xf8, 0x7d, 0xe0, 0x20, 0xea, 0x42, 0x71, 0x1c, 0x3c, 0x02,
|
0x58, 0x71, 0x6c, 0xad, 0x87, 0x2d, 0x3c, 0x20, 0xec, 0xfc, 0xdf, 0xb3, 0x0d, 0xbd, 0x3f, 0xe2,
|
||||||
0x2b, 0xb6, 0xd5, 0xef, 0x60, 0x13, 0x0f, 0x08, 0x3b, 0xff, 0xf7, 0xf9, 0xff, 0x42, 0xf0, 0x7b,
|
0xf7, 0x0e, 0xf3, 0x9d, 0x37, 0xc2, 0x17, 0xd2, 0xbd, 0x3c, 0x84, 0x79, 0x76, 0x49, 0x33, 0xdf,
|
||||||
0x87, 0xf9, 0xd6, 0x9b, 0xc1, 0x0b, 0xe9, 0x7e, 0x16, 0xc2, 0x3c, 0xbb, 0xa4, 0x99, 0xef, 0x67,
|
0xcf, 0x32, 0x4a, 0x68, 0xe6, 0x3e, 0x67, 0xcd, 0xe5, 0xfe, 0x07, 0x40, 0x56, 0x5c, 0xe7, 0xfc,
|
||||||
0x19, 0x25, 0x34, 0x32, 0x9f, 0xb3, 0xe6, 0x32, 0xff, 0x03, 0x20, 0x2b, 0xae, 0x73, 0x7e, 0xd0,
|
0xa0, 0x55, 0x74, 0xa3, 0x52, 0x3b, 0xd7, 0xd7, 0xa8, 0x4f, 0x2a, 0xe0, 0x4a, 0xee, 0x80, 0xfc,
|
||||||
0xca, 0xbb, 0x51, 0xa9, 0x9c, 0xeb, 0x6b, 0xd4, 0xa7, 0x25, 0x70, 0x25, 0x73, 0x40, 0x7e, 0x81,
|
0x1c, 0xef, 0x34, 0x72, 0x6e, 0xa9, 0x7c, 0x06, 0xb7, 0xb4, 0x09, 0x96, 0xc5, 0x87, 0xb0, 0x8c,
|
||||||
0x77, 0x1a, 0x19, 0xb7, 0x54, 0x3c, 0x83, 0x5b, 0xda, 0x02, 0xcb, 0xe2, 0x43, 0x58, 0xca, 0x6c,
|
0xd9, 0x8a, 0xec, 0x68, 0x37, 0xdd, 0x8d, 0xb2, 0x78, 0xd9, 0x9d, 0x4a, 0xf5, 0x8c, 0x77, 0x2a,
|
||||||
0x85, 0x76, 0xb4, 0x9d, 0xec, 0x46, 0x69, 0xbc, 0xec, 0x4e, 0xa5, 0x7c, 0xc6, 0x3b, 0x95, 0x78,
|
0xc9, 0x2c, 0xc4, 0xff, 0x6f, 0x04, 0x55, 0x97, 0xcf, 0x42, 0xfc, 0x1b, 0x47, 0x16, 0x0f, 0xbf,
|
||||||
0x16, 0xe2, 0xff, 0x37, 0xfc, 0xaa, 0xcb, 0x66, 0x21, 0xfe, 0x8d, 0x23, 0x8d, 0x87, 0xdf, 0x0d,
|
0x1b, 0x96, 0x54, 0xc4, 0x30, 0xc7, 0x19, 0x32, 0x35, 0x12, 0x11, 0x64, 0xd0, 0xcf, 0xf4, 0xb1,
|
||||||
0x4a, 0x2a, 0x64, 0x98, 0xe3, 0x0c, 0xa9, 0x1a, 0x09, 0x09, 0x52, 0xe8, 0x67, 0xfa, 0xd8, 0xf3,
|
0xe7, 0x3d, 0xc9, 0xc7, 0x9e, 0x8d, 0x09, 0xa5, 0x3c, 0xbd, 0x55, 0xfc, 0x9b, 0x02, 0x5e, 0x28,
|
||||||
0xbe, 0xe4, 0x63, 0xcf, 0xc6, 0x84, 0x52, 0x9e, 0xde, 0x2a, 0xfe, 0x4d, 0x01, 0x2f, 0xe5, 0xee,
|
0xdc, 0x03, 0x70, 0x33, 0xa5, 0xb3, 0xb7, 0x32, 0x3a, 0xfb, 0x62, 0x61, 0x60, 0x42, 0x6c, 0x4d,
|
||||||
0x01, 0xb8, 0x95, 0xd0, 0xd9, 0xdb, 0x29, 0x9d, 0x7d, 0x39, 0x37, 0x30, 0x26, 0xb6, 0x86, 0xfc,
|
0xf9, 0x85, 0xc8, 0xdd, 0x89, 0x17, 0x22, 0x12, 0x17, 0x35, 0xf9, 0x66, 0xa4, 0xb3, 0xf1, 0xe4,
|
||||||
0x42, 0xe4, 0xee, 0xc4, 0x0b, 0x11, 0x89, 0x8b, 0x9a, 0x7c, 0x33, 0xd2, 0xda, 0x78, 0xf2, 0xb4,
|
0x69, 0x63, 0xe6, 0xc3, 0xa7, 0x8d, 0x99, 0x8f, 0x9e, 0x36, 0x66, 0x7e, 0x31, 0x6e, 0x28, 0x4f,
|
||||||
0x36, 0xf3, 0xd1, 0xd3, 0xda, 0xcc, 0xc7, 0x4f, 0x6b, 0x33, 0xbf, 0x18, 0xd7, 0x94, 0x27, 0xe3,
|
0xc6, 0x0d, 0xe5, 0xc3, 0x71, 0x43, 0xf9, 0x68, 0xdc, 0x50, 0xfe, 0x39, 0x6e, 0x28, 0xbf, 0xfd,
|
||||||
0x9a, 0xf2, 0xd1, 0xb8, 0xa6, 0x7c, 0x3c, 0xae, 0x29, 0xff, 0x1c, 0xd7, 0x94, 0xdf, 0x7e, 0x52,
|
0xb8, 0x31, 0xf3, 0xb0, 0x34, 0xbc, 0xfd, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x6b, 0x01,
|
||||||
0x9b, 0x79, 0x58, 0x18, 0x6e, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x70, 0x5f, 0xbf, 0x58, 0x3d,
|
0x7b, 0x12, 0x26, 0x00, 0x00,
|
||||||
0x26, 0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ syntax = 'proto2';
|
||||||
package k8s.io.api.apps.v1;
|
package k8s.io.api.apps.v1;
|
||||||
|
|
||||||
import "k8s.io/api/core/v1/generated.proto";
|
import "k8s.io/api/core/v1/generated.proto";
|
||||||
import "k8s.io/api/policy/v1beta1/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
|
@ -281,6 +280,7 @@ message DeploymentSpec {
|
||||||
|
|
||||||
// The deployment strategy to use to replace existing pods with new ones.
|
// The deployment strategy to use to replace existing pods with new ones.
|
||||||
// +optional
|
// +optional
|
||||||
|
// +patchStrategy=retainKeys
|
||||||
optional DeploymentStrategy strategy = 4;
|
optional DeploymentStrategy strategy = 4;
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
|
|
|
@ -32,6 +32,8 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
// +genclient
|
// +genclient
|
||||||
|
// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale
|
||||||
|
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// StatefulSet represents a set of pods with consistent identities.
|
// StatefulSet represents a set of pods with consistent identities.
|
||||||
|
@ -67,7 +69,7 @@ const (
|
||||||
// ParallelPodManagement will create and delete pods as soon as the stateful set
|
// ParallelPodManagement will create and delete pods as soon as the stateful set
|
||||||
// replica count is changed, and will not wait for pods to be ready or complete
|
// replica count is changed, and will not wait for pods to be ready or complete
|
||||||
// termination.
|
// termination.
|
||||||
ParallelPodManagement = "Parallel"
|
ParallelPodManagement PodManagementPolicyType = "Parallel"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
|
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
|
||||||
|
@ -244,6 +246,8 @@ type StatefulSetList struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// +genclient
|
// +genclient
|
||||||
|
// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale
|
||||||
|
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// Deployment enables declarative updates for Pods and ReplicaSets.
|
// Deployment enables declarative updates for Pods and ReplicaSets.
|
||||||
|
@ -279,7 +283,8 @@ type DeploymentSpec struct {
|
||||||
|
|
||||||
// The deployment strategy to use to replace existing pods with new ones.
|
// The deployment strategy to use to replace existing pods with new ones.
|
||||||
// +optional
|
// +optional
|
||||||
Strategy DeploymentStrategy `json:"strategy,omitempty" protobuf:"bytes,4,opt,name=strategy"`
|
// +patchStrategy=retainKeys
|
||||||
|
Strategy DeploymentStrategy `json:"strategy,omitempty" patchStrategy:"retainKeys" protobuf:"bytes,4,opt,name=strategy"`
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
// without any of its container crashing, for it to be considered available.
|
// without any of its container crashing, for it to be considered available.
|
||||||
|
@ -653,6 +658,8 @@ type DaemonSetList struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// +genclient
|
// +genclient
|
||||||
|
// +genclient:method=GetScale,verb=get,subresource=scale,result=k8s.io/api/autoscaling/v1.Scale
|
||||||
|
// +genclient:method=UpdateScale,verb=update,subresource=scale,input=k8s.io/api/autoscaling/v1.Scale,result=k8s.io/api/autoscaling/v1.Scale
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
|
// ReplicaSet ensures that a specified number of pod replicas are running at any given time.
|
||||||
|
|
|
@ -96,7 +96,7 @@ func (DaemonSetSpec) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_DaemonSetStatus = map[string]string{
|
var map_DaemonSetStatus = map[string]string{
|
||||||
"": "DaemonSetStatus represents the current status of a daemon set.",
|
"": "DaemonSetStatus represents the current status of a daemon set.",
|
||||||
"currentNumberScheduled": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
"currentNumberScheduled": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
||||||
"numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
"numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
||||||
"desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
"desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
||||||
|
|
|
@ -21,8 +21,8 @@ limitations under the License.
|
||||||
package v1
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
core_v1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
@ -170,23 +170,15 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(metav1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(meta_v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -206,12 +198,8 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Conditions != nil {
|
if in.Conditions != nil {
|
||||||
in, out := &in.Conditions, &out.Conditions
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
@ -238,12 +226,8 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateDaemonSet)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateDaemonSet)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -342,41 +326,25 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(metav1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(meta_v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.Strategy.DeepCopyInto(&out.Strategy)
|
in.Strategy.DeepCopyInto(&out.Strategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.ProgressDeadlineSeconds != nil {
|
if in.ProgressDeadlineSeconds != nil {
|
||||||
in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds
|
in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -403,12 +371,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) {
|
||||||
}
|
}
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -428,12 +392,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateDeployment)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateDeployment)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -531,21 +491,13 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(metav1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(meta_v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
return
|
return
|
||||||
|
@ -589,12 +541,8 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MaxUnavailable != nil {
|
if in.MaxUnavailable != nil {
|
||||||
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -614,21 +562,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MaxUnavailable != nil {
|
if in.MaxUnavailable != nil {
|
||||||
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.MaxSurge != nil {
|
if in.MaxSurge != nil {
|
||||||
in, out := &in.MaxSurge, &out.MaxSurge
|
in, out := &in.MaxSurge, &out.MaxSurge
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -648,12 +588,8 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Partition != nil {
|
if in.Partition != nil {
|
||||||
in, out := &in.Partition, &out.Partition
|
in, out := &in.Partition, &out.Partition
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -751,26 +687,18 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(metav1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(meta_v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
if in.VolumeClaimTemplates != nil {
|
if in.VolumeClaimTemplates != nil {
|
||||||
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
||||||
*out = make([]core_v1.PersistentVolumeClaim, len(*in))
|
*out = make([]corev1.PersistentVolumeClaim, len(*in))
|
||||||
for i := range *in {
|
for i := range *in {
|
||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
|
@ -778,12 +706,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
|
||||||
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -803,12 +727,8 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Conditions != nil {
|
if in.Conditions != nil {
|
||||||
in, out := &in.Conditions, &out.Conditions
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
@ -835,12 +755,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateStatefulSetStrategy)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateStatefulSetStrategy)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1beta1 // import "k8s.io/api/apps/v1beta1"
|
package v1beta1 // import "k8s.io/api/apps/v1beta1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1beta1 is a generated protocol buffer package.
|
Package v1beta1 is a generated protocol buffer package.
|
||||||
|
@ -54,7 +53,6 @@ import fmt "fmt"
|
||||||
import math "math"
|
import math "math"
|
||||||
|
|
||||||
import k8s_io_api_core_v1 "k8s.io/api/core/v1"
|
import k8s_io_api_core_v1 "k8s.io/api/core/v1"
|
||||||
|
|
||||||
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr"
|
import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -1092,24 +1090,6 @@ func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -2553,51 +2533,14 @@ func (m *DeploymentRollback) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.UpdatedAnnotations == nil {
|
if m.UpdatedAnnotations == nil {
|
||||||
m.UpdatedAnnotations = make(map[string]string)
|
m.UpdatedAnnotations = make(map[string]string)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
var mapvalue string
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -2607,41 +2550,80 @@ func (m *DeploymentRollback) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var stringLenmapvalue uint64
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var stringLenmapvalue uint64
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
intStringLenmapvalue := int(stringLenmapvalue)
|
||||||
|
if intStringLenmapvalue < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
||||||
|
if postStringIndexmapvalue > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
|
||||||
|
iNdEx = postStringIndexmapvalue
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
intStringLenmapvalue := int(stringLenmapvalue)
|
|
||||||
if intStringLenmapvalue < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
|
||||||
if postStringIndexmapvalue > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
|
|
||||||
iNdEx = postStringIndexmapvalue
|
|
||||||
m.UpdatedAnnotations[mapkey] = mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue string
|
|
||||||
m.UpdatedAnnotations[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.UpdatedAnnotations[mapkey] = mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 3:
|
case 3:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
|
@ -3834,51 +3816,14 @@ func (m *ScaleStatus) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.Selector == nil {
|
if m.Selector == nil {
|
||||||
m.Selector = make(map[string]string)
|
m.Selector = make(map[string]string)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
var mapvalue string
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -3888,41 +3833,80 @@ func (m *ScaleStatus) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var stringLenmapvalue uint64
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var stringLenmapvalue uint64
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
intStringLenmapvalue := int(stringLenmapvalue)
|
||||||
|
if intStringLenmapvalue < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
||||||
|
if postStringIndexmapvalue > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
|
||||||
|
iNdEx = postStringIndexmapvalue
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
intStringLenmapvalue := int(stringLenmapvalue)
|
|
||||||
if intStringLenmapvalue < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
|
||||||
if postStringIndexmapvalue > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
|
|
||||||
iNdEx = postStringIndexmapvalue
|
|
||||||
m.Selector[mapkey] = mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue string
|
|
||||||
m.Selector[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.Selector[mapkey] = mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 3:
|
case 3:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
|
@ -5170,122 +5154,122 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 1871 bytes of a gzipped FileDescriptorProto
|
// 1859 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4f, 0x6f, 0x1b, 0xc7,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcd, 0x6f, 0x24, 0x47,
|
||||||
0x15, 0xd7, 0x52, 0xa4, 0x44, 0x3d, 0x45, 0x94, 0x3d, 0x52, 0x2d, 0x46, 0x69, 0x29, 0x61, 0x1b,
|
0x15, 0x77, 0x8f, 0x67, 0xec, 0xf1, 0x73, 0x3c, 0xde, 0x2d, 0x9b, 0xf5, 0xc4, 0x81, 0xb1, 0xd5,
|
||||||
0x24, 0x72, 0x12, 0x2d, 0x63, 0x25, 0x0d, 0x12, 0xbb, 0x08, 0x2a, 0xca, 0x6e, 0xe2, 0x40, 0xaa,
|
0x44, 0x89, 0xf3, 0xe1, 0x9e, 0xac, 0x13, 0xa2, 0x64, 0x17, 0x45, 0x78, 0xbc, 0x4b, 0xb2, 0x91,
|
||||||
0x94, 0xa1, 0x94, 0xa2, 0x69, 0x0b, 0x64, 0xb8, 0x1c, 0xd3, 0x1b, 0xed, 0x3f, 0xec, 0x0e, 0x59,
|
0x8d, 0x9d, 0xb2, 0x1d, 0x44, 0x00, 0x29, 0x35, 0x3d, 0xb5, 0xb3, 0x1d, 0xf7, 0x97, 0xba, 0x6b,
|
||||||
0x13, 0xbd, 0xf4, 0x03, 0x14, 0x48, 0xcf, 0xfd, 0x14, 0x3d, 0x16, 0xed, 0xad, 0x27, 0x5f, 0x0a,
|
0x86, 0x1d, 0x71, 0xe1, 0x0f, 0x40, 0x0a, 0x67, 0xfe, 0x0a, 0x8e, 0x08, 0x6e, 0x9c, 0xf6, 0x82,
|
||||||
0x04, 0xbd, 0x34, 0x27, 0xa1, 0xa6, 0xaf, 0x6d, 0x6f, 0xbd, 0x18, 0x28, 0x50, 0xcc, 0xec, 0xec,
|
0x14, 0x71, 0x21, 0x27, 0x8b, 0x9d, 0x5c, 0x81, 0x1b, 0x97, 0x95, 0x90, 0x50, 0x55, 0x57, 0x7f,
|
||||||
0xff, 0x5d, 0x89, 0x2a, 0x20, 0x1d, 0x72, 0xe3, 0xce, 0x7b, 0xef, 0xf7, 0xde, 0xcc, 0xbc, 0xf7,
|
0x77, 0xdb, 0x6d, 0xa4, 0xf5, 0x21, 0xb7, 0xe9, 0x7a, 0xef, 0xfd, 0x5e, 0x7d, 0xbc, 0xaf, 0xdf,
|
||||||
0xe6, 0xfd, 0x08, 0x3f, 0x3a, 0x7d, 0xdf, 0xd7, 0x0c, 0xa7, 0x7d, 0x3a, 0xec, 0x51, 0xcf, 0xa6,
|
0xc0, 0x8f, 0xce, 0xde, 0xf3, 0x35, 0xc3, 0xe9, 0x9e, 0x8d, 0xfa, 0xd4, 0xb3, 0x29, 0xa3, 0x7e,
|
||||||
0x8c, 0xfa, 0xed, 0x11, 0xb5, 0xfb, 0x8e, 0xd7, 0x96, 0x02, 0xe2, 0x1a, 0x6d, 0xe2, 0xba, 0x7e,
|
0x77, 0x4c, 0xed, 0x81, 0xe3, 0x75, 0xa5, 0x80, 0xb8, 0x46, 0x97, 0xb8, 0xae, 0xdf, 0x1d, 0xdf,
|
||||||
0x7b, 0x74, 0xa7, 0x47, 0x19, 0xb9, 0xd3, 0x1e, 0x50, 0x9b, 0x7a, 0x84, 0xd1, 0xbe, 0xe6, 0x7a,
|
0xee, 0x53, 0x46, 0x6e, 0x77, 0x87, 0xd4, 0xa6, 0x1e, 0x61, 0x74, 0xa0, 0xb9, 0x9e, 0xc3, 0x1c,
|
||||||
0x0e, 0x73, 0xd0, 0x5a, 0xa0, 0xa8, 0x11, 0xd7, 0xd0, 0xb8, 0xa2, 0x26, 0x15, 0xd7, 0xb7, 0x07,
|
0xb4, 0x16, 0x28, 0x6a, 0xc4, 0x35, 0x34, 0xae, 0xa8, 0x49, 0xc5, 0xf5, 0xed, 0xa1, 0xc1, 0x1e,
|
||||||
0x06, 0x7b, 0x3c, 0xec, 0x69, 0xba, 0x63, 0xb5, 0x07, 0xce, 0xc0, 0x69, 0x0b, 0xfd, 0xde, 0xf0,
|
0x8d, 0xfa, 0x9a, 0xee, 0x58, 0xdd, 0xa1, 0x33, 0x74, 0xba, 0x42, 0xbf, 0x3f, 0x7a, 0x28, 0xbe,
|
||||||
0x91, 0xf8, 0x12, 0x1f, 0xe2, 0x57, 0x80, 0xb3, 0xae, 0x26, 0x1c, 0xea, 0x8e, 0x47, 0xdb, 0xa3,
|
0xc4, 0x87, 0xf8, 0x15, 0xe0, 0xac, 0xab, 0x09, 0x87, 0xba, 0xe3, 0xd1, 0xee, 0x38, 0xe7, 0x6b,
|
||||||
0x9c, 0xaf, 0xf5, 0xdb, 0x09, 0x1d, 0xd7, 0x31, 0x0d, 0x7d, 0x5c, 0x16, 0xd6, 0xfa, 0xbb, 0xb1,
|
0xfd, 0x9d, 0x58, 0xc7, 0x22, 0xfa, 0x23, 0xc3, 0xa6, 0xde, 0xa4, 0xeb, 0x9e, 0x0d, 0xf9, 0x82,
|
||||||
0xaa, 0x45, 0xf4, 0xc7, 0x86, 0x4d, 0xbd, 0x71, 0xdb, 0x3d, 0x1d, 0xf0, 0x05, 0xbf, 0x6d, 0x51,
|
0xdf, 0xb5, 0x28, 0x23, 0x45, 0x56, 0xdd, 0x32, 0x2b, 0x6f, 0x64, 0x33, 0xc3, 0xa2, 0x39, 0x83,
|
||||||
0x46, 0x8a, 0x1c, 0xb4, 0xcb, 0xac, 0xbc, 0xa1, 0xcd, 0x0c, 0x8b, 0xe6, 0x0c, 0xde, 0xbb, 0xc8,
|
0x77, 0x2f, 0x33, 0xf0, 0xf5, 0x47, 0xd4, 0x22, 0x39, 0xbb, 0xb7, 0xcb, 0xec, 0x46, 0xcc, 0x30,
|
||||||
0xc0, 0xd7, 0x1f, 0x53, 0x8b, 0xe4, 0xec, 0xde, 0x29, 0xb3, 0x1b, 0x32, 0xc3, 0x6c, 0x1b, 0x36,
|
0xbb, 0x86, 0xcd, 0x7c, 0xe6, 0x65, 0x8d, 0xd4, 0xff, 0x28, 0x80, 0xf6, 0x1c, 0x9b, 0x79, 0x8e,
|
||||||
0xf3, 0x99, 0x97, 0x35, 0x52, 0xff, 0xa3, 0x00, 0xda, 0x73, 0x6c, 0xe6, 0x39, 0xa6, 0x49, 0x3d,
|
0x69, 0x52, 0x0f, 0xd3, 0xb1, 0xe1, 0x1b, 0x8e, 0x8d, 0x3e, 0x87, 0x26, 0x3f, 0xcf, 0x80, 0x30,
|
||||||
0x4c, 0x47, 0x86, 0x6f, 0x38, 0x36, 0xfa, 0x02, 0xea, 0x7c, 0x3f, 0x7d, 0xc2, 0x48, 0x53, 0xd9,
|
0xd2, 0x56, 0x36, 0x95, 0xad, 0xc5, 0x9d, 0xb7, 0xb4, 0xf8, 0xa6, 0x23, 0x78, 0xcd, 0x3d, 0x1b,
|
||||||
0x54, 0xb6, 0x16, 0x77, 0xde, 0xd6, 0xe2, 0x4b, 0x89, 0xe0, 0x35, 0xf7, 0x74, 0xc0, 0x17, 0x7c,
|
0xf2, 0x05, 0x5f, 0xe3, 0xda, 0xda, 0xf8, 0xb6, 0x76, 0xd8, 0xff, 0x82, 0xea, 0xec, 0x80, 0x32,
|
||||||
0x8d, 0x6b, 0x6b, 0xa3, 0x3b, 0xda, 0x61, 0xef, 0x4b, 0xaa, 0xb3, 0x03, 0xca, 0x48, 0x07, 0x3d,
|
0xd2, 0x43, 0x4f, 0xce, 0x37, 0x66, 0xa6, 0xe7, 0x1b, 0x10, 0xaf, 0xe1, 0x08, 0x15, 0x1d, 0x42,
|
||||||
0x3d, 0xdb, 0x98, 0x99, 0x9c, 0x6d, 0x40, 0xbc, 0x86, 0x23, 0x54, 0x74, 0x08, 0x55, 0x81, 0x5e,
|
0x5d, 0xa0, 0xd7, 0x04, 0xfa, 0x76, 0x29, 0xba, 0x3c, 0xb4, 0x86, 0xc9, 0xaf, 0xee, 0x3f, 0x66,
|
||||||
0x11, 0xe8, 0xdb, 0xa5, 0xe8, 0x72, 0xd3, 0x1a, 0x26, 0xbf, 0x7a, 0xf0, 0x84, 0x51, 0x9b, 0x87,
|
0xd4, 0xe6, 0xdb, 0xeb, 0xbd, 0x20, 0xa1, 0xeb, 0xf7, 0x08, 0x23, 0x58, 0x00, 0xa1, 0x37, 0xa1,
|
||||||
0xd7, 0x79, 0x49, 0x42, 0x57, 0xef, 0x13, 0x46, 0xb0, 0x00, 0x42, 0x6f, 0x41, 0xdd, 0x93, 0xe1,
|
0xe9, 0xc9, 0xed, 0xb7, 0x67, 0x37, 0x95, 0xad, 0xd9, 0xde, 0x0d, 0xa9, 0xd5, 0x0c, 0x8f, 0x85,
|
||||||
0x37, 0x67, 0x37, 0x95, 0xad, 0xd9, 0xce, 0x0d, 0xa9, 0x55, 0x0f, 0xb7, 0x85, 0x23, 0x0d, 0xf5,
|
0x23, 0x0d, 0xf5, 0x89, 0x02, 0xb7, 0xf2, 0xe7, 0xde, 0x37, 0x7c, 0x86, 0x7e, 0x91, 0x3b, 0xbb,
|
||||||
0xa9, 0x02, 0xb7, 0xf2, 0xfb, 0xde, 0x37, 0x7c, 0x86, 0x7e, 0x91, 0xdb, 0xbb, 0x36, 0xdd, 0xde,
|
0x56, 0xed, 0xec, 0xdc, 0x5a, 0x9c, 0x3c, 0x72, 0x1c, 0xae, 0x24, 0xce, 0x7d, 0x04, 0x0d, 0x83,
|
||||||
0xb9, 0xb5, 0xd8, 0x79, 0xe4, 0x38, 0x5c, 0x49, 0xec, 0xfb, 0x08, 0x6a, 0x06, 0xa3, 0x96, 0xdf,
|
0x51, 0xcb, 0x6f, 0xd7, 0x36, 0x67, 0xb7, 0x16, 0x77, 0xde, 0xd0, 0x4a, 0x02, 0x58, 0xcb, 0xef,
|
||||||
0xac, 0x6c, 0xce, 0x6e, 0x2d, 0xee, 0xbc, 0xa9, 0x95, 0xe4, 0xba, 0x96, 0x8f, 0xae, 0xb3, 0x24,
|
0xae, 0xb7, 0x24, 0x71, 0x1b, 0x0f, 0x38, 0x02, 0x0e, 0x80, 0xd4, 0xdf, 0xd6, 0x00, 0xee, 0x51,
|
||||||
0x71, 0x6b, 0x0f, 0x39, 0x02, 0x0e, 0x80, 0xd4, 0xdf, 0x56, 0x00, 0xee, 0x53, 0xd7, 0x74, 0xc6,
|
0xd7, 0x74, 0x26, 0x16, 0xb5, 0xd9, 0x35, 0x3c, 0xdd, 0x03, 0xa8, 0xfb, 0x2e, 0xd5, 0xe5, 0xd3,
|
||||||
0x16, 0xb5, 0xd9, 0x35, 0x5c, 0xdd, 0x43, 0xa8, 0xfa, 0x2e, 0xd5, 0xe5, 0xd5, 0xbd, 0x5e, 0xba,
|
0xbd, 0x5a, 0x7a, 0x82, 0x78, 0x53, 0xc7, 0x2e, 0xd5, 0xe3, 0x47, 0xe3, 0x5f, 0x58, 0x40, 0xa0,
|
||||||
0x83, 0x38, 0xa8, 0xae, 0x4b, 0xf5, 0xf8, 0xd2, 0xf8, 0x17, 0x16, 0x10, 0xe8, 0x53, 0x98, 0xf3,
|
0x4f, 0x60, 0xce, 0x67, 0x84, 0x8d, 0x7c, 0xf1, 0x64, 0x8b, 0x3b, 0xaf, 0x55, 0x01, 0x13, 0x06,
|
||||||
0x19, 0x61, 0x43, 0x5f, 0x5c, 0xd9, 0xe2, 0xce, 0xed, 0x69, 0xc0, 0x84, 0x41, 0xa7, 0x21, 0xe1,
|
0xbd, 0x96, 0x84, 0x9b, 0x0b, 0xbe, 0xb1, 0x04, 0x52, 0xff, 0x3e, 0x0b, 0x2b, 0xb1, 0xf2, 0x9e,
|
||||||
0xe6, 0x82, 0x6f, 0x2c, 0x81, 0xd4, 0xbf, 0xcf, 0xc2, 0x4a, 0xac, 0xbc, 0xe7, 0xd8, 0x7d, 0x83,
|
0x63, 0x0f, 0x0c, 0xc6, 0x43, 0xfa, 0x2e, 0xd4, 0xd9, 0xc4, 0xa5, 0xe2, 0x4e, 0x16, 0x7a, 0xaf,
|
||||||
0xf1, 0x94, 0xbe, 0x07, 0x55, 0x36, 0x76, 0xa9, 0x38, 0x93, 0x85, 0xce, 0xeb, 0x61, 0x30, 0xc7,
|
0x86, 0x9b, 0x39, 0x99, 0xb8, 0xf4, 0xd9, 0xf9, 0xc6, 0x5a, 0x81, 0x09, 0x17, 0x61, 0x61, 0x84,
|
||||||
0x63, 0x97, 0xbe, 0x38, 0xdb, 0x58, 0x2b, 0x30, 0xe1, 0x22, 0x2c, 0x8c, 0xd0, 0x7e, 0x14, 0x67,
|
0xf6, 0xa3, 0x7d, 0xd6, 0x84, 0xf9, 0x3b, 0x69, 0xe7, 0xcf, 0xce, 0x37, 0x0a, 0x0a, 0x88, 0x16,
|
||||||
0x45, 0x98, 0xbf, 0x9b, 0x76, 0xfe, 0xe2, 0x6c, 0xa3, 0xa0, 0xd7, 0x68, 0x11, 0x52, 0x3a, 0x44,
|
0x21, 0xa5, 0xb7, 0x88, 0x5e, 0x81, 0x39, 0x8f, 0x12, 0xdf, 0xb1, 0xdb, 0x75, 0x81, 0x16, 0x1d,
|
||||||
0xf4, 0x1a, 0xcc, 0x79, 0x94, 0xf8, 0x8e, 0xdd, 0xac, 0x0a, 0xb4, 0x68, 0x2b, 0x58, 0xac, 0x62,
|
0x05, 0x8b, 0x55, 0x2c, 0xa5, 0xe8, 0x35, 0x98, 0xb7, 0xa8, 0xef, 0x93, 0x21, 0x6d, 0x37, 0x84,
|
||||||
0x29, 0x45, 0xb7, 0x61, 0xde, 0xa2, 0xbe, 0x4f, 0x06, 0xb4, 0x59, 0x13, 0x8a, 0xcb, 0x52, 0x71,
|
0xe2, 0xb2, 0x54, 0x9c, 0x3f, 0x08, 0x96, 0x71, 0x28, 0x47, 0x5f, 0x40, 0xcb, 0x24, 0x3e, 0x3b,
|
||||||
0xfe, 0x20, 0x58, 0xc6, 0xa1, 0x1c, 0x7d, 0x09, 0x0d, 0x93, 0xf8, 0xec, 0xc4, 0xed, 0x13, 0x46,
|
0x75, 0x07, 0x84, 0xd1, 0x13, 0xc3, 0xa2, 0xed, 0x39, 0x71, 0xa1, 0xaf, 0x57, 0x7b, 0x7b, 0x6e,
|
||||||
0x8f, 0x0d, 0x8b, 0x36, 0xe7, 0xc4, 0x81, 0xbe, 0x31, 0xdd, 0xdd, 0x73, 0x8b, 0xce, 0x2d, 0x89,
|
0xd1, 0xbb, 0x25, 0xd1, 0x5b, 0xfb, 0x29, 0x24, 0x9c, 0x41, 0x46, 0x63, 0x40, 0x7c, 0xe5, 0xc4,
|
||||||
0xde, 0xd8, 0x4f, 0x21, 0xe1, 0x0c, 0x32, 0x1a, 0x01, 0xe2, 0x2b, 0xc7, 0x1e, 0xb1, 0xfd, 0xe0,
|
0x23, 0xb6, 0x1f, 0x5c, 0x14, 0xf7, 0x37, 0x7f, 0x65, 0x7f, 0xeb, 0xd2, 0x1f, 0xda, 0xcf, 0xa1,
|
||||||
0xa0, 0xb8, 0xbf, 0xf9, 0x4b, 0xfb, 0x5b, 0x97, 0xfe, 0xd0, 0x7e, 0x0e, 0x0d, 0x17, 0x78, 0x50,
|
0xe1, 0x02, 0x0f, 0xea, 0x1f, 0x15, 0x68, 0xc5, 0xcf, 0x74, 0x0d, 0xb9, 0xfa, 0x51, 0x3a, 0x57,
|
||||||
0xff, 0xa8, 0x40, 0x23, 0xbe, 0xa6, 0x6b, 0xa8, 0xd5, 0x8f, 0xd3, 0xb5, 0xfa, 0xfd, 0x29, 0x92,
|
0xbf, 0x5f, 0x21, 0x38, 0x4b, 0x72, 0xf4, 0x9f, 0x35, 0x40, 0xb1, 0x12, 0x76, 0x4c, 0xb3, 0x4f,
|
||||||
0xb3, 0xa4, 0x46, 0xff, 0x59, 0x01, 0x14, 0x2b, 0x61, 0xc7, 0x34, 0x7b, 0x44, 0x3f, 0x45, 0x9b,
|
0xf4, 0x33, 0xb4, 0x09, 0x75, 0x9b, 0x58, 0x61, 0x4c, 0x46, 0x09, 0xf2, 0x13, 0x62, 0x51, 0x2c,
|
||||||
0x50, 0xb5, 0x89, 0x15, 0xe6, 0x64, 0x54, 0x20, 0x3f, 0x21, 0x16, 0xc5, 0x42, 0x82, 0xbe, 0x52,
|
0x24, 0xe8, 0x4b, 0x05, 0xd0, 0x48, 0x5c, 0xfd, 0x60, 0xd7, 0xb6, 0x1d, 0x46, 0xf8, 0x6d, 0x84,
|
||||||
0x00, 0x0d, 0xc5, 0xd1, 0xf7, 0x77, 0x6d, 0xdb, 0x61, 0x84, 0x9f, 0x46, 0x18, 0xd0, 0xde, 0x14,
|
0x1b, 0xda, 0xab, 0xb0, 0xa1, 0xd0, 0x97, 0x76, 0x9a, 0x43, 0xb9, 0x6f, 0x33, 0x6f, 0x12, 0xbf,
|
||||||
0x01, 0x85, 0xbe, 0xb4, 0x93, 0x1c, 0xca, 0x03, 0x9b, 0x79, 0xe3, 0xf8, 0x16, 0xf2, 0x0a, 0xb8,
|
0x42, 0x5e, 0x01, 0x17, 0xb8, 0x46, 0x3f, 0x07, 0xf0, 0x24, 0xe6, 0x89, 0x23, 0xd3, 0xb6, 0xbc,
|
||||||
0xc0, 0x35, 0xfa, 0x39, 0x80, 0x27, 0x31, 0x8f, 0x1d, 0x59, 0xb6, 0xe5, 0x3d, 0x20, 0x74, 0xbf,
|
0x06, 0x84, 0xee, 0xf7, 0x1c, 0xfb, 0xa1, 0x31, 0x8c, 0x0b, 0x0b, 0x8e, 0x20, 0x70, 0x02, 0x6e,
|
||||||
0xe7, 0xd8, 0x8f, 0x8c, 0x41, 0xdc, 0x58, 0x70, 0x04, 0x81, 0x13, 0x70, 0xeb, 0x0f, 0x60, 0xad,
|
0xfd, 0x3e, 0xac, 0x95, 0xec, 0x13, 0xdd, 0x80, 0xd9, 0x33, 0x3a, 0x09, 0xae, 0x0a, 0xf3, 0x9f,
|
||||||
0x24, 0x4e, 0x74, 0x03, 0x66, 0x4f, 0xe9, 0x38, 0x38, 0x2a, 0xcc, 0x7f, 0xa2, 0x55, 0xa8, 0x8d,
|
0x68, 0x15, 0x1a, 0x63, 0x62, 0x8e, 0x68, 0x90, 0x93, 0x38, 0xf8, 0xb8, 0x53, 0x7b, 0x4f, 0x51,
|
||||||
0x88, 0x39, 0xa4, 0x41, 0x4d, 0xe2, 0xe0, 0xe3, 0x6e, 0xe5, 0x7d, 0x45, 0xfd, 0x43, 0x2d, 0x99,
|
0xff, 0xd0, 0x48, 0x46, 0x0a, 0xaf, 0x37, 0x68, 0x8b, 0xb7, 0x07, 0xd7, 0x34, 0x74, 0xe2, 0x0b,
|
||||||
0x29, 0xbc, 0xdf, 0xa0, 0x2d, 0xfe, 0x3c, 0xb8, 0xa6, 0xa1, 0x13, 0x5f, 0x60, 0xd4, 0x3a, 0x2f,
|
0x8c, 0x46, 0xef, 0x85, 0xa0, 0x35, 0x04, 0x6b, 0x38, 0x92, 0xa2, 0x5f, 0x42, 0xd3, 0xa7, 0x26,
|
||||||
0x05, 0x4f, 0x43, 0xb0, 0x86, 0x23, 0x29, 0xfa, 0x25, 0xd4, 0x7d, 0x6a, 0x52, 0x9d, 0x39, 0x9e,
|
0xd5, 0x99, 0xe3, 0xc9, 0x12, 0xf7, 0x76, 0xc5, 0x98, 0x22, 0x7d, 0x6a, 0x1e, 0x4b, 0xd3, 0x00,
|
||||||
0x6c, 0x71, 0xef, 0x4c, 0x99, 0x53, 0xa4, 0x47, 0xcd, 0xae, 0x34, 0x0d, 0xe0, 0xc3, 0x2f, 0x1c,
|
0x3e, 0xfc, 0xc2, 0x11, 0x24, 0xfa, 0x04, 0x9a, 0x8c, 0x5a, 0xae, 0x49, 0x18, 0x95, 0xb7, 0x97,
|
||||||
0x41, 0xa2, 0x4f, 0xa1, 0xce, 0xa8, 0xe5, 0x9a, 0x84, 0x51, 0x79, 0x7a, 0xa9, 0xbc, 0xe2, 0xbd,
|
0x8a, 0x2b, 0x5e, 0x3b, 0x38, 0xd8, 0x91, 0x33, 0x38, 0x91, 0x6a, 0xa2, 0x7a, 0x46, 0x71, 0x1a,
|
||||||
0x83, 0x83, 0x1d, 0x39, 0xfd, 0x63, 0xa9, 0x26, 0xba, 0x67, 0x94, 0xa7, 0xe1, 0x2a, 0x8e, 0x60,
|
0xae, 0xe2, 0x08, 0x06, 0xfd, 0x0c, 0x9a, 0x3e, 0xe3, 0x5d, 0x7d, 0x38, 0x11, 0x15, 0xe5, 0xa2,
|
||||||
0xd0, 0xcf, 0xa0, 0xee, 0x33, 0xfe, 0xaa, 0x0f, 0xc6, 0xa2, 0xa3, 0x9c, 0xf7, 0xac, 0x24, 0xfb,
|
0xb6, 0x92, 0xac, 0xa3, 0x81, 0x49, 0x0c, 0x1d, 0xae, 0xe0, 0x08, 0x0e, 0xed, 0xc2, 0xb2, 0x65,
|
||||||
0x68, 0x60, 0x12, 0x43, 0x87, 0x2b, 0x38, 0x82, 0x43, 0xbb, 0xb0, 0x6c, 0x19, 0x36, 0xa6, 0xa4,
|
0xd8, 0x98, 0x92, 0xc1, 0xe4, 0x98, 0xea, 0x8e, 0x3d, 0xf0, 0x45, 0x29, 0x6a, 0xf4, 0xd6, 0xa4,
|
||||||
0x3f, 0xee, 0x52, 0xdd, 0xb1, 0xfb, 0xbe, 0x68, 0x45, 0xb5, 0xce, 0x9a, 0x34, 0x5a, 0x3e, 0x48,
|
0xd1, 0xf2, 0x41, 0x5a, 0x8c, 0xb3, 0xfa, 0x68, 0x1f, 0x56, 0xc3, 0xb6, 0xfb, 0x91, 0xe1, 0x33,
|
||||||
0x8b, 0x71, 0x56, 0x1f, 0xed, 0xc3, 0x6a, 0xf8, 0xec, 0x7e, 0x6c, 0xf8, 0xcc, 0xf1, 0xc6, 0xfb,
|
0xc7, 0x9b, 0xec, 0x1b, 0x96, 0xc1, 0x44, 0x81, 0x6a, 0xf4, 0xda, 0xd3, 0xf3, 0x8d, 0x55, 0x5c,
|
||||||
0x86, 0x65, 0x30, 0xd1, 0xa0, 0x6a, 0x9d, 0xe6, 0xe4, 0x6c, 0x63, 0x15, 0x17, 0xc8, 0x71, 0xa1,
|
0x20, 0xc7, 0x85, 0x56, 0xbc, 0x76, 0xba, 0x64, 0xe4, 0xd3, 0x81, 0x28, 0x38, 0xcd, 0xb8, 0x76,
|
||||||
0x15, 0xef, 0x9d, 0x2e, 0x19, 0xfa, 0xb4, 0x2f, 0x1a, 0x4e, 0x3d, 0xee, 0x9d, 0x47, 0x62, 0x15,
|
0x1e, 0x89, 0x55, 0x2c, 0xa5, 0xe8, 0xa7, 0xa9, 0x30, 0x6d, 0x5e, 0x2d, 0x4c, 0x5b, 0xe5, 0x21,
|
||||||
0x4b, 0x29, 0xfa, 0x69, 0x2a, 0x4d, 0xeb, 0x97, 0x4b, 0xd3, 0x46, 0x79, 0x8a, 0xa2, 0x13, 0x58,
|
0x8a, 0x4e, 0x61, 0xcd, 0xf5, 0x9c, 0xa1, 0x47, 0x7d, 0xff, 0x1e, 0x25, 0x03, 0xd3, 0xb0, 0x69,
|
||||||
0x73, 0x3d, 0x67, 0xe0, 0x51, 0xdf, 0xbf, 0x4f, 0x49, 0xdf, 0x34, 0x6c, 0x1a, 0x9e, 0xcc, 0x82,
|
0x78, 0x33, 0x0b, 0xe2, 0x44, 0x2f, 0x4d, 0xcf, 0x37, 0xd6, 0x8e, 0x8a, 0x55, 0x70, 0x99, 0xad,
|
||||||
0xd8, 0xd1, 0x2b, 0x93, 0xb3, 0x8d, 0xb5, 0xa3, 0x62, 0x15, 0x5c, 0x66, 0xab, 0xfe, 0xa5, 0x0a,
|
0xfa, 0x97, 0x3a, 0xdc, 0xc8, 0xf6, 0x38, 0xf4, 0x31, 0x20, 0xa7, 0xef, 0x53, 0x6f, 0x4c, 0x07,
|
||||||
0x37, 0xb2, 0x6f, 0x1c, 0xfa, 0x04, 0x90, 0xd3, 0xf3, 0xa9, 0x37, 0xa2, 0xfd, 0x8f, 0x82, 0xc1,
|
0x1f, 0x06, 0x83, 0x1b, 0x9f, 0x6e, 0x14, 0x31, 0xdd, 0x44, 0x79, 0x7b, 0x98, 0xd3, 0xc0, 0x05,
|
||||||
0x8d, 0x4f, 0x37, 0x8a, 0x98, 0x6e, 0xa2, 0xba, 0x3d, 0xcc, 0x69, 0xe0, 0x02, 0xab, 0x60, 0x3e,
|
0x56, 0xc1, 0x7c, 0x24, 0x13, 0xa0, 0x26, 0x36, 0x9a, 0x98, 0x8f, 0x72, 0x49, 0xb0, 0x0b, 0xcb,
|
||||||
0x92, 0x05, 0x50, 0x11, 0x81, 0x26, 0xe6, 0xa3, 0x5c, 0x11, 0xec, 0xc2, 0xb2, 0xac, 0xfd, 0x50,
|
0x32, 0xf7, 0x43, 0xa1, 0x08, 0xd6, 0xc4, 0xbb, 0x9f, 0xa6, 0xc5, 0x38, 0xab, 0x8f, 0x3e, 0x84,
|
||||||
0x28, 0x92, 0x35, 0x71, 0xef, 0x27, 0x69, 0x31, 0xce, 0xea, 0xa3, 0x8f, 0xe0, 0x26, 0x19, 0x11,
|
0x9b, 0x64, 0x4c, 0x0c, 0x93, 0xf4, 0x4d, 0x1a, 0x81, 0xd4, 0x05, 0xc8, 0x8b, 0x12, 0xe4, 0xe6,
|
||||||
0xc3, 0x24, 0x3d, 0x93, 0x46, 0x20, 0x55, 0x01, 0xf2, 0xb2, 0x04, 0xb9, 0xb9, 0x9b, 0x55, 0xc0,
|
0x6e, 0x56, 0x01, 0xe7, 0x6d, 0xd0, 0x01, 0xac, 0x8c, 0xec, 0x3c, 0x54, 0x10, 0x87, 0x2f, 0x49,
|
||||||
0x79, 0x1b, 0x74, 0x00, 0x2b, 0x43, 0x3b, 0x0f, 0x15, 0xe4, 0xe1, 0x2b, 0x12, 0x6a, 0xe5, 0x24,
|
0xa8, 0x95, 0xd3, 0xbc, 0x0a, 0x2e, 0xb2, 0x43, 0x9f, 0x03, 0xe8, 0x61, 0x63, 0xf6, 0xdb, 0x73,
|
||||||
0xaf, 0x82, 0x8b, 0xec, 0xd0, 0x17, 0x00, 0x7a, 0xf8, 0x30, 0xfb, 0xcd, 0x39, 0xd1, 0x49, 0xdf,
|
0xa2, 0x92, 0xbe, 0x59, 0x21, 0x5f, 0xa2, 0x6e, 0x1e, 0x57, 0xb1, 0x68, 0xc9, 0xc7, 0x09, 0x4c,
|
||||||
0x9a, 0xa2, 0x5e, 0xa2, 0xd7, 0x3c, 0xee, 0x62, 0xd1, 0x92, 0x8f, 0x13, 0x98, 0xe8, 0x1e, 0x2c,
|
0x74, 0x17, 0x96, 0x3c, 0x9e, 0x01, 0xd1, 0x56, 0xe7, 0xc5, 0x56, 0xbf, 0x23, 0xcd, 0x96, 0x70,
|
||||||
0x79, 0xbc, 0x02, 0xa2, 0x50, 0xe7, 0x45, 0xa8, 0xdf, 0x91, 0x66, 0x4b, 0x38, 0x29, 0xc4, 0x69,
|
0x52, 0x88, 0xd3, 0xba, 0xe8, 0x0e, 0xb4, 0x74, 0xc7, 0x34, 0x45, 0xe4, 0xef, 0x39, 0x23, 0x9b,
|
||||||
0x5d, 0x74, 0x17, 0x1a, 0xba, 0x63, 0x9a, 0x22, 0xf3, 0xf7, 0x9c, 0xa1, 0xcd, 0x44, 0xf2, 0xd6,
|
0x89, 0xe0, 0x6d, 0xf4, 0x10, 0xef, 0xcc, 0x7b, 0x29, 0x09, 0xce, 0x68, 0xaa, 0x7f, 0x56, 0x92,
|
||||||
0x3a, 0x88, 0xbf, 0xcc, 0x7b, 0x29, 0x09, 0xce, 0x68, 0xaa, 0x7f, 0x56, 0x92, 0xcf, 0x4c, 0x58,
|
0x6d, 0x26, 0x4c, 0x67, 0x74, 0x27, 0x35, 0xfa, 0xbc, 0x92, 0x19, 0x7d, 0x6e, 0xe5, 0x2d, 0x12,
|
||||||
0xce, 0xe8, 0x6e, 0x6a, 0xf4, 0x79, 0x2d, 0x33, 0xfa, 0xdc, 0xca, 0x5b, 0x24, 0x26, 0x1f, 0x03,
|
0x93, 0x8f, 0x01, 0x4b, 0x3c, 0xf8, 0x0d, 0x7b, 0x18, 0x3c, 0xb8, 0x2c, 0x89, 0x6f, 0x5d, 0x98,
|
||||||
0x96, 0x78, 0xf2, 0x1b, 0xf6, 0x20, 0xb8, 0x70, 0xd9, 0x12, 0xdf, 0x3e, 0xb7, 0x94, 0x22, 0xed,
|
0x4a, 0x91, 0x76, 0xa2, 0x31, 0xde, 0x14, 0x27, 0x4f, 0x0a, 0x71, 0x1a, 0x59, 0xfd, 0x00, 0x5a,
|
||||||
0xc4, 0xc3, 0x78, 0x53, 0xec, 0x3c, 0x29, 0xc4, 0x69, 0x64, 0xf5, 0x43, 0x68, 0xa4, 0xeb, 0x30,
|
0xe9, 0x3c, 0x4c, 0xcd, 0xf4, 0xca, 0xa5, 0x33, 0xfd, 0x37, 0x0a, 0xac, 0x95, 0x78, 0x47, 0x26,
|
||||||
0x35, 0xd3, 0x2b, 0x17, 0xce, 0xf4, 0xcf, 0x15, 0x58, 0x2b, 0xf1, 0x8e, 0x4c, 0x68, 0x58, 0xe4,
|
0xb4, 0x2c, 0xf2, 0x38, 0x11, 0x23, 0x97, 0xce, 0xc6, 0x9c, 0x35, 0x69, 0x01, 0x6b, 0xd2, 0x1e,
|
||||||
0x49, 0x22, 0x47, 0x2e, 0x9c, 0x8d, 0x39, 0x6b, 0xd2, 0x02, 0xd6, 0xa4, 0x3d, 0xb4, 0xd9, 0xa1,
|
0xd8, 0xec, 0xd0, 0x3b, 0x66, 0x9e, 0x61, 0x0f, 0x83, 0x77, 0x38, 0x48, 0x61, 0xe1, 0x0c, 0x36,
|
||||||
0xd7, 0x65, 0x9e, 0x61, 0x0f, 0x82, 0x7b, 0x38, 0x48, 0x61, 0xe1, 0x0c, 0x36, 0xfa, 0x1c, 0xea,
|
0xfa, 0x0c, 0x9a, 0x16, 0x79, 0x7c, 0x3c, 0xf2, 0x86, 0x45, 0xf7, 0x55, 0xcd, 0x8f, 0xe8, 0x1f,
|
||||||
0x16, 0x79, 0xd2, 0x1d, 0x7a, 0x83, 0xa2, 0xf3, 0x9a, 0xce, 0x8f, 0x78, 0x3f, 0x0e, 0x24, 0x0a,
|
0x07, 0x12, 0x05, 0x47, 0x78, 0xea, 0x21, 0x6c, 0xa6, 0x0e, 0xc9, 0x4b, 0x05, 0x7d, 0x38, 0x32,
|
||||||
0x8e, 0xf0, 0xd4, 0x43, 0xd8, 0x4c, 0x6d, 0x92, 0xb7, 0x0a, 0xfa, 0x68, 0x68, 0x76, 0x69, 0x7c,
|
0x8f, 0x69, 0xfc, 0xe0, 0x6f, 0xc0, 0x82, 0x4b, 0x3c, 0x66, 0x44, 0xe5, 0xa2, 0xd1, 0x5b, 0x9a,
|
||||||
0xe1, 0x6f, 0xc2, 0x82, 0x4b, 0x3c, 0x66, 0x44, 0xed, 0xa2, 0xd6, 0x59, 0x9a, 0x9c, 0x6d, 0x2c,
|
0x9e, 0x6f, 0x2c, 0x1c, 0x85, 0x8b, 0x38, 0x96, 0xab, 0xff, 0x55, 0xa0, 0x71, 0xac, 0x13, 0x93,
|
||||||
0x1c, 0x85, 0x8b, 0x38, 0x96, 0xab, 0xff, 0x55, 0xa0, 0xd6, 0xd5, 0x89, 0x49, 0xaf, 0x81, 0x3a,
|
0x5e, 0x03, 0x75, 0xb8, 0x97, 0xa2, 0x0e, 0x6a, 0x69, 0x10, 0x89, 0xfd, 0x94, 0xb2, 0x86, 0xfd,
|
||||||
0xdc, 0x4f, 0x51, 0x07, 0xb5, 0x34, 0x89, 0x44, 0x3c, 0xa5, 0xac, 0x61, 0x3f, 0xc3, 0x1a, 0x5e,
|
0x0c, 0x6b, 0x78, 0xf9, 0x12, 0x9c, 0x8b, 0x09, 0xc3, 0xfb, 0xb0, 0x10, 0xb9, 0x4b, 0x55, 0x49,
|
||||||
0xbd, 0x00, 0xe7, 0x7c, 0xc2, 0xf0, 0x01, 0x2c, 0x44, 0xee, 0x52, 0x5d, 0x52, 0xb9, 0xa8, 0x4b,
|
0xe5, 0xb2, 0x2a, 0xa9, 0xfe, 0xbe, 0x06, 0x8b, 0x09, 0x17, 0x57, 0xb3, 0xe6, 0xd7, 0x9d, 0x18,
|
||||||
0xaa, 0xbf, 0xaf, 0xc0, 0x62, 0xc2, 0xc5, 0xe5, 0xac, 0xf9, 0x71, 0x27, 0x06, 0x0d, 0xde, 0x86,
|
0x34, 0x78, 0x19, 0xda, 0xa9, 0x72, 0x10, 0x2d, 0x1c, 0x2a, 0x82, 0xf9, 0x2d, 0xee, 0xde, 0xf9,
|
||||||
0x76, 0xa6, 0xd9, 0x88, 0x16, 0x0e, 0x15, 0xc1, 0xfc, 0x16, 0xbf, 0xde, 0xf9, 0x59, 0xe3, 0x43,
|
0x59, 0xe3, 0x03, 0x68, 0x31, 0xe2, 0x0d, 0x29, 0x0b, 0x65, 0xe2, 0xc2, 0x16, 0xe2, 0x49, 0xff,
|
||||||
0x68, 0x30, 0xe2, 0x0d, 0x28, 0x0b, 0x65, 0xe2, 0xc0, 0x16, 0xe2, 0x49, 0xff, 0x38, 0x25, 0xc5,
|
0x24, 0x25, 0xc5, 0x19, 0xed, 0xf5, 0xbb, 0xb0, 0x94, 0x72, 0x76, 0xa5, 0x21, 0xec, 0x4b, 0x7e,
|
||||||
0x19, 0xed, 0xf5, 0x7b, 0xb0, 0x94, 0x72, 0x76, 0xa9, 0x21, 0xec, 0x2b, 0x7e, 0x38, 0x71, 0x72,
|
0x39, 0x71, 0x70, 0x5e, 0x43, 0x74, 0x7d, 0x9c, 0x8a, 0xae, 0xad, 0xf2, 0xcb, 0x4c, 0xa4, 0x4c,
|
||||||
0x5e, 0x43, 0x76, 0x7d, 0x92, 0xca, 0xae, 0xad, 0xf2, 0xc3, 0x4c, 0x94, 0x4c, 0x59, 0x8e, 0xe1,
|
0x59, 0x8c, 0xe1, 0x4c, 0x8c, 0xbd, 0x5e, 0x09, 0xed, 0xe2, 0x48, 0xfb, 0x57, 0x0d, 0x56, 0x13,
|
||||||
0x4c, 0x8e, 0xbd, 0x31, 0x15, 0xda, 0xf9, 0x99, 0xf6, 0xaf, 0x0a, 0xac, 0x26, 0xb4, 0x63, 0x6e,
|
0xda, 0x31, 0x37, 0xfd, 0x61, 0xaa, 0x40, 0x6f, 0x65, 0x0a, 0x74, 0xbb, 0xc8, 0xe6, 0xb9, 0x91,
|
||||||
0xfa, 0xc3, 0x54, 0x83, 0xde, 0xca, 0x34, 0xe8, 0x66, 0x91, 0xcd, 0x95, 0x91, 0xd3, 0x62, 0x76,
|
0xd3, 0x62, 0x76, 0x37, 0xfb, 0xbc, 0xd9, 0xdd, 0x73, 0x20, 0xc5, 0xea, 0x9f, 0x14, 0x58, 0x4e,
|
||||||
0x37, 0x7b, 0xd5, 0xec, 0xee, 0x0a, 0x48, 0xb1, 0xfa, 0x27, 0x05, 0x96, 0x13, 0x67, 0x77, 0x0d,
|
0xdc, 0xdd, 0x35, 0x30, 0xc6, 0x07, 0x69, 0xc6, 0xf8, 0x72, 0x95, 0xa0, 0x29, 0xa1, 0x8c, 0x7f,
|
||||||
0x8c, 0xf1, 0x61, 0x9a, 0x31, 0xbe, 0x3a, 0x4d, 0xd2, 0x94, 0x50, 0xc6, 0xbf, 0xd6, 0x52, 0xc1,
|
0x6d, 0xa4, 0x36, 0xff, 0xad, 0x27, 0x31, 0xbf, 0x86, 0xd5, 0xb1, 0x63, 0x8e, 0x2c, 0xba, 0x67,
|
||||||
0x7f, 0xeb, 0x49, 0xcc, 0xaf, 0x61, 0x75, 0xe4, 0x98, 0x43, 0x8b, 0xee, 0x99, 0xc4, 0xb0, 0x42,
|
0x12, 0xc3, 0x0a, 0x15, 0xf8, 0xc4, 0x38, 0x9b, 0xfd, 0x63, 0x28, 0x82, 0xa7, 0x9e, 0x6f, 0xf8,
|
||||||
0x05, 0x3e, 0x31, 0xce, 0x66, 0xff, 0x18, 0x8a, 0xe0, 0xa9, 0xe7, 0x1b, 0x3e, 0xa3, 0x36, 0xfb,
|
0x8c, 0xda, 0xec, 0xd3, 0xd8, 0xb2, 0xf7, 0x5d, 0xe9, 0x64, 0xf5, 0xd3, 0x02, 0x38, 0x5c, 0xe8,
|
||||||
0x2c, 0xb6, 0xec, 0x7c, 0x57, 0x3a, 0x59, 0xfd, 0xac, 0x00, 0x0e, 0x17, 0x3a, 0x41, 0x3f, 0x80,
|
0x04, 0xfd, 0x00, 0x16, 0xf9, 0xc0, 0x6c, 0xe8, 0x94, 0x73, 0x6f, 0x19, 0x58, 0x2b, 0x12, 0x68,
|
||||||
0x45, 0x3e, 0x30, 0x1b, 0x3a, 0xe5, 0xdc, 0x5b, 0x26, 0xd6, 0x8a, 0x04, 0x5a, 0xec, 0xc6, 0x22,
|
0xf1, 0x38, 0x16, 0xe1, 0xa4, 0x1e, 0x7a, 0x04, 0x2b, 0xae, 0x33, 0x38, 0x20, 0x36, 0x19, 0x52,
|
||||||
0x9c, 0xd4, 0x43, 0x8f, 0x61, 0xc5, 0x75, 0xfa, 0x07, 0xc4, 0x26, 0x03, 0xca, 0xc7, 0x8c, 0x23,
|
0x3e, 0x66, 0x1c, 0x39, 0xa6, 0xa1, 0x4f, 0x04, 0xb3, 0x59, 0xe8, 0xbd, 0x1b, 0x4e, 0xa6, 0x47,
|
||||||
0xf1, 0x07, 0xb2, 0x60, 0x36, 0x0b, 0x9d, 0xf7, 0xc2, 0xc9, 0xf4, 0x28, 0xaf, 0xf2, 0x82, 0x53,
|
0x79, 0x95, 0x67, 0x9c, 0x22, 0xe4, 0x97, 0x45, 0x52, 0x17, 0x41, 0x22, 0x0f, 0x5a, 0x23, 0xd9,
|
||||||
0x84, 0xfc, 0xb2, 0x28, 0xea, 0x22, 0x48, 0xe4, 0x41, 0x63, 0x28, 0x9f, 0x7b, 0x49, 0xf4, 0x82,
|
0xee, 0x25, 0xd1, 0x0b, 0xfe, 0x6f, 0xd9, 0xa9, 0x12, 0x61, 0xa7, 0x29, 0xcb, 0xb8, 0xfa, 0xa7,
|
||||||
0xff, 0x5b, 0x76, 0xa6, 0xc9, 0xb0, 0x93, 0x94, 0x65, 0xdc, 0xfd, 0xd3, 0xeb, 0x38, 0xe3, 0xa1,
|
0xd7, 0x71, 0xc6, 0x43, 0x29, 0x71, 0x6b, 0xfe, 0x3f, 0xc4, 0x4d, 0xfd, 0x77, 0x1d, 0x6e, 0xe6,
|
||||||
0x94, 0xb8, 0xd5, 0xff, 0x1f, 0xe2, 0xa6, 0xfe, 0xbb, 0x0a, 0x37, 0x73, 0xad, 0x12, 0xfd, 0xf8,
|
0x4a, 0x25, 0xfa, 0xf1, 0x05, 0x0c, 0xe7, 0xd6, 0x73, 0x63, 0x37, 0xb9, 0x01, 0x7d, 0xf6, 0x0a,
|
||||||
0x1c, 0x86, 0x73, 0xeb, 0xca, 0xd8, 0x4d, 0x6e, 0x40, 0x9f, 0xbd, 0xc4, 0x80, 0xbe, 0x0b, 0xcb,
|
0x03, 0xfa, 0x2e, 0x2c, 0xeb, 0x23, 0xcf, 0xa3, 0x36, 0xcb, 0xb0, 0x9a, 0x88, 0x1a, 0xed, 0xa5,
|
||||||
0xfa, 0xd0, 0xf3, 0xa8, 0xcd, 0x32, 0xac, 0x26, 0xa2, 0x46, 0x7b, 0x69, 0x31, 0xce, 0xea, 0x17,
|
0xc5, 0x38, 0xab, 0x5f, 0xc4, 0xae, 0x1a, 0x57, 0x64, 0x57, 0xc9, 0x5d, 0xc8, 0x09, 0x39, 0x08,
|
||||||
0xb1, 0xab, 0xda, 0x25, 0xd9, 0x55, 0x32, 0x0a, 0x39, 0x21, 0x07, 0x69, 0x97, 0x8f, 0x42, 0x0e,
|
0xbb, 0xfc, 0x2e, 0xe4, 0xa0, 0x9c, 0xd5, 0xe7, 0xd3, 0x41, 0x80, 0x1a, 0x21, 0xcc, 0xa7, 0xa7,
|
||||||
0xca, 0x59, 0x7d, 0x3e, 0x1d, 0x04, 0xa8, 0x11, 0xc2, 0x7c, 0x7a, 0x3a, 0x38, 0x49, 0x49, 0x71,
|
0x83, 0xd3, 0x94, 0x14, 0x67, 0xb4, 0x0b, 0x98, 0xca, 0x42, 0x55, 0xa6, 0x82, 0x48, 0x8a, 0x84,
|
||||||
0x46, 0xbb, 0x80, 0xa9, 0x2c, 0x4c, 0xcb, 0x54, 0x10, 0x49, 0x91, 0x30, 0x10, 0x35, 0xbe, 0x3d,
|
0x81, 0xc8, 0xf1, 0xed, 0x2a, 0xb1, 0x5c, 0x99, 0x85, 0xa9, 0x7f, 0x53, 0xe0, 0xc5, 0xd2, 0x24,
|
||||||
0x4d, 0x2e, 0x4f, 0xcd, 0xc2, 0xd4, 0xbf, 0x29, 0xf0, 0x72, 0x69, 0x11, 0xa0, 0xdd, 0xd4, 0x93,
|
0x40, 0xbb, 0xa9, 0x96, 0xbb, 0x9d, 0x69, 0xb9, 0xdf, 0x2b, 0x35, 0x4c, 0xf4, 0x5d, 0xaf, 0x98,
|
||||||
0xbb, 0x9d, 0x79, 0x72, 0xbf, 0x57, 0x6a, 0x98, 0x78, 0x77, 0xbd, 0x62, 0x6a, 0xf4, 0xc1, 0x74,
|
0x1a, 0xbd, 0x5f, 0x8d, 0x1a, 0x15, 0xcc, 0xed, 0x97, 0x73, 0xa4, 0xde, 0xf6, 0x93, 0xa7, 0x9d,
|
||||||
0xd4, 0xa8, 0x60, 0x6e, 0xbf, 0x98, 0x23, 0x75, 0xb6, 0x9f, 0x3e, 0x6b, 0xcd, 0x7c, 0xfd, 0xac,
|
0x99, 0xaf, 0x9e, 0x76, 0x66, 0xbe, 0x7e, 0xda, 0x99, 0xf9, 0xcd, 0xb4, 0xa3, 0x3c, 0x99, 0x76,
|
||||||
0x35, 0xf3, 0xcd, 0xb3, 0xd6, 0xcc, 0x6f, 0x26, 0x2d, 0xe5, 0xe9, 0xa4, 0xa5, 0x7c, 0x3d, 0x69,
|
0x94, 0xaf, 0xa6, 0x1d, 0xe5, 0xeb, 0x69, 0x47, 0xf9, 0xc7, 0xb4, 0xa3, 0xfc, 0xee, 0x9b, 0xce,
|
||||||
0x29, 0xdf, 0x4c, 0x5a, 0xca, 0x3f, 0x26, 0x2d, 0xe5, 0x77, 0xcf, 0x5b, 0x33, 0x9f, 0xcf, 0x4b,
|
0xcc, 0x67, 0xf3, 0xd2, 0xe3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x89, 0x29, 0x5c, 0x61,
|
||||||
0x8f, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x9d, 0x5d, 0x9e, 0x04, 0x8c, 0x1b, 0x00, 0x00,
|
0x1b, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ syntax = 'proto2';
|
||||||
package k8s.io.api.apps.v1beta1;
|
package k8s.io.api.apps.v1beta1;
|
||||||
|
|
||||||
import "k8s.io/api/core/v1/generated.proto";
|
import "k8s.io/api/core/v1/generated.proto";
|
||||||
import "k8s.io/api/policy/v1beta1/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
|
@ -144,6 +143,7 @@ message DeploymentSpec {
|
||||||
|
|
||||||
// The deployment strategy to use to replace existing pods with new ones.
|
// The deployment strategy to use to replace existing pods with new ones.
|
||||||
// +optional
|
// +optional
|
||||||
|
// +patchStrategy=retainKeys
|
||||||
optional DeploymentStrategy strategy = 4;
|
optional DeploymentStrategy strategy = 4;
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
|
@ -263,7 +263,7 @@ message RollingUpdateDeployment {
|
||||||
// the rolling update starts, such that the total number of old and new pods do not exceed
|
// the rolling update starts, such that the total number of old and new pods do not exceed
|
||||||
// 130% of desired pods. Once old pods have been killed,
|
// 130% of desired pods. Once old pods have been killed,
|
||||||
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
||||||
// at any time during the update is atmost 130% of desired pods.
|
// at any time during the update is at most 130% of desired pods.
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
|
optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
package v1beta1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -55,8 +55,6 @@ type ScaleStatus struct {
|
||||||
TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"`
|
TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// +genclient
|
|
||||||
// +genclient:noVerbs
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// Scale represents a scaling request for a resource.
|
// Scale represents a scaling request for a resource.
|
||||||
|
@ -113,7 +111,7 @@ const (
|
||||||
// ParallelPodManagement will create and delete pods as soon as the stateful set
|
// ParallelPodManagement will create and delete pods as soon as the stateful set
|
||||||
// replica count is changed, and will not wait for pods to be ready or complete
|
// replica count is changed, and will not wait for pods to be ready or complete
|
||||||
// termination.
|
// termination.
|
||||||
ParallelPodManagement = "Parallel"
|
ParallelPodManagement PodManagementPolicyType = "Parallel"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
|
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
|
||||||
|
@ -323,7 +321,8 @@ type DeploymentSpec struct {
|
||||||
|
|
||||||
// The deployment strategy to use to replace existing pods with new ones.
|
// The deployment strategy to use to replace existing pods with new ones.
|
||||||
// +optional
|
// +optional
|
||||||
Strategy DeploymentStrategy `json:"strategy,omitempty" protobuf:"bytes,4,opt,name=strategy"`
|
// +patchStrategy=retainKeys
|
||||||
|
Strategy DeploymentStrategy `json:"strategy,omitempty" patchStrategy:"retainKeys" protobuf:"bytes,4,opt,name=strategy"`
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
// without any of its container crashing, for it to be considered available.
|
// without any of its container crashing, for it to be considered available.
|
||||||
|
@ -434,7 +433,7 @@ type RollingUpdateDeployment struct {
|
||||||
// the rolling update starts, such that the total number of old and new pods do not exceed
|
// the rolling update starts, such that the total number of old and new pods do not exceed
|
||||||
// 130% of desired pods. Once old pods have been killed,
|
// 130% of desired pods. Once old pods have been killed,
|
||||||
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
||||||
// at any time during the update is atmost 130% of desired pods.
|
// at any time during the update is at most 130% of desired pods.
|
||||||
// +optional
|
// +optional
|
||||||
MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
|
MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,7 +149,7 @@ func (RollbackConfig) SwaggerDoc() map[string]string {
|
||||||
var map_RollingUpdateDeployment = map[string]string{
|
var map_RollingUpdateDeployment = map[string]string{
|
||||||
"": "Spec to control the desired behavior of rolling update.",
|
"": "Spec to control the desired behavior of rolling update.",
|
||||||
"maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.",
|
"maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.",
|
||||||
"maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.",
|
"maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (RollingUpdateDeployment) SwaggerDoc() map[string]string {
|
func (RollingUpdateDeployment) SwaggerDoc() map[string]string {
|
||||||
|
|
|
@ -21,7 +21,7 @@ limitations under the License.
|
||||||
package v1beta1
|
package v1beta1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
core_v1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -204,50 +204,30 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.Strategy.DeepCopyInto(&out.Strategy)
|
in.Strategy.DeepCopyInto(&out.Strategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.RollbackTo != nil {
|
if in.RollbackTo != nil {
|
||||||
in, out := &in.RollbackTo, &out.RollbackTo
|
in, out := &in.RollbackTo, &out.RollbackTo
|
||||||
if *in == nil {
|
*out = new(RollbackConfig)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(RollbackConfig)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.ProgressDeadlineSeconds != nil {
|
if in.ProgressDeadlineSeconds != nil {
|
||||||
in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds
|
in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -274,12 +254,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) {
|
||||||
}
|
}
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -299,12 +275,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateDeployment)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateDeployment)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -340,21 +312,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MaxUnavailable != nil {
|
if in.MaxUnavailable != nil {
|
||||||
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.MaxSurge != nil {
|
if in.MaxSurge != nil {
|
||||||
in, out := &in.MaxSurge, &out.MaxSurge
|
in, out := &in.MaxSurge, &out.MaxSurge
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -374,12 +338,8 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Partition != nil {
|
if in.Partition != nil {
|
||||||
in, out := &in.Partition, &out.Partition
|
in, out := &in.Partition, &out.Partition
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -544,26 +504,18 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
if in.VolumeClaimTemplates != nil {
|
if in.VolumeClaimTemplates != nil {
|
||||||
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
||||||
*out = make([]core_v1.PersistentVolumeClaim, len(*in))
|
*out = make([]corev1.PersistentVolumeClaim, len(*in))
|
||||||
for i := range *in {
|
for i := range *in {
|
||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
|
@ -571,12 +523,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
|
||||||
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -596,21 +544,13 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ObservedGeneration != nil {
|
if in.ObservedGeneration != nil {
|
||||||
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
||||||
if *in == nil {
|
*out = new(int64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Conditions != nil {
|
if in.Conditions != nil {
|
||||||
in, out := &in.Conditions, &out.Conditions
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
@ -637,12 +577,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateStatefulSetStrategy)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateStatefulSetStrategy)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1beta2 // import "k8s.io/api/apps/v1beta2"
|
package v1beta2 // import "k8s.io/api/apps/v1beta2"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/apps/v1beta2/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1beta2 is a generated protocol buffer package.
|
Package v1beta2 is a generated protocol buffer package.
|
||||||
|
@ -64,7 +63,6 @@ import fmt "fmt"
|
||||||
import math "math"
|
import math "math"
|
||||||
|
|
||||||
import k8s_io_api_core_v1 "k8s.io/api/core/v1"
|
import k8s_io_api_core_v1 "k8s.io/api/core/v1"
|
||||||
|
|
||||||
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
import k8s_io_apimachinery_pkg_apis_meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
|
||||||
import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr"
|
import k8s_io_apimachinery_pkg_util_intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -1571,24 +1569,6 @@ func (m *StatefulSetUpdateStrategy) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -6110,51 +6090,14 @@ func (m *ScaleStatus) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.Selector == nil {
|
if m.Selector == nil {
|
||||||
m.Selector = make(map[string]string)
|
m.Selector = make(map[string]string)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
var mapvalue string
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -6164,41 +6107,80 @@ func (m *ScaleStatus) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var stringLenmapvalue uint64
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var stringLenmapvalue uint64
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapvalue |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
intStringLenmapvalue := int(stringLenmapvalue)
|
||||||
|
if intStringLenmapvalue < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
||||||
|
if postStringIndexmapvalue > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
|
||||||
|
iNdEx = postStringIndexmapvalue
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
intStringLenmapvalue := int(stringLenmapvalue)
|
|
||||||
if intStringLenmapvalue < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapvalue := iNdEx + intStringLenmapvalue
|
|
||||||
if postStringIndexmapvalue > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := string(dAtA[iNdEx:postStringIndexmapvalue])
|
|
||||||
iNdEx = postStringIndexmapvalue
|
|
||||||
m.Selector[mapkey] = mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue string
|
|
||||||
m.Selector[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.Selector[mapkey] = mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 3:
|
case 3:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
|
@ -7445,142 +7427,141 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 2186 bytes of a gzipped FileDescriptorProto
|
// 2176 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1c, 0xb7,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0xcb, 0x6f, 0x1c, 0xb7,
|
||||||
0x19, 0xf7, 0xec, 0x43, 0x5a, 0x51, 0x96, 0x64, 0x53, 0xaa, 0xb4, 0x91, 0xdb, 0x95, 0xb1, 0x09,
|
0x19, 0xd7, 0xec, 0x43, 0x5a, 0x51, 0x91, 0x64, 0x53, 0xaa, 0xb4, 0x91, 0xdb, 0x95, 0xb1, 0x09,
|
||||||
0x1c, 0x39, 0xb6, 0x66, 0x6d, 0xe5, 0x81, 0xc4, 0x2e, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57,
|
0x1c, 0x25, 0xb6, 0x66, 0x6d, 0xe5, 0x81, 0xc4, 0x2e, 0xda, 0x6a, 0xa5, 0xd4, 0x76, 0xa0, 0x57,
|
||||||
0x28, 0xcb, 0x40, 0x83, 0x16, 0x35, 0xb5, 0x4b, 0xaf, 0x26, 0x9a, 0x17, 0x66, 0x38, 0x5b, 0x2f,
|
0x28, 0xcb, 0x40, 0x83, 0x16, 0x35, 0xb5, 0x4b, 0xaf, 0x26, 0x9a, 0x17, 0x66, 0x38, 0x5b, 0x2f,
|
||||||
0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0x6d, 0xaf, 0xfd, 0x27, 0x7a, 0x2b, 0x8a, 0xf6, 0x56, 0x04,
|
0x7a, 0xe9, 0xa9, 0x40, 0x81, 0x02, 0x6d, 0xaf, 0xfd, 0x27, 0x7a, 0x2b, 0x8a, 0xf6, 0x56, 0x04,
|
||||||
0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x4e, 0x45, 0xd1, 0x4b, 0x81, 0x5e, 0x02,
|
0x85, 0x2f, 0x05, 0x82, 0x5e, 0x92, 0x93, 0x50, 0x6f, 0x4e, 0x45, 0xd1, 0x4b, 0x81, 0x5e, 0x02,
|
||||||
0x14, 0x28, 0xc8, 0xe1, 0x3c, 0x38, 0x0f, 0xef, 0x48, 0xb1, 0x95, 0x22, 0xc8, 0x6d, 0x87, 0xfc,
|
0x14, 0x28, 0xc8, 0xe1, 0x3c, 0x38, 0x0f, 0xef, 0x48, 0xb1, 0x95, 0x22, 0xc8, 0x6d, 0x87, 0xfc,
|
||||||
0x7d, 0x3f, 0x7e, 0x24, 0xbf, 0x8f, 0xdf, 0x6f, 0x38, 0x0b, 0xbe, 0x77, 0xf4, 0xb6, 0xab, 0x6a,
|
0x7d, 0x3f, 0x7e, 0x24, 0xbf, 0x8f, 0xdf, 0x6f, 0x38, 0x0b, 0xbe, 0x77, 0xfc, 0xb6, 0xab, 0x6a,
|
||||||
0x56, 0xeb, 0xc8, 0x3b, 0x20, 0x8e, 0x49, 0x28, 0x71, 0x5b, 0x7d, 0x62, 0x76, 0x2d, 0xa7, 0x25,
|
0x56, 0xeb, 0xd8, 0x3b, 0x24, 0x8e, 0x49, 0x28, 0x71, 0x5b, 0x7d, 0x62, 0x76, 0x2d, 0xa7, 0x25,
|
||||||
0x3a, 0xb0, 0xad, 0xb5, 0xb0, 0x6d, 0xbb, 0xad, 0xfe, 0xcd, 0x03, 0x42, 0xf1, 0x6a, 0xab, 0x47,
|
0x3a, 0xb0, 0xad, 0xb5, 0xb0, 0x6d, 0xbb, 0xad, 0xfe, 0x8d, 0x43, 0x42, 0xf1, 0x5a, 0xab, 0x47,
|
||||||
0x4c, 0xe2, 0x60, 0x4a, 0xba, 0xaa, 0xed, 0x58, 0xd4, 0x82, 0x0b, 0x3e, 0x50, 0xc5, 0xb6, 0xa6,
|
0x4c, 0xe2, 0x60, 0x4a, 0xba, 0xaa, 0xed, 0x58, 0xd4, 0x82, 0x8b, 0x3e, 0x50, 0xc5, 0xb6, 0xa6,
|
||||||
0x32, 0xa0, 0x2a, 0x80, 0x8b, 0x2b, 0x3d, 0x8d, 0x1e, 0x7a, 0x07, 0x6a, 0xc7, 0x32, 0x5a, 0x3d,
|
0x32, 0xa0, 0x2a, 0x80, 0x4b, 0xab, 0x3d, 0x8d, 0x1e, 0x79, 0x87, 0x6a, 0xc7, 0x32, 0x5a, 0x3d,
|
||||||
0xab, 0x67, 0xb5, 0x38, 0xfe, 0xc0, 0x7b, 0xc4, 0x9f, 0xf8, 0x03, 0xff, 0xe5, 0xf3, 0x2c, 0x36,
|
0xab, 0x67, 0xb5, 0x38, 0xfe, 0xd0, 0x7b, 0xc8, 0x9f, 0xf8, 0x03, 0xff, 0xe5, 0xf3, 0x2c, 0x35,
|
||||||
0x63, 0x03, 0x76, 0x2c, 0x87, 0xb4, 0xfa, 0x37, 0x93, 0x63, 0x2d, 0x5e, 0x8d, 0x61, 0x6c, 0x4b,
|
0x63, 0x03, 0x76, 0x2c, 0x87, 0xb4, 0xfa, 0x37, 0x92, 0x63, 0x2d, 0xbd, 0x11, 0x61, 0x0c, 0xdc,
|
||||||
0xd7, 0x3a, 0x03, 0xe1, 0x56, 0x1a, 0xfa, 0x46, 0x04, 0x35, 0x70, 0xe7, 0x50, 0x33, 0x89, 0x33,
|
0x39, 0xd2, 0x4c, 0xe2, 0x0c, 0x5a, 0xf6, 0x71, 0x8f, 0x35, 0xb8, 0x2d, 0x83, 0x50, 0x9c, 0x65,
|
||||||
0x68, 0xd9, 0x47, 0x3d, 0xd6, 0xe0, 0xb6, 0x0c, 0x42, 0x71, 0xd6, 0x00, 0xad, 0x3c, 0x2b, 0xc7,
|
0xd5, 0xca, 0xb3, 0x72, 0x3c, 0x93, 0x6a, 0x06, 0x49, 0x19, 0xbc, 0x35, 0xca, 0xc0, 0xed, 0x1c,
|
||||||
0x33, 0xa9, 0x66, 0x90, 0x94, 0xc1, 0x5b, 0xa3, 0x0c, 0xdc, 0xce, 0x21, 0x31, 0x70, 0xca, 0xee,
|
0x11, 0x03, 0xa7, 0xec, 0x5e, 0xcf, 0xb3, 0xf3, 0xa8, 0xa6, 0xb7, 0x34, 0x93, 0xba, 0xd4, 0x49,
|
||||||
0xf5, 0x3c, 0x3b, 0x8f, 0x6a, 0x7a, 0x4b, 0x33, 0xa9, 0x4b, 0x9d, 0xa4, 0x51, 0xf3, 0x3f, 0x0a,
|
0x1a, 0x35, 0xff, 0xa3, 0x00, 0xb8, 0x61, 0x99, 0xd4, 0xb1, 0x74, 0x9d, 0x38, 0x88, 0xf4, 0x35,
|
||||||
0x80, 0xeb, 0x96, 0x49, 0x1d, 0x4b, 0xd7, 0x89, 0x83, 0x48, 0x5f, 0x73, 0x35, 0xcb, 0x84, 0x0f,
|
0x57, 0xb3, 0x4c, 0xf8, 0x00, 0xd4, 0xd8, 0x7c, 0xba, 0x98, 0xe2, 0xba, 0x72, 0x59, 0x59, 0x99,
|
||||||
0x41, 0x8d, 0xcd, 0xa7, 0x8b, 0x29, 0xae, 0x2b, 0x97, 0x95, 0xe5, 0xc9, 0xd5, 0x1b, 0x6a, 0xb4,
|
0x5a, 0xbb, 0xae, 0x46, 0x2b, 0x1d, 0xd2, 0xab, 0xf6, 0x71, 0x8f, 0x35, 0xb8, 0x2a, 0x43, 0xab,
|
||||||
0x29, 0x21, 0xbd, 0x6a, 0x1f, 0xf5, 0x58, 0x83, 0xab, 0x32, 0xb4, 0xda, 0xbf, 0xa9, 0xee, 0x1c,
|
0xfd, 0x1b, 0xea, 0xee, 0xe1, 0x87, 0xa4, 0x43, 0xb7, 0x09, 0xc5, 0x6d, 0xf8, 0xf8, 0x64, 0x79,
|
||||||
0x7c, 0x48, 0x3a, 0x74, 0x8b, 0x50, 0xdc, 0x86, 0x4f, 0x8e, 0x97, 0xce, 0x0d, 0x8f, 0x97, 0x40,
|
0x6c, 0x78, 0xb2, 0x0c, 0xa2, 0x36, 0x14, 0xb2, 0xc2, 0x5d, 0x50, 0xe1, 0xec, 0x25, 0xce, 0xbe,
|
||||||
0xd4, 0x86, 0x42, 0x56, 0xb8, 0x03, 0x2a, 0x9c, 0xbd, 0xc4, 0xd9, 0x57, 0x72, 0xd9, 0xc5, 0xa4,
|
0x9a, 0xcb, 0x2e, 0x26, 0xad, 0x22, 0xfc, 0x93, 0x77, 0x1f, 0x51, 0x62, 0x32, 0xf7, 0xda, 0x2f,
|
||||||
0x55, 0x84, 0x7f, 0xf2, 0xee, 0x63, 0x4a, 0x4c, 0xe6, 0x5e, 0xfb, 0xbc, 0xa0, 0xae, 0x6c, 0x60,
|
0x08, 0xea, 0xca, 0x26, 0xa6, 0x18, 0x71, 0x22, 0x78, 0x0d, 0xd4, 0x1c, 0xe1, 0x7e, 0xbd, 0x7c,
|
||||||
0x8a, 0x11, 0x27, 0x82, 0xd7, 0x41, 0xcd, 0x11, 0xee, 0xd7, 0xcb, 0x97, 0x95, 0xe5, 0x72, 0xfb,
|
0x59, 0x59, 0x29, 0xb7, 0x2f, 0x08, 0x54, 0x2d, 0x98, 0x16, 0x0a, 0x11, 0xcd, 0xc7, 0x0a, 0x58,
|
||||||
0x82, 0x40, 0xd5, 0x82, 0x69, 0xa1, 0x10, 0xd1, 0x7c, 0xa2, 0x80, 0xf9, 0xf4, 0xbc, 0x37, 0x35,
|
0x48, 0xcf, 0x7b, 0x4b, 0x73, 0x29, 0xfc, 0x61, 0x6a, 0xee, 0x6a, 0xb1, 0xb9, 0x33, 0x6b, 0x3e,
|
||||||
0x97, 0xc2, 0x1f, 0xa6, 0xe6, 0xae, 0x16, 0x9b, 0x3b, 0xb3, 0xe6, 0x33, 0x0f, 0x07, 0x0e, 0x5a,
|
0xf3, 0x70, 0xe0, 0xa0, 0x25, 0x36, 0xef, 0x3d, 0x50, 0xd5, 0x28, 0x31, 0xdc, 0x7a, 0xe9, 0x72,
|
||||||
0x62, 0xf3, 0xde, 0x05, 0x55, 0x8d, 0x12, 0xc3, 0xad, 0x97, 0x2e, 0x97, 0x97, 0x27, 0x57, 0xaf,
|
0x79, 0x65, 0x6a, 0xed, 0xaa, 0x9a, 0x13, 0xc0, 0x6a, 0xda, 0xbb, 0xf6, 0xb4, 0xe0, 0xad, 0xde,
|
||||||
0xa9, 0x39, 0xb1, 0xae, 0xa6, 0xbd, 0x6b, 0x4f, 0x09, 0xde, 0xea, 0x3d, 0xc6, 0x80, 0x7c, 0xa2,
|
0x65, 0x0c, 0xc8, 0x27, 0x6a, 0xfe, 0xa2, 0x04, 0x26, 0x37, 0x31, 0x31, 0x2c, 0x73, 0x9f, 0xd0,
|
||||||
0xe6, 0x2f, 0x4a, 0x60, 0x62, 0x03, 0x13, 0xc3, 0x32, 0xf7, 0x08, 0x3d, 0x83, 0x9d, 0xbb, 0x0b,
|
0x73, 0xd8, 0xb9, 0x3b, 0xa0, 0xe2, 0xda, 0xa4, 0x23, 0x76, 0xee, 0x4a, 0xee, 0x04, 0x42, 0x9f,
|
||||||
0x2a, 0xae, 0x4d, 0x3a, 0x62, 0xe7, 0xae, 0xe4, 0x4e, 0x20, 0xf4, 0x69, 0xcf, 0x26, 0x9d, 0x68,
|
0xf6, 0x6d, 0xd2, 0x89, 0xb6, 0x8c, 0x3d, 0x21, 0xce, 0x00, 0xf7, 0xc0, 0xb8, 0x4b, 0x31, 0xf5,
|
||||||
0xcb, 0xd8, 0x13, 0xe2, 0x0c, 0x70, 0x17, 0x8c, 0xb9, 0x14, 0x53, 0xcf, 0xe5, 0x1b, 0x36, 0xb9,
|
0x5c, 0xbe, 0x61, 0x53, 0x6b, 0x2b, 0x05, 0xb8, 0x38, 0xbe, 0x3d, 0x23, 0xd8, 0xc6, 0xfd, 0x67,
|
||||||
0xba, 0x5c, 0x80, 0x8b, 0xe3, 0xdb, 0xd3, 0x82, 0x6d, 0xcc, 0x7f, 0x46, 0x82, 0xa7, 0xf9, 0x8f,
|
0x24, 0x78, 0x9a, 0xff, 0x28, 0x01, 0x18, 0x62, 0x37, 0x2c, 0xb3, 0xab, 0x51, 0x16, 0xce, 0x37,
|
||||||
0x12, 0x80, 0x21, 0x76, 0xdd, 0x32, 0xbb, 0x1a, 0x65, 0xe1, 0x7c, 0x0b, 0x54, 0xe8, 0xc0, 0x26,
|
0x41, 0x85, 0x0e, 0x6c, 0xc2, 0x17, 0x64, 0xb2, 0x7d, 0x25, 0x70, 0xe5, 0xde, 0xc0, 0x26, 0x9f,
|
||||||
0x7c, 0x41, 0x26, 0xda, 0x57, 0x02, 0x57, 0xee, 0x0f, 0x6c, 0xf2, 0xf9, 0xf1, 0xd2, 0x7c, 0xda,
|
0x9f, 0x2c, 0x2f, 0xa4, 0x2d, 0x58, 0x0f, 0xe2, 0x36, 0x70, 0x2b, 0x74, 0xb2, 0xc4, 0xad, 0xdf,
|
||||||
0x82, 0xf5, 0x20, 0x6e, 0x03, 0x37, 0x43, 0x27, 0x4b, 0xdc, 0xfa, 0x0d, 0x79, 0xe8, 0xcf, 0x8f,
|
0x90, 0x87, 0xfe, 0xfc, 0x64, 0x39, 0xe3, 0xec, 0x50, 0x43, 0x26, 0xd9, 0x41, 0xd8, 0x07, 0x50,
|
||||||
0x97, 0x32, 0x8e, 0x19, 0x35, 0x64, 0x92, 0x1d, 0x84, 0x7d, 0x00, 0x75, 0xec, 0xd2, 0xfb, 0x0e,
|
0xc7, 0x2e, 0xbd, 0xe7, 0x60, 0xd3, 0xf5, 0x47, 0xd2, 0x0c, 0x22, 0xa6, 0xff, 0x5a, 0xb1, 0x8d,
|
||||||
0x36, 0x5d, 0x7f, 0x24, 0xcd, 0x20, 0x62, 0xfa, 0xaf, 0x15, 0xdb, 0x28, 0x66, 0xd1, 0x5e, 0x14,
|
0x62, 0x16, 0xed, 0x25, 0xe1, 0x05, 0xdc, 0x4a, 0xb1, 0xa1, 0x8c, 0x11, 0xe0, 0x15, 0x30, 0xee,
|
||||||
0x5e, 0xc0, 0xcd, 0x14, 0x1b, 0xca, 0x18, 0x01, 0x5e, 0x01, 0x63, 0x0e, 0xc1, 0xae, 0x65, 0xd6,
|
0x10, 0xec, 0x5a, 0x66, 0xbd, 0xc2, 0x67, 0x11, 0x2e, 0x20, 0xe2, 0xad, 0x48, 0xf4, 0xc2, 0x57,
|
||||||
0x2b, 0x7c, 0x16, 0xe1, 0x02, 0x22, 0xde, 0x8a, 0x44, 0x2f, 0xbc, 0x0a, 0xc6, 0x0d, 0xe2, 0xba,
|
0xc1, 0x84, 0x41, 0x5c, 0x17, 0xf7, 0x48, 0xbd, 0xca, 0x81, 0xb3, 0x02, 0x38, 0xb1, 0xed, 0x37,
|
||||||
0xb8, 0x47, 0xea, 0x55, 0x0e, 0x9c, 0x11, 0xc0, 0xf1, 0x2d, 0xbf, 0x19, 0x05, 0xfd, 0xcd, 0xdf,
|
0xa3, 0xa0, 0xbf, 0xf9, 0x7b, 0x05, 0x4c, 0x87, 0x2b, 0x77, 0x0e, 0x99, 0x73, 0x5b, 0xce, 0x9c,
|
||||||
0x2b, 0x60, 0x2a, 0x5c, 0xb9, 0x33, 0xc8, 0x9c, 0x3b, 0x72, 0xe6, 0x34, 0x47, 0x07, 0x4b, 0x4e,
|
0xe6, 0xe8, 0x60, 0xc9, 0x49, 0x98, 0x8f, 0xca, 0x31, 0xc7, 0x59, 0x38, 0xc2, 0x1f, 0x81, 0x9a,
|
||||||
0xc2, 0x7c, 0x54, 0x8e, 0x39, 0xce, 0xc2, 0x11, 0xfe, 0x08, 0xd4, 0x5c, 0xa2, 0x93, 0x0e, 0xb5,
|
0x4b, 0x74, 0xd2, 0xa1, 0x96, 0x23, 0x1c, 0x7f, 0xbd, 0xa0, 0xe3, 0xf8, 0x90, 0xe8, 0xfb, 0xc2,
|
||||||
0x1c, 0xe1, 0xf8, 0xeb, 0x05, 0x1d, 0xc7, 0x07, 0x44, 0xdf, 0x13, 0xa6, 0xed, 0xf3, 0xcc, 0xf3,
|
0xb4, 0xfd, 0x02, 0xf3, 0x3c, 0x78, 0x42, 0x21, 0x25, 0x7c, 0x1f, 0xd4, 0x28, 0x31, 0x6c, 0x1d,
|
||||||
0xe0, 0x09, 0x85, 0x94, 0xf0, 0x7d, 0x50, 0xa3, 0xc4, 0xb0, 0x75, 0x4c, 0x89, 0xc8, 0x9a, 0x97,
|
0x53, 0x22, 0xb2, 0xe6, 0xa5, 0xb8, 0xf3, 0x2c, 0x66, 0x18, 0xd9, 0x9e, 0xd5, 0xbd, 0x27, 0x60,
|
||||||
0xe3, 0xce, 0xb3, 0x98, 0x61, 0x64, 0xbb, 0x56, 0xf7, 0xbe, 0x80, 0xf1, 0x94, 0x09, 0x17, 0x23,
|
0x3c, 0x65, 0xc2, 0xc5, 0x08, 0x5a, 0x51, 0x48, 0x03, 0x6d, 0x30, 0xe3, 0xd9, 0x5d, 0x86, 0xa4,
|
||||||
0x68, 0x45, 0x21, 0x0d, 0xb4, 0xc1, 0xb4, 0x67, 0x77, 0x19, 0x92, 0xb2, 0xe3, 0xbc, 0x37, 0x10,
|
0xec, 0x38, 0xef, 0x0d, 0x44, 0x0c, 0x5d, 0x1f, 0xbd, 0x2a, 0x07, 0x92, 0x5d, 0x7b, 0x41, 0x8c,
|
||||||
0x31, 0x74, 0x63, 0xf4, 0xaa, 0xec, 0x4b, 0x76, 0xed, 0x79, 0x31, 0xca, 0xb4, 0xdc, 0x8e, 0x12,
|
0x32, 0x23, 0xb7, 0xa3, 0x04, 0x3f, 0x5c, 0x07, 0xb3, 0x86, 0x66, 0x22, 0x82, 0xbb, 0x83, 0x7d,
|
||||||
0xfc, 0x70, 0x0d, 0xcc, 0x18, 0x9a, 0x89, 0x08, 0xee, 0x0e, 0xf6, 0x48, 0xc7, 0x32, 0xbb, 0x2e,
|
0xd2, 0xb1, 0xcc, 0xae, 0xcb, 0x43, 0xa9, 0xda, 0x5e, 0x14, 0x04, 0xb3, 0xdb, 0x72, 0x37, 0x4a,
|
||||||
0x0f, 0xa5, 0x6a, 0x7b, 0x41, 0x10, 0xcc, 0x6c, 0xc9, 0xdd, 0x28, 0x89, 0x87, 0x9b, 0x60, 0x2e,
|
0xe2, 0xe1, 0x16, 0x98, 0x0f, 0x0e, 0xe0, 0x3b, 0x9a, 0x4b, 0x2d, 0x67, 0xb0, 0xa5, 0x19, 0x1a,
|
||||||
0x38, 0x80, 0xef, 0x6a, 0x2e, 0xb5, 0x9c, 0xc1, 0xa6, 0x66, 0x68, 0xb4, 0x3e, 0xc6, 0x79, 0xea,
|
0xad, 0x8f, 0x73, 0x9e, 0xfa, 0xf0, 0x64, 0x79, 0x1e, 0x65, 0xf4, 0xa3, 0x4c, 0xab, 0xe6, 0x6f,
|
||||||
0xc3, 0xe3, 0xa5, 0x39, 0x94, 0xd1, 0x8f, 0x32, 0xad, 0x9a, 0xbf, 0x19, 0x03, 0x33, 0x89, 0x73,
|
0xc6, 0xc1, 0x6c, 0xe2, 0x5c, 0x80, 0xf7, 0xc1, 0x42, 0xc7, 0x73, 0x1c, 0x62, 0xd2, 0x1d, 0xcf,
|
||||||
0x01, 0x3e, 0x00, 0xf3, 0x1d, 0xcf, 0x71, 0x88, 0x49, 0xb7, 0x3d, 0xe3, 0x80, 0x38, 0x7b, 0x9d,
|
0x38, 0x24, 0xce, 0x7e, 0xe7, 0x88, 0x74, 0x3d, 0x9d, 0x74, 0xf9, 0xb6, 0x56, 0xdb, 0x0d, 0xe1,
|
||||||
0x43, 0xd2, 0xf5, 0x74, 0xd2, 0xe5, 0xdb, 0x5a, 0x6d, 0x37, 0x84, 0xaf, 0xf3, 0xeb, 0x99, 0x28,
|
0xeb, 0xc2, 0x46, 0x26, 0x0a, 0xe5, 0x58, 0xc3, 0xf7, 0x00, 0x34, 0x79, 0xd3, 0xb6, 0xe6, 0xba,
|
||||||
0x94, 0x63, 0x0d, 0xdf, 0x03, 0xd0, 0xe4, 0x4d, 0x5b, 0x9a, 0xeb, 0x86, 0x9c, 0x25, 0xce, 0x19,
|
0x21, 0x67, 0x89, 0x73, 0x86, 0xa9, 0xb8, 0x93, 0x42, 0xa0, 0x0c, 0x2b, 0xe6, 0x63, 0x97, 0xb8,
|
||||||
0xa6, 0xe2, 0x76, 0x0a, 0x81, 0x32, 0xac, 0x98, 0x8f, 0x5d, 0xe2, 0x6a, 0x0e, 0xe9, 0x26, 0x7d,
|
0x9a, 0x43, 0xba, 0x49, 0x1f, 0xcb, 0xb2, 0x8f, 0x9b, 0x99, 0x28, 0x94, 0x63, 0x0d, 0xdf, 0x04,
|
||||||
0x2c, 0xcb, 0x3e, 0x6e, 0x64, 0xa2, 0x50, 0x8e, 0x35, 0x7c, 0x13, 0x4c, 0xfa, 0xa3, 0xf1, 0x35,
|
0x53, 0xfe, 0x68, 0x7c, 0xcd, 0xc5, 0xe6, 0xcc, 0x09, 0xb2, 0xa9, 0x9d, 0xa8, 0x0b, 0xc5, 0x71,
|
||||||
0x17, 0x9b, 0x33, 0x2b, 0xc8, 0x26, 0xb7, 0xa3, 0x2e, 0x14, 0xc7, 0xb1, 0xa9, 0x59, 0x07, 0x2e,
|
0x6c, 0x6a, 0xd6, 0xa1, 0x4b, 0x9c, 0x3e, 0xe9, 0xde, 0xf6, 0xc5, 0x01, 0xab, 0xa0, 0x55, 0x5e,
|
||||||
0x71, 0xfa, 0xa4, 0x7b, 0xc7, 0x17, 0x07, 0xac, 0x82, 0x56, 0x79, 0x05, 0x0d, 0xa7, 0xb6, 0x93,
|
0x41, 0xc3, 0xa9, 0xed, 0xa6, 0x10, 0x28, 0xc3, 0x8a, 0x4d, 0xcd, 0x8f, 0x9a, 0xd4, 0xd4, 0xc6,
|
||||||
0x42, 0xa0, 0x0c, 0x2b, 0x36, 0x35, 0x3f, 0x6a, 0x52, 0x53, 0x1b, 0x93, 0xa7, 0xb6, 0x9f, 0x89,
|
0xe5, 0xa9, 0x1d, 0x64, 0xa2, 0x50, 0x8e, 0x35, 0x8b, 0x3d, 0xdf, 0xe5, 0xf5, 0x3e, 0xd6, 0x74,
|
||||||
0x42, 0x39, 0xd6, 0x2c, 0xf6, 0x7c, 0x97, 0xd7, 0xfa, 0x58, 0xd3, 0xf1, 0x81, 0x4e, 0xea, 0xe3,
|
0x7c, 0xa8, 0x93, 0xfa, 0x84, 0x1c, 0x7b, 0x3b, 0x72, 0x37, 0x4a, 0xe2, 0xe1, 0x6d, 0x70, 0xd1,
|
||||||
0x72, 0xec, 0x6d, 0xcb, 0xdd, 0x28, 0x89, 0x87, 0x77, 0xc0, 0x45, 0xbf, 0x69, 0xdf, 0xc4, 0x21,
|
0x6f, 0x3a, 0x30, 0x71, 0x48, 0x52, 0xe3, 0x24, 0x2f, 0x0a, 0x92, 0x8b, 0x3b, 0x49, 0x00, 0x4a,
|
||||||
0x49, 0x8d, 0x93, 0xbc, 0x24, 0x48, 0x2e, 0x6e, 0x27, 0x01, 0x28, 0x6d, 0x03, 0x6f, 0x81, 0xe9,
|
0xdb, 0xc0, 0x9b, 0x60, 0xa6, 0x63, 0xe9, 0x3a, 0x8f, 0xc7, 0x0d, 0xcb, 0x33, 0x69, 0x7d, 0x92,
|
||||||
0x8e, 0xa5, 0xeb, 0x3c, 0x1e, 0xd7, 0x2d, 0xcf, 0xa4, 0xf5, 0x09, 0xce, 0x02, 0x59, 0x0e, 0xad,
|
0xb3, 0x40, 0x96, 0x43, 0x1b, 0x52, 0x0f, 0x4a, 0x20, 0xe1, 0x8f, 0x01, 0xe8, 0x04, 0x85, 0xc1,
|
||||||
0x4b, 0x3d, 0x28, 0x81, 0x84, 0x3f, 0x06, 0xa0, 0x13, 0x14, 0x06, 0xb7, 0x0e, 0x46, 0x28, 0x80,
|
0xad, 0x83, 0x11, 0x0a, 0x20, 0x5d, 0x96, 0xa2, 0xca, 0x1c, 0x36, 0xb9, 0x28, 0x46, 0xd9, 0xfc,
|
||||||
0x74, 0x59, 0x8a, 0x2a, 0x73, 0xd8, 0xe4, 0xa2, 0x18, 0x65, 0xf3, 0x23, 0x05, 0x2c, 0xe4, 0x24,
|
0x48, 0x01, 0x8b, 0x39, 0x89, 0x0e, 0xbf, 0x2b, 0x15, 0xc1, 0xab, 0x89, 0x22, 0x78, 0x29, 0xc7,
|
||||||
0x3a, 0xfc, 0xae, 0x54, 0x04, 0xaf, 0x25, 0x8a, 0xe0, 0xa5, 0x1c, 0xb3, 0x58, 0x25, 0x3c, 0x04,
|
0x2c, 0x56, 0x09, 0x8f, 0xc0, 0x34, 0x13, 0x24, 0x9a, 0xd9, 0xf3, 0x21, 0xe2, 0x2c, 0x6b, 0xe5,
|
||||||
0x53, 0x4c, 0x90, 0x68, 0x66, 0xcf, 0x87, 0x88, 0xb3, 0xac, 0x95, 0x3b, 0x01, 0x14, 0x47, 0x47,
|
0x4e, 0x00, 0xc5, 0xd1, 0xd1, 0xa9, 0x7c, 0x71, 0x78, 0xb2, 0x3c, 0x2d, 0xf5, 0x21, 0x99, 0xb8,
|
||||||
0xa7, 0xf2, 0xc5, 0xe1, 0xf1, 0xd2, 0x94, 0xd4, 0x87, 0x64, 0xe2, 0xe6, 0x2f, 0x4b, 0x00, 0x6c,
|
0xf9, 0xcb, 0x12, 0x00, 0x9b, 0xc4, 0xd6, 0xad, 0x81, 0x41, 0xcc, 0xf3, 0xd0, 0x34, 0x77, 0x25,
|
||||||
0x10, 0x5b, 0xb7, 0x06, 0x06, 0x31, 0xcf, 0x42, 0xd3, 0xdc, 0x93, 0x34, 0xcd, 0xab, 0xf9, 0x5b,
|
0x4d, 0xf3, 0x4a, 0xfe, 0x96, 0x84, 0x4e, 0xe5, 0x8a, 0x9a, 0xf7, 0x13, 0xa2, 0xe6, 0xd5, 0x22,
|
||||||
0x12, 0x3a, 0x95, 0x2b, 0x6a, 0xde, 0x4f, 0x88, 0x9a, 0xab, 0x45, 0xc8, 0x9e, 0xad, 0x6a, 0x3e,
|
0x64, 0x4f, 0x57, 0x35, 0x9f, 0x94, 0xc1, 0x5c, 0x04, 0x8e, 0x64, 0xcd, 0x2d, 0x69, 0x47, 0x5f,
|
||||||
0x29, 0x83, 0xd9, 0x08, 0x1c, 0xc9, 0x9a, 0xdb, 0xd2, 0x8e, 0xbe, 0x9a, 0xd8, 0xd1, 0x85, 0x0c,
|
0x49, 0xec, 0xe8, 0x62, 0x86, 0xc9, 0x73, 0xd3, 0x35, 0xcf, 0x5e, 0x5f, 0xc0, 0x0f, 0xc1, 0x0c,
|
||||||
0x93, 0x17, 0xa6, 0x6b, 0x9e, 0xbf, 0xbe, 0x80, 0x1f, 0x82, 0x69, 0x26, 0x64, 0xfc, 0x90, 0xe0,
|
0x13, 0x32, 0x7e, 0x48, 0x70, 0x99, 0x34, 0x7e, 0x6a, 0x99, 0x14, 0x16, 0xb7, 0x2d, 0x89, 0x09,
|
||||||
0x32, 0x69, 0xec, 0xc4, 0x32, 0x29, 0x2c, 0x6e, 0x9b, 0x12, 0x13, 0x4a, 0x30, 0xe7, 0xc8, 0xb2,
|
0x25, 0x98, 0x73, 0x64, 0xd9, 0xc4, 0xf3, 0x96, 0x65, 0xcd, 0x3f, 0x28, 0x60, 0x26, 0xda, 0xa6,
|
||||||
0xf1, 0x17, 0x2d, 0xcb, 0x9a, 0x7f, 0x50, 0xc0, 0x74, 0xb4, 0x4d, 0x67, 0x20, 0xa2, 0xee, 0xca,
|
0x73, 0x10, 0x51, 0x77, 0x64, 0x11, 0xf5, 0x52, 0x81, 0xe0, 0xcc, 0x51, 0x51, 0x9f, 0x54, 0xe2,
|
||||||
0x22, 0xea, 0xe5, 0x02, 0xc1, 0x99, 0xa3, 0xa2, 0x3e, 0xa9, 0xc4, 0x5d, 0xe7, 0x32, 0x6a, 0x99,
|
0xae, 0x73, 0x19, 0xb5, 0xc2, 0x5e, 0xc1, 0x6c, 0x5d, 0xeb, 0x60, 0x57, 0xd4, 0xdb, 0x17, 0xfc,
|
||||||
0xbd, 0x82, 0xd9, 0xba, 0xd6, 0xc1, 0xae, 0xa8, 0xb7, 0xe7, 0xfd, 0xd7, 0x2f, 0xbf, 0x0d, 0x85,
|
0xd7, 0x2f, 0xbf, 0x0d, 0x85, 0xbd, 0x92, 0xe0, 0x2a, 0x3d, 0x5f, 0xc1, 0x55, 0x7e, 0x36, 0x82,
|
||||||
0xbd, 0x92, 0xe0, 0x2a, 0xbd, 0x58, 0xc1, 0x55, 0x7e, 0x3e, 0x82, 0xeb, 0x07, 0xa0, 0xe6, 0x06,
|
0xeb, 0x07, 0xa0, 0xe6, 0x06, 0x52, 0xab, 0xc2, 0x29, 0xaf, 0x16, 0x4a, 0x6c, 0xa1, 0xb2, 0x42,
|
||||||
0x52, 0xab, 0xc2, 0x29, 0xaf, 0x15, 0x4a, 0x6c, 0xa1, 0xb2, 0x42, 0xea, 0x50, 0x5f, 0x85, 0x74,
|
0xea, 0x50, 0x5f, 0x85, 0x74, 0x59, 0xca, 0xaa, 0xfa, 0x65, 0x2a, 0x2b, 0x96, 0xcc, 0x36, 0xf6,
|
||||||
0x59, 0xca, 0xaa, 0xfa, 0x65, 0x2a, 0x2b, 0x96, 0xcc, 0x36, 0xf6, 0x5c, 0xd2, 0xe5, 0x19, 0x50,
|
0x5c, 0xd2, 0xe5, 0x19, 0x50, 0x8b, 0x92, 0x79, 0x8f, 0xb7, 0x22, 0xd1, 0x0b, 0x0f, 0xc0, 0xa2,
|
||||||
0x8b, 0x92, 0x79, 0x97, 0xb7, 0x22, 0xd1, 0x0b, 0xf7, 0xc1, 0x82, 0xed, 0x58, 0x3d, 0x87, 0xb8,
|
0xed, 0x58, 0x3d, 0x87, 0xb8, 0xee, 0x26, 0xc1, 0x5d, 0x5d, 0x33, 0x49, 0x30, 0x01, 0xbf, 0x26,
|
||||||
0xee, 0x06, 0xc1, 0x5d, 0x5d, 0x33, 0x49, 0x30, 0x01, 0xbf, 0x26, 0x5e, 0x1a, 0x1e, 0x2f, 0x2d,
|
0x5e, 0x1a, 0x9e, 0x2c, 0x2f, 0xee, 0x65, 0x43, 0x50, 0x9e, 0x6d, 0xf3, 0xcf, 0x15, 0x70, 0x21,
|
||||||
0xec, 0x66, 0x43, 0x50, 0x9e, 0x6d, 0xf3, 0xcf, 0x15, 0x70, 0x21, 0x79, 0x36, 0xe6, 0xc8, 0x14,
|
0x79, 0x36, 0xe6, 0xc8, 0x14, 0xe5, 0x4c, 0x32, 0xe5, 0x5a, 0x2c, 0x4e, 0x7d, 0x0d, 0x17, 0xbb,
|
||||||
0xe5, 0x54, 0x32, 0xe5, 0x7a, 0x2c, 0x4e, 0x7d, 0x0d, 0x17, 0xbb, 0x2a, 0x48, 0xc5, 0xea, 0x1a,
|
0x2a, 0x48, 0xc5, 0xea, 0x3a, 0x98, 0x15, 0xb2, 0x24, 0xe8, 0x14, 0x42, 0x2d, 0xdc, 0x9e, 0x03,
|
||||||
0x98, 0x11, 0xb2, 0x24, 0xe8, 0x14, 0x42, 0x2d, 0xdc, 0x9e, 0x7d, 0xb9, 0x1b, 0x25, 0xf1, 0x4c,
|
0xb9, 0x1b, 0x25, 0xf1, 0x4c, 0x7c, 0x44, 0x9a, 0x22, 0x20, 0xa9, 0xc8, 0xe2, 0x63, 0x3d, 0x09,
|
||||||
0x7c, 0x44, 0x9a, 0x22, 0x20, 0xa9, 0xc8, 0xe2, 0x63, 0x2d, 0x09, 0x40, 0x69, 0x1b, 0xb8, 0x05,
|
0x40, 0x69, 0x1b, 0xb8, 0x0d, 0xe6, 0x3c, 0x33, 0x4d, 0xe5, 0x87, 0xcb, 0x25, 0x41, 0x35, 0x77,
|
||||||
0x66, 0x3d, 0x33, 0x4d, 0xe5, 0x87, 0xcb, 0x25, 0x41, 0x35, 0xbb, 0x9f, 0x86, 0xa0, 0x2c, 0x3b,
|
0x90, 0x86, 0xa0, 0x2c, 0x3b, 0xf8, 0x40, 0xd2, 0x23, 0xe3, 0xfc, 0x48, 0xb8, 0x56, 0x20, 0xac,
|
||||||
0xf8, 0x50, 0xd2, 0x23, 0x63, 0xfc, 0x48, 0xb8, 0x5e, 0x20, 0xac, 0x0b, 0x0b, 0x12, 0x78, 0x1b,
|
0x0b, 0x0b, 0x12, 0x78, 0x0b, 0x4c, 0x3b, 0x5c, 0x73, 0x06, 0xae, 0xfa, 0xba, 0xed, 0x1b, 0xc2,
|
||||||
0x4c, 0x39, 0x5c, 0x73, 0x06, 0xae, 0xfa, 0xba, 0xed, 0x1b, 0xc2, 0x6c, 0x0a, 0xc5, 0x3b, 0x91,
|
0x6c, 0x1a, 0xc5, 0x3b, 0x91, 0x8c, 0xcd, 0x90, 0x5a, 0xb5, 0xa2, 0x52, 0xab, 0xf9, 0x27, 0x05,
|
||||||
0x8c, 0xcd, 0x90, 0x5a, 0xb5, 0xa2, 0x52, 0xab, 0xf9, 0x27, 0x05, 0xc0, 0x74, 0x1e, 0x8e, 0xbc,
|
0xc0, 0x74, 0x1e, 0x8e, 0xbc, 0x09, 0x48, 0x59, 0xc4, 0x2a, 0xa6, 0x96, 0xad, 0x7f, 0xae, 0x17,
|
||||||
0x09, 0x48, 0x59, 0xc4, 0x2a, 0xa6, 0x96, 0xad, 0x7f, 0x6e, 0x14, 0xd4, 0x3f, 0xd1, 0x81, 0x5a,
|
0xd4, 0x3f, 0xd1, 0x81, 0x5a, 0x4c, 0x00, 0x89, 0x65, 0x38, 0x9f, 0x4b, 0x9d, 0xa2, 0x02, 0x28,
|
||||||
0x4c, 0x00, 0x89, 0x65, 0x38, 0x9b, 0x4b, 0x9d, 0xa2, 0x02, 0x28, 0x72, 0xea, 0x39, 0x08, 0xa0,
|
0x72, 0xea, 0x19, 0x08, 0xa0, 0x18, 0xd9, 0xd3, 0x05, 0xd0, 0x3f, 0x4b, 0x60, 0x2e, 0x02, 0x17,
|
||||||
0x18, 0xd9, 0xb3, 0x05, 0xd0, 0x3f, 0x4b, 0x60, 0x36, 0x02, 0x17, 0x16, 0x40, 0x19, 0x26, 0x5f,
|
0x16, 0x40, 0x19, 0x26, 0x5f, 0x5f, 0xec, 0x8c, 0xbe, 0xd8, 0x61, 0xa2, 0x24, 0x5a, 0xba, 0xff,
|
||||||
0x5f, 0xec, 0x8c, 0xbe, 0xd8, 0x61, 0xa2, 0x24, 0x5a, 0xba, 0xff, 0x27, 0x51, 0x12, 0x79, 0x95,
|
0x27, 0x51, 0x12, 0x79, 0x95, 0x23, 0x4a, 0x7e, 0x57, 0x8a, 0xbb, 0xfe, 0x95, 0x17, 0x25, 0x5f,
|
||||||
0x23, 0x4a, 0x7e, 0x57, 0x8a, 0xbb, 0xfe, 0x95, 0x17, 0x25, 0x5f, 0xfc, 0x4e, 0xa6, 0xf9, 0x97,
|
0xfc, 0x4e, 0xa6, 0xf9, 0x97, 0x32, 0xb8, 0x90, 0xcc, 0x43, 0xa9, 0x40, 0x2a, 0x23, 0x0b, 0xe4,
|
||||||
0x32, 0xb8, 0x90, 0xcc, 0x43, 0xa9, 0x40, 0x2a, 0x23, 0x0b, 0xe4, 0x2e, 0x98, 0x7b, 0xe4, 0xe9,
|
0x1e, 0x98, 0x7f, 0xe8, 0xe9, 0xfa, 0x80, 0x2f, 0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0x9b, 0xc2,
|
||||||
0xfa, 0x80, 0x2f, 0x43, 0xac, 0x4a, 0xfa, 0xa5, 0xf5, 0x9b, 0xc2, 0x72, 0xee, 0xfb, 0x19, 0x18,
|
0x72, 0xfe, 0xfb, 0x19, 0x18, 0x94, 0x69, 0x99, 0x53, 0xec, 0xcb, 0x67, 0x2a, 0xf6, 0xa9, 0x0a,
|
||||||
0x94, 0x69, 0x99, 0x53, 0xec, 0xcb, 0xa7, 0x2a, 0xf6, 0xa9, 0x0a, 0x54, 0x39, 0x41, 0x05, 0xca,
|
0x54, 0x39, 0x45, 0x05, 0xca, 0x2c, 0xdc, 0xd5, 0x33, 0x14, 0xee, 0xd3, 0x55, 0xda, 0x8c, 0x83,
|
||||||
0x2c, 0xdc, 0xd5, 0x53, 0x14, 0xee, 0x93, 0x55, 0xda, 0x8c, 0x83, 0x6b, 0xe4, 0xab, 0xff, 0xcf,
|
0x6b, 0xe4, 0xab, 0xff, 0xcf, 0x15, 0xb0, 0x90, 0xfd, 0xc2, 0x0d, 0x75, 0x30, 0x63, 0xe0, 0x47,
|
||||||
0x15, 0x30, 0x9f, 0xfd, 0xc2, 0x0d, 0x75, 0x30, 0x6d, 0xe0, 0xc7, 0xf1, 0x8b, 0x8f, 0x51, 0x45,
|
0xf1, 0x8b, 0x8f, 0x51, 0x45, 0xc4, 0xa3, 0x9a, 0xae, 0xfa, 0x9f, 0x8c, 0xd4, 0xbb, 0x26, 0xdd,
|
||||||
0xc4, 0xa3, 0x9a, 0xae, 0xfa, 0x9f, 0x8c, 0xd4, 0x7b, 0x26, 0xdd, 0x71, 0xf6, 0xa8, 0xa3, 0x99,
|
0x75, 0xf6, 0xa9, 0xa3, 0x99, 0x3d, 0xbf, 0xf2, 0x6e, 0x4b, 0x5c, 0x28, 0xc1, 0xdd, 0xfc, 0x4c,
|
||||||
0x3d, 0xbf, 0xf2, 0x6e, 0x49, 0x5c, 0x28, 0xc1, 0xdd, 0xfc, 0x4c, 0x01, 0x0b, 0x39, 0x95, 0xef,
|
0x01, 0x8b, 0x39, 0x95, 0xef, 0x7c, 0x3d, 0x81, 0x1f, 0x80, 0x9a, 0x81, 0x1f, 0xed, 0x7b, 0x4e,
|
||||||
0x6c, 0x3d, 0x81, 0x1f, 0x80, 0x9a, 0x81, 0x1f, 0xef, 0x79, 0x4e, 0x2f, 0xab, 0x56, 0x17, 0x1b,
|
0x2f, 0xab, 0x56, 0x17, 0x1b, 0x87, 0x67, 0xf3, 0xb6, 0x60, 0x41, 0x21, 0x5f, 0x73, 0x17, 0x5c,
|
||||||
0x87, 0x67, 0xf3, 0x96, 0x60, 0x41, 0x21, 0x5f, 0x73, 0x07, 0x5c, 0x96, 0x26, 0xc9, 0x32, 0x87,
|
0x96, 0x26, 0xc9, 0x32, 0x87, 0x3c, 0xf4, 0x74, 0x9e, 0x44, 0x42, 0x6c, 0x5c, 0x05, 0x93, 0x36,
|
||||||
0x3c, 0xf2, 0x74, 0x9e, 0x44, 0x42, 0x6c, 0x5c, 0x03, 0x13, 0x36, 0x76, 0xa8, 0x16, 0x4a, 0xd5,
|
0x76, 0xa8, 0x16, 0x4a, 0xd5, 0x6a, 0x7b, 0x7a, 0x78, 0xb2, 0x3c, 0xb9, 0x17, 0x34, 0xa2, 0xa8,
|
||||||
0x6a, 0x7b, 0x6a, 0x78, 0xbc, 0x34, 0xb1, 0x1b, 0x34, 0xa2, 0xa8, 0xbf, 0xf9, 0x5f, 0x05, 0x54,
|
0xbf, 0xf9, 0x5f, 0x05, 0x54, 0xf7, 0x3b, 0x58, 0x27, 0xe7, 0x50, 0xed, 0x37, 0xa5, 0x6a, 0x9f,
|
||||||
0xf7, 0x3a, 0x58, 0x27, 0x67, 0x50, 0xed, 0x37, 0xa4, 0x6a, 0x9f, 0x7f, 0x93, 0xce, 0xfd, 0xc9,
|
0x7f, 0x93, 0xce, 0xfd, 0xc9, 0x2d, 0xf4, 0x5b, 0x89, 0x42, 0xff, 0xf2, 0x08, 0x9e, 0xa7, 0xd7,
|
||||||
0x2d, 0xf4, 0x9b, 0x89, 0x42, 0xff, 0xca, 0x08, 0x9e, 0x67, 0xd7, 0xf8, 0x77, 0xc0, 0x44, 0x38,
|
0xf8, 0x77, 0xc0, 0x64, 0x38, 0xdc, 0xe9, 0x0e, 0xa0, 0xe6, 0x6f, 0x4b, 0x60, 0x2a, 0x36, 0xc4,
|
||||||
0xdc, 0xc9, 0x0e, 0xa0, 0xe6, 0x6f, 0x4b, 0x60, 0x32, 0x36, 0xc4, 0x09, 0x8f, 0xaf, 0x87, 0xd2,
|
0x29, 0x8f, 0xaf, 0x07, 0xd2, 0xb1, 0xcf, 0x12, 0x73, 0xad, 0xc8, 0x44, 0xd4, 0xe0, 0x88, 0x7f,
|
||||||
0xb1, 0xcf, 0x12, 0x73, 0xb5, 0xc8, 0x44, 0xd4, 0xe0, 0x88, 0x7f, 0xd7, 0xa4, 0x4e, 0xfc, 0x05,
|
0xd7, 0xa4, 0x4e, 0xfc, 0x05, 0x2f, 0x7d, 0xf2, 0x7f, 0x07, 0xcc, 0x50, 0xec, 0xf4, 0x08, 0x0d,
|
||||||
0x2f, 0x7d, 0xf2, 0x7f, 0x07, 0x4c, 0x53, 0xec, 0xf4, 0x08, 0x0d, 0xfa, 0xf8, 0x82, 0x4d, 0x44,
|
0xfa, 0xf8, 0x82, 0x4d, 0x46, 0xb7, 0x13, 0xf7, 0xa4, 0x5e, 0x94, 0x40, 0x2f, 0xdd, 0x02, 0xd3,
|
||||||
0xb7, 0x13, 0xf7, 0xa5, 0x5e, 0x94, 0x40, 0x2f, 0xde, 0x06, 0x53, 0xd2, 0x60, 0xf0, 0x02, 0x28,
|
0xd2, 0x60, 0xf0, 0x02, 0x28, 0x1f, 0x93, 0x81, 0x2f, 0x7b, 0x10, 0xfb, 0x09, 0xe7, 0x41, 0xb5,
|
||||||
0x1f, 0x91, 0x81, 0x2f, 0x7b, 0x10, 0xfb, 0x09, 0xe7, 0x40, 0xb5, 0x8f, 0x75, 0xcf, 0x8f, 0xf3,
|
0x8f, 0x75, 0xcf, 0x8f, 0xf3, 0x49, 0xe4, 0x3f, 0xdc, 0x2c, 0xbd, 0xad, 0x34, 0x7f, 0xc5, 0x16,
|
||||||
0x09, 0xe4, 0x3f, 0xdc, 0x2a, 0xbd, 0xad, 0x34, 0x7f, 0xc5, 0x16, 0x27, 0x0a, 0xce, 0x33, 0x88,
|
0x27, 0x0a, 0xce, 0x73, 0x88, 0xae, 0xf7, 0xa4, 0xe8, 0xca, 0xff, 0xa8, 0x17, 0x4f, 0x99, 0xbc,
|
||||||
0xae, 0xf7, 0xa4, 0xe8, 0xca, 0xff, 0xa8, 0x17, 0x4f, 0x99, 0xbc, 0x18, 0x43, 0x89, 0x18, 0x7b,
|
0x18, 0x43, 0x89, 0x18, 0x7b, 0xad, 0x10, 0xdb, 0xd3, 0x23, 0xed, 0x5f, 0x25, 0x30, 0x1f, 0x43,
|
||||||
0xad, 0x10, 0xdb, 0xb3, 0x23, 0xed, 0x5f, 0x25, 0x30, 0x17, 0x43, 0x47, 0x72, 0xf2, 0xdb, 0x92,
|
0x47, 0x72, 0xf2, 0xdb, 0x92, 0x9c, 0x5c, 0x49, 0xc8, 0xc9, 0x7a, 0x96, 0xcd, 0xd7, 0x7a, 0x72,
|
||||||
0x9c, 0x5c, 0x4e, 0xc8, 0xc9, 0x7a, 0x96, 0xcd, 0xd7, 0x7a, 0x72, 0xb4, 0x9e, 0xfc, 0xa3, 0x02,
|
0xb4, 0x9e, 0xfc, 0xa3, 0x02, 0x66, 0x63, 0x6b, 0x77, 0x0e, 0x82, 0xf2, 0xae, 0x2c, 0x28, 0x5f,
|
||||||
0x66, 0x62, 0x6b, 0x77, 0x06, 0x82, 0xf2, 0x9e, 0x2c, 0x28, 0x5f, 0x29, 0x12, 0x34, 0x39, 0x8a,
|
0x2e, 0x12, 0x34, 0x39, 0x8a, 0xf2, 0xaf, 0x55, 0xc9, 0xf9, 0xaf, 0xbc, 0xa4, 0xfc, 0x29, 0x98,
|
||||||
0xf2, 0xaf, 0x55, 0xc9, 0xf9, 0xaf, 0xbc, 0xa4, 0xfc, 0x29, 0x98, 0xeb, 0x5b, 0xba, 0x67, 0x90,
|
0xef, 0x5b, 0xba, 0x67, 0x90, 0x0d, 0x1d, 0x6b, 0x46, 0x00, 0x60, 0xaa, 0xa9, 0x9c, 0x7c, 0x97,
|
||||||
0x75, 0x1d, 0x6b, 0x46, 0x00, 0x60, 0xaa, 0xa9, 0x9c, 0x7c, 0x97, 0x0b, 0xe9, 0x89, 0xe3, 0x6a,
|
0x0b, 0xe9, 0x89, 0xe3, 0x6a, 0x2e, 0x25, 0x26, 0xbd, 0x1f, 0x59, 0x46, 0xba, 0xef, 0x7e, 0x06,
|
||||||
0x2e, 0x25, 0x26, 0x7d, 0x10, 0x59, 0x46, 0xba, 0xef, 0x41, 0x06, 0x1d, 0xca, 0x1c, 0x04, 0xbe,
|
0x1d, 0xca, 0x1c, 0x04, 0xbe, 0x09, 0xa6, 0x98, 0x7e, 0xd3, 0x3a, 0x64, 0x07, 0x1b, 0x41, 0x60,
|
||||||
0x09, 0x26, 0x99, 0x7e, 0xd3, 0x3a, 0x64, 0x1b, 0x1b, 0x41, 0x60, 0x85, 0x9f, 0xb0, 0xf6, 0xa2,
|
0x85, 0x9f, 0xb0, 0xf6, 0xa3, 0x2e, 0x14, 0xc7, 0xc1, 0x23, 0x30, 0x67, 0x5b, 0xdd, 0x6d, 0x6c,
|
||||||
0x2e, 0x14, 0xc7, 0xc1, 0x43, 0x30, 0x6b, 0x5b, 0xdd, 0x2d, 0x6c, 0xe2, 0x1e, 0x61, 0x32, 0x63,
|
0xe2, 0x1e, 0x61, 0x32, 0x63, 0xcf, 0xd2, 0xb5, 0xce, 0x80, 0x5f, 0x7e, 0x4d, 0xb6, 0xdf, 0x0a,
|
||||||
0x97, 0xff, 0x8f, 0x87, 0x5f, 0x7e, 0x4d, 0xb4, 0xdf, 0x0a, 0x6e, 0x45, 0x76, 0xd3, 0x10, 0xf6,
|
0x6e, 0x45, 0xf6, 0xd2, 0x10, 0xf6, 0x92, 0x98, 0xd1, 0xcc, 0x93, 0x3a, 0x8b, 0x12, 0x3a, 0xa9,
|
||||||
0x92, 0x98, 0xd1, 0xcc, 0x93, 0x3a, 0x8b, 0x12, 0x3a, 0xa9, 0xcf, 0xae, 0xfe, 0x1d, 0xf1, 0x6a,
|
0xcf, 0xae, 0xfe, 0x1d, 0xf1, 0x5a, 0x91, 0x08, 0x3b, 0xe3, 0x87, 0xd7, 0xbc, 0xbb, 0xbd, 0xda,
|
||||||
0x91, 0x08, 0x3b, 0xe5, 0x87, 0xd7, 0xbc, 0xbb, 0xbd, 0xda, 0xa9, 0xbe, 0x9a, 0xfe, 0xbb, 0x02,
|
0x99, 0xbe, 0x9a, 0xfe, 0xbb, 0x02, 0x2e, 0xa6, 0x8e, 0xca, 0x2f, 0xf1, 0x76, 0x2d, 0x25, 0xcf,
|
||||||
0x2e, 0xa6, 0x8e, 0xca, 0x2f, 0xf1, 0x76, 0x2d, 0x25, 0xcf, 0xcb, 0x27, 0x90, 0xe7, 0x6b, 0x60,
|
0xcb, 0xa7, 0x90, 0xe7, 0xeb, 0x60, 0x56, 0x7c, 0xb0, 0x4d, 0xa8, 0xfb, 0xf0, 0xfd, 0x67, 0x43,
|
||||||
0x46, 0x7c, 0xb0, 0x4d, 0xa8, 0xfb, 0xf0, 0xfd, 0x67, 0x5d, 0xee, 0x46, 0x49, 0x7c, 0xd6, 0xed,
|
0xee, 0x46, 0x49, 0x7c, 0xd6, 0xed, 0x5e, 0xf5, 0x94, 0xb7, 0x7b, 0x71, 0x2f, 0xc4, 0x1f, 0x90,
|
||||||
0x5e, 0xf5, 0x84, 0xb7, 0x7b, 0x71, 0x2f, 0xc4, 0x1f, 0x90, 0xfc, 0xd0, 0x4b, 0x7b, 0x21, 0xfe,
|
0xfc, 0xd0, 0x4b, 0x7b, 0x21, 0xfe, 0x87, 0x94, 0xc4, 0x33, 0x85, 0xe0, 0xb3, 0x86, 0x0c, 0x13,
|
||||||
0x87, 0x94, 0xc4, 0x33, 0x85, 0xe0, 0xb3, 0x86, 0x0c, 0xe3, 0xb2, 0x42, 0xd8, 0x97, 0x7a, 0x51,
|
0xb2, 0x42, 0x38, 0x90, 0x7a, 0x51, 0x02, 0xfd, 0x85, 0x3e, 0x4a, 0xe2, 0x8c, 0x8f, 0x92, 0xab,
|
||||||
0x02, 0xfd, 0x85, 0x3e, 0x4a, 0xe2, 0x8c, 0x8f, 0x92, 0x2b, 0x45, 0xe2, 0xb9, 0xf8, 0xbb, 0xc9,
|
0x45, 0xe2, 0xb9, 0xf8, 0xbb, 0xc9, 0xdf, 0x14, 0xf0, 0x62, 0x6e, 0x22, 0xc0, 0x75, 0xa9, 0xec,
|
||||||
0xdf, 0x14, 0xf0, 0x52, 0x6e, 0x22, 0xc0, 0x35, 0xa9, 0xec, 0xae, 0x24, 0xca, 0xee, 0xb7, 0x72,
|
0xae, 0x26, 0xca, 0xee, 0xb7, 0x72, 0x0d, 0x63, 0xb5, 0xd7, 0xc9, 0xbe, 0x9a, 0x7b, 0xa7, 0xd8,
|
||||||
0x0d, 0x63, 0xb5, 0xd7, 0xc9, 0xbe, 0x9a, 0x7b, 0xa7, 0xd8, 0xd5, 0x5c, 0x86, 0x76, 0x1f, 0x7d,
|
0xd5, 0x5c, 0x86, 0x76, 0x1f, 0x7d, 0x47, 0xd7, 0x5e, 0x7d, 0xfc, 0xa4, 0x31, 0xf6, 0xf1, 0x93,
|
||||||
0x47, 0xd7, 0x5e, 0x79, 0xf2, 0xb4, 0x71, 0xee, 0xe3, 0xa7, 0x8d, 0x73, 0x9f, 0x3e, 0x6d, 0x9c,
|
0xc6, 0xd8, 0xa7, 0x4f, 0x1a, 0x63, 0x3f, 0x1b, 0x36, 0x94, 0xc7, 0xc3, 0x86, 0xf2, 0xf1, 0xb0,
|
||||||
0xfb, 0xd9, 0xb0, 0xa1, 0x3c, 0x19, 0x36, 0x94, 0x8f, 0x87, 0x0d, 0xe5, 0xd3, 0x61, 0x43, 0xf9,
|
0xa1, 0x7c, 0x3a, 0x6c, 0x28, 0x7f, 0x1f, 0x36, 0x94, 0x5f, 0x7f, 0xd6, 0x18, 0xfb, 0x60, 0x42,
|
||||||
0xfb, 0xb0, 0xa1, 0xfc, 0xfa, 0xb3, 0xc6, 0xb9, 0x0f, 0xc6, 0xc5, 0x88, 0xff, 0x0b, 0x00, 0x00,
|
0x8c, 0xf8, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x85, 0x43, 0x0a, 0xec, 0x28, 0x00, 0x00,
|
||||||
0xff, 0xff, 0xe4, 0x8f, 0x6a, 0x57, 0x17, 0x29, 0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,6 @@ syntax = 'proto2';
|
||||||
package k8s.io.api.apps.v1beta2;
|
package k8s.io.api.apps.v1beta2;
|
||||||
|
|
||||||
import "k8s.io/api/core/v1/generated.proto";
|
import "k8s.io/api/core/v1/generated.proto";
|
||||||
import "k8s.io/api/policy/v1beta1/generated.proto";
|
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
|
@ -44,7 +43,7 @@ option go_package = "v1beta2";
|
||||||
// depend on its stability. It is primarily for internal use by controllers.
|
// depend on its stability. It is primarily for internal use by controllers.
|
||||||
message ControllerRevision {
|
message ControllerRevision {
|
||||||
// Standard object's metadata.
|
// Standard object's metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
|
@ -57,7 +56,7 @@ message ControllerRevision {
|
||||||
|
|
||||||
// ControllerRevisionList is a resource containing a list of ControllerRevision objects.
|
// ControllerRevisionList is a resource containing a list of ControllerRevision objects.
|
||||||
message ControllerRevisionList {
|
message ControllerRevisionList {
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
||||||
|
|
||||||
|
@ -70,12 +69,12 @@ message ControllerRevisionList {
|
||||||
// DaemonSet represents the configuration of a daemon set.
|
// DaemonSet represents the configuration of a daemon set.
|
||||||
message DaemonSet {
|
message DaemonSet {
|
||||||
// Standard object's metadata.
|
// Standard object's metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
// The desired behavior of this daemon set.
|
// The desired behavior of this daemon set.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
optional DaemonSetSpec spec = 2;
|
optional DaemonSetSpec spec = 2;
|
||||||
|
|
||||||
|
@ -83,7 +82,7 @@ message DaemonSet {
|
||||||
// out of date by some window of time.
|
// out of date by some window of time.
|
||||||
// Populated by the system.
|
// Populated by the system.
|
||||||
// Read-only.
|
// Read-only.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
optional DaemonSetStatus status = 3;
|
optional DaemonSetStatus status = 3;
|
||||||
}
|
}
|
||||||
|
@ -112,7 +111,7 @@ message DaemonSetCondition {
|
||||||
// DaemonSetList is a collection of daemon sets.
|
// DaemonSetList is a collection of daemon sets.
|
||||||
message DaemonSetList {
|
message DaemonSetList {
|
||||||
// Standard list metadata.
|
// Standard list metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
||||||
|
|
||||||
|
@ -287,6 +286,7 @@ message DeploymentSpec {
|
||||||
|
|
||||||
// The deployment strategy to use to replace existing pods with new ones.
|
// The deployment strategy to use to replace existing pods with new ones.
|
||||||
// +optional
|
// +optional
|
||||||
|
// +patchStrategy=retainKeys
|
||||||
optional DeploymentStrategy strategy = 4;
|
optional DeploymentStrategy strategy = 4;
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
|
@ -374,12 +374,12 @@ message DeploymentStrategy {
|
||||||
message ReplicaSet {
|
message ReplicaSet {
|
||||||
// If the Labels of a ReplicaSet are empty, they are defaulted to
|
// If the Labels of a ReplicaSet are empty, they are defaulted to
|
||||||
// be the same as the Pod(s) that the ReplicaSet manages.
|
// be the same as the Pod(s) that the ReplicaSet manages.
|
||||||
// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
// Spec defines the specification of the desired behavior of the ReplicaSet.
|
// Spec defines the specification of the desired behavior of the ReplicaSet.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
optional ReplicaSetSpec spec = 2;
|
optional ReplicaSetSpec spec = 2;
|
||||||
|
|
||||||
|
@ -387,7 +387,7 @@ message ReplicaSet {
|
||||||
// This data may be out of date by some window of time.
|
// This data may be out of date by some window of time.
|
||||||
// Populated by the system.
|
// Populated by the system.
|
||||||
// Read-only.
|
// Read-only.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
optional ReplicaSetStatus status = 3;
|
optional ReplicaSetStatus status = 3;
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,7 @@ message ReplicaSetCondition {
|
||||||
// ReplicaSetList is a collection of ReplicaSets.
|
// ReplicaSetList is a collection of ReplicaSets.
|
||||||
message ReplicaSetList {
|
message ReplicaSetList {
|
||||||
// Standard list metadata.
|
// Standard list metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
||||||
|
|
||||||
|
@ -527,7 +527,7 @@ message RollingUpdateDeployment {
|
||||||
// the rolling update starts, such that the total number of old and new pods do not exceed
|
// the rolling update starts, such that the total number of old and new pods do not exceed
|
||||||
// 130% of desired pods. Once old pods have been killed,
|
// 130% of desired pods. Once old pods have been killed,
|
||||||
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
||||||
// at any time during the update is atmost 130% of desired pods.
|
// at any time during the update is at most 130% of desired pods.
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
|
optional k8s.io.apimachinery.pkg.util.intstr.IntOrString maxSurge = 2;
|
||||||
}
|
}
|
||||||
|
@ -543,15 +543,15 @@ message RollingUpdateStatefulSetStrategy {
|
||||||
|
|
||||||
// Scale represents a scaling request for a resource.
|
// Scale represents a scaling request for a resource.
|
||||||
message Scale {
|
message Scale {
|
||||||
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
|
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
|
||||||
// +optional
|
// +optional
|
||||||
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
// defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
|
// defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
|
||||||
// +optional
|
// +optional
|
||||||
optional ScaleSpec spec = 2;
|
optional ScaleSpec spec = 2;
|
||||||
|
|
||||||
// current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.
|
// current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.
|
||||||
// +optional
|
// +optional
|
||||||
optional ScaleStatus status = 3;
|
optional ScaleStatus status = 3;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ limitations under the License.
|
||||||
package v1beta2
|
package v1beta2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/api/core/v1"
|
v1 "k8s.io/api/core/v1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -57,22 +57,20 @@ type ScaleStatus struct {
|
||||||
TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"`
|
TargetSelector string `json:"targetSelector,omitempty" protobuf:"bytes,3,opt,name=targetSelector"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// +genclient
|
|
||||||
// +genclient:noVerbs
|
|
||||||
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
// Scale represents a scaling request for a resource.
|
// Scale represents a scaling request for a resource.
|
||||||
type Scale struct {
|
type Scale struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
|
// Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
// defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
|
// defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.
|
||||||
// +optional
|
// +optional
|
||||||
Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
Spec ScaleSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
||||||
|
|
||||||
// current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.
|
// current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.
|
||||||
// +optional
|
// +optional
|
||||||
Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
Status ScaleStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
||||||
}
|
}
|
||||||
|
@ -117,7 +115,7 @@ const (
|
||||||
// ParallelPodManagement will create and delete pods as soon as the stateful set
|
// ParallelPodManagement will create and delete pods as soon as the stateful set
|
||||||
// replica count is changed, and will not wait for pods to be ready or complete
|
// replica count is changed, and will not wait for pods to be ready or complete
|
||||||
// termination.
|
// termination.
|
||||||
ParallelPodManagement = "Parallel"
|
ParallelPodManagement PodManagementPolicyType = "Parallel"
|
||||||
)
|
)
|
||||||
|
|
||||||
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
|
// StatefulSetUpdateStrategy indicates the strategy that the StatefulSet
|
||||||
|
@ -331,7 +329,8 @@ type DeploymentSpec struct {
|
||||||
|
|
||||||
// The deployment strategy to use to replace existing pods with new ones.
|
// The deployment strategy to use to replace existing pods with new ones.
|
||||||
// +optional
|
// +optional
|
||||||
Strategy DeploymentStrategy `json:"strategy,omitempty" protobuf:"bytes,4,opt,name=strategy"`
|
// +patchStrategy=retainKeys
|
||||||
|
Strategy DeploymentStrategy `json:"strategy,omitempty" patchStrategy:"retainKeys" protobuf:"bytes,4,opt,name=strategy"`
|
||||||
|
|
||||||
// Minimum number of seconds for which a newly created pod should be ready
|
// Minimum number of seconds for which a newly created pod should be ready
|
||||||
// without any of its container crashing, for it to be considered available.
|
// without any of its container crashing, for it to be considered available.
|
||||||
|
@ -414,7 +413,7 @@ type RollingUpdateDeployment struct {
|
||||||
// the rolling update starts, such that the total number of old and new pods do not exceed
|
// the rolling update starts, such that the total number of old and new pods do not exceed
|
||||||
// 130% of desired pods. Once old pods have been killed,
|
// 130% of desired pods. Once old pods have been killed,
|
||||||
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
// new ReplicaSet can be scaled up further, ensuring that total number of pods running
|
||||||
// at any time during the update is atmost 130% of desired pods.
|
// at any time during the update is at most 130% of desired pods.
|
||||||
// +optional
|
// +optional
|
||||||
MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
|
MaxSurge *intstr.IntOrString `json:"maxSurge,omitempty" protobuf:"bytes,2,opt,name=maxSurge"`
|
||||||
}
|
}
|
||||||
|
@ -667,12 +666,12 @@ type DaemonSetCondition struct {
|
||||||
type DaemonSet struct {
|
type DaemonSet struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
// Standard object's metadata.
|
// Standard object's metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
// The desired behavior of this daemon set.
|
// The desired behavior of this daemon set.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
Spec DaemonSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
Spec DaemonSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
||||||
|
|
||||||
|
@ -680,7 +679,7 @@ type DaemonSet struct {
|
||||||
// out of date by some window of time.
|
// out of date by some window of time.
|
||||||
// Populated by the system.
|
// Populated by the system.
|
||||||
// Read-only.
|
// Read-only.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
Status DaemonSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
Status DaemonSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
||||||
}
|
}
|
||||||
|
@ -698,7 +697,7 @@ const (
|
||||||
type DaemonSetList struct {
|
type DaemonSetList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
// Standard list metadata.
|
// Standard list metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
@ -717,12 +716,12 @@ type ReplicaSet struct {
|
||||||
|
|
||||||
// If the Labels of a ReplicaSet are empty, they are defaulted to
|
// If the Labels of a ReplicaSet are empty, they are defaulted to
|
||||||
// be the same as the Pod(s) that the ReplicaSet manages.
|
// be the same as the Pod(s) that the ReplicaSet manages.
|
||||||
// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
// Spec defines the specification of the desired behavior of the ReplicaSet.
|
// Spec defines the specification of the desired behavior of the ReplicaSet.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
Spec ReplicaSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
Spec ReplicaSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
||||||
|
|
||||||
|
@ -730,7 +729,7 @@ type ReplicaSet struct {
|
||||||
// This data may be out of date by some window of time.
|
// This data may be out of date by some window of time.
|
||||||
// Populated by the system.
|
// Populated by the system.
|
||||||
// Read-only.
|
// Read-only.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
|
||||||
// +optional
|
// +optional
|
||||||
Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
Status ReplicaSetStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
||||||
}
|
}
|
||||||
|
@ -741,7 +740,7 @@ type ReplicaSet struct {
|
||||||
type ReplicaSetList struct {
|
type ReplicaSetList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
// Standard list metadata.
|
// Standard list metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
@ -851,7 +850,7 @@ type ReplicaSetCondition struct {
|
||||||
type ControllerRevision struct {
|
type ControllerRevision struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
// Standard object's metadata.
|
// Standard object's metadata.
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
@ -868,7 +867,7 @@ type ControllerRevision struct {
|
||||||
type ControllerRevisionList struct {
|
type ControllerRevisionList struct {
|
||||||
metav1.TypeMeta `json:",inline"`
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
|
||||||
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
|
||||||
// +optional
|
// +optional
|
||||||
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ package v1beta2
|
||||||
// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
|
// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
|
||||||
var map_ControllerRevision = map[string]string{
|
var map_ControllerRevision = map[string]string{
|
||||||
"": "DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.",
|
"": "DEPRECATED - This group version of ControllerRevision is deprecated by apps/v1/ControllerRevision. See the release notes for more information. ControllerRevision implements an immutable snapshot of state data. Clients are responsible for serializing and deserializing the objects that contain their internal state. Once a ControllerRevision has been successfully created, it can not be updated. The API Server will fail validation of all requests that attempt to mutate the Data field. ControllerRevisions may, however, be deleted. Note that, due to its use by both the DaemonSet and StatefulSet controllers for update and rollback, this object is beta. However, it may be subject to name and representation changes in future releases, and clients should not depend on its stability. It is primarily for internal use by controllers.",
|
||||||
"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
|
"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
|
||||||
"data": "Data is the serialized representation of the state.",
|
"data": "Data is the serialized representation of the state.",
|
||||||
"revision": "Revision indicates the revision of the state represented by Data.",
|
"revision": "Revision indicates the revision of the state represented by Data.",
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ func (ControllerRevision) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_ControllerRevisionList = map[string]string{
|
var map_ControllerRevisionList = map[string]string{
|
||||||
"": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.",
|
"": "ControllerRevisionList is a resource containing a list of ControllerRevision objects.",
|
||||||
"metadata": "More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
|
"metadata": "More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
|
||||||
"items": "Items is the list of ControllerRevisions",
|
"items": "Items is the list of ControllerRevisions",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,9 +50,9 @@ func (ControllerRevisionList) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_DaemonSet = map[string]string{
|
var map_DaemonSet = map[string]string{
|
||||||
"": "DEPRECATED - This group version of DaemonSet is deprecated by apps/v1/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.",
|
"": "DEPRECATED - This group version of DaemonSet is deprecated by apps/v1/DaemonSet. See the release notes for more information. DaemonSet represents the configuration of a daemon set.",
|
||||||
"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
|
"metadata": "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
|
||||||
"spec": "The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status",
|
"spec": "The desired behavior of this daemon set. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
|
||||||
"status": "The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status",
|
"status": "The current status of this daemon set. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (DaemonSet) SwaggerDoc() map[string]string {
|
func (DaemonSet) SwaggerDoc() map[string]string {
|
||||||
|
@ -74,7 +74,7 @@ func (DaemonSetCondition) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_DaemonSetList = map[string]string{
|
var map_DaemonSetList = map[string]string{
|
||||||
"": "DaemonSetList is a collection of daemon sets.",
|
"": "DaemonSetList is a collection of daemon sets.",
|
||||||
"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
|
"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
|
||||||
"items": "A list of daemon sets.",
|
"items": "A list of daemon sets.",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ func (DaemonSetSpec) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_DaemonSetStatus = map[string]string{
|
var map_DaemonSetStatus = map[string]string{
|
||||||
"": "DaemonSetStatus represents the current status of a daemon set.",
|
"": "DaemonSetStatus represents the current status of a daemon set.",
|
||||||
"currentNumberScheduled": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
"currentNumberScheduled": "The number of nodes that are running at least 1 daemon pod and are supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
||||||
"numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
"numberMisscheduled": "The number of nodes that are running the daemon pod, but are not supposed to run the daemon pod. More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
||||||
"desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
"desiredNumberScheduled": "The total number of nodes that should be running the daemon pod (including nodes correctly running the daemon pod). More info: https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/",
|
||||||
|
@ -202,9 +202,9 @@ func (DeploymentStrategy) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_ReplicaSet = map[string]string{
|
var map_ReplicaSet = map[string]string{
|
||||||
"": "DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1/ReplicaSet. See the release notes for more information. ReplicaSet ensures that a specified number of pod replicas are running at any given time.",
|
"": "DEPRECATED - This group version of ReplicaSet is deprecated by apps/v1/ReplicaSet. See the release notes for more information. ReplicaSet ensures that a specified number of pod replicas are running at any given time.",
|
||||||
"metadata": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
|
"metadata": "If the Labels of a ReplicaSet are empty, they are defaulted to be the same as the Pod(s) that the ReplicaSet manages. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata",
|
||||||
"spec": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status",
|
"spec": "Spec defines the specification of the desired behavior of the ReplicaSet. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
|
||||||
"status": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status",
|
"status": "Status is the most recently observed status of the ReplicaSet. This data may be out of date by some window of time. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ReplicaSet) SwaggerDoc() map[string]string {
|
func (ReplicaSet) SwaggerDoc() map[string]string {
|
||||||
|
@ -226,7 +226,7 @@ func (ReplicaSetCondition) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_ReplicaSetList = map[string]string{
|
var map_ReplicaSetList = map[string]string{
|
||||||
"": "ReplicaSetList is a collection of ReplicaSets.",
|
"": "ReplicaSetList is a collection of ReplicaSets.",
|
||||||
"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds",
|
"metadata": "Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
|
||||||
"items": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller",
|
"items": "List of ReplicaSets. More info: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -272,7 +272,7 @@ func (RollingUpdateDaemonSet) SwaggerDoc() map[string]string {
|
||||||
var map_RollingUpdateDeployment = map[string]string{
|
var map_RollingUpdateDeployment = map[string]string{
|
||||||
"": "Spec to control the desired behavior of rolling update.",
|
"": "Spec to control the desired behavior of rolling update.",
|
||||||
"maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.",
|
"maxUnavailable": "The maximum number of pods that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 25%. Example: when this is set to 30%, the old ReplicaSet can be scaled down to 70% of desired pods immediately when the rolling update starts. Once new pods are ready, old ReplicaSet can be scaled down further, followed by scaling up the new ReplicaSet, ensuring that the total number of pods available at all times during the update is at least 70% of desired pods.",
|
||||||
"maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is atmost 130% of desired pods.",
|
"maxSurge": "The maximum number of pods that can be scheduled above the desired number of pods. Value can be an absolute number (ex: 5) or a percentage of desired pods (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 25%. Example: when this is set to 30%, the new ReplicaSet can be scaled up immediately when the rolling update starts, such that the total number of old and new pods do not exceed 130% of desired pods. Once old pods have been killed, new ReplicaSet can be scaled up further, ensuring that total number of pods running at any time during the update is at most 130% of desired pods.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (RollingUpdateDeployment) SwaggerDoc() map[string]string {
|
func (RollingUpdateDeployment) SwaggerDoc() map[string]string {
|
||||||
|
@ -290,9 +290,9 @@ func (RollingUpdateStatefulSetStrategy) SwaggerDoc() map[string]string {
|
||||||
|
|
||||||
var map_Scale = map[string]string{
|
var map_Scale = map[string]string{
|
||||||
"": "Scale represents a scaling request for a resource.",
|
"": "Scale represents a scaling request for a resource.",
|
||||||
"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.",
|
"metadata": "Standard object metadata; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata.",
|
||||||
"spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.",
|
"spec": "defines the behavior of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status.",
|
||||||
"status": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status. Read-only.",
|
"status": "current status of the scale. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status. Read-only.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (Scale) SwaggerDoc() map[string]string {
|
func (Scale) SwaggerDoc() map[string]string {
|
||||||
|
|
|
@ -21,7 +21,7 @@ limitations under the License.
|
||||||
package v1beta2
|
package v1beta2
|
||||||
|
|
||||||
import (
|
import (
|
||||||
core_v1 "k8s.io/api/core/v1"
|
corev1 "k8s.io/api/core/v1"
|
||||||
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
intstr "k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
@ -170,23 +170,15 @@ func (in *DaemonSetSpec) DeepCopyInto(out *DaemonSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -206,12 +198,8 @@ func (in *DaemonSetStatus) DeepCopyInto(out *DaemonSetStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Conditions != nil {
|
if in.Conditions != nil {
|
||||||
in, out := &in.Conditions, &out.Conditions
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
@ -238,12 +226,8 @@ func (in *DaemonSetUpdateStrategy) DeepCopyInto(out *DaemonSetUpdateStrategy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateDaemonSet)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateDaemonSet)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -342,41 +326,25 @@ func (in *DeploymentSpec) DeepCopyInto(out *DeploymentSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
in.Strategy.DeepCopyInto(&out.Strategy)
|
in.Strategy.DeepCopyInto(&out.Strategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.ProgressDeadlineSeconds != nil {
|
if in.ProgressDeadlineSeconds != nil {
|
||||||
in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds
|
in, out := &in.ProgressDeadlineSeconds, &out.ProgressDeadlineSeconds
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -403,12 +371,8 @@ func (in *DeploymentStatus) DeepCopyInto(out *DeploymentStatus) {
|
||||||
}
|
}
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -428,12 +392,8 @@ func (in *DeploymentStrategy) DeepCopyInto(out *DeploymentStrategy) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateDeployment)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateDeployment)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -531,21 +491,13 @@ func (in *ReplicaSetSpec) DeepCopyInto(out *ReplicaSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
return
|
return
|
||||||
|
@ -589,12 +541,8 @@ func (in *RollingUpdateDaemonSet) DeepCopyInto(out *RollingUpdateDaemonSet) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MaxUnavailable != nil {
|
if in.MaxUnavailable != nil {
|
||||||
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -614,21 +562,13 @@ func (in *RollingUpdateDeployment) DeepCopyInto(out *RollingUpdateDeployment) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MaxUnavailable != nil {
|
if in.MaxUnavailable != nil {
|
||||||
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
in, out := &in.MaxUnavailable, &out.MaxUnavailable
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.MaxSurge != nil {
|
if in.MaxSurge != nil {
|
||||||
in, out := &in.MaxSurge, &out.MaxSurge
|
in, out := &in.MaxSurge, &out.MaxSurge
|
||||||
if *in == nil {
|
*out = new(intstr.IntOrString)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(intstr.IntOrString)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -648,12 +588,8 @@ func (in *RollingUpdateStatefulSetStrategy) DeepCopyInto(out *RollingUpdateState
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Partition != nil {
|
if in.Partition != nil {
|
||||||
in, out := &in.Partition, &out.Partition
|
in, out := &in.Partition, &out.Partition
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -818,26 +754,18 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Replicas != nil {
|
if in.Replicas != nil {
|
||||||
in, out := &in.Replicas, &out.Replicas
|
in, out := &in.Replicas, &out.Replicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Selector != nil {
|
if in.Selector != nil {
|
||||||
in, out := &in.Selector, &out.Selector
|
in, out := &in.Selector, &out.Selector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
in.Template.DeepCopyInto(&out.Template)
|
in.Template.DeepCopyInto(&out.Template)
|
||||||
if in.VolumeClaimTemplates != nil {
|
if in.VolumeClaimTemplates != nil {
|
||||||
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
|
||||||
*out = make([]core_v1.PersistentVolumeClaim, len(*in))
|
*out = make([]corev1.PersistentVolumeClaim, len(*in))
|
||||||
for i := range *in {
|
for i := range *in {
|
||||||
(*in)[i].DeepCopyInto(&(*out)[i])
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
}
|
}
|
||||||
|
@ -845,12 +773,8 @@ func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec) {
|
||||||
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
in.UpdateStrategy.DeepCopyInto(&out.UpdateStrategy)
|
||||||
if in.RevisionHistoryLimit != nil {
|
if in.RevisionHistoryLimit != nil {
|
||||||
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
in, out := &in.RevisionHistoryLimit, &out.RevisionHistoryLimit
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -870,12 +794,8 @@ func (in *StatefulSetStatus) DeepCopyInto(out *StatefulSetStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.CollisionCount != nil {
|
if in.CollisionCount != nil {
|
||||||
in, out := &in.CollisionCount, &out.CollisionCount
|
in, out := &in.CollisionCount, &out.CollisionCount
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Conditions != nil {
|
if in.Conditions != nil {
|
||||||
in, out := &in.Conditions, &out.Conditions
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
@ -902,12 +822,8 @@ func (in *StatefulSetUpdateStrategy) DeepCopyInto(out *StatefulSetUpdateStrategy
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.RollingUpdate != nil {
|
if in.RollingUpdate != nil {
|
||||||
in, out := &in.RollingUpdate, &out.RollingUpdate
|
in, out := &in.RollingUpdate, &out.RollingUpdate
|
||||||
if *in == nil {
|
*out = new(RollingUpdateStatefulSetStrategy)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(RollingUpdateStatefulSetStrategy)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
|
// +groupName=auditregistration.k8s.io
|
||||||
|
|
||||||
|
package v1alpha1 // import "k8s.io/api/auditregistration/v1alpha1"
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,158 @@
|
||||||
|
/*
|
||||||
|
Copyright The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
|
syntax = 'proto2';
|
||||||
|
|
||||||
|
package k8s.io.api.auditregistration.v1alpha1;
|
||||||
|
|
||||||
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
|
|
||||||
|
// Package-wide variables from generator "generated".
|
||||||
|
option go_package = "v1alpha1";
|
||||||
|
|
||||||
|
// AuditSink represents a cluster level audit sink
|
||||||
|
message AuditSink {
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
|
// Spec defines the audit configuration spec
|
||||||
|
optional AuditSinkSpec spec = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AuditSinkList is a list of AuditSink items.
|
||||||
|
message AuditSinkList {
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
||||||
|
|
||||||
|
// List of audit configurations.
|
||||||
|
repeated AuditSink items = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// AuditSinkSpec holds the spec for the audit sink
|
||||||
|
message AuditSinkSpec {
|
||||||
|
// Policy defines the policy for selecting which events should be sent to the webhook
|
||||||
|
// required
|
||||||
|
optional Policy policy = 1;
|
||||||
|
|
||||||
|
// Webhook to send events
|
||||||
|
// required
|
||||||
|
optional Webhook webhook = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Policy defines the configuration of how audit events are logged
|
||||||
|
message Policy {
|
||||||
|
// The Level that all requests are recorded at.
|
||||||
|
// available options: None, Metadata, Request, RequestResponse
|
||||||
|
// required
|
||||||
|
optional string level = 1;
|
||||||
|
|
||||||
|
// Stages is a list of stages for which events are created.
|
||||||
|
// +optional
|
||||||
|
repeated string stages = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ServiceReference holds a reference to Service.legacy.k8s.io
|
||||||
|
message ServiceReference {
|
||||||
|
// `namespace` is the namespace of the service.
|
||||||
|
// Required
|
||||||
|
optional string namespace = 1;
|
||||||
|
|
||||||
|
// `name` is the name of the service.
|
||||||
|
// Required
|
||||||
|
optional string name = 2;
|
||||||
|
|
||||||
|
// `path` is an optional URL path which will be sent in any request to
|
||||||
|
// this service.
|
||||||
|
// +optional
|
||||||
|
optional string path = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Webhook holds the configuration of the webhook
|
||||||
|
message Webhook {
|
||||||
|
// Throttle holds the options for throttling the webhook
|
||||||
|
// +optional
|
||||||
|
optional WebhookThrottleConfig throttle = 1;
|
||||||
|
|
||||||
|
// ClientConfig holds the connection parameters for the webhook
|
||||||
|
// required
|
||||||
|
optional WebhookClientConfig clientConfig = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// WebhookClientConfig contains the information to make a connection with the webhook
|
||||||
|
message WebhookClientConfig {
|
||||||
|
// `url` gives the location of the webhook, in standard URL form
|
||||||
|
// (`scheme://host:port/path`). Exactly one of `url` or `service`
|
||||||
|
// must be specified.
|
||||||
|
//
|
||||||
|
// The `host` should not refer to a service running in the cluster; use
|
||||||
|
// the `service` field instead. The host might be resolved via external
|
||||||
|
// DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
|
||||||
|
// in-cluster DNS as that would be a layering violation). `host` may
|
||||||
|
// also be an IP address.
|
||||||
|
//
|
||||||
|
// Please note that using `localhost` or `127.0.0.1` as a `host` is
|
||||||
|
// risky unless you take great care to run this webhook on all hosts
|
||||||
|
// which run an apiserver which might need to make calls to this
|
||||||
|
// webhook. Such installs are likely to be non-portable, i.e., not easy
|
||||||
|
// to turn up in a new cluster.
|
||||||
|
//
|
||||||
|
// The scheme must be "https"; the URL must begin with "https://".
|
||||||
|
//
|
||||||
|
// A path is optional, and if present may be any string permissible in
|
||||||
|
// a URL. You may use the path to pass an arbitrary string to the
|
||||||
|
// webhook, for example, a cluster identifier.
|
||||||
|
//
|
||||||
|
// Attempting to use a user or basic auth e.g. "user:password@" is not
|
||||||
|
// allowed. Fragments ("#...") and query parameters ("?...") are not
|
||||||
|
// allowed, either.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
optional string url = 1;
|
||||||
|
|
||||||
|
// `service` is a reference to the service for this webhook. Either
|
||||||
|
// `service` or `url` must be specified.
|
||||||
|
//
|
||||||
|
// If the webhook is running within the cluster, then you should use `service`.
|
||||||
|
//
|
||||||
|
// Port 443 will be used if it is open, otherwise it is an error.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
optional ServiceReference service = 2;
|
||||||
|
|
||||||
|
// `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
|
||||||
|
// If unspecified, system trust roots on the apiserver are used.
|
||||||
|
// +optional
|
||||||
|
optional bytes caBundle = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// WebhookThrottleConfig holds the configuration for throttling events
|
||||||
|
message WebhookThrottleConfig {
|
||||||
|
// ThrottleQPS maximum number of batches per second
|
||||||
|
// default 10 QPS
|
||||||
|
// +optional
|
||||||
|
optional int64 qps = 1;
|
||||||
|
|
||||||
|
// ThrottleBurst is the maximum number of events sent at the same moment
|
||||||
|
// default 15 QPS
|
||||||
|
// +optional
|
||||||
|
optional int64 burst = 2;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupName is the group name use in this package
|
||||||
|
const GroupName = "auditregistration.k8s.io"
|
||||||
|
|
||||||
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
|
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1alpha1"}
|
||||||
|
|
||||||
|
// Resource takes an unqualified resource and returns a Group qualified GroupResource
|
||||||
|
func Resource(resource string) schema.GroupResource {
|
||||||
|
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
SchemeBuilder runtime.SchemeBuilder
|
||||||
|
localSchemeBuilder = &SchemeBuilder
|
||||||
|
AddToScheme = localSchemeBuilder.AddToScheme
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// We only register manually written functions here. The registration of the
|
||||||
|
// generated functions takes place in the generated files. The separation
|
||||||
|
// makes the code compile even when the generated files are missing.
|
||||||
|
localSchemeBuilder.Register(addKnownTypes)
|
||||||
|
}
|
||||||
|
|
||||||
|
func addKnownTypes(scheme *runtime.Scheme) error {
|
||||||
|
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||||
|
&AuditSink{},
|
||||||
|
&AuditSinkList{},
|
||||||
|
)
|
||||||
|
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,194 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Level defines the amount of information logged during auditing
|
||||||
|
type Level string
|
||||||
|
|
||||||
|
// Valid audit levels
|
||||||
|
const (
|
||||||
|
// LevelNone disables auditing
|
||||||
|
LevelNone Level = "None"
|
||||||
|
// LevelMetadata provides the basic level of auditing.
|
||||||
|
LevelMetadata Level = "Metadata"
|
||||||
|
// LevelRequest provides Metadata level of auditing, and additionally
|
||||||
|
// logs the request object (does not apply for non-resource requests).
|
||||||
|
LevelRequest Level = "Request"
|
||||||
|
// LevelRequestResponse provides Request level of auditing, and additionally
|
||||||
|
// logs the response object (does not apply for non-resource requests and watches).
|
||||||
|
LevelRequestResponse Level = "RequestResponse"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Stage defines the stages in request handling during which audit events may be generated.
|
||||||
|
type Stage string
|
||||||
|
|
||||||
|
// Valid audit stages.
|
||||||
|
const (
|
||||||
|
// The stage for events generated after the audit handler receives the request, but before it
|
||||||
|
// is delegated down the handler chain.
|
||||||
|
StageRequestReceived = "RequestReceived"
|
||||||
|
// The stage for events generated after the response headers are sent, but before the response body
|
||||||
|
// is sent. This stage is only generated for long-running requests (e.g. watch).
|
||||||
|
StageResponseStarted = "ResponseStarted"
|
||||||
|
// The stage for events generated after the response body has been completed, and no more bytes
|
||||||
|
// will be sent.
|
||||||
|
StageResponseComplete = "ResponseComplete"
|
||||||
|
// The stage for events generated when a panic occurred.
|
||||||
|
StagePanic = "Panic"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +genclient:nonNamespaced
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// AuditSink represents a cluster level audit sink
|
||||||
|
type AuditSink struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
// +optional
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// Spec defines the audit configuration spec
|
||||||
|
Spec AuditSinkSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AuditSinkSpec holds the spec for the audit sink
|
||||||
|
type AuditSinkSpec struct {
|
||||||
|
// Policy defines the policy for selecting which events should be sent to the webhook
|
||||||
|
// required
|
||||||
|
Policy Policy `json:"policy" protobuf:"bytes,1,opt,name=policy"`
|
||||||
|
|
||||||
|
// Webhook to send events
|
||||||
|
// required
|
||||||
|
Webhook Webhook `json:"webhook" protobuf:"bytes,2,opt,name=webhook"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// AuditSinkList is a list of AuditSink items.
|
||||||
|
type AuditSinkList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
// +optional
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// List of audit configurations.
|
||||||
|
Items []AuditSink `json:"items" protobuf:"bytes,2,rep,name=items"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Policy defines the configuration of how audit events are logged
|
||||||
|
type Policy struct {
|
||||||
|
// The Level that all requests are recorded at.
|
||||||
|
// available options: None, Metadata, Request, RequestResponse
|
||||||
|
// required
|
||||||
|
Level Level `json:"level" protobuf:"bytes,1,opt,name=level"`
|
||||||
|
|
||||||
|
// Stages is a list of stages for which events are created.
|
||||||
|
// +optional
|
||||||
|
Stages []Stage `json:"stages" protobuf:"bytes,2,opt,name=stages"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Webhook holds the configuration of the webhook
|
||||||
|
type Webhook struct {
|
||||||
|
// Throttle holds the options for throttling the webhook
|
||||||
|
// +optional
|
||||||
|
Throttle *WebhookThrottleConfig `json:"throttle,omitempty" protobuf:"bytes,1,opt,name=throttle"`
|
||||||
|
|
||||||
|
// ClientConfig holds the connection parameters for the webhook
|
||||||
|
// required
|
||||||
|
ClientConfig WebhookClientConfig `json:"clientConfig" protobuf:"bytes,2,opt,name=clientConfig"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WebhookThrottleConfig holds the configuration for throttling events
|
||||||
|
type WebhookThrottleConfig struct {
|
||||||
|
// ThrottleQPS maximum number of batches per second
|
||||||
|
// default 10 QPS
|
||||||
|
// +optional
|
||||||
|
QPS *int64 `json:"qps,omitempty" protobuf:"bytes,1,opt,name=qps"`
|
||||||
|
|
||||||
|
// ThrottleBurst is the maximum number of events sent at the same moment
|
||||||
|
// default 15 QPS
|
||||||
|
// +optional
|
||||||
|
Burst *int64 `json:"burst,omitempty" protobuf:"bytes,2,opt,name=burst"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// WebhookClientConfig contains the information to make a connection with the webhook
|
||||||
|
type WebhookClientConfig struct {
|
||||||
|
// `url` gives the location of the webhook, in standard URL form
|
||||||
|
// (`scheme://host:port/path`). Exactly one of `url` or `service`
|
||||||
|
// must be specified.
|
||||||
|
//
|
||||||
|
// The `host` should not refer to a service running in the cluster; use
|
||||||
|
// the `service` field instead. The host might be resolved via external
|
||||||
|
// DNS in some apiservers (e.g., `kube-apiserver` cannot resolve
|
||||||
|
// in-cluster DNS as that would be a layering violation). `host` may
|
||||||
|
// also be an IP address.
|
||||||
|
//
|
||||||
|
// Please note that using `localhost` or `127.0.0.1` as a `host` is
|
||||||
|
// risky unless you take great care to run this webhook on all hosts
|
||||||
|
// which run an apiserver which might need to make calls to this
|
||||||
|
// webhook. Such installs are likely to be non-portable, i.e., not easy
|
||||||
|
// to turn up in a new cluster.
|
||||||
|
//
|
||||||
|
// The scheme must be "https"; the URL must begin with "https://".
|
||||||
|
//
|
||||||
|
// A path is optional, and if present may be any string permissible in
|
||||||
|
// a URL. You may use the path to pass an arbitrary string to the
|
||||||
|
// webhook, for example, a cluster identifier.
|
||||||
|
//
|
||||||
|
// Attempting to use a user or basic auth e.g. "user:password@" is not
|
||||||
|
// allowed. Fragments ("#...") and query parameters ("?...") are not
|
||||||
|
// allowed, either.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
URL *string `json:"url,omitempty" protobuf:"bytes,1,opt,name=url"`
|
||||||
|
|
||||||
|
// `service` is a reference to the service for this webhook. Either
|
||||||
|
// `service` or `url` must be specified.
|
||||||
|
//
|
||||||
|
// If the webhook is running within the cluster, then you should use `service`.
|
||||||
|
//
|
||||||
|
// Port 443 will be used if it is open, otherwise it is an error.
|
||||||
|
//
|
||||||
|
// +optional
|
||||||
|
Service *ServiceReference `json:"service,omitempty" protobuf:"bytes,2,opt,name=service"`
|
||||||
|
|
||||||
|
// `caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate.
|
||||||
|
// If unspecified, system trust roots on the apiserver are used.
|
||||||
|
// +optional
|
||||||
|
CABundle []byte `json:"caBundle,omitempty" protobuf:"bytes,3,opt,name=caBundle"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ServiceReference holds a reference to Service.legacy.k8s.io
|
||||||
|
type ServiceReference struct {
|
||||||
|
// `namespace` is the namespace of the service.
|
||||||
|
// Required
|
||||||
|
Namespace string `json:"namespace" protobuf:"bytes,1,opt,name=namespace"`
|
||||||
|
|
||||||
|
// `name` is the name of the service.
|
||||||
|
// Required
|
||||||
|
Name string `json:"name" protobuf:"bytes,2,opt,name=name"`
|
||||||
|
|
||||||
|
// `path` is an optional URL path which will be sent in any request to
|
||||||
|
// this service.
|
||||||
|
// +optional
|
||||||
|
Path *string `json:"path,omitempty" protobuf:"bytes,3,opt,name=path"`
|
||||||
|
}
|
110
vendor/k8s.io/api/auditregistration/v1alpha1/types_swagger_doc_generated.go
generated
vendored
Normal file
110
vendor/k8s.io/api/auditregistration/v1alpha1/types_swagger_doc_generated.go
generated
vendored
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
/*
|
||||||
|
Copyright The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
// This file contains a collection of methods that can be used from go-restful to
|
||||||
|
// generate Swagger API documentation for its models. Please read this PR for more
|
||||||
|
// information on the implementation: https://github.com/emicklei/go-restful/pull/215
|
||||||
|
//
|
||||||
|
// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
|
||||||
|
// they are on one line! For multiple line or blocks that you want to ignore use ---.
|
||||||
|
// Any context after a --- is ignored.
|
||||||
|
//
|
||||||
|
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
|
||||||
|
|
||||||
|
// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
|
||||||
|
var map_AuditSink = map[string]string{
|
||||||
|
"": "AuditSink represents a cluster level audit sink",
|
||||||
|
"spec": "Spec defines the audit configuration spec",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (AuditSink) SwaggerDoc() map[string]string {
|
||||||
|
return map_AuditSink
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_AuditSinkList = map[string]string{
|
||||||
|
"": "AuditSinkList is a list of AuditSink items.",
|
||||||
|
"items": "List of audit configurations.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (AuditSinkList) SwaggerDoc() map[string]string {
|
||||||
|
return map_AuditSinkList
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_AuditSinkSpec = map[string]string{
|
||||||
|
"": "AuditSinkSpec holds the spec for the audit sink",
|
||||||
|
"policy": "Policy defines the policy for selecting which events should be sent to the webhook required",
|
||||||
|
"webhook": "Webhook to send events required",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (AuditSinkSpec) SwaggerDoc() map[string]string {
|
||||||
|
return map_AuditSinkSpec
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_Policy = map[string]string{
|
||||||
|
"": "Policy defines the configuration of how audit events are logged",
|
||||||
|
"level": "The Level that all requests are recorded at. available options: None, Metadata, Request, RequestResponse required",
|
||||||
|
"stages": "Stages is a list of stages for which events are created.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Policy) SwaggerDoc() map[string]string {
|
||||||
|
return map_Policy
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ServiceReference = map[string]string{
|
||||||
|
"": "ServiceReference holds a reference to Service.legacy.k8s.io",
|
||||||
|
"namespace": "`namespace` is the namespace of the service. Required",
|
||||||
|
"name": "`name` is the name of the service. Required",
|
||||||
|
"path": "`path` is an optional URL path which will be sent in any request to this service.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ServiceReference) SwaggerDoc() map[string]string {
|
||||||
|
return map_ServiceReference
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_Webhook = map[string]string{
|
||||||
|
"": "Webhook holds the configuration of the webhook",
|
||||||
|
"throttle": "Throttle holds the options for throttling the webhook",
|
||||||
|
"clientConfig": "ClientConfig holds the connection parameters for the webhook required",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (Webhook) SwaggerDoc() map[string]string {
|
||||||
|
return map_Webhook
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_WebhookClientConfig = map[string]string{
|
||||||
|
"": "WebhookClientConfig contains the information to make a connection with the webhook",
|
||||||
|
"url": "`url` gives the location of the webhook, in standard URL form (`scheme://host:port/path`). Exactly one of `url` or `service` must be specified.\n\nThe `host` should not refer to a service running in the cluster; use the `service` field instead. The host might be resolved via external DNS in some apiservers (e.g., `kube-apiserver` cannot resolve in-cluster DNS as that would be a layering violation). `host` may also be an IP address.\n\nPlease note that using `localhost` or `127.0.0.1` as a `host` is risky unless you take great care to run this webhook on all hosts which run an apiserver which might need to make calls to this webhook. Such installs are likely to be non-portable, i.e., not easy to turn up in a new cluster.\n\nThe scheme must be \"https\"; the URL must begin with \"https://\".\n\nA path is optional, and if present may be any string permissible in a URL. You may use the path to pass an arbitrary string to the webhook, for example, a cluster identifier.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not allowed. Fragments (\"#...\") and query parameters (\"?...\") are not allowed, either.",
|
||||||
|
"service": "`service` is a reference to the service for this webhook. Either `service` or `url` must be specified.\n\nIf the webhook is running within the cluster, then you should use `service`.\n\nPort 443 will be used if it is open, otherwise it is an error.",
|
||||||
|
"caBundle": "`caBundle` is a PEM encoded CA bundle which will be used to validate the webhook's server certificate. If unspecified, system trust roots on the apiserver are used.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (WebhookClientConfig) SwaggerDoc() map[string]string {
|
||||||
|
return map_WebhookClientConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_WebhookThrottleConfig = map[string]string{
|
||||||
|
"": "WebhookThrottleConfig holds the configuration for throttling events",
|
||||||
|
"qps": "ThrottleQPS maximum number of batches per second default 10 QPS",
|
||||||
|
"burst": "ThrottleBurst is the maximum number of events sent at the same moment default 15 QPS",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (WebhookThrottleConfig) SwaggerDoc() map[string]string {
|
||||||
|
return map_WebhookThrottleConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
// AUTO-GENERATED FUNCTIONS END HERE
|
224
vendor/k8s.io/api/auditregistration/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
224
vendor/k8s.io/api/auditregistration/v1alpha1/zz_generated.deepcopy.go
generated
vendored
Normal file
|
@ -0,0 +1,224 @@
|
||||||
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Code generated by deepcopy-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v1alpha1
|
||||||
|
|
||||||
|
import (
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *AuditSink) DeepCopyInto(out *AuditSink) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditSink.
|
||||||
|
func (in *AuditSink) DeepCopy() *AuditSink {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(AuditSink)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *AuditSink) 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 *AuditSinkList) DeepCopyInto(out *AuditSinkList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
out.ListMeta = in.ListMeta
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]AuditSink, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditSinkList.
|
||||||
|
func (in *AuditSinkList) DeepCopy() *AuditSinkList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(AuditSinkList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *AuditSinkList) 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 *AuditSinkSpec) DeepCopyInto(out *AuditSinkSpec) {
|
||||||
|
*out = *in
|
||||||
|
in.Policy.DeepCopyInto(&out.Policy)
|
||||||
|
in.Webhook.DeepCopyInto(&out.Webhook)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AuditSinkSpec.
|
||||||
|
func (in *AuditSinkSpec) DeepCopy() *AuditSinkSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(AuditSinkSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Policy) DeepCopyInto(out *Policy) {
|
||||||
|
*out = *in
|
||||||
|
if in.Stages != nil {
|
||||||
|
in, out := &in.Stages, &out.Stages
|
||||||
|
*out = make([]Stage, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Policy.
|
||||||
|
func (in *Policy) DeepCopy() *Policy {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Policy)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ServiceReference) DeepCopyInto(out *ServiceReference) {
|
||||||
|
*out = *in
|
||||||
|
if in.Path != nil {
|
||||||
|
in, out := &in.Path, &out.Path
|
||||||
|
*out = new(string)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceReference.
|
||||||
|
func (in *ServiceReference) DeepCopy() *ServiceReference {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ServiceReference)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *Webhook) DeepCopyInto(out *Webhook) {
|
||||||
|
*out = *in
|
||||||
|
if in.Throttle != nil {
|
||||||
|
in, out := &in.Throttle, &out.Throttle
|
||||||
|
*out = new(WebhookThrottleConfig)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
in.ClientConfig.DeepCopyInto(&out.ClientConfig)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Webhook.
|
||||||
|
func (in *Webhook) DeepCopy() *Webhook {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(Webhook)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *WebhookClientConfig) DeepCopyInto(out *WebhookClientConfig) {
|
||||||
|
*out = *in
|
||||||
|
if in.URL != nil {
|
||||||
|
in, out := &in.URL, &out.URL
|
||||||
|
*out = new(string)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.Service != nil {
|
||||||
|
in, out := &in.Service, &out.Service
|
||||||
|
*out = new(ServiceReference)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.CABundle != nil {
|
||||||
|
in, out := &in.CABundle, &out.CABundle
|
||||||
|
*out = make([]byte, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookClientConfig.
|
||||||
|
func (in *WebhookClientConfig) DeepCopy() *WebhookClientConfig {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(WebhookClientConfig)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *WebhookThrottleConfig) DeepCopyInto(out *WebhookThrottleConfig) {
|
||||||
|
*out = *in
|
||||||
|
if in.QPS != nil {
|
||||||
|
in, out := &in.QPS, &out.QPS
|
||||||
|
*out = new(int64)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.Burst != nil {
|
||||||
|
in, out := &in.Burst, &out.Burst
|
||||||
|
*out = new(int64)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WebhookThrottleConfig.
|
||||||
|
func (in *WebhookThrottleConfig) DeepCopy() *WebhookThrottleConfig {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(WebhookThrottleConfig)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
|
@ -15,6 +15,8 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +groupName=authentication.k8s.io
|
// +groupName=authentication.k8s.io
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1 // import "k8s.io/api/authentication/v1"
|
package v1 // import "k8s.io/api/authentication/v1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1 is a generated protocol buffer package.
|
Package v1 is a generated protocol buffer package.
|
||||||
|
@ -356,6 +355,21 @@ func (m *TokenReviewSpec) MarshalTo(dAtA []byte) (int, error) {
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Token)))
|
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Token)))
|
||||||
i += copy(dAtA[i:], m.Token)
|
i += copy(dAtA[i:], m.Token)
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
dAtA[i] = 0x12
|
||||||
|
i++
|
||||||
|
l = len(s)
|
||||||
|
for l >= 1<<7 {
|
||||||
|
dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
|
||||||
|
l >>= 7
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
dAtA[i] = uint8(l)
|
||||||
|
i++
|
||||||
|
i += copy(dAtA[i:], s)
|
||||||
|
}
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -394,6 +408,21 @@ func (m *TokenReviewStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error)))
|
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error)))
|
||||||
i += copy(dAtA[i:], m.Error)
|
i += copy(dAtA[i:], m.Error)
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
l = len(s)
|
||||||
|
for l >= 1<<7 {
|
||||||
|
dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
|
||||||
|
l >>= 7
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
dAtA[i] = uint8(l)
|
||||||
|
i++
|
||||||
|
i += copy(dAtA[i:], s)
|
||||||
|
}
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -469,24 +498,6 @@ func (m *UserInfo) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -580,6 +591,12 @@ func (m *TokenReviewSpec) Size() (n int) {
|
||||||
_ = l
|
_ = l
|
||||||
l = len(m.Token)
|
l = len(m.Token)
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
l = len(s)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -591,6 +608,12 @@ func (m *TokenReviewStatus) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = len(m.Error)
|
l = len(m.Error)
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
l = len(s)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -698,6 +721,7 @@ func (this *TokenReviewSpec) String() string {
|
||||||
}
|
}
|
||||||
s := strings.Join([]string{`&TokenReviewSpec{`,
|
s := strings.Join([]string{`&TokenReviewSpec{`,
|
||||||
`Token:` + fmt.Sprintf("%v", this.Token) + `,`,
|
`Token:` + fmt.Sprintf("%v", this.Token) + `,`,
|
||||||
|
`Audiences:` + fmt.Sprintf("%v", this.Audiences) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -710,6 +734,7 @@ func (this *TokenReviewStatus) String() string {
|
||||||
`Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`,
|
`Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`,
|
||||||
`User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`,
|
`User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`,
|
||||||
`Error:` + fmt.Sprintf("%v", this.Error) + `,`,
|
`Error:` + fmt.Sprintf("%v", this.Error) + `,`,
|
||||||
|
`Audiences:` + fmt.Sprintf("%v", this.Audiences) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1569,6 +1594,35 @@ func (m *TokenReviewSpec) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
m.Token = string(dAtA[iNdEx:postIndex])
|
m.Token = string(dAtA[iNdEx:postIndex])
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 2:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Audiences", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Audiences = append(m.Audiences, string(dAtA[iNdEx:postIndex]))
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -1698,6 +1752,35 @@ func (m *TokenReviewStatus) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
m.Error = string(dAtA[iNdEx:postIndex])
|
m.Error = string(dAtA[iNdEx:postIndex])
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Audiences", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Audiences = append(m.Audiences, string(dAtA[iNdEx:postIndex]))
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -1861,51 +1944,14 @@ func (m *UserInfo) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.Extra == nil {
|
if m.Extra == nil {
|
||||||
m.Extra = make(map[string]ExtraValue)
|
m.Extra = make(map[string]ExtraValue)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
mapvalue := &ExtraValue{}
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -1915,46 +1961,85 @@ func (m *UserInfo) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var mapmsglen int
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
mapmsglen |= (int(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var mapmsglen int
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
mapmsglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postmsgIndex := iNdEx + mapmsglen
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if postmsgIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = &ExtraValue{}
|
||||||
|
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postmsgIndex
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postmsgIndex := iNdEx + mapmsglen
|
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
if postmsgIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := &ExtraValue{}
|
|
||||||
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
iNdEx = postmsgIndex
|
|
||||||
m.Extra[mapkey] = *mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue ExtraValue
|
|
||||||
m.Extra[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.Extra[mapkey] = *mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
|
@ -2087,62 +2172,62 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 905 bytes of a gzipped FileDescriptorProto
|
// 900 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x6f, 0x1b, 0x45,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcf, 0x6f, 0xe3, 0x44,
|
||||||
0x14, 0xf6, 0xfa, 0x47, 0x64, 0x8f, 0x9b, 0x90, 0x4c, 0xa9, 0x64, 0x05, 0xb0, 0x8d, 0x91, 0x90,
|
0x14, 0x8e, 0xf3, 0xa3, 0x4a, 0x26, 0xdb, 0xd2, 0xce, 0xb2, 0x52, 0x54, 0xc0, 0x2e, 0x41, 0x42,
|
||||||
0x05, 0x74, 0xb7, 0x36, 0xa8, 0x54, 0x45, 0x42, 0xca, 0x12, 0x0b, 0x2c, 0x04, 0xad, 0xa6, 0x4d,
|
0x15, 0xb0, 0xf6, 0x26, 0x42, 0xb0, 0x5a, 0x24, 0xa4, 0x9a, 0x46, 0x10, 0x21, 0xd8, 0xd5, 0xec,
|
||||||
0x40, 0x9c, 0x18, 0xdb, 0x2f, 0xce, 0xe0, 0xee, 0xec, 0x32, 0x3b, 0x6b, 0xea, 0x5b, 0xff, 0x04,
|
0xb6, 0x20, 0x4e, 0x4c, 0xec, 0xd7, 0xc4, 0x04, 0x8f, 0x8d, 0x3d, 0x0e, 0x9b, 0xdb, 0xfe, 0x09,
|
||||||
0x8e, 0x20, 0x71, 0xe0, 0x8f, 0x40, 0xe2, 0xc8, 0x35, 0xc7, 0x8a, 0x53, 0x0f, 0xc8, 0x22, 0xcb,
|
0x1c, 0x41, 0xe2, 0xc0, 0x1f, 0x81, 0xc4, 0xbf, 0xd0, 0xe3, 0x8a, 0xd3, 0x1e, 0x50, 0x44, 0xcd,
|
||||||
0xbf, 0xc0, 0x89, 0x13, 0x9a, 0xd9, 0x89, 0xd7, 0x3f, 0x12, 0xc7, 0xa7, 0xde, 0x3c, 0xef, 0x7d,
|
0x95, 0x23, 0x27, 0x4e, 0x68, 0xc6, 0xd3, 0x38, 0x4e, 0xda, 0x34, 0x27, 0x6e, 0x9e, 0xf7, 0xbe,
|
||||||
0xef, 0x9b, 0xf7, 0xbe, 0xf9, 0xfc, 0x16, 0x75, 0x46, 0xf7, 0x42, 0x9b, 0xf9, 0xce, 0x28, 0xea,
|
0xf7, 0xbd, 0x37, 0xdf, 0x7c, 0x9e, 0x41, 0xbd, 0xf1, 0xfd, 0xd8, 0xf4, 0x02, 0x6b, 0x9c, 0x0c,
|
||||||
0x81, 0xe0, 0x20, 0x21, 0x74, 0xc6, 0xc0, 0x07, 0xbe, 0x70, 0x4c, 0x82, 0x06, 0xcc, 0xa1, 0x91,
|
0x20, 0x62, 0xc0, 0x21, 0xb6, 0x26, 0xc0, 0xdc, 0x20, 0xb2, 0x54, 0x82, 0x86, 0x9e, 0x45, 0x13,
|
||||||
0x3c, 0x05, 0x2e, 0x59, 0x9f, 0x4a, 0xe6, 0x73, 0x67, 0xdc, 0x72, 0x86, 0xc0, 0x41, 0x50, 0x09,
|
0x3e, 0x02, 0xc6, 0x3d, 0x87, 0x72, 0x2f, 0x60, 0xd6, 0xa4, 0x63, 0x0d, 0x81, 0x41, 0x44, 0x39,
|
||||||
0x03, 0x3b, 0x10, 0xbe, 0xf4, 0xf1, 0xeb, 0x09, 0xda, 0xa6, 0x01, 0xb3, 0x17, 0xd1, 0xf6, 0xb8,
|
0xb8, 0x66, 0x18, 0x05, 0x3c, 0xc0, 0xaf, 0x66, 0x68, 0x93, 0x86, 0x9e, 0x59, 0x44, 0x9b, 0x93,
|
||||||
0xb5, 0x7f, 0x7b, 0xc8, 0xe4, 0x69, 0xd4, 0xb3, 0xfb, 0xbe, 0xe7, 0x0c, 0xfd, 0xa1, 0xef, 0xe8,
|
0xce, 0xfe, 0xdd, 0xa1, 0xc7, 0x47, 0xc9, 0xc0, 0x74, 0x02, 0xdf, 0x1a, 0x06, 0xc3, 0xc0, 0x92,
|
||||||
0xa2, 0x5e, 0x74, 0xa2, 0x4f, 0xfa, 0xa0, 0x7f, 0x25, 0x64, 0xfb, 0x1f, 0xa4, 0x57, 0x7b, 0xb4,
|
0x45, 0x83, 0xe4, 0x4c, 0xae, 0xe4, 0x42, 0x7e, 0x65, 0x64, 0xfb, 0xef, 0xe6, 0xad, 0x7d, 0xea,
|
||||||
0x7f, 0xca, 0x38, 0x88, 0x89, 0x13, 0x8c, 0x86, 0x2a, 0x10, 0x3a, 0x1e, 0x48, 0x7a, 0x49, 0x0b,
|
0x8c, 0x3c, 0x06, 0xd1, 0xd4, 0x0a, 0xc7, 0x43, 0x11, 0x88, 0x2d, 0x1f, 0x38, 0xbd, 0x62, 0x84,
|
||||||
0xfb, 0xce, 0x55, 0x55, 0x22, 0xe2, 0x92, 0x79, 0xb0, 0x52, 0x70, 0xf7, 0xba, 0x82, 0xb0, 0x7f,
|
0x7d, 0xeb, 0xba, 0xaa, 0x28, 0x61, 0xdc, 0xf3, 0x61, 0xa5, 0xe0, 0xbd, 0x9b, 0x0a, 0x62, 0x67,
|
||||||
0x0a, 0x1e, 0x5d, 0xa9, 0x7b, 0xff, 0xaa, 0xba, 0x48, 0xb2, 0x27, 0x0e, 0xe3, 0x32, 0x94, 0x62,
|
0x04, 0x3e, 0x5d, 0xae, 0x6b, 0xff, 0xae, 0xa1, 0x97, 0xed, 0x20, 0x61, 0xee, 0xc3, 0xc1, 0x37,
|
||||||
0xb9, 0xa8, 0xf1, 0xa7, 0x85, 0x5e, 0x75, 0xfd, 0x88, 0x0f, 0x1e, 0xf4, 0xbe, 0x83, 0xbe, 0x24,
|
0xe0, 0x70, 0x02, 0x67, 0x10, 0x01, 0x73, 0x00, 0x1f, 0xa0, 0xea, 0xd8, 0x63, 0x6e, 0x4b, 0x3b,
|
||||||
0x70, 0x02, 0x02, 0x78, 0x1f, 0x70, 0x1d, 0xe5, 0x47, 0x8c, 0x0f, 0x2a, 0x56, 0xdd, 0x6a, 0x96,
|
0xd0, 0x0e, 0x1b, 0xf6, 0xad, 0xf3, 0x99, 0x51, 0x4a, 0x67, 0x46, 0xf5, 0x53, 0x8f, 0xb9, 0x44,
|
||||||
0xdc, 0x1b, 0x67, 0xd3, 0x5a, 0x26, 0x9e, 0xd6, 0xf2, 0x9f, 0x33, 0x3e, 0x20, 0x3a, 0x83, 0xdb,
|
0x66, 0x70, 0x17, 0x21, 0xfa, 0xa8, 0x7f, 0x0a, 0x51, 0xec, 0x05, 0xac, 0x55, 0x96, 0x38, 0xac,
|
||||||
0x08, 0xd1, 0x87, 0xdd, 0x63, 0x10, 0x21, 0xf3, 0x79, 0x25, 0xab, 0x71, 0xd8, 0xe0, 0xd0, 0xc1,
|
0x70, 0xe8, 0x68, 0x9e, 0x21, 0x0b, 0x28, 0xc1, 0xca, 0xa8, 0x0f, 0xad, 0x4a, 0x91, 0xf5, 0x73,
|
||||||
0x2c, 0x43, 0xe6, 0x50, 0x8a, 0x95, 0x53, 0x0f, 0x2a, 0xb9, 0x45, 0xd6, 0x2f, 0xa9, 0x07, 0x44,
|
0xea, 0x03, 0x91, 0x19, 0x6c, 0xa3, 0x4a, 0xd2, 0x3f, 0x6e, 0x55, 0x25, 0xe0, 0x9e, 0x02, 0x54,
|
||||||
0x67, 0xb0, 0x8b, 0x72, 0x51, 0xf7, 0xb0, 0x92, 0xd7, 0x80, 0x3b, 0x06, 0x90, 0x3b, 0xea, 0x1e,
|
0x4e, 0xfa, 0xc7, 0xff, 0xce, 0x8c, 0xd7, 0xaf, 0xdb, 0x24, 0x9f, 0x86, 0x10, 0x9b, 0x27, 0xfd,
|
||||||
0xfe, 0x37, 0xad, 0xbd, 0x79, 0xd5, 0x84, 0x72, 0x12, 0x40, 0x68, 0x1f, 0x75, 0x0f, 0x89, 0x2a,
|
0x63, 0x22, 0x8a, 0xdb, 0xef, 0x23, 0xd4, 0x7b, 0xca, 0x23, 0x7a, 0x4a, 0xbf, 0x4d, 0x00, 0x1b,
|
||||||
0x6e, 0x7c, 0x88, 0x50, 0xe7, 0xa9, 0x14, 0xf4, 0x98, 0x3e, 0x89, 0x00, 0xd7, 0x50, 0x81, 0x49,
|
0xa8, 0xe6, 0x71, 0xf0, 0xe3, 0x96, 0x76, 0x50, 0x39, 0x6c, 0xd8, 0x8d, 0x74, 0x66, 0xd4, 0xfa,
|
||||||
0xf0, 0xc2, 0x8a, 0x55, 0xcf, 0x35, 0x4b, 0x6e, 0x29, 0x9e, 0xd6, 0x0a, 0x5d, 0x15, 0x20, 0x49,
|
0x22, 0x40, 0xb2, 0xf8, 0x83, 0xfa, 0x8f, 0xbf, 0x18, 0xa5, 0x67, 0x7f, 0x1c, 0x94, 0xda, 0x3f,
|
||||||
0xfc, 0x7e, 0xf1, 0xa7, 0x5f, 0x6b, 0x99, 0x67, 0x7f, 0xd5, 0x33, 0x8d, 0x5f, 0xb2, 0xe8, 0xc6,
|
0x97, 0xd1, 0xad, 0x27, 0xc1, 0x18, 0x18, 0x81, 0xef, 0x12, 0x88, 0x39, 0xfe, 0x1a, 0xd5, 0xc5,
|
||||||
0x63, 0x7f, 0x04, 0x9c, 0xc0, 0xf7, 0x11, 0x84, 0x12, 0x7f, 0x8b, 0x8a, 0xea, 0x5d, 0x07, 0x54,
|
0x11, 0xb9, 0x94, 0x53, 0xa9, 0x44, 0xb3, 0x7b, 0xcf, 0xcc, 0xdd, 0x31, 0x1f, 0xc2, 0x0c, 0xc7,
|
||||||
0x52, 0xad, 0x44, 0xb9, 0x7d, 0xc7, 0x4e, 0x2d, 0x35, 0x6b, 0xc2, 0x0e, 0x46, 0x43, 0x15, 0x08,
|
0x43, 0x11, 0x88, 0x4d, 0x81, 0x36, 0x27, 0x1d, 0x33, 0x93, 0xf3, 0x33, 0xe0, 0x34, 0xd7, 0x24,
|
||||||
0x6d, 0x85, 0xb6, 0xc7, 0x2d, 0x3b, 0x91, 0xf3, 0x0b, 0x90, 0x34, 0xd5, 0x24, 0x8d, 0x91, 0x19,
|
0x8f, 0x91, 0x39, 0x2b, 0x7e, 0x84, 0xaa, 0x71, 0x08, 0x8e, 0xd4, 0xaf, 0xd9, 0x35, 0xcd, 0x75,
|
||||||
0x2b, 0x7e, 0x88, 0xf2, 0x61, 0x00, 0x7d, 0xad, 0x5f, 0xb9, 0x6d, 0xdb, 0xeb, 0x0c, 0x6b, 0xcf,
|
0xde, 0x33, 0x17, 0x67, 0x7b, 0x1c, 0x82, 0x93, 0x2b, 0x28, 0x56, 0x44, 0x32, 0xe1, 0x2f, 0xd1,
|
||||||
0xf7, 0xf6, 0x28, 0x80, 0x7e, 0xaa, 0xa0, 0x3a, 0x11, 0xcd, 0x84, 0xbf, 0x46, 0x5b, 0xa1, 0xa4,
|
0x56, 0xcc, 0x29, 0x4f, 0x62, 0xa9, 0x72, 0x71, 0xe2, 0x9b, 0x38, 0x65, 0x9d, 0xbd, 0xa3, 0x58,
|
||||||
0x32, 0x0a, 0xb5, 0xca, 0x8b, 0x1d, 0x5f, 0xc7, 0xa9, 0xeb, 0xdc, 0x1d, 0xc3, 0xba, 0x95, 0x9c,
|
0xb7, 0xb2, 0x35, 0x51, 0x7c, 0xed, 0x7f, 0x34, 0xb4, 0xbb, 0x3c, 0x02, 0x7e, 0x1b, 0x35, 0x68,
|
||||||
0x89, 0xe1, 0x6b, 0xfc, 0x6b, 0xa1, 0xdd, 0xe5, 0x16, 0xf0, 0xbb, 0xa8, 0x44, 0xa3, 0x01, 0x53,
|
0xe2, 0x7a, 0xc2, 0x34, 0x97, 0x12, 0x6f, 0xa7, 0x33, 0xa3, 0x71, 0x74, 0x19, 0x24, 0x79, 0x1e,
|
||||||
0xa6, 0xb9, 0x90, 0x78, 0x3b, 0x9e, 0xd6, 0x4a, 0x07, 0x17, 0x41, 0x92, 0xe6, 0x31, 0x47, 0x3b,
|
0x33, 0xb4, 0x33, 0x28, 0xb8, 0x4d, 0xcd, 0xd8, 0x5d, 0x3f, 0xe3, 0x55, 0x0e, 0xb5, 0x71, 0x3a,
|
||||||
0xbd, 0x05, 0xb7, 0x99, 0x1e, 0xdb, 0xeb, 0x7b, 0xbc, 0xcc, 0xa1, 0x2e, 0x8e, 0xa7, 0xb5, 0x9d,
|
0x33, 0x76, 0x8a, 0x19, 0xb2, 0xc4, 0x8e, 0x3f, 0x42, 0x7b, 0xf0, 0x34, 0xf4, 0x22, 0xc9, 0xf4,
|
||||||
0xc5, 0x0c, 0x59, 0x62, 0xc7, 0x9f, 0xa0, 0x3d, 0x78, 0x1a, 0x30, 0xa1, 0x99, 0x1e, 0x41, 0xdf,
|
0x18, 0x9c, 0x80, 0xb9, 0xb1, 0xf4, 0x56, 0xc5, 0xbe, 0x93, 0xce, 0x8c, 0xbd, 0xde, 0x72, 0x92,
|
||||||
0xe7, 0x83, 0x50, 0x7b, 0x2b, 0xe7, 0xde, 0x8a, 0xa7, 0xb5, 0xbd, 0xce, 0x72, 0x92, 0xac, 0xe2,
|
0xac, 0xe2, 0xdb, 0xbf, 0x6a, 0x08, 0xaf, 0xaa, 0x84, 0xdf, 0x40, 0x35, 0x2e, 0xa2, 0xea, 0x17,
|
||||||
0x1b, 0xbf, 0x59, 0x08, 0xaf, 0xaa, 0x84, 0xdf, 0x42, 0x05, 0xa9, 0xa2, 0xe6, 0x2f, 0xb2, 0x6d,
|
0xd9, 0x56, 0xa2, 0xd5, 0x32, 0x68, 0x96, 0xc3, 0x53, 0x74, 0x3b, 0x27, 0x7c, 0xe2, 0xf9, 0x10,
|
||||||
0x44, 0x2b, 0x24, 0xd0, 0x24, 0x87, 0x27, 0xe8, 0x66, 0x4a, 0xf8, 0x98, 0x79, 0x10, 0x4a, 0xea,
|
0x73, 0xea, 0x87, 0xea, 0xb4, 0xdf, 0xda, 0xcc, 0x4b, 0xa2, 0xcc, 0x7e, 0x45, 0xd1, 0xdf, 0xee,
|
||||||
0x05, 0xe6, 0xb5, 0xdf, 0xd9, 0xcc, 0x4b, 0xaa, 0xcc, 0x7d, 0xcd, 0xd0, 0xdf, 0xec, 0xac, 0xd2,
|
0xad, 0xd2, 0x91, 0xab, 0x7a, 0xb4, 0x7f, 0x2a, 0xa3, 0xa6, 0x1a, 0x7b, 0xe2, 0xc1, 0xf7, 0xff,
|
||||||
0x91, 0xcb, 0xee, 0x68, 0xfc, 0x9c, 0x45, 0x65, 0xd3, 0xf6, 0x98, 0xc1, 0x0f, 0x2f, 0xc1, 0xcb,
|
0x83, 0x97, 0x1f, 0x16, 0xbc, 0x7c, 0x77, 0x23, 0xdf, 0x89, 0xd1, 0xae, 0xb5, 0xf2, 0x17, 0x4b,
|
||||||
0x0f, 0x16, 0xbc, 0x7c, 0x7b, 0x23, 0xdf, 0xa9, 0xd6, 0xae, 0xb4, 0xf2, 0x57, 0x4b, 0x56, 0x76,
|
0x56, 0xb6, 0x36, 0xa7, 0x5c, 0xef, 0x64, 0x07, 0xbd, 0xb4, 0xd4, 0x7f, 0xb3, 0xe3, 0x2c, 0x98,
|
||||||
0x36, 0xa7, 0x5c, 0xef, 0xe4, 0xbb, 0xe8, 0x95, 0xa5, 0xfb, 0x37, 0x7a, 0xce, 0xc6, 0x1f, 0x16,
|
0xbd, 0xbc, 0xde, 0xec, 0xed, 0xbf, 0x35, 0xb4, 0xb7, 0x32, 0x12, 0xfe, 0x00, 0x6d, 0x2f, 0x4c,
|
||||||
0xda, 0x5b, 0xb9, 0x05, 0x7f, 0x84, 0xb6, 0xe7, 0x9a, 0x81, 0x64, 0x69, 0x16, 0xdd, 0x5b, 0x86,
|
0x0e, 0xd9, 0x0d, 0x5b, 0xb7, 0xef, 0xa8, 0x7e, 0xdb, 0x47, 0x8b, 0x49, 0x52, 0xc4, 0xe2, 0x4f,
|
||||||
0x62, 0xfb, 0x60, 0x3e, 0x49, 0x16, 0xb1, 0xf8, 0x33, 0x94, 0x8f, 0x42, 0x10, 0x46, 0xb4, 0xb7,
|
0x50, 0x35, 0x89, 0x21, 0x52, 0x0a, 0xbf, 0xb9, 0x5e, 0x8e, 0x93, 0x18, 0xa2, 0x3e, 0x3b, 0x0b,
|
||||||
0xd7, 0x4f, 0x78, 0x14, 0x82, 0xe8, 0xf2, 0x13, 0x3f, 0x55, 0x4b, 0x45, 0x88, 0x66, 0x50, 0x13,
|
0x72, 0x69, 0x45, 0x84, 0x48, 0x06, 0xb1, 0x5d, 0x88, 0xa2, 0x20, 0x52, 0x57, 0xf1, 0x7c, 0xbb,
|
||||||
0x80, 0x10, 0xbe, 0x30, 0xdb, 0x75, 0x36, 0x41, 0x47, 0x05, 0x49, 0x92, 0x6b, 0xfc, 0x9e, 0x45,
|
0x3d, 0x11, 0x24, 0x59, 0xae, 0xb8, 0xdd, 0xea, 0x0d, 0xdb, 0xfd, 0xad, 0x8c, 0xea, 0x97, 0x2d,
|
||||||
0xc5, 0x0b, 0x16, 0xfc, 0x1e, 0x2a, 0xaa, 0x4a, 0xbd, 0x92, 0x93, 0xb1, 0x77, 0x4d, 0x91, 0xc6,
|
0xf1, 0x3b, 0xa8, 0x2e, 0xda, 0xc8, 0xcb, 0x3e, 0x13, 0x74, 0x57, 0x75, 0x90, 0x18, 0x11, 0x27,
|
||||||
0xa8, 0x38, 0x99, 0x21, 0xf0, 0x1b, 0x28, 0x17, 0xb1, 0x81, 0xd9, 0xf4, 0xe5, 0xb9, 0xd5, 0x4c,
|
0x73, 0x04, 0x7e, 0x0d, 0x55, 0x12, 0xcf, 0x55, 0x6f, 0x48, 0x73, 0xe1, 0xd2, 0x27, 0x22, 0x8e,
|
||||||
0x54, 0x1c, 0x37, 0xd0, 0xd6, 0x50, 0xf8, 0x51, 0xa0, 0x1e, 0x4b, 0x6d, 0x01, 0xa4, 0x74, 0xff,
|
0xdb, 0x68, 0x6b, 0x18, 0x05, 0x49, 0x28, 0x6c, 0x20, 0x66, 0x40, 0xe2, 0x44, 0x3f, 0x96, 0x11,
|
||||||
0x54, 0x47, 0x88, 0xc9, 0xe0, 0x63, 0x54, 0x00, 0xb5, 0x99, 0x2b, 0xf9, 0x7a, 0xae, 0x59, 0x6e,
|
0xa2, 0x32, 0xf8, 0x14, 0xd5, 0x40, 0xdc, 0xf9, 0x72, 0xcc, 0x66, 0xb7, 0xb3, 0x99, 0x34, 0xa6,
|
||||||
0xb7, 0x36, 0x9b, 0xd6, 0xd6, 0xdb, 0xbc, 0xc3, 0xa5, 0x98, 0xcc, 0x4d, 0xa5, 0x62, 0x24, 0xa1,
|
0x7c, 0x27, 0x7a, 0x8c, 0x47, 0xd3, 0x05, 0x09, 0x44, 0x8c, 0x64, 0x74, 0xfb, 0x03, 0xf5, 0x96,
|
||||||
0xdb, 0xef, 0x99, 0x8d, 0xaf, 0x31, 0x78, 0x17, 0xe5, 0x46, 0x30, 0x49, 0x26, 0x22, 0xea, 0x27,
|
0x48, 0x0c, 0xde, 0x45, 0x95, 0x31, 0x4c, 0xb3, 0x1d, 0x11, 0xf1, 0x89, 0x3f, 0x44, 0xb5, 0x89,
|
||||||
0xfe, 0x18, 0x15, 0xc6, 0xea, 0x63, 0x60, 0x54, 0x6e, 0xae, 0xbf, 0x37, 0xfd, 0x78, 0x90, 0xa4,
|
0x78, 0x66, 0xd4, 0x91, 0x1c, 0xae, 0xef, 0x9b, 0x3f, 0x4b, 0x24, 0x2b, 0x7b, 0x50, 0xbe, 0xaf,
|
||||||
0xec, 0x7e, 0xf6, 0x9e, 0xe5, 0x36, 0xcf, 0xce, 0xab, 0x99, 0xe7, 0xe7, 0xd5, 0xcc, 0x8b, 0xf3,
|
0xd9, 0x87, 0xe7, 0x17, 0x7a, 0xe9, 0xf9, 0x85, 0x5e, 0x7a, 0x71, 0xa1, 0x97, 0x9e, 0xa5, 0xba,
|
||||||
0x6a, 0xe6, 0x59, 0x5c, 0xb5, 0xce, 0xe2, 0xaa, 0xf5, 0x3c, 0xae, 0x5a, 0x2f, 0xe2, 0xaa, 0xf5,
|
0x76, 0x9e, 0xea, 0xda, 0xf3, 0x54, 0xd7, 0x5e, 0xa4, 0xba, 0xf6, 0x67, 0xaa, 0x6b, 0x3f, 0xfc,
|
||||||
0x77, 0x5c, 0xb5, 0x7e, 0xfc, 0xa7, 0x9a, 0xf9, 0x26, 0x3b, 0x6e, 0xfd, 0x1f, 0x00, 0x00, 0xff,
|
0xa5, 0x97, 0xbe, 0x2a, 0x4f, 0x3a, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0x5f, 0x04, 0x81, 0x6f,
|
||||||
0xff, 0x5f, 0x39, 0x60, 0xb1, 0xbd, 0x08, 0x00, 0x00,
|
0xe2, 0x08, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ package k8s.io.api.authentication.v1;
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1";
|
option go_package = "v1";
|
||||||
|
@ -85,7 +84,10 @@ message TokenRequestSpec {
|
||||||
optional int64 expirationSeconds = 4;
|
optional int64 expirationSeconds = 4;
|
||||||
|
|
||||||
// BoundObjectRef is a reference to an object that the token will be bound to.
|
// BoundObjectRef is a reference to an object that the token will be bound to.
|
||||||
// The token will only be valid for as long as the bound objet exists.
|
// The token will only be valid for as long as the bound object exists.
|
||||||
|
// NOTE: The API server's TokenReview endpoint will validate the
|
||||||
|
// BoundObjectRef, but other audiences may not. Keep ExpirationSeconds
|
||||||
|
// small if you want prompt revocation.
|
||||||
// +optional
|
// +optional
|
||||||
optional BoundObjectReference boundObjectRef = 3;
|
optional BoundObjectReference boundObjectRef = 3;
|
||||||
}
|
}
|
||||||
|
@ -119,6 +121,14 @@ message TokenReviewSpec {
|
||||||
// Token is the opaque bearer token.
|
// Token is the opaque bearer token.
|
||||||
// +optional
|
// +optional
|
||||||
optional string token = 1;
|
optional string token = 1;
|
||||||
|
|
||||||
|
// Audiences is a list of the identifiers that the resource server presented
|
||||||
|
// with the token identifies as. Audience-aware token authenticators will
|
||||||
|
// verify that the token was intended for at least one of the audiences in
|
||||||
|
// this list. If no audiences are provided, the audience will default to the
|
||||||
|
// audience of the Kubernetes apiserver.
|
||||||
|
// +optional
|
||||||
|
repeated string audiences = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenReviewStatus is the result of the token authentication request.
|
// TokenReviewStatus is the result of the token authentication request.
|
||||||
|
@ -131,6 +141,18 @@ message TokenReviewStatus {
|
||||||
// +optional
|
// +optional
|
||||||
optional UserInfo user = 2;
|
optional UserInfo user = 2;
|
||||||
|
|
||||||
|
// Audiences are audience identifiers chosen by the authenticator that are
|
||||||
|
// compatible with both the TokenReview and token. An identifier is any
|
||||||
|
// identifier in the intersection of the TokenReviewSpec audiences and the
|
||||||
|
// token's audiences. A client of the TokenReview API that sets the
|
||||||
|
// spec.audiences field should validate that a compatible audience identifier
|
||||||
|
// is returned in the status.audiences field to ensure that the TokenReview
|
||||||
|
// server is audience aware. If a TokenReview returns an empty
|
||||||
|
// status.audience field where status.authenticated is "true", the token is
|
||||||
|
// valid against the audience of the Kubernetes API server.
|
||||||
|
// +optional
|
||||||
|
repeated string audiences = 4;
|
||||||
|
|
||||||
// Error indicates that the token couldn't be checked
|
// Error indicates that the token couldn't be checked
|
||||||
// +optional
|
// +optional
|
||||||
optional string error = 3;
|
optional string error = 3;
|
||||||
|
|
|
@ -64,6 +64,13 @@ type TokenReviewSpec struct {
|
||||||
// Token is the opaque bearer token.
|
// Token is the opaque bearer token.
|
||||||
// +optional
|
// +optional
|
||||||
Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"`
|
Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"`
|
||||||
|
// Audiences is a list of the identifiers that the resource server presented
|
||||||
|
// with the token identifies as. Audience-aware token authenticators will
|
||||||
|
// verify that the token was intended for at least one of the audiences in
|
||||||
|
// this list. If no audiences are provided, the audience will default to the
|
||||||
|
// audience of the Kubernetes apiserver.
|
||||||
|
// +optional
|
||||||
|
Audiences []string `json:"audiences,omitempty" protobuf:"bytes,2,rep,name=audiences"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenReviewStatus is the result of the token authentication request.
|
// TokenReviewStatus is the result of the token authentication request.
|
||||||
|
@ -74,6 +81,17 @@ type TokenReviewStatus struct {
|
||||||
// User is the UserInfo associated with the provided token.
|
// User is the UserInfo associated with the provided token.
|
||||||
// +optional
|
// +optional
|
||||||
User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"`
|
User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"`
|
||||||
|
// Audiences are audience identifiers chosen by the authenticator that are
|
||||||
|
// compatible with both the TokenReview and token. An identifier is any
|
||||||
|
// identifier in the intersection of the TokenReviewSpec audiences and the
|
||||||
|
// token's audiences. A client of the TokenReview API that sets the
|
||||||
|
// spec.audiences field should validate that a compatible audience identifier
|
||||||
|
// is returned in the status.audiences field to ensure that the TokenReview
|
||||||
|
// server is audience aware. If a TokenReview returns an empty
|
||||||
|
// status.audience field where status.authenticated is "true", the token is
|
||||||
|
// valid against the audience of the Kubernetes API server.
|
||||||
|
// +optional
|
||||||
|
Audiences []string `json:"audiences,omitempty" protobuf:"bytes,4,rep,name=audiences"`
|
||||||
// Error indicates that the token couldn't be checked
|
// Error indicates that the token couldn't be checked
|
||||||
// +optional
|
// +optional
|
||||||
Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"`
|
Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"`
|
||||||
|
@ -137,7 +155,10 @@ type TokenRequestSpec struct {
|
||||||
ExpirationSeconds *int64 `json:"expirationSeconds" protobuf:"varint,4,opt,name=expirationSeconds"`
|
ExpirationSeconds *int64 `json:"expirationSeconds" protobuf:"varint,4,opt,name=expirationSeconds"`
|
||||||
|
|
||||||
// BoundObjectRef is a reference to an object that the token will be bound to.
|
// BoundObjectRef is a reference to an object that the token will be bound to.
|
||||||
// The token will only be valid for as long as the bound objet exists.
|
// The token will only be valid for as long as the bound object exists.
|
||||||
|
// NOTE: The API server's TokenReview endpoint will validate the
|
||||||
|
// BoundObjectRef, but other audiences may not. Keep ExpirationSeconds
|
||||||
|
// small if you want prompt revocation.
|
||||||
// +optional
|
// +optional
|
||||||
BoundObjectRef *BoundObjectReference `json:"boundObjectRef" protobuf:"bytes,3,opt,name=boundObjectRef"`
|
BoundObjectRef *BoundObjectReference `json:"boundObjectRef" protobuf:"bytes,3,opt,name=boundObjectRef"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ var map_TokenRequestSpec = map[string]string{
|
||||||
"": "TokenRequestSpec contains client provided parameters of a token request.",
|
"": "TokenRequestSpec contains client provided parameters of a token request.",
|
||||||
"audiences": "Audiences are the intendend audiences of the token. A recipient of a token must identitfy themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.",
|
"audiences": "Audiences are the intendend audiences of the token. A recipient of a token must identitfy themself with an identifier in the list of audiences of the token, and otherwise should reject the token. A token issued for multiple audiences may be used to authenticate against any of the audiences listed but implies a high degree of trust between the target audiences.",
|
||||||
"expirationSeconds": "ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response.",
|
"expirationSeconds": "ExpirationSeconds is the requested duration of validity of the request. The token issuer may return a token with a different validity duration so a client needs to check the 'expiration' field in a response.",
|
||||||
"boundObjectRef": "BoundObjectRef is a reference to an object that the token will be bound to. The token will only be valid for as long as the bound objet exists.",
|
"boundObjectRef": "BoundObjectRef is a reference to an object that the token will be bound to. The token will only be valid for as long as the bound object exists. NOTE: The API server's TokenReview endpoint will validate the BoundObjectRef, but other audiences may not. Keep ExpirationSeconds small if you want prompt revocation.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (TokenRequestSpec) SwaggerDoc() map[string]string {
|
func (TokenRequestSpec) SwaggerDoc() map[string]string {
|
||||||
|
@ -79,8 +79,9 @@ func (TokenReview) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_TokenReviewSpec = map[string]string{
|
var map_TokenReviewSpec = map[string]string{
|
||||||
"": "TokenReviewSpec is a description of the token authentication request.",
|
"": "TokenReviewSpec is a description of the token authentication request.",
|
||||||
"token": "Token is the opaque bearer token.",
|
"token": "Token is the opaque bearer token.",
|
||||||
|
"audiences": "Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (TokenReviewSpec) SwaggerDoc() map[string]string {
|
func (TokenReviewSpec) SwaggerDoc() map[string]string {
|
||||||
|
@ -91,6 +92,7 @@ var map_TokenReviewStatus = map[string]string{
|
||||||
"": "TokenReviewStatus is the result of the token authentication request.",
|
"": "TokenReviewStatus is the result of the token authentication request.",
|
||||||
"authenticated": "Authenticated indicates that the token was associated with a known user.",
|
"authenticated": "Authenticated indicates that the token was associated with a known user.",
|
||||||
"user": "User is the UserInfo associated with the provided token.",
|
"user": "User is the UserInfo associated with the provided token.",
|
||||||
|
"audiences": "Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \"true\", the token is valid against the audience of the Kubernetes API server.",
|
||||||
"error": "Error indicates that the token couldn't be checked",
|
"error": "Error indicates that the token couldn't be checked",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,21 +98,13 @@ func (in *TokenRequestSpec) DeepCopyInto(out *TokenRequestSpec) {
|
||||||
}
|
}
|
||||||
if in.ExpirationSeconds != nil {
|
if in.ExpirationSeconds != nil {
|
||||||
in, out := &in.ExpirationSeconds, &out.ExpirationSeconds
|
in, out := &in.ExpirationSeconds, &out.ExpirationSeconds
|
||||||
if *in == nil {
|
*out = new(int64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.BoundObjectRef != nil {
|
if in.BoundObjectRef != nil {
|
||||||
in, out := &in.BoundObjectRef, &out.BoundObjectRef
|
in, out := &in.BoundObjectRef, &out.BoundObjectRef
|
||||||
if *in == nil {
|
*out = new(BoundObjectReference)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(BoundObjectReference)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -149,7 +141,7 @@ func (in *TokenReview) DeepCopyInto(out *TokenReview) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -175,6 +167,11 @@ func (in *TokenReview) DeepCopyObject() runtime.Object {
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *TokenReviewSpec) DeepCopyInto(out *TokenReviewSpec) {
|
func (in *TokenReviewSpec) DeepCopyInto(out *TokenReviewSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
if in.Audiences != nil {
|
||||||
|
in, out := &in.Audiences, &out.Audiences
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,6 +189,11 @@ func (in *TokenReviewSpec) DeepCopy() *TokenReviewSpec {
|
||||||
func (in *TokenReviewStatus) DeepCopyInto(out *TokenReviewStatus) {
|
func (in *TokenReviewStatus) DeepCopyInto(out *TokenReviewStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.User.DeepCopyInto(&out.User)
|
in.User.DeepCopyInto(&out.User)
|
||||||
|
if in.Audiences != nil {
|
||||||
|
in, out := &in.Audiences, &out.Audiences
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,12 +219,15 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) {
|
||||||
in, out := &in.Extra, &out.Extra
|
in, out := &in.Extra, &out.Extra
|
||||||
*out = make(map[string]ExtraValue, len(*in))
|
*out = make(map[string]ExtraValue, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
|
var outVal []string
|
||||||
if val == nil {
|
if val == nil {
|
||||||
(*out)[key] = nil
|
(*out)[key] = nil
|
||||||
} else {
|
} else {
|
||||||
(*out)[key] = make([]string, len(val))
|
in, out := &val, &outVal
|
||||||
copy((*out)[key], val)
|
*out = make(ExtraValue, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
(*out)[key] = outVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
@ -15,6 +15,8 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +groupName=authentication.k8s.io
|
// +groupName=authentication.k8s.io
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1beta1 // import "k8s.io/api/authentication/v1beta1"
|
package v1beta1 // import "k8s.io/api/authentication/v1beta1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/authentication/v1beta1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1beta1 is a generated protocol buffer package.
|
Package v1beta1 is a generated protocol buffer package.
|
||||||
|
@ -176,6 +175,21 @@ func (m *TokenReviewSpec) MarshalTo(dAtA []byte) (int, error) {
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Token)))
|
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Token)))
|
||||||
i += copy(dAtA[i:], m.Token)
|
i += copy(dAtA[i:], m.Token)
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
dAtA[i] = 0x12
|
||||||
|
i++
|
||||||
|
l = len(s)
|
||||||
|
for l >= 1<<7 {
|
||||||
|
dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
|
||||||
|
l >>= 7
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
dAtA[i] = uint8(l)
|
||||||
|
i++
|
||||||
|
i += copy(dAtA[i:], s)
|
||||||
|
}
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -214,6 +228,21 @@ func (m *TokenReviewStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error)))
|
i = encodeVarintGenerated(dAtA, i, uint64(len(m.Error)))
|
||||||
i += copy(dAtA[i:], m.Error)
|
i += copy(dAtA[i:], m.Error)
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
l = len(s)
|
||||||
|
for l >= 1<<7 {
|
||||||
|
dAtA[i] = uint8(uint64(l)&0x7f | 0x80)
|
||||||
|
l >>= 7
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
dAtA[i] = uint8(l)
|
||||||
|
i++
|
||||||
|
i += copy(dAtA[i:], s)
|
||||||
|
}
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,24 +318,6 @@ func (m *UserInfo) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -345,6 +356,12 @@ func (m *TokenReviewSpec) Size() (n int) {
|
||||||
_ = l
|
_ = l
|
||||||
l = len(m.Token)
|
l = len(m.Token)
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
l = len(s)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -356,6 +373,12 @@ func (m *TokenReviewStatus) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = len(m.Error)
|
l = len(m.Error)
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if len(m.Audiences) > 0 {
|
||||||
|
for _, s := range m.Audiences {
|
||||||
|
l = len(s)
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -415,6 +438,7 @@ func (this *TokenReviewSpec) String() string {
|
||||||
}
|
}
|
||||||
s := strings.Join([]string{`&TokenReviewSpec{`,
|
s := strings.Join([]string{`&TokenReviewSpec{`,
|
||||||
`Token:` + fmt.Sprintf("%v", this.Token) + `,`,
|
`Token:` + fmt.Sprintf("%v", this.Token) + `,`,
|
||||||
|
`Audiences:` + fmt.Sprintf("%v", this.Audiences) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -427,6 +451,7 @@ func (this *TokenReviewStatus) String() string {
|
||||||
`Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`,
|
`Authenticated:` + fmt.Sprintf("%v", this.Authenticated) + `,`,
|
||||||
`User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`,
|
`User:` + strings.Replace(strings.Replace(this.User.String(), "UserInfo", "UserInfo", 1), `&`, ``, 1) + `,`,
|
||||||
`Error:` + fmt.Sprintf("%v", this.Error) + `,`,
|
`Error:` + fmt.Sprintf("%v", this.Error) + `,`,
|
||||||
|
`Audiences:` + fmt.Sprintf("%v", this.Audiences) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -739,6 +764,35 @@ func (m *TokenReviewSpec) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
m.Token = string(dAtA[iNdEx:postIndex])
|
m.Token = string(dAtA[iNdEx:postIndex])
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 2:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Audiences", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Audiences = append(m.Audiences, string(dAtA[iNdEx:postIndex]))
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -868,6 +922,35 @@ func (m *TokenReviewStatus) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
m.Error = string(dAtA[iNdEx:postIndex])
|
m.Error = string(dAtA[iNdEx:postIndex])
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Audiences", wireType)
|
||||||
|
}
|
||||||
|
var stringLen uint64
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLen |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
intStringLen := int(stringLen)
|
||||||
|
if intStringLen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + intStringLen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
m.Audiences = append(m.Audiences, string(dAtA[iNdEx:postIndex]))
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -1031,51 +1114,14 @@ func (m *UserInfo) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.Extra == nil {
|
if m.Extra == nil {
|
||||||
m.Extra = make(map[string]ExtraValue)
|
m.Extra = make(map[string]ExtraValue)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
mapvalue := &ExtraValue{}
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -1085,46 +1131,85 @@ func (m *UserInfo) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var mapmsglen int
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
mapmsglen |= (int(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var mapmsglen int
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
mapmsglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postmsgIndex := iNdEx + mapmsglen
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if postmsgIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = &ExtraValue{}
|
||||||
|
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postmsgIndex
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postmsgIndex := iNdEx + mapmsglen
|
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
if postmsgIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := &ExtraValue{}
|
|
||||||
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
iNdEx = postmsgIndex
|
|
||||||
m.Extra[mapkey] = *mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue ExtraValue
|
|
||||||
m.Extra[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.Extra[mapkey] = *mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
|
@ -1257,46 +1342,47 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 650 bytes of a gzipped FileDescriptorProto
|
// 663 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x4d, 0x4f, 0x14, 0x4d,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xcd, 0x4e, 0x14, 0x4d,
|
||||||
0x10, 0xc7, 0x67, 0xf6, 0x85, 0x67, 0xb7, 0xf7, 0x41, 0xb1, 0x13, 0x93, 0xcd, 0x26, 0xce, 0xae,
|
0x14, 0xed, 0x9e, 0x1f, 0xbe, 0x99, 0x9a, 0x6f, 0x14, 0x2b, 0x31, 0x99, 0x4c, 0x62, 0x0f, 0x8e,
|
||||||
0xeb, 0x85, 0x44, 0xe9, 0x11, 0x24, 0x48, 0xf0, 0xe4, 0x28, 0x31, 0x98, 0x10, 0x93, 0x16, 0x3c,
|
0x1b, 0x12, 0xa4, 0x5a, 0x08, 0x41, 0x82, 0x2b, 0x5a, 0x89, 0xc1, 0x84, 0x98, 0x94, 0xe0, 0x42,
|
||||||
0xa8, 0x07, 0x7b, 0x67, 0x8b, 0xd9, 0x76, 0x99, 0x97, 0xf4, 0xf4, 0xac, 0x72, 0xe3, 0x23, 0x78,
|
0x5d, 0x58, 0xd3, 0x73, 0xe9, 0x69, 0xc7, 0xfe, 0x49, 0x55, 0xf5, 0x28, 0x3b, 0x1e, 0xc1, 0xa5,
|
||||||
0xf4, 0x68, 0xe2, 0x27, 0x31, 0xf1, 0xc0, 0x91, 0x23, 0x07, 0x43, 0x64, 0xfc, 0x22, 0xa6, 0x7b,
|
0x4b, 0x13, 0x9f, 0xc4, 0x1d, 0x4b, 0x96, 0x2c, 0xcc, 0x44, 0xda, 0x27, 0xf0, 0x0d, 0x4c, 0x55,
|
||||||
0x5a, 0x76, 0x61, 0x43, 0x80, 0xdb, 0xf4, 0xbf, 0xea, 0xff, 0x9b, 0xaa, 0xea, 0x2e, 0xf4, 0x72,
|
0x17, 0xcc, 0x00, 0x31, 0xc0, 0xae, 0xeb, 0xdc, 0x7b, 0xce, 0x3d, 0xf7, 0x54, 0x17, 0x7a, 0x31,
|
||||||
0xb8, 0x9a, 0x12, 0x1e, 0xbb, 0xc3, 0xac, 0x07, 0x22, 0x02, 0x09, 0xa9, 0x3b, 0x82, 0xa8, 0x1f,
|
0x5c, 0x13, 0x24, 0x4c, 0xdc, 0x61, 0xd6, 0x03, 0x1e, 0x83, 0x04, 0xe1, 0x8e, 0x20, 0xee, 0x27,
|
||||||
0x0b, 0xd7, 0x04, 0x58, 0xc2, 0x5d, 0x96, 0xc9, 0x01, 0x44, 0x92, 0xfb, 0x4c, 0xf2, 0x38, 0x72,
|
0xdc, 0x35, 0x05, 0x96, 0x86, 0x2e, 0xcb, 0xe4, 0x00, 0x62, 0x19, 0xfa, 0x4c, 0x86, 0x49, 0xec,
|
||||||
0x47, 0x8b, 0x3d, 0x90, 0x6c, 0xd1, 0x0d, 0x20, 0x02, 0xc1, 0x24, 0xf4, 0x49, 0x22, 0x62, 0x19,
|
0x8e, 0x96, 0x7a, 0x20, 0xd9, 0x92, 0x1b, 0x40, 0x0c, 0x9c, 0x49, 0xe8, 0x93, 0x94, 0x27, 0x32,
|
||||||
0xe3, 0xbb, 0x85, 0x85, 0xb0, 0x84, 0x93, 0xb3, 0x16, 0x62, 0x2c, 0xad, 0x85, 0x80, 0xcb, 0x41,
|
0xc1, 0xf7, 0x0b, 0x0a, 0x61, 0x69, 0x48, 0xce, 0x53, 0x88, 0xa1, 0xb4, 0x17, 0x83, 0x50, 0x0e,
|
||||||
0xd6, 0x23, 0x7e, 0x1c, 0xba, 0x41, 0x1c, 0xc4, 0xae, 0x76, 0xf6, 0xb2, 0x1d, 0x7d, 0xd2, 0x07,
|
0xb2, 0x1e, 0xf1, 0x93, 0xc8, 0x0d, 0x92, 0x20, 0x71, 0x35, 0xb3, 0x97, 0xed, 0xe9, 0x93, 0x3e,
|
||||||
0xfd, 0x55, 0x10, 0x5b, 0xcb, 0xe3, 0x22, 0x42, 0xe6, 0x0f, 0x78, 0x04, 0x62, 0xcf, 0x4d, 0x86,
|
0xe8, 0xaf, 0x42, 0xb1, 0xbd, 0x32, 0x31, 0x11, 0x31, 0x7f, 0x10, 0xc6, 0xc0, 0xf7, 0xdd, 0x74,
|
||||||
0x81, 0x12, 0x52, 0x37, 0x04, 0xc9, 0xdc, 0xd1, 0x54, 0x1d, 0x2d, 0xf7, 0x22, 0x97, 0xc8, 0x22,
|
0x18, 0x28, 0x40, 0xb8, 0x11, 0x48, 0xe6, 0x8e, 0x2e, 0xf9, 0x68, 0xbb, 0xff, 0x62, 0xf1, 0x2c,
|
||||||
0xc9, 0x43, 0x98, 0x32, 0xac, 0x5c, 0x66, 0x48, 0xfd, 0x01, 0x84, 0x6c, 0xca, 0xf7, 0xe8, 0x22,
|
0x96, 0x61, 0x04, 0x97, 0x08, 0xab, 0x57, 0x11, 0x84, 0x3f, 0x80, 0x88, 0x5d, 0xe4, 0x75, 0x1f,
|
||||||
0x5f, 0x26, 0xf9, 0xae, 0xcb, 0x23, 0x99, 0x4a, 0x71, 0xde, 0xd4, 0x7d, 0x8c, 0xd0, 0xfa, 0x67,
|
0x23, 0xb4, 0xf9, 0x59, 0x72, 0xf6, 0x9a, 0x7d, 0xcc, 0x00, 0x77, 0x50, 0x35, 0x94, 0x10, 0x89,
|
||||||
0x29, 0xd8, 0x1b, 0xb6, 0x9b, 0x01, 0x6e, 0xa3, 0x2a, 0x97, 0x10, 0xa6, 0x4d, 0xbb, 0x53, 0x9e,
|
0x96, 0x3d, 0x57, 0x9e, 0xaf, 0x7b, 0xf5, 0x7c, 0xdc, 0xa9, 0x6e, 0x29, 0x80, 0x16, 0xf8, 0x7a,
|
||||||
0xaf, 0x7b, 0xf5, 0xfc, 0xb8, 0x5d, 0xdd, 0x50, 0x02, 0x2d, 0xf4, 0xb5, 0xda, 0xd7, 0x6f, 0x6d,
|
0xed, 0xeb, 0xb7, 0x8e, 0x75, 0xf0, 0x73, 0xce, 0xea, 0x7e, 0x2f, 0xa1, 0xc6, 0x4e, 0x32, 0x84,
|
||||||
0x6b, 0xff, 0x57, 0xc7, 0xea, 0x7e, 0x2f, 0xa1, 0xc6, 0x56, 0x3c, 0x84, 0x88, 0xc2, 0x88, 0xc3,
|
0x98, 0xc2, 0x28, 0x84, 0x4f, 0xf8, 0x3d, 0xaa, 0xa9, 0x65, 0xfa, 0x4c, 0xb2, 0x96, 0x3d, 0x67,
|
||||||
0x27, 0xfc, 0x01, 0xd5, 0xd4, 0x04, 0xfa, 0x4c, 0xb2, 0xa6, 0xdd, 0xb1, 0xe7, 0x1b, 0x4b, 0x0f,
|
0xcf, 0x37, 0x96, 0x1f, 0x91, 0x49, 0x98, 0x67, 0x9e, 0x48, 0x3a, 0x0c, 0x14, 0x20, 0x88, 0xea,
|
||||||
0xc9, 0xf8, 0x06, 0x4e, 0x0b, 0x22, 0xc9, 0x30, 0x50, 0x42, 0x4a, 0x54, 0x36, 0x19, 0x2d, 0x92,
|
0x26, 0xa3, 0x25, 0xf2, 0xb2, 0xf7, 0x01, 0x7c, 0xb9, 0x0d, 0x92, 0x79, 0xf8, 0x70, 0xdc, 0xb1,
|
||||||
0x57, 0xbd, 0x8f, 0xe0, 0xcb, 0x4d, 0x90, 0xcc, 0xc3, 0x07, 0xc7, 0x6d, 0x2b, 0x3f, 0x6e, 0xa3,
|
0xf2, 0x71, 0x07, 0x4d, 0x30, 0x7a, 0xa6, 0x8a, 0x77, 0x50, 0x45, 0xa4, 0xe0, 0xb7, 0x4a, 0x5a,
|
||||||
0xb1, 0x46, 0x4f, 0xa9, 0x78, 0x0b, 0x55, 0xd2, 0x04, 0xfc, 0x66, 0x49, 0xd3, 0x97, 0xc8, 0xa5,
|
0x7d, 0x99, 0x5c, 0x79, 0x55, 0x64, 0xca, 0xdf, 0xab, 0x14, 0x7c, 0xef, 0x7f, 0xa3, 0x5f, 0x51,
|
||||||
0xf7, 0x4b, 0x26, 0xea, 0x7b, 0x9d, 0x80, 0xef, 0xfd, 0x6f, 0xf8, 0x15, 0x75, 0xa2, 0x9a, 0x86,
|
0x27, 0xaa, 0xd5, 0xf0, 0x3b, 0x34, 0x23, 0x24, 0x93, 0x99, 0x68, 0x95, 0xb5, 0xee, 0xca, 0x0d,
|
||||||
0xdf, 0xa3, 0x99, 0x54, 0x32, 0x99, 0xa5, 0xcd, 0xb2, 0xe6, 0x2e, 0x5f, 0x93, 0xab, 0xbd, 0xde,
|
0x75, 0x35, 0xd7, 0xbb, 0x65, 0x94, 0x67, 0x8a, 0x33, 0x35, 0x9a, 0x5d, 0x1f, 0xdd, 0xbe, 0x60,
|
||||||
0x0d, 0x43, 0x9e, 0x29, 0xce, 0xd4, 0x30, 0xbb, 0x2b, 0xe8, 0xe6, 0xb9, 0x22, 0xf0, 0x3d, 0x54,
|
0x02, 0x3f, 0x40, 0x55, 0xa9, 0x20, 0x9d, 0x52, 0xdd, 0x6b, 0x1a, 0x66, 0xb5, 0xe8, 0x2b, 0x6a,
|
||||||
0x95, 0x4a, 0xd2, 0x53, 0xaa, 0x7b, 0xb3, 0xc6, 0x59, 0x2d, 0xf2, 0x8a, 0x58, 0xf7, 0xa7, 0x8d,
|
0x78, 0x01, 0xd5, 0x59, 0xd6, 0x0f, 0x21, 0xf6, 0x41, 0xb4, 0x4a, 0xfa, 0x32, 0x9a, 0xf9, 0xb8,
|
||||||
0x6e, 0x4d, 0xfd, 0x05, 0x3f, 0x41, 0xb3, 0x13, 0x15, 0x41, 0x5f, 0x23, 0x6a, 0xde, 0x6d, 0x83,
|
0x53, 0xdf, 0x38, 0x05, 0xe9, 0xa4, 0xde, 0xfd, 0x63, 0xa3, 0x3b, 0x97, 0x2c, 0xe1, 0x27, 0xa8,
|
||||||
0x98, 0x7d, 0x3a, 0x19, 0xa4, 0x67, 0x73, 0xf1, 0x26, 0xaa, 0x64, 0x29, 0x08, 0x33, 0xbe, 0xfb,
|
0x39, 0x65, 0x1f, 0xfa, 0x7a, 0x5e, 0xcd, 0xbb, 0x6b, 0xe6, 0x35, 0x37, 0xa6, 0x8b, 0xf4, 0x7c,
|
||||||
0x57, 0x68, 0x73, 0x3b, 0x05, 0xb1, 0x11, 0xed, 0xc4, 0xe3, 0xb9, 0x29, 0x85, 0x6a, 0x8c, 0x6a,
|
0x2f, 0xde, 0x46, 0x95, 0x4c, 0x00, 0x37, 0x59, 0x2f, 0x5c, 0x23, 0x93, 0x5d, 0x01, 0x7c, 0x2b,
|
||||||
0x03, 0x84, 0x88, 0x85, 0x1e, 0xdb, 0x44, 0x1b, 0xeb, 0x4a, 0xa4, 0x45, 0xac, 0xfb, 0xa3, 0x84,
|
0xde, 0x4b, 0x26, 0x21, 0x2b, 0x84, 0x6a, 0x19, 0xb5, 0x33, 0x70, 0x9e, 0x70, 0x9d, 0xf1, 0xd4,
|
||||||
0x6a, 0xff, 0x28, 0xf8, 0x01, 0xaa, 0x29, 0x67, 0xc4, 0x42, 0x30, 0xbd, 0xcf, 0x19, 0x93, 0xce,
|
0xce, 0x9b, 0x0a, 0xa4, 0x45, 0xed, 0xfc, 0xce, 0x95, 0x2b, 0x76, 0xfe, 0x51, 0x42, 0xb5, 0xd3,
|
||||||
0x51, 0x3a, 0x3d, 0xcd, 0xc0, 0x77, 0x50, 0x39, 0xe3, 0x7d, 0x5d, 0x6d, 0xdd, 0x6b, 0x98, 0xc4,
|
0x91, 0xf8, 0x21, 0xaa, 0xa9, 0x31, 0x31, 0x8b, 0xc0, 0xa4, 0x3a, 0x6b, 0x26, 0xe8, 0x1e, 0x85,
|
||||||
0xf2, 0xf6, 0xc6, 0x73, 0xaa, 0x74, 0xdc, 0x45, 0x33, 0x81, 0x88, 0xb3, 0x44, 0x5d, 0x9b, 0x7a,
|
0xd3, 0xb3, 0x0e, 0x7c, 0x0f, 0x95, 0xb3, 0xb0, 0xaf, 0x57, 0xab, 0x7b, 0x0d, 0xd3, 0x58, 0xde,
|
||||||
0xaa, 0x48, 0x0d, 0xff, 0x85, 0x56, 0xa8, 0x89, 0xe0, 0x77, 0xa8, 0x0a, 0xea, 0x6d, 0x37, 0x2b,
|
0xdd, 0x7a, 0x46, 0x15, 0x8e, 0xbb, 0x68, 0x26, 0xe0, 0x49, 0x96, 0xaa, 0x1f, 0x42, 0x79, 0x40,
|
||||||
0x9d, 0xf2, 0x7c, 0x63, 0x69, 0xe5, 0x1a, 0x2d, 0x13, 0xbd, 0x14, 0xeb, 0x91, 0x14, 0x7b, 0x13,
|
0xea, 0x5a, 0x9f, 0x6b, 0x84, 0x9a, 0x0a, 0x7e, 0x8b, 0xaa, 0xa0, 0x5e, 0x8d, 0xb6, 0xd9, 0x58,
|
||||||
0xad, 0x29, 0x8d, 0x16, 0xcc, 0x56, 0x60, 0x16, 0x47, 0xe7, 0xe0, 0x39, 0x54, 0x1e, 0xc2, 0x5e,
|
0x5e, 0xbd, 0x41, 0x3e, 0x44, 0x3f, 0xb7, 0xcd, 0x58, 0xf2, 0xfd, 0xa9, 0x1c, 0x14, 0x46, 0x0b,
|
||||||
0xd1, 0x16, 0x55, 0x9f, 0xf8, 0x19, 0xaa, 0x8e, 0xd4, 0x4e, 0x99, 0x79, 0x2f, 0x5c, 0xe1, 0xe7,
|
0xcd, 0x76, 0x60, 0x9e, 0xa4, 0xee, 0xc1, 0xb3, 0xa8, 0x3c, 0x84, 0xfd, 0x62, 0x2d, 0xaa, 0x3e,
|
||||||
0xe3, 0x45, 0xa4, 0x85, 0x77, 0xad, 0xb4, 0x6a, 0x7b, 0x0b, 0x07, 0x27, 0x8e, 0x75, 0x78, 0xe2,
|
0xf1, 0x53, 0x54, 0x1d, 0xa9, 0xd7, 0x6a, 0x2e, 0x67, 0xf1, 0x1a, 0xc3, 0x27, 0x4f, 0x9c, 0x16,
|
||||||
0x58, 0x47, 0x27, 0x8e, 0xb5, 0x9f, 0x3b, 0xf6, 0x41, 0xee, 0xd8, 0x87, 0xb9, 0x63, 0x1f, 0xe5,
|
0xdc, 0xf5, 0xd2, 0x9a, 0xed, 0x2d, 0x1e, 0x9e, 0x38, 0xd6, 0xd1, 0x89, 0x63, 0x1d, 0x9f, 0x38,
|
||||||
0x8e, 0xfd, 0x3b, 0x77, 0xec, 0x2f, 0x7f, 0x1c, 0xeb, 0xed, 0x7f, 0x06, 0xf2, 0x37, 0x00, 0x00,
|
0xd6, 0x41, 0xee, 0xd8, 0x87, 0xb9, 0x63, 0x1f, 0xe5, 0x8e, 0x7d, 0x9c, 0x3b, 0xf6, 0xaf, 0xdc,
|
||||||
0xff, 0xff, 0x36, 0x0e, 0x35, 0x2a, 0x43, 0x05, 0x00, 0x00,
|
0xb1, 0xbf, 0xfc, 0x76, 0xac, 0x37, 0xff, 0x19, 0x91, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf7,
|
||||||
|
0xd6, 0x32, 0x28, 0x68, 0x05, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ package k8s.io.api.authentication.v1beta1;
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1beta1";
|
option go_package = "v1beta1";
|
||||||
|
@ -58,6 +57,14 @@ message TokenReviewSpec {
|
||||||
// Token is the opaque bearer token.
|
// Token is the opaque bearer token.
|
||||||
// +optional
|
// +optional
|
||||||
optional string token = 1;
|
optional string token = 1;
|
||||||
|
|
||||||
|
// Audiences is a list of the identifiers that the resource server presented
|
||||||
|
// with the token identifies as. Audience-aware token authenticators will
|
||||||
|
// verify that the token was intended for at least one of the audiences in
|
||||||
|
// this list. If no audiences are provided, the audience will default to the
|
||||||
|
// audience of the Kubernetes apiserver.
|
||||||
|
// +optional
|
||||||
|
repeated string audiences = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenReviewStatus is the result of the token authentication request.
|
// TokenReviewStatus is the result of the token authentication request.
|
||||||
|
@ -70,6 +77,18 @@ message TokenReviewStatus {
|
||||||
// +optional
|
// +optional
|
||||||
optional UserInfo user = 2;
|
optional UserInfo user = 2;
|
||||||
|
|
||||||
|
// Audiences are audience identifiers chosen by the authenticator that are
|
||||||
|
// compatible with both the TokenReview and token. An identifier is any
|
||||||
|
// identifier in the intersection of the TokenReviewSpec audiences and the
|
||||||
|
// token's audiences. A client of the TokenReview API that sets the
|
||||||
|
// spec.audiences field should validate that a compatible audience identifier
|
||||||
|
// is returned in the status.audiences field to ensure that the TokenReview
|
||||||
|
// server is audience aware. If a TokenReview returns an empty
|
||||||
|
// status.audience field where status.authenticated is "true", the token is
|
||||||
|
// valid against the audience of the Kubernetes API server.
|
||||||
|
// +optional
|
||||||
|
repeated string audiences = 4;
|
||||||
|
|
||||||
// Error indicates that the token couldn't be checked
|
// Error indicates that the token couldn't be checked
|
||||||
// +optional
|
// +optional
|
||||||
optional string error = 3;
|
optional string error = 3;
|
||||||
|
|
|
@ -48,6 +48,13 @@ type TokenReviewSpec struct {
|
||||||
// Token is the opaque bearer token.
|
// Token is the opaque bearer token.
|
||||||
// +optional
|
// +optional
|
||||||
Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"`
|
Token string `json:"token,omitempty" protobuf:"bytes,1,opt,name=token"`
|
||||||
|
// Audiences is a list of the identifiers that the resource server presented
|
||||||
|
// with the token identifies as. Audience-aware token authenticators will
|
||||||
|
// verify that the token was intended for at least one of the audiences in
|
||||||
|
// this list. If no audiences are provided, the audience will default to the
|
||||||
|
// audience of the Kubernetes apiserver.
|
||||||
|
// +optional
|
||||||
|
Audiences []string `json:"audiences,omitempty" protobuf:"bytes,2,rep,name=audiences"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenReviewStatus is the result of the token authentication request.
|
// TokenReviewStatus is the result of the token authentication request.
|
||||||
|
@ -58,6 +65,17 @@ type TokenReviewStatus struct {
|
||||||
// User is the UserInfo associated with the provided token.
|
// User is the UserInfo associated with the provided token.
|
||||||
// +optional
|
// +optional
|
||||||
User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"`
|
User UserInfo `json:"user,omitempty" protobuf:"bytes,2,opt,name=user"`
|
||||||
|
// Audiences are audience identifiers chosen by the authenticator that are
|
||||||
|
// compatible with both the TokenReview and token. An identifier is any
|
||||||
|
// identifier in the intersection of the TokenReviewSpec audiences and the
|
||||||
|
// token's audiences. A client of the TokenReview API that sets the
|
||||||
|
// spec.audiences field should validate that a compatible audience identifier
|
||||||
|
// is returned in the status.audiences field to ensure that the TokenReview
|
||||||
|
// server is audience aware. If a TokenReview returns an empty
|
||||||
|
// status.audience field where status.authenticated is "true", the token is
|
||||||
|
// valid against the audience of the Kubernetes API server.
|
||||||
|
// +optional
|
||||||
|
Audiences []string `json:"audiences,omitempty" protobuf:"bytes,4,rep,name=audiences"`
|
||||||
// Error indicates that the token couldn't be checked
|
// Error indicates that the token couldn't be checked
|
||||||
// +optional
|
// +optional
|
||||||
Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"`
|
Error string `json:"error,omitempty" protobuf:"bytes,3,opt,name=error"`
|
||||||
|
|
|
@ -38,8 +38,9 @@ func (TokenReview) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_TokenReviewSpec = map[string]string{
|
var map_TokenReviewSpec = map[string]string{
|
||||||
"": "TokenReviewSpec is a description of the token authentication request.",
|
"": "TokenReviewSpec is a description of the token authentication request.",
|
||||||
"token": "Token is the opaque bearer token.",
|
"token": "Token is the opaque bearer token.",
|
||||||
|
"audiences": "Audiences is a list of the identifiers that the resource server presented with the token identifies as. Audience-aware token authenticators will verify that the token was intended for at least one of the audiences in this list. If no audiences are provided, the audience will default to the audience of the Kubernetes apiserver.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (TokenReviewSpec) SwaggerDoc() map[string]string {
|
func (TokenReviewSpec) SwaggerDoc() map[string]string {
|
||||||
|
@ -50,6 +51,7 @@ var map_TokenReviewStatus = map[string]string{
|
||||||
"": "TokenReviewStatus is the result of the token authentication request.",
|
"": "TokenReviewStatus is the result of the token authentication request.",
|
||||||
"authenticated": "Authenticated indicates that the token was associated with a known user.",
|
"authenticated": "Authenticated indicates that the token was associated with a known user.",
|
||||||
"user": "User is the UserInfo associated with the provided token.",
|
"user": "User is the UserInfo associated with the provided token.",
|
||||||
|
"audiences": "Audiences are audience identifiers chosen by the authenticator that are compatible with both the TokenReview and token. An identifier is any identifier in the intersection of the TokenReviewSpec audiences and the token's audiences. A client of the TokenReview API that sets the spec.audiences field should validate that a compatible audience identifier is returned in the status.audiences field to ensure that the TokenReview server is audience aware. If a TokenReview returns an empty status.audience field where status.authenticated is \"true\", the token is valid against the audience of the Kubernetes API server.",
|
||||||
"error": "Error indicates that the token couldn't be checked",
|
"error": "Error indicates that the token couldn't be checked",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ func (in *TokenReview) DeepCopyInto(out *TokenReview) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TypeMeta = in.TypeMeta
|
out.TypeMeta = in.TypeMeta
|
||||||
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
out.Spec = in.Spec
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
in.Status.DeepCopyInto(&out.Status)
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -75,6 +75,11 @@ func (in *TokenReview) DeepCopyObject() runtime.Object {
|
||||||
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
func (in *TokenReviewSpec) DeepCopyInto(out *TokenReviewSpec) {
|
func (in *TokenReviewSpec) DeepCopyInto(out *TokenReviewSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
|
if in.Audiences != nil {
|
||||||
|
in, out := &in.Audiences, &out.Audiences
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,6 +97,11 @@ func (in *TokenReviewSpec) DeepCopy() *TokenReviewSpec {
|
||||||
func (in *TokenReviewStatus) DeepCopyInto(out *TokenReviewStatus) {
|
func (in *TokenReviewStatus) DeepCopyInto(out *TokenReviewStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
in.User.DeepCopyInto(&out.User)
|
in.User.DeepCopyInto(&out.User)
|
||||||
|
if in.Audiences != nil {
|
||||||
|
in, out := &in.Audiences, &out.Audiences
|
||||||
|
*out = make([]string, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,12 +127,15 @@ func (in *UserInfo) DeepCopyInto(out *UserInfo) {
|
||||||
in, out := &in.Extra, &out.Extra
|
in, out := &in.Extra, &out.Extra
|
||||||
*out = make(map[string]ExtraValue, len(*in))
|
*out = make(map[string]ExtraValue, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
|
var outVal []string
|
||||||
if val == nil {
|
if val == nil {
|
||||||
(*out)[key] = nil
|
(*out)[key] = nil
|
||||||
} else {
|
} else {
|
||||||
(*out)[key] = make([]string, len(val))
|
in, out := &val, &outVal
|
||||||
copy((*out)[key], val)
|
*out = make(ExtraValue, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
(*out)[key] = outVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
@ -15,7 +15,9 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
// +groupName=authorization.k8s.io
|
// +groupName=authorization.k8s.io
|
||||||
|
|
||||||
package v1 // import "k8s.io/api/authorization/v1"
|
package v1 // import "k8s.io/api/authorization/v1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1 is a generated protocol buffer package.
|
Package v1 is a generated protocol buffer package.
|
||||||
|
@ -795,24 +794,6 @@ func (m *SubjectRulesReviewStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -2888,51 +2869,14 @@ func (m *SubjectAccessReviewSpec) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.Extra == nil {
|
if m.Extra == nil {
|
||||||
m.Extra = make(map[string]ExtraValue)
|
m.Extra = make(map[string]ExtraValue)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
mapvalue := &ExtraValue{}
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -2942,46 +2886,85 @@ func (m *SubjectAccessReviewSpec) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var mapmsglen int
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
mapmsglen |= (int(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var mapmsglen int
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
mapmsglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postmsgIndex := iNdEx + mapmsglen
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if postmsgIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = &ExtraValue{}
|
||||||
|
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postmsgIndex
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postmsgIndex := iNdEx + mapmsglen
|
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
if postmsgIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := &ExtraValue{}
|
|
||||||
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
iNdEx = postmsgIndex
|
|
||||||
m.Extra[mapkey] = *mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue ExtraValue
|
|
||||||
m.Extra[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.Extra[mapkey] = *mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 6:
|
case 6:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
|
@ -3452,77 +3435,77 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 1152 bytes of a gzipped FileDescriptorProto
|
// 1140 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4f, 0x6f, 0x1b, 0x45,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x1b, 0xc5,
|
||||||
0x14, 0xf7, 0xae, 0xed, 0xd4, 0x1e, 0x37, 0x24, 0x9d, 0x28, 0xcd, 0x36, 0x15, 0x76, 0xb4, 0x48,
|
0x1b, 0xf7, 0xae, 0xed, 0xc4, 0x1e, 0x37, 0xff, 0xa4, 0x13, 0xa5, 0xd9, 0xa6, 0xfa, 0xdb, 0xd1,
|
||||||
0x90, 0x8a, 0xb2, 0x4b, 0x4c, 0xdb, 0x44, 0x95, 0x2a, 0x14, 0x2b, 0x11, 0x8a, 0xd4, 0x96, 0x6a,
|
0x22, 0x41, 0x2a, 0xca, 0x2e, 0xb1, 0xda, 0x26, 0xaa, 0x54, 0xa1, 0x58, 0x89, 0x50, 0xa4, 0xb6,
|
||||||
0xa2, 0x44, 0xa2, 0x08, 0xc4, 0x78, 0x3d, 0xb1, 0x97, 0xd8, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x38,
|
0x54, 0x13, 0x25, 0x12, 0x45, 0x20, 0xc6, 0xeb, 0x89, 0xbd, 0xc4, 0xde, 0x5d, 0x66, 0x66, 0x1d,
|
||||||
0x55, 0xe2, 0x0b, 0x70, 0xe4, 0xc0, 0x81, 0x6f, 0xc0, 0x05, 0x89, 0x1b, 0x07, 0x0e, 0x28, 0xc7,
|
0xc2, 0xa9, 0x12, 0x5f, 0x80, 0x23, 0x07, 0x0e, 0x7c, 0x03, 0x2e, 0x48, 0xdc, 0x38, 0x70, 0x40,
|
||||||
0x1e, 0x8b, 0x84, 0x2c, 0xb2, 0x9c, 0xf9, 0x0e, 0x68, 0x66, 0xc7, 0xde, 0x75, 0xb2, 0x76, 0x13,
|
0x39, 0xf6, 0x58, 0x24, 0x64, 0x91, 0xe5, 0xcc, 0x77, 0x40, 0x33, 0x3b, 0xf6, 0xae, 0x93, 0xb5,
|
||||||
0x0e, 0xf4, 0xd2, 0xdb, 0xee, 0xfb, 0xfd, 0xde, 0x9f, 0x79, 0x7f, 0x66, 0x1e, 0xd8, 0x3a, 0xdc,
|
0x9b, 0x70, 0xa0, 0x97, 0xde, 0x76, 0x9f, 0xdf, 0xef, 0x79, 0x99, 0xe7, 0x65, 0xe6, 0x01, 0xdb,
|
||||||
0x60, 0x96, 0xeb, 0xdb, 0x87, 0x61, 0x93, 0x50, 0x8f, 0x70, 0xc2, 0xec, 0x3e, 0xf1, 0x5a, 0x3e,
|
0x47, 0x9b, 0xcc, 0x72, 0x7d, 0xfb, 0x28, 0x6c, 0x12, 0xea, 0x11, 0x4e, 0x98, 0xdd, 0x27, 0x5e,
|
||||||
0xb5, 0x15, 0x80, 0x03, 0xd7, 0xc6, 0x21, 0xef, 0xf8, 0xd4, 0xfd, 0x06, 0x73, 0xd7, 0xf7, 0xec,
|
0xcb, 0xa7, 0xb6, 0x02, 0x70, 0xe0, 0xda, 0x38, 0xe4, 0x1d, 0x9f, 0xba, 0x5f, 0x63, 0xee, 0xfa,
|
||||||
0xfe, 0x9a, 0xdd, 0x26, 0x1e, 0xa1, 0x98, 0x93, 0x96, 0x15, 0x50, 0x9f, 0xfb, 0xf0, 0x66, 0x4c,
|
0x9e, 0xdd, 0x5f, 0xb7, 0xdb, 0xc4, 0x23, 0x14, 0x73, 0xd2, 0xb2, 0x02, 0xea, 0x73, 0x1f, 0xde,
|
||||||
0xb6, 0x70, 0xe0, 0x5a, 0x63, 0x64, 0xab, 0xbf, 0xb6, 0xfc, 0x5e, 0xdb, 0xe5, 0x9d, 0xb0, 0x69,
|
0x8a, 0xc9, 0x16, 0x0e, 0x5c, 0x6b, 0x8c, 0x6c, 0xf5, 0xd7, 0x57, 0xde, 0x6b, 0xbb, 0xbc, 0x13,
|
||||||
0x39, 0x7e, 0xcf, 0x6e, 0xfb, 0x6d, 0xdf, 0x96, 0x3a, 0xcd, 0xf0, 0x40, 0xfe, 0xc9, 0x1f, 0xf9,
|
0x36, 0x2d, 0xc7, 0xef, 0xd9, 0x6d, 0xbf, 0xed, 0xdb, 0x52, 0xa7, 0x19, 0x1e, 0xca, 0x3f, 0xf9,
|
||||||
0x15, 0xdb, 0x5a, 0xbe, 0x93, 0x38, 0xee, 0x61, 0xa7, 0xe3, 0x7a, 0x84, 0x1e, 0xdb, 0xc1, 0x61,
|
0x23, 0xbf, 0x62, 0x5b, 0x2b, 0x77, 0x13, 0xc7, 0x3d, 0xec, 0x74, 0x5c, 0x8f, 0xd0, 0x13, 0x3b,
|
||||||
0x5b, 0x08, 0x98, 0xdd, 0x23, 0x1c, 0x67, 0x44, 0xb0, 0x6c, 0x4f, 0xd2, 0xa2, 0xa1, 0xc7, 0xdd,
|
0x38, 0x6a, 0x0b, 0x01, 0xb3, 0x7b, 0x84, 0xe3, 0x8c, 0x08, 0x56, 0xec, 0x49, 0x5a, 0x34, 0xf4,
|
||||||
0x1e, 0x39, 0xa7, 0x70, 0xef, 0x65, 0x0a, 0xcc, 0xe9, 0x90, 0x1e, 0x3e, 0xa7, 0xf7, 0xc1, 0x24,
|
0xb8, 0xdb, 0x23, 0x17, 0x14, 0xee, 0xbf, 0x4a, 0x81, 0x39, 0x1d, 0xd2, 0xc3, 0xe7, 0xf5, 0xcc,
|
||||||
0xbd, 0x90, 0xbb, 0x5d, 0xdb, 0xf5, 0x38, 0xe3, 0xf4, 0xac, 0x92, 0xb9, 0x0e, 0xc0, 0xf6, 0xd7,
|
0x0d, 0x00, 0x76, 0xbe, 0xe2, 0x14, 0x1f, 0xe0, 0x6e, 0x48, 0x60, 0x0d, 0x14, 0x5d, 0x4e, 0x7a,
|
||||||
0x9c, 0xe2, 0x7d, 0xdc, 0x0d, 0x09, 0xac, 0x81, 0xa2, 0xcb, 0x49, 0x8f, 0x19, 0xda, 0x4a, 0x7e,
|
0xcc, 0xd0, 0x56, 0xf3, 0x6b, 0xe5, 0x46, 0x39, 0x1a, 0xd4, 0x8a, 0xbb, 0x42, 0x80, 0x62, 0xf9,
|
||||||
0xb5, 0xdc, 0x28, 0x47, 0x83, 0x5a, 0x71, 0x47, 0x08, 0x50, 0x2c, 0xbf, 0x5f, 0xfa, 0xfe, 0xc7,
|
0x83, 0xd2, 0x77, 0x3f, 0xd4, 0x72, 0xcf, 0xff, 0x58, 0xcd, 0x99, 0x3f, 0xe9, 0xc0, 0x78, 0xe4,
|
||||||
0x5a, 0xee, 0xd9, 0x9f, 0x2b, 0x39, 0xf3, 0x67, 0x1d, 0x18, 0x0f, 0x7d, 0x07, 0x77, 0x77, 0xc3,
|
0x3b, 0xb8, 0xbb, 0x17, 0x36, 0xbf, 0x20, 0x0e, 0xdf, 0x72, 0x1c, 0xc2, 0x18, 0x22, 0x7d, 0x97,
|
||||||
0xe6, 0x97, 0xc4, 0xe1, 0x9b, 0x8e, 0x43, 0x18, 0x43, 0xa4, 0xef, 0x92, 0x23, 0xf8, 0x05, 0x28,
|
0x1c, 0xc3, 0xcf, 0x41, 0x49, 0x9c, 0xac, 0x85, 0x39, 0x36, 0xb4, 0x55, 0x6d, 0xad, 0x52, 0x7f,
|
||||||
0x89, 0x74, 0xb4, 0x30, 0xc7, 0x86, 0xb6, 0xa2, 0xad, 0x56, 0xea, 0xef, 0x5b, 0x49, 0x21, 0x46,
|
0xdf, 0x4a, 0x72, 0x3a, 0x0a, 0xd0, 0x0a, 0x8e, 0xda, 0x42, 0xc0, 0x2c, 0xc1, 0xb6, 0xfa, 0xeb,
|
||||||
0xd1, 0x59, 0xc1, 0x61, 0x5b, 0x08, 0x98, 0x25, 0xd8, 0x56, 0x7f, 0xcd, 0xfa, 0x58, 0xda, 0x7a,
|
0xd6, 0x47, 0xd2, 0xd6, 0x63, 0xc2, 0x71, 0x03, 0x9e, 0x0e, 0x6a, 0xb9, 0x68, 0x50, 0x03, 0x89,
|
||||||
0x44, 0x38, 0x6e, 0xc0, 0x93, 0x41, 0x2d, 0x17, 0x0d, 0x6a, 0x20, 0x91, 0xa1, 0x91, 0x55, 0xb8,
|
0x0c, 0x8d, 0xac, 0xc2, 0x03, 0x50, 0x60, 0x01, 0x71, 0x0c, 0x5d, 0x5a, 0xbf, 0x6b, 0x4d, 0xa9,
|
||||||
0x0f, 0x0a, 0x2c, 0x20, 0x8e, 0xa1, 0x4b, 0xeb, 0x77, 0xac, 0x29, 0x65, 0xb6, 0x32, 0x22, 0xdc,
|
0x98, 0x95, 0x11, 0xe1, 0x5e, 0x40, 0x9c, 0xc6, 0x35, 0xe5, 0xa1, 0x20, 0xfe, 0x90, 0xb4, 0x07,
|
||||||
0x0d, 0x88, 0xd3, 0xb8, 0xaa, 0x3c, 0x14, 0xc4, 0x1f, 0x92, 0xf6, 0xe0, 0xe7, 0x60, 0x86, 0x71,
|
0x3f, 0x03, 0x33, 0x8c, 0x63, 0x1e, 0x32, 0x23, 0x2f, 0x2d, 0xdf, 0xbf, 0xb2, 0x65, 0xa9, 0xdd,
|
||||||
0xcc, 0x43, 0x66, 0xe4, 0xa5, 0xe5, 0x7b, 0x97, 0xb6, 0x2c, 0xb5, 0x1b, 0x6f, 0x28, 0xdb, 0x33,
|
0xf8, 0x9f, 0xb2, 0x3d, 0x13, 0xff, 0x23, 0x65, 0xd5, 0xfc, 0x04, 0x2c, 0x3d, 0xf1, 0x3d, 0x44,
|
||||||
0xf1, 0x3f, 0x52, 0x56, 0xcd, 0x4f, 0xc1, 0xe2, 0x63, 0xdf, 0x43, 0x84, 0xf9, 0x21, 0x75, 0xc8,
|
0x98, 0x1f, 0x52, 0x87, 0x6c, 0x71, 0x4e, 0xdd, 0x66, 0xc8, 0x09, 0x83, 0xab, 0xa0, 0x10, 0x60,
|
||||||
0x26, 0xe7, 0xd4, 0x6d, 0x86, 0x9c, 0x30, 0xb8, 0x02, 0x0a, 0x01, 0xe6, 0x1d, 0x99, 0xae, 0x72,
|
0xde, 0x91, 0xe9, 0x2a, 0x27, 0xa1, 0x3d, 0xc5, 0xbc, 0x83, 0x24, 0x22, 0x18, 0x7d, 0x42, 0x9b,
|
||||||
0x12, 0xda, 0x13, 0xcc, 0x3b, 0x48, 0x22, 0x82, 0xd1, 0x27, 0xb4, 0x29, 0x8f, 0x9c, 0x62, 0xec,
|
0xf2, 0xc8, 0x29, 0xc6, 0x01, 0xa1, 0x4d, 0x24, 0x11, 0xf3, 0x4b, 0x30, 0x9f, 0x32, 0x8e, 0xc2,
|
||||||
0x13, 0xda, 0x44, 0x12, 0x31, 0xbf, 0x02, 0x73, 0x29, 0xe3, 0x28, 0xec, 0xca, 0x8a, 0x0a, 0x68,
|
0xae, 0xac, 0xa8, 0x80, 0xc6, 0x2a, 0x2a, 0x34, 0x18, 0x8a, 0xe5, 0xf0, 0x21, 0x98, 0xf7, 0x12,
|
||||||
0xac, 0xa2, 0x42, 0x83, 0xa1, 0x58, 0x0e, 0x1f, 0x80, 0x39, 0x2f, 0xd1, 0xd9, 0x43, 0x0f, 0x99,
|
0x9d, 0x7d, 0xf4, 0x88, 0x19, 0xba, 0xa4, 0x2e, 0x46, 0x83, 0x5a, 0xda, 0x9c, 0x80, 0xd0, 0x79,
|
||||||
0xa1, 0x4b, 0xea, 0x42, 0x34, 0xa8, 0xa5, 0xcd, 0x09, 0x08, 0x9d, 0xe5, 0x9a, 0xbf, 0xea, 0x00,
|
0xae, 0xf9, 0x8b, 0x0e, 0x60, 0xc6, 0x69, 0x6c, 0x50, 0xf6, 0x70, 0x8f, 0xb0, 0x00, 0x3b, 0x44,
|
||||||
0x66, 0x9c, 0xc6, 0x06, 0x65, 0x0f, 0xf7, 0x08, 0x0b, 0xb0, 0x43, 0xd4, 0x91, 0xae, 0xa9, 0x80,
|
0x1d, 0xe9, 0xba, 0x0a, 0xb8, 0xfc, 0x64, 0x08, 0xa0, 0x84, 0xf3, 0xea, 0xc3, 0xc1, 0xb7, 0x40,
|
||||||
0xcb, 0x8f, 0x87, 0x00, 0x4a, 0x38, 0x2f, 0x3f, 0x1c, 0x7c, 0x0b, 0x14, 0xdb, 0xd4, 0x0f, 0x03,
|
0xb1, 0x4d, 0xfd, 0x30, 0x90, 0x85, 0x29, 0x37, 0xe6, 0x14, 0xa5, 0xf8, 0xa1, 0x10, 0xa2, 0x18,
|
||||||
0x59, 0x98, 0x72, 0x63, 0x56, 0x51, 0x8a, 0x1f, 0x09, 0x21, 0x8a, 0x31, 0x78, 0x0b, 0x5c, 0xe9,
|
0x83, 0xb7, 0xc1, 0x6c, 0x9f, 0x50, 0xe6, 0xfa, 0x9e, 0x51, 0x90, 0xb4, 0x79, 0x45, 0x9b, 0x3d,
|
||||||
0x13, 0xca, 0x5c, 0xdf, 0x33, 0x0a, 0x92, 0x36, 0xa7, 0x68, 0x57, 0xf6, 0x63, 0x31, 0x1a, 0xe2,
|
0x88, 0xc5, 0x68, 0x88, 0xc3, 0x3b, 0xa0, 0x44, 0x55, 0xe0, 0x46, 0x51, 0x72, 0x17, 0x14, 0xb7,
|
||||||
0xf0, 0x36, 0x28, 0x51, 0x15, 0xb8, 0x51, 0x94, 0xdc, 0x79, 0xc5, 0x2d, 0x8d, 0x32, 0x38, 0x62,
|
0x34, 0xca, 0xe0, 0x88, 0x01, 0xef, 0x81, 0x0a, 0x0b, 0x9b, 0x23, 0x85, 0x19, 0xa9, 0xb0, 0xa8,
|
||||||
0xc0, 0xbb, 0xa0, 0xc2, 0xc2, 0xe6, 0x48, 0x61, 0x46, 0x2a, 0x2c, 0x28, 0x85, 0xca, 0x6e, 0x02,
|
0x14, 0x2a, 0x7b, 0x09, 0x84, 0xd2, 0x3c, 0x71, 0x2c, 0x71, 0x46, 0x63, 0x76, 0xfc, 0x58, 0x22,
|
||||||
0xa1, 0x34, 0x4f, 0x1c, 0x4b, 0x9c, 0xd1, 0xb8, 0x32, 0x7e, 0x2c, 0x91, 0x02, 0x24, 0x11, 0xf3,
|
0x05, 0x48, 0x22, 0xe6, 0xaf, 0x1a, 0xb8, 0x76, 0xb5, 0x8a, 0xbd, 0x0b, 0xca, 0x38, 0x70, 0xe5,
|
||||||
0x37, 0x0d, 0x5c, 0xbd, 0x5c, 0xc5, 0xde, 0x05, 0x65, 0x1c, 0xb8, 0xf2, 0xd8, 0xc3, 0x5a, 0xcd,
|
0xb1, 0x87, 0xb5, 0x9a, 0x13, 0x79, 0xdd, 0x7a, 0xba, 0x1b, 0x0b, 0x51, 0x82, 0x0b, 0xf2, 0x30,
|
||||||
0x8a, 0xbc, 0x6e, 0x3e, 0xd9, 0x89, 0x85, 0x28, 0xc1, 0x05, 0x79, 0x18, 0x8c, 0x68, 0xe9, 0x11,
|
0x18, 0xd1, 0xd2, 0x23, 0xf2, 0xd0, 0x25, 0x43, 0x09, 0x0e, 0x37, 0xc0, 0xdc, 0xf0, 0x47, 0x16,
|
||||||
0x79, 0xe8, 0x92, 0xa1, 0x04, 0x87, 0xeb, 0x60, 0x76, 0xf8, 0x23, 0x8b, 0x64, 0x14, 0xa4, 0xc2,
|
0xc9, 0x28, 0x48, 0x85, 0xeb, 0xd1, 0xa0, 0x36, 0x87, 0xd2, 0x00, 0x1a, 0xe7, 0x99, 0x3f, 0xeb,
|
||||||
0xb5, 0x68, 0x50, 0x9b, 0x45, 0x69, 0x00, 0x8d, 0xf3, 0xcc, 0x5f, 0x74, 0xb0, 0xb4, 0x4b, 0xba,
|
0x60, 0x79, 0x8f, 0x74, 0x0f, 0x5f, 0xcf, 0x5d, 0xf0, 0x6c, 0xec, 0x2e, 0xd8, 0x9c, 0x3e, 0xb1,
|
||||||
0x07, 0xaf, 0xe6, 0x2e, 0x78, 0x3a, 0x76, 0x17, 0x6c, 0x4c, 0x9f, 0xd8, 0xec, 0x28, 0x5f, 0xd9,
|
0xd9, 0x51, 0xbe, 0xb6, 0xfb, 0xe0, 0x7b, 0x1d, 0xdc, 0x9a, 0x12, 0x13, 0x3c, 0x06, 0x90, 0x5e,
|
||||||
0x7d, 0xf0, 0x83, 0x0e, 0x6e, 0x4e, 0x89, 0x09, 0x1e, 0x01, 0x48, 0xcf, 0x8d, 0x97, 0xca, 0xa3,
|
0x18, 0x2f, 0x95, 0x47, 0x7b, 0x6a, 0x2c, 0x17, 0xa7, 0xb2, 0x71, 0x23, 0x1a, 0xd4, 0x32, 0xa6,
|
||||||
0x3d, 0x35, 0x96, 0xf3, 0x53, 0xd9, 0xb8, 0x1e, 0x0d, 0x6a, 0x19, 0xd3, 0x8a, 0x32, 0x5c, 0xc0,
|
0x15, 0x65, 0xb8, 0x80, 0xdf, 0x68, 0x60, 0xc9, 0xcb, 0xba, 0xa9, 0x54, 0x9a, 0xeb, 0x53, 0x9d,
|
||||||
0x6f, 0x35, 0xb0, 0xe8, 0x65, 0xdd, 0x54, 0x2a, 0xcd, 0xf5, 0xa9, 0xce, 0x33, 0xef, 0xb8, 0xc6,
|
0x67, 0xde, 0x71, 0x8d, 0x9b, 0xd1, 0xa0, 0x96, 0x7d, 0xfd, 0xa1, 0x6c, 0x5f, 0xe2, 0x95, 0xb9,
|
||||||
0x8d, 0x68, 0x50, 0xcb, 0xbe, 0xfe, 0x50, 0xb6, 0x2f, 0xf1, 0xca, 0x5c, 0x4f, 0xa5, 0x47, 0x0c,
|
0x91, 0x4a, 0x8f, 0x18, 0x90, 0xff, 0xae, 0xaf, 0x3e, 0x1e, 0xeb, 0xab, 0x8d, 0xcb, 0xf6, 0x55,
|
||||||
0xc8, 0xff, 0xd7, 0x57, 0x9f, 0x8c, 0xf5, 0xd5, 0xfa, 0x45, 0xfb, 0x2a, 0x15, 0xe4, 0xc4, 0xb6,
|
0x2a, 0xc8, 0x89, 0x6d, 0xf5, 0xe9, 0xb9, 0xb6, 0xba, 0x77, 0x99, 0xb6, 0x4a, 0x1b, 0x9e, 0xde,
|
||||||
0xfa, 0xec, 0x4c, 0x5b, 0xdd, 0xbd, 0x48, 0x5b, 0xa5, 0x0d, 0x4f, 0xef, 0xaa, 0x47, 0x60, 0x79,
|
0x55, 0x8f, 0xc1, 0xca, 0xe4, 0x80, 0xae, 0x7c, 0x39, 0x9b, 0x3f, 0xea, 0x60, 0xf1, 0xcd, 0x33,
|
||||||
0x72, 0x40, 0x97, 0xbe, 0x9c, 0xcd, 0x9f, 0x74, 0xb0, 0xf0, 0xfa, 0x99, 0xbf, 0xcc, 0x58, 0xff,
|
0x7f, 0x95, 0xb1, 0xfe, 0xad, 0x00, 0x96, 0xdf, 0x8c, 0xf4, 0xa4, 0x45, 0x27, 0x64, 0x84, 0xaa,
|
||||||
0x5e, 0x00, 0x4b, 0xaf, 0x47, 0x7a, 0xd2, 0xa2, 0x13, 0x32, 0x42, 0xd5, 0x33, 0x3e, 0x2a, 0xce,
|
0x67, 0x7c, 0x54, 0x9c, 0x7d, 0x46, 0x28, 0x92, 0x08, 0x34, 0xc1, 0x4c, 0x3b, 0x7e, 0xdd, 0xe2,
|
||||||
0x1e, 0x23, 0x14, 0x49, 0x04, 0x9a, 0x60, 0xa6, 0x1d, 0xbf, 0x6e, 0xf1, 0xfb, 0x03, 0x44, 0x82,
|
0xf7, 0x07, 0x88, 0x04, 0xab, 0xa7, 0x4d, 0x21, 0xb0, 0x05, 0x8a, 0x44, 0xec, 0xad, 0x46, 0x71,
|
||||||
0xd5, 0xd3, 0xa6, 0x10, 0xd8, 0x02, 0x45, 0x22, 0xf6, 0x56, 0xa3, 0xb8, 0x92, 0x5f, 0xad, 0xd4,
|
0x35, 0xbf, 0x56, 0xa9, 0x7f, 0xf0, 0x6f, 0x3a, 0xc3, 0x92, 0x9b, 0xef, 0x8e, 0xc7, 0xe9, 0x49,
|
||||||
0x3f, 0xfc, 0x2f, 0x9d, 0x61, 0xc9, 0xcd, 0x77, 0xdb, 0xe3, 0xf4, 0x38, 0x59, 0x27, 0xa4, 0x0c,
|
0xb2, 0x4e, 0x48, 0x19, 0x8a, 0x8d, 0xc3, 0xff, 0x83, 0x7c, 0xe8, 0xb6, 0xd4, 0x6b, 0x5f, 0x51,
|
||||||
0xc5, 0xc6, 0xe1, 0x9b, 0x20, 0x1f, 0xba, 0x2d, 0xf5, 0xda, 0x57, 0x14, 0x25, 0xbf, 0xb7, 0xb3,
|
0x94, 0xfc, 0xfe, 0xee, 0x36, 0x12, 0xf2, 0x15, 0xac, 0x96, 0x67, 0x69, 0x02, 0x2e, 0x80, 0xfc,
|
||||||
0x85, 0x84, 0x7c, 0x19, 0xab, 0xe5, 0x59, 0x9a, 0x80, 0xf3, 0x20, 0x7f, 0x48, 0x8e, 0xe3, 0x81,
|
0x11, 0x39, 0x89, 0x07, 0x0a, 0x89, 0x4f, 0xf8, 0x10, 0x14, 0xfb, 0x62, 0xaf, 0x56, 0xf9, 0x7d,
|
||||||
0x42, 0xe2, 0x13, 0x3e, 0x00, 0xc5, 0xbe, 0xd8, 0xab, 0x55, 0x7e, 0xdf, 0x99, 0x1a, 0x64, 0xb2,
|
0x67, 0x6a, 0x90, 0xc9, 0x1a, 0x8e, 0x62, 0xad, 0x07, 0xfa, 0xa6, 0x66, 0xfe, 0xae, 0x81, 0x9b,
|
||||||
0x86, 0xa3, 0x58, 0xeb, 0xbe, 0xbe, 0xa1, 0x99, 0x7f, 0x68, 0xe0, 0xc6, 0xc4, 0xf6, 0x13, 0xeb,
|
0x13, 0xdb, 0x4f, 0xac, 0x3b, 0xb8, 0xdb, 0xf5, 0x8f, 0x49, 0x4b, 0xba, 0x2d, 0x25, 0xeb, 0xce,
|
||||||
0x0e, 0xee, 0x76, 0xfd, 0x23, 0xd2, 0x92, 0x6e, 0x4b, 0xc9, 0xba, 0xb3, 0x19, 0x8b, 0xd1, 0x10,
|
0x56, 0x2c, 0x46, 0x43, 0x1c, 0xbe, 0x0d, 0x66, 0x28, 0xc1, 0xcc, 0xf7, 0xd4, 0x8a, 0x35, 0xea,
|
||||||
0x87, 0x6f, 0x83, 0x19, 0x4a, 0x30, 0xf3, 0x3d, 0xb5, 0x62, 0x8d, 0x3a, 0x17, 0x49, 0x29, 0x52,
|
0x5c, 0x24, 0xa5, 0x48, 0xa1, 0x70, 0x0b, 0xcc, 0x13, 0xe1, 0x5e, 0xc6, 0xb5, 0x43, 0xa9, 0x3f,
|
||||||
0x28, 0xdc, 0x04, 0x73, 0x44, 0xb8, 0x97, 0x71, 0x6d, 0x53, 0xea, 0x0f, 0x2b, 0xb5, 0xa4, 0x14,
|
0xac, 0xd4, 0xb2, 0x52, 0x98, 0xdf, 0x19, 0x87, 0xd1, 0x79, 0xbe, 0x70, 0xd5, 0x22, 0x9e, 0x4b,
|
||||||
0xe6, 0xb6, 0xc7, 0x61, 0x74, 0x96, 0x2f, 0x5c, 0xb5, 0x88, 0xe7, 0x92, 0x96, 0xdc, 0xc1, 0x4a,
|
0x5a, 0x72, 0x07, 0x2b, 0x25, 0xae, 0xb6, 0xa5, 0x14, 0x29, 0xd4, 0xfc, 0x5b, 0x07, 0xc6, 0xa4,
|
||||||
0x89, 0xab, 0x2d, 0x29, 0x45, 0x0a, 0x35, 0xff, 0xd1, 0x81, 0x31, 0xe9, 0x6a, 0x83, 0x07, 0xc9,
|
0xab, 0x0d, 0x1e, 0x26, 0xbb, 0x88, 0x04, 0xe5, 0x3a, 0x54, 0xa9, 0xdf, 0xbe, 0xd4, 0x80, 0x08,
|
||||||
0x2e, 0x22, 0x41, 0xb9, 0x0e, 0x55, 0xea, 0xb7, 0x2e, 0x34, 0x20, 0x42, 0xa3, 0xb1, 0xa8, 0xdc,
|
0x8d, 0xc6, 0x92, 0x72, 0x3b, 0x97, 0x96, 0xa6, 0x56, 0x17, 0xf9, 0x0b, 0x29, 0x58, 0xf0, 0xc6,
|
||||||
0xce, 0xa6, 0xa5, 0xa9, 0xd5, 0x45, 0xfe, 0x42, 0x0a, 0xe6, 0xbd, 0xf1, 0x9d, 0x39, 0x5e, 0xaa,
|
0x77, 0xe6, 0x78, 0xa9, 0xaa, 0xd4, 0xef, 0x5c, 0x76, 0x1c, 0xa4, 0x37, 0x43, 0x79, 0x5b, 0x38,
|
||||||
0x2a, 0xf5, 0xdb, 0x17, 0x1d, 0x07, 0xe9, 0xcd, 0x50, 0xde, 0xe6, 0xcf, 0x00, 0x0c, 0x9d, 0xb3,
|
0x07, 0x30, 0x74, 0xc1, 0x3e, 0xac, 0x03, 0xe0, 0x7a, 0x8e, 0xdf, 0x0b, 0xba, 0x84, 0x13, 0x99,
|
||||||
0x0f, 0xeb, 0x00, 0xb8, 0x9e, 0xe3, 0xf7, 0x82, 0x2e, 0xe1, 0x44, 0xa6, 0xb7, 0x94, 0xdc, 0x83,
|
0xde, 0x52, 0x72, 0x0f, 0xee, 0x8e, 0x10, 0x94, 0x62, 0x65, 0xd5, 0xa5, 0x70, 0xb5, 0xba, 0x34,
|
||||||
0x3b, 0x23, 0x04, 0xa5, 0x58, 0x59, 0x75, 0x29, 0x5c, 0xae, 0x2e, 0x8d, 0xd5, 0x93, 0xd3, 0x6a,
|
0xd6, 0x4e, 0xcf, 0xaa, 0xb9, 0x17, 0x67, 0xd5, 0xdc, 0xcb, 0xb3, 0x6a, 0xee, 0x79, 0x54, 0xd5,
|
||||||
0xee, 0xf9, 0x69, 0x35, 0xf7, 0xe2, 0xb4, 0x9a, 0x7b, 0x16, 0x55, 0xb5, 0x93, 0xa8, 0xaa, 0x3d,
|
0x4e, 0xa3, 0xaa, 0xf6, 0x22, 0xaa, 0x6a, 0x2f, 0xa3, 0xaa, 0xf6, 0x67, 0x54, 0xd5, 0xbe, 0xfd,
|
||||||
0x8f, 0xaa, 0xda, 0x8b, 0xa8, 0xaa, 0xfd, 0x15, 0x55, 0xb5, 0xef, 0xfe, 0xae, 0xe6, 0x9e, 0xea,
|
0xab, 0x9a, 0x7b, 0xa6, 0xf7, 0xd7, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x85, 0x45, 0x74,
|
||||||
0xfd, 0xb5, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xd6, 0x0e, 0xab, 0x82, 0x7c, 0x0f, 0x00, 0x00,
|
0x47, 0x0f, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ package k8s.io.api.authorization.v1;
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1";
|
option go_package = "v1";
|
||||||
|
|
|
@ -199,21 +199,13 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ResourceAttributes != nil {
|
if in.ResourceAttributes != nil {
|
||||||
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
||||||
if *in == nil {
|
*out = new(ResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(ResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.NonResourceAttributes != nil {
|
if in.NonResourceAttributes != nil {
|
||||||
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
||||||
if *in == nil {
|
*out = new(NonResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(NonResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -305,21 +297,13 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ResourceAttributes != nil {
|
if in.ResourceAttributes != nil {
|
||||||
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
||||||
if *in == nil {
|
*out = new(ResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(ResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.NonResourceAttributes != nil {
|
if in.NonResourceAttributes != nil {
|
||||||
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
||||||
if *in == nil {
|
*out = new(NonResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(NonResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Groups != nil {
|
if in.Groups != nil {
|
||||||
in, out := &in.Groups, &out.Groups
|
in, out := &in.Groups, &out.Groups
|
||||||
|
@ -330,12 +314,15 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) {
|
||||||
in, out := &in.Extra, &out.Extra
|
in, out := &in.Extra, &out.Extra
|
||||||
*out = make(map[string]ExtraValue, len(*in))
|
*out = make(map[string]ExtraValue, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
|
var outVal []string
|
||||||
if val == nil {
|
if val == nil {
|
||||||
(*out)[key] = nil
|
(*out)[key] = nil
|
||||||
} else {
|
} else {
|
||||||
(*out)[key] = make([]string, len(val))
|
in, out := &val, &outVal
|
||||||
copy((*out)[key], val)
|
*out = make(ExtraValue, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
(*out)[key] = outVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
@ -15,7 +15,9 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
// +groupName=authorization.k8s.io
|
// +groupName=authorization.k8s.io
|
||||||
|
|
||||||
package v1beta1 // import "k8s.io/api/authorization/v1beta1"
|
package v1beta1 // import "k8s.io/api/authorization/v1beta1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/authorization/v1beta1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1beta1 is a generated protocol buffer package.
|
Package v1beta1 is a generated protocol buffer package.
|
||||||
|
@ -795,24 +794,6 @@ func (m *SubjectRulesReviewStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -2888,51 +2869,14 @@ func (m *SubjectAccessReviewSpec) Unmarshal(dAtA []byte) error {
|
||||||
if postIndex > l {
|
if postIndex > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
var keykey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
keykey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var stringLenmapkey uint64
|
|
||||||
for shift := uint(0); ; shift += 7 {
|
|
||||||
if shift >= 64 {
|
|
||||||
return ErrIntOverflowGenerated
|
|
||||||
}
|
|
||||||
if iNdEx >= l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
b := dAtA[iNdEx]
|
|
||||||
iNdEx++
|
|
||||||
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
|
||||||
if b < 0x80 {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
intStringLenmapkey := int(stringLenmapkey)
|
|
||||||
if intStringLenmapkey < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
|
||||||
if postStringIndexmapkey > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapkey := string(dAtA[iNdEx:postStringIndexmapkey])
|
|
||||||
iNdEx = postStringIndexmapkey
|
|
||||||
if m.Extra == nil {
|
if m.Extra == nil {
|
||||||
m.Extra = make(map[string]ExtraValue)
|
m.Extra = make(map[string]ExtraValue)
|
||||||
}
|
}
|
||||||
if iNdEx < postIndex {
|
var mapkey string
|
||||||
var valuekey uint64
|
mapvalue := &ExtraValue{}
|
||||||
|
for iNdEx < postIndex {
|
||||||
|
entryPreIndex := iNdEx
|
||||||
|
var wire uint64
|
||||||
for shift := uint(0); ; shift += 7 {
|
for shift := uint(0); ; shift += 7 {
|
||||||
if shift >= 64 {
|
if shift >= 64 {
|
||||||
return ErrIntOverflowGenerated
|
return ErrIntOverflowGenerated
|
||||||
|
@ -2942,46 +2886,85 @@ func (m *SubjectAccessReviewSpec) Unmarshal(dAtA []byte) error {
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
b := dAtA[iNdEx]
|
||||||
iNdEx++
|
iNdEx++
|
||||||
valuekey |= (uint64(b) & 0x7F) << shift
|
wire |= (uint64(b) & 0x7F) << shift
|
||||||
if b < 0x80 {
|
if b < 0x80 {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var mapmsglen int
|
fieldNum := int32(wire >> 3)
|
||||||
for shift := uint(0); ; shift += 7 {
|
if fieldNum == 1 {
|
||||||
if shift >= 64 {
|
var stringLenmapkey uint64
|
||||||
return ErrIntOverflowGenerated
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
stringLenmapkey |= (uint64(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if iNdEx >= l {
|
intStringLenmapkey := int(stringLenmapkey)
|
||||||
|
if intStringLenmapkey < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postStringIndexmapkey := iNdEx + intStringLenmapkey
|
||||||
|
if postStringIndexmapkey > l {
|
||||||
return io.ErrUnexpectedEOF
|
return io.ErrUnexpectedEOF
|
||||||
}
|
}
|
||||||
b := dAtA[iNdEx]
|
mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
|
||||||
iNdEx++
|
iNdEx = postStringIndexmapkey
|
||||||
mapmsglen |= (int(b) & 0x7F) << shift
|
} else if fieldNum == 2 {
|
||||||
if b < 0x80 {
|
var mapmsglen int
|
||||||
break
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
mapmsglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postmsgIndex := iNdEx + mapmsglen
|
||||||
|
if mapmsglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if postmsgIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
mapvalue = &ExtraValue{}
|
||||||
|
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postmsgIndex
|
||||||
|
} else {
|
||||||
|
iNdEx = entryPreIndex
|
||||||
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if skippy < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
if (iNdEx + skippy) > postIndex {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
iNdEx += skippy
|
||||||
}
|
}
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
postmsgIndex := iNdEx + mapmsglen
|
|
||||||
if mapmsglen < 0 {
|
|
||||||
return ErrInvalidLengthGenerated
|
|
||||||
}
|
|
||||||
if postmsgIndex > l {
|
|
||||||
return io.ErrUnexpectedEOF
|
|
||||||
}
|
|
||||||
mapvalue := &ExtraValue{}
|
|
||||||
if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
iNdEx = postmsgIndex
|
|
||||||
m.Extra[mapkey] = *mapvalue
|
|
||||||
} else {
|
|
||||||
var mapvalue ExtraValue
|
|
||||||
m.Extra[mapkey] = mapvalue
|
|
||||||
}
|
}
|
||||||
|
m.Extra[mapkey] = *mapvalue
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
case 6:
|
case 6:
|
||||||
if wireType != 2 {
|
if wireType != 2 {
|
||||||
|
@ -3452,78 +3435,77 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 1154 bytes of a gzipped FileDescriptorProto
|
// 1137 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0x4d, 0x6f, 0x1b, 0xc5,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcb, 0x6f, 0x1b, 0x45,
|
||||||
0x1b, 0xf7, 0xfa, 0x25, 0xb1, 0xc7, 0xcd, 0x3f, 0xe9, 0x44, 0x69, 0xb6, 0xf9, 0x0b, 0xdb, 0x32,
|
0x18, 0xf7, 0xfa, 0x91, 0xd8, 0xe3, 0x86, 0xa4, 0x13, 0xa5, 0xd9, 0x06, 0x61, 0x5b, 0x46, 0x42,
|
||||||
0x12, 0x0a, 0xa2, 0xdd, 0x25, 0xa1, 0x90, 0x12, 0xe8, 0x21, 0x56, 0x22, 0x14, 0xa9, 0x2d, 0xd5,
|
0x41, 0xb4, 0xbb, 0x24, 0x2a, 0xa4, 0x04, 0x7a, 0x88, 0x95, 0x08, 0x45, 0x6a, 0x4b, 0x35, 0x51,
|
||||||
0x44, 0xc9, 0x81, 0x4a, 0xc0, 0x78, 0x3d, 0xb1, 0x17, 0xdb, 0xbb, 0xcb, 0xcc, 0xac, 0x43, 0x10,
|
0x72, 0xa0, 0x12, 0x30, 0xbb, 0x9e, 0xd8, 0x8b, 0xed, 0xdd, 0x65, 0x66, 0xd6, 0x21, 0x88, 0x43,
|
||||||
0x87, 0x1e, 0x39, 0x72, 0xe4, 0xc8, 0x89, 0xef, 0xc0, 0x05, 0x09, 0x4e, 0x39, 0xf6, 0x18, 0x24,
|
0x8f, 0x1c, 0x39, 0x72, 0xe4, 0xc4, 0xff, 0xc0, 0x05, 0x09, 0x4e, 0x39, 0xf6, 0x18, 0x24, 0x64,
|
||||||
0x64, 0x91, 0xe5, 0x43, 0x70, 0x45, 0x33, 0x3b, 0xf6, 0xae, 0xe3, 0x75, 0x1c, 0xe7, 0x40, 0x2f,
|
0x91, 0xe5, 0x8f, 0xe0, 0x8a, 0x66, 0x76, 0xec, 0x5d, 0x27, 0x9b, 0x38, 0xce, 0x81, 0x5e, 0x7a,
|
||||||
0xbd, 0xed, 0x3c, 0xbf, 0xe7, 0x6d, 0x9e, 0x97, 0xd9, 0x1f, 0xd8, 0x6f, 0x3f, 0x64, 0x86, 0xed,
|
0xdb, 0xf9, 0x7e, 0xdf, 0xfb, 0xb5, 0x1f, 0xd8, 0xed, 0x3c, 0x64, 0x86, 0xe3, 0x99, 0x9d, 0xc0,
|
||||||
0x9a, 0x6d, 0xbf, 0x4e, 0xa8, 0x43, 0x38, 0x61, 0x66, 0x8f, 0x38, 0x0d, 0x97, 0x9a, 0x0a, 0xc0,
|
0x22, 0xd4, 0x25, 0x9c, 0x30, 0xb3, 0x4f, 0xdc, 0xa6, 0x47, 0x4d, 0x05, 0x60, 0xdf, 0x31, 0x71,
|
||||||
0x9e, 0x6d, 0x62, 0x9f, 0xb7, 0x5c, 0x6a, 0x7f, 0x8b, 0xb9, 0xed, 0x3a, 0x66, 0x6f, 0xa3, 0x4e,
|
0xc0, 0xdb, 0x1e, 0x75, 0xbe, 0xc3, 0xdc, 0xf1, 0x5c, 0xb3, 0xbf, 0x66, 0x11, 0x8e, 0xd7, 0xcc,
|
||||||
0x38, 0xde, 0x30, 0x9b, 0xc4, 0x21, 0x14, 0x73, 0xd2, 0x30, 0x3c, 0xea, 0x72, 0x17, 0x56, 0x42,
|
0x16, 0x71, 0x09, 0xc5, 0x9c, 0x34, 0x0d, 0x9f, 0x7a, 0xdc, 0x83, 0xb5, 0x48, 0xc2, 0xc0, 0xbe,
|
||||||
0x0b, 0x03, 0x7b, 0xb6, 0x31, 0x62, 0x61, 0x28, 0x8b, 0xb5, 0xfb, 0x4d, 0x9b, 0xb7, 0xfc, 0xba,
|
0x63, 0x8c, 0x49, 0x18, 0x4a, 0x62, 0xe5, 0x7e, 0xcb, 0xe1, 0xed, 0xc0, 0x32, 0x6c, 0xaf, 0x67,
|
||||||
0x61, 0xb9, 0x5d, 0xb3, 0xe9, 0x36, 0x5d, 0x53, 0x1a, 0xd6, 0xfd, 0x63, 0x79, 0x92, 0x07, 0xf9,
|
0xb6, 0xbc, 0x96, 0x67, 0x4a, 0x41, 0x2b, 0x38, 0x94, 0x2f, 0xf9, 0x90, 0x5f, 0x91, 0xc2, 0x95,
|
||||||
0x15, 0x3a, 0x5c, 0x7b, 0x10, 0xa5, 0xd0, 0xc5, 0x56, 0xcb, 0x76, 0x08, 0x3d, 0x35, 0xbd, 0x76,
|
0x07, 0xb1, 0x0b, 0x3d, 0x6c, 0xb7, 0x1d, 0x97, 0xd0, 0x63, 0xd3, 0xef, 0xb4, 0x04, 0x81, 0x99,
|
||||||
0x53, 0x08, 0x98, 0xd9, 0x25, 0x1c, 0x9b, 0xbd, 0xb1, 0x34, 0xd6, 0xcc, 0x49, 0x56, 0xd4, 0x77,
|
0x3d, 0xc2, 0xb1, 0xd9, 0xbf, 0xe0, 0xc6, 0x8a, 0x79, 0x99, 0x14, 0x0d, 0x5c, 0xee, 0xf4, 0xc8,
|
||||||
0xb8, 0xdd, 0x25, 0x63, 0x06, 0x1f, 0x4c, 0x33, 0x60, 0x56, 0x8b, 0x74, 0xf1, 0x98, 0xdd, 0x7b,
|
0x05, 0x81, 0x0f, 0x27, 0x09, 0x30, 0xbb, 0x4d, 0x7a, 0xf8, 0xbc, 0x5c, 0x7d, 0x03, 0x80, 0x9d,
|
||||||
0x93, 0xec, 0x7c, 0x6e, 0x77, 0x4c, 0xdb, 0xe1, 0x8c, 0xd3, 0xcb, 0x46, 0xd5, 0x2d, 0x00, 0xf6,
|
0x6f, 0x39, 0xc5, 0x07, 0xb8, 0x1b, 0x10, 0x58, 0x05, 0x05, 0x87, 0x93, 0x1e, 0xd3, 0xb5, 0x5a,
|
||||||
0xbe, 0xe1, 0x14, 0x1f, 0xe1, 0x8e, 0x4f, 0x60, 0x19, 0xe4, 0x6c, 0x4e, 0xba, 0x4c, 0xd7, 0x2a,
|
0x6e, 0xb5, 0xd4, 0x28, 0x85, 0x83, 0x6a, 0x61, 0x57, 0x10, 0x50, 0x44, 0xdf, 0x2c, 0xfe, 0xf4,
|
||||||
0x99, 0xf5, 0x42, 0xad, 0x10, 0xf4, 0xcb, 0xb9, 0x7d, 0x21, 0x40, 0xa1, 0x7c, 0x3b, 0xff, 0xe3,
|
0x73, 0x35, 0xf3, 0xe2, 0xaf, 0x5a, 0xa6, 0xfe, 0x5b, 0x16, 0xe8, 0x8f, 0x3d, 0x1b, 0x77, 0xf7,
|
||||||
0x4f, 0xe5, 0xd4, 0x8b, 0x3f, 0x2b, 0xa9, 0xea, 0xaf, 0x69, 0xa0, 0x3f, 0x76, 0x2d, 0xdc, 0x39,
|
0x02, 0xeb, 0x6b, 0x62, 0xf3, 0x2d, 0xdb, 0x26, 0x8c, 0x21, 0xd2, 0x77, 0xc8, 0x11, 0xfc, 0x0a,
|
||||||
0xf0, 0xeb, 0x5f, 0x11, 0x8b, 0xef, 0x58, 0x16, 0x61, 0x0c, 0x91, 0x9e, 0x4d, 0x4e, 0xe0, 0x97,
|
0x14, 0x45, 0x64, 0x4d, 0xcc, 0xb1, 0xae, 0xd5, 0xb4, 0xd5, 0xf2, 0xfa, 0xfb, 0x46, 0x9c, 0xd8,
|
||||||
0x20, 0x2f, 0xca, 0xd1, 0xc0, 0x1c, 0xeb, 0x5a, 0x45, 0x5b, 0x2f, 0x6e, 0xbe, 0x6b, 0x44, 0xdd,
|
0x91, 0x83, 0x86, 0xdf, 0x69, 0x09, 0x02, 0x33, 0x04, 0xb7, 0xd1, 0x5f, 0x33, 0x3e, 0x93, 0xba,
|
||||||
0x18, 0x66, 0x67, 0x78, 0xed, 0xa6, 0x10, 0x30, 0x43, 0x68, 0x1b, 0xbd, 0x0d, 0xe3, 0x53, 0xe9,
|
0x9e, 0x10, 0x8e, 0x1b, 0xf0, 0x64, 0x50, 0xcd, 0x84, 0x83, 0x2a, 0x88, 0x69, 0x68, 0xa4, 0x15,
|
||||||
0xeb, 0x09, 0xe1, 0xb8, 0x06, 0xcf, 0xfa, 0xe5, 0x54, 0xd0, 0x2f, 0x83, 0x48, 0x86, 0x86, 0x5e,
|
0x3e, 0x07, 0x79, 0xe6, 0x13, 0x5b, 0xcf, 0x4a, 0xed, 0x1f, 0x19, 0x93, 0xca, 0x66, 0xa4, 0xb8,
|
||||||
0xe1, 0x73, 0x90, 0x65, 0x1e, 0xb1, 0xf4, 0xb4, 0xf4, 0xfe, 0xa1, 0x31, 0xad, 0xd7, 0x46, 0x42,
|
0xb9, 0xe7, 0x13, 0xbb, 0x71, 0x4b, 0x99, 0xc9, 0x8b, 0x17, 0x92, 0x4a, 0xa1, 0x0d, 0x66, 0x18,
|
||||||
0x9a, 0x07, 0x1e, 0xb1, 0x6a, 0xb7, 0x54, 0x98, 0xac, 0x38, 0x21, 0xe9, 0x14, 0x5a, 0x60, 0x8e,
|
0xc7, 0x3c, 0x60, 0x7a, 0x4e, 0xaa, 0xff, 0xf8, 0x66, 0xea, 0xa5, 0x8a, 0xc6, 0x1b, 0xca, 0xc0,
|
||||||
0x71, 0xcc, 0x7d, 0xa6, 0x67, 0xa4, 0xfb, 0x8f, 0x6e, 0xe6, 0x5e, 0xba, 0xa8, 0xfd, 0x4f, 0x05,
|
0x4c, 0xf4, 0x46, 0x4a, 0x75, 0xfd, 0x39, 0x58, 0x7a, 0xea, 0xb9, 0x88, 0x30, 0x2f, 0xa0, 0x36,
|
||||||
0x98, 0x0b, 0xcf, 0x48, 0xb9, 0xae, 0x3e, 0x07, 0x2b, 0x4f, 0x5d, 0x07, 0x11, 0xe6, 0xfa, 0xd4,
|
0xd9, 0xe2, 0x9c, 0x3a, 0x56, 0xc0, 0x09, 0x83, 0x35, 0x90, 0xf7, 0x31, 0x6f, 0xcb, 0xc4, 0x95,
|
||||||
0x22, 0x3b, 0x9c, 0x53, 0xbb, 0xee, 0x73, 0xc2, 0x60, 0x05, 0x64, 0x3d, 0xcc, 0x5b, 0xb2, 0x70,
|
0x62, 0xff, 0x9e, 0x61, 0xde, 0x46, 0x12, 0x11, 0x1c, 0x7d, 0x42, 0x2d, 0x19, 0x7c, 0x82, 0xe3,
|
||||||
0x85, 0x28, 0xbf, 0x67, 0x98, 0xb7, 0x90, 0x44, 0x84, 0x46, 0x8f, 0xd0, 0xba, 0xbc, 0x7c, 0x4c,
|
0x80, 0x50, 0x0b, 0x49, 0xa4, 0xfe, 0x0d, 0x98, 0x4f, 0x28, 0x47, 0x41, 0x57, 0xd6, 0x56, 0x40,
|
||||||
0xe3, 0x88, 0xd0, 0x3a, 0x92, 0x48, 0xf5, 0x6b, 0xb0, 0x18, 0x73, 0x8e, 0xfc, 0x8e, 0xec, 0xad,
|
0x63, 0xb5, 0x15, 0x12, 0x0c, 0x45, 0x74, 0xf8, 0x08, 0xcc, 0xbb, 0xb1, 0xcc, 0x3e, 0x7a, 0xcc,
|
||||||
0x80, 0x46, 0x7a, 0x2b, 0x2c, 0x18, 0x0a, 0xe5, 0xf0, 0x11, 0x58, 0x74, 0x22, 0x9b, 0x43, 0xf4,
|
0xf4, 0xac, 0x64, 0x5d, 0x0c, 0x07, 0xd5, 0xa4, 0x3a, 0x01, 0xa1, 0xf3, 0xbc, 0xa2, 0x21, 0x60,
|
||||||
0x98, 0xe9, 0x69, 0xa9, 0xba, 0x1c, 0xf4, 0xcb, 0x71, 0x77, 0x02, 0x42, 0x97, 0x75, 0xc5, 0x40,
|
0x4a, 0x34, 0x26, 0x28, 0xb9, 0xb8, 0x47, 0x98, 0x8f, 0x6d, 0xa2, 0x42, 0xba, 0xad, 0x1c, 0x2e,
|
||||||
0xc0, 0x84, 0xdb, 0x98, 0xa0, 0xe0, 0xe0, 0x2e, 0x61, 0x1e, 0xb6, 0x88, 0xba, 0xd2, 0x6d, 0x95,
|
0x3d, 0x1d, 0x02, 0x28, 0xe6, 0x99, 0x1c, 0x1c, 0x7c, 0x1b, 0x14, 0x5a, 0xd4, 0x0b, 0x7c, 0x59,
|
||||||
0x70, 0xe1, 0xe9, 0x00, 0x40, 0x91, 0xce, 0xf4, 0xcb, 0xc1, 0x37, 0x41, 0xae, 0x49, 0x5d, 0xdf,
|
0x9d, 0x52, 0x63, 0x4e, 0xb1, 0x14, 0x3e, 0x15, 0x44, 0x14, 0x61, 0xf0, 0x5d, 0x30, 0xdb, 0x27,
|
||||||
0x93, 0xdd, 0x29, 0xd4, 0x16, 0x94, 0x4a, 0xee, 0x13, 0x21, 0x44, 0x21, 0x06, 0xdf, 0x06, 0xf3,
|
0x94, 0x39, 0x9e, 0xab, 0xe7, 0x25, 0xdb, 0xbc, 0x62, 0x9b, 0x3d, 0x88, 0xc8, 0x68, 0x88, 0xc3,
|
||||||
0x3d, 0x42, 0x99, 0xed, 0x3a, 0x7a, 0x56, 0xaa, 0x2d, 0x2a, 0xb5, 0xf9, 0xa3, 0x50, 0x8c, 0x06,
|
0x7b, 0xa0, 0x48, 0x95, 0xe3, 0x7a, 0x41, 0xf2, 0x2e, 0x28, 0xde, 0xe2, 0x28, 0x83, 0x23, 0x0e,
|
||||||
0x38, 0xbc, 0x07, 0xf2, 0x54, 0x25, 0xae, 0xe7, 0xa4, 0xee, 0x92, 0xd2, 0xcd, 0x0f, 0x2b, 0x38,
|
0xf8, 0x01, 0x28, 0xb3, 0xc0, 0x1a, 0x09, 0xcc, 0x48, 0x81, 0x45, 0x25, 0x50, 0xde, 0x8b, 0x21,
|
||||||
0xd4, 0x80, 0xef, 0x83, 0x22, 0xf3, 0xeb, 0x43, 0x83, 0x39, 0x69, 0xb0, 0xac, 0x0c, 0x8a, 0x07,
|
0x94, 0xe4, 0x13, 0x61, 0x89, 0x18, 0xf5, 0xd9, 0xf1, 0xb0, 0x44, 0x0a, 0x90, 0x44, 0xea, 0x7f,
|
||||||
0x11, 0x84, 0xe2, 0x7a, 0xe2, 0x5a, 0xe2, 0x8e, 0xfa, 0xfc, 0xe8, 0xb5, 0x44, 0x09, 0x90, 0x44,
|
0x68, 0xe0, 0xd6, 0x74, 0x15, 0x7b, 0x0f, 0x94, 0xb0, 0xef, 0xc8, 0xb0, 0x87, 0xb5, 0x9a, 0x13,
|
||||||
0xaa, 0xbf, 0x6b, 0xe0, 0xd6, 0x6c, 0x1d, 0x7b, 0x07, 0x14, 0xb0, 0x67, 0xcb, 0x6b, 0x0f, 0x7a,
|
0x79, 0xdd, 0x7a, 0xb6, 0x1b, 0x11, 0x51, 0x8c, 0x0b, 0xe6, 0xa1, 0x33, 0xa2, 0xaf, 0x47, 0xcc,
|
||||||
0xb5, 0x20, 0xea, 0xba, 0xf3, 0x6c, 0x3f, 0x14, 0xa2, 0x08, 0x17, 0xca, 0x83, 0x64, 0xc4, 0x5c,
|
0x43, 0x93, 0x0c, 0xc5, 0x38, 0xdc, 0x00, 0x73, 0xc3, 0x87, 0x2c, 0x92, 0x9e, 0x97, 0x02, 0xb7,
|
||||||
0x0f, 0x95, 0x07, 0x21, 0x19, 0x8a, 0x70, 0xb8, 0x05, 0x16, 0x06, 0x07, 0xd9, 0x24, 0x3d, 0x2b,
|
0xc3, 0x41, 0x75, 0x0e, 0x25, 0x01, 0x34, 0xce, 0x57, 0xff, 0x3d, 0x0b, 0x96, 0xf7, 0x48, 0xf7,
|
||||||
0x0d, 0x6e, 0x07, 0xfd, 0xf2, 0x02, 0x8a, 0x03, 0x68, 0x54, 0xaf, 0xfa, 0x5b, 0x1a, 0xac, 0x1e,
|
0xf0, 0xd5, 0x6c, 0x85, 0x2f, 0xc7, 0xb6, 0xc2, 0xa3, 0x6b, 0x8c, 0x6d, 0xba, 0xab, 0xaf, 0x76,
|
||||||
0x90, 0xce, 0xf1, 0xab, 0x79, 0x15, 0xbe, 0x18, 0x79, 0x15, 0x1e, 0x5d, 0x63, 0x6d, 0x93, 0x53,
|
0x33, 0xfc, 0x92, 0x05, 0x6f, 0x5e, 0xe1, 0x18, 0xfc, 0x1e, 0x40, 0x7a, 0x61, 0xd0, 0x54, 0x46,
|
||||||
0x7d, 0xb5, 0x2f, 0xc3, 0xcf, 0x69, 0xf0, 0xff, 0x2b, 0x12, 0x83, 0xdf, 0x01, 0x48, 0xc7, 0x16,
|
0x1f, 0x4c, 0x76, 0xe8, 0xe2, 0x90, 0x36, 0xee, 0x84, 0x83, 0x6a, 0xca, 0xf0, 0xa2, 0x14, 0x3b,
|
||||||
0x4d, 0x55, 0xf4, 0xc1, 0xf4, 0x84, 0xc6, 0x97, 0xb4, 0x76, 0x27, 0xe8, 0x97, 0x13, 0x96, 0x17,
|
0xf0, 0x07, 0x0d, 0x2c, 0xb9, 0x69, 0x8b, 0x4b, 0x65, 0x7d, 0x63, 0xb2, 0x07, 0xa9, 0x7b, 0xaf,
|
||||||
0x25, 0xc4, 0x81, 0xdf, 0x6b, 0x60, 0xc5, 0x49, 0x7a, 0xb8, 0x54, 0xd5, 0xb7, 0xa6, 0x67, 0x90,
|
0x71, 0x37, 0x1c, 0x54, 0xd3, 0x57, 0x22, 0x4a, 0x37, 0x28, 0x56, 0xce, 0x9d, 0x44, 0xa2, 0xc4,
|
||||||
0xf8, 0xee, 0xd5, 0xee, 0x06, 0xfd, 0x72, 0xf2, 0x93, 0x88, 0x92, 0x03, 0x8a, 0x27, 0xe7, 0x4e,
|
0xd0, 0xfc, 0x7f, 0xbd, 0xf6, 0xc5, 0x58, 0xaf, 0x7d, 0x32, 0x55, 0xaf, 0x25, 0x3c, 0xbd, 0xb4,
|
||||||
0xac, 0x50, 0x62, 0x69, 0xfe, 0xbb, 0x59, 0xfb, 0x7c, 0x64, 0xd6, 0x3e, 0x9e, 0x69, 0xd6, 0x62,
|
0xd5, 0xac, 0x73, 0xad, 0xb6, 0x79, 0xed, 0x56, 0x4b, 0x6a, 0xbf, 0xba, 0xd3, 0x9e, 0x80, 0x95,
|
||||||
0x99, 0x4e, 0x1c, 0xb5, 0xfa, 0xa5, 0x51, 0xdb, 0xbe, 0xf6, 0xa8, 0xc5, 0xbd, 0x5f, 0x3d, 0x69,
|
0xcb, 0xbd, 0x9a, 0x7a, 0x75, 0xd7, 0x7f, 0xcd, 0x82, 0xc5, 0xd7, 0xe7, 0xc0, 0xcd, 0x86, 0xfe,
|
||||||
0x4f, 0xc0, 0xda, 0xe4, 0xac, 0x66, 0x7e, 0xba, 0xab, 0xbf, 0xa4, 0xc1, 0xf2, 0x6b, 0x3a, 0x70,
|
0x34, 0x0f, 0x96, 0x5f, 0x0f, 0xfc, 0xd5, 0x03, 0x2f, 0x7e, 0xa2, 0x01, 0x23, 0x54, 0xfd, 0xf8,
|
||||||
0xb3, 0xa5, 0x3f, 0xcf, 0x82, 0xd5, 0xd7, 0x0b, 0x7f, 0xf5, 0xc2, 0x8b, 0x9f, 0xa8, 0xcf, 0x08,
|
0x47, 0xb5, 0xda, 0x67, 0x84, 0x22, 0x89, 0xc0, 0xda, 0xf0, 0x36, 0x88, 0x7e, 0x58, 0x40, 0x64,
|
||||||
0x55, 0x3f, 0xfe, 0x61, 0xaf, 0x0e, 0x19, 0xa1, 0x48, 0x22, 0xb0, 0x32, 0xe0, 0x06, 0xe1, 0x0f,
|
0x5a, 0xfd, 0x0b, 0xd5, 0x61, 0xe0, 0x80, 0x02, 0x11, 0x17, 0xaf, 0x5e, 0xa8, 0xe5, 0x56, 0xcb,
|
||||||
0x0b, 0x88, 0x4a, 0xab, 0x7f, 0xa1, 0x22, 0x06, 0x36, 0xc8, 0x11, 0xc1, 0x78, 0xf5, 0x5c, 0x25,
|
0xeb, 0xdb, 0x37, 0xee, 0x15, 0x43, 0x1e, 0xce, 0x3b, 0x2e, 0xa7, 0xc7, 0xf1, 0x0d, 0x22, 0x69,
|
||||||
0xb3, 0x5e, 0xdc, 0xdc, 0xbd, 0xf1, 0xac, 0x18, 0x92, 0x38, 0xef, 0x39, 0x9c, 0x9e, 0x46, 0x1c,
|
0x28, 0xb2, 0x00, 0xdf, 0x02, 0xb9, 0xc0, 0x69, 0xaa, 0x13, 0xa1, 0xac, 0x58, 0x72, 0xfb, 0xbb,
|
||||||
0x44, 0xca, 0x50, 0x18, 0x01, 0xbe, 0x01, 0x32, 0xbe, 0xdd, 0x50, 0x14, 0xa1, 0xa8, 0x54, 0x32,
|
0xdb, 0x48, 0xd0, 0x57, 0x0e, 0xd5, 0xed, 0x2d, 0x55, 0xc0, 0x05, 0x90, 0xeb, 0x90, 0xe3, 0x68,
|
||||||
0x87, 0xfb, 0xbb, 0x48, 0xc8, 0xd7, 0x8e, 0x15, 0xf7, 0x96, 0x2e, 0xe0, 0x12, 0xc8, 0xb4, 0xc9,
|
0xce, 0x90, 0xf8, 0x84, 0x0d, 0x50, 0xe8, 0x8b, 0xb3, 0x5c, 0xe5, 0xf9, 0xde, 0x64, 0x4f, 0xe3,
|
||||||
0x69, 0xb8, 0x67, 0x48, 0x7c, 0xc2, 0x1a, 0xc8, 0xf5, 0x04, 0x2d, 0x57, 0x75, 0xbe, 0x37, 0x3d,
|
0x53, 0x1e, 0x45, 0xa2, 0x9b, 0xd9, 0x87, 0x5a, 0xfd, 0x4f, 0x0d, 0xdc, 0xbd, 0xb4, 0x21, 0xc5,
|
||||||
0xd3, 0x88, 0xca, 0xa3, 0xd0, 0x74, 0x3b, 0xfd, 0x50, 0xab, 0xfe, 0xa1, 0x81, 0xbb, 0x13, 0x07,
|
0xa1, 0x84, 0xbb, 0x5d, 0xef, 0x88, 0x34, 0xa5, 0xed, 0x62, 0x7c, 0x28, 0x6d, 0x45, 0x64, 0x34,
|
||||||
0x52, 0x10, 0x25, 0xdc, 0xe9, 0xb8, 0x27, 0xa4, 0x21, 0x63, 0xe7, 0x23, 0xa2, 0xb4, 0x13, 0x8a,
|
0xc4, 0xe1, 0x3b, 0x60, 0x86, 0x12, 0xcc, 0x3c, 0x57, 0x1d, 0x67, 0xa3, 0x5e, 0x46, 0x92, 0x8a,
|
||||||
0xd1, 0x00, 0x87, 0x6f, 0x81, 0x39, 0x4a, 0x30, 0x73, 0x1d, 0x45, 0xce, 0x86, 0xb3, 0x8c, 0xa4,
|
0x14, 0x0a, 0xb7, 0xc0, 0x3c, 0x11, 0xe6, 0xa5, 0x73, 0x3b, 0x94, 0x7a, 0xc3, 0x8a, 0x2d, 0x2b,
|
||||||
0x14, 0x29, 0x14, 0xee, 0x80, 0x45, 0x22, 0xc2, 0xcb, 0xe4, 0xf6, 0x28, 0x75, 0x07, 0x1d, 0x5b,
|
0x81, 0xf9, 0x9d, 0x71, 0x18, 0x9d, 0xe7, 0x17, 0xa6, 0x9a, 0xc4, 0x75, 0x48, 0x53, 0x5e, 0x6f,
|
||||||
0x55, 0x06, 0x8b, 0x7b, 0xa3, 0x30, 0xba, 0xac, 0x2f, 0x42, 0x35, 0x88, 0x63, 0x93, 0x86, 0x64,
|
0xc5, 0xd8, 0xd4, 0xb6, 0xa4, 0x22, 0x85, 0xd6, 0xff, 0xcd, 0x02, 0xfd, 0xb2, 0xb5, 0x07, 0x3b,
|
||||||
0x6f, 0xf9, 0x28, 0xd4, 0xae, 0x94, 0x22, 0x85, 0x56, 0xff, 0x49, 0x03, 0x7d, 0xd2, 0xb3, 0x07,
|
0xf1, 0x15, 0x23, 0x41, 0x79, 0x48, 0x95, 0xd7, 0x8d, 0xeb, 0x8f, 0x8c, 0x10, 0x6b, 0x2c, 0x29,
|
||||||
0xdb, 0x11, 0x8b, 0x91, 0xa0, 0x24, 0x52, 0xc5, 0x4d, 0xe3, 0xfa, 0x2b, 0x23, 0xcc, 0x6a, 0x2b,
|
0xdb, 0x73, 0x49, 0x6a, 0xe2, 0xf2, 0x91, 0x4f, 0x78, 0x04, 0x16, 0xdc, 0xf1, 0x93, 0x3b, 0xba,
|
||||||
0x2a, 0xf6, 0x42, 0x5c, 0x1a, 0x63, 0x3e, 0xf2, 0x08, 0x4f, 0xc0, 0x92, 0x33, 0x4a, 0xb9, 0x43,
|
0xc9, 0xca, 0xeb, 0x6b, 0x53, 0x0d, 0x88, 0x34, 0xa9, 0x2b, 0x93, 0x0b, 0xe7, 0x00, 0x86, 0x2e,
|
||||||
0x4e, 0x56, 0xdc, 0xdc, 0x98, 0x69, 0x41, 0x64, 0x48, 0x5d, 0x85, 0x5c, 0xba, 0x04, 0x30, 0x34,
|
0x18, 0x81, 0xeb, 0x00, 0x38, 0xae, 0xed, 0xf5, 0xfc, 0x2e, 0xe1, 0x44, 0x26, 0xba, 0x18, 0x6f,
|
||||||
0x16, 0x04, 0x6e, 0x02, 0x60, 0x3b, 0x96, 0xdb, 0xf5, 0x3a, 0x84, 0x13, 0x59, 0xe8, 0x7c, 0xf4,
|
0xcb, 0xdd, 0x11, 0x82, 0x12, 0x5c, 0x69, 0x15, 0xca, 0x4f, 0x57, 0xa1, 0xc6, 0xfd, 0x93, 0xb3,
|
||||||
0x5a, 0xee, 0x0f, 0x11, 0x14, 0xd3, 0x4a, 0xea, 0x50, 0x76, 0xb6, 0x0e, 0xd5, 0xee, 0x9f, 0x5d,
|
0x4a, 0xe6, 0xe5, 0x59, 0x25, 0x73, 0x7a, 0x56, 0xc9, 0xbc, 0x08, 0x2b, 0xda, 0x49, 0x58, 0xd1,
|
||||||
0x94, 0x52, 0x2f, 0x2f, 0x4a, 0xa9, 0xf3, 0x8b, 0x52, 0xea, 0x45, 0x50, 0xd2, 0xce, 0x82, 0x92,
|
0x5e, 0x86, 0x15, 0xed, 0x34, 0xac, 0x68, 0x7f, 0x87, 0x15, 0xed, 0xc7, 0x7f, 0x2a, 0x99, 0xcf,
|
||||||
0xf6, 0x32, 0x28, 0x69, 0xe7, 0x41, 0x49, 0xfb, 0x2b, 0x28, 0x69, 0x3f, 0xfc, 0x5d, 0x4a, 0x7d,
|
0x67, 0x55, 0x84, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc5, 0xba, 0xf8, 0x96, 0xa4, 0x0f, 0x00,
|
||||||
0x36, 0xaf, 0x6e, 0xf8, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcc, 0xb3, 0x5e, 0x05, 0xd9, 0x0f,
|
0x00,
|
||||||
0x00, 0x00,
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,6 @@ package k8s.io.api.authorization.v1beta1;
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1beta1";
|
option go_package = "v1beta1";
|
||||||
|
|
|
@ -199,21 +199,13 @@ func (in *SelfSubjectAccessReviewSpec) DeepCopyInto(out *SelfSubjectAccessReview
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ResourceAttributes != nil {
|
if in.ResourceAttributes != nil {
|
||||||
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
||||||
if *in == nil {
|
*out = new(ResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(ResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.NonResourceAttributes != nil {
|
if in.NonResourceAttributes != nil {
|
||||||
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
||||||
if *in == nil {
|
*out = new(NonResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(NonResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -305,21 +297,13 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ResourceAttributes != nil {
|
if in.ResourceAttributes != nil {
|
||||||
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
in, out := &in.ResourceAttributes, &out.ResourceAttributes
|
||||||
if *in == nil {
|
*out = new(ResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(ResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.NonResourceAttributes != nil {
|
if in.NonResourceAttributes != nil {
|
||||||
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
in, out := &in.NonResourceAttributes, &out.NonResourceAttributes
|
||||||
if *in == nil {
|
*out = new(NonResourceAttributes)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(NonResourceAttributes)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Groups != nil {
|
if in.Groups != nil {
|
||||||
in, out := &in.Groups, &out.Groups
|
in, out := &in.Groups, &out.Groups
|
||||||
|
@ -330,12 +314,15 @@ func (in *SubjectAccessReviewSpec) DeepCopyInto(out *SubjectAccessReviewSpec) {
|
||||||
in, out := &in.Extra, &out.Extra
|
in, out := &in.Extra, &out.Extra
|
||||||
*out = make(map[string]ExtraValue, len(*in))
|
*out = make(map[string]ExtraValue, len(*in))
|
||||||
for key, val := range *in {
|
for key, val := range *in {
|
||||||
|
var outVal []string
|
||||||
if val == nil {
|
if val == nil {
|
||||||
(*out)[key] = nil
|
(*out)[key] = nil
|
||||||
} else {
|
} else {
|
||||||
(*out)[key] = make([]string, len(val))
|
in, out := &val, &outVal
|
||||||
copy((*out)[key], val)
|
*out = make(ExtraValue, len(*in))
|
||||||
|
copy(*out, *in)
|
||||||
}
|
}
|
||||||
|
(*out)[key] = outVal
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1 // import "k8s.io/api/autoscaling/v1"
|
package v1 // import "k8s.io/api/autoscaling/v1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v1 is a generated protocol buffer package.
|
Package v1 is a generated protocol buffer package.
|
||||||
|
@ -675,6 +674,26 @@ func (m *ObjectMetricSource) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n23
|
i += n23
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n24, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n24
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
dAtA[i] = 0x2a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.AverageValue.Size()))
|
||||||
|
n25, err := m.AverageValue.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n25
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -696,11 +715,11 @@ func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0xa
|
dAtA[i] = 0xa
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size()))
|
||||||
n24, err := m.Target.MarshalTo(dAtA[i:])
|
n26, err := m.Target.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n24
|
i += n26
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName)))
|
i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName)))
|
||||||
|
@ -708,11 +727,31 @@ func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size()))
|
||||||
n25, err := m.CurrentValue.MarshalTo(dAtA[i:])
|
n27, err := m.CurrentValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n25
|
i += n27
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n28, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n28
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
dAtA[i] = 0x2a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.AverageValue.Size()))
|
||||||
|
n29, err := m.AverageValue.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n29
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -738,11 +777,21 @@ func (m *PodsMetricSource) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
||||||
n26, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
n30, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n26
|
i += n30
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n31, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n31
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -768,11 +817,21 @@ func (m *PodsMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
||||||
n27, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
n32, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n27
|
i += n32
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n33, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n33
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -804,11 +863,11 @@ func (m *ResourceMetricSource) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
||||||
n28, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
n34, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n28
|
i += n34
|
||||||
}
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
@ -840,11 +899,11 @@ func (m *ResourceMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
||||||
n29, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
n35, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n29
|
i += n35
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -866,27 +925,27 @@ func (m *Scale) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0xa
|
dAtA[i] = 0xa
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.ObjectMeta.Size()))
|
||||||
n30, err := m.ObjectMeta.MarshalTo(dAtA[i:])
|
n36, err := m.ObjectMeta.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n30
|
i += n36
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Spec.Size()))
|
||||||
n31, err := m.Spec.MarshalTo(dAtA[i:])
|
n37, err := m.Spec.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n31
|
i += n37
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Status.Size()))
|
||||||
n32, err := m.Status.MarshalTo(dAtA[i:])
|
n38, err := m.Status.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n32
|
i += n38
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -936,24 +995,6 @@ func (m *ScaleStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -1145,6 +1186,14 @@ func (m *ObjectMetricSource) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.TargetValue.Size()
|
l = m.TargetValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
l = m.AverageValue.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1157,6 +1206,14 @@ func (m *ObjectMetricStatus) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.CurrentValue.Size()
|
l = m.CurrentValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
l = m.AverageValue.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1167,6 +1224,10 @@ func (m *PodsMetricSource) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.TargetAverageValue.Size()
|
l = m.TargetAverageValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1177,6 +1238,10 @@ func (m *PodsMetricStatus) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.CurrentAverageValue.Size()
|
l = m.CurrentAverageValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1387,6 +1452,8 @@ func (this *ObjectMetricSource) String() string {
|
||||||
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
|
`AverageValue:` + strings.Replace(fmt.Sprintf("%v", this.AverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1399,6 +1466,8 @@ func (this *ObjectMetricStatus) String() string {
|
||||||
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
|
`AverageValue:` + strings.Replace(fmt.Sprintf("%v", this.AverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1410,6 +1479,7 @@ func (this *PodsMetricSource) String() string {
|
||||||
s := strings.Join([]string{`&PodsMetricSource{`,
|
s := strings.Join([]string{`&PodsMetricSource{`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1421,6 +1491,7 @@ func (this *PodsMetricStatus) String() string {
|
||||||
s := strings.Join([]string{`&PodsMetricStatus{`,
|
s := strings.Join([]string{`&PodsMetricStatus{`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -3267,6 +3338,72 @@ func (m *ObjectMetricSource) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 5:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field AverageValue", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.AverageValue == nil {
|
||||||
|
m.AverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{}
|
||||||
|
}
|
||||||
|
if err := m.AverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3406,6 +3543,72 @@ func (m *ObjectMetricStatus) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 5:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field AverageValue", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.AverageValue == nil {
|
||||||
|
m.AverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{}
|
||||||
|
}
|
||||||
|
if err := m.AverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3515,6 +3718,39 @@ func (m *PodsMetricSource) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3624,6 +3860,39 @@ func (m *PodsMetricStatus) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -4323,98 +4592,100 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 1485 bytes of a gzipped FileDescriptorProto
|
// 1516 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcb, 0x6f, 0x14, 0x47,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcf, 0x6f, 0x13, 0xc7,
|
||||||
0x13, 0xf7, 0x3e, 0x6c, 0xec, 0x5e, 0x63, 0xf3, 0x35, 0x08, 0x8c, 0xf9, 0xd8, 0xb1, 0xe6, 0x43,
|
0x17, 0x8f, 0x7f, 0x24, 0x24, 0xe3, 0x90, 0xe4, 0x3b, 0x20, 0x08, 0xe1, 0x8b, 0x37, 0xda, 0x22,
|
||||||
0x88, 0x2f, 0x09, 0x33, 0xb1, 0x21, 0x88, 0x1c, 0xbd, 0x9b, 0x10, 0x50, 0xbc, 0x60, 0xda, 0x86,
|
0x44, 0x7f, 0xb0, 0x6e, 0x52, 0x8a, 0xe8, 0x31, 0x76, 0x4b, 0x41, 0x8d, 0x21, 0x4c, 0x02, 0xa5,
|
||||||
0x90, 0x87, 0x22, 0xda, 0xb3, 0xcd, 0xba, 0xf1, 0xce, 0xcc, 0xaa, 0xa7, 0x77, 0x85, 0x91, 0x22,
|
0x3f, 0xc5, 0x64, 0x3d, 0x38, 0x43, 0xbc, 0xbb, 0xd6, 0xec, 0xd8, 0x22, 0x48, 0x95, 0xda, 0x43,
|
||||||
0x25, 0x87, 0x9c, 0x13, 0x45, 0x4a, 0x94, 0x63, 0xfe, 0x81, 0x9c, 0x39, 0x27, 0x52, 0x24, 0x8e,
|
0xef, 0xbd, 0xb4, 0xea, 0xb1, 0x95, 0x7a, 0xed, 0x99, 0x73, 0x6f, 0x1c, 0x39, 0x20, 0x95, 0xd3,
|
||||||
0x1c, 0x72, 0xe0, 0x34, 0x0a, 0x93, 0x63, 0xfe, 0x03, 0x4e, 0x51, 0x3f, 0x76, 0x76, 0x66, 0x77,
|
0xaa, 0x6c, 0x8f, 0xfd, 0x0f, 0x38, 0x55, 0xf3, 0xc3, 0xeb, 0x5d, 0xdb, 0xeb, 0x24, 0x26, 0x44,
|
||||||
0x67, 0xfd, 0xc0, 0x58, 0xc9, 0x6d, 0x7a, 0xaa, 0xea, 0x57, 0xdd, 0x55, 0xd5, 0xf5, 0x68, 0x50,
|
0x6d, 0x6f, 0x3b, 0x33, 0xef, 0x7d, 0xde, 0xec, 0x7b, 0x6f, 0xde, 0x2f, 0x50, 0xde, 0xbe, 0xec,
|
||||||
0xd9, 0xba, 0x1a, 0x58, 0xd4, 0xb7, 0xb7, 0xda, 0x1b, 0x84, 0x79, 0x84, 0x93, 0xc0, 0xee, 0x10,
|
0x5b, 0xd4, 0x2b, 0x6d, 0xb7, 0x36, 0x09, 0x73, 0x09, 0x27, 0x7e, 0xa9, 0x4d, 0xdc, 0x9a, 0xc7,
|
||||||
0xaf, 0xee, 0x33, 0x5b, 0x13, 0x70, 0x8b, 0xda, 0xb8, 0xcd, 0xfd, 0xc0, 0xc1, 0x4d, 0xea, 0x35,
|
0x4a, 0xfa, 0x00, 0x37, 0x69, 0x09, 0xb7, 0xb8, 0xe7, 0xdb, 0xb8, 0x41, 0xdd, 0x7a, 0xa9, 0xbd,
|
||||||
0xec, 0xce, 0xa2, 0xdd, 0x20, 0x1e, 0x61, 0x98, 0x93, 0xba, 0xd5, 0x62, 0x3e, 0xf7, 0xe1, 0x69,
|
0x54, 0xaa, 0x13, 0x97, 0x30, 0xcc, 0x49, 0xcd, 0x6a, 0x32, 0x8f, 0x7b, 0xf0, 0x94, 0x22, 0xb5,
|
||||||
0xc5, 0x6a, 0xe1, 0x16, 0xb5, 0x12, 0xac, 0x56, 0x67, 0x71, 0xfe, 0x62, 0x83, 0xf2, 0xcd, 0xf6,
|
0x70, 0x93, 0x5a, 0x31, 0x52, 0xab, 0xbd, 0xb4, 0x70, 0xa1, 0x4e, 0xf9, 0x56, 0x6b, 0xd3, 0xb2,
|
||||||
0x86, 0xe5, 0xf8, 0xae, 0xdd, 0xf0, 0x1b, 0xbe, 0x2d, 0x25, 0x36, 0xda, 0x0f, 0xe4, 0x4a, 0x2e,
|
0x3d, 0xa7, 0x54, 0xf7, 0xea, 0x5e, 0x49, 0x72, 0x6c, 0xb6, 0xee, 0xc9, 0x95, 0x5c, 0xc8, 0x2f,
|
||||||
0xe4, 0x97, 0x42, 0x9a, 0x37, 0x13, 0x4a, 0x1d, 0x9f, 0x91, 0x21, 0xda, 0xe6, 0x2f, 0xf7, 0x78,
|
0x85, 0xb4, 0x60, 0xc6, 0x84, 0xda, 0x1e, 0x23, 0x03, 0xa4, 0x2d, 0x5c, 0xec, 0xd2, 0x38, 0xd8,
|
||||||
0x5c, 0xec, 0x6c, 0x52, 0x8f, 0xb0, 0x6d, 0xbb, 0xb5, 0xd5, 0x90, 0x42, 0x8c, 0x04, 0x7e, 0x9b,
|
0xde, 0xa2, 0x2e, 0x61, 0x3b, 0xa5, 0xe6, 0x76, 0x5d, 0x32, 0x31, 0xe2, 0x7b, 0x2d, 0x66, 0x93,
|
||||||
0x39, 0x64, 0x4f, 0x52, 0x81, 0xed, 0x12, 0x8e, 0x87, 0xe9, 0xb2, 0xb3, 0xa4, 0x58, 0xdb, 0xe3,
|
0x7d, 0x71, 0xf9, 0x25, 0x87, 0x70, 0x3c, 0x48, 0x56, 0x29, 0x8d, 0x8b, 0xb5, 0x5c, 0x4e, 0x9d,
|
||||||
0xd4, 0x1d, 0x54, 0x73, 0x65, 0x27, 0x81, 0xc0, 0xd9, 0x24, 0x2e, 0x1e, 0x90, 0xbb, 0x94, 0x25,
|
0x7e, 0x31, 0x97, 0x76, 0x63, 0xf0, 0xed, 0x2d, 0xe2, 0xe0, 0x5e, 0x3e, 0xf3, 0xfb, 0x0c, 0x38,
|
||||||
0xd7, 0xe6, 0xb4, 0x69, 0x53, 0x8f, 0x07, 0x9c, 0xf5, 0x0b, 0x99, 0xdf, 0xe7, 0xc0, 0x99, 0x2a,
|
0x5d, 0x61, 0x9e, 0xef, 0xdf, 0x26, 0xcc, 0xa7, 0x9e, 0x7b, 0x63, 0xf3, 0x3e, 0xb1, 0x39, 0x22,
|
||||||
0xf3, 0x83, 0xe0, 0x2e, 0x61, 0x01, 0xf5, 0xbd, 0x5b, 0x1b, 0x0f, 0x89, 0xc3, 0x11, 0x79, 0x40,
|
0xf7, 0x08, 0x23, 0xae, 0x4d, 0xe0, 0x22, 0xc8, 0x6f, 0x53, 0xb7, 0x36, 0x9f, 0x59, 0xcc, 0x9c,
|
||||||
0x18, 0xf1, 0x1c, 0x02, 0x17, 0x40, 0x71, 0x8b, 0x7a, 0xf5, 0xb9, 0xdc, 0x42, 0xee, 0xc2, 0x54,
|
0x9f, 0x2a, 0x4f, 0x3f, 0x0e, 0x8c, 0xb1, 0x30, 0x30, 0xf2, 0x1f, 0x51, 0xb7, 0x86, 0xe4, 0x89,
|
||||||
0x65, 0xfa, 0x69, 0x68, 0x8c, 0x45, 0xa1, 0x51, 0xfc, 0x90, 0x7a, 0x75, 0x24, 0x29, 0x82, 0xc3,
|
0xa0, 0x70, 0xb1, 0x43, 0xe6, 0xb3, 0x49, 0x8a, 0xeb, 0xd8, 0x21, 0x48, 0x9e, 0xc0, 0x65, 0x00,
|
||||||
0xc3, 0x2e, 0x99, 0xcb, 0xa7, 0x39, 0x6e, 0x62, 0x97, 0x20, 0x49, 0x81, 0x4b, 0x00, 0xe0, 0x16,
|
0x70, 0x93, 0x6a, 0x01, 0xf3, 0x39, 0x49, 0x07, 0x35, 0x1d, 0x58, 0x59, 0xbb, 0xa6, 0x4f, 0x50,
|
||||||
0xd5, 0x0a, 0xe6, 0x0a, 0x92, 0x0f, 0x6a, 0x3e, 0xb0, 0xbc, 0x7a, 0x43, 0x53, 0x50, 0x82, 0xcb,
|
0x8c, 0xca, 0xfc, 0x21, 0x07, 0x8e, 0x7f, 0xf0, 0x80, 0x13, 0xe6, 0xe2, 0x46, 0x95, 0x70, 0x46,
|
||||||
0xfc, 0xa1, 0x00, 0x4e, 0xbc, 0xff, 0x88, 0x13, 0xe6, 0xe1, 0x66, 0x8d, 0x70, 0x46, 0x9d, 0x35,
|
0xed, 0x75, 0xa9, 0x5f, 0x01, 0xe6, 0xc8, 0xb5, 0x10, 0xa0, 0xaf, 0x15, 0x81, 0x55, 0xa3, 0x13,
|
||||||
0xe9, 0x14, 0x01, 0xe6, 0xca, 0xb5, 0x50, 0xa0, 0xb7, 0x15, 0x83, 0xd5, 0x62, 0x0a, 0x4a, 0x70,
|
0x14, 0xa3, 0x82, 0x1e, 0x98, 0x51, 0xab, 0x75, 0xd2, 0x20, 0x36, 0xf7, 0x98, 0xbc, 0x6c, 0x61,
|
||||||
0x41, 0x1f, 0xcc, 0xa8, 0xd5, 0x1a, 0x69, 0x12, 0x87, 0xfb, 0x4c, 0x6e, 0xb6, 0xb4, 0x74, 0xc9,
|
0xf9, 0x1d, 0xab, 0xeb, 0x40, 0x91, 0xd6, 0xac, 0xe6, 0x76, 0x5d, 0x6c, 0xf8, 0x96, 0x30, 0x8e,
|
||||||
0xea, 0x45, 0x5d, 0x6c, 0x32, 0xab, 0xb5, 0xd5, 0x10, 0x3f, 0x02, 0x4b, 0x78, 0xd4, 0xea, 0x2c,
|
0xd5, 0x5e, 0xb2, 0x56, 0xf1, 0x26, 0x69, 0x74, 0x58, 0xcb, 0x30, 0x0c, 0x8c, 0x99, 0x6a, 0x02,
|
||||||
0x5a, 0x2b, 0x78, 0x83, 0x34, 0xbb, 0xa2, 0x15, 0x18, 0x85, 0xc6, 0x4c, 0x2d, 0x05, 0x87, 0xfa,
|
0x0e, 0xf5, 0xc0, 0x43, 0x0c, 0x0a, 0x1c, 0xb3, 0x3a, 0xe1, 0xb7, 0x71, 0xa3, 0x45, 0xe4, 0x2f,
|
||||||
0xe0, 0x21, 0x06, 0x25, 0x8e, 0x59, 0x83, 0xf0, 0xbb, 0xb8, 0xd9, 0x26, 0xf2, 0xc8, 0xa5, 0x25,
|
0x17, 0x96, 0xad, 0x61, 0xd2, 0xac, 0x8e, 0x03, 0x59, 0x37, 0x5b, 0xd8, 0xe5, 0x94, 0xef, 0x94,
|
||||||
0x6b, 0x94, 0x36, 0xab, 0x1b, 0x75, 0xd6, 0xed, 0x36, 0xf6, 0x38, 0xe5, 0xdb, 0x95, 0xd9, 0x28,
|
0x67, 0xc3, 0xc0, 0x28, 0x6c, 0x74, 0x61, 0x50, 0x1c, 0x13, 0xb6, 0x01, 0x54, 0xcb, 0x95, 0x36,
|
||||||
0x34, 0x4a, 0xeb, 0x3d, 0x18, 0x94, 0xc4, 0x84, 0x1d, 0x00, 0xd5, 0x72, 0xb9, 0x43, 0x18, 0x6e,
|
0x61, 0xb8, 0x4e, 0x94, 0xa4, 0xfc, 0x48, 0x92, 0x4e, 0x84, 0x81, 0x01, 0x37, 0xfa, 0xd0, 0xd0,
|
||||||
0x10, 0xa5, 0xa9, 0xb8, 0x2f, 0x4d, 0x27, 0xa3, 0xd0, 0x80, 0xeb, 0x03, 0x68, 0x68, 0x88, 0x06,
|
0x00, 0x09, 0xe6, 0x4f, 0xfd, 0x86, 0xe1, 0x98, 0xb7, 0xfc, 0x7f, 0x87, 0x61, 0xb6, 0xc0, 0xb4,
|
||||||
0xf3, 0xa7, 0x41, 0xc7, 0x70, 0xcc, 0xdb, 0xc1, 0xbf, 0xc3, 0x31, 0x9b, 0x60, 0xda, 0x69, 0x33,
|
0xdd, 0x62, 0x8c, 0xb8, 0x2f, 0x65, 0x99, 0xe3, 0xfa, 0xb7, 0xa6, 0x2b, 0x31, 0x2c, 0x94, 0x40,
|
||||||
0x46, 0xbc, 0x57, 0xf2, 0xcc, 0x09, 0x7d, 0xac, 0xe9, 0x6a, 0x02, 0x0b, 0xa5, 0x90, 0xe1, 0x36,
|
0x86, 0x3b, 0xe0, 0x98, 0x5e, 0x1f, 0x80, 0x81, 0x4e, 0x86, 0x81, 0x71, 0xac, 0xd2, 0x0f, 0x87,
|
||||||
0x38, 0xae, 0xd7, 0x07, 0xe0, 0xa0, 0x53, 0x51, 0x68, 0x1c, 0xaf, 0x0e, 0xc2, 0xa1, 0x61, 0x3a,
|
0x06, 0xc9, 0x30, 0x1f, 0x65, 0xc1, 0xc9, 0xab, 0x1e, 0xa3, 0x0f, 0x3d, 0x97, 0xe3, 0xc6, 0x9a,
|
||||||
0xcc, 0x27, 0x79, 0x70, 0xea, 0xba, 0xcf, 0xe8, 0x63, 0xdf, 0xe3, 0xb8, 0xb9, 0xea, 0xd7, 0x97,
|
0x57, 0x5b, 0xd1, 0xb1, 0x91, 0x30, 0x78, 0x17, 0x4c, 0x0a, 0xed, 0xd5, 0x30, 0xc7, 0xd2, 0x46,
|
||||||
0x75, 0x42, 0x25, 0x0c, 0xde, 0x07, 0x93, 0xc2, 0x7a, 0x75, 0xcc, 0xb1, 0xf4, 0x51, 0x69, 0xe9,
|
0x85, 0xe5, 0xb7, 0xf7, 0xa6, 0x6b, 0x15, 0x18, 0xaa, 0x84, 0xe3, 0xae, 0x55, 0xbb, 0x7b, 0x28,
|
||||||
0xed, 0xdd, 0xd9, 0x5a, 0x25, 0x86, 0x1a, 0xe1, 0xb8, 0xe7, 0xd5, 0xde, 0x3f, 0x14, 0xa3, 0xc2,
|
0x42, 0x85, 0x77, 0x40, 0xde, 0x6f, 0x12, 0x5b, 0x5b, 0xf2, 0x92, 0x95, 0x1a, 0xa3, 0xad, 0x94,
|
||||||
0x7b, 0xa0, 0x18, 0xb4, 0x88, 0xa3, 0x3d, 0x79, 0xc5, 0xca, 0x4c, 0xec, 0x56, 0xc6, 0x1e, 0xd7,
|
0x3b, 0xae, 0x37, 0x89, 0xdd, 0x8d, 0x23, 0x62, 0x85, 0x24, 0x22, 0xbc, 0x0b, 0x26, 0x7c, 0xe9,
|
||||||
0x5a, 0xc4, 0xe9, 0xe5, 0x11, 0xb1, 0x42, 0x12, 0x11, 0xde, 0x07, 0x13, 0x81, 0x8c, 0x35, 0xed,
|
0x6b, 0xda, 0x6c, 0x97, 0x47, 0xc0, 0x96, 0xfc, 0xe5, 0x19, 0x8d, 0x3e, 0xa1, 0xd6, 0x48, 0xe3,
|
||||||
0xb6, 0xab, 0xfb, 0xc0, 0x96, 0xf2, 0x95, 0x19, 0x8d, 0x3e, 0xa1, 0xd6, 0x48, 0xe3, 0x9a, 0x5f,
|
0x9a, 0xdf, 0xe6, 0xc0, 0x62, 0x0a, 0x67, 0xc5, 0x73, 0x6b, 0x94, 0x53, 0xcf, 0x85, 0x57, 0x41,
|
||||||
0x17, 0xc0, 0x42, 0x86, 0x64, 0xd5, 0xf7, 0xea, 0x94, 0x53, 0xdf, 0x83, 0xd7, 0x41, 0x91, 0x6f,
|
0x9e, 0xef, 0x34, 0x3b, 0x2e, 0x7e, 0xb1, 0x73, 0xd1, 0x8d, 0x9d, 0x26, 0x79, 0x11, 0x18, 0x67,
|
||||||
0xb7, 0xba, 0x21, 0x7e, 0xb9, 0xbb, 0xd1, 0xf5, 0xed, 0x16, 0x79, 0x19, 0x1a, 0xe7, 0x76, 0x92,
|
0x77, 0xe3, 0x17, 0x74, 0x48, 0x22, 0xc0, 0xd5, 0xe8, 0x87, 0xb2, 0x09, 0x2c, 0x7d, 0xad, 0x17,
|
||||||
0x17, 0x7c, 0x48, 0x22, 0xc0, 0x95, 0xf8, 0x40, 0xf9, 0x14, 0x96, 0xde, 0xd6, 0xcb, 0xd0, 0x18,
|
0x81, 0x31, 0x20, 0x2f, 0x59, 0x11, 0x52, 0xf2, 0xf2, 0x22, 0x22, 0x34, 0xb0, 0xcf, 0x37, 0x18,
|
||||||
0x52, 0xcc, 0xac, 0x18, 0x29, 0xbd, 0x79, 0x91, 0x11, 0x9a, 0x38, 0xe0, 0xeb, 0x0c, 0x7b, 0x81,
|
0x76, 0x7d, 0x25, 0x89, 0x3a, 0x1d, 0x0f, 0x7f, 0x63, 0x6f, 0x46, 0x16, 0x1c, 0xe5, 0x05, 0x7d,
|
||||||
0xd2, 0x44, 0xdd, 0x6e, 0x84, 0xbf, 0xb1, 0x3b, 0x27, 0x0b, 0x89, 0xca, 0xbc, 0xde, 0x05, 0x5c,
|
0x0b, 0xb8, 0xda, 0x87, 0x86, 0x06, 0x48, 0x80, 0xe7, 0xc0, 0x04, 0x23, 0xd8, 0xf7, 0x5c, 0xe9,
|
||||||
0x19, 0x40, 0x43, 0x43, 0x34, 0xc0, 0xf3, 0x60, 0x82, 0x11, 0x1c, 0xf8, 0x9e, 0x0c, 0xee, 0xa9,
|
0xdc, 0x53, 0x5d, 0xe5, 0x22, 0xb9, 0x8b, 0xf4, 0x29, 0x7c, 0x1d, 0x1c, 0x71, 0x88, 0xef, 0xe3,
|
||||||
0x9e, 0x71, 0x91, 0xfc, 0x8b, 0x34, 0x15, 0xfe, 0x1f, 0x1c, 0x71, 0x49, 0x10, 0xe0, 0x06, 0x99,
|
0x3a, 0x99, 0x1f, 0x97, 0x84, 0xb3, 0x9a, 0xf0, 0x48, 0x55, 0x6d, 0xa3, 0xce, 0xb9, 0xf9, 0x34,
|
||||||
0x1b, 0x97, 0x8c, 0xb3, 0x9a, 0xf1, 0x48, 0x4d, 0xfd, 0x46, 0x5d, 0xba, 0xf9, 0x7b, 0x0e, 0x9c,
|
0x03, 0x4e, 0xa7, 0xe8, 0x71, 0x95, 0xfa, 0x1c, 0x7e, 0xde, 0xe7, 0xc5, 0xd6, 0x1e, 0x23, 0x06,
|
||||||
0xc9, 0xb0, 0xe3, 0x0a, 0x0d, 0x38, 0xfc, 0x6c, 0x20, 0x8a, 0xad, 0x5d, 0x66, 0x0c, 0x1a, 0xa8,
|
0xf5, 0x95, 0x0f, 0xcf, 0x69, 0xd9, 0x93, 0x9d, 0x9d, 0x98, 0x07, 0x7f, 0x0c, 0xc6, 0x29, 0x27,
|
||||||
0x18, 0x3e, 0xa6, 0x75, 0x4f, 0x76, 0xff, 0x24, 0x22, 0xf8, 0x23, 0x30, 0x4e, 0x39, 0x71, 0x85,
|
0x8e, 0xb0, 0x4a, 0xee, 0x7c, 0x61, 0x79, 0x79, 0xff, 0x6e, 0x56, 0x3e, 0xaa, 0xe1, 0xc7, 0xaf,
|
||||||
0x57, 0x0a, 0x17, 0x4a, 0x4b, 0x4b, 0x7b, 0x0f, 0xb3, 0xca, 0x51, 0x0d, 0x3f, 0x7e, 0x43, 0x00,
|
0x09, 0x20, 0xa4, 0xf0, 0xcc, 0xbf, 0xb2, 0xa9, 0xbf, 0x25, 0xdc, 0x1c, 0xb6, 0xc1, 0x8c, 0x5c,
|
||||||
0x21, 0x85, 0x67, 0xfe, 0x95, 0xcf, 0x3c, 0x96, 0x08, 0x73, 0xd8, 0x01, 0x33, 0x72, 0xa5, 0x52,
|
0xa9, 0x50, 0x8c, 0xc8, 0x3d, 0xfd, 0x73, 0xc3, 0x1e, 0xd1, 0x90, 0xe4, 0x5d, 0x3e, 0xa1, 0x6f,
|
||||||
0x31, 0x22, 0x0f, 0xf4, 0xe1, 0x46, 0x5d, 0xa2, 0x11, 0xc5, 0xbb, 0x72, 0x52, 0xef, 0x62, 0x66,
|
0x31, 0xb3, 0x9e, 0x40, 0x45, 0x3d, 0x52, 0xe0, 0x12, 0x28, 0x38, 0xd4, 0x45, 0xa4, 0xd9, 0xa0,
|
||||||
0x2d, 0x85, 0x8a, 0xfa, 0xb4, 0xc0, 0x45, 0x50, 0x72, 0xa9, 0x87, 0x48, 0xab, 0x49, 0x1d, 0xac,
|
0x36, 0x56, 0xce, 0x38, 0xae, 0xd2, 0x4f, 0xb5, 0xbb, 0x8d, 0xe2, 0x34, 0xf0, 0x5d, 0x50, 0x70,
|
||||||
0x82, 0x71, 0x5c, 0x95, 0x9f, 0x5a, 0xef, 0x37, 0x4a, 0xf2, 0xc0, 0x77, 0x40, 0xc9, 0xc5, 0x8f,
|
0xf0, 0x83, 0x88, 0x25, 0x27, 0x59, 0x8e, 0x69, 0x79, 0x85, 0x6a, 0xf7, 0x08, 0xc5, 0xe9, 0xe0,
|
||||||
0x62, 0x91, 0x82, 0x14, 0x39, 0xae, 0xf5, 0x95, 0x6a, 0x3d, 0x12, 0x4a, 0xf2, 0xc1, 0x87, 0xa0,
|
0x7d, 0x50, 0x54, 0x39, 0xa5, 0xb2, 0x76, 0xeb, 0x16, 0xa7, 0x0d, 0xfa, 0x10, 0x0b, 0x3f, 0x5a,
|
||||||
0xac, 0x6a, 0x4a, 0x75, 0xf5, 0xce, 0x1d, 0x4e, 0x9b, 0xf4, 0x31, 0x16, 0x71, 0xb4, 0x4a, 0x98,
|
0x23, 0xcc, 0x26, 0x2e, 0x17, 0xae, 0x91, 0x97, 0x48, 0x66, 0x18, 0x18, 0xc5, 0x8d, 0xa1, 0x94,
|
||||||
0x43, 0x3c, 0x2e, 0x42, 0xa3, 0x28, 0x91, 0xcc, 0x28, 0x34, 0xca, 0xeb, 0x23, 0x39, 0xd1, 0x0e,
|
0x68, 0x17, 0x24, 0xf3, 0xb7, 0x1c, 0x38, 0x33, 0x34, 0x0c, 0xc0, 0x2b, 0x00, 0x7a, 0x9b, 0x3e,
|
||||||
0x48, 0xe6, 0x2f, 0x05, 0x70, 0x76, 0x64, 0x1a, 0x80, 0xd7, 0x00, 0xf4, 0x37, 0x02, 0xc2, 0x3a,
|
0x61, 0x6d, 0x52, 0xfb, 0x50, 0xd5, 0x45, 0xa2, 0x40, 0x11, 0x3a, 0xcf, 0xa9, 0x9c, 0x78, 0xa3,
|
||||||
0xa4, 0xfe, 0x81, 0xea, 0x8b, 0x44, 0x83, 0x22, 0x6c, 0x5e, 0x50, 0x35, 0xf1, 0xd6, 0x00, 0x15,
|
0xef, 0x14, 0x0d, 0xe0, 0x80, 0x36, 0x38, 0x2a, 0xde, 0x85, 0xd2, 0x32, 0xd5, 0xb5, 0xd0, 0xfe,
|
||||||
0x0d, 0x91, 0x80, 0x0e, 0x38, 0x2a, 0xee, 0x85, 0xb2, 0x32, 0xd5, 0xbd, 0xd0, 0xde, 0x2e, 0xdd,
|
0x1e, 0xdd, 0xff, 0xc2, 0xc0, 0x38, 0xba, 0x1a, 0x07, 0x41, 0x49, 0x4c, 0xb8, 0x02, 0x66, 0x75,
|
||||||
0x7f, 0xa2, 0xd0, 0x38, 0xba, 0x92, 0x04, 0x41, 0x69, 0x4c, 0xb8, 0x0c, 0x66, 0x75, 0xb2, 0xef,
|
0xb0, 0xef, 0xd1, 0xfa, 0x49, 0xad, 0xf5, 0xd9, 0x4a, 0xf2, 0x18, 0xf5, 0xd2, 0x0b, 0x88, 0x1a,
|
||||||
0xb3, 0xfa, 0x29, 0x6d, 0xf5, 0xd9, 0x6a, 0x9a, 0x8c, 0xfa, 0xf9, 0x05, 0x44, 0x9d, 0x04, 0x94,
|
0xf1, 0x29, 0x23, 0xb5, 0x08, 0x22, 0x9f, 0x84, 0x78, 0x3f, 0x79, 0x8c, 0x7a, 0xe9, 0xa1, 0x03,
|
||||||
0x91, 0x7a, 0x0c, 0x51, 0x4c, 0x43, 0xbc, 0x97, 0x26, 0xa3, 0x7e, 0x7e, 0xe8, 0x02, 0x43, 0xa3,
|
0x0c, 0x8d, 0x9a, 0x6a, 0xc1, 0x71, 0x09, 0xf9, 0x5a, 0x18, 0x18, 0x46, 0x65, 0x38, 0x29, 0xda,
|
||||||
0x66, 0x7a, 0x70, 0x5c, 0x42, 0xfe, 0x2f, 0x0a, 0x0d, 0xa3, 0x3a, 0x9a, 0x15, 0xed, 0x84, 0x25,
|
0x0d, 0x4b, 0x94, 0x81, 0xba, 0x76, 0x90, 0x0f, 0xe4, 0x62, 0x22, 0xf4, 0x2e, 0xf6, 0x84, 0xde,
|
||||||
0xda, 0x40, 0xdd, 0x3b, 0xc8, 0x0b, 0x72, 0x39, 0x95, 0x7a, 0x17, 0xfa, 0x52, 0xef, 0xb1, 0x64,
|
0xb9, 0x78, 0xa1, 0x18, 0x0b, 0xb3, 0x37, 0xc1, 0x84, 0x27, 0x5f, 0x86, 0xb6, 0xcb, 0x85, 0x21,
|
||||||
0xa3, 0x98, 0x48, 0xb3, 0xb7, 0xc1, 0x84, 0x2f, 0x6f, 0x86, 0xf6, 0xcb, 0xc5, 0x11, 0xd7, 0x29,
|
0xcf, 0x29, 0x4a, 0x69, 0x11, 0x50, 0x19, 0x88, 0x58, 0xa6, 0x9f, 0x96, 0x06, 0x82, 0xd7, 0x40,
|
||||||
0x2e, 0x69, 0x31, 0x50, 0x05, 0x88, 0x5c, 0xa6, 0xaf, 0x96, 0x06, 0x82, 0x37, 0x40, 0xb1, 0xe5,
|
0xbe, 0xe9, 0xd5, 0x3a, 0x89, 0xe8, 0xcd, 0x21, 0x80, 0x6b, 0x5e, 0xcd, 0x4f, 0xc0, 0x4d, 0x8a,
|
||||||
0xd7, 0xbb, 0x85, 0xe8, 0xcd, 0x11, 0x80, 0xab, 0x7e, 0x3d, 0x48, 0xc1, 0x4d, 0x8a, 0x1d, 0x8b,
|
0x1b, 0x8b, 0x5d, 0x24, 0x21, 0xe0, 0x27, 0x60, 0xb2, 0x93, 0xf0, 0x75, 0x75, 0x50, 0x1a, 0x02,
|
||||||
0xbf, 0x48, 0x42, 0xc0, 0x8f, 0xc1, 0x64, 0xb7, 0xe0, 0xeb, 0xee, 0xc0, 0x1e, 0x01, 0x87, 0x34,
|
0x87, 0x34, 0x69, 0x02, 0x72, 0x5a, 0x04, 0xb2, 0xce, 0x09, 0x8a, 0xe0, 0x04, 0x34, 0xd1, 0xa5,
|
||||||
0x6b, 0x0a, 0x72, 0x5a, 0x24, 0xb2, 0x2e, 0x05, 0xc5, 0x70, 0x02, 0x9a, 0xe8, 0x56, 0x4d, 0x7a,
|
0x9a, 0xb4, 0xca, 0x70, 0xe8, 0x41, 0xe5, 0xb6, 0x82, 0xee, 0x9c, 0xa0, 0x08, 0xce, 0xfc, 0x31,
|
||||||
0x65, 0x34, 0xf4, 0xb0, 0x76, 0x5b, 0x41, 0x77, 0x29, 0x28, 0x86, 0x33, 0x7f, 0x2c, 0x80, 0xe9,
|
0x07, 0xa6, 0x13, 0xe5, 0xdf, 0x21, 0x9b, 0x46, 0xe5, 0xf1, 0x03, 0x33, 0x8d, 0x82, 0x3b, 0x50,
|
||||||
0x54, 0xfb, 0x77, 0xc8, 0xae, 0x51, 0x75, 0xfc, 0xc0, 0x5c, 0xa3, 0xe0, 0x0e, 0xd4, 0x35, 0x0a,
|
0xd3, 0x28, 0xc8, 0x57, 0x62, 0x9a, 0x18, 0xf4, 0x00, 0xd3, 0x3c, 0xcd, 0x01, 0xd8, 0xef, 0xc6,
|
||||||
0xf2, 0xb5, 0xb8, 0x26, 0x01, 0x3d, 0xc4, 0x35, 0xdf, 0xe4, 0x01, 0x1c, 0x0c, 0x63, 0xf8, 0x39,
|
0xf0, 0x4b, 0x30, 0xa1, 0x02, 0xe6, 0x4b, 0x26, 0x95, 0x28, 0xbd, 0xeb, 0xfc, 0xa1, 0x51, 0x7b,
|
||||||
0x98, 0x50, 0x09, 0xf3, 0x15, 0x8b, 0x4a, 0x5c, 0xde, 0x75, 0xfd, 0xd0, 0xa8, 0x7d, 0xfd, 0x7f,
|
0xea, 0xff, 0xec, 0x9e, 0xea, 0x7f, 0x72, 0x10, 0x7d, 0x52, 0x94, 0x75, 0x52, 0x7b, 0xa5, 0x2f,
|
||||||
0x7e, 0x57, 0xfd, 0x3f, 0x39, 0x88, 0x39, 0x29, 0xae, 0x3a, 0x59, 0xb3, 0x92, 0xf9, 0x5d, 0xbf,
|
0xc0, 0xa4, 0xdf, 0x69, 0x30, 0xf2, 0xa3, 0x37, 0x18, 0x52, 0xe1, 0x51, 0x6b, 0x11, 0x41, 0xc2,
|
||||||
0x45, 0x54, 0xc8, 0xfe, 0x13, 0x2d, 0x72, 0x68, 0x03, 0x8a, 0xf9, 0x6b, 0x0e, 0x1c, 0xeb, 0x4f,
|
0x1a, 0x98, 0xc6, 0xf1, 0x1a, 0x7f, 0x7c, 0xa4, 0xdf, 0x98, 0x13, 0x0d, 0x45, 0xa2, 0xb8, 0x4f,
|
||||||
0x4e, 0xfb, 0x1a, 0xe2, 0x1e, 0x0f, 0x9d, 0x44, 0xf3, 0xfb, 0xda, 0x78, 0xdc, 0x7b, 0xee, 0x72,
|
0xa0, 0x9a, 0xbf, 0xf7, 0x9a, 0x55, 0xbd, 0xbb, 0x7f, 0xa2, 0x59, 0x0f, 0xaf, 0xcb, 0xfa, 0x4f,
|
||||||
0x1a, 0xfd, 0x2d, 0x7d, 0x88, 0xfd, 0x4f, 0xa2, 0x5f, 0x0c, 0x1f, 0xd7, 0xf6, 0x77, 0x8a, 0x33,
|
0x58, 0xf6, 0xe7, 0x2c, 0x98, 0xeb, 0x4d, 0x13, 0x23, 0xb5, 0xd3, 0x0f, 0x07, 0xce, 0x04, 0xb2,
|
||||||
0x5a, 0xd9, 0xee, 0x47, 0xb6, 0x9f, 0xf3, 0xe0, 0xc4, 0xb0, 0xd4, 0x0e, 0xab, 0xfa, 0x75, 0x45,
|
0x23, 0x5d, 0x3a, 0xea, 0x02, 0xf6, 0x36, 0x17, 0x48, 0x58, 0x22, 0x77, 0xe0, 0x96, 0x30, 0x7f,
|
||||||
0x9d, 0xc2, 0x4e, 0xbe, 0xae, 0xbc, 0x0c, 0x0d, 0x63, 0xc8, 0x78, 0xd0, 0x85, 0x49, 0x3c, 0xc0,
|
0x49, 0xea, 0x68, 0xf4, 0x91, 0xc3, 0x57, 0x83, 0xfb, 0xf2, 0xd1, 0x94, 0x74, 0x5a, 0x0b, 0xdb,
|
||||||
0xdc, 0x03, 0x73, 0x29, 0xdb, 0x25, 0x6a, 0xad, 0x6e, 0xf6, 0xfe, 0x1b, 0x85, 0xc6, 0xdc, 0x7a,
|
0x73, 0x6f, 0xfe, 0xaa, 0xd5, 0xf4, 0x6b, 0x16, 0x1c, 0x1f, 0x54, 0x22, 0xc0, 0x8a, 0x9e, 0xd2,
|
||||||
0x06, 0x0f, 0xca, 0x94, 0xce, 0x78, 0x85, 0x28, 0xbc, 0xf6, 0x57, 0x88, 0x27, 0x83, 0xf6, 0x52,
|
0x29, 0x25, 0x95, 0xe2, 0x53, 0xba, 0x17, 0x81, 0x61, 0x0c, 0x68, 0x33, 0x3b, 0x30, 0xb1, 0x41,
|
||||||
0xbe, 0x3f, 0x10, 0x7b, 0x7d, 0x0a, 0x4e, 0xa7, 0x9d, 0x34, 0x68, 0xb0, 0xb3, 0x51, 0x68, 0x9c,
|
0xde, 0x1d, 0x30, 0x9f, 0xb0, 0x7c, 0xac, 0x66, 0xd3, 0x4d, 0xc3, 0xff, 0xc3, 0xc0, 0x98, 0xdf,
|
||||||
0xae, 0x66, 0x31, 0xa1, 0x6c, 0xf9, 0xac, 0x48, 0x2b, 0x1c, 0x52, 0xa4, 0x7d, 0x95, 0x07, 0xe3,
|
0x48, 0xa1, 0x41, 0xa9, 0xdc, 0x29, 0xd3, 0xac, 0xdc, 0x2b, 0x9f, 0x66, 0x3d, 0xea, 0xd7, 0x97,
|
||||||
0xb2, 0xa9, 0x3c, 0x84, 0xa7, 0x80, 0x6b, 0xa9, 0xa7, 0x80, 0x73, 0x23, 0xd2, 0xab, 0xdc, 0x51,
|
0x72, 0xad, 0x03, 0xd1, 0xd7, 0x67, 0xe0, 0x54, 0xd2, 0x07, 0xfa, 0x15, 0x76, 0x26, 0x0c, 0x8c,
|
||||||
0xe6, 0xe0, 0x7f, 0xb3, 0x6f, 0xf0, 0x3f, 0xbf, 0x23, 0xd2, 0xe8, 0x31, 0xff, 0x5d, 0x30, 0x15,
|
0x53, 0x95, 0x34, 0x22, 0x94, 0xce, 0x9f, 0xe6, 0xc8, 0xb9, 0xc3, 0x71, 0x64, 0xf3, 0x9b, 0x2c,
|
||||||
0x2b, 0x84, 0x6f, 0x89, 0x22, 0xaf, 0xbb, 0xe1, 0x9c, 0xf4, 0x6d, 0x3c, 0x1b, 0xc6, 0x6d, 0x70,
|
0x18, 0x97, 0xcd, 0xc9, 0x21, 0x8c, 0x94, 0xae, 0x24, 0x46, 0x4a, 0x67, 0x87, 0x64, 0x38, 0x79,
|
||||||
0xcc, 0x61, 0x52, 0x50, 0x4a, 0x68, 0xd8, 0x9b, 0xb0, 0xe0, 0x0e, 0x92, 0x0f, 0x5d, 0x53, 0x3d,
|
0xa3, 0xd4, 0x01, 0xd2, 0xf5, 0x9e, 0x01, 0xd2, 0xb9, 0x5d, 0x91, 0x86, 0x8f, 0x8b, 0xde, 0x03,
|
||||||
0xee, 0xf8, 0xc5, 0x2a, 0xe6, 0xa8, 0x5c, 0x78, 0xfa, 0xa2, 0x3c, 0xf6, 0xec, 0x45, 0x79, 0xec,
|
0x53, 0x91, 0x40, 0xf8, 0x96, 0x28, 0x16, 0x75, 0x57, 0x95, 0x91, 0xb6, 0x8d, 0x66, 0x0c, 0x51,
|
||||||
0xf9, 0x8b, 0xf2, 0xd8, 0x97, 0x51, 0x39, 0xf7, 0x34, 0x2a, 0xe7, 0x9e, 0x45, 0xe5, 0xdc, 0xf3,
|
0x3b, 0x15, 0x51, 0x98, 0x14, 0x14, 0x62, 0x12, 0xf6, 0xc7, 0x2c, 0xa8, 0xfd, 0xf8, 0xc0, 0x74,
|
||||||
0xa8, 0x9c, 0xfb, 0x23, 0x2a, 0xe7, 0xbe, 0xfd, 0xb3, 0x3c, 0xf6, 0x49, 0xbe, 0xb3, 0xf8, 0x77,
|
0xaa, 0x4b, 0xdd, 0x1f, 0x13, 0xca, 0xe7, 0x1f, 0x3f, 0x2f, 0x8e, 0x3d, 0x79, 0x5e, 0x1c, 0x7b,
|
||||||
0x00, 0x00, 0x00, 0xff, 0xff, 0x61, 0x55, 0xfd, 0xeb, 0x81, 0x17, 0x00, 0x00,
|
0xf6, 0xbc, 0x38, 0xf6, 0x75, 0x58, 0xcc, 0x3c, 0x0e, 0x8b, 0x99, 0x27, 0x61, 0x31, 0xf3, 0x2c,
|
||||||
|
0x2c, 0x66, 0xfe, 0x08, 0x8b, 0x99, 0xef, 0xfe, 0x2c, 0x8e, 0x7d, 0x9a, 0x6d, 0x2f, 0xfd, 0x1d,
|
||||||
|
0x00, 0x00, 0xff, 0xff, 0x3c, 0x26, 0x41, 0xcb, 0x94, 0x19, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v1";
|
option go_package = "v1";
|
||||||
|
@ -258,6 +257,17 @@ message ObjectMetricSource {
|
||||||
|
|
||||||
// targetValue is the target value of the metric (as a quantity).
|
// targetValue is the target value of the metric (as a quantity).
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric.
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
|
||||||
|
|
||||||
|
// averageValue is the target value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ObjectMetricStatus indicates the current value of a metric describing a
|
// ObjectMetricStatus indicates the current value of a metric describing a
|
||||||
|
@ -271,6 +281,17 @@ message ObjectMetricStatus {
|
||||||
|
|
||||||
// currentValue is the current value of the metric (as a quantity).
|
// currentValue is the current value of the metric (as a quantity).
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
|
||||||
|
|
||||||
|
// averageValue is the current value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
||||||
|
@ -284,6 +305,12 @@ message PodsMetricSource {
|
||||||
// targetAverageValue is the target value of the average of the
|
// targetAverageValue is the target value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
||||||
|
@ -295,6 +322,12 @@ message PodsMetricStatus {
|
||||||
// currentAverageValue is the current value of the average of the
|
// currentAverageValue is the current value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResourceMetricSource indicates how to scale on a resource metric known to
|
// ResourceMetricSource indicates how to scale on a resource metric known to
|
||||||
|
|
|
@ -211,6 +211,16 @@ type ObjectMetricSource struct {
|
||||||
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
||||||
// targetValue is the target value of the metric (as a quantity).
|
// targetValue is the target value of the metric (as a quantity).
|
||||||
TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"`
|
TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric.
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,name=selector"`
|
||||||
|
// averageValue is the target value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
AverageValue *resource.Quantity `json:"averageValue,omitempty" protobuf:"bytes,5,name=averageValue"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
||||||
|
@ -223,6 +233,12 @@ type PodsMetricSource struct {
|
||||||
// targetAverageValue is the target value of the average of the
|
// targetAverageValue is the target value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"`
|
TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,3,name=selector"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResourceMetricSource indicates how to scale on a resource metric known to
|
// ResourceMetricSource indicates how to scale on a resource metric known to
|
||||||
|
@ -344,6 +360,16 @@ type ObjectMetricStatus struct {
|
||||||
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
||||||
// currentValue is the current value of the metric (as a quantity).
|
// currentValue is the current value of the metric (as a quantity).
|
||||||
CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"`
|
CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,name=selector"`
|
||||||
|
// averageValue is the current value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
AverageValue *resource.Quantity `json:"averageValue,omitempty" protobuf:"bytes,5,name=averageValue"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
||||||
|
@ -354,6 +380,12 @@ type PodsMetricStatus struct {
|
||||||
// currentAverageValue is the current value of the average of the
|
// currentAverageValue is the current value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"`
|
CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,3,name=selector"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResourceMetricStatus indicates the current value of a resource metric known to
|
// ResourceMetricStatus indicates the current value of a resource metric known to
|
||||||
|
|
|
@ -148,10 +148,12 @@ func (MetricStatus) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_ObjectMetricSource = map[string]string{
|
var map_ObjectMetricSource = map[string]string{
|
||||||
"": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).",
|
"": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).",
|
||||||
"target": "target is the described Kubernetes object.",
|
"target": "target is the described Kubernetes object.",
|
||||||
"metricName": "metricName is the name of the metric in question.",
|
"metricName": "metricName is the name of the metric in question.",
|
||||||
"targetValue": "targetValue is the target value of the metric (as a quantity).",
|
"targetValue": "targetValue is the target value of the metric (as a quantity).",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric. When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping When unset, just the metricName will be used to gather metrics.",
|
||||||
|
"averageValue": "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ObjectMetricSource) SwaggerDoc() map[string]string {
|
func (ObjectMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
@ -163,6 +165,8 @@ var map_ObjectMetricStatus = map[string]string{
|
||||||
"target": "target is the described Kubernetes object.",
|
"target": "target is the described Kubernetes object.",
|
||||||
"metricName": "metricName is the name of the metric in question.",
|
"metricName": "metricName is the name of the metric in question.",
|
||||||
"currentValue": "currentValue is the current value of the metric (as a quantity).",
|
"currentValue": "currentValue is the current value of the metric (as a quantity).",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.",
|
||||||
|
"averageValue": "averageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ObjectMetricStatus) SwaggerDoc() map[string]string {
|
func (ObjectMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
@ -173,6 +177,7 @@ var map_PodsMetricSource = map[string]string{
|
||||||
"": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
"": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
||||||
"metricName": "metricName is the name of the metric in question",
|
"metricName": "metricName is the name of the metric in question",
|
||||||
"targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
"targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping When unset, just the metricName will be used to gather metrics.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (PodsMetricSource) SwaggerDoc() map[string]string {
|
func (PodsMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
@ -183,6 +188,7 @@ var map_PodsMetricStatus = map[string]string{
|
||||||
"": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).",
|
"": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).",
|
||||||
"metricName": "metricName is the name of the metric in question",
|
"metricName": "metricName is the name of the metric in question",
|
||||||
"currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
"currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
@ -190,8 +196,8 @@ func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_ResourceMetricSource = map[string]string{
|
var map_ResourceMetricSource = map[string]string{
|
||||||
"": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.",
|
"": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.",
|
||||||
"name": "name is the name of the resource in question.",
|
"name": "name is the name of the resource in question.",
|
||||||
"targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.",
|
"targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.",
|
||||||
"targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.",
|
"targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.",
|
||||||
}
|
}
|
||||||
|
@ -201,8 +207,8 @@ func (ResourceMetricSource) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_ResourceMetricStatus = map[string]string{
|
var map_ResourceMetricStatus = map[string]string{
|
||||||
"": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
"": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
||||||
"name": "name is the name of the resource in question.",
|
"name": "name is the name of the resource in question.",
|
||||||
"currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.",
|
"currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.",
|
||||||
"currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.",
|
"currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.",
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ limitations under the License.
|
||||||
package v1
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
runtime "k8s.io/apimachinery/pkg/runtime"
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -46,30 +46,18 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MetricSelector != nil {
|
if in.MetricSelector != nil {
|
||||||
in, out := &in.MetricSelector, &out.MetricSelector
|
in, out := &in.MetricSelector, &out.MetricSelector
|
||||||
if *in == nil {
|
*out = new(metav1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(meta_v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetValue != nil {
|
if in.TargetValue != nil {
|
||||||
in, out := &in.TargetValue, &out.TargetValue
|
in, out := &in.TargetValue, &out.TargetValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetAverageValue != nil {
|
if in.TargetAverageValue != nil {
|
||||||
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -89,22 +77,14 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MetricSelector != nil {
|
if in.MetricSelector != nil {
|
||||||
in, out := &in.MetricSelector, &out.MetricSelector
|
in, out := &in.MetricSelector, &out.MetricSelector
|
||||||
if *in == nil {
|
*out = new(metav1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(meta_v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
out.CurrentValue = in.CurrentValue.DeepCopy()
|
out.CurrentValue = in.CurrentValue.DeepCopy()
|
||||||
if in.CurrentAverageValue != nil {
|
if in.CurrentAverageValue != nil {
|
||||||
in, out := &in.CurrentAverageValue, &out.CurrentAverageValue
|
in, out := &in.CurrentAverageValue, &out.CurrentAverageValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -203,21 +183,13 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler
|
||||||
out.ScaleTargetRef = in.ScaleTargetRef
|
out.ScaleTargetRef = in.ScaleTargetRef
|
||||||
if in.MinReplicas != nil {
|
if in.MinReplicas != nil {
|
||||||
in, out := &in.MinReplicas, &out.MinReplicas
|
in, out := &in.MinReplicas, &out.MinReplicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetCPUUtilizationPercentage != nil {
|
if in.TargetCPUUtilizationPercentage != nil {
|
||||||
in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage
|
in, out := &in.TargetCPUUtilizationPercentage, &out.TargetCPUUtilizationPercentage
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -237,29 +209,17 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ObservedGeneration != nil {
|
if in.ObservedGeneration != nil {
|
||||||
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
||||||
if *in == nil {
|
*out = new(int64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.LastScaleTime != nil {
|
if in.LastScaleTime != nil {
|
||||||
in, out := &in.LastScaleTime, &out.LastScaleTime
|
in, out := &in.LastScaleTime, &out.LastScaleTime
|
||||||
if *in == nil {
|
*out = (*in).DeepCopy()
|
||||||
*out = nil
|
|
||||||
} else {
|
|
||||||
*out = (*in).DeepCopy()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.CurrentCPUUtilizationPercentage != nil {
|
if in.CurrentCPUUtilizationPercentage != nil {
|
||||||
in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage
|
in, out := &in.CurrentCPUUtilizationPercentage, &out.CurrentCPUUtilizationPercentage
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -279,39 +239,23 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Object != nil {
|
if in.Object != nil {
|
||||||
in, out := &in.Object, &out.Object
|
in, out := &in.Object, &out.Object
|
||||||
if *in == nil {
|
*out = new(ObjectMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ObjectMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Pods != nil {
|
if in.Pods != nil {
|
||||||
in, out := &in.Pods, &out.Pods
|
in, out := &in.Pods, &out.Pods
|
||||||
if *in == nil {
|
*out = new(PodsMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(PodsMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Resource != nil {
|
if in.Resource != nil {
|
||||||
in, out := &in.Resource, &out.Resource
|
in, out := &in.Resource, &out.Resource
|
||||||
if *in == nil {
|
*out = new(ResourceMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ResourceMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.External != nil {
|
if in.External != nil {
|
||||||
in, out := &in.External, &out.External
|
in, out := &in.External, &out.External
|
||||||
if *in == nil {
|
*out = new(ExternalMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ExternalMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -331,39 +275,23 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Object != nil {
|
if in.Object != nil {
|
||||||
in, out := &in.Object, &out.Object
|
in, out := &in.Object, &out.Object
|
||||||
if *in == nil {
|
*out = new(ObjectMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ObjectMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Pods != nil {
|
if in.Pods != nil {
|
||||||
in, out := &in.Pods, &out.Pods
|
in, out := &in.Pods, &out.Pods
|
||||||
if *in == nil {
|
*out = new(PodsMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(PodsMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Resource != nil {
|
if in.Resource != nil {
|
||||||
in, out := &in.Resource, &out.Resource
|
in, out := &in.Resource, &out.Resource
|
||||||
if *in == nil {
|
*out = new(ResourceMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ResourceMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.External != nil {
|
if in.External != nil {
|
||||||
in, out := &in.External, &out.External
|
in, out := &in.External, &out.External
|
||||||
if *in == nil {
|
*out = new(ExternalMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ExternalMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -383,6 +311,16 @@ func (in *ObjectMetricSource) DeepCopyInto(out *ObjectMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.Target = in.Target
|
out.Target = in.Target
|
||||||
out.TargetValue = in.TargetValue.DeepCopy()
|
out.TargetValue = in.TargetValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(metav1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.AverageValue != nil {
|
||||||
|
in, out := &in.AverageValue, &out.AverageValue
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -401,6 +339,16 @@ func (in *ObjectMetricStatus) DeepCopyInto(out *ObjectMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.Target = in.Target
|
out.Target = in.Target
|
||||||
out.CurrentValue = in.CurrentValue.DeepCopy()
|
out.CurrentValue = in.CurrentValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(metav1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.AverageValue != nil {
|
||||||
|
in, out := &in.AverageValue, &out.AverageValue
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -418,6 +366,11 @@ func (in *ObjectMetricStatus) DeepCopy() *ObjectMetricStatus {
|
||||||
func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) {
|
func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TargetAverageValue = in.TargetAverageValue.DeepCopy()
|
out.TargetAverageValue = in.TargetAverageValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(metav1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -435,6 +388,11 @@ func (in *PodsMetricSource) DeepCopy() *PodsMetricSource {
|
||||||
func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) {
|
func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(metav1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,21 +411,13 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.TargetAverageUtilization != nil {
|
if in.TargetAverageUtilization != nil {
|
||||||
in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization
|
in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetAverageValue != nil {
|
if in.TargetAverageValue != nil {
|
||||||
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -487,12 +437,8 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.CurrentAverageUtilization != nil {
|
if in.CurrentAverageUtilization != nil {
|
||||||
in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization
|
in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
||||||
return
|
return
|
||||||
|
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v2beta1 // import "k8s.io/api/autoscaling/v2beta1"
|
package v2beta1 // import "k8s.io/api/autoscaling/v2beta1"
|
||||||
|
|
|
@ -14,9 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Code generated by protoc-gen-gogo.
|
// Code generated by protoc-gen-gogo. DO NOT EDIT.
|
||||||
// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto
|
// source: k8s.io/kubernetes/vendor/k8s.io/api/autoscaling/v2beta1/generated.proto
|
||||||
// DO NOT EDIT!
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Package v2beta1 is a generated protocol buffer package.
|
Package v2beta1 is a generated protocol buffer package.
|
||||||
|
@ -683,6 +682,26 @@ func (m *ObjectMetricSource) MarshalTo(dAtA []byte) (int, error) {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n23
|
i += n23
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n24, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n24
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
dAtA[i] = 0x2a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.AverageValue.Size()))
|
||||||
|
n25, err := m.AverageValue.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n25
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -704,11 +723,11 @@ func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0xa
|
dAtA[i] = 0xa
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Target.Size()))
|
||||||
n24, err := m.Target.MarshalTo(dAtA[i:])
|
n26, err := m.Target.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n24
|
i += n26
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName)))
|
i = encodeVarintGenerated(dAtA, i, uint64(len(m.MetricName)))
|
||||||
|
@ -716,11 +735,31 @@ func (m *ObjectMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentValue.Size()))
|
||||||
n25, err := m.CurrentValue.MarshalTo(dAtA[i:])
|
n27, err := m.CurrentValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n25
|
i += n27
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x22
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n28, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n28
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
dAtA[i] = 0x2a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.AverageValue.Size()))
|
||||||
|
n29, err := m.AverageValue.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n29
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -746,11 +785,21 @@ func (m *PodsMetricSource) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
||||||
n26, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
n30, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n26
|
i += n30
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n31, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n31
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -776,11 +825,21 @@ func (m *PodsMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x12
|
dAtA[i] = 0x12
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
||||||
n27, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
n32, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n27
|
i += n32
|
||||||
|
if m.Selector != nil {
|
||||||
|
dAtA[i] = 0x1a
|
||||||
|
i++
|
||||||
|
i = encodeVarintGenerated(dAtA, i, uint64(m.Selector.Size()))
|
||||||
|
n33, err := m.Selector.MarshalTo(dAtA[i:])
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
i += n33
|
||||||
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -812,11 +871,11 @@ func (m *ResourceMetricSource) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.TargetAverageValue.Size()))
|
||||||
n28, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
n34, err := m.TargetAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n28
|
i += n34
|
||||||
}
|
}
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
@ -848,32 +907,14 @@ func (m *ResourceMetricStatus) MarshalTo(dAtA []byte) (int, error) {
|
||||||
dAtA[i] = 0x1a
|
dAtA[i] = 0x1a
|
||||||
i++
|
i++
|
||||||
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
i = encodeVarintGenerated(dAtA, i, uint64(m.CurrentAverageValue.Size()))
|
||||||
n29, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
n35, err := m.CurrentAverageValue.MarshalTo(dAtA[i:])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
i += n29
|
i += n35
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeFixed64Generated(dAtA []byte, offset int, v uint64) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
dAtA[offset+4] = uint8(v >> 32)
|
|
||||||
dAtA[offset+5] = uint8(v >> 40)
|
|
||||||
dAtA[offset+6] = uint8(v >> 48)
|
|
||||||
dAtA[offset+7] = uint8(v >> 56)
|
|
||||||
return offset + 8
|
|
||||||
}
|
|
||||||
func encodeFixed32Generated(dAtA []byte, offset int, v uint32) int {
|
|
||||||
dAtA[offset] = uint8(v)
|
|
||||||
dAtA[offset+1] = uint8(v >> 8)
|
|
||||||
dAtA[offset+2] = uint8(v >> 16)
|
|
||||||
dAtA[offset+3] = uint8(v >> 24)
|
|
||||||
return offset + 4
|
|
||||||
}
|
|
||||||
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
func encodeVarintGenerated(dAtA []byte, offset int, v uint64) int {
|
||||||
for v >= 1<<7 {
|
for v >= 1<<7 {
|
||||||
dAtA[offset] = uint8(v&0x7f | 0x80)
|
dAtA[offset] = uint8(v&0x7f | 0x80)
|
||||||
|
@ -1077,6 +1118,14 @@ func (m *ObjectMetricSource) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.TargetValue.Size()
|
l = m.TargetValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
l = m.AverageValue.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1089,6 +1138,14 @@ func (m *ObjectMetricStatus) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.CurrentValue.Size()
|
l = m.CurrentValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
|
if m.AverageValue != nil {
|
||||||
|
l = m.AverageValue.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1099,6 +1156,10 @@ func (m *PodsMetricSource) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.TargetAverageValue.Size()
|
l = m.TargetAverageValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1109,6 +1170,10 @@ func (m *PodsMetricStatus) Size() (n int) {
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
l = m.CurrentAverageValue.Size()
|
l = m.CurrentAverageValue.Size()
|
||||||
n += 1 + l + sovGenerated(uint64(l))
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
if m.Selector != nil {
|
||||||
|
l = m.Selector.Size()
|
||||||
|
n += 1 + l + sovGenerated(uint64(l))
|
||||||
|
}
|
||||||
return n
|
return n
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1292,6 +1357,8 @@ func (this *ObjectMetricSource) String() string {
|
||||||
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`TargetValue:` + strings.Replace(strings.Replace(this.TargetValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
|
`AverageValue:` + strings.Replace(fmt.Sprintf("%v", this.AverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1304,6 +1371,8 @@ func (this *ObjectMetricStatus) String() string {
|
||||||
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
`Target:` + strings.Replace(strings.Replace(this.Target.String(), "CrossVersionObjectReference", "CrossVersionObjectReference", 1), `&`, ``, 1) + `,`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`CurrentValue:` + strings.Replace(strings.Replace(this.CurrentValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
|
`AverageValue:` + strings.Replace(fmt.Sprintf("%v", this.AverageValue), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1315,6 +1384,7 @@ func (this *PodsMetricSource) String() string {
|
||||||
s := strings.Join([]string{`&PodsMetricSource{`,
|
s := strings.Join([]string{`&PodsMetricSource{`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`TargetAverageValue:` + strings.Replace(strings.Replace(this.TargetAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -1326,6 +1396,7 @@ func (this *PodsMetricStatus) String() string {
|
||||||
s := strings.Join([]string{`&PodsMetricStatus{`,
|
s := strings.Join([]string{`&PodsMetricStatus{`,
|
||||||
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
`MetricName:` + fmt.Sprintf("%v", this.MetricName) + `,`,
|
||||||
`CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
`CurrentAverageValue:` + strings.Replace(strings.Replace(this.CurrentAverageValue.String(), "Quantity", "k8s_io_apimachinery_pkg_api_resource.Quantity", 1), `&`, ``, 1) + `,`,
|
||||||
|
`Selector:` + strings.Replace(fmt.Sprintf("%v", this.Selector), "LabelSelector", "k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector", 1) + `,`,
|
||||||
`}`,
|
`}`,
|
||||||
}, "")
|
}, "")
|
||||||
return s
|
return s
|
||||||
|
@ -3192,6 +3263,72 @@ func (m *ObjectMetricSource) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 5:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field AverageValue", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.AverageValue == nil {
|
||||||
|
m.AverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{}
|
||||||
|
}
|
||||||
|
if err := m.AverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3331,6 +3468,72 @@ func (m *ObjectMetricStatus) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 4:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
|
case 5:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field AverageValue", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.AverageValue == nil {
|
||||||
|
m.AverageValue = &k8s_io_apimachinery_pkg_api_resource.Quantity{}
|
||||||
|
}
|
||||||
|
if err := m.AverageValue.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3440,6 +3643,39 @@ func (m *PodsMetricSource) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3549,6 +3785,39 @@ func (m *PodsMetricStatus) Unmarshal(dAtA []byte) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iNdEx = postIndex
|
iNdEx = postIndex
|
||||||
|
case 3:
|
||||||
|
if wireType != 2 {
|
||||||
|
return fmt.Errorf("proto: wrong wireType = %d for field Selector", wireType)
|
||||||
|
}
|
||||||
|
var msglen int
|
||||||
|
for shift := uint(0); ; shift += 7 {
|
||||||
|
if shift >= 64 {
|
||||||
|
return ErrIntOverflowGenerated
|
||||||
|
}
|
||||||
|
if iNdEx >= l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
b := dAtA[iNdEx]
|
||||||
|
iNdEx++
|
||||||
|
msglen |= (int(b) & 0x7F) << shift
|
||||||
|
if b < 0x80 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if msglen < 0 {
|
||||||
|
return ErrInvalidLengthGenerated
|
||||||
|
}
|
||||||
|
postIndex := iNdEx + msglen
|
||||||
|
if postIndex > l {
|
||||||
|
return io.ErrUnexpectedEOF
|
||||||
|
}
|
||||||
|
if m.Selector == nil {
|
||||||
|
m.Selector = &k8s_io_apimachinery_pkg_apis_meta_v1.LabelSelector{}
|
||||||
|
}
|
||||||
|
if err := m.Selector.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
iNdEx = postIndex
|
||||||
default:
|
default:
|
||||||
iNdEx = preIndex
|
iNdEx = preIndex
|
||||||
skippy, err := skipGenerated(dAtA[iNdEx:])
|
skippy, err := skipGenerated(dAtA[iNdEx:])
|
||||||
|
@ -3941,96 +4210,98 @@ func init() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var fileDescriptorGenerated = []byte{
|
var fileDescriptorGenerated = []byte{
|
||||||
// 1441 bytes of a gzipped FileDescriptorProto
|
// 1475 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0xcd, 0x8f, 0x1b, 0xc5,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0xcb, 0x8f, 0x1b, 0x45,
|
||||||
0x12, 0x5f, 0x7f, 0xec, 0x66, 0xd3, 0xde, 0xec, 0xe6, 0x75, 0xa2, 0xc4, 0xd9, 0xbc, 0xd8, 0xab,
|
0x13, 0x5f, 0x3f, 0x76, 0xb3, 0x69, 0x6f, 0x76, 0xf7, 0xeb, 0x44, 0x89, 0xb3, 0xf9, 0x62, 0xaf,
|
||||||
0xd1, 0xd3, 0x53, 0x88, 0xc8, 0x4c, 0xe2, 0x2c, 0x1f, 0x12, 0x42, 0x62, 0x6d, 0x20, 0x89, 0x58,
|
0x2c, 0x84, 0x42, 0x44, 0x66, 0x12, 0xb3, 0x3c, 0x24, 0x84, 0xc4, 0xda, 0x40, 0x12, 0xb1, 0x4e,
|
||||||
0x27, 0xa1, 0x77, 0x13, 0x21, 0x08, 0x88, 0xf6, 0xb8, 0xe3, 0x6d, 0xd6, 0x33, 0x63, 0x75, 0xb7,
|
0x42, 0xef, 0x26, 0x42, 0x90, 0x20, 0xda, 0x33, 0x1d, 0x6f, 0xb3, 0x9e, 0x19, 0x6b, 0xba, 0x6d,
|
||||||
0xad, 0x6c, 0x10, 0x12, 0x17, 0xee, 0x1c, 0xf8, 0xb8, 0x72, 0x46, 0x70, 0x85, 0x33, 0x48, 0x48,
|
0x65, 0x83, 0x90, 0xb8, 0x70, 0xe7, 0x02, 0x67, 0x90, 0x38, 0x21, 0xb8, 0xc2, 0x99, 0x5b, 0x8e,
|
||||||
0x39, 0xe6, 0x18, 0x84, 0x64, 0x91, 0xe1, 0xbf, 0xc8, 0x09, 0x4d, 0x77, 0xcf, 0x78, 0xc6, 0xf6,
|
0x39, 0x26, 0x02, 0x59, 0x64, 0xf8, 0x2f, 0x72, 0x42, 0xfd, 0x98, 0xf1, 0x8c, 0x1f, 0x6b, 0xc7,
|
||||||
0xac, 0x1d, 0xb3, 0x09, 0x70, 0x9b, 0xee, 0xaa, 0xfa, 0x55, 0x75, 0x55, 0x75, 0x75, 0xd5, 0x80,
|
0x38, 0xe1, 0x71, 0x9b, 0xee, 0xaa, 0xfa, 0x55, 0x4f, 0xfd, 0xaa, 0xab, 0xbb, 0x1a, 0x5c, 0xdc,
|
||||||
0xcb, 0xbb, 0x2f, 0x73, 0x93, 0x7a, 0xd6, 0x6e, 0xb7, 0x41, 0x98, 0x4b, 0x04, 0xe1, 0x56, 0x8f,
|
0x7b, 0x8d, 0x19, 0xd4, 0x33, 0xf7, 0xda, 0x75, 0xe2, 0xbb, 0x84, 0x13, 0x66, 0x76, 0x88, 0x6b,
|
||||||
0xb8, 0x4d, 0x8f, 0x59, 0x9a, 0x80, 0x3b, 0xd4, 0xc2, 0x5d, 0xe1, 0x71, 0x1b, 0xb7, 0xa9, 0xdb,
|
0x7b, 0xbe, 0xa9, 0x05, 0xb8, 0x45, 0x4d, 0xdc, 0xe6, 0x1e, 0xb3, 0x70, 0x93, 0xba, 0x0d, 0xb3,
|
||||||
0xb2, 0x7a, 0x95, 0x06, 0x11, 0xf8, 0xa2, 0xd5, 0x22, 0x2e, 0x61, 0x58, 0x90, 0xa6, 0xd9, 0x61,
|
0x53, 0xae, 0x13, 0x8e, 0x2f, 0x98, 0x0d, 0xe2, 0x12, 0x1f, 0x73, 0x62, 0x1b, 0x2d, 0xdf, 0xe3,
|
||||||
0x9e, 0xf0, 0x60, 0x49, 0xf1, 0x9b, 0xb8, 0x43, 0xcd, 0x18, 0xbf, 0xa9, 0xf9, 0x57, 0xcf, 0xb7,
|
0x1e, 0x2c, 0x28, 0x7d, 0x03, 0xb7, 0xa8, 0x11, 0xd3, 0x37, 0xb4, 0xfe, 0xda, 0xb9, 0x06, 0xe5,
|
||||||
0xa8, 0xd8, 0xe9, 0x36, 0x4c, 0xdb, 0x73, 0xac, 0x96, 0xd7, 0xf2, 0x2c, 0x29, 0xd6, 0xe8, 0xde,
|
0xbb, 0xed, 0xba, 0x61, 0x79, 0x8e, 0xd9, 0xf0, 0x1a, 0x9e, 0x29, 0xcd, 0xea, 0xed, 0xdb, 0x72,
|
||||||
0x91, 0x2b, 0xb9, 0x90, 0x5f, 0x0a, 0x6e, 0xd5, 0x88, 0xa9, 0xb7, 0x3d, 0x46, 0xac, 0xde, 0x88,
|
0x24, 0x07, 0xf2, 0x4b, 0xc1, 0xad, 0x95, 0x62, 0xee, 0x2d, 0xcf, 0x27, 0x66, 0x67, 0xc0, 0xe5,
|
||||||
0xca, 0xd5, 0xf5, 0x01, 0x8f, 0x83, 0xed, 0x1d, 0xea, 0x12, 0xb6, 0x67, 0x75, 0x76, 0x5b, 0x52,
|
0xda, 0x46, 0x4f, 0xc7, 0xc1, 0xd6, 0x2e, 0x75, 0x89, 0xbf, 0x6f, 0xb6, 0xf6, 0x1a, 0xd2, 0xc8,
|
||||||
0x88, 0x11, 0xee, 0x75, 0x99, 0x4d, 0x9e, 0x48, 0x8a, 0x5b, 0x0e, 0x11, 0x78, 0x9c, 0x2e, 0x2b,
|
0x27, 0xcc, 0x6b, 0xfb, 0x16, 0x79, 0x22, 0x2b, 0x66, 0x3a, 0x84, 0xe3, 0x61, 0xbe, 0xcc, 0x51,
|
||||||
0x4d, 0x8a, 0x75, 0x5d, 0x41, 0x9d, 0x51, 0x35, 0x2f, 0x4e, 0x12, 0xe0, 0xf6, 0x0e, 0x71, 0xf0,
|
0x56, 0x7e, 0xdb, 0xe5, 0xd4, 0x19, 0x74, 0xf3, 0xca, 0x38, 0x03, 0x66, 0xed, 0x12, 0x07, 0xf7,
|
||||||
0x88, 0xdc, 0xa5, 0x34, 0xb9, 0xae, 0xa0, 0x6d, 0x8b, 0xba, 0x82, 0x0b, 0x36, 0x2c, 0x64, 0x7c,
|
0xdb, 0x95, 0xbe, 0x4a, 0x81, 0x53, 0x55, 0xdf, 0x63, 0xec, 0x06, 0xf1, 0x19, 0xf5, 0xdc, 0xab,
|
||||||
0x99, 0x01, 0xa7, 0x6b, 0xcc, 0xe3, 0xfc, 0x16, 0x61, 0x9c, 0x7a, 0xee, 0xf5, 0xc6, 0x47, 0xc4,
|
0xf5, 0x4f, 0x88, 0xc5, 0x11, 0xb9, 0x4d, 0x7c, 0xe2, 0x5a, 0x04, 0xae, 0x83, 0xec, 0x1e, 0x75,
|
||||||
0x16, 0x88, 0xdc, 0x21, 0x8c, 0xb8, 0x36, 0x81, 0x6b, 0x20, 0xbf, 0x4b, 0xdd, 0x66, 0x31, 0xb3,
|
0xed, 0x7c, 0x6a, 0x3d, 0x75, 0xe6, 0x70, 0x65, 0xe9, 0x5e, 0xb7, 0x38, 0x17, 0x74, 0x8b, 0xd9,
|
||||||
0x96, 0x39, 0x7b, 0xb8, 0xba, 0x74, 0xbf, 0x5f, 0x9e, 0xf3, 0xfb, 0xe5, 0xfc, 0x5b, 0xd4, 0x6d,
|
0x77, 0xa9, 0x6b, 0x23, 0x29, 0x11, 0x1a, 0x2e, 0x76, 0x48, 0x3e, 0x9d, 0xd4, 0xb8, 0x82, 0x1d,
|
||||||
0x22, 0x49, 0x09, 0x38, 0x5c, 0xec, 0x90, 0x62, 0x36, 0xc9, 0x71, 0x0d, 0x3b, 0x04, 0x49, 0x0a,
|
0x82, 0xa4, 0x04, 0x96, 0x01, 0xc0, 0x2d, 0xaa, 0x1d, 0xe4, 0x33, 0x52, 0x0f, 0x6a, 0x3d, 0xb0,
|
||||||
0xac, 0x00, 0x80, 0x3b, 0x54, 0x2b, 0x28, 0xe6, 0x24, 0x1f, 0xd4, 0x7c, 0x60, 0xe3, 0xc6, 0x55,
|
0x79, 0xed, 0xb2, 0x96, 0xa0, 0x98, 0x56, 0xe9, 0xeb, 0x0c, 0x38, 0xf6, 0xf6, 0x1d, 0x4e, 0x7c,
|
||||||
0x4d, 0x41, 0x31, 0x2e, 0xe3, 0xab, 0x1c, 0x38, 0xfe, 0xc6, 0x5d, 0x41, 0x98, 0x8b, 0xdb, 0x75,
|
0x17, 0x37, 0x6b, 0x84, 0xfb, 0xd4, 0xda, 0x96, 0xf1, 0x15, 0x60, 0x8e, 0x1c, 0x0b, 0x07, 0x7a,
|
||||||
0x22, 0x18, 0xb5, 0xb7, 0x64, 0x50, 0x02, 0x30, 0x47, 0xae, 0x03, 0x05, 0xda, 0xac, 0x08, 0xac,
|
0x59, 0x11, 0x58, 0x2d, 0x92, 0xa0, 0x98, 0x16, 0xf4, 0xc0, 0xb2, 0x1a, 0x6d, 0x93, 0x26, 0xb1,
|
||||||
0x1e, 0x51, 0x50, 0x8c, 0x0b, 0x7a, 0x60, 0x59, 0xad, 0xb6, 0x48, 0x9b, 0xd8, 0xc2, 0x63, 0xd2,
|
0xb8, 0xe7, 0xcb, 0xc5, 0xe6, 0xca, 0x2f, 0x19, 0xbd, 0x2c, 0x8a, 0xa2, 0x66, 0xb4, 0xf6, 0x1a,
|
||||||
0xd8, 0x42, 0xe5, 0x92, 0x39, 0x48, 0xbd, 0xc8, 0x65, 0x66, 0x67, 0xb7, 0x15, 0x6c, 0x70, 0x33,
|
0x62, 0x82, 0x19, 0x82, 0x1c, 0xa3, 0x73, 0xc1, 0xd8, 0xc2, 0x75, 0xd2, 0x0c, 0x4d, 0x2b, 0x30,
|
||||||
0x88, 0xa8, 0xd9, 0xbb, 0x68, 0x6e, 0xe2, 0x06, 0x69, 0x87, 0xa2, 0x55, 0xe8, 0xf7, 0xcb, 0xcb,
|
0xe8, 0x16, 0x97, 0x6b, 0x09, 0x38, 0xd4, 0x07, 0x0f, 0x31, 0xc8, 0x71, 0xec, 0x37, 0x08, 0xbf,
|
||||||
0xf5, 0x04, 0x1c, 0x1a, 0x82, 0x87, 0x18, 0x14, 0x04, 0x66, 0x2d, 0x22, 0x6e, 0xe1, 0x76, 0x97,
|
0x81, 0x9b, 0x6d, 0x22, 0x7f, 0x39, 0x57, 0x36, 0x0e, 0xf2, 0x66, 0x84, 0x09, 0x64, 0xbc, 0xd7,
|
||||||
0xc8, 0x23, 0x17, 0x2a, 0xe6, 0x7e, 0xda, 0xcc, 0x30, 0xeb, 0xcc, 0xb7, 0xbb, 0xd8, 0x15, 0x54,
|
0xc6, 0x2e, 0xa7, 0x7c, 0xbf, 0xb2, 0x12, 0x74, 0x8b, 0xb9, 0x9d, 0x1e, 0x0c, 0x8a, 0x63, 0xc2,
|
||||||
0xec, 0x55, 0x57, 0xfc, 0x7e, 0xb9, 0xb0, 0x3d, 0x80, 0x41, 0x71, 0x4c, 0xd8, 0x03, 0x50, 0x2d,
|
0x0e, 0x80, 0x6a, 0xb8, 0xd9, 0x21, 0x3e, 0x6e, 0x10, 0xe5, 0x29, 0x3b, 0x95, 0xa7, 0xe3, 0x41,
|
||||||
0x37, 0x7a, 0x84, 0xe1, 0x16, 0x51, 0x9a, 0xf2, 0x33, 0x69, 0x3a, 0xe1, 0xf7, 0xcb, 0x70, 0x7b,
|
0xb7, 0x08, 0x77, 0x06, 0xd0, 0xd0, 0x10, 0x0f, 0xa5, 0x6f, 0x06, 0x89, 0xe1, 0x98, 0xb7, 0xd9,
|
||||||
0x04, 0x0d, 0x8d, 0xd1, 0x60, 0x7c, 0x33, 0x1a, 0x18, 0x81, 0x45, 0x97, 0xff, 0x3b, 0x02, 0xb3,
|
0xbf, 0x83, 0x98, 0x5d, 0xb0, 0x64, 0xb5, 0x7d, 0x9f, 0xb8, 0x7f, 0x89, 0x99, 0x63, 0xfa, 0xb7,
|
||||||
0x03, 0x96, 0xec, 0x2e, 0x63, 0xc4, 0xfd, 0x4b, 0x91, 0x39, 0xae, 0x8f, 0xb5, 0x54, 0x8b, 0x61,
|
0x96, 0xaa, 0x31, 0x2c, 0x94, 0x40, 0x86, 0xfb, 0xe0, 0xa8, 0x1e, 0xcf, 0x80, 0xa0, 0x13, 0x41,
|
||||||
0xa1, 0x04, 0x32, 0xdc, 0x03, 0xc7, 0xf4, 0xfa, 0x00, 0x02, 0x74, 0xd2, 0xef, 0x97, 0x8f, 0xd5,
|
0xb7, 0x78, 0xb4, 0x3a, 0x08, 0x87, 0x86, 0xf9, 0x28, 0xfd, 0x92, 0x06, 0x27, 0x2e, 0x79, 0x3e,
|
||||||
0x46, 0xe1, 0xd0, 0x38, 0x1d, 0xc6, 0x4f, 0x59, 0x70, 0xf2, 0x8a, 0xc7, 0xe8, 0x3d, 0xcf, 0x15,
|
0xbd, 0xeb, 0xb9, 0x1c, 0x37, 0xaf, 0x79, 0xf6, 0xa6, 0x2e, 0x90, 0xc4, 0x87, 0x1f, 0x83, 0x45,
|
||||||
0xb8, 0x7d, 0xc3, 0x6b, 0x6e, 0xe8, 0xaa, 0x4a, 0x18, 0xfc, 0x10, 0x2c, 0x06, 0xde, 0x6b, 0x62,
|
0x11, 0x3d, 0x1b, 0x73, 0x2c, 0x39, 0xca, 0x95, 0xcf, 0x4f, 0x16, 0x6b, 0x55, 0x18, 0x6a, 0x84,
|
||||||
0x81, 0x65, 0x8c, 0x0a, 0x95, 0x0b, 0xd3, 0xf9, 0x5a, 0x15, 0x86, 0x3a, 0x11, 0x78, 0x10, 0xd5,
|
0xe3, 0x1e, 0xab, 0xbd, 0x39, 0x14, 0xa1, 0xc2, 0x5b, 0x20, 0xcb, 0x5a, 0xc4, 0xd2, 0x4c, 0xbe,
|
||||||
0xc1, 0x1e, 0x8a, 0x50, 0xe1, 0xfb, 0x20, 0xcf, 0x3b, 0xc4, 0xd6, 0x91, 0x7c, 0xc5, 0xdc, 0xbf,
|
0x6e, 0x1c, 0x5c, 0xa8, 0x8d, 0x11, 0x0b, 0xdd, 0x6e, 0x11, 0xab, 0x57, 0x4c, 0xc4, 0x08, 0x49,
|
||||||
0xba, 0x9b, 0x29, 0x86, 0x6e, 0x75, 0x88, 0x3d, 0x28, 0x26, 0xc1, 0x0a, 0x49, 0x58, 0x48, 0xc0,
|
0x58, 0x48, 0xc0, 0x02, 0x93, 0x09, 0xa7, 0xb9, 0x7b, 0x63, 0x5a, 0x07, 0x12, 0xa4, 0xb2, 0xac,
|
||||||
0x02, 0x97, 0x09, 0xa7, 0x63, 0xf7, 0xea, 0xac, 0x0a, 0x24, 0x48, 0x75, 0x59, 0xab, 0x58, 0x50,
|
0x5d, 0x2c, 0xa8, 0x31, 0xd2, 0xe0, 0xa5, 0x2f, 0x32, 0x60, 0x7d, 0x84, 0x65, 0xd5, 0x73, 0x6d,
|
||||||
0x6b, 0xa4, 0xc1, 0x8d, 0xcf, 0x72, 0x60, 0x2d, 0x45, 0xb2, 0xe6, 0xb9, 0x4d, 0x2a, 0xa8, 0xe7,
|
0xca, 0xa9, 0xe7, 0xc2, 0x4b, 0x20, 0xcb, 0xf7, 0x5b, 0x61, 0xb2, 0x6f, 0x84, 0xab, 0xdd, 0xd9,
|
||||||
0xc2, 0x2b, 0x20, 0x2f, 0xf6, 0x3a, 0x61, 0xb2, 0xaf, 0x87, 0xd6, 0x6e, 0xef, 0x75, 0xc8, 0xe3,
|
0x6f, 0x91, 0xc7, 0xdd, 0xe2, 0x73, 0xe3, 0xec, 0x85, 0x1e, 0x92, 0x08, 0x70, 0x2b, 0xfa, 0xab,
|
||||||
0x7e, 0xf9, 0x7f, 0x93, 0xe4, 0x03, 0x3e, 0x24, 0x11, 0xe0, 0x66, 0x74, 0xaa, 0x6c, 0x02, 0x4b,
|
0x74, 0x02, 0x4b, 0x2f, 0xeb, 0x71, 0xb7, 0x38, 0xe4, 0x84, 0x32, 0x22, 0xa4, 0xe4, 0xe2, 0x45,
|
||||||
0x9b, 0xf5, 0xb8, 0x5f, 0x1e, 0xf3, 0xac, 0x99, 0x11, 0x52, 0xd2, 0xf8, 0xa0, 0x36, 0xb4, 0x31,
|
0x6d, 0x68, 0x62, 0xc6, 0x77, 0x7c, 0xec, 0x32, 0xe5, 0x89, 0x3a, 0x61, 0xae, 0x9f, 0x9d, 0x8c,
|
||||||
0x17, 0xdb, 0x0c, 0xbb, 0x5c, 0x69, 0xa2, 0x4e, 0x98, 0xeb, 0xe7, 0xa6, 0x0b, 0x77, 0x20, 0x51,
|
0x6e, 0x61, 0x51, 0x59, 0xd3, 0xab, 0x80, 0x5b, 0x03, 0x68, 0x68, 0x88, 0x07, 0xf8, 0x3c, 0x58,
|
||||||
0x5d, 0xd5, 0x56, 0xc0, 0xcd, 0x11, 0x34, 0x34, 0x46, 0x03, 0xfc, 0x3f, 0x58, 0x60, 0x04, 0x73,
|
0xf0, 0x09, 0x66, 0x9e, 0x2b, 0xd3, 0xfc, 0x70, 0x2f, 0xb8, 0x48, 0xce, 0x22, 0x2d, 0x85, 0x2f,
|
||||||
0xcf, 0x95, 0x69, 0x7e, 0x78, 0xe0, 0x5c, 0x24, 0x77, 0x91, 0xa6, 0xc2, 0xe7, 0xc0, 0x21, 0x87,
|
0x80, 0x43, 0x0e, 0x61, 0x0c, 0x37, 0x48, 0x7e, 0x5e, 0x2a, 0xae, 0x68, 0xc5, 0x43, 0x35, 0x35,
|
||||||
0x70, 0x8e, 0x5b, 0xa4, 0x38, 0x2f, 0x19, 0x57, 0x34, 0xe3, 0xa1, 0xba, 0xda, 0x46, 0x21, 0xdd,
|
0x8d, 0x42, 0x79, 0xe9, 0x61, 0x0a, 0x9c, 0x1a, 0x11, 0xc7, 0x2d, 0xca, 0x38, 0xbc, 0x39, 0x90,
|
||||||
0xf8, 0x35, 0x03, 0x4e, 0xa7, 0xf8, 0x71, 0x93, 0x72, 0x01, 0x6f, 0x8f, 0xe4, 0xb3, 0x39, 0x65,
|
0xcf, 0xc6, 0x84, 0xb5, 0x83, 0x32, 0x95, 0xcd, 0xab, 0xda, 0xf7, 0x62, 0x38, 0x13, 0xcb, 0xe5,
|
||||||
0xed, 0xa0, 0x5c, 0x65, 0xf3, 0x51, 0xad, 0x7b, 0x31, 0xdc, 0x89, 0xe5, 0xf2, 0x6d, 0x30, 0x4f,
|
0x9b, 0x60, 0x9e, 0x72, 0xe2, 0x08, 0x56, 0x32, 0x67, 0x72, 0xe5, 0x57, 0xa7, 0xcc, 0xb5, 0xca,
|
||||||
0x05, 0x71, 0x82, 0xa8, 0xe4, 0xce, 0x16, 0x2a, 0x2f, 0xcd, 0x98, 0x6b, 0xd5, 0x23, 0x5a, 0xc7,
|
0x11, 0xed, 0x63, 0xfe, 0xb2, 0x40, 0x43, 0x0a, 0xb4, 0xf4, 0x6b, 0x7a, 0xe4, 0xbf, 0x89, 0x84,
|
||||||
0xfc, 0xd5, 0x00, 0x0d, 0x29, 0x50, 0xe3, 0xb7, 0x6c, 0xea, 0xd9, 0x82, 0x84, 0x87, 0x1f, 0x83,
|
0x87, 0x9f, 0x82, 0x65, 0x39, 0x52, 0x95, 0x19, 0x91, 0xdb, 0xfa, 0x0f, 0xc7, 0xee, 0xa9, 0x03,
|
||||||
0x65, 0xb9, 0x52, 0x95, 0x19, 0x91, 0x3b, 0xfa, 0x84, 0x13, 0xef, 0xd4, 0x3e, 0x0f, 0x7a, 0xf5,
|
0x0e, 0xf4, 0xca, 0x71, 0xbd, 0x94, 0xe5, 0xed, 0x04, 0x34, 0xea, 0x73, 0x05, 0x2f, 0x80, 0x9c,
|
||||||
0x84, 0x36, 0x65, 0x79, 0x2b, 0x01, 0x8d, 0x86, 0x54, 0xc1, 0x8b, 0xa0, 0xe0, 0x50, 0x17, 0x91,
|
0x43, 0x5d, 0x44, 0x5a, 0x4d, 0x6a, 0x61, 0x95, 0x96, 0xf3, 0xea, 0x48, 0xaa, 0xf5, 0xa6, 0x51,
|
||||||
0x4e, 0x9b, 0xda, 0x58, 0xa5, 0xe5, 0xbc, 0x7a, 0x92, 0xea, 0x83, 0x6d, 0x14, 0xe7, 0x81, 0x2f,
|
0x5c, 0x07, 0xbe, 0x0c, 0x72, 0x0e, 0xbe, 0x13, 0x99, 0x64, 0xa4, 0xc9, 0x51, 0xed, 0x2f, 0x57,
|
||||||
0x80, 0x82, 0x83, 0xef, 0x46, 0x22, 0x39, 0x29, 0x72, 0x4c, 0xeb, 0x2b, 0xd4, 0x07, 0x24, 0x14,
|
0xeb, 0x89, 0x50, 0x5c, 0x0f, 0x5e, 0x17, 0xd9, 0x20, 0xaa, 0x34, 0xcb, 0x67, 0x65, 0x98, 0xcf,
|
||||||
0xe7, 0x83, 0x37, 0x83, 0x6c, 0x08, 0xaa, 0x34, 0x2f, 0xe6, 0xa5, 0x9b, 0xcf, 0x4d, 0x3a, 0x9f,
|
0x8e, 0xfb, 0x3f, 0x5d, 0xe4, 0x45, 0x89, 0x88, 0x65, 0x8e, 0x84, 0x40, 0x21, 0x56, 0xe9, 0xa7,
|
||||||
0x2e, 0xf2, 0x41, 0x89, 0x88, 0x65, 0x8e, 0x84, 0x40, 0x21, 0x96, 0xf1, 0x43, 0x1e, 0x9c, 0xd9,
|
0x2c, 0x38, 0x7d, 0xe0, 0xde, 0x87, 0xef, 0x00, 0xe8, 0xd5, 0x19, 0xf1, 0x3b, 0xc4, 0xbe, 0xa8,
|
||||||
0xf7, 0xee, 0xc3, 0x37, 0x01, 0xf4, 0x1a, 0x9c, 0xb0, 0x1e, 0x69, 0x5e, 0x56, 0x6d, 0x51, 0xd0,
|
0xae, 0x45, 0xe2, 0x7e, 0x22, 0x62, 0x9c, 0x51, 0x47, 0xe2, 0xd5, 0x01, 0x29, 0x1a, 0x62, 0x01,
|
||||||
0x9f, 0x04, 0x3e, 0xce, 0xa9, 0x27, 0xf1, 0xfa, 0x08, 0x15, 0x8d, 0x91, 0x80, 0x36, 0x38, 0x12,
|
0x2d, 0x70, 0x44, 0x6c, 0x06, 0x15, 0x50, 0xaa, 0xaf, 0x42, 0x4f, 0xb6, 0xd3, 0xfe, 0x17, 0x74,
|
||||||
0x5c, 0x06, 0xe5, 0x50, 0xaa, 0x5b, 0xa1, 0x27, 0xbb, 0x69, 0xff, 0xf1, 0xfb, 0xe5, 0x23, 0x9b,
|
0x8b, 0x47, 0xb6, 0xe2, 0x20, 0x28, 0x89, 0x09, 0x37, 0xc1, 0x8a, 0xae, 0xf5, 0x7d, 0x01, 0x3e,
|
||||||
0x71, 0x10, 0x94, 0xc4, 0x84, 0x1b, 0x60, 0x45, 0xd7, 0xfa, 0x21, 0x07, 0x9f, 0xd4, 0x1e, 0x58,
|
0xa1, 0x23, 0xb0, 0x52, 0x4d, 0x8a, 0x51, 0xbf, 0xbe, 0x80, 0xb0, 0x09, 0xa3, 0x3e, 0xb1, 0x23,
|
||||||
0xa9, 0x25, 0xc9, 0x68, 0x98, 0x3f, 0x80, 0x68, 0x12, 0x4e, 0x19, 0x69, 0x46, 0x10, 0xf9, 0x24,
|
0x88, 0x6c, 0x12, 0xe2, 0xad, 0xa4, 0x18, 0xf5, 0xeb, 0xc3, 0x26, 0x58, 0xd6, 0xa8, 0x3a, 0xde,
|
||||||
0xc4, 0xeb, 0x49, 0x32, 0x1a, 0xe6, 0x87, 0x6d, 0xb0, 0xac, 0x51, 0xb5, 0xbf, 0x8b, 0xf3, 0x32,
|
0xf9, 0x79, 0x49, 0xd9, 0x8b, 0x13, 0x52, 0xa6, 0x8a, 0x6e, 0x94, 0x83, 0xd5, 0x04, 0x16, 0xea,
|
||||||
0x64, 0xcf, 0x4f, 0x19, 0x32, 0x55, 0x74, 0xa3, 0x1c, 0xac, 0x25, 0xb0, 0xd0, 0x10, 0x36, 0x14,
|
0xc3, 0x86, 0x1c, 0x00, 0x2b, 0x2c, 0x71, 0x2c, 0xbf, 0x20, 0x3d, 0xbd, 0x39, 0xe5, 0x1e, 0x8c,
|
||||||
0x00, 0xd8, 0x61, 0x89, 0xe3, 0xc5, 0x05, 0xa9, 0xe9, 0xb5, 0x19, 0xef, 0x60, 0x54, 0x2b, 0x07,
|
0x6a, 0x65, 0xef, 0xf8, 0x8a, 0xa6, 0x18, 0x8a, 0xf9, 0x29, 0x7d, 0x9f, 0x01, 0xa0, 0x97, 0x61,
|
||||||
0xcf, 0x57, 0xb4, 0xc5, 0x51, 0x4c, 0x8f, 0xf1, 0x6d, 0x0e, 0x80, 0x41, 0x86, 0xc1, 0xf5, 0x44,
|
0x70, 0x23, 0x51, 0xe4, 0xd7, 0xfb, 0x8a, 0xfc, 0x6a, 0xfc, 0x72, 0x1a, 0x2b, 0xe8, 0x37, 0xc0,
|
||||||
0x91, 0x5f, 0x1b, 0x2a, 0xf2, 0x47, 0xe3, 0xcd, 0x69, 0xac, 0xa0, 0xdf, 0x02, 0x0b, 0x9e, 0xbc,
|
0x82, 0x27, 0x77, 0x9e, 0x4e, 0x86, 0xf2, 0xb8, 0x65, 0x47, 0x67, 0x69, 0x84, 0x56, 0x01, 0xa2,
|
||||||
0x79, 0x3a, 0x19, 0x2a, 0x93, 0xcc, 0x8e, 0xde, 0xd2, 0x08, 0xad, 0x0a, 0x82, 0xd2, 0xa9, 0xef,
|
0x74, 0xea, 0xfd, 0xab, 0xd1, 0xe0, 0x15, 0x90, 0x6d, 0x79, 0x76, 0x78, 0xf8, 0x9d, 0x1f, 0x87,
|
||||||
0xaf, 0x46, 0x83, 0xd7, 0x40, 0xbe, 0xe3, 0x35, 0xc3, 0xc7, 0xef, 0xc2, 0x24, 0xd4, 0x1b, 0x5e,
|
0x7a, 0xcd, 0xb3, 0x59, 0x02, 0x73, 0x51, 0xac, 0x5d, 0xcc, 0x22, 0x89, 0x03, 0x3f, 0x02, 0x8b,
|
||||||
0x93, 0x27, 0x30, 0x17, 0x03, 0xdb, 0x83, 0x5d, 0x24, 0x71, 0xe0, 0x07, 0x60, 0x31, 0x6c, 0x37,
|
0xe1, 0x75, 0x43, 0xdf, 0x4d, 0x36, 0xc6, 0x61, 0x22, 0xad, 0x9f, 0xc0, 0x5d, 0x12, 0x15, 0x34,
|
||||||
0x74, 0x6f, 0xb2, 0x3e, 0x09, 0x13, 0x69, 0xfe, 0x04, 0xee, 0x52, 0x50, 0x41, 0x43, 0x0a, 0x8a,
|
0x94, 0xa0, 0x08, 0x53, 0xe0, 0x13, 0x7d, 0x5b, 0x94, 0xb5, 0x7e, 0x02, 0xfc, 0x61, 0xd7, 0x7e,
|
||||||
0x30, 0x03, 0x7c, 0xa2, 0xbb, 0x45, 0x59, 0xeb, 0xa7, 0xc0, 0x1f, 0xd7, 0xf6, 0x2b, 0xfc, 0x90,
|
0x85, 0x1f, 0x4a, 0x50, 0x84, 0x59, 0xfa, 0x21, 0x03, 0x96, 0x12, 0xd7, 0xd0, 0xbf, 0x83, 0x2e,
|
||||||
0x82, 0x22, 0x4c, 0xe3, 0xbb, 0x1c, 0x58, 0x4a, 0xb4, 0xa1, 0x7f, 0x47, 0xb8, 0x54, 0x56, 0x1f,
|
0x95, 0xd5, 0xb3, 0xa5, 0x4b, 0x61, 0xce, 0x9e, 0x2e, 0x85, 0xfb, 0xf4, 0xe8, 0x8a, 0xe1, 0x0f,
|
||||||
0x6c, 0xb8, 0x14, 0xe6, 0xc1, 0x87, 0x4b, 0xe1, 0x3e, 0xbd, 0x70, 0xc5, 0xf0, 0xc7, 0x84, 0xeb,
|
0xa1, 0xeb, 0x61, 0x06, 0xc0, 0xc1, 0x4c, 0x87, 0x16, 0x58, 0x50, 0xad, 0xc6, 0x2c, 0x4e, 0xb8,
|
||||||
0x8b, 0x2c, 0x80, 0xa3, 0x99, 0x0e, 0x6d, 0xb0, 0xa0, 0x46, 0x8d, 0x83, 0x78, 0xe1, 0xa2, 0xae,
|
0xe8, 0xd6, 0xa1, 0x0f, 0x33, 0x0d, 0xdd, 0xd7, 0xa0, 0xa4, 0x27, 0x6a, 0x50, 0xc8, 0x2c, 0x1a,
|
||||||
0x43, 0x3f, 0x66, 0x1a, 0x7a, 0x68, 0x40, 0xc9, 0x4e, 0x35, 0xa0, 0x90, 0x83, 0x18, 0xe4, 0xa2,
|
0xb9, 0xe8, 0x08, 0x1c, 0xd9, 0xcc, 0xdd, 0x02, 0x8b, 0x2c, 0xec, 0x80, 0xb2, 0xd3, 0x77, 0x40,
|
||||||
0x27, 0x30, 0x6d, 0x98, 0x33, 0xbe, 0x1e, 0x76, 0x8b, 0xca, 0xe5, 0x7f, 0xac, 0x5b, 0x9e, 0xd9,
|
0x32, 0xea, 0x51, 0xef, 0x13, 0x41, 0x42, 0x1b, 0x2c, 0xe1, 0x78, 0x13, 0x32, 0x3f, 0xd5, 0x6f,
|
||||||
0x18, 0x65, 0xfc, 0x9c, 0x01, 0x47, 0x87, 0x8b, 0xd8, 0x4c, 0xa3, 0xe6, 0xbd, 0xb1, 0xf3, 0x72,
|
0xac, 0x8a, 0x8e, 0x27, 0xd1, 0x7d, 0x24, 0x50, 0x4b, 0xbf, 0xf5, 0x73, 0xab, 0x36, 0xe4, 0x3f,
|
||||||
0x76, 0x26, 0xc3, 0xa3, 0xbe, 0x78, 0xca, 0x99, 0xf9, 0x97, 0xe4, 0x21, 0x66, 0x9f, 0x97, 0x3f,
|
0x96, 0xdb, 0x67, 0xd7, 0x0b, 0xfe, 0x27, 0xe8, 0xfd, 0x36, 0x0d, 0x56, 0xfb, 0x8f, 0x93, 0xa9,
|
||||||
0x19, 0x3f, 0x54, 0xce, 0x76, 0x8a, 0xd3, 0x5a, 0xd9, 0xf4, 0x83, 0xe5, 0xf7, 0x59, 0x70, 0x7c,
|
0x9a, 0xfe, 0xbb, 0x43, 0x5f, 0x2e, 0xd2, 0x53, 0x2d, 0x3a, 0xea, 0x50, 0x26, 0x7b, 0xbd, 0x48,
|
||||||
0x5c, 0xf5, 0x87, 0x35, 0xfd, 0x0f, 0x48, 0x9d, 0xc2, 0x8a, 0xff, 0x03, 0x7a, 0xdc, 0x2f, 0x97,
|
0x30, 0x91, 0x99, 0x39, 0x13, 0xa5, 0xef, 0x92, 0x31, 0x9a, 0xfe, 0x61, 0xe4, 0xb3, 0xe1, 0xaf,
|
||||||
0xc7, 0x8c, 0x2e, 0x21, 0x4c, 0xec, 0x37, 0xd1, 0x3b, 0xa0, 0x98, 0xf0, 0xdd, 0x4d, 0x41, 0xdb,
|
0x07, 0xd3, 0x05, 0xe9, 0x94, 0x76, 0x36, 0xf1, 0x0b, 0xc2, 0xd3, 0x0e, 0xd3, 0x8f, 0x69, 0x70,
|
||||||
0xf4, 0x9e, 0x6a, 0xca, 0x54, 0xfb, 0xf9, 0x5f, 0xbf, 0x5f, 0x2e, 0x6e, 0xa7, 0xf0, 0xa0, 0x54,
|
0x6c, 0xd8, 0x2d, 0x02, 0x56, 0xf5, 0x5b, 0xa2, 0x0a, 0x92, 0x19, 0x7f, 0x4b, 0x7c, 0xdc, 0x2d,
|
||||||
0xe9, 0x94, 0x7f, 0x25, 0xb9, 0xa7, 0xfe, 0xaf, 0xe4, 0xc7, 0x51, 0x7f, 0xa9, 0xd8, 0x1f, 0x88,
|
0x16, 0x87, 0xb4, 0xc0, 0x21, 0x4c, 0xec, 0xb9, 0xf1, 0x7d, 0x90, 0x4f, 0x30, 0x7f, 0x9d, 0xd3,
|
||||||
0xbf, 0xde, 0x03, 0xa7, 0x92, 0x41, 0x1a, 0x75, 0xd8, 0x19, 0xbf, 0x5f, 0x3e, 0x55, 0x4b, 0x63,
|
0x26, 0xbd, 0xab, 0x2e, 0xf7, 0xaa, 0x8d, 0xf9, 0x7f, 0xd0, 0x2d, 0xe6, 0x77, 0x46, 0xe8, 0xa0,
|
||||||
0x42, 0xe9, 0xf2, 0x69, 0x99, 0x96, 0x7b, 0x36, 0x99, 0x56, 0x3d, 0x7f, 0xff, 0x51, 0x69, 0xee,
|
0x91, 0xd6, 0x23, 0xde, 0xdc, 0x32, 0x4f, 0xfd, 0xcd, 0xed, 0xe7, 0xc1, 0x78, 0xa9, 0xd4, 0x9a,
|
||||||
0xc1, 0xa3, 0xd2, 0xdc, 0xc3, 0x47, 0xa5, 0xb9, 0x4f, 0xfd, 0x52, 0xe6, 0xbe, 0x5f, 0xca, 0x3c,
|
0x49, 0xbc, 0x3e, 0x04, 0x27, 0x93, 0x39, 0x30, 0x18, 0xb0, 0xd3, 0x41, 0xb7, 0x78, 0xb2, 0x3a,
|
||||||
0xf0, 0x4b, 0x99, 0x87, 0x7e, 0x29, 0xf3, 0xbb, 0x5f, 0xca, 0x7c, 0xfe, 0x47, 0x69, 0xee, 0xdd,
|
0x4a, 0x09, 0x8d, 0xb6, 0x1f, 0x95, 0xc8, 0x99, 0x67, 0x93, 0xc8, 0x95, 0x73, 0xf7, 0x1e, 0x15,
|
||||||
0x43, 0xba, 0xee, 0xfd, 0x19, 0x00, 0x00, 0xff, 0xff, 0x91, 0x09, 0xa9, 0x38, 0x8c, 0x16, 0x00,
|
0xe6, 0xee, 0x3f, 0x2a, 0xcc, 0x3d, 0x78, 0x54, 0x98, 0xfb, 0x3c, 0x28, 0xa4, 0xee, 0x05, 0x85,
|
||||||
0x00,
|
0xd4, 0xfd, 0xa0, 0x90, 0x7a, 0x10, 0x14, 0x52, 0xbf, 0x07, 0x85, 0xd4, 0x97, 0x7f, 0x14, 0xe6,
|
||||||
|
0x3e, 0x38, 0xa4, 0x8f, 0x9e, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0x26, 0x31, 0x5d, 0x9f,
|
||||||
|
0x18, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
import "k8s.io/apimachinery/pkg/util/intstr/generated.proto";
|
|
||||||
|
|
||||||
// Package-wide variables from generator "generated".
|
// Package-wide variables from generator "generated".
|
||||||
option go_package = "v2beta1";
|
option go_package = "v2beta1";
|
||||||
|
@ -187,6 +186,7 @@ message HorizontalPodAutoscalerStatus {
|
||||||
optional int32 desiredReplicas = 4;
|
optional int32 desiredReplicas = 4;
|
||||||
|
|
||||||
// currentMetrics is the last read state of the metrics used by this autoscaler.
|
// currentMetrics is the last read state of the metrics used by this autoscaler.
|
||||||
|
// +optional
|
||||||
repeated MetricStatus currentMetrics = 5;
|
repeated MetricStatus currentMetrics = 5;
|
||||||
|
|
||||||
// conditions is the set of conditions required for this autoscaler to scale its target,
|
// conditions is the set of conditions required for this autoscaler to scale its target,
|
||||||
|
@ -274,6 +274,17 @@ message ObjectMetricSource {
|
||||||
|
|
||||||
// targetValue is the target value of the metric (as a quantity).
|
// targetValue is the target value of the metric (as a quantity).
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetValue = 3;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
|
||||||
|
|
||||||
|
// averageValue is the target value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ObjectMetricStatus indicates the current value of a metric describing a
|
// ObjectMetricStatus indicates the current value of a metric describing a
|
||||||
|
@ -287,6 +298,17 @@ message ObjectMetricStatus {
|
||||||
|
|
||||||
// currentValue is the current value of the metric (as a quantity).
|
// currentValue is the current value of the metric (as a quantity).
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentValue = 3;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 4;
|
||||||
|
|
||||||
|
// averageValue is the current value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
||||||
|
@ -300,6 +322,12 @@ message PodsMetricSource {
|
||||||
// targetAverageValue is the target value of the average of the
|
// targetAverageValue is the target value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity targetAverageValue = 2;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
||||||
|
@ -311,6 +339,12 @@ message PodsMetricStatus {
|
||||||
// currentAverageValue is the current value of the average of the
|
// currentAverageValue is the current value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity currentAverageValue = 2;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResourceMetricSource indicates how to scale on a resource metric known to
|
// ResourceMetricSource indicates how to scale on a resource metric known to
|
||||||
|
|
|
@ -123,6 +123,16 @@ type ObjectMetricSource struct {
|
||||||
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
||||||
// targetValue is the target value of the metric (as a quantity).
|
// targetValue is the target value of the metric (as a quantity).
|
||||||
TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"`
|
TargetValue resource.Quantity `json:"targetValue" protobuf:"bytes,3,name=targetValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,name=selector"`
|
||||||
|
// averageValue is the target value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
AverageValue *resource.Quantity `json:"averageValue,omitempty" protobuf:"bytes,5,name=averageValue"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
||||||
|
@ -135,6 +145,12 @@ type PodsMetricSource struct {
|
||||||
// targetAverageValue is the target value of the average of the
|
// targetAverageValue is the target value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"`
|
TargetAverageValue resource.Quantity `json:"targetAverageValue" protobuf:"bytes,2,name=targetAverageValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,3,name=selector"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResourceMetricSource indicates how to scale on a resource metric known to
|
// ResourceMetricSource indicates how to scale on a resource metric known to
|
||||||
|
@ -200,6 +216,7 @@ type HorizontalPodAutoscalerStatus struct {
|
||||||
DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"`
|
DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"`
|
||||||
|
|
||||||
// currentMetrics is the last read state of the metrics used by this autoscaler.
|
// currentMetrics is the last read state of the metrics used by this autoscaler.
|
||||||
|
// +optional
|
||||||
CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"`
|
CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"`
|
||||||
|
|
||||||
// conditions is the set of conditions required for this autoscaler to scale its target,
|
// conditions is the set of conditions required for this autoscaler to scale its target,
|
||||||
|
@ -284,6 +301,16 @@ type ObjectMetricStatus struct {
|
||||||
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
MetricName string `json:"metricName" protobuf:"bytes,2,name=metricName"`
|
||||||
// currentValue is the current value of the metric (as a quantity).
|
// currentValue is the current value of the metric (as a quantity).
|
||||||
CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"`
|
CurrentValue resource.Quantity `json:"currentValue" protobuf:"bytes,3,name=currentValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,4,name=selector"`
|
||||||
|
// averageValue is the current value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
AverageValue *resource.Quantity `json:"averageValue,omitempty" protobuf:"bytes,5,name=averageValue"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
||||||
|
@ -294,6 +321,12 @@ type PodsMetricStatus struct {
|
||||||
// currentAverageValue is the current value of the average of the
|
// currentAverageValue is the current value of the average of the
|
||||||
// metric across all relevant pods (as a quantity)
|
// metric across all relevant pods (as a quantity)
|
||||||
CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"`
|
CurrentAverageValue resource.Quantity `json:"currentAverageValue" protobuf:"bytes,2,name=currentAverageValue"`
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,3,name=selector"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ResourceMetricStatus indicates the current value of a resource metric known to
|
// ResourceMetricStatus indicates the current value of a resource metric known to
|
||||||
|
|
|
@ -149,10 +149,12 @@ func (MetricStatus) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_ObjectMetricSource = map[string]string{
|
var map_ObjectMetricSource = map[string]string{
|
||||||
"": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).",
|
"": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).",
|
||||||
"target": "target is the described Kubernetes object.",
|
"target": "target is the described Kubernetes object.",
|
||||||
"metricName": "metricName is the name of the metric in question.",
|
"metricName": "metricName is the name of the metric in question.",
|
||||||
"targetValue": "targetValue is the target value of the metric (as a quantity).",
|
"targetValue": "targetValue is the target value of the metric (as a quantity).",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping When unset, just the metricName will be used to gather metrics.",
|
||||||
|
"averageValue": "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ObjectMetricSource) SwaggerDoc() map[string]string {
|
func (ObjectMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
@ -164,6 +166,8 @@ var map_ObjectMetricStatus = map[string]string{
|
||||||
"target": "target is the described Kubernetes object.",
|
"target": "target is the described Kubernetes object.",
|
||||||
"metricName": "metricName is the name of the metric in question.",
|
"metricName": "metricName is the name of the metric in question.",
|
||||||
"currentValue": "currentValue is the current value of the metric (as a quantity).",
|
"currentValue": "currentValue is the current value of the metric (as a quantity).",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set in the ObjectMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.",
|
||||||
|
"averageValue": "averageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ObjectMetricStatus) SwaggerDoc() map[string]string {
|
func (ObjectMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
@ -174,6 +178,7 @@ var map_PodsMetricSource = map[string]string{
|
||||||
"": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
"": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
||||||
"metricName": "metricName is the name of the metric in question",
|
"metricName": "metricName is the name of the metric in question",
|
||||||
"targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
"targetAverageValue": "targetAverageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping When unset, just the metricName will be used to gather metrics.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (PodsMetricSource) SwaggerDoc() map[string]string {
|
func (PodsMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
@ -184,6 +189,7 @@ var map_PodsMetricStatus = map[string]string{
|
||||||
"": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).",
|
"": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).",
|
||||||
"metricName": "metricName is the name of the metric in question",
|
"metricName": "metricName is the name of the metric in question",
|
||||||
"currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
"currentAverageValue": "currentAverageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set in the PodsMetricSource, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.",
|
||||||
}
|
}
|
||||||
|
|
||||||
func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
@ -191,8 +197,8 @@ func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_ResourceMetricSource = map[string]string{
|
var map_ResourceMetricSource = map[string]string{
|
||||||
"": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.",
|
"": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.",
|
||||||
"name": "name is the name of the resource in question.",
|
"name": "name is the name of the resource in question.",
|
||||||
"targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.",
|
"targetAverageUtilization": "targetAverageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.",
|
||||||
"targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.",
|
"targetAverageValue": "targetAverageValue is the target value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type.",
|
||||||
}
|
}
|
||||||
|
@ -202,8 +208,8 @@ func (ResourceMetricSource) SwaggerDoc() map[string]string {
|
||||||
}
|
}
|
||||||
|
|
||||||
var map_ResourceMetricStatus = map[string]string{
|
var map_ResourceMetricStatus = map[string]string{
|
||||||
"": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
"": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
||||||
"name": "name is the name of the resource in question.",
|
"name": "name is the name of the resource in question.",
|
||||||
"currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.",
|
"currentAverageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. It will only be present if `targetAverageValue` was set in the corresponding metric specification.",
|
||||||
"currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.",
|
"currentAverageValue": "currentAverageValue is the current value of the average of the resource metric across all relevant pods, as a raw value (instead of as a percentage of the request), similar to the \"pods\" metric source type. It will always be set, regardless of the corresponding metric specification.",
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,30 +46,18 @@ func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MetricSelector != nil {
|
if in.MetricSelector != nil {
|
||||||
in, out := &in.MetricSelector, &out.MetricSelector
|
in, out := &in.MetricSelector, &out.MetricSelector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetValue != nil {
|
if in.TargetValue != nil {
|
||||||
in, out := &in.TargetValue, &out.TargetValue
|
in, out := &in.TargetValue, &out.TargetValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetAverageValue != nil {
|
if in.TargetAverageValue != nil {
|
||||||
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -89,22 +77,14 @@ func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.MetricSelector != nil {
|
if in.MetricSelector != nil {
|
||||||
in, out := &in.MetricSelector, &out.MetricSelector
|
in, out := &in.MetricSelector, &out.MetricSelector
|
||||||
if *in == nil {
|
*out = new(v1.LabelSelector)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(v1.LabelSelector)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
out.CurrentValue = in.CurrentValue.DeepCopy()
|
out.CurrentValue = in.CurrentValue.DeepCopy()
|
||||||
if in.CurrentAverageValue != nil {
|
if in.CurrentAverageValue != nil {
|
||||||
in, out := &in.CurrentAverageValue, &out.CurrentAverageValue
|
in, out := &in.CurrentAverageValue, &out.CurrentAverageValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -203,12 +183,8 @@ func (in *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscaler
|
||||||
out.ScaleTargetRef = in.ScaleTargetRef
|
out.ScaleTargetRef = in.ScaleTargetRef
|
||||||
if in.MinReplicas != nil {
|
if in.MinReplicas != nil {
|
||||||
in, out := &in.MinReplicas, &out.MinReplicas
|
in, out := &in.MinReplicas, &out.MinReplicas
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Metrics != nil {
|
if in.Metrics != nil {
|
||||||
in, out := &in.Metrics, &out.Metrics
|
in, out := &in.Metrics, &out.Metrics
|
||||||
|
@ -235,20 +211,12 @@ func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscal
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.ObservedGeneration != nil {
|
if in.ObservedGeneration != nil {
|
||||||
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
||||||
if *in == nil {
|
*out = new(int64)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int64)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.LastScaleTime != nil {
|
if in.LastScaleTime != nil {
|
||||||
in, out := &in.LastScaleTime, &out.LastScaleTime
|
in, out := &in.LastScaleTime, &out.LastScaleTime
|
||||||
if *in == nil {
|
*out = (*in).DeepCopy()
|
||||||
*out = nil
|
|
||||||
} else {
|
|
||||||
*out = (*in).DeepCopy()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.CurrentMetrics != nil {
|
if in.CurrentMetrics != nil {
|
||||||
in, out := &in.CurrentMetrics, &out.CurrentMetrics
|
in, out := &in.CurrentMetrics, &out.CurrentMetrics
|
||||||
|
@ -282,39 +250,23 @@ func (in *MetricSpec) DeepCopyInto(out *MetricSpec) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Object != nil {
|
if in.Object != nil {
|
||||||
in, out := &in.Object, &out.Object
|
in, out := &in.Object, &out.Object
|
||||||
if *in == nil {
|
*out = new(ObjectMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ObjectMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Pods != nil {
|
if in.Pods != nil {
|
||||||
in, out := &in.Pods, &out.Pods
|
in, out := &in.Pods, &out.Pods
|
||||||
if *in == nil {
|
*out = new(PodsMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(PodsMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Resource != nil {
|
if in.Resource != nil {
|
||||||
in, out := &in.Resource, &out.Resource
|
in, out := &in.Resource, &out.Resource
|
||||||
if *in == nil {
|
*out = new(ResourceMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ResourceMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.External != nil {
|
if in.External != nil {
|
||||||
in, out := &in.External, &out.External
|
in, out := &in.External, &out.External
|
||||||
if *in == nil {
|
*out = new(ExternalMetricSource)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ExternalMetricSource)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -334,39 +286,23 @@ func (in *MetricStatus) DeepCopyInto(out *MetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.Object != nil {
|
if in.Object != nil {
|
||||||
in, out := &in.Object, &out.Object
|
in, out := &in.Object, &out.Object
|
||||||
if *in == nil {
|
*out = new(ObjectMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ObjectMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Pods != nil {
|
if in.Pods != nil {
|
||||||
in, out := &in.Pods, &out.Pods
|
in, out := &in.Pods, &out.Pods
|
||||||
if *in == nil {
|
*out = new(PodsMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(PodsMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.Resource != nil {
|
if in.Resource != nil {
|
||||||
in, out := &in.Resource, &out.Resource
|
in, out := &in.Resource, &out.Resource
|
||||||
if *in == nil {
|
*out = new(ResourceMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ResourceMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.External != nil {
|
if in.External != nil {
|
||||||
in, out := &in.External, &out.External
|
in, out := &in.External, &out.External
|
||||||
if *in == nil {
|
*out = new(ExternalMetricStatus)
|
||||||
*out = nil
|
(*in).DeepCopyInto(*out)
|
||||||
} else {
|
|
||||||
*out = new(ExternalMetricStatus)
|
|
||||||
(*in).DeepCopyInto(*out)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -386,6 +322,16 @@ func (in *ObjectMetricSource) DeepCopyInto(out *ObjectMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.Target = in.Target
|
out.Target = in.Target
|
||||||
out.TargetValue = in.TargetValue.DeepCopy()
|
out.TargetValue = in.TargetValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(v1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.AverageValue != nil {
|
||||||
|
in, out := &in.AverageValue, &out.AverageValue
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -404,6 +350,16 @@ func (in *ObjectMetricStatus) DeepCopyInto(out *ObjectMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.Target = in.Target
|
out.Target = in.Target
|
||||||
out.CurrentValue = in.CurrentValue.DeepCopy()
|
out.CurrentValue = in.CurrentValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(v1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.AverageValue != nil {
|
||||||
|
in, out := &in.AverageValue, &out.AverageValue
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -421,6 +377,11 @@ func (in *ObjectMetricStatus) DeepCopy() *ObjectMetricStatus {
|
||||||
func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) {
|
func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.TargetAverageValue = in.TargetAverageValue.DeepCopy()
|
out.TargetAverageValue = in.TargetAverageValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(v1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,6 +399,11 @@ func (in *PodsMetricSource) DeepCopy() *PodsMetricSource {
|
||||||
func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) {
|
func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(v1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -456,21 +422,13 @@ func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.TargetAverageUtilization != nil {
|
if in.TargetAverageUtilization != nil {
|
||||||
in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization
|
in, out := &in.TargetAverageUtilization, &out.TargetAverageUtilization
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if in.TargetAverageValue != nil {
|
if in.TargetAverageValue != nil {
|
||||||
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
in, out := &in.TargetAverageValue, &out.TargetAverageValue
|
||||||
if *in == nil {
|
x := (*in).DeepCopy()
|
||||||
*out = nil
|
*out = &x
|
||||||
} else {
|
|
||||||
x := (*in).DeepCopy()
|
|
||||||
*out = &x
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -490,12 +448,8 @@ func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) {
|
||||||
*out = *in
|
*out = *in
|
||||||
if in.CurrentAverageUtilization != nil {
|
if in.CurrentAverageUtilization != nil {
|
||||||
in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization
|
in, out := &in.CurrentAverageUtilization, &out.CurrentAverageUtilization
|
||||||
if *in == nil {
|
*out = new(int32)
|
||||||
*out = nil
|
**out = **in
|
||||||
} else {
|
|
||||||
*out = new(int32)
|
|
||||||
**out = **in
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
out.CurrentAverageValue = in.CurrentAverageValue.DeepCopy()
|
||||||
return
|
return
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
|
package v2beta2 // import "k8s.io/api/autoscaling/v2beta2"
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,369 @@
|
||||||
|
/*
|
||||||
|
Copyright The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// This file was autogenerated by go-to-protobuf. Do not edit it manually!
|
||||||
|
|
||||||
|
syntax = 'proto2';
|
||||||
|
|
||||||
|
package k8s.io.api.autoscaling.v2beta2;
|
||||||
|
|
||||||
|
import "k8s.io/api/core/v1/generated.proto";
|
||||||
|
import "k8s.io/apimachinery/pkg/api/resource/generated.proto";
|
||||||
|
import "k8s.io/apimachinery/pkg/apis/meta/v1/generated.proto";
|
||||||
|
import "k8s.io/apimachinery/pkg/runtime/generated.proto";
|
||||||
|
import "k8s.io/apimachinery/pkg/runtime/schema/generated.proto";
|
||||||
|
|
||||||
|
// Package-wide variables from generator "generated".
|
||||||
|
option go_package = "v2beta2";
|
||||||
|
|
||||||
|
// CrossVersionObjectReference contains enough information to let you identify the referred resource.
|
||||||
|
message CrossVersionObjectReference {
|
||||||
|
// Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
|
||||||
|
optional string kind = 1;
|
||||||
|
|
||||||
|
// Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
|
||||||
|
optional string name = 2;
|
||||||
|
|
||||||
|
// API version of the referent
|
||||||
|
// +optional
|
||||||
|
optional string apiVersion = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExternalMetricSource indicates how to scale on a metric not associated with
|
||||||
|
// any Kubernetes object (for example length of queue in cloud
|
||||||
|
// messaging service, or QPS from loadbalancer running outside of cluster).
|
||||||
|
message ExternalMetricSource {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
optional MetricIdentifier metric = 1;
|
||||||
|
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
optional MetricTarget target = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExternalMetricStatus indicates the current value of a global metric
|
||||||
|
// not associated with any Kubernetes object.
|
||||||
|
message ExternalMetricStatus {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
optional MetricIdentifier metric = 1;
|
||||||
|
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
optional MetricValueStatus current = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscaler is the configuration for a horizontal pod
|
||||||
|
// autoscaler, which automatically manages the replica count of any resource
|
||||||
|
// implementing the scale subresource based on the metrics specified.
|
||||||
|
message HorizontalPodAutoscaler {
|
||||||
|
// metadata is the standard object metadata.
|
||||||
|
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta metadata = 1;
|
||||||
|
|
||||||
|
// spec is the specification for the behaviour of the autoscaler.
|
||||||
|
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
|
||||||
|
// +optional
|
||||||
|
optional HorizontalPodAutoscalerSpec spec = 2;
|
||||||
|
|
||||||
|
// status is the current information about the autoscaler.
|
||||||
|
// +optional
|
||||||
|
optional HorizontalPodAutoscalerStatus status = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerCondition describes the state of
|
||||||
|
// a HorizontalPodAutoscaler at a certain point.
|
||||||
|
message HorizontalPodAutoscalerCondition {
|
||||||
|
// type describes the current condition
|
||||||
|
optional string type = 1;
|
||||||
|
|
||||||
|
// status is the status of the condition (True, False, Unknown)
|
||||||
|
optional string status = 2;
|
||||||
|
|
||||||
|
// lastTransitionTime is the last time the condition transitioned from
|
||||||
|
// one status to another
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastTransitionTime = 3;
|
||||||
|
|
||||||
|
// reason is the reason for the condition's last transition.
|
||||||
|
// +optional
|
||||||
|
optional string reason = 4;
|
||||||
|
|
||||||
|
// message is a human-readable explanation containing details about
|
||||||
|
// the transition
|
||||||
|
// +optional
|
||||||
|
optional string message = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.
|
||||||
|
message HorizontalPodAutoscalerList {
|
||||||
|
// metadata is the standard list metadata.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.ListMeta metadata = 1;
|
||||||
|
|
||||||
|
// items is the list of horizontal pod autoscaler objects.
|
||||||
|
repeated HorizontalPodAutoscaler items = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.
|
||||||
|
message HorizontalPodAutoscalerSpec {
|
||||||
|
// scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics
|
||||||
|
// should be collected, as well as to actually change the replica count.
|
||||||
|
optional CrossVersionObjectReference scaleTargetRef = 1;
|
||||||
|
|
||||||
|
// minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.
|
||||||
|
// It defaults to 1 pod.
|
||||||
|
// +optional
|
||||||
|
optional int32 minReplicas = 2;
|
||||||
|
|
||||||
|
// maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.
|
||||||
|
// It cannot be less that minReplicas.
|
||||||
|
optional int32 maxReplicas = 3;
|
||||||
|
|
||||||
|
// metrics contains the specifications for which to use to calculate the
|
||||||
|
// desired replica count (the maximum replica count across all metrics will
|
||||||
|
// be used). The desired replica count is calculated multiplying the
|
||||||
|
// ratio between the target value and the current value by the current
|
||||||
|
// number of pods. Ergo, metrics used must decrease as the pod count is
|
||||||
|
// increased, and vice-versa. See the individual metric source types for
|
||||||
|
// more information about how each type of metric must respond.
|
||||||
|
// If not set, the default metric will be set to 80% average CPU utilization.
|
||||||
|
// +optional
|
||||||
|
repeated MetricSpec metrics = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.
|
||||||
|
message HorizontalPodAutoscalerStatus {
|
||||||
|
// observedGeneration is the most recent generation observed by this autoscaler.
|
||||||
|
// +optional
|
||||||
|
optional int64 observedGeneration = 1;
|
||||||
|
|
||||||
|
// lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods,
|
||||||
|
// used by the autoscaler to control how often the number of pods is changed.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.Time lastScaleTime = 2;
|
||||||
|
|
||||||
|
// currentReplicas is current number of replicas of pods managed by this autoscaler,
|
||||||
|
// as last seen by the autoscaler.
|
||||||
|
optional int32 currentReplicas = 3;
|
||||||
|
|
||||||
|
// desiredReplicas is the desired number of replicas of pods managed by this autoscaler,
|
||||||
|
// as last calculated by the autoscaler.
|
||||||
|
optional int32 desiredReplicas = 4;
|
||||||
|
|
||||||
|
// currentMetrics is the last read state of the metrics used by this autoscaler.
|
||||||
|
// +optional
|
||||||
|
repeated MetricStatus currentMetrics = 5;
|
||||||
|
|
||||||
|
// conditions is the set of conditions required for this autoscaler to scale its target,
|
||||||
|
// and indicates whether or not those conditions are met.
|
||||||
|
repeated HorizontalPodAutoscalerCondition conditions = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricIdentifier defines the name and optionally selector for a metric
|
||||||
|
message MetricIdentifier {
|
||||||
|
// name is the name of the given metric
|
||||||
|
optional string name = 1;
|
||||||
|
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector selector = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricSpec specifies how to scale based on a single metric
|
||||||
|
// (only `type` and one other matching field should be set at once).
|
||||||
|
message MetricSpec {
|
||||||
|
// type is the type of metric source. It should be one of "Object",
|
||||||
|
// "Pods" or "Resource", each mapping to a matching field in the object.
|
||||||
|
optional string type = 1;
|
||||||
|
|
||||||
|
// object refers to a metric describing a single kubernetes object
|
||||||
|
// (for example, hits-per-second on an Ingress object).
|
||||||
|
// +optional
|
||||||
|
optional ObjectMetricSource object = 2;
|
||||||
|
|
||||||
|
// pods refers to a metric describing each pod in the current scale target
|
||||||
|
// (for example, transactions-processed-per-second). The values will be
|
||||||
|
// averaged together before being compared to the target value.
|
||||||
|
// +optional
|
||||||
|
optional PodsMetricSource pods = 3;
|
||||||
|
|
||||||
|
// resource refers to a resource metric (such as those specified in
|
||||||
|
// requests and limits) known to Kubernetes describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available
|
||||||
|
// to normal per-pod metrics using the "pods" source.
|
||||||
|
// +optional
|
||||||
|
optional ResourceMetricSource resource = 4;
|
||||||
|
|
||||||
|
// external refers to a global metric that is not associated
|
||||||
|
// with any Kubernetes object. It allows autoscaling based on information
|
||||||
|
// coming from components running outside of cluster
|
||||||
|
// (for example length of queue in cloud messaging service, or
|
||||||
|
// QPS from loadbalancer running outside of cluster).
|
||||||
|
// +optional
|
||||||
|
optional ExternalMetricSource external = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricStatus describes the last-read state of a single metric.
|
||||||
|
message MetricStatus {
|
||||||
|
// type is the type of metric source. It will be one of "Object",
|
||||||
|
// "Pods" or "Resource", each corresponds to a matching field in the object.
|
||||||
|
optional string type = 1;
|
||||||
|
|
||||||
|
// object refers to a metric describing a single kubernetes object
|
||||||
|
// (for example, hits-per-second on an Ingress object).
|
||||||
|
// +optional
|
||||||
|
optional ObjectMetricStatus object = 2;
|
||||||
|
|
||||||
|
// pods refers to a metric describing each pod in the current scale target
|
||||||
|
// (for example, transactions-processed-per-second). The values will be
|
||||||
|
// averaged together before being compared to the target value.
|
||||||
|
// +optional
|
||||||
|
optional PodsMetricStatus pods = 3;
|
||||||
|
|
||||||
|
// resource refers to a resource metric (such as those specified in
|
||||||
|
// requests and limits) known to Kubernetes describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available
|
||||||
|
// to normal per-pod metrics using the "pods" source.
|
||||||
|
// +optional
|
||||||
|
optional ResourceMetricStatus resource = 4;
|
||||||
|
|
||||||
|
// external refers to a global metric that is not associated
|
||||||
|
// with any Kubernetes object. It allows autoscaling based on information
|
||||||
|
// coming from components running outside of cluster
|
||||||
|
// (for example length of queue in cloud messaging service, or
|
||||||
|
// QPS from loadbalancer running outside of cluster).
|
||||||
|
// +optional
|
||||||
|
optional ExternalMetricStatus external = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricTarget defines the target value, average value, or average utilization of a specific metric
|
||||||
|
message MetricTarget {
|
||||||
|
// type represents whether the metric type is Utilization, Value, or AverageValue
|
||||||
|
optional string type = 1;
|
||||||
|
|
||||||
|
// value is the target value of the metric (as a quantity).
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 2;
|
||||||
|
|
||||||
|
// averageValue is the target value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 3;
|
||||||
|
|
||||||
|
// averageUtilization is the target value of the average of the
|
||||||
|
// resource metric across all relevant pods, represented as a percentage of
|
||||||
|
// the requested value of the resource for the pods.
|
||||||
|
// Currently only valid for Resource metric source type
|
||||||
|
// +optional
|
||||||
|
optional int32 averageUtilization = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricValueStatus holds the current value for a metric
|
||||||
|
message MetricValueStatus {
|
||||||
|
// value is the current value of the metric (as a quantity).
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity value = 1;
|
||||||
|
|
||||||
|
// averageValue is the current value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
optional k8s.io.apimachinery.pkg.api.resource.Quantity averageValue = 2;
|
||||||
|
|
||||||
|
// currentAverageUtilization is the current value of the average of the
|
||||||
|
// resource metric across all relevant pods, represented as a percentage of
|
||||||
|
// the requested value of the resource for the pods.
|
||||||
|
// +optional
|
||||||
|
optional int32 averageUtilization = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ObjectMetricSource indicates how to scale on a metric describing a
|
||||||
|
// kubernetes object (for example, hits-per-second on an Ingress object).
|
||||||
|
message ObjectMetricSource {
|
||||||
|
optional CrossVersionObjectReference describedObject = 1;
|
||||||
|
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
optional MetricTarget target = 2;
|
||||||
|
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
optional MetricIdentifier metric = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ObjectMetricStatus indicates the current value of a metric describing a
|
||||||
|
// kubernetes object (for example, hits-per-second on an Ingress object).
|
||||||
|
message ObjectMetricStatus {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
optional MetricIdentifier metric = 1;
|
||||||
|
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
optional MetricValueStatus current = 2;
|
||||||
|
|
||||||
|
optional CrossVersionObjectReference describedObject = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
||||||
|
// the current scale target (for example, transactions-processed-per-second).
|
||||||
|
// The values will be averaged together before being compared to the target
|
||||||
|
// value.
|
||||||
|
message PodsMetricSource {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
optional MetricIdentifier metric = 1;
|
||||||
|
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
optional MetricTarget target = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
||||||
|
// the current scale target (for example, transactions-processed-per-second).
|
||||||
|
message PodsMetricStatus {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
optional MetricIdentifier metric = 1;
|
||||||
|
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
optional MetricValueStatus current = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResourceMetricSource indicates how to scale on a resource metric known to
|
||||||
|
// Kubernetes, as specified in requests and limits, describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). The values will be averaged
|
||||||
|
// together before being compared to the target. Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available to
|
||||||
|
// normal per-pod metrics using the "pods" source. Only one "target" type
|
||||||
|
// should be set.
|
||||||
|
message ResourceMetricSource {
|
||||||
|
// name is the name of the resource in question.
|
||||||
|
optional string name = 1;
|
||||||
|
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
optional MetricTarget target = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResourceMetricStatus indicates the current value of a resource metric known to
|
||||||
|
// Kubernetes, as specified in requests and limits, describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available to
|
||||||
|
// normal per-pod metrics using the "pods" source.
|
||||||
|
message ResourceMetricStatus {
|
||||||
|
// Name is the name of the resource in question.
|
||||||
|
optional string name = 1;
|
||||||
|
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
optional MetricValueStatus current = 2;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v2beta2
|
||||||
|
|
||||||
|
import (
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GroupName is the group name use in this package
|
||||||
|
const GroupName = "autoscaling"
|
||||||
|
|
||||||
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
|
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v2beta2"}
|
||||||
|
|
||||||
|
// Resource takes an unqualified resource and returns a Group qualified GroupResource
|
||||||
|
func Resource(resource string) schema.GroupResource {
|
||||||
|
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
|
||||||
|
localSchemeBuilder = &SchemeBuilder
|
||||||
|
AddToScheme = localSchemeBuilder.AddToScheme
|
||||||
|
)
|
||||||
|
|
||||||
|
// Adds the list of known types to the given scheme.
|
||||||
|
func addKnownTypes(scheme *runtime.Scheme) error {
|
||||||
|
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||||
|
&HorizontalPodAutoscaler{},
|
||||||
|
&HorizontalPodAutoscalerList{},
|
||||||
|
)
|
||||||
|
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,393 @@
|
||||||
|
/*
|
||||||
|
Copyright 2018 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
|
package v2beta2
|
||||||
|
|
||||||
|
import (
|
||||||
|
"k8s.io/api/core/v1"
|
||||||
|
"k8s.io/apimachinery/pkg/api/resource"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
// +genclient
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// HorizontalPodAutoscaler is the configuration for a horizontal pod
|
||||||
|
// autoscaler, which automatically manages the replica count of any resource
|
||||||
|
// implementing the scale subresource based on the metrics specified.
|
||||||
|
type HorizontalPodAutoscaler struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
// metadata is the standard object metadata.
|
||||||
|
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata
|
||||||
|
// +optional
|
||||||
|
metav1.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// spec is the specification for the behaviour of the autoscaler.
|
||||||
|
// More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.
|
||||||
|
// +optional
|
||||||
|
Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
|
||||||
|
|
||||||
|
// status is the current information about the autoscaler.
|
||||||
|
// +optional
|
||||||
|
Status HorizontalPodAutoscalerStatus `json:"status,omitempty" protobuf:"bytes,3,opt,name=status"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.
|
||||||
|
type HorizontalPodAutoscalerSpec struct {
|
||||||
|
// scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics
|
||||||
|
// should be collected, as well as to actually change the replica count.
|
||||||
|
ScaleTargetRef CrossVersionObjectReference `json:"scaleTargetRef" protobuf:"bytes,1,opt,name=scaleTargetRef"`
|
||||||
|
// minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down.
|
||||||
|
// It defaults to 1 pod.
|
||||||
|
// +optional
|
||||||
|
MinReplicas *int32 `json:"minReplicas,omitempty" protobuf:"varint,2,opt,name=minReplicas"`
|
||||||
|
// maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.
|
||||||
|
// It cannot be less that minReplicas.
|
||||||
|
MaxReplicas int32 `json:"maxReplicas" protobuf:"varint,3,opt,name=maxReplicas"`
|
||||||
|
// metrics contains the specifications for which to use to calculate the
|
||||||
|
// desired replica count (the maximum replica count across all metrics will
|
||||||
|
// be used). The desired replica count is calculated multiplying the
|
||||||
|
// ratio between the target value and the current value by the current
|
||||||
|
// number of pods. Ergo, metrics used must decrease as the pod count is
|
||||||
|
// increased, and vice-versa. See the individual metric source types for
|
||||||
|
// more information about how each type of metric must respond.
|
||||||
|
// If not set, the default metric will be set to 80% average CPU utilization.
|
||||||
|
// +optional
|
||||||
|
Metrics []MetricSpec `json:"metrics,omitempty" protobuf:"bytes,4,rep,name=metrics"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// CrossVersionObjectReference contains enough information to let you identify the referred resource.
|
||||||
|
type CrossVersionObjectReference struct {
|
||||||
|
// Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds"
|
||||||
|
Kind string `json:"kind" protobuf:"bytes,1,opt,name=kind"`
|
||||||
|
// Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
|
||||||
|
Name string `json:"name" protobuf:"bytes,2,opt,name=name"`
|
||||||
|
// API version of the referent
|
||||||
|
// +optional
|
||||||
|
APIVersion string `json:"apiVersion,omitempty" protobuf:"bytes,3,opt,name=apiVersion"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricSpec specifies how to scale based on a single metric
|
||||||
|
// (only `type` and one other matching field should be set at once).
|
||||||
|
type MetricSpec struct {
|
||||||
|
// type is the type of metric source. It should be one of "Object",
|
||||||
|
// "Pods" or "Resource", each mapping to a matching field in the object.
|
||||||
|
Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
|
||||||
|
|
||||||
|
// object refers to a metric describing a single kubernetes object
|
||||||
|
// (for example, hits-per-second on an Ingress object).
|
||||||
|
// +optional
|
||||||
|
Object *ObjectMetricSource `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"`
|
||||||
|
// pods refers to a metric describing each pod in the current scale target
|
||||||
|
// (for example, transactions-processed-per-second). The values will be
|
||||||
|
// averaged together before being compared to the target value.
|
||||||
|
// +optional
|
||||||
|
Pods *PodsMetricSource `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"`
|
||||||
|
// resource refers to a resource metric (such as those specified in
|
||||||
|
// requests and limits) known to Kubernetes describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available
|
||||||
|
// to normal per-pod metrics using the "pods" source.
|
||||||
|
// +optional
|
||||||
|
Resource *ResourceMetricSource `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"`
|
||||||
|
// external refers to a global metric that is not associated
|
||||||
|
// with any Kubernetes object. It allows autoscaling based on information
|
||||||
|
// coming from components running outside of cluster
|
||||||
|
// (for example length of queue in cloud messaging service, or
|
||||||
|
// QPS from loadbalancer running outside of cluster).
|
||||||
|
// +optional
|
||||||
|
External *ExternalMetricSource `json:"external,omitempty" protobuf:"bytes,5,opt,name=external"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricSourceType indicates the type of metric.
|
||||||
|
type MetricSourceType string
|
||||||
|
|
||||||
|
var (
|
||||||
|
// ObjectMetricSourceType is a metric describing a kubernetes object
|
||||||
|
// (for example, hits-per-second on an Ingress object).
|
||||||
|
ObjectMetricSourceType MetricSourceType = "Object"
|
||||||
|
// PodsMetricSourceType is a metric describing each pod in the current scale
|
||||||
|
// target (for example, transactions-processed-per-second). The values
|
||||||
|
// will be averaged together before being compared to the target value.
|
||||||
|
PodsMetricSourceType MetricSourceType = "Pods"
|
||||||
|
// ResourceMetricSourceType is a resource metric known to Kubernetes, as
|
||||||
|
// specified in requests and limits, describing each pod in the current
|
||||||
|
// scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available
|
||||||
|
// to normal per-pod metrics (the "pods" source).
|
||||||
|
ResourceMetricSourceType MetricSourceType = "Resource"
|
||||||
|
// ExternalMetricSourceType is a global metric that is not associated
|
||||||
|
// with any Kubernetes object. It allows autoscaling based on information
|
||||||
|
// coming from components running outside of cluster
|
||||||
|
// (for example length of queue in cloud messaging service, or
|
||||||
|
// QPS from loadbalancer running outside of cluster).
|
||||||
|
ExternalMetricSourceType MetricSourceType = "External"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ObjectMetricSource indicates how to scale on a metric describing a
|
||||||
|
// kubernetes object (for example, hits-per-second on an Ingress object).
|
||||||
|
type ObjectMetricSource struct {
|
||||||
|
DescribedObject CrossVersionObjectReference `json:"describedObject" protobuf:"bytes,1,name=describedObject"`
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
Target MetricTarget `json:"target" protobuf:"bytes,2,name=target"`
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
Metric MetricIdentifier `json:"metric" protobuf:"bytes,3,name=metric"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodsMetricSource indicates how to scale on a metric describing each pod in
|
||||||
|
// the current scale target (for example, transactions-processed-per-second).
|
||||||
|
// The values will be averaged together before being compared to the target
|
||||||
|
// value.
|
||||||
|
type PodsMetricSource struct {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
Metric MetricIdentifier `json:"metric" protobuf:"bytes,1,name=metric"`
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
Target MetricTarget `json:"target" protobuf:"bytes,2,name=target"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResourceMetricSource indicates how to scale on a resource metric known to
|
||||||
|
// Kubernetes, as specified in requests and limits, describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). The values will be averaged
|
||||||
|
// together before being compared to the target. Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available to
|
||||||
|
// normal per-pod metrics using the "pods" source. Only one "target" type
|
||||||
|
// should be set.
|
||||||
|
type ResourceMetricSource struct {
|
||||||
|
// name is the name of the resource in question.
|
||||||
|
Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"`
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
Target MetricTarget `json:"target" protobuf:"bytes,2,name=target"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExternalMetricSource indicates how to scale on a metric not associated with
|
||||||
|
// any Kubernetes object (for example length of queue in cloud
|
||||||
|
// messaging service, or QPS from loadbalancer running outside of cluster).
|
||||||
|
type ExternalMetricSource struct {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
Metric MetricIdentifier `json:"metric" protobuf:"bytes,1,name=metric"`
|
||||||
|
// target specifies the target value for the given metric
|
||||||
|
Target MetricTarget `json:"target" protobuf:"bytes,2,name=target"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricIdentifier defines the name and optionally selector for a metric
|
||||||
|
type MetricIdentifier struct {
|
||||||
|
// name is the name of the given metric
|
||||||
|
Name string `json:"name" protobuf:"bytes,1,name=name"`
|
||||||
|
// selector is the string-encoded form of a standard kubernetes label selector for the given metric
|
||||||
|
// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.
|
||||||
|
// When unset, just the metricName will be used to gather metrics.
|
||||||
|
// +optional
|
||||||
|
Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,name=selector"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricTarget defines the target value, average value, or average utilization of a specific metric
|
||||||
|
type MetricTarget struct {
|
||||||
|
// type represents whether the metric type is Utilization, Value, or AverageValue
|
||||||
|
Type MetricTargetType `json:"type" protobuf:"bytes,1,name=type"`
|
||||||
|
// value is the target value of the metric (as a quantity).
|
||||||
|
// +optional
|
||||||
|
Value *resource.Quantity `json:"value,omitempty" protobuf:"bytes,2,opt,name=value"`
|
||||||
|
// averageValue is the target value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
AverageValue *resource.Quantity `json:"averageValue,omitempty" protobuf:"bytes,3,opt,name=averageValue"`
|
||||||
|
// averageUtilization is the target value of the average of the
|
||||||
|
// resource metric across all relevant pods, represented as a percentage of
|
||||||
|
// the requested value of the resource for the pods.
|
||||||
|
// Currently only valid for Resource metric source type
|
||||||
|
// +optional
|
||||||
|
AverageUtilization *int32 `json:"averageUtilization,omitempty" protobuf:"bytes,4,opt,name=averageUtilization"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricTargetType specifies the type of metric being targeted, and should be either
|
||||||
|
// "Value", "AverageValue", or "Utilization"
|
||||||
|
type MetricTargetType string
|
||||||
|
|
||||||
|
var (
|
||||||
|
// UtilizationMetricType declares a MetricTarget is an AverageUtilization value
|
||||||
|
UtilizationMetricType MetricTargetType = "Utilization"
|
||||||
|
// ValueMetricType declares a MetricTarget is a raw value
|
||||||
|
ValueMetricType MetricTargetType = "Value"
|
||||||
|
// AverageValueMetricType declares a MetricTarget is an
|
||||||
|
AverageValueMetricType MetricTargetType = "AverageValue"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.
|
||||||
|
type HorizontalPodAutoscalerStatus struct {
|
||||||
|
// observedGeneration is the most recent generation observed by this autoscaler.
|
||||||
|
// +optional
|
||||||
|
ObservedGeneration *int64 `json:"observedGeneration,omitempty" protobuf:"varint,1,opt,name=observedGeneration"`
|
||||||
|
|
||||||
|
// lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods,
|
||||||
|
// used by the autoscaler to control how often the number of pods is changed.
|
||||||
|
// +optional
|
||||||
|
LastScaleTime *metav1.Time `json:"lastScaleTime,omitempty" protobuf:"bytes,2,opt,name=lastScaleTime"`
|
||||||
|
|
||||||
|
// currentReplicas is current number of replicas of pods managed by this autoscaler,
|
||||||
|
// as last seen by the autoscaler.
|
||||||
|
CurrentReplicas int32 `json:"currentReplicas" protobuf:"varint,3,opt,name=currentReplicas"`
|
||||||
|
|
||||||
|
// desiredReplicas is the desired number of replicas of pods managed by this autoscaler,
|
||||||
|
// as last calculated by the autoscaler.
|
||||||
|
DesiredReplicas int32 `json:"desiredReplicas" protobuf:"varint,4,opt,name=desiredReplicas"`
|
||||||
|
|
||||||
|
// currentMetrics is the last read state of the metrics used by this autoscaler.
|
||||||
|
// +optional
|
||||||
|
CurrentMetrics []MetricStatus `json:"currentMetrics" protobuf:"bytes,5,rep,name=currentMetrics"`
|
||||||
|
|
||||||
|
// conditions is the set of conditions required for this autoscaler to scale its target,
|
||||||
|
// and indicates whether or not those conditions are met.
|
||||||
|
Conditions []HorizontalPodAutoscalerCondition `json:"conditions" protobuf:"bytes,6,rep,name=conditions"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerConditionType are the valid conditions of
|
||||||
|
// a HorizontalPodAutoscaler.
|
||||||
|
type HorizontalPodAutoscalerConditionType string
|
||||||
|
|
||||||
|
var (
|
||||||
|
// ScalingActive indicates that the HPA controller is able to scale if necessary:
|
||||||
|
// it's correctly configured, can fetch the desired metrics, and isn't disabled.
|
||||||
|
ScalingActive HorizontalPodAutoscalerConditionType = "ScalingActive"
|
||||||
|
// AbleToScale indicates a lack of transient issues which prevent scaling from occurring,
|
||||||
|
// such as being in a backoff window, or being unable to access/update the target scale.
|
||||||
|
AbleToScale HorizontalPodAutoscalerConditionType = "AbleToScale"
|
||||||
|
// ScalingLimited indicates that the calculated scale based on metrics would be above or
|
||||||
|
// below the range for the HPA, and has thus been capped.
|
||||||
|
ScalingLimited HorizontalPodAutoscalerConditionType = "ScalingLimited"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerCondition describes the state of
|
||||||
|
// a HorizontalPodAutoscaler at a certain point.
|
||||||
|
type HorizontalPodAutoscalerCondition struct {
|
||||||
|
// type describes the current condition
|
||||||
|
Type HorizontalPodAutoscalerConditionType `json:"type" protobuf:"bytes,1,name=type"`
|
||||||
|
// status is the status of the condition (True, False, Unknown)
|
||||||
|
Status v1.ConditionStatus `json:"status" protobuf:"bytes,2,name=status"`
|
||||||
|
// lastTransitionTime is the last time the condition transitioned from
|
||||||
|
// one status to another
|
||||||
|
// +optional
|
||||||
|
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty" protobuf:"bytes,3,opt,name=lastTransitionTime"`
|
||||||
|
// reason is the reason for the condition's last transition.
|
||||||
|
// +optional
|
||||||
|
Reason string `json:"reason,omitempty" protobuf:"bytes,4,opt,name=reason"`
|
||||||
|
// message is a human-readable explanation containing details about
|
||||||
|
// the transition
|
||||||
|
// +optional
|
||||||
|
Message string `json:"message,omitempty" protobuf:"bytes,5,opt,name=message"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricStatus describes the last-read state of a single metric.
|
||||||
|
type MetricStatus struct {
|
||||||
|
// type is the type of metric source. It will be one of "Object",
|
||||||
|
// "Pods" or "Resource", each corresponds to a matching field in the object.
|
||||||
|
Type MetricSourceType `json:"type" protobuf:"bytes,1,name=type"`
|
||||||
|
|
||||||
|
// object refers to a metric describing a single kubernetes object
|
||||||
|
// (for example, hits-per-second on an Ingress object).
|
||||||
|
// +optional
|
||||||
|
Object *ObjectMetricStatus `json:"object,omitempty" protobuf:"bytes,2,opt,name=object"`
|
||||||
|
// pods refers to a metric describing each pod in the current scale target
|
||||||
|
// (for example, transactions-processed-per-second). The values will be
|
||||||
|
// averaged together before being compared to the target value.
|
||||||
|
// +optional
|
||||||
|
Pods *PodsMetricStatus `json:"pods,omitempty" protobuf:"bytes,3,opt,name=pods"`
|
||||||
|
// resource refers to a resource metric (such as those specified in
|
||||||
|
// requests and limits) known to Kubernetes describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available
|
||||||
|
// to normal per-pod metrics using the "pods" source.
|
||||||
|
// +optional
|
||||||
|
Resource *ResourceMetricStatus `json:"resource,omitempty" protobuf:"bytes,4,opt,name=resource"`
|
||||||
|
// external refers to a global metric that is not associated
|
||||||
|
// with any Kubernetes object. It allows autoscaling based on information
|
||||||
|
// coming from components running outside of cluster
|
||||||
|
// (for example length of queue in cloud messaging service, or
|
||||||
|
// QPS from loadbalancer running outside of cluster).
|
||||||
|
// +optional
|
||||||
|
External *ExternalMetricStatus `json:"external,omitempty" protobuf:"bytes,5,opt,name=external"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ObjectMetricStatus indicates the current value of a metric describing a
|
||||||
|
// kubernetes object (for example, hits-per-second on an Ingress object).
|
||||||
|
type ObjectMetricStatus struct {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
Metric MetricIdentifier `json:"metric" protobuf:"bytes,1,name=metric"`
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
Current MetricValueStatus `json:"current" protobuf:"bytes,2,name=current"`
|
||||||
|
|
||||||
|
DescribedObject CrossVersionObjectReference `json:"describedObject" protobuf:"bytes,3,name=describedObject"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// PodsMetricStatus indicates the current value of a metric describing each pod in
|
||||||
|
// the current scale target (for example, transactions-processed-per-second).
|
||||||
|
type PodsMetricStatus struct {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
Metric MetricIdentifier `json:"metric" protobuf:"bytes,1,name=metric"`
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
Current MetricValueStatus `json:"current" protobuf:"bytes,2,name=current"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResourceMetricStatus indicates the current value of a resource metric known to
|
||||||
|
// Kubernetes, as specified in requests and limits, describing each pod in the
|
||||||
|
// current scale target (e.g. CPU or memory). Such metrics are built in to
|
||||||
|
// Kubernetes, and have special scaling options on top of those available to
|
||||||
|
// normal per-pod metrics using the "pods" source.
|
||||||
|
type ResourceMetricStatus struct {
|
||||||
|
// Name is the name of the resource in question.
|
||||||
|
Name v1.ResourceName `json:"name" protobuf:"bytes,1,name=name"`
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
Current MetricValueStatus `json:"current" protobuf:"bytes,2,name=current"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExternalMetricStatus indicates the current value of a global metric
|
||||||
|
// not associated with any Kubernetes object.
|
||||||
|
type ExternalMetricStatus struct {
|
||||||
|
// metric identifies the target metric by name and selector
|
||||||
|
Metric MetricIdentifier `json:"metric" protobuf:"bytes,1,name=metric"`
|
||||||
|
// current contains the current value for the given metric
|
||||||
|
Current MetricValueStatus `json:"current" protobuf:"bytes,2,name=current"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// MetricValueStatus holds the current value for a metric
|
||||||
|
type MetricValueStatus struct {
|
||||||
|
// value is the current value of the metric (as a quantity).
|
||||||
|
// +optional
|
||||||
|
Value *resource.Quantity `json:"value,omitempty" protobuf:"bytes,1,opt,name=value"`
|
||||||
|
// averageValue is the current value of the average of the
|
||||||
|
// metric across all relevant pods (as a quantity)
|
||||||
|
// +optional
|
||||||
|
AverageValue *resource.Quantity `json:"averageValue,omitempty" protobuf:"bytes,2,opt,name=averageValue"`
|
||||||
|
// currentAverageUtilization is the current value of the average of the
|
||||||
|
// resource metric across all relevant pods, represented as a percentage of
|
||||||
|
// the requested value of the resource for the pods.
|
||||||
|
// +optional
|
||||||
|
AverageUtilization *int32 `json:"averageUtilization,omitempty" protobuf:"bytes,3,opt,name=averageUtilization"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
|
||||||
|
|
||||||
|
// HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.
|
||||||
|
type HorizontalPodAutoscalerList struct {
|
||||||
|
metav1.TypeMeta `json:",inline"`
|
||||||
|
// metadata is the standard list metadata.
|
||||||
|
// +optional
|
||||||
|
metav1.ListMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
|
||||||
|
|
||||||
|
// items is the list of horizontal pod autoscaler objects.
|
||||||
|
Items []HorizontalPodAutoscaler `json:"items" protobuf:"bytes,2,rep,name=items"`
|
||||||
|
}
|
240
vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go
generated
vendored
Normal file
240
vendor/k8s.io/api/autoscaling/v2beta2/types_swagger_doc_generated.go
generated
vendored
Normal file
|
@ -0,0 +1,240 @@
|
||||||
|
/*
|
||||||
|
Copyright The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package v2beta2
|
||||||
|
|
||||||
|
// This file contains a collection of methods that can be used from go-restful to
|
||||||
|
// generate Swagger API documentation for its models. Please read this PR for more
|
||||||
|
// information on the implementation: https://github.com/emicklei/go-restful/pull/215
|
||||||
|
//
|
||||||
|
// TODOs are ignored from the parser (e.g. TODO(andronat):... || TODO:...) if and only if
|
||||||
|
// they are on one line! For multiple line or blocks that you want to ignore use ---.
|
||||||
|
// Any context after a --- is ignored.
|
||||||
|
//
|
||||||
|
// Those methods can be generated by using hack/update-generated-swagger-docs.sh
|
||||||
|
|
||||||
|
// AUTO-GENERATED FUNCTIONS START HERE. DO NOT EDIT.
|
||||||
|
var map_CrossVersionObjectReference = map[string]string{
|
||||||
|
"": "CrossVersionObjectReference contains enough information to let you identify the referred resource.",
|
||||||
|
"kind": "Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds\"",
|
||||||
|
"name": "Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names",
|
||||||
|
"apiVersion": "API version of the referent",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (CrossVersionObjectReference) SwaggerDoc() map[string]string {
|
||||||
|
return map_CrossVersionObjectReference
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ExternalMetricSource = map[string]string{
|
||||||
|
"": "ExternalMetricSource indicates how to scale on a metric not associated with any Kubernetes object (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
|
||||||
|
"metric": "metric identifies the target metric by name and selector",
|
||||||
|
"target": "target specifies the target value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ExternalMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
return map_ExternalMetricSource
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ExternalMetricStatus = map[string]string{
|
||||||
|
"": "ExternalMetricStatus indicates the current value of a global metric not associated with any Kubernetes object.",
|
||||||
|
"metric": "metric identifies the target metric by name and selector",
|
||||||
|
"current": "current contains the current value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ExternalMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_ExternalMetricStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_HorizontalPodAutoscaler = map[string]string{
|
||||||
|
"": "HorizontalPodAutoscaler is the configuration for a horizontal pod autoscaler, which automatically manages the replica count of any resource implementing the scale subresource based on the metrics specified.",
|
||||||
|
"metadata": "metadata is the standard object metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
|
||||||
|
"spec": "spec is the specification for the behaviour of the autoscaler. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status.",
|
||||||
|
"status": "status is the current information about the autoscaler.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HorizontalPodAutoscaler) SwaggerDoc() map[string]string {
|
||||||
|
return map_HorizontalPodAutoscaler
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_HorizontalPodAutoscalerCondition = map[string]string{
|
||||||
|
"": "HorizontalPodAutoscalerCondition describes the state of a HorizontalPodAutoscaler at a certain point.",
|
||||||
|
"type": "type describes the current condition",
|
||||||
|
"status": "status is the status of the condition (True, False, Unknown)",
|
||||||
|
"lastTransitionTime": "lastTransitionTime is the last time the condition transitioned from one status to another",
|
||||||
|
"reason": "reason is the reason for the condition's last transition.",
|
||||||
|
"message": "message is a human-readable explanation containing details about the transition",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HorizontalPodAutoscalerCondition) SwaggerDoc() map[string]string {
|
||||||
|
return map_HorizontalPodAutoscalerCondition
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_HorizontalPodAutoscalerList = map[string]string{
|
||||||
|
"": "HorizontalPodAutoscalerList is a list of horizontal pod autoscaler objects.",
|
||||||
|
"metadata": "metadata is the standard list metadata.",
|
||||||
|
"items": "items is the list of horizontal pod autoscaler objects.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HorizontalPodAutoscalerList) SwaggerDoc() map[string]string {
|
||||||
|
return map_HorizontalPodAutoscalerList
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_HorizontalPodAutoscalerSpec = map[string]string{
|
||||||
|
"": "HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.",
|
||||||
|
"scaleTargetRef": "scaleTargetRef points to the target resource to scale, and is used to the pods for which metrics should be collected, as well as to actually change the replica count.",
|
||||||
|
"minReplicas": "minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod.",
|
||||||
|
"maxReplicas": "maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas.",
|
||||||
|
"metrics": "metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HorizontalPodAutoscalerSpec) SwaggerDoc() map[string]string {
|
||||||
|
return map_HorizontalPodAutoscalerSpec
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_HorizontalPodAutoscalerStatus = map[string]string{
|
||||||
|
"": "HorizontalPodAutoscalerStatus describes the current status of a horizontal pod autoscaler.",
|
||||||
|
"observedGeneration": "observedGeneration is the most recent generation observed by this autoscaler.",
|
||||||
|
"lastScaleTime": "lastScaleTime is the last time the HorizontalPodAutoscaler scaled the number of pods, used by the autoscaler to control how often the number of pods is changed.",
|
||||||
|
"currentReplicas": "currentReplicas is current number of replicas of pods managed by this autoscaler, as last seen by the autoscaler.",
|
||||||
|
"desiredReplicas": "desiredReplicas is the desired number of replicas of pods managed by this autoscaler, as last calculated by the autoscaler.",
|
||||||
|
"currentMetrics": "currentMetrics is the last read state of the metrics used by this autoscaler.",
|
||||||
|
"conditions": "conditions is the set of conditions required for this autoscaler to scale its target, and indicates whether or not those conditions are met.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (HorizontalPodAutoscalerStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_HorizontalPodAutoscalerStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_MetricIdentifier = map[string]string{
|
||||||
|
"": "MetricIdentifier defines the name and optionally selector for a metric",
|
||||||
|
"name": "name is the name of the given metric",
|
||||||
|
"selector": "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (MetricIdentifier) SwaggerDoc() map[string]string {
|
||||||
|
return map_MetricIdentifier
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_MetricSpec = map[string]string{
|
||||||
|
"": "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once).",
|
||||||
|
"type": "type is the type of metric source. It should be one of \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.",
|
||||||
|
"object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
|
||||||
|
"pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
||||||
|
"resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
||||||
|
"external": "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (MetricSpec) SwaggerDoc() map[string]string {
|
||||||
|
return map_MetricSpec
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_MetricStatus = map[string]string{
|
||||||
|
"": "MetricStatus describes the last-read state of a single metric.",
|
||||||
|
"type": "type is the type of metric source. It will be one of \"Object\", \"Pods\" or \"Resource\", each corresponds to a matching field in the object.",
|
||||||
|
"object": "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).",
|
||||||
|
"pods": "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
||||||
|
"resource": "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
||||||
|
"external": "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (MetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_MetricStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_MetricTarget = map[string]string{
|
||||||
|
"": "MetricTarget defines the target value, average value, or average utilization of a specific metric",
|
||||||
|
"type": "type represents whether the metric type is Utilization, Value, or AverageValue",
|
||||||
|
"value": "value is the target value of the metric (as a quantity).",
|
||||||
|
"averageValue": "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
|
"averageUtilization": "averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (MetricTarget) SwaggerDoc() map[string]string {
|
||||||
|
return map_MetricTarget
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_MetricValueStatus = map[string]string{
|
||||||
|
"": "MetricValueStatus holds the current value for a metric",
|
||||||
|
"value": "value is the current value of the metric (as a quantity).",
|
||||||
|
"averageValue": "averageValue is the current value of the average of the metric across all relevant pods (as a quantity)",
|
||||||
|
"averageUtilization": "currentAverageUtilization is the current value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods.",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (MetricValueStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_MetricValueStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ObjectMetricSource = map[string]string{
|
||||||
|
"": "ObjectMetricSource indicates how to scale on a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).",
|
||||||
|
"target": "target specifies the target value for the given metric",
|
||||||
|
"metric": "metric identifies the target metric by name and selector",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ObjectMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
return map_ObjectMetricSource
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ObjectMetricStatus = map[string]string{
|
||||||
|
"": "ObjectMetricStatus indicates the current value of a metric describing a kubernetes object (for example, hits-per-second on an Ingress object).",
|
||||||
|
"metric": "metric identifies the target metric by name and selector",
|
||||||
|
"current": "current contains the current value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ObjectMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_ObjectMetricStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_PodsMetricSource = map[string]string{
|
||||||
|
"": "PodsMetricSource indicates how to scale on a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.",
|
||||||
|
"metric": "metric identifies the target metric by name and selector",
|
||||||
|
"target": "target specifies the target value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (PodsMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
return map_PodsMetricSource
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_PodsMetricStatus = map[string]string{
|
||||||
|
"": "PodsMetricStatus indicates the current value of a metric describing each pod in the current scale target (for example, transactions-processed-per-second).",
|
||||||
|
"metric": "metric identifies the target metric by name and selector",
|
||||||
|
"current": "current contains the current value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (PodsMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_PodsMetricStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ResourceMetricSource = map[string]string{
|
||||||
|
"": "ResourceMetricSource indicates how to scale on a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). The values will be averaged together before being compared to the target. Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. Only one \"target\" type should be set.",
|
||||||
|
"name": "name is the name of the resource in question.",
|
||||||
|
"target": "target specifies the target value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ResourceMetricSource) SwaggerDoc() map[string]string {
|
||||||
|
return map_ResourceMetricSource
|
||||||
|
}
|
||||||
|
|
||||||
|
var map_ResourceMetricStatus = map[string]string{
|
||||||
|
"": "ResourceMetricStatus indicates the current value of a resource metric known to Kubernetes, as specified in requests and limits, describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source.",
|
||||||
|
"name": "Name is the name of the resource in question.",
|
||||||
|
"current": "current contains the current value for the given metric",
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ResourceMetricStatus) SwaggerDoc() map[string]string {
|
||||||
|
return map_ResourceMetricStatus
|
||||||
|
}
|
||||||
|
|
||||||
|
// AUTO-GENERATED FUNCTIONS END HERE
|
|
@ -0,0 +1,487 @@
|
||||||
|
// +build !ignore_autogenerated
|
||||||
|
|
||||||
|
/*
|
||||||
|
Copyright The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Code generated by deepcopy-gen. DO NOT EDIT.
|
||||||
|
|
||||||
|
package v2beta2
|
||||||
|
|
||||||
|
import (
|
||||||
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
runtime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *CrossVersionObjectReference) DeepCopyInto(out *CrossVersionObjectReference) {
|
||||||
|
*out = *in
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CrossVersionObjectReference.
|
||||||
|
func (in *CrossVersionObjectReference) DeepCopy() *CrossVersionObjectReference {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(CrossVersionObjectReference)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ExternalMetricSource) DeepCopyInto(out *ExternalMetricSource) {
|
||||||
|
*out = *in
|
||||||
|
in.Metric.DeepCopyInto(&out.Metric)
|
||||||
|
in.Target.DeepCopyInto(&out.Target)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalMetricSource.
|
||||||
|
func (in *ExternalMetricSource) DeepCopy() *ExternalMetricSource {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ExternalMetricSource)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ExternalMetricStatus) DeepCopyInto(out *ExternalMetricStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.Metric.DeepCopyInto(&out.Metric)
|
||||||
|
in.Current.DeepCopyInto(&out.Current)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalMetricStatus.
|
||||||
|
func (in *ExternalMetricStatus) DeepCopy() *ExternalMetricStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ExternalMetricStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HorizontalPodAutoscaler) DeepCopyInto(out *HorizontalPodAutoscaler) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
in.ObjectMeta.DeepCopyInto(&out.ObjectMeta)
|
||||||
|
in.Spec.DeepCopyInto(&out.Spec)
|
||||||
|
in.Status.DeepCopyInto(&out.Status)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscaler.
|
||||||
|
func (in *HorizontalPodAutoscaler) DeepCopy() *HorizontalPodAutoscaler {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HorizontalPodAutoscaler)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HorizontalPodAutoscaler) 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 *HorizontalPodAutoscalerCondition) DeepCopyInto(out *HorizontalPodAutoscalerCondition) {
|
||||||
|
*out = *in
|
||||||
|
in.LastTransitionTime.DeepCopyInto(&out.LastTransitionTime)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerCondition.
|
||||||
|
func (in *HorizontalPodAutoscalerCondition) DeepCopy() *HorizontalPodAutoscalerCondition {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HorizontalPodAutoscalerCondition)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HorizontalPodAutoscalerList) DeepCopyInto(out *HorizontalPodAutoscalerList) {
|
||||||
|
*out = *in
|
||||||
|
out.TypeMeta = in.TypeMeta
|
||||||
|
out.ListMeta = in.ListMeta
|
||||||
|
if in.Items != nil {
|
||||||
|
in, out := &in.Items, &out.Items
|
||||||
|
*out = make([]HorizontalPodAutoscaler, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerList.
|
||||||
|
func (in *HorizontalPodAutoscalerList) DeepCopy() *HorizontalPodAutoscalerList {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HorizontalPodAutoscalerList)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
|
||||||
|
func (in *HorizontalPodAutoscalerList) 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 *HorizontalPodAutoscalerSpec) DeepCopyInto(out *HorizontalPodAutoscalerSpec) {
|
||||||
|
*out = *in
|
||||||
|
out.ScaleTargetRef = in.ScaleTargetRef
|
||||||
|
if in.MinReplicas != nil {
|
||||||
|
in, out := &in.MinReplicas, &out.MinReplicas
|
||||||
|
*out = new(int32)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.Metrics != nil {
|
||||||
|
in, out := &in.Metrics, &out.Metrics
|
||||||
|
*out = make([]MetricSpec, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerSpec.
|
||||||
|
func (in *HorizontalPodAutoscalerSpec) DeepCopy() *HorizontalPodAutoscalerSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HorizontalPodAutoscalerSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *HorizontalPodAutoscalerStatus) DeepCopyInto(out *HorizontalPodAutoscalerStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.ObservedGeneration != nil {
|
||||||
|
in, out := &in.ObservedGeneration, &out.ObservedGeneration
|
||||||
|
*out = new(int64)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
if in.LastScaleTime != nil {
|
||||||
|
in, out := &in.LastScaleTime, &out.LastScaleTime
|
||||||
|
*out = (*in).DeepCopy()
|
||||||
|
}
|
||||||
|
if in.CurrentMetrics != nil {
|
||||||
|
in, out := &in.CurrentMetrics, &out.CurrentMetrics
|
||||||
|
*out = make([]MetricStatus, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if in.Conditions != nil {
|
||||||
|
in, out := &in.Conditions, &out.Conditions
|
||||||
|
*out = make([]HorizontalPodAutoscalerCondition, len(*in))
|
||||||
|
for i := range *in {
|
||||||
|
(*in)[i].DeepCopyInto(&(*out)[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HorizontalPodAutoscalerStatus.
|
||||||
|
func (in *HorizontalPodAutoscalerStatus) DeepCopy() *HorizontalPodAutoscalerStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(HorizontalPodAutoscalerStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *MetricIdentifier) DeepCopyInto(out *MetricIdentifier) {
|
||||||
|
*out = *in
|
||||||
|
if in.Selector != nil {
|
||||||
|
in, out := &in.Selector, &out.Selector
|
||||||
|
*out = new(v1.LabelSelector)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricIdentifier.
|
||||||
|
func (in *MetricIdentifier) DeepCopy() *MetricIdentifier {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(MetricIdentifier)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *MetricSpec) DeepCopyInto(out *MetricSpec) {
|
||||||
|
*out = *in
|
||||||
|
if in.Object != nil {
|
||||||
|
in, out := &in.Object, &out.Object
|
||||||
|
*out = new(ObjectMetricSource)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Pods != nil {
|
||||||
|
in, out := &in.Pods, &out.Pods
|
||||||
|
*out = new(PodsMetricSource)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Resource != nil {
|
||||||
|
in, out := &in.Resource, &out.Resource
|
||||||
|
*out = new(ResourceMetricSource)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.External != nil {
|
||||||
|
in, out := &in.External, &out.External
|
||||||
|
*out = new(ExternalMetricSource)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricSpec.
|
||||||
|
func (in *MetricSpec) DeepCopy() *MetricSpec {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(MetricSpec)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *MetricStatus) DeepCopyInto(out *MetricStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.Object != nil {
|
||||||
|
in, out := &in.Object, &out.Object
|
||||||
|
*out = new(ObjectMetricStatus)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Pods != nil {
|
||||||
|
in, out := &in.Pods, &out.Pods
|
||||||
|
*out = new(PodsMetricStatus)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.Resource != nil {
|
||||||
|
in, out := &in.Resource, &out.Resource
|
||||||
|
*out = new(ResourceMetricStatus)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
if in.External != nil {
|
||||||
|
in, out := &in.External, &out.External
|
||||||
|
*out = new(ExternalMetricStatus)
|
||||||
|
(*in).DeepCopyInto(*out)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricStatus.
|
||||||
|
func (in *MetricStatus) DeepCopy() *MetricStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(MetricStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *MetricTarget) DeepCopyInto(out *MetricTarget) {
|
||||||
|
*out = *in
|
||||||
|
if in.Value != nil {
|
||||||
|
in, out := &in.Value, &out.Value
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
|
if in.AverageValue != nil {
|
||||||
|
in, out := &in.AverageValue, &out.AverageValue
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
|
if in.AverageUtilization != nil {
|
||||||
|
in, out := &in.AverageUtilization, &out.AverageUtilization
|
||||||
|
*out = new(int32)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricTarget.
|
||||||
|
func (in *MetricTarget) DeepCopy() *MetricTarget {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(MetricTarget)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *MetricValueStatus) DeepCopyInto(out *MetricValueStatus) {
|
||||||
|
*out = *in
|
||||||
|
if in.Value != nil {
|
||||||
|
in, out := &in.Value, &out.Value
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
|
if in.AverageValue != nil {
|
||||||
|
in, out := &in.AverageValue, &out.AverageValue
|
||||||
|
x := (*in).DeepCopy()
|
||||||
|
*out = &x
|
||||||
|
}
|
||||||
|
if in.AverageUtilization != nil {
|
||||||
|
in, out := &in.AverageUtilization, &out.AverageUtilization
|
||||||
|
*out = new(int32)
|
||||||
|
**out = **in
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MetricValueStatus.
|
||||||
|
func (in *MetricValueStatus) DeepCopy() *MetricValueStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(MetricValueStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ObjectMetricSource) DeepCopyInto(out *ObjectMetricSource) {
|
||||||
|
*out = *in
|
||||||
|
out.DescribedObject = in.DescribedObject
|
||||||
|
in.Target.DeepCopyInto(&out.Target)
|
||||||
|
in.Metric.DeepCopyInto(&out.Metric)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMetricSource.
|
||||||
|
func (in *ObjectMetricSource) DeepCopy() *ObjectMetricSource {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ObjectMetricSource)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ObjectMetricStatus) DeepCopyInto(out *ObjectMetricStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.Metric.DeepCopyInto(&out.Metric)
|
||||||
|
in.Current.DeepCopyInto(&out.Current)
|
||||||
|
out.DescribedObject = in.DescribedObject
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ObjectMetricStatus.
|
||||||
|
func (in *ObjectMetricStatus) DeepCopy() *ObjectMetricStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ObjectMetricStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *PodsMetricSource) DeepCopyInto(out *PodsMetricSource) {
|
||||||
|
*out = *in
|
||||||
|
in.Metric.DeepCopyInto(&out.Metric)
|
||||||
|
in.Target.DeepCopyInto(&out.Target)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsMetricSource.
|
||||||
|
func (in *PodsMetricSource) DeepCopy() *PodsMetricSource {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(PodsMetricSource)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *PodsMetricStatus) DeepCopyInto(out *PodsMetricStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.Metric.DeepCopyInto(&out.Metric)
|
||||||
|
in.Current.DeepCopyInto(&out.Current)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodsMetricStatus.
|
||||||
|
func (in *PodsMetricStatus) DeepCopy() *PodsMetricStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(PodsMetricStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ResourceMetricSource) DeepCopyInto(out *ResourceMetricSource) {
|
||||||
|
*out = *in
|
||||||
|
in.Target.DeepCopyInto(&out.Target)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricSource.
|
||||||
|
func (in *ResourceMetricSource) DeepCopy() *ResourceMetricSource {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ResourceMetricSource)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
|
||||||
|
func (in *ResourceMetricStatus) DeepCopyInto(out *ResourceMetricStatus) {
|
||||||
|
*out = *in
|
||||||
|
in.Current.DeepCopyInto(&out.Current)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResourceMetricStatus.
|
||||||
|
func (in *ResourceMetricStatus) DeepCopy() *ResourceMetricStatus {
|
||||||
|
if in == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
out := new(ResourceMetricStatus)
|
||||||
|
in.DeepCopyInto(out)
|
||||||
|
return out
|
||||||
|
}
|
|
@ -15,6 +15,7 @@ limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// +k8s:deepcopy-gen=package
|
// +k8s:deepcopy-gen=package
|
||||||
|
// +k8s:protobuf-gen=package
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=true
|
||||||
|
|
||||||
package v1 // import "k8s.io/api/batch/v1"
|
package v1 // import "k8s.io/api/batch/v1"
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue